diff options
author | Kristóf Marussy <kristof@marussy.com> | 2021-12-30 00:26:01 +0100 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2021-12-30 02:24:28 +0100 |
commit | 61fd13c55f5e69a9d8b32dd0d74b08870783bcce (patch) | |
tree | 4f3f97b1629f3c262bea076b596bc7245ccbc0bd | |
parent | Revert "refactor: Switch back to consola for prettyness" (diff) | |
download | sophie-61fd13c55f5e69a9d8b32dd0d74b08870783bcce.tar.gz sophie-61fd13c55f5e69a9d8b32dd0d74b08870783bcce.tar.zst sophie-61fd13c55f5e69a9d8b32dd0d74b08870783bcce.zip |
build: Switch to esbuild
We will build all packages except the frontend (where vite remains in
use) with esbuild.
For some reason, the @yarnpkg/esbuild-plugin-pnp doesn't allow esbuild
to load esm modules and we fall back to commonjs for dependencies.
Hence we had to switch back to node_modules (but still rely on yarn
hardlinking for a more efficient install).
35 files changed, 753 insertions, 521 deletions
diff --git a/.electron-builder.config.js b/.electron-builder.config.js index 128ae18..5238c69 100644 --- a/.electron-builder.config.js +++ b/.electron-builder.config.js | |||
@@ -19,6 +19,8 @@ const config = { | |||
19 | 'packages/renderer/dist/**', | 19 | 'packages/renderer/dist/**', |
20 | 'packages/service-inject/dist/**', | 20 | 'packages/service-inject/dist/**', |
21 | 'packages/service-preload/dist/**', | 21 | 'packages/service-preload/dist/**', |
22 | // Do not ship with source maps. | ||
23 | '!**/*.map', | ||
22 | ], | 24 | ], |
23 | afterPack(context) { | 25 | afterPack(context) { |
24 | return burnFuses(context); | 26 | return burnFuses(context); |
@@ -7,4 +7,5 @@ | |||
7 | !.yarn/releases | 7 | !.yarn/releases |
8 | !.yarn/versions | 8 | !.yarn/versions |
9 | dist/ | 9 | dist/ |
10 | node_modules/ | ||
10 | *.tsbuildinfo | 11 | *.tsbuildinfo |
diff --git a/.yarnrc.yml b/.yarnrc.yml index 9c13019..f83ee48 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml | |||
@@ -6,4 +6,13 @@ plugins: | |||
6 | - path: .yarn/plugins/@yarnpkg/plugin-typescript.cjs | 6 | - path: .yarn/plugins/@yarnpkg/plugin-typescript.cjs |
7 | spec: "@yarnpkg/plugin-typescript" | 7 | spec: "@yarnpkg/plugin-typescript" |
8 | 8 | ||
9 | logFilters: | ||
10 | # Discard incompatible package architecture warnings. | ||
11 | - code: YN0076 | ||
12 | level: discard | ||
13 | |||
14 | nmMode: hardlinks-local | ||
15 | |||
16 | nodeLinker: node-modules | ||
17 | |||
9 | yarnPath: .yarn/releases/yarn-3.1.1.cjs | 18 | yarnPath: .yarn/releases/yarn-3.1.1.cjs |
diff --git a/config/build-common.js b/config/build-common.js new file mode 100644 index 0000000..aea2335 --- /dev/null +++ b/config/build-common.js | |||
@@ -0,0 +1,33 @@ | |||
1 | // @ts-check | ||
2 | |||
3 | // `resolveJsonModule` is disabled for this package, but vite will load the json nevertheless. | ||
4 | // @ts-ignore | ||
5 | const { chrome: chromeVersion, node: nodeVersion } = require('../.electron-vendors.cache.json'); | ||
6 | |||
7 | /** @type {string} */ | ||
8 | module.exports.banner = `/*! | ||
9 | * Copyright (C) 2021-2022 Sophie contributors | ||
10 | * | ||
11 | * This file is part of Sophie. | ||
12 | * | ||
13 | * Sophie is free software: you can redistribute it and/or modify | ||
14 | * it under the terms of the GNU Affero General Public License as | ||
15 | * published by the Free Software Foundation, version 3. | ||
16 | * | ||
17 | * This program is distributed in the hope that it will be useful, | ||
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
20 | * GNU Affero General Public License for more details. | ||
21 | * | ||
22 | * You should have received a copy of the GNU Affero General Public License | ||
23 | * along with this program. If not, see <https://www.gnu.org/licenses/>. | ||
24 | * | ||
25 | * SPDX-License-Identifier: AGPL-3.0-only | ||
26 | */ | ||
27 | `; | ||
28 | |||
29 | /** @type {string} */ | ||
30 | module.exports.chrome = `chrome${chromeVersion}`; | ||
31 | |||
32 | /** @type {string} */ | ||
33 | module.exports.node = `node${nodeVersion}`; | ||
diff --git a/config/esbuild-config.js b/config/esbuild-config.js new file mode 100644 index 0000000..9140b89 --- /dev/null +++ b/config/esbuild-config.js | |||
@@ -0,0 +1,50 @@ | |||
1 | // @ts-check | ||
2 | |||
3 | const { banner } = require('./build-common'); | ||
4 | |||
5 | /** @type {string} */ | ||
6 | const mode = process.env.MODE || 'development'; | ||
7 | |||
8 | /** @type {boolean} */ | ||
9 | const isDevelopment = mode === 'development'; | ||
10 | |||
11 | const modeString = JSON.stringify(mode); | ||
12 | |||
13 | const defineEnv = { | ||
14 | 'import.meta.env.DEV': JSON.stringify(isDevelopment), | ||
15 | 'import.meta.env.MODE': modeString, | ||
16 | 'import.meta.env.PROD': JSON.stringify(!isDevelopment), | ||
17 | 'process.env.NODE_ENV': modeString, | ||
18 | 'process.env.MODE': modeString, | ||
19 | }; | ||
20 | |||
21 | /** | ||
22 | * @param {import('esbuild').BuildOptions} config | ||
23 | * @param {object | unknown} metaEnvVars | ||
24 | * @returns {import('esbuild').BuildOptions} | ||
25 | */ | ||
26 | module.exports.getConfig = function(config, metaEnvVars) { | ||
27 | const defineMeta = {}; | ||
28 | for (const varName in metaEnvVars) { | ||
29 | defineMeta[`import.meta.env.${varName}`] = JSON.stringify(metaEnvVars[varName]); | ||
30 | } | ||
31 | return { | ||
32 | logLevel: 'info', | ||
33 | bundle: true, | ||
34 | treeShaking: !isDevelopment, | ||
35 | minify: !isDevelopment, | ||
36 | banner: { | ||
37 | js: banner, | ||
38 | }, | ||
39 | ...config, | ||
40 | sourcemap: isDevelopment ? (config.sourcemap || true) : false, | ||
41 | define: { | ||
42 | ...defineEnv, | ||
43 | ...defineMeta, | ||
44 | ...config.define, | ||
45 | }, | ||
46 | plugins: [ | ||
47 | ...(config.plugins || []), | ||
48 | ], | ||
49 | }; | ||
50 | } | ||
diff --git a/config/vite-common.js b/config/vite-common.js deleted file mode 100644 index 6b1d7c7..0000000 --- a/config/vite-common.js +++ /dev/null | |||
@@ -1,67 +0,0 @@ | |||
1 | // @ts-check | ||
2 | |||
3 | // `resolveJsonModule` is disabled for this package, but vite will load the json nevertheless. | ||
4 | // @ts-expect-error | ||
5 | import { chrome as chromeVersion, node as nodeVersion } from '../.electron-vendors.cache.json'; | ||
6 | |||
7 | /** @type {string} */ | ||
8 | const banner = `/*! | ||
9 | * Copyright (C) 2021-2022 Sophie contributors | ||
10 | * | ||
11 | * This file is part of Sophie. | ||
12 | * | ||
13 | * Sophie is free software: you can redistribute it and/or modify | ||
14 | * it under the terms of the GNU Affero General Public License as | ||
15 | * published by the Free Software Foundation, version 3. | ||
16 | * | ||
17 | * This program is distributed in the hope that it will be useful, | ||
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
20 | * GNU Affero General Public License for more details. | ||
21 | * | ||
22 | * You should have received a copy of the GNU Affero General Public License | ||
23 | * along with this program. If not, see <https://www.gnu.org/licenses/>. | ||
24 | * | ||
25 | * SPDX-License-Identifier: AGPL-3.0-only | ||
26 | */ | ||
27 | `; | ||
28 | |||
29 | /** @type {string} */ | ||
30 | export const chrome = `chrome${chromeVersion}`; | ||
31 | |||
32 | /** @type {string} */ | ||
33 | export const node = `node${nodeVersion}`; | ||
34 | |||
35 | /** | ||
36 | * Extends a vite configuration with common options. | ||
37 | * | ||
38 | * @param {import('vite').UserConfig} config The configuration to extend. | ||
39 | * @return {import('vite').UserConfig} The configuration extended with common options. | ||
40 | */ | ||
41 | export function makeConfig(config) { | ||
42 | return { | ||
43 | mode: process.env.NODE, | ||
44 | envDir: process.cwd(), | ||
45 | ...config, | ||
46 | build: { | ||
47 | assetsDir: '.', | ||
48 | outDir: 'dist', | ||
49 | emptyOutDir: true, | ||
50 | sourcemap: true, | ||
51 | minify: process.env.MODE !== 'development', | ||
52 | brotliSize: false, | ||
53 | ...config.build, | ||
54 | lib: (typeof config.build.lib === 'object') ? { | ||
55 | fileName: (format) => format === 'cjs' ? 'index.cjs' : `index.${format}.js`, | ||
56 | ...config.build.lib, | ||
57 | } : undefined, | ||
58 | rollupOptions: { | ||
59 | ...config.build?.rollupOptions, | ||
60 | output: { | ||
61 | banner, | ||
62 | ...config.build?.rollupOptions?.output, | ||
63 | }, | ||
64 | }, | ||
65 | }, | ||
66 | }; | ||
67 | } | ||
diff --git a/package.json b/package.json index 90d0a92..03c1696 100644 --- a/package.json +++ b/package.json | |||
@@ -17,7 +17,7 @@ | |||
17 | "scripts": { | 17 | "scripts": { |
18 | "clean": "rimraf dist .log && yarn workspaces foreach run clean", | 18 | "clean": "rimraf dist .log && yarn workspaces foreach run clean", |
19 | "test": "yarn workspaces foreach -vpt run test", | 19 | "test": "yarn workspaces foreach -vpt run test", |
20 | "build": "yarn workspaces foreach -vpt run build", | 20 | "build": "node scripts/build.js", |
21 | "precompile": "cross-env MODE=production yarn run build", | 21 | "precompile": "cross-env MODE=production yarn run build", |
22 | "compile": "yarn precompile && yarn compile:electron-builder", | 22 | "compile": "yarn precompile && yarn compile:electron-builder", |
23 | "compile:electron-builder": "electron-builder build --config .electron-builder.config.js --dir", | 23 | "compile:electron-builder": "electron-builder build --config .electron-builder.config.js --dir", |
@@ -38,16 +38,19 @@ | |||
38 | "devDependencies": { | 38 | "devDependencies": { |
39 | "@electron/fuses": "^1.5.0", | 39 | "@electron/fuses": "^1.5.0", |
40 | "@types/jest": "^27.0.3", | 40 | "@types/jest": "^27.0.3", |
41 | "@vitejs/plugin-react": "^1.1.3", | ||
42 | "chokidar": "^3.5.2", | ||
41 | "cross-env": "^7.0.3", | 43 | "cross-env": "^7.0.3", |
42 | "electron": "16.0.5", | 44 | "electron": "16.0.5", |
43 | "electron-builder": "^22.14.11", | 45 | "electron-builder": "^22.14.11", |
46 | "esbuild": "^0.14.9", | ||
44 | "eslint": "^8.5.0", | 47 | "eslint": "^8.5.0", |
45 | "jest": "^27.4.5", | 48 | "jest": "^27.4.5", |
46 | "rimraf": "^3.0.2", | 49 | "rimraf": "^3.0.2", |
47 | "rollup": "^2.62.0", | 50 | "rollup": "^2.62.0", |
48 | "ts-jest": "^27.1.2", | 51 | "ts-jest": "^27.1.2", |
49 | "typescript": "^4.5.4", | 52 | "typescript": "^4.5.4", |
50 | "vite": "^2.7.7" | 53 | "vite": "^2.7.9" |
51 | }, | 54 | }, |
52 | "packageManager": "yarn@3.1.1" | 55 | "packageManager": "yarn@3.1.1" |
53 | } | 56 | } |
diff --git a/packages/main/esbuild.config.js b/packages/main/esbuild.config.js new file mode 100644 index 0000000..7653078 --- /dev/null +++ b/packages/main/esbuild.config.js | |||
@@ -0,0 +1,24 @@ | |||
1 | // @ts-check | ||
2 | |||
3 | const { node } = require('../../config/build-common'); | ||
4 | const { getConfig } = require('../../config/esbuild-config'); | ||
5 | |||
6 | const externalPackages = ['electron']; | ||
7 | |||
8 | if (process.env.MODE !== 'development') { | ||
9 | externalPackages.push('electron-devtools-installer'); | ||
10 | } | ||
11 | |||
12 | module.exports = getConfig({ | ||
13 | absWorkingDir: __dirname, | ||
14 | entryPoints: [ | ||
15 | 'src/index.ts', | ||
16 | ], | ||
17 | outfile: 'dist/index.cjs', | ||
18 | format: 'cjs', | ||
19 | platform: 'node', | ||
20 | target: node, | ||
21 | external: externalPackages, | ||
22 | }, { | ||
23 | VITE_DEV_SERVER_URL: process.env.VITE_DEV_SERVER_URL || null, | ||
24 | }); | ||
diff --git a/packages/main/package.json b/packages/main/package.json index c4670a8..76eff8e 100644 --- a/packages/main/package.json +++ b/packages/main/package.json | |||
@@ -6,7 +6,6 @@ | |||
6 | "types": "dist-types/index.d.ts", | 6 | "types": "dist-types/index.d.ts", |
7 | "scripts": { | 7 | "scripts": { |
8 | "clean": "rimraf dist", | 8 | "clean": "rimraf dist", |
9 | "build": "vite build", | ||
10 | "typecheck": "tsc" | 9 | "typecheck": "tsc" |
11 | }, | 10 | }, |
12 | "dependencies": { | 11 | "dependencies": { |
@@ -14,7 +13,7 @@ | |||
14 | "@sophie/shared": "workspace:*", | 13 | "@sophie/shared": "workspace:*", |
15 | "electron": "16.0.5", | 14 | "electron": "16.0.5", |
16 | "json5": "^2.2.0", | 15 | "json5": "^2.2.0", |
17 | "lodash": "^4.17.21", | 16 | "lodash-es": "^4.17.21", |
18 | "loglevel": "^1.8.0", | 17 | "loglevel": "^1.8.0", |
19 | "loglevel-plugin-prefix": "^0.8.4", | 18 | "loglevel-plugin-prefix": "^0.8.4", |
20 | "mobx": "^6.3.10", | 19 | "mobx": "^6.3.10", |
@@ -22,14 +21,13 @@ | |||
22 | "ms": "^2.1.3" | 21 | "ms": "^2.1.3" |
23 | }, | 22 | }, |
24 | "devDependencies": { | 23 | "devDependencies": { |
25 | "@types/debug": "^4", | ||
26 | "@types/electron-devtools-installer": "^2.2.1", | 24 | "@types/electron-devtools-installer": "^2.2.1", |
27 | "@types/lodash": "^4.14.178", | 25 | "@types/lodash-es": "^4.17.5", |
28 | "@types/ms": "^0.7.31", | 26 | "@types/ms": "^0.7.31", |
29 | "@types/node": "^17.0.5", | 27 | "@types/node": "^17.0.5", |
30 | "electron-devtools-installer": "^3.2.0", | 28 | "electron-devtools-installer": "^3.2.0", |
29 | "esbuild": "^0.14.9", | ||
31 | "rimraf": "^3.0.2", | 30 | "rimraf": "^3.0.2", |
32 | "typescript": "^4.5.4", | 31 | "typescript": "^4.5.4" |
33 | "vite": "^2.7.7" | ||
34 | } | 32 | } |
35 | } | 33 | } |
diff --git a/packages/main/src/controllers/config.ts b/packages/main/src/controllers/config.ts index 7187ab4..f2467c7 100644 --- a/packages/main/src/controllers/config.ts +++ b/packages/main/src/controllers/config.ts | |||
@@ -18,7 +18,7 @@ | |||
18 | * SPDX-License-Identifier: AGPL-3.0-only | 18 | * SPDX-License-Identifier: AGPL-3.0-only |
19 | */ | 19 | */ |
20 | 20 | ||
21 | import { debounce } from 'lodash'; | 21 | import debounce from 'lodash-es/debounce'; |
22 | import ms from 'ms'; | 22 | import ms from 'ms'; |
23 | import { applySnapshot, getSnapshot, onSnapshot } from 'mobx-state-tree'; | 23 | import { applySnapshot, getSnapshot, onSnapshot } from 'mobx-state-tree'; |
24 | 24 | ||
diff --git a/packages/main/src/devTools.ts b/packages/main/src/devTools.ts index b98974a..6c25b3e 100644 --- a/packages/main/src/devTools.ts +++ b/packages/main/src/devTools.ts | |||
@@ -18,38 +18,35 @@ | |||
18 | * SPDX-License-Identifier: AGPL-3.0-only | 18 | * SPDX-License-Identifier: AGPL-3.0-only |
19 | */ | 19 | */ |
20 | 20 | ||
21 | import type { App, BrowserWindow } from 'electron'; | 21 | import type { BrowserWindow } from 'electron'; |
22 | 22 | ||
23 | /** | 23 | /** |
24 | * Installs the react and redux developer tools extensions. | 24 | * Installs the react and redux developer tools extensions. |
25 | * | 25 | * |
26 | * We use the redux devtools and connect the mobx store to it with `mst-middlewares`, | 26 | * We use the redux devtools and connect the mobx store to it with `mst-middlewares`, |
27 | * because the mobx-state-tree devtools are currently unmaintained. | 27 | * because the mobx-state-tree devtools are currently unmaintained. |
28 | * | ||
29 | * @param app The electron application instance. | ||
30 | */ | 28 | */ |
31 | export function installDevToolsExtensions(app: App): void { | 29 | export async function installDevToolsExtensions(): Promise<void> { |
32 | app.whenReady().then(async () => { | 30 | const installerPackage = await import('electron-devtools-installer'); |
33 | const { | 31 | const { |
34 | default: installExtension, | 32 | default: installExtension, |
33 | REACT_DEVELOPER_TOOLS, | ||
34 | REDUX_DEVTOOLS, | ||
35 | } = installerPackage.default instanceof Function | ||
36 | ? installerPackage | ||
37 | : installerPackage.default as unknown as typeof import('electron-devtools-installer'); | ||
38 | await installExtension( | ||
39 | [ | ||
35 | REACT_DEVELOPER_TOOLS, | 40 | REACT_DEVELOPER_TOOLS, |
36 | REDUX_DEVTOOLS, | 41 | REDUX_DEVTOOLS, |
37 | } = await import('electron-devtools-installer'); | 42 | ], |
38 | installExtension( | 43 | { |
39 | [ | 44 | forceDownload: false, |
40 | REACT_DEVELOPER_TOOLS, | 45 | loadExtensionOptions: { |
41 | REDUX_DEVTOOLS, | 46 | allowFileAccess: true, |
42 | ], | ||
43 | { | ||
44 | forceDownload: false, | ||
45 | loadExtensionOptions: { | ||
46 | allowFileAccess: true, | ||
47 | }, | ||
48 | }, | 47 | }, |
49 | ); | 48 | }, |
50 | }).catch((err) => { | 49 | ); |
51 | console.error('Failed to install devtools extension', err); | ||
52 | }); | ||
53 | } | 50 | } |
54 | 51 | ||
55 | /** | 52 | /** |
diff --git a/packages/main/src/index.ts b/packages/main/src/index.ts index 7c7be35..f8b6787 100644 --- a/packages/main/src/index.ts +++ b/packages/main/src/index.ts | |||
@@ -50,6 +50,9 @@ import { createMainStore } from './stores/MainStore'; | |||
50 | 50 | ||
51 | const isDevelopment = import.meta.env.MODE === 'development'; | 51 | const isDevelopment = import.meta.env.MODE === 'development'; |
52 | 52 | ||
53 | // Alwayse enable sandboxing. | ||
54 | app.enableSandbox(); | ||
55 | |||
53 | // Use alternative directory when debugging to avoid clobbering the main installation. | 56 | // Use alternative directory when debugging to avoid clobbering the main installation. |
54 | if (isDevelopment) { | 57 | if (isDevelopment) { |
55 | app.setPath('userData', `${app.getPath('userData')}-dev`); | 58 | app.setPath('userData', `${app.getPath('userData')}-dev`); |
@@ -62,9 +65,6 @@ if (!isSingleInstance) { | |||
62 | process.exit(0); | 65 | process.exit(0); |
63 | } | 66 | } |
64 | 67 | ||
65 | // Alwayse enable sandboxing. | ||
66 | app.enableSandbox(); | ||
67 | |||
68 | // Disable chromium's MPRIS integration, which is usually more annoying | 68 | // Disable chromium's MPRIS integration, which is usually more annoying |
69 | // (triggered by random sounds played by websites) than useful. | 69 | // (triggered by random sounds played by websites) than useful. |
70 | app.commandLine.appendSwitch( | 70 | app.commandLine.appendSwitch( |
@@ -90,17 +90,13 @@ function getResourceUrl(relativePath: string): string { | |||
90 | return new URL(relativePath, baseUrl).toString(); | 90 | return new URL(relativePath, baseUrl).toString(); |
91 | } | 91 | } |
92 | 92 | ||
93 | let serviceInjectRelativePath = '../../service-inject/dist/index.cjs'; | 93 | let serviceInjectRelativePath = '../../service-inject/dist/index.js'; |
94 | let serviceInjectPath = getResourcePath(serviceInjectRelativePath); | 94 | let serviceInjectPath = getResourcePath(serviceInjectRelativePath); |
95 | let serviceInject: WebSource = { | 95 | let serviceInject: WebSource = { |
96 | code: readFileSync(serviceInjectPath, 'utf8'), | 96 | code: readFileSync(serviceInjectPath, 'utf8'), |
97 | url: getResourceUrl(serviceInjectRelativePath), | 97 | url: getResourceUrl(serviceInjectRelativePath), |
98 | }; | 98 | }; |
99 | 99 | ||
100 | if (isDevelopment) { | ||
101 | installDevToolsExtensions(app); | ||
102 | } | ||
103 | |||
104 | let mainWindow: BrowserWindow | null = null; | 100 | let mainWindow: BrowserWindow | null = null; |
105 | 101 | ||
106 | const store = createMainStore(); | 102 | const store = createMainStore(); |
@@ -134,13 +130,13 @@ function shouldCancelMainWindowRequest(url: string, method: string): boolean { | |||
134 | return !normalizedUrl.startsWith(getResourceUrl(rendererBaseUrl)); | 130 | return !normalizedUrl.startsWith(getResourceUrl(rendererBaseUrl)); |
135 | } | 131 | } |
136 | 132 | ||
137 | function createWindow(): Promise<unknown> { | 133 | async function createWindow(): Promise<unknown> { |
138 | mainWindow = new BrowserWindow({ | 134 | mainWindow = new BrowserWindow({ |
139 | show: false, | 135 | show: false, |
140 | autoHideMenuBar: true, | 136 | autoHideMenuBar: true, |
141 | webPreferences: { | 137 | webPreferences: { |
142 | devTools: isDevelopment, | ||
143 | sandbox: true, | 138 | sandbox: true, |
139 | devTools: isDevelopment, | ||
144 | preload: getResourcePath('../../preload/dist/index.cjs'), | 140 | preload: getResourcePath('../../preload/dist/index.cjs'), |
145 | }, | 141 | }, |
146 | }); | 142 | }); |
@@ -159,8 +155,14 @@ function createWindow(): Promise<unknown> { | |||
159 | }) | 155 | }) |
160 | }); | 156 | }); |
161 | 157 | ||
162 | webContents.on('will-navigate', (event) => { | 158 | const pageUrl = (isDevelopment && import.meta.env.VITE_DEV_SERVER_URL !== undefined) |
163 | event.preventDefault(); | 159 | ? import.meta.env.VITE_DEV_SERVER_URL |
160 | : getResourceUrl('../renderer/dist/index.html'); | ||
161 | |||
162 | webContents.on('will-navigate', (event, url) => { | ||
163 | if (url !== pageUrl) { | ||
164 | event.preventDefault(); | ||
165 | } | ||
164 | }); | 166 | }); |
165 | 167 | ||
166 | webContents.setWindowOpenHandler(() => ({ action: 'deny' })); | 168 | webContents.setWindowOpenHandler(() => ({ action: 'deny' })); |
@@ -279,10 +281,6 @@ function createWindow(): Promise<unknown> { | |||
279 | callback({ requestHeaders }); | 281 | callback({ requestHeaders }); |
280 | }); | 282 | }); |
281 | 283 | ||
282 | const pageUrl = (isDevelopment && import.meta.env.VITE_DEV_SERVER_URL !== undefined) | ||
283 | ? import.meta.env.VITE_DEV_SERVER_URL | ||
284 | : getResourceUrl('../renderer/dist/index.html'); | ||
285 | |||
286 | return Promise.all([ | 284 | return Promise.all([ |
287 | mainWindow.loadURL(pageUrl), | 285 | mainWindow.loadURL(pageUrl), |
288 | browserView.webContents.loadURL('https://git.marussy.com/sophie/about'), | 286 | browserView.webContents.loadURL('https://git.marussy.com/sophie/about'), |
@@ -307,7 +305,13 @@ app.on('window-all-closed', () => { | |||
307 | } | 305 | } |
308 | }); | 306 | }); |
309 | 307 | ||
310 | app.whenReady().then(createWindow).catch((err) => { | 308 | app.whenReady().then(async () => { |
309 | if (isDevelopment) { | ||
310 | await installDevToolsExtensions(); | ||
311 | } | ||
312 | |||
313 | return createWindow(); | ||
314 | }).catch((err) => { | ||
311 | console.error('Failed to create window', err); | 315 | console.error('Failed to create window', err); |
312 | process.exit(1); | 316 | process.exit(1); |
313 | }); | 317 | }); |
diff --git a/packages/main/src/services/ConfigPersistenceService.ts b/packages/main/src/services/ConfigPersistenceService.ts index 1c0315f..ee5eb9f 100644 --- a/packages/main/src/services/ConfigPersistenceService.ts +++ b/packages/main/src/services/ConfigPersistenceService.ts | |||
@@ -20,7 +20,7 @@ | |||
20 | import { watch } from 'fs'; | 20 | import { watch } from 'fs'; |
21 | import { readFile, stat, writeFile } from 'fs/promises'; | 21 | import { readFile, stat, writeFile } from 'fs/promises'; |
22 | import JSON5 from 'json5'; | 22 | import JSON5 from 'json5'; |
23 | import { throttle } from 'lodash'; | 23 | import throttle from 'lodash-es/throttle'; |
24 | import { join } from 'path'; | 24 | import { join } from 'path'; |
25 | 25 | ||
26 | import type { ConfigSnapshotOut } from '../stores/Config'; | 26 | import type { ConfigSnapshotOut } from '../stores/Config'; |
diff --git a/packages/main/src/utils/logging.ts b/packages/main/src/utils/logging.ts index 9f1133f..5cb5d21 100644 --- a/packages/main/src/utils/logging.ts +++ b/packages/main/src/utils/logging.ts | |||
@@ -36,10 +36,6 @@ prefix.apply(loglevel, { | |||
36 | const lastSegment = nameSegments.pop(); | 36 | const lastSegment = nameSegments.pop(); |
37 | shortName = [...nameSegments.map((segment) => segment[0]), lastSegment].join(':'); | 37 | shortName = [...nameSegments.map((segment) => segment[0]), lastSegment].join(':'); |
38 | } | 38 | } |
39 | if (isDevelopment) { | ||
40 | // `watch.js` already appends timestamps. | ||
41 | return `${level} (${shortName})`; | ||
42 | } | ||
43 | return `[${timestamp}] ${level} (${shortName})`; | 39 | return `[${timestamp}] ${level} (${shortName})`; |
44 | }, | 40 | }, |
45 | }); | 41 | }); |
diff --git a/packages/main/vite.config.js b/packages/main/vite.config.js deleted file mode 100644 index bdb0ca1..0000000 --- a/packages/main/vite.config.js +++ /dev/null | |||
@@ -1,39 +0,0 @@ | |||
1 | // @ts-check | ||
2 | |||
3 | import { builtinModules } from 'module'; | ||
4 | |||
5 | import { makeConfig, node } from '../../config/vite-common'; | ||
6 | |||
7 | /** @type {string} */ | ||
8 | const PACKAGE_ROOT = __dirname; | ||
9 | |||
10 | /** | ||
11 | * @type {import('vite').UserConfig} | ||
12 | * @see https://vitejs.dev/config/ | ||
13 | */ | ||
14 | const config = makeConfig({ | ||
15 | root: PACKAGE_ROOT, | ||
16 | define: { | ||
17 | // Allow access to process.env in imported packages. | ||
18 | // https://github.com/vitejs/vite/issues/3176#issuecomment-876610206 | ||
19 | 'process.env': 'process["env"]', | ||
20 | 'global.process.env': 'global.process["env"]', | ||
21 | 'globalThis.process.env': 'globalThis.process["env"]', | ||
22 | }, | ||
23 | build: { | ||
24 | target: node, | ||
25 | lib: { | ||
26 | entry: 'src/index.ts', | ||
27 | formats: ['cjs'], | ||
28 | }, | ||
29 | rollupOptions: { | ||
30 | external: [ | ||
31 | 'electron', | ||
32 | 'electron-devtools-installer', | ||
33 | ...builtinModules, | ||
34 | ], | ||
35 | }, | ||
36 | }, | ||
37 | }); | ||
38 | |||
39 | export default config; | ||
diff --git a/packages/preload/esbuild.config.js b/packages/preload/esbuild.config.js new file mode 100644 index 0000000..76ac33f --- /dev/null +++ b/packages/preload/esbuild.config.js | |||
@@ -0,0 +1,19 @@ | |||
1 | // @ts-check | ||
2 | |||
3 | const { chrome } = require('../../config/build-common'); | ||
4 | const { getConfig } = require('../../config/esbuild-config'); | ||
5 | |||
6 | module.exports = getConfig({ | ||
7 | absWorkingDir: __dirname, | ||
8 | entryPoints: [ | ||
9 | 'src/index.ts', | ||
10 | ], | ||
11 | outfile: 'dist/index.cjs', | ||
12 | format: 'cjs', | ||
13 | platform: 'node', | ||
14 | target: chrome, | ||
15 | sourcemap: 'inline', | ||
16 | external: [ | ||
17 | 'electron', | ||
18 | ], | ||
19 | }); | ||
diff --git a/packages/preload/package.json b/packages/preload/package.json index caa23b6..5eb6055 100644 --- a/packages/preload/package.json +++ b/packages/preload/package.json | |||
@@ -8,7 +8,6 @@ | |||
8 | "scripts": { | 8 | "scripts": { |
9 | "clean": "rimraf dist", | 9 | "clean": "rimraf dist", |
10 | "test": "jest", | 10 | "test": "jest", |
11 | "build": "vite build", | ||
12 | "typecheck": "tsc" | 11 | "typecheck": "tsc" |
13 | }, | 12 | }, |
14 | "dependencies": { | 13 | "dependencies": { |
@@ -24,7 +23,6 @@ | |||
24 | "jsdom": "^19.0.0", | 23 | "jsdom": "^19.0.0", |
25 | "rimraf": "^3.0.2", | 24 | "rimraf": "^3.0.2", |
26 | "ts-jest": "^27.1.2", | 25 | "ts-jest": "^27.1.2", |
27 | "typescript": "^4.5.4", | 26 | "typescript": "^4.5.4" |
28 | "vite": "^2.7.7" | ||
29 | } | 27 | } |
30 | } | 28 | } |
diff --git a/packages/preload/vite.config.js b/packages/preload/vite.config.js deleted file mode 100644 index 409d912..0000000 --- a/packages/preload/vite.config.js +++ /dev/null | |||
@@ -1,31 +0,0 @@ | |||
1 | // @ts-check | ||
2 | |||
3 | import { builtinModules } from 'module'; | ||
4 | |||
5 | import { chrome, makeConfig } from '../../config/vite-common'; | ||
6 | |||
7 | /** @type {string} */ | ||
8 | const PACKAGE_ROOT = __dirname; | ||
9 | |||
10 | /** | ||
11 | * @type {import('vite').UserConfig} | ||
12 | * @see https://vitejs.dev/config/ | ||
13 | */ | ||
14 | const config = makeConfig({ | ||
15 | root: PACKAGE_ROOT, | ||
16 | build: { | ||
17 | target: chrome, | ||
18 | lib: { | ||
19 | entry: 'src/index.ts', | ||
20 | formats: ['cjs'], | ||
21 | }, | ||
22 | rollupOptions: { | ||
23 | external: [ | ||
24 | 'electron', | ||
25 | ...builtinModules, | ||
26 | ], | ||
27 | }, | ||
28 | }, | ||
29 | }); | ||
30 | |||
31 | export default config; | ||
diff --git a/packages/renderer/package.json b/packages/renderer/package.json index ff8955a..1d34cdb 100644 --- a/packages/renderer/package.json +++ b/packages/renderer/package.json | |||
@@ -5,8 +5,7 @@ | |||
5 | "main": "dist/index.html", | 5 | "main": "dist/index.html", |
6 | "types": "dist-types/index.d.ts", | 6 | "types": "dist-types/index.d.ts", |
7 | "scripts": { | 7 | "scripts": { |
8 | "clean": "rimraf dist node_modules", | 8 | "clean": "rimraf dist", |
9 | "build": "vite build", | ||
10 | "typecheck": "tsc" | 9 | "typecheck": "tsc" |
11 | }, | 10 | }, |
12 | "dependencies": { | 11 | "dependencies": { |
@@ -18,7 +17,7 @@ | |||
18 | "@sophie/shared": "workspace:*", | 17 | "@sophie/shared": "workspace:*", |
19 | "lodash": "^4.17.21", | 18 | "lodash": "^4.17.21", |
20 | "mobx": "^6.3.10", | 19 | "mobx": "^6.3.10", |
21 | "mobx-react-lite": "^3.2.2", | 20 | "mobx-react-lite": "^3.2.3", |
22 | "mobx-state-tree": "^5.1.0", | 21 | "mobx-state-tree": "^5.1.0", |
23 | "react": "^17.0.2", | 22 | "react": "^17.0.2", |
24 | "react-dom": "^17.0.2" | 23 | "react-dom": "^17.0.2" |
@@ -32,6 +31,6 @@ | |||
32 | "remotedev": "^0.2.9", | 31 | "remotedev": "^0.2.9", |
33 | "rimraf": "^3.0.2", | 32 | "rimraf": "^3.0.2", |
34 | "typescript": "^4.5.4", | 33 | "typescript": "^4.5.4", |
35 | "vite": "^2.7.7" | 34 | "vite": "^2.7.9" |
36 | } | 35 | } |
37 | } | 36 | } |
diff --git a/packages/renderer/src/devTools.ts b/packages/renderer/src/devTools.ts index 7c44559..3ec66aa 100644 --- a/packages/renderer/src/devTools.ts +++ b/packages/renderer/src/devTools.ts | |||
@@ -61,12 +61,9 @@ export function exposeToReduxDevtools(model: IAnyStateTreeNode): void { | |||
61 | * `build/watch.js` sends a reload event on bundle write. | 61 | * `build/watch.js` sends a reload event on bundle write. |
62 | */ | 62 | */ |
63 | export function hotReloadServices(): void { | 63 | export function hotReloadServices(): void { |
64 | import.meta.hot?.on( | 64 | import.meta.hot?.on('sophie:reload-services', () => { |
65 | 'sophie:reload-services', | 65 | window.sophieRenderer.dispatchAction({ |
66 | () => { | 66 | action: 'reload-all-services', |
67 | window.sophieRenderer.dispatchAction({ | 67 | }); |
68 | action: 'reload-all-services', | 68 | }); |
69 | }); | ||
70 | }, | ||
71 | ); | ||
72 | } | 69 | } |
diff --git a/packages/renderer/vite.config.js b/packages/renderer/vite.config.js index 94f0b76..30729c0 100644 --- a/packages/renderer/vite.config.js +++ b/packages/renderer/vite.config.js | |||
@@ -3,21 +3,35 @@ | |||
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'; | ||
6 | import react from '@vitejs/plugin-react'; | 7 | import react from '@vitejs/plugin-react'; |
7 | 8 | ||
8 | import { chrome, makeConfig } from '../../config/vite-common'; | 9 | import { banner, chrome } from '../../config/build-common'; |
9 | 10 | ||
10 | /** @type {string} */ | 11 | const mode = process.env.MODE || 'development'; |
11 | const PACKAGE_ROOT = __dirname; | 12 | |
13 | const isDevelopment = mode === 'development'; | ||
12 | 14 | ||
13 | /** | 15 | /** |
14 | * @type {import('vite').UserConfig} | 16 | * @type {import('vite').UserConfig} |
15 | * @see https://vitejs.dev/config/ | 17 | * @see https://vitejs.dev/config/ |
16 | */ | 18 | */ |
17 | const config = makeConfig({ | 19 | export default { |
18 | root: PACKAGE_ROOT, | 20 | /** @type {import('vite').LogLevel} */ |
21 | logLevel: 'info', | ||
22 | mode, | ||
23 | root: __dirname, | ||
24 | cacheDir: join(__dirname, '../../.vite'), | ||
19 | plugins: [ | 25 | plugins: [ |
20 | react(), | 26 | react({ |
27 | babel: { | ||
28 | // Gets rid of deoptimization warnings for large chunks. | ||
29 | // We don't need to minify here, because the output of babel | ||
30 | // will get passed to esbuild anyways. | ||
31 | compact: false, | ||
32 | minified: false, | ||
33 | }, | ||
34 | }), | ||
21 | ], | 35 | ], |
22 | base: '', | 36 | base: '', |
23 | server: { | 37 | server: { |
@@ -25,16 +39,32 @@ const config = makeConfig({ | |||
25 | strict: true, | 39 | strict: true, |
26 | }, | 40 | }, |
27 | }, | 41 | }, |
42 | resolve: { | ||
43 | preserveSymlinks: true, | ||
44 | }, | ||
45 | optimizeDeps: { | ||
46 | exclude: [ | ||
47 | // Already bundled by esbuild. | ||
48 | '@sophie/shared', | ||
49 | ], | ||
50 | }, | ||
28 | build: { | 51 | build: { |
29 | target: chrome, | 52 | target: chrome, |
53 | assetsDir: '.', | ||
54 | outDir: 'dist', | ||
55 | emptyOutDir: true, | ||
56 | sourcemap: isDevelopment, | ||
57 | minify: !isDevelopment, | ||
58 | brotliSize: false, | ||
30 | rollupOptions: { | 59 | rollupOptions: { |
31 | external: [ | 60 | external: [ |
32 | 'mst-middlewares', | 61 | 'mst-middlewares', |
33 | 'remotedev', | 62 | 'remotedev', |
34 | ...builtinModules, | 63 | ...builtinModules, |
35 | ], | 64 | ], |
65 | output: { | ||
66 | banner, | ||
67 | } | ||
36 | }, | 68 | }, |
37 | }, | 69 | }, |
38 | }); | 70 | }; |
39 | |||
40 | export default config; | ||
diff --git a/packages/service-inject/esbuild.config.js b/packages/service-inject/esbuild.config.js new file mode 100644 index 0000000..38e5b7d --- /dev/null +++ b/packages/service-inject/esbuild.config.js | |||
@@ -0,0 +1,16 @@ | |||
1 | // @ts-check | ||
2 | |||
3 | const { chrome } = require('../../config/build-common'); | ||
4 | const { getConfig } = require('../../config/esbuild-config'); | ||
5 | |||
6 | module.exports = getConfig({ | ||
7 | absWorkingDir: __dirname, | ||
8 | entryPoints: [ | ||
9 | 'src/index.ts', | ||
10 | ], | ||
11 | outfile: 'dist/index.js', | ||
12 | format: 'iife', | ||
13 | platform: 'browser', | ||
14 | target: chrome, | ||
15 | sourcemap: 'inline', | ||
16 | }); | ||
diff --git a/packages/service-inject/package.json b/packages/service-inject/package.json index 573fc82..94cd825 100644 --- a/packages/service-inject/package.json +++ b/packages/service-inject/package.json | |||
@@ -7,7 +7,6 @@ | |||
7 | "types": "dist-types/index.d.ts", | 7 | "types": "dist-types/index.d.ts", |
8 | "scripts": { | 8 | "scripts": { |
9 | "clean": "rimraf dist", | 9 | "clean": "rimraf dist", |
10 | "build": "vite build", | ||
11 | "typecheck": "tsc" | 10 | "typecheck": "tsc" |
12 | }, | 11 | }, |
13 | "dependencies": { | 12 | "dependencies": { |
@@ -15,7 +14,6 @@ | |||
15 | }, | 14 | }, |
16 | "devDependencies": { | 15 | "devDependencies": { |
17 | "rimraf": "^3.0.2", | 16 | "rimraf": "^3.0.2", |
18 | "typescript": "^4.5.4", | 17 | "typescript": "^4.5.4" |
19 | "vite": "^2.7.7" | ||
20 | } | 18 | } |
21 | } | 19 | } |
diff --git a/packages/service-inject/vite.config.js b/packages/service-inject/vite.config.js deleted file mode 100644 index 9c65c15..0000000 --- a/packages/service-inject/vite.config.js +++ /dev/null | |||
@@ -1,28 +0,0 @@ | |||
1 | // @ts-check | ||
2 | |||
3 | import { builtinModules } from 'module'; | ||
4 | |||
5 | import { chrome, makeConfig } from '../../config/vite-common'; | ||
6 | |||
7 | /** @type {string} */ | ||
8 | const PACKAGE_ROOT = __dirname; | ||
9 | |||
10 | /** | ||
11 | * @type {import('vite').UserConfig} | ||
12 | * @see https://vitejs.dev/config/ | ||
13 | */ | ||
14 | const config = makeConfig({ | ||
15 | root: PACKAGE_ROOT, | ||
16 | build: { | ||
17 | target: chrome, | ||
18 | lib: { | ||
19 | entry: 'src/index.ts', | ||
20 | formats: ['cjs'], | ||
21 | }, | ||
22 | rollupOptions: { | ||
23 | external: builtinModules, | ||
24 | }, | ||
25 | }, | ||
26 | }); | ||
27 | |||
28 | export default config; | ||
diff --git a/packages/service-preload/esbuild.config.js b/packages/service-preload/esbuild.config.js new file mode 100644 index 0000000..76ac33f --- /dev/null +++ b/packages/service-preload/esbuild.config.js | |||
@@ -0,0 +1,19 @@ | |||
1 | // @ts-check | ||
2 | |||
3 | const { chrome } = require('../../config/build-common'); | ||
4 | const { getConfig } = require('../../config/esbuild-config'); | ||
5 | |||
6 | module.exports = getConfig({ | ||
7 | absWorkingDir: __dirname, | ||
8 | entryPoints: [ | ||
9 | 'src/index.ts', | ||
10 | ], | ||
11 | outfile: 'dist/index.cjs', | ||
12 | format: 'cjs', | ||
13 | platform: 'node', | ||
14 | target: chrome, | ||
15 | sourcemap: 'inline', | ||
16 | external: [ | ||
17 | 'electron', | ||
18 | ], | ||
19 | }); | ||
diff --git a/packages/service-preload/package.json b/packages/service-preload/package.json index 6f3faf9..fb67a8e 100644 --- a/packages/service-preload/package.json +++ b/packages/service-preload/package.json | |||
@@ -2,11 +2,10 @@ | |||
2 | "name": "@sophie/service-preload", | 2 | "name": "@sophie/service-preload", |
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.js", |
6 | "types": "dist-types/index.d.ts", | 6 | "types": "dist-types/index.d.ts", |
7 | "scripts": { | 7 | "scripts": { |
8 | "clean": "rimraf dist", | 8 | "clean": "rimraf dist", |
9 | "build": "vite build", | ||
10 | "typecheck": "tsc" | 9 | "typecheck": "tsc" |
11 | }, | 10 | }, |
12 | "dependencies": { | 11 | "dependencies": { |
@@ -15,7 +14,6 @@ | |||
15 | }, | 14 | }, |
16 | "devDependencies": { | 15 | "devDependencies": { |
17 | "rimraf": "^3.0.2", | 16 | "rimraf": "^3.0.2", |
18 | "typescript": "^4.5.4", | 17 | "typescript": "^4.5.4" |
19 | "vite": "^2.7.7" | ||
20 | } | 18 | } |
21 | } | 19 | } |
diff --git a/packages/service-preload/vite.config.js b/packages/service-preload/vite.config.js deleted file mode 100644 index 409d912..0000000 --- a/packages/service-preload/vite.config.js +++ /dev/null | |||
@@ -1,31 +0,0 @@ | |||
1 | // @ts-check | ||
2 | |||
3 | import { builtinModules } from 'module'; | ||
4 | |||
5 | import { chrome, makeConfig } from '../../config/vite-common'; | ||
6 | |||
7 | /** @type {string} */ | ||
8 | const PACKAGE_ROOT = __dirname; | ||
9 | |||
10 | /** | ||
11 | * @type {import('vite').UserConfig} | ||
12 | * @see https://vitejs.dev/config/ | ||
13 | */ | ||
14 | const config = makeConfig({ | ||
15 | root: PACKAGE_ROOT, | ||
16 | build: { | ||
17 | target: chrome, | ||
18 | lib: { | ||
19 | entry: 'src/index.ts', | ||
20 | formats: ['cjs'], | ||
21 | }, | ||
22 | rollupOptions: { | ||
23 | external: [ | ||
24 | 'electron', | ||
25 | ...builtinModules, | ||
26 | ], | ||
27 | }, | ||
28 | }, | ||
29 | }); | ||
30 | |||
31 | export default config; | ||
diff --git a/packages/service-shared/package.json b/packages/service-shared/package.json index 980d0c0..b9128c6 100644 --- a/packages/service-shared/package.json +++ b/packages/service-shared/package.json | |||
@@ -3,11 +3,10 @@ | |||
3 | "version": "0.1.0", | 3 | "version": "0.1.0", |
4 | "private": true, | 4 | "private": true, |
5 | "sideEffects": false, | 5 | "sideEffects": false, |
6 | "main": "dist/index.cjs", | 6 | "main": "src/index.ts", |
7 | "types": "dist/index.d.ts", | 7 | "types": "dist/index.d.ts", |
8 | "scripts": { | 8 | "scripts": { |
9 | "clean": "rimraf dist tsconfig.tsbuildinfo", | 9 | "clean": "rimraf dist tsconfig.tsbuildinfo", |
10 | "build": "vite build", | ||
11 | "typecheck": "tsc" | 10 | "typecheck": "tsc" |
12 | }, | 11 | }, |
13 | "dependencies": { | 12 | "dependencies": { |
@@ -15,7 +14,6 @@ | |||
15 | }, | 14 | }, |
16 | "devDependencies": { | 15 | "devDependencies": { |
17 | "rimraf": "^3.0.2", | 16 | "rimraf": "^3.0.2", |
18 | "typescript": "^4.5.4", | 17 | "typescript": "^4.5.4" |
19 | "vite": "^2.7.7" | ||
20 | } | 18 | } |
21 | } | 19 | } |
diff --git a/packages/service-shared/vite.config.js b/packages/service-shared/vite.config.js deleted file mode 100644 index 2391810..0000000 --- a/packages/service-shared/vite.config.js +++ /dev/null | |||
@@ -1,35 +0,0 @@ | |||
1 | // @ts-check | ||
2 | |||
3 | import { builtinModules } from 'module'; | ||
4 | |||
5 | import { chrome, makeConfig, node } from '../../config/vite-common'; | ||
6 | |||
7 | /** @type string */ | ||
8 | const PACKAGE_ROOT = __dirname; | ||
9 | |||
10 | /** | ||
11 | * @type {import('vite').UserConfig} | ||
12 | * @see https://vitejs.dev/config/ | ||
13 | */ | ||
14 | const config = makeConfig({ | ||
15 | root: PACKAGE_ROOT, | ||
16 | build: { | ||
17 | target: [ | ||
18 | chrome, | ||
19 | node, | ||
20 | ], | ||
21 | lib: { | ||
22 | entry: 'src/index.ts', | ||
23 | formats: ['cjs'], | ||
24 | }, | ||
25 | rollupOptions: { | ||
26 | external: [ | ||
27 | 'zod', | ||
28 | ...builtinModules, | ||
29 | ], | ||
30 | }, | ||
31 | emptyOutDir: false, // Do not remove .d.ts files. | ||
32 | }, | ||
33 | }); | ||
34 | |||
35 | export default config; | ||
diff --git a/packages/shared/esbuild.config.js b/packages/shared/esbuild.config.js new file mode 100644 index 0000000..f58d776 --- /dev/null +++ b/packages/shared/esbuild.config.js | |||
@@ -0,0 +1,23 @@ | |||
1 | // @ts-check | ||
2 | |||
3 | const { chrome } = require('../../config/build-common'); | ||
4 | const { getConfig } = require('../../config/esbuild-config'); | ||
5 | |||
6 | module.exports = getConfig({ | ||
7 | absWorkingDir: __dirname, | ||
8 | entryPoints: [ | ||
9 | 'src/index.ts', | ||
10 | ], | ||
11 | outfile: 'dist/index.mjs', | ||
12 | format: 'esm', | ||
13 | // The package that includes this one will have a header comment, | ||
14 | // no need to have an additional one here. | ||
15 | banner: {}, | ||
16 | platform: 'node', | ||
17 | target: chrome, | ||
18 | external: [ | ||
19 | 'mobx', | ||
20 | 'mobx-state-tree', | ||
21 | 'zod', | ||
22 | ], | ||
23 | }); | ||
diff --git a/packages/shared/package.json b/packages/shared/package.json index a2e4232..3db4cb1 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json | |||
@@ -3,12 +3,11 @@ | |||
3 | "version": "0.1.0", | 3 | "version": "0.1.0", |
4 | "private": true, | 4 | "private": true, |
5 | "sideEffects": false, | 5 | "sideEffects": false, |
6 | "main": "dist/index.cjs", | 6 | "main": "src/index.ts", |
7 | "module": "dist/index.es.js", | 7 | "module": "dist/index.mjs", |
8 | "types": "dist/index.d.ts", | 8 | "types": "dist/index.d.ts", |
9 | "scripts": { | 9 | "scripts": { |
10 | "clean": "rimraf dist tsconfig.tsbuildinfo", | 10 | "clean": "rimraf dist tsconfig.tsbuildinfo", |
11 | "build": "vite build", | ||
12 | "typecheck": "tsc" | 11 | "typecheck": "tsc" |
13 | }, | 12 | }, |
14 | "dependencies": { | 13 | "dependencies": { |
@@ -18,7 +17,6 @@ | |||
18 | }, | 17 | }, |
19 | "devDependencies": { | 18 | "devDependencies": { |
20 | "rimraf": "^3.0.2", | 19 | "rimraf": "^3.0.2", |
21 | "typescript": "^4.5.4", | 20 | "typescript": "^4.5.4" |
22 | "vite": "^2.7.7" | ||
23 | } | 21 | } |
24 | } | 22 | } |
diff --git a/packages/shared/vite.config.js b/packages/shared/vite.config.js deleted file mode 100644 index 5fb1ceb..0000000 --- a/packages/shared/vite.config.js +++ /dev/null | |||
@@ -1,40 +0,0 @@ | |||
1 | // @ts-check | ||
2 | |||
3 | import { builtinModules } from 'module'; | ||
4 | |||
5 | import { chrome, makeConfig, node } from '../../config/vite-common'; | ||
6 | |||
7 | /** @type {string} */ | ||
8 | const PACKAGE_ROOT = __dirname; | ||
9 | |||
10 | /** | ||
11 | * @type {import('vite').UserConfig} | ||
12 | * @see https://vitejs.dev/config/ | ||
13 | */ | ||
14 | const config = makeConfig({ | ||
15 | root: PACKAGE_ROOT, | ||
16 | build: { | ||
17 | target: [ | ||
18 | chrome, | ||
19 | node, | ||
20 | ], | ||
21 | lib: { | ||
22 | entry: 'src/index.ts', | ||
23 | formats: [ | ||
24 | 'cjs', | ||
25 | 'es', | ||
26 | ], | ||
27 | }, | ||
28 | rollupOptions: { | ||
29 | external: [ | ||
30 | 'mobx', | ||
31 | 'mobx-state-tree', | ||
32 | 'zod', | ||
33 | ...builtinModules, | ||
34 | ], | ||
35 | }, | ||
36 | emptyOutDir: false, // Do not remove .d.ts files. | ||
37 | }, | ||
38 | }); | ||
39 | |||
40 | export default config; | ||
diff --git a/scripts/build.js b/scripts/build.js new file mode 100644 index 0000000..416530d --- /dev/null +++ b/scripts/build.js | |||
@@ -0,0 +1,37 @@ | |||
1 | const esbuild = require('esbuild'); | ||
2 | const { join } = require('path'); | ||
3 | const vite = require('vite'); | ||
4 | |||
5 | /** | ||
6 | * @param {string} packageName | ||
7 | * @returns {Promise<import('esbuild').BuildResult>} | ||
8 | */ | ||
9 | function buildPackageEsbuild(packageName) { | ||
10 | const config = require(`../packages/${packageName}/esbuild.config.js`); | ||
11 | return esbuild.build(config); | ||
12 | } | ||
13 | |||
14 | function buildPackageVite(packageName) { | ||
15 | return vite.build({ | ||
16 | configFile: join(__dirname, `../packages/${packageName}/vite.config.js`), | ||
17 | }); | ||
18 | } | ||
19 | |||
20 | function buildAll() { | ||
21 | // Esbuild can natively load a typescript main file, | ||
22 | // so we don't need to bundle `service-shared`. | ||
23 | // We onyl bundle `shared` for vite. | ||
24 | const buildShared = buildPackageEsbuild('shared'); | ||
25 | return Promise.all([ | ||
26 | buildShared.then(() => buildPackageEsbuild('main')), | ||
27 | buildPackageEsbuild('service-inject'), | ||
28 | buildPackageEsbuild('service-preload'), | ||
29 | buildPackageEsbuild('preload'), | ||
30 | buildPackageVite('renderer'), | ||
31 | ]); | ||
32 | } | ||
33 | |||
34 | buildAll().catch((err) => { | ||
35 | console.error(err); | ||
36 | process.exit(1); | ||
37 | }); | ||
diff --git a/scripts/watch.js b/scripts/watch.js index 82dc01e..367ab88 100644 --- a/scripts/watch.js +++ b/scripts/watch.js | |||
@@ -1,32 +1,23 @@ | |||
1 | #!/usr/bin/env node | ||
2 | |||
3 | // @ts-check | 1 | // @ts-check |
4 | 2 | ||
3 | const esbuild = require('esbuild'); | ||
5 | const { spawn } = require('child_process'); | 4 | const { spawn } = require('child_process'); |
5 | const chokidar = require('chokidar'); | ||
6 | const electronPath = require('electron'); | 6 | const electronPath = require('electron'); |
7 | const { build, createLogger, createServer } = require('vite'); | 7 | const { join } = require('path'); |
8 | const { createServer } = require('vite'); | ||
8 | 9 | ||
9 | /** @type {string} */ | 10 | process.env.MODE = 'development'; |
10 | const mode = process.env.MODE = process.env.MODE || 'development'; | 11 | process.env.NODE_ENV = 'development'; |
11 | 12 | ||
12 | /** @type {import('vite').LogLevel} */ | 13 | /** @type {string} */ |
13 | const LOG_LEVEL = 'info'; | 14 | const sharedPackageSource = packageSource('shared'); |
14 | 15 | ||
15 | /** @type {import('vite').InlineConfig} */ | 16 | /** @type {string} */ |
16 | const sharedConfig = { | 17 | const serviceSharedPackageSource = packageSource('service-shared'); |
17 | mode, | ||
18 | build: { | ||
19 | watch: {}, | ||
20 | }, | ||
21 | logLevel: LOG_LEVEL, | ||
22 | }; | ||
23 | 18 | ||
24 | /** | 19 | /** @type {RegExp[]} */ |
25 | * Messages on stderr that match any of the contained patterns will be stripped from output | 20 | const stderrIgnorePatterns = [ |
26 | * | ||
27 | * @type {RegExp[]} | ||
28 | */ | ||
29 | const stderrFilterPatterns = [ | ||
30 | // warning about devtools extension | 21 | // warning about devtools extension |
31 | // https://github.com/cawa-93/vite-electron-builder/issues/492 | 22 | // https://github.com/cawa-93/vite-electron-builder/issues/492 |
32 | // https://github.com/MarshallOfSound/electron-devtools-installer/issues/143 | 23 | // https://github.com/MarshallOfSound/electron-devtools-installer/issues/143 |
@@ -37,27 +28,102 @@ const stderrFilterPatterns = [ | |||
37 | ]; | 28 | ]; |
38 | 29 | ||
39 | /** | 30 | /** |
40 | * @param {{name: string; configFile: string; writeBundle?: import('rollup').OutputPlugin['writeBundle'] }} config | 31 | * @param {string} packageName |
41 | * @returns {Promise<unknown>} | 32 | * @returns {string} |
33 | */ | ||
34 | function packageSource(packageName) { | ||
35 | return join(__dirname, `../packages/${packageName}/src`); | ||
36 | } | ||
37 | |||
38 | /** | ||
39 | * @param {string} packageName | ||
40 | * @param {string[]} [extraPaths] | ||
41 | * @param {() => void} [callback] | ||
42 | * @return {Promise<void>} | ||
43 | */ | ||
44 | async function setupEsbuildWatcher(packageName, extraPaths, callback) { | ||
45 | const config = require(`../packages/${packageName}/esbuild.config.js`); | ||
46 | config.logLevel = 'info'; | ||
47 | config.incremental = true; | ||
48 | const incrementalBuild = await esbuild.build(config); | ||
49 | const paths = [ | ||
50 | packageSource(packageName), | ||
51 | ...(extraPaths || []), | ||
52 | ]; | ||
53 | const watcher = chokidar.watch(paths, { | ||
54 | ignored: /(^|[\/\\])\.|__(tests|mocks)__|\.(spec|test)\.[jt]sx?$/, | ||
55 | ignoreInitial: true, | ||
56 | persistent: true, | ||
57 | }); | ||
58 | if (callback) { | ||
59 | callback(); | ||
60 | } | ||
61 | watcher.on('change', () => { | ||
62 | incrementalBuild.rebuild().then(() => { | ||
63 | console.log(`\u26a1 Reloading package ${packageName}`); | ||
64 | if (callback) { | ||
65 | callback(); | ||
66 | } | ||
67 | }).catch((err) => { | ||
68 | const errCount = err.errors.length; | ||
69 | console.error( | ||
70 | '\ud83d\udd25', | ||
71 | errCount, | ||
72 | errCount > 1 ? 'errors' : 'error', | ||
73 | 'while rebuilding package', | ||
74 | packageName | ||
75 | ); | ||
76 | }); | ||
77 | }); | ||
78 | } | ||
79 | |||
80 | /** | ||
81 | * @param {string} packageName | ||
82 | * @return {Promise<import('vite').ViteDevServer>} | ||
42 | */ | 83 | */ |
43 | function getWatcher({ name, configFile, writeBundle }) { | 84 | async function setupDevServer(packageName) { |
44 | return build({ | 85 | const viteDevServer = await createServer({ |
45 | ...sharedConfig, | 86 | build: { |
46 | configFile, | 87 | watch: { |
47 | plugins: [ | 88 | skipWrite: true, |
48 | { | 89 | clearScreen: false, |
49 | name, | ||
50 | writeBundle, | ||
51 | }, | 90 | }, |
52 | ], | 91 | }, |
92 | configFile: join(__dirname, `../packages/${packageName}/vite.config.js`), | ||
93 | }); | ||
94 | await viteDevServer.listen(); | ||
95 | return viteDevServer; | ||
96 | } | ||
97 | |||
98 | /** | ||
99 | * @param {(event: import('vite').HMRPayload) => void} sendEvent | ||
100 | * @return {Promise<void>} | ||
101 | */ | ||
102 | function setupPreloadPackageWatcher(sendEvent) { | ||
103 | return setupEsbuildWatcher('preload', [sharedPackageSource], () => { | ||
104 | sendEvent({ | ||
105 | type: 'full-reload', | ||
106 | }); | ||
107 | }); | ||
108 | } | ||
109 | |||
110 | /** | ||
111 | * @param {string} packageName | ||
112 | * @param {(event: import('vite').HMRPayload) => void} sendEvent | ||
113 | * @return {Promise<void>} | ||
114 | */ | ||
115 | function setupServicePackageWatcher(packageName, sendEvent) { | ||
116 | return setupEsbuildWatcher(packageName, [serviceSharedPackageSource], () => { | ||
117 | sendEvent({ | ||
118 | type: 'custom', | ||
119 | event: 'sophie:reload-services', | ||
120 | }); | ||
53 | }); | 121 | }); |
54 | } | 122 | } |
55 | 123 | ||
56 | /** | 124 | /** |
57 | * Start or restart App when source files are changed. | ||
58 | * | ||
59 | * @param {import('vite').ViteDevServer} viteDevServer | 125 | * @param {import('vite').ViteDevServer} viteDevServer |
60 | * @returns {Promise<unknown>} | 126 | * @return {Promise<void>} |
61 | */ | 127 | */ |
62 | function setupMainPackageWatcher(viteDevServer) { | 128 | function setupMainPackageWatcher(viteDevServer) { |
63 | // Write a value to an environment variable to pass it to the main process. | 129 | // Write a value to an environment variable to pass it to the main process. |
@@ -67,122 +133,55 @@ function setupMainPackageWatcher(viteDevServer) { | |||
67 | const path = '/'; | 133 | const path = '/'; |
68 | process.env.VITE_DEV_SERVER_URL = `${protocol}//${host}:${port}${path}`; | 134 | process.env.VITE_DEV_SERVER_URL = `${protocol}//${host}:${port}${path}`; |
69 | 135 | ||
70 | const logger = createLogger( | ||
71 | LOG_LEVEL, | ||
72 | { | ||
73 | prefix: '[main]', | ||
74 | }, | ||
75 | ); | ||
76 | |||
77 | /** @type {import('child_process').ChildProcessWithoutNullStreams | null} */ | 136 | /** @type {import('child_process').ChildProcessWithoutNullStreams | null} */ |
78 | let spawnProcess = null; | 137 | let spawnProcess = null; |
79 | 138 | ||
80 | return getWatcher({ | 139 | return setupEsbuildWatcher( |
81 | name: 'reload-app-on-main-package-change', | 140 | 'main', |
82 | configFile: 'packages/main/vite.config.js', | 141 | [ |
83 | writeBundle() { | 142 | serviceSharedPackageSource, |
143 | sharedPackageSource | ||
144 | ], | ||
145 | () => { | ||
84 | if (spawnProcess !== null) { | 146 | if (spawnProcess !== null) { |
85 | spawnProcess.kill('SIGINT'); | 147 | spawnProcess.kill('SIGINT'); |
86 | spawnProcess = null; | 148 | spawnProcess = null; |
87 | } | 149 | } |
88 | 150 | ||
89 | spawnProcess = spawn(String(electronPath), ['.']); | 151 | spawnProcess = spawn(String(electronPath), ['.'], { |
90 | 152 | stdio: ['inherit', 'inherit', 'pipe'], | |
91 | spawnProcess.stdout.on('data', (data) => { | ||
92 | if (data.toString().trim() !== '') { | ||
93 | logger.warn(data.toString(), {timestamp: true}) | ||
94 | } | ||
95 | }); | 153 | }); |
96 | 154 | ||
97 | spawnProcess.stderr.on('data', (data) => { | 155 | spawnProcess.stderr.on('data', (data) => { |
98 | const trimmedData = data.toString().trim(); | 156 | const stderrString = data.toString('utf-8').trimRight(); |
99 | if (trimmedData === '') { | 157 | if (!stderrIgnorePatterns.some((r) => r.test(stderrString))) { |
100 | return; | 158 | console.error(stderrString); |
101 | } | 159 | } |
102 | const mayIgnore = stderrFilterPatterns.some((r) => r.test(data)); | ||
103 | if (mayIgnore) { | ||
104 | return; | ||
105 | } | ||
106 | logger.error(data, { timestamp: true }); | ||
107 | }); | ||
108 | }, | ||
109 | }); | ||
110 | } | ||
111 | |||
112 | /** | ||
113 | * Reload App when source files are changed. | ||
114 | * | ||
115 | * @param {import('vite').ViteDevServer} viteDevServer | ||
116 | * @returns {Promise<unknown>} | ||
117 | */ | ||
118 | function setupPreloadPackageWatcher(viteDevServer) { | ||
119 | return getWatcher({ | ||
120 | name: 'reload-page-on-preload-package-change', | ||
121 | configFile: 'packages/preload/vite.config.js', | ||
122 | writeBundle() { | ||
123 | viteDevServer.ws.send({ | ||
124 | type: 'full-reload', | ||
125 | }); | ||
126 | }, | ||
127 | }); | ||
128 | } | ||
129 | |||
130 | /** | ||
131 | * Reload services when source files are changed. | ||
132 | * | ||
133 | * @param {import('vite').ViteDevServer} viteDevServer | ||
134 | * @param {string} packageName The name of the package to watch. | ||
135 | * @returns {Promise<unknown>} | ||
136 | */ | ||
137 | function setupServicePreloadPackageWatcher(viteDevServer, packageName) { | ||
138 | return getWatcher({ | ||
139 | name: `reload-services-on-${packageName}-package-change`, | ||
140 | configFile: `packages/${packageName}/vite.config.js`, | ||
141 | writeBundle() { | ||
142 | console.log('wrote'); | ||
143 | viteDevServer.ws.send({ | ||
144 | type: 'custom', | ||
145 | event: 'sophie:reload-services', | ||
146 | }); | 160 | }); |
147 | }, | 161 | }, |
148 | }); | 162 | ); |
149 | } | ||
150 | |||
151 | /** | ||
152 | * Rebuild package when source files are changed. | ||
153 | * | ||
154 | * @param {string} packageName The name of the package to watch. | ||
155 | * @returns {Promise<unknown>} | ||
156 | */ | ||
157 | function setupSharedPackageWatcher(packageName) { | ||
158 | return getWatcher({ | ||
159 | name: `rebuild-package-on-${packageName}-package-change`, | ||
160 | configFile: `packages/${packageName}/vite.config.js`, | ||
161 | }); | ||
162 | } | 163 | } |
163 | 164 | ||
164 | /** | 165 | /** |
165 | * @returns {Promise<unknown>} | 166 | * @returns {Promise<void>} |
166 | */ | 167 | */ |
167 | async function setupDevEnvironment() { | 168 | async function setupDevEnvironment() { |
168 | const serviceSharedWatcher = setupSharedPackageWatcher('service-shared'); | 169 | /** @type {import('vite').ViteDevServer | null} */ |
169 | 170 | let viteDevServer = null; | |
170 | await setupSharedPackageWatcher('shared'); | 171 | /** @type {(event: import('vite').HMRPayload) => void} */ |
171 | 172 | const sendEvent = (event) => { | |
172 | const viteDevServer = await createServer({ | 173 | if (viteDevServer !== null) { |
173 | ...sharedConfig, | 174 | viteDevServer.ws.send(event); |
174 | configFile: 'packages/renderer/vite.config.js', | 175 | } |
175 | }); | 176 | }; |
176 | await viteDevServer.listen(); | ||
177 | |||
178 | await Promise.all([ | 177 | await Promise.all([ |
179 | setupPreloadPackageWatcher(viteDevServer), | 178 | setupEsbuildWatcher('shared'), |
180 | serviceSharedWatcher.then(() => Promise.all([ | 179 | setupPreloadPackageWatcher(sendEvent), |
181 | setupServicePreloadPackageWatcher(viteDevServer, 'service-inject'), | 180 | setupServicePackageWatcher('service-inject', sendEvent), |
182 | setupServicePreloadPackageWatcher(viteDevServer, 'service-preload'), | 181 | setupServicePackageWatcher('service-preload', sendEvent), |
183 | ])), | ||
184 | ]); | 182 | ]); |
185 | 183 | viteDevServer = await setupDevServer('renderer'); | |
184 | console.log('\ud83c\udf80 Sophie is starting up') | ||
186 | return setupMainPackageWatcher(viteDevServer); | 185 | return setupMainPackageWatcher(viteDevServer); |
187 | } | 186 | } |
188 | 187 | ||
@@ -1199,15 +1199,15 @@ __metadata: | |||
1199 | dependencies: | 1199 | dependencies: |
1200 | "@sophie/service-shared": "workspace:*" | 1200 | "@sophie/service-shared": "workspace:*" |
1201 | "@sophie/shared": "workspace:*" | 1201 | "@sophie/shared": "workspace:*" |
1202 | "@types/debug": ^4 | ||
1203 | "@types/electron-devtools-installer": ^2.2.1 | 1202 | "@types/electron-devtools-installer": ^2.2.1 |
1204 | "@types/lodash": ^4.14.178 | 1203 | "@types/lodash-es": ^4.17.5 |
1205 | "@types/ms": ^0.7.31 | 1204 | "@types/ms": ^0.7.31 |
1206 | "@types/node": ^17.0.5 | 1205 | "@types/node": ^17.0.5 |
1207 | electron: 16.0.5 | 1206 | electron: 16.0.5 |
1208 | electron-devtools-installer: ^3.2.0 | 1207 | electron-devtools-installer: ^3.2.0 |
1208 | esbuild: ^0.14.9 | ||
1209 | json5: ^2.2.0 | 1209 | json5: ^2.2.0 |
1210 | lodash: ^4.17.21 | 1210 | lodash-es: ^4.17.21 |
1211 | loglevel: ^1.8.0 | 1211 | loglevel: ^1.8.0 |
1212 | loglevel-plugin-prefix: ^0.8.4 | 1212 | loglevel-plugin-prefix: ^0.8.4 |
1213 | mobx: ^6.3.10 | 1213 | mobx: ^6.3.10 |
@@ -1215,7 +1215,6 @@ __metadata: | |||
1215 | ms: ^2.1.3 | 1215 | ms: ^2.1.3 |
1216 | rimraf: ^3.0.2 | 1216 | rimraf: ^3.0.2 |
1217 | typescript: ^4.5.4 | 1217 | typescript: ^4.5.4 |
1218 | vite: ^2.7.7 | ||
1219 | languageName: unknown | 1218 | languageName: unknown |
1220 | linkType: soft | 1219 | linkType: soft |
1221 | 1220 | ||
@@ -1234,7 +1233,6 @@ __metadata: | |||
1234 | rimraf: ^3.0.2 | 1233 | rimraf: ^3.0.2 |
1235 | ts-jest: ^27.1.2 | 1234 | ts-jest: ^27.1.2 |
1236 | typescript: ^4.5.4 | 1235 | typescript: ^4.5.4 |
1237 | vite: ^2.7.7 | ||
1238 | languageName: unknown | 1236 | languageName: unknown |
1239 | linkType: soft | 1237 | linkType: soft |
1240 | 1238 | ||
@@ -1254,7 +1252,7 @@ __metadata: | |||
1254 | "@vitejs/plugin-react": ^1.1.3 | 1252 | "@vitejs/plugin-react": ^1.1.3 |
1255 | lodash: ^4.17.21 | 1253 | lodash: ^4.17.21 |
1256 | mobx: ^6.3.10 | 1254 | mobx: ^6.3.10 |
1257 | mobx-react-lite: ^3.2.2 | 1255 | mobx-react-lite: ^3.2.3 |
1258 | mobx-state-tree: ^5.1.0 | 1256 | mobx-state-tree: ^5.1.0 |
1259 | mst-middlewares: ^5.1.0 | 1257 | mst-middlewares: ^5.1.0 |
1260 | react: ^17.0.2 | 1258 | react: ^17.0.2 |
@@ -1262,7 +1260,7 @@ __metadata: | |||
1262 | remotedev: ^0.2.9 | 1260 | remotedev: ^0.2.9 |
1263 | rimraf: ^3.0.2 | 1261 | rimraf: ^3.0.2 |
1264 | typescript: ^4.5.4 | 1262 | typescript: ^4.5.4 |
1265 | vite: ^2.7.7 | 1263 | vite: ^2.7.9 |
1266 | languageName: unknown | 1264 | languageName: unknown |
1267 | linkType: soft | 1265 | linkType: soft |
1268 | 1266 | ||
@@ -1273,7 +1271,6 @@ __metadata: | |||
1273 | "@sophie/service-shared": "workspace:*" | 1271 | "@sophie/service-shared": "workspace:*" |
1274 | rimraf: ^3.0.2 | 1272 | rimraf: ^3.0.2 |
1275 | typescript: ^4.5.4 | 1273 | typescript: ^4.5.4 |
1276 | vite: ^2.7.7 | ||
1277 | languageName: unknown | 1274 | languageName: unknown |
1278 | linkType: soft | 1275 | linkType: soft |
1279 | 1276 | ||
@@ -1285,7 +1282,6 @@ __metadata: | |||
1285 | electron: 16.0.5 | 1282 | electron: 16.0.5 |
1286 | rimraf: ^3.0.2 | 1283 | rimraf: ^3.0.2 |
1287 | typescript: ^4.5.4 | 1284 | typescript: ^4.5.4 |
1288 | vite: ^2.7.7 | ||
1289 | languageName: unknown | 1285 | languageName: unknown |
1290 | linkType: soft | 1286 | linkType: soft |
1291 | 1287 | ||
@@ -1295,7 +1291,6 @@ __metadata: | |||
1295 | dependencies: | 1291 | dependencies: |
1296 | rimraf: ^3.0.2 | 1292 | rimraf: ^3.0.2 |
1297 | typescript: ^4.5.4 | 1293 | typescript: ^4.5.4 |
1298 | vite: ^2.7.7 | ||
1299 | zod: ^3.11.6 | 1294 | zod: ^3.11.6 |
1300 | languageName: unknown | 1295 | languageName: unknown |
1301 | linkType: soft | 1296 | linkType: soft |
@@ -1308,7 +1303,6 @@ __metadata: | |||
1308 | mobx-state-tree: ^5.1.0 | 1303 | mobx-state-tree: ^5.1.0 |
1309 | rimraf: ^3.0.2 | 1304 | rimraf: ^3.0.2 |
1310 | typescript: ^4.5.4 | 1305 | typescript: ^4.5.4 |
1311 | vite: ^2.7.7 | ||
1312 | zod: ^3.11.6 | 1306 | zod: ^3.11.6 |
1313 | languageName: unknown | 1307 | languageName: unknown |
1314 | linkType: soft | 1308 | linkType: soft |
@@ -1377,7 +1371,7 @@ __metadata: | |||
1377 | languageName: node | 1371 | languageName: node |
1378 | linkType: hard | 1372 | linkType: hard |
1379 | 1373 | ||
1380 | "@types/debug@npm:^4, @types/debug@npm:^4.1.6": | 1374 | "@types/debug@npm:^4.1.6": |
1381 | version: 4.1.7 | 1375 | version: 4.1.7 |
1382 | resolution: "@types/debug@npm:4.1.7" | 1376 | resolution: "@types/debug@npm:4.1.7" |
1383 | dependencies: | 1377 | dependencies: |
@@ -1465,7 +1459,16 @@ __metadata: | |||
1465 | languageName: node | 1459 | languageName: node |
1466 | linkType: hard | 1460 | linkType: hard |
1467 | 1461 | ||
1468 | "@types/lodash@npm:^4.14.178": | 1462 | "@types/lodash-es@npm:^4.17.5": |
1463 | version: 4.17.5 | ||
1464 | resolution: "@types/lodash-es@npm:4.17.5" | ||
1465 | dependencies: | ||
1466 | "@types/lodash": "*" | ||
1467 | checksum: 8910f646310aa008bb45071619fe85abf917bbc2c7cc0af883a971de261723247695a58dd966bfa9defd946cef79811d8b075eb6f0af12343080ab0ae6614e12 | ||
1468 | languageName: node | ||
1469 | linkType: hard | ||
1470 | |||
1471 | "@types/lodash@npm:*, @types/lodash@npm:^4.14.178": | ||
1469 | version: 4.14.178 | 1472 | version: 4.14.178 |
1470 | resolution: "@types/lodash@npm:4.14.178" | 1473 | resolution: "@types/lodash@npm:4.14.178" |
1471 | checksum: a69a04a60bfc5257c3130a554b4efa0c383f0141b7b3db8ab7cf07ad2a46ea085fce66d0242da41da7e5647b133d5dfb2c15add9cbed8d7fef955e4a1e5b3128 | 1474 | checksum: a69a04a60bfc5257c3130a554b4efa0c383f0141b7b3db8ab7cf07ad2a46ea085fce66d0242da41da7e5647b133d5dfb2c15add9cbed8d7fef955e4a1e5b3128 |
@@ -1806,7 +1809,7 @@ __metadata: | |||
1806 | languageName: node | 1809 | languageName: node |
1807 | linkType: hard | 1810 | linkType: hard |
1808 | 1811 | ||
1809 | "anymatch@npm:^3.0.3": | 1812 | "anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": |
1810 | version: 3.1.2 | 1813 | version: 3.1.2 |
1811 | resolution: "anymatch@npm:3.1.2" | 1814 | resolution: "anymatch@npm:3.1.2" |
1812 | dependencies: | 1815 | dependencies: |
@@ -2065,6 +2068,13 @@ __metadata: | |||
2065 | languageName: node | 2068 | languageName: node |
2066 | linkType: hard | 2069 | linkType: hard |
2067 | 2070 | ||
2071 | "binary-extensions@npm:^2.0.0": | ||
2072 | version: 2.2.0 | ||
2073 | resolution: "binary-extensions@npm:2.2.0" | ||
2074 | checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 | ||
2075 | languageName: node | ||
2076 | linkType: hard | ||
2077 | |||
2068 | "bluebird-lst@npm:^1.0.9": | 2078 | "bluebird-lst@npm:^1.0.9": |
2069 | version: 1.0.9 | 2079 | version: 1.0.9 |
2070 | resolution: "bluebird-lst@npm:1.0.9" | 2080 | resolution: "bluebird-lst@npm:1.0.9" |
@@ -2114,7 +2124,7 @@ __metadata: | |||
2114 | languageName: node | 2124 | languageName: node |
2115 | linkType: hard | 2125 | linkType: hard |
2116 | 2126 | ||
2117 | "braces@npm:^3.0.1": | 2127 | "braces@npm:^3.0.1, braces@npm:~3.0.2": |
2118 | version: 3.0.2 | 2128 | version: 3.0.2 |
2119 | resolution: "braces@npm:3.0.2" | 2129 | resolution: "braces@npm:3.0.2" |
2120 | dependencies: | 2130 | dependencies: |
@@ -2350,6 +2360,25 @@ __metadata: | |||
2350 | languageName: node | 2360 | languageName: node |
2351 | linkType: hard | 2361 | linkType: hard |
2352 | 2362 | ||
2363 | "chokidar@npm:^3.5.2": | ||
2364 | version: 3.5.2 | ||
2365 | resolution: "chokidar@npm:3.5.2" | ||
2366 | dependencies: | ||
2367 | anymatch: ~3.1.2 | ||
2368 | braces: ~3.0.2 | ||
2369 | fsevents: ~2.3.2 | ||
2370 | glob-parent: ~5.1.2 | ||
2371 | is-binary-path: ~2.1.0 | ||
2372 | is-glob: ~4.0.1 | ||
2373 | normalize-path: ~3.0.0 | ||
2374 | readdirp: ~3.6.0 | ||
2375 | dependenciesMeta: | ||
2376 | fsevents: | ||
2377 | optional: true | ||
2378 | checksum: d1fda32fcd67d9f6170a8468ad2630a3c6194949c9db3f6a91b16478c328b2800f433fb5d2592511b6cb145a47c013ea1cce60b432b1a001ae3ee978a8bffc2d | ||
2379 | languageName: node | ||
2380 | linkType: hard | ||
2381 | |||
2353 | "chownr@npm:^2.0.0": | 2382 | "chownr@npm:^2.0.0": |
2354 | version: 2.0.0 | 2383 | version: 2.0.0 |
2355 | resolution: "chownr@npm:2.0.0" | 2384 | resolution: "chownr@npm:2.0.0" |
@@ -3151,6 +3180,13 @@ __metadata: | |||
3151 | languageName: node | 3180 | languageName: node |
3152 | linkType: hard | 3181 | linkType: hard |
3153 | 3182 | ||
3183 | "esbuild-android-arm64@npm:0.14.9": | ||
3184 | version: 0.14.9 | ||
3185 | resolution: "esbuild-android-arm64@npm:0.14.9" | ||
3186 | conditions: os=android & cpu=arm64 | ||
3187 | languageName: node | ||
3188 | linkType: hard | ||
3189 | |||
3154 | "esbuild-darwin-64@npm:0.13.15": | 3190 | "esbuild-darwin-64@npm:0.13.15": |
3155 | version: 0.13.15 | 3191 | version: 0.13.15 |
3156 | resolution: "esbuild-darwin-64@npm:0.13.15" | 3192 | resolution: "esbuild-darwin-64@npm:0.13.15" |
@@ -3158,6 +3194,13 @@ __metadata: | |||
3158 | languageName: node | 3194 | languageName: node |
3159 | linkType: hard | 3195 | linkType: hard |
3160 | 3196 | ||
3197 | "esbuild-darwin-64@npm:0.14.9": | ||
3198 | version: 0.14.9 | ||
3199 | resolution: "esbuild-darwin-64@npm:0.14.9" | ||
3200 | conditions: os=darwin & cpu=x64 | ||
3201 | languageName: node | ||
3202 | linkType: hard | ||
3203 | |||
3161 | "esbuild-darwin-arm64@npm:0.13.15": | 3204 | "esbuild-darwin-arm64@npm:0.13.15": |
3162 | version: 0.13.15 | 3205 | version: 0.13.15 |
3163 | resolution: "esbuild-darwin-arm64@npm:0.13.15" | 3206 | resolution: "esbuild-darwin-arm64@npm:0.13.15" |
@@ -3165,6 +3208,13 @@ __metadata: | |||
3165 | languageName: node | 3208 | languageName: node |
3166 | linkType: hard | 3209 | linkType: hard |
3167 | 3210 | ||
3211 | "esbuild-darwin-arm64@npm:0.14.9": | ||
3212 | version: 0.14.9 | ||
3213 | resolution: "esbuild-darwin-arm64@npm:0.14.9" | ||
3214 | conditions: os=darwin & cpu=arm64 | ||
3215 | languageName: node | ||
3216 | linkType: hard | ||
3217 | |||
3168 | "esbuild-freebsd-64@npm:0.13.15": | 3218 | "esbuild-freebsd-64@npm:0.13.15": |
3169 | version: 0.13.15 | 3219 | version: 0.13.15 |
3170 | resolution: "esbuild-freebsd-64@npm:0.13.15" | 3220 | resolution: "esbuild-freebsd-64@npm:0.13.15" |
@@ -3172,6 +3222,13 @@ __metadata: | |||
3172 | languageName: node | 3222 | languageName: node |
3173 | linkType: hard | 3223 | linkType: hard |
3174 | 3224 | ||
3225 | "esbuild-freebsd-64@npm:0.14.9": | ||
3226 | version: 0.14.9 | ||
3227 | resolution: "esbuild-freebsd-64@npm:0.14.9" | ||
3228 | conditions: os=freebsd & cpu=x64 | ||
3229 | languageName: node | ||
3230 | linkType: hard | ||
3231 | |||
3175 | "esbuild-freebsd-arm64@npm:0.13.15": | 3232 | "esbuild-freebsd-arm64@npm:0.13.15": |
3176 | version: 0.13.15 | 3233 | version: 0.13.15 |
3177 | resolution: "esbuild-freebsd-arm64@npm:0.13.15" | 3234 | resolution: "esbuild-freebsd-arm64@npm:0.13.15" |
@@ -3179,6 +3236,13 @@ __metadata: | |||
3179 | languageName: node | 3236 | languageName: node |
3180 | linkType: hard | 3237 | linkType: hard |
3181 | 3238 | ||
3239 | "esbuild-freebsd-arm64@npm:0.14.9": | ||
3240 | version: 0.14.9 | ||
3241 | resolution: "esbuild-freebsd-arm64@npm:0.14.9" | ||
3242 | conditions: os=freebsd & cpu=arm64 | ||
3243 | languageName: node | ||
3244 | linkType: hard | ||
3245 | |||
3182 | "esbuild-linux-32@npm:0.13.15": | 3246 | "esbuild-linux-32@npm:0.13.15": |
3183 | version: 0.13.15 | 3247 | version: 0.13.15 |
3184 | resolution: "esbuild-linux-32@npm:0.13.15" | 3248 | resolution: "esbuild-linux-32@npm:0.13.15" |
@@ -3186,6 +3250,13 @@ __metadata: | |||
3186 | languageName: node | 3250 | languageName: node |
3187 | linkType: hard | 3251 | linkType: hard |
3188 | 3252 | ||
3253 | "esbuild-linux-32@npm:0.14.9": | ||
3254 | version: 0.14.9 | ||
3255 | resolution: "esbuild-linux-32@npm:0.14.9" | ||
3256 | conditions: os=linux & cpu=ia32 | ||
3257 | languageName: node | ||
3258 | linkType: hard | ||
3259 | |||
3189 | "esbuild-linux-64@npm:0.13.15": | 3260 | "esbuild-linux-64@npm:0.13.15": |
3190 | version: 0.13.15 | 3261 | version: 0.13.15 |
3191 | resolution: "esbuild-linux-64@npm:0.13.15" | 3262 | resolution: "esbuild-linux-64@npm:0.13.15" |
@@ -3193,6 +3264,13 @@ __metadata: | |||
3193 | languageName: node | 3264 | languageName: node |
3194 | linkType: hard | 3265 | linkType: hard |
3195 | 3266 | ||
3267 | "esbuild-linux-64@npm:0.14.9": | ||
3268 | version: 0.14.9 | ||
3269 | resolution: "esbuild-linux-64@npm:0.14.9" | ||
3270 | conditions: os=linux & cpu=x64 | ||
3271 | languageName: node | ||
3272 | linkType: hard | ||
3273 | |||
3196 | "esbuild-linux-arm64@npm:0.13.15": | 3274 | "esbuild-linux-arm64@npm:0.13.15": |
3197 | version: 0.13.15 | 3275 | version: 0.13.15 |
3198 | resolution: "esbuild-linux-arm64@npm:0.13.15" | 3276 | resolution: "esbuild-linux-arm64@npm:0.13.15" |
@@ -3200,6 +3278,13 @@ __metadata: | |||
3200 | languageName: node | 3278 | languageName: node |
3201 | linkType: hard | 3279 | linkType: hard |
3202 | 3280 | ||
3281 | "esbuild-linux-arm64@npm:0.14.9": | ||
3282 | version: 0.14.9 | ||
3283 | resolution: "esbuild-linux-arm64@npm:0.14.9" | ||
3284 | conditions: os=linux & cpu=arm64 | ||
3285 | languageName: node | ||
3286 | linkType: hard | ||
3287 | |||
3203 | "esbuild-linux-arm@npm:0.13.15": | 3288 | "esbuild-linux-arm@npm:0.13.15": |
3204 | version: 0.13.15 | 3289 | version: 0.13.15 |
3205 | resolution: "esbuild-linux-arm@npm:0.13.15" | 3290 | resolution: "esbuild-linux-arm@npm:0.13.15" |
@@ -3207,6 +3292,13 @@ __metadata: | |||
3207 | languageName: node | 3292 | languageName: node |
3208 | linkType: hard | 3293 | linkType: hard |
3209 | 3294 | ||
3295 | "esbuild-linux-arm@npm:0.14.9": | ||
3296 | version: 0.14.9 | ||
3297 | resolution: "esbuild-linux-arm@npm:0.14.9" | ||
3298 | conditions: os=linux & cpu=arm | ||
3299 | languageName: node | ||
3300 | linkType: hard | ||
3301 | |||
3210 | "esbuild-linux-mips64le@npm:0.13.15": | 3302 | "esbuild-linux-mips64le@npm:0.13.15": |
3211 | version: 0.13.15 | 3303 | version: 0.13.15 |
3212 | resolution: "esbuild-linux-mips64le@npm:0.13.15" | 3304 | resolution: "esbuild-linux-mips64le@npm:0.13.15" |
@@ -3214,6 +3306,13 @@ __metadata: | |||
3214 | languageName: node | 3306 | languageName: node |
3215 | linkType: hard | 3307 | linkType: hard |
3216 | 3308 | ||
3309 | "esbuild-linux-mips64le@npm:0.14.9": | ||
3310 | version: 0.14.9 | ||
3311 | resolution: "esbuild-linux-mips64le@npm:0.14.9" | ||
3312 | conditions: os=linux & cpu=mips64el | ||
3313 | languageName: node | ||
3314 | linkType: hard | ||
3315 | |||
3217 | "esbuild-linux-ppc64le@npm:0.13.15": | 3316 | "esbuild-linux-ppc64le@npm:0.13.15": |
3218 | version: 0.13.15 | 3317 | version: 0.13.15 |
3219 | resolution: "esbuild-linux-ppc64le@npm:0.13.15" | 3318 | resolution: "esbuild-linux-ppc64le@npm:0.13.15" |
@@ -3221,6 +3320,20 @@ __metadata: | |||
3221 | languageName: node | 3320 | languageName: node |
3222 | linkType: hard | 3321 | linkType: hard |
3223 | 3322 | ||
3323 | "esbuild-linux-ppc64le@npm:0.14.9": | ||
3324 | version: 0.14.9 | ||
3325 | resolution: "esbuild-linux-ppc64le@npm:0.14.9" | ||
3326 | conditions: os=linux & cpu=ppc64 | ||
3327 | languageName: node | ||
3328 | linkType: hard | ||
3329 | |||
3330 | "esbuild-linux-s390x@npm:0.14.9": | ||
3331 | version: 0.14.9 | ||
3332 | resolution: "esbuild-linux-s390x@npm:0.14.9" | ||
3333 | conditions: os=linux & cpu=s390x | ||
3334 | languageName: node | ||
3335 | linkType: hard | ||
3336 | |||
3224 | "esbuild-netbsd-64@npm:0.13.15": | 3337 | "esbuild-netbsd-64@npm:0.13.15": |
3225 | version: 0.13.15 | 3338 | version: 0.13.15 |
3226 | resolution: "esbuild-netbsd-64@npm:0.13.15" | 3339 | resolution: "esbuild-netbsd-64@npm:0.13.15" |
@@ -3228,6 +3341,13 @@ __metadata: | |||
3228 | languageName: node | 3341 | languageName: node |
3229 | linkType: hard | 3342 | linkType: hard |
3230 | 3343 | ||
3344 | "esbuild-netbsd-64@npm:0.14.9": | ||
3345 | version: 0.14.9 | ||
3346 | resolution: "esbuild-netbsd-64@npm:0.14.9" | ||
3347 | conditions: os=netbsd & cpu=x64 | ||
3348 | languageName: node | ||
3349 | linkType: hard | ||
3350 | |||
3231 | "esbuild-openbsd-64@npm:0.13.15": | 3351 | "esbuild-openbsd-64@npm:0.13.15": |
3232 | version: 0.13.15 | 3352 | version: 0.13.15 |
3233 | resolution: "esbuild-openbsd-64@npm:0.13.15" | 3353 | resolution: "esbuild-openbsd-64@npm:0.13.15" |
@@ -3235,6 +3355,13 @@ __metadata: | |||
3235 | languageName: node | 3355 | languageName: node |
3236 | linkType: hard | 3356 | linkType: hard |
3237 | 3357 | ||
3358 | "esbuild-openbsd-64@npm:0.14.9": | ||
3359 | version: 0.14.9 | ||
3360 | resolution: "esbuild-openbsd-64@npm:0.14.9" | ||
3361 | conditions: os=openbsd & cpu=x64 | ||
3362 | languageName: node | ||
3363 | linkType: hard | ||
3364 | |||
3238 | "esbuild-sunos-64@npm:0.13.15": | 3365 | "esbuild-sunos-64@npm:0.13.15": |
3239 | version: 0.13.15 | 3366 | version: 0.13.15 |
3240 | resolution: "esbuild-sunos-64@npm:0.13.15" | 3367 | resolution: "esbuild-sunos-64@npm:0.13.15" |
@@ -3242,6 +3369,13 @@ __metadata: | |||
3242 | languageName: node | 3369 | languageName: node |
3243 | linkType: hard | 3370 | linkType: hard |
3244 | 3371 | ||
3372 | "esbuild-sunos-64@npm:0.14.9": | ||
3373 | version: 0.14.9 | ||
3374 | resolution: "esbuild-sunos-64@npm:0.14.9" | ||
3375 | conditions: os=sunos & cpu=x64 | ||
3376 | languageName: node | ||
3377 | linkType: hard | ||
3378 | |||
3245 | "esbuild-windows-32@npm:0.13.15": | 3379 | "esbuild-windows-32@npm:0.13.15": |
3246 | version: 0.13.15 | 3380 | version: 0.13.15 |
3247 | resolution: "esbuild-windows-32@npm:0.13.15" | 3381 | resolution: "esbuild-windows-32@npm:0.13.15" |
@@ -3249,6 +3383,13 @@ __metadata: | |||
3249 | languageName: node | 3383 | languageName: node |
3250 | linkType: hard | 3384 | linkType: hard |
3251 | 3385 | ||
3386 | "esbuild-windows-32@npm:0.14.9": | ||
3387 | version: 0.14.9 | ||
3388 | resolution: "esbuild-windows-32@npm:0.14.9" | ||
3389 | conditions: os=win32 & cpu=ia32 | ||
3390 | languageName: node | ||
3391 | linkType: hard | ||
3392 | |||
3252 | "esbuild-windows-64@npm:0.13.15": | 3393 | "esbuild-windows-64@npm:0.13.15": |
3253 | version: 0.13.15 | 3394 | version: 0.13.15 |
3254 | resolution: "esbuild-windows-64@npm:0.13.15" | 3395 | resolution: "esbuild-windows-64@npm:0.13.15" |
@@ -3256,6 +3397,13 @@ __metadata: | |||
3256 | languageName: node | 3397 | languageName: node |
3257 | linkType: hard | 3398 | linkType: hard |
3258 | 3399 | ||
3400 | "esbuild-windows-64@npm:0.14.9": | ||
3401 | version: 0.14.9 | ||
3402 | resolution: "esbuild-windows-64@npm:0.14.9" | ||
3403 | conditions: os=win32 & cpu=x64 | ||
3404 | languageName: node | ||
3405 | linkType: hard | ||
3406 | |||
3259 | "esbuild-windows-arm64@npm:0.13.15": | 3407 | "esbuild-windows-arm64@npm:0.13.15": |
3260 | version: 0.13.15 | 3408 | version: 0.13.15 |
3261 | resolution: "esbuild-windows-arm64@npm:0.13.15" | 3409 | resolution: "esbuild-windows-arm64@npm:0.13.15" |
@@ -3263,6 +3411,13 @@ __metadata: | |||
3263 | languageName: node | 3411 | languageName: node |
3264 | linkType: hard | 3412 | linkType: hard |
3265 | 3413 | ||
3414 | "esbuild-windows-arm64@npm:0.14.9": | ||
3415 | version: 0.14.9 | ||
3416 | resolution: "esbuild-windows-arm64@npm:0.14.9" | ||
3417 | conditions: os=win32 & cpu=arm64 | ||
3418 | languageName: node | ||
3419 | linkType: hard | ||
3420 | |||
3266 | "esbuild@npm:^0.13.12": | 3421 | "esbuild@npm:^0.13.12": |
3267 | version: 0.13.15 | 3422 | version: 0.13.15 |
3268 | resolution: "esbuild@npm:0.13.15" | 3423 | resolution: "esbuild@npm:0.13.15" |
@@ -3325,6 +3480,71 @@ __metadata: | |||
3325 | languageName: node | 3480 | languageName: node |
3326 | linkType: hard | 3481 | linkType: hard |
3327 | 3482 | ||
3483 | "esbuild@npm:^0.14.9": | ||
3484 | version: 0.14.9 | ||
3485 | resolution: "esbuild@npm:0.14.9" | ||
3486 | dependencies: | ||
3487 | esbuild-android-arm64: 0.14.9 | ||
3488 | esbuild-darwin-64: 0.14.9 | ||
3489 | esbuild-darwin-arm64: 0.14.9 | ||
3490 | esbuild-freebsd-64: 0.14.9 | ||
3491 | esbuild-freebsd-arm64: 0.14.9 | ||
3492 | esbuild-linux-32: 0.14.9 | ||
3493 | esbuild-linux-64: 0.14.9 | ||
3494 | esbuild-linux-arm: 0.14.9 | ||
3495 | esbuild-linux-arm64: 0.14.9 | ||
3496 | esbuild-linux-mips64le: 0.14.9 | ||
3497 | esbuild-linux-ppc64le: 0.14.9 | ||
3498 | esbuild-linux-s390x: 0.14.9 | ||
3499 | esbuild-netbsd-64: 0.14.9 | ||
3500 | esbuild-openbsd-64: 0.14.9 | ||
3501 | esbuild-sunos-64: 0.14.9 | ||
3502 | esbuild-windows-32: 0.14.9 | ||
3503 | esbuild-windows-64: 0.14.9 | ||
3504 | esbuild-windows-arm64: 0.14.9 | ||
3505 | dependenciesMeta: | ||
3506 | esbuild-android-arm64: | ||
3507 | optional: true | ||
3508 | esbuild-darwin-64: | ||
3509 | optional: true | ||
3510 | esbuild-darwin-arm64: | ||
3511 | optional: true | ||
3512 | esbuild-freebsd-64: | ||
3513 | optional: true | ||
3514 | esbuild-freebsd-arm64: | ||
3515 | optional: true | ||
3516 | esbuild-linux-32: | ||
3517 | optional: true | ||
3518 | esbuild-linux-64: | ||
3519 | optional: true | ||
3520 | esbuild-linux-arm: | ||
3521 | optional: true | ||
3522 | esbuild-linux-arm64: | ||
3523 | optional: true | ||
3524 | esbuild-linux-mips64le: | ||
3525 | optional: true | ||
3526 | esbuild-linux-ppc64le: | ||
3527 | optional: true | ||
3528 | esbuild-linux-s390x: | ||
3529 | optional: true | ||
3530 | esbuild-netbsd-64: | ||
3531 | optional: true | ||
3532 | esbuild-openbsd-64: | ||
3533 | optional: true | ||
3534 | esbuild-sunos-64: | ||
3535 | optional: true | ||
3536 | esbuild-windows-32: | ||
3537 | optional: true | ||
3538 | esbuild-windows-64: | ||
3539 | optional: true | ||
3540 | esbuild-windows-arm64: | ||
3541 | optional: true | ||
3542 | bin: | ||
3543 | esbuild: bin/esbuild | ||
3544 | checksum: 43664678c2ce281ad0ab4896bca65f461cd617d7b807b0c737540d3c46928c305f6c91c211e2866aac4aade48e61bd19875e3571c0d3e2cf49b2cdbf4c241d97 | ||
3545 | languageName: node | ||
3546 | linkType: hard | ||
3547 | |||
3328 | "escalade@npm:^3.1.1": | 3548 | "escalade@npm:^3.1.1": |
3329 | version: 3.1.1 | 3549 | version: 3.1.1 |
3330 | resolution: "escalade@npm:3.1.1" | 3550 | resolution: "escalade@npm:3.1.1" |
@@ -3858,6 +4078,15 @@ __metadata: | |||
3858 | languageName: node | 4078 | languageName: node |
3859 | linkType: hard | 4079 | linkType: hard |
3860 | 4080 | ||
4081 | "glob-parent@npm:~5.1.2": | ||
4082 | version: 5.1.2 | ||
4083 | resolution: "glob-parent@npm:5.1.2" | ||
4084 | dependencies: | ||
4085 | is-glob: ^4.0.1 | ||
4086 | checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e | ||
4087 | languageName: node | ||
4088 | linkType: hard | ||
4089 | |||
3861 | "glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": | 4090 | "glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": |
3862 | version: 7.2.0 | 4091 | version: 7.2.0 |
3863 | resolution: "glob@npm:7.2.0" | 4092 | resolution: "glob@npm:7.2.0" |
@@ -4244,6 +4473,15 @@ __metadata: | |||
4244 | languageName: node | 4473 | languageName: node |
4245 | linkType: hard | 4474 | linkType: hard |
4246 | 4475 | ||
4476 | "is-binary-path@npm:~2.1.0": | ||
4477 | version: 2.1.0 | ||
4478 | resolution: "is-binary-path@npm:2.1.0" | ||
4479 | dependencies: | ||
4480 | binary-extensions: ^2.0.0 | ||
4481 | checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c | ||
4482 | languageName: node | ||
4483 | linkType: hard | ||
4484 | |||
4247 | "is-ci@npm:^2.0.0": | 4485 | "is-ci@npm:^2.0.0": |
4248 | version: 2.0.0 | 4486 | version: 2.0.0 |
4249 | resolution: "is-ci@npm:2.0.0" | 4487 | resolution: "is-ci@npm:2.0.0" |
@@ -4296,7 +4534,7 @@ __metadata: | |||
4296 | languageName: node | 4534 | languageName: node |
4297 | linkType: hard | 4535 | linkType: hard |
4298 | 4536 | ||
4299 | "is-glob@npm:^4.0.0, is-glob@npm:^4.0.3": | 4537 | "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": |
4300 | version: 4.0.3 | 4538 | version: 4.0.3 |
4301 | resolution: "is-glob@npm:4.0.3" | 4539 | resolution: "is-glob@npm:4.0.3" |
4302 | dependencies: | 4540 | dependencies: |
@@ -5281,6 +5519,13 @@ __metadata: | |||
5281 | languageName: node | 5519 | languageName: node |
5282 | linkType: hard | 5520 | linkType: hard |
5283 | 5521 | ||
5522 | "lodash-es@npm:^4.17.21": | ||
5523 | version: 4.17.21 | ||
5524 | resolution: "lodash-es@npm:4.17.21" | ||
5525 | checksum: 05cbffad6e2adbb331a4e16fbd826e7faee403a1a04873b82b42c0f22090f280839f85b95393f487c1303c8a3d2a010048bf06151a6cbe03eee4d388fb0a12d2 | ||
5526 | languageName: node | ||
5527 | linkType: hard | ||
5528 | |||
5284 | "lodash.memoize@npm:4.x": | 5529 | "lodash.memoize@npm:4.x": |
5285 | version: 4.1.2 | 5530 | version: 4.1.2 |
5286 | resolution: "lodash.memoize@npm:4.1.2" | 5531 | resolution: "lodash.memoize@npm:4.1.2" |
@@ -5570,9 +5815,9 @@ __metadata: | |||
5570 | languageName: node | 5815 | languageName: node |
5571 | linkType: hard | 5816 | linkType: hard |
5572 | 5817 | ||
5573 | "mobx-react-lite@npm:^3.2.2": | 5818 | "mobx-react-lite@npm:^3.2.3": |
5574 | version: 3.2.2 | 5819 | version: 3.2.3 |
5575 | resolution: "mobx-react-lite@npm:3.2.2" | 5820 | resolution: "mobx-react-lite@npm:3.2.3" |
5576 | peerDependencies: | 5821 | peerDependencies: |
5577 | mobx: ^6.1.0 | 5822 | mobx: ^6.1.0 |
5578 | react: ^16.8.0 || ^17 | 5823 | react: ^16.8.0 || ^17 |
@@ -5581,7 +5826,7 @@ __metadata: | |||
5581 | optional: true | 5826 | optional: true |
5582 | react-native: | 5827 | react-native: |
5583 | optional: true | 5828 | optional: true |
5584 | checksum: f64957cb71e45f8bbce0429b90f15fef6e0ad06a38e1522cf887900a2869e157beb3438bf6c2621cfc6907ad891428726686d7b544988995745e9a9c8255ff95 | 5829 | checksum: d645e3c76f29ab22e4125f372531e00a776bd3833d3aab5cab2631e0eb1a90aa6cd36aa78ef1a27b53489eac89335bbdbb3b2c4f0c15248e8d306cd15b555931 |
5585 | languageName: node | 5830 | languageName: node |
5586 | linkType: hard | 5831 | linkType: hard |
5587 | 5832 | ||
@@ -5708,7 +5953,7 @@ __metadata: | |||
5708 | languageName: node | 5953 | languageName: node |
5709 | linkType: hard | 5954 | linkType: hard |
5710 | 5955 | ||
5711 | "normalize-path@npm:^3.0.0": | 5956 | "normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": |
5712 | version: 3.0.0 | 5957 | version: 3.0.0 |
5713 | resolution: "normalize-path@npm:3.0.0" | 5958 | resolution: "normalize-path@npm:3.0.0" |
5714 | checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 | 5959 | checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 |
@@ -5957,7 +6202,7 @@ __metadata: | |||
5957 | languageName: node | 6202 | languageName: node |
5958 | linkType: hard | 6203 | linkType: hard |
5959 | 6204 | ||
5960 | "picomatch@npm:^2.0.4, picomatch@npm:^2.2.2, picomatch@npm:^2.2.3": | 6205 | "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.2.3": |
5961 | version: 2.3.0 | 6206 | version: 2.3.0 |
5962 | resolution: "picomatch@npm:2.3.0" | 6207 | resolution: "picomatch@npm:2.3.0" |
5963 | checksum: 16818720ea7c5872b6af110760dee856c8e4cd79aed1c7a006d076b1cc09eff3ae41ca5019966694c33fbd2e1cc6ea617ab10e4adac6df06556168f13be3fca2 | 6208 | checksum: 16818720ea7c5872b6af110760dee856c8e4cd79aed1c7a006d076b1cc09eff3ae41ca5019966694c33fbd2e1cc6ea617ab10e4adac6df06556168f13be3fca2 |
@@ -6259,6 +6504,15 @@ __metadata: | |||
6259 | languageName: node | 6504 | languageName: node |
6260 | linkType: hard | 6505 | linkType: hard |
6261 | 6506 | ||
6507 | "readdirp@npm:~3.6.0": | ||
6508 | version: 3.6.0 | ||
6509 | resolution: "readdirp@npm:3.6.0" | ||
6510 | dependencies: | ||
6511 | picomatch: ^2.2.1 | ||
6512 | checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 | ||
6513 | languageName: node | ||
6514 | linkType: hard | ||
6515 | |||
6262 | "regenerator-runtime@npm:^0.13.4": | 6516 | "regenerator-runtime@npm:^0.13.4": |
6263 | version: 0.13.9 | 6517 | version: 0.13.9 |
6264 | resolution: "regenerator-runtime@npm:0.13.9" | 6518 | resolution: "regenerator-runtime@npm:0.13.9" |
@@ -6660,16 +6914,19 @@ __metadata: | |||
6660 | dependencies: | 6914 | dependencies: |
6661 | "@electron/fuses": ^1.5.0 | 6915 | "@electron/fuses": ^1.5.0 |
6662 | "@types/jest": ^27.0.3 | 6916 | "@types/jest": ^27.0.3 |
6917 | "@vitejs/plugin-react": ^1.1.3 | ||
6918 | chokidar: ^3.5.2 | ||
6663 | cross-env: ^7.0.3 | 6919 | cross-env: ^7.0.3 |
6664 | electron: 16.0.5 | 6920 | electron: 16.0.5 |
6665 | electron-builder: ^22.14.11 | 6921 | electron-builder: ^22.14.11 |
6922 | esbuild: ^0.14.9 | ||
6666 | eslint: ^8.5.0 | 6923 | eslint: ^8.5.0 |
6667 | jest: ^27.4.5 | 6924 | jest: ^27.4.5 |
6668 | rimraf: ^3.0.2 | 6925 | rimraf: ^3.0.2 |
6669 | rollup: ^2.62.0 | 6926 | rollup: ^2.62.0 |
6670 | ts-jest: ^27.1.2 | 6927 | ts-jest: ^27.1.2 |
6671 | typescript: ^4.5.4 | 6928 | typescript: ^4.5.4 |
6672 | vite: ^2.7.7 | 6929 | vite: ^2.7.9 |
6673 | languageName: unknown | 6930 | languageName: unknown |
6674 | linkType: soft | 6931 | linkType: soft |
6675 | 6932 | ||
@@ -7305,9 +7562,9 @@ __metadata: | |||
7305 | languageName: node | 7562 | languageName: node |
7306 | linkType: hard | 7563 | linkType: hard |
7307 | 7564 | ||
7308 | "vite@npm:^2.7.7": | 7565 | "vite@npm:^2.7.9": |
7309 | version: 2.7.7 | 7566 | version: 2.7.9 |
7310 | resolution: "vite@npm:2.7.7" | 7567 | resolution: "vite@npm:2.7.9" |
7311 | dependencies: | 7568 | dependencies: |
7312 | esbuild: ^0.13.12 | 7569 | esbuild: ^0.13.12 |
7313 | fsevents: ~2.3.2 | 7570 | fsevents: ~2.3.2 |
@@ -7330,7 +7587,7 @@ __metadata: | |||
7330 | optional: true | 7587 | optional: true |
7331 | bin: | 7588 | bin: |
7332 | vite: bin/vite.js | 7589 | vite: bin/vite.js |
7333 | checksum: ce7fd044b9bf29cad6a4ac0505b28d6f75cb461362d678898e78db8ff57763358c35914058c2c563548772fd714713dd8b61248d99759b64ef7576c12cd02401 | 7590 | checksum: 6a13e0678fec4d5811d4e1bc796a98644856e4d7a56b5e56dbe513834c871d2313a065e4b82469de910568c0d6c762133517c6b7bccff4514f9acf5ed47f1f61 |
7334 | languageName: node | 7591 | languageName: node |
7335 | linkType: hard | 7592 | linkType: hard |
7336 | 7593 | ||