From 649c1ed37ac74765fb7572fa3f703c94827042f4 Mon Sep 17 00:00:00 2001 From: Vijay A Date: Tue, 4 Jan 2022 22:16:09 +0530 Subject: New configurations based on review comments (WIP) Signed-off-by: Vijay A --- packages/main/.eslintrc.json | 6 ++++++ packages/main/esbuild.config.js | 1 + packages/main/package.json | 5 ++++- packages/main/src/compositionRoot.ts | 10 +++++----- packages/main/src/controllers/__tests__/config.spec.ts | 8 ++++---- .../main/src/controllers/__tests__/nativeTheme.spec.ts | 4 ++-- packages/main/src/controllers/config.ts | 4 ++-- packages/main/src/controllers/nativeTheme.ts | 4 ++-- packages/main/src/index.ts | 6 +++--- packages/main/src/services/ConfigPersistenceService.ts | 4 ++-- .../main/src/services/impl/ConfigPersistenceServiceImpl.ts | 5 ++--- packages/main/src/stores/MainStore.ts | 2 +- packages/main/src/stores/SharedStore.ts | 2 +- packages/preload/package.json | 2 ++ .../src/contextBridge/__tests__/SophieRendererImpl.spec.ts | 8 ++++++-- packages/preload/src/index.ts | 2 +- packages/renderer/.eslintrc.json | 5 +++++ packages/renderer/src/components/App.tsx | 4 ++-- .../renderer/src/components/BrowserViewPlaceholder.tsx | 2 +- packages/renderer/src/components/Sidebar.tsx | 2 +- packages/renderer/src/components/StoreProvider.tsx | 2 +- packages/renderer/src/components/ThemeProvider.tsx | 2 +- packages/renderer/src/components/ToggleDarkModeButton.tsx | 2 +- packages/renderer/src/index.tsx | 10 +++++----- packages/renderer/src/stores/RendererStore.ts | 2 +- packages/renderer/vite.config.js | 1 + packages/service-shared/src/index.ts | 6 +++--- packages/shared/src/contextBridge/SophieRenderer.ts | 2 +- packages/shared/src/index.ts | 14 +++++++------- packages/shared/src/stores/Config.ts | 2 +- packages/shared/src/stores/SharedStore.ts | 2 +- 31 files changed, 76 insertions(+), 55 deletions(-) create mode 100644 packages/main/.eslintrc.json create mode 100644 packages/renderer/.eslintrc.json (limited to 'packages') diff --git a/packages/main/.eslintrc.json b/packages/main/.eslintrc.json new file mode 100644 index 0000000..6b736e2 --- /dev/null +++ b/packages/main/.eslintrc.json @@ -0,0 +1,6 @@ +{ + "globals": { + "NodeJS": false, + "require": false + } +} diff --git a/packages/main/esbuild.config.js b/packages/main/esbuild.config.js index 500590f..c24d6e1 100644 --- a/packages/main/esbuild.config.js +++ b/packages/main/esbuild.config.js @@ -1,3 +1,4 @@ +/* eslint-disable no-process-env */ import getRepoInfo from 'git-repo-info'; import { node } from '../../config/buildConstants.js'; import { getConfig } from '../../config/esbuildConfig.js'; diff --git a/packages/main/package.json b/packages/main/package.json index b904906..e1b3f49 100644 --- a/packages/main/package.json +++ b/packages/main/package.json @@ -19,15 +19,18 @@ "loglevel-plugin-prefix": "^0.8.4", "mobx": "^6.3.12", "mobx-state-tree": "^5.1.0", - "ms": "^2.1.3" + "ms": "^2.1.3", + "os-name": "^5.0.1" }, "devDependencies": { + "@jest/globals": "^27.4.4", "@types/electron-devtools-installer": "^2.2.1", "@types/lodash-es": "^4.17.5", "@types/ms": "^0.7.31", "@types/node": "^17.0.8", "electron-devtools-installer": "^3.2.0", "esbuild": "^0.14.11", + "git-repo-info": "^2.1.1", "jest": "^27.4.7", "jest-mock": "^27.4.6", "rimraf": "^3.0.2", diff --git a/packages/main/src/compositionRoot.ts b/packages/main/src/compositionRoot.ts index bf0f92e..76835a1 100644 --- a/packages/main/src/compositionRoot.ts +++ b/packages/main/src/compositionRoot.ts @@ -20,11 +20,11 @@ import { app } from 'electron'; -import { initConfig } from './controllers/config.js'; -import { initNativeTheme } from './controllers/nativeTheme.js'; -import { ConfigPersistenceServiceImpl } from './services/impl/ConfigPersistenceServiceImpl.js'; -import { MainStore } from './stores/MainStore.js'; -import { Disposer } from './utils/disposer.js'; +import { initConfig } from './controllers/config'; +import { initNativeTheme } from './controllers/nativeTheme'; +import { ConfigPersistenceServiceImpl } from './services/impl/ConfigPersistenceServiceImpl'; +import { MainStore } from './stores/MainStore'; +import { Disposer } from './utils/disposer'; export async function init(store: MainStore): Promise { const configPersistenceService = new ConfigPersistenceServiceImpl(app.getPath('userData')); diff --git a/packages/main/src/controllers/__tests__/config.spec.ts b/packages/main/src/controllers/__tests__/config.spec.ts index eea7f1e..eb67df0 100644 --- a/packages/main/src/controllers/__tests__/config.spec.ts +++ b/packages/main/src/controllers/__tests__/config.spec.ts @@ -23,10 +23,10 @@ import { mocked } from 'jest-mock'; import ms from 'ms'; import { initConfig } from '../config'; -import type { ConfigPersistenceService } from '../../services/ConfigPersistenceService.js'; -import { Config, config as configModel } from '../../stores/Config.js'; -import { Disposer } from '../../utils/disposer.js'; -import { silenceLogger } from '../../utils/logging.js'; +import type { ConfigPersistenceService } from '../../services/ConfigPersistenceService'; +import { Config, config as configModel } from '../../stores/Config'; +import { Disposer } from '../../utils/disposer'; +import { silenceLogger } from '../../utils/logging'; let config: Config; let persistenceService: ConfigPersistenceService = { diff --git a/packages/main/src/controllers/__tests__/nativeTheme.spec.ts b/packages/main/src/controllers/__tests__/nativeTheme.spec.ts index cffeace..85d6dd2 100644 --- a/packages/main/src/controllers/__tests__/nativeTheme.spec.ts +++ b/packages/main/src/controllers/__tests__/nativeTheme.spec.ts @@ -21,8 +21,8 @@ import { jest } from '@jest/globals'; import { mocked } from 'jest-mock'; -import { createMainStore, MainStore } from '../../stores/MainStore.js'; -import { Disposer } from '../../utils/disposer.js'; +import { createMainStore, MainStore } from '../../stores/MainStore'; +import { Disposer } from '../../utils/disposer'; let shouldUseDarkColors = false; diff --git a/packages/main/src/controllers/config.ts b/packages/main/src/controllers/config.ts index 971f151..deaeac2 100644 --- a/packages/main/src/controllers/config.ts +++ b/packages/main/src/controllers/config.ts @@ -24,8 +24,8 @@ import { applySnapshot, getSnapshot, onSnapshot } from 'mobx-state-tree'; import type { ConfigPersistenceService } from '../services/ConfigPersistenceService.js'; import type { Config, ConfigSnapshotOut } from '../stores/Config.js'; -import { Disposer } from '../utils/disposer.js'; -import { getLogger } from '../utils/logging.js'; +import { Disposer } from '../utils/disposer'; +import { getLogger } from '../utils/logging'; const DEFAULT_CONFIG_DEBOUNCE_TIME = ms('1s'); diff --git a/packages/main/src/controllers/nativeTheme.ts b/packages/main/src/controllers/nativeTheme.ts index c291a16..ccd12d8 100644 --- a/packages/main/src/controllers/nativeTheme.ts +++ b/packages/main/src/controllers/nativeTheme.ts @@ -22,8 +22,8 @@ import { nativeTheme } from 'electron'; import { autorun } from 'mobx'; import type { MainStore } from '../stores/MainStore.js'; -import { Disposer } from '../utils/disposer.js'; -import { getLogger } from '../utils/logging.js'; +import { Disposer } from '../utils/disposer'; +import { getLogger } from '../utils/logging'; const log = getLogger('nativeTheme'); diff --git a/packages/main/src/index.ts b/packages/main/src/index.ts index 2bdefb8..d0191b7 100644 --- a/packages/main/src/index.ts +++ b/packages/main/src/index.ts @@ -43,13 +43,13 @@ import { } from '@sophie/shared'; import { URL } from 'url'; -import { init } from './compositionRoot.js'; +import { init } from './compositionRoot'; import { DEVMODE_ALLOWED_URL_PREFIXES, installDevToolsExtensions, openDevToolsWhenReady, -} from './devTools.js'; -import { createMainStore } from './stores/MainStore.js'; +} from './devTools'; +import { createMainStore } from './stores/MainStore'; const isDevelopment = import.meta.env.MODE === 'development'; diff --git a/packages/main/src/services/ConfigPersistenceService.ts b/packages/main/src/services/ConfigPersistenceService.ts index 0033cca..aed0ba3 100644 --- a/packages/main/src/services/ConfigPersistenceService.ts +++ b/packages/main/src/services/ConfigPersistenceService.ts @@ -18,8 +18,8 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import type { ConfigSnapshotOut } from '../stores/Config.js'; -import { Disposer } from '../utils/disposer.js'; +import type { ConfigSnapshotOut } from '../stores/Config'; +import { Disposer } from '../utils/disposer'; export type ReadConfigResult = { found: true; data: unknown; } | { found: false; }; diff --git a/packages/main/src/services/impl/ConfigPersistenceServiceImpl.ts b/packages/main/src/services/impl/ConfigPersistenceServiceImpl.ts index eba291c..2d19632 100644 --- a/packages/main/src/services/impl/ConfigPersistenceServiceImpl.ts +++ b/packages/main/src/services/impl/ConfigPersistenceServiceImpl.ts @@ -1,4 +1,3 @@ - /* * Copyright (C) 2021-2022 Kristóf Marussy * @@ -26,8 +25,8 @@ import { join } from 'path'; import type { ConfigPersistenceService, ReadConfigResult } from '../ConfigPersistenceService.js'; import type { ConfigSnapshotOut } from '../../stores/Config.js'; -import { Disposer } from '../../utils/disposer.js'; -import { getLogger } from '../../utils/logging.js'; +import { Disposer } from '../../utils/disposer'; +import { getLogger } from '../../utils/logging'; const log = getLogger('configPersistence'); diff --git a/packages/main/src/stores/MainStore.ts b/packages/main/src/stores/MainStore.ts index 9368b4d..f8a09d6 100644 --- a/packages/main/src/stores/MainStore.ts +++ b/packages/main/src/stores/MainStore.ts @@ -22,7 +22,7 @@ import { applySnapshot, Instance, types } from 'mobx-state-tree'; import { BrowserViewBounds } from '@sophie/shared'; import type { Config } from './Config.js'; -import { sharedStore } from './SharedStore.js'; +import { sharedStore } from './SharedStore'; export const mainStore = types.model('MainStore', { browserViewBounds: types.optional(types.model('BrowserViewBounds', { diff --git a/packages/main/src/stores/SharedStore.ts b/packages/main/src/stores/SharedStore.ts index 31b8551..e20150d 100644 --- a/packages/main/src/stores/SharedStore.ts +++ b/packages/main/src/stores/SharedStore.ts @@ -21,7 +21,7 @@ import { Instance, types } from 'mobx-state-tree'; import { sharedStore as originalSharedStore } from '@sophie/shared'; -import { config } from './Config.js'; +import { config } from './Config'; export type { SharedStoreSnapshotIn, SharedStoreSnapshotOut } from '@sophie/shared'; diff --git a/packages/preload/package.json b/packages/preload/package.json index 253b858..0957aaf 100644 --- a/packages/preload/package.json +++ b/packages/preload/package.json @@ -11,10 +11,12 @@ "dependencies": { "@sophie/shared": "workspace:*", "electron": "16.0.6", + "loglevel": "^1.8.0", "mobx": "^6.3.12", "mobx-state-tree": "^5.1.0" }, "devDependencies": { + "@jest/globals": "^27.4.4", "@types/jest": "^27.4.0", "jest": "^27.4.7", "jest-mock": "^27.4.6", diff --git a/packages/preload/src/contextBridge/__tests__/SophieRendererImpl.spec.ts b/packages/preload/src/contextBridge/__tests__/SophieRendererImpl.spec.ts index f8b0024..ff77a63 100644 --- a/packages/preload/src/contextBridge/__tests__/SophieRendererImpl.spec.ts +++ b/packages/preload/src/contextBridge/__tests__/SophieRendererImpl.spec.ts @@ -40,7 +40,7 @@ jest.unstable_mockModule('electron', () => ({ const { ipcRenderer } = await import('electron'); -const { createSophieRenderer } = await import('../SophieRendererImpl.js'); +const { createSophieRenderer } = await import('../SophieRendererImpl'); const event: Electron.IpcRendererEvent = null as unknown as Electron.IpcRendererEvent; @@ -83,9 +83,11 @@ describe('createSophieRenderer', () => { describe('SophieRendererImpl', () => { let sut: SophieRenderer; - let onSharedStorePatch: (event: Electron.IpcRendererEvent, patch: unknown) => void; + let onSharedStorePatch: (event1: Electron.IpcRendererEvent, patch1: unknown) => void; let listener = { + // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars onSnapshot: jest.fn((_snapshot: SharedStoreSnapshotIn) => {}), + // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars onPatch: jest.fn((_patch: IJsonPatch) => {}), }; @@ -233,7 +235,9 @@ describe('SophieRendererImpl', () => { shouldUseDarkColors: false, }; const listener2 = { + // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars onSnapshot: jest.fn((_snapshot: SharedStoreSnapshotIn) => { }), + // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars onPatch: jest.fn((_patch: IJsonPatch) => { }), }; diff --git a/packages/preload/src/index.ts b/packages/preload/src/index.ts index f6c720a..de91742 100644 --- a/packages/preload/src/index.ts +++ b/packages/preload/src/index.ts @@ -20,7 +20,7 @@ import { contextBridge } from 'electron'; -import { createSophieRenderer } from './contextBridge/SophieRendererImpl.js'; +import { createSophieRenderer } from './contextBridge/SophieRendererImpl'; const isDevelopment = import.meta.env.MODE === 'development'; diff --git a/packages/renderer/.eslintrc.json b/packages/renderer/.eslintrc.json new file mode 100644 index 0000000..a28aec9 --- /dev/null +++ b/packages/renderer/.eslintrc.json @@ -0,0 +1,5 @@ +{ + "globals": { + "JSX": false + } +} diff --git a/packages/renderer/src/components/App.tsx b/packages/renderer/src/components/App.tsx index b0a069f..8bd3dd8 100644 --- a/packages/renderer/src/components/App.tsx +++ b/packages/renderer/src/components/App.tsx @@ -21,8 +21,8 @@ import Box from '@mui/material/Box'; import React from 'react'; -import { BrowserViewPlaceholder } from './BrowserViewPlaceholder.jsx'; -import { Sidebar } from './Sidebar.jsx'; +import { BrowserViewPlaceholder } from './BrowserViewPlaceholder'; +import { Sidebar } from './Sidebar'; export function App(): JSX.Element { return ( diff --git a/packages/renderer/src/components/BrowserViewPlaceholder.tsx b/packages/renderer/src/components/BrowserViewPlaceholder.tsx index 6827422..6aa6b7b 100644 --- a/packages/renderer/src/components/BrowserViewPlaceholder.tsx +++ b/packages/renderer/src/components/BrowserViewPlaceholder.tsx @@ -23,7 +23,7 @@ import { observer } from 'mobx-react-lite'; import Box from '@mui/material/Box'; import React, { useCallback, useRef } from 'react'; -import { useStore } from './StoreProvider.jsx'; +import { useStore } from './StoreProvider'; export const BrowserViewPlaceholder = observer(function BrowserViewPlaceholder() { const { diff --git a/packages/renderer/src/components/Sidebar.tsx b/packages/renderer/src/components/Sidebar.tsx index a0086d2..6c79932 100644 --- a/packages/renderer/src/components/Sidebar.tsx +++ b/packages/renderer/src/components/Sidebar.tsx @@ -21,7 +21,7 @@ import Box from '@mui/material/Box'; import React from 'react'; -import { ToggleDarkModeButton } from './ToggleDarkModeButton.jsx'; +import { ToggleDarkModeButton } from './ToggleDarkModeButton'; export function Sidebar(): JSX.Element { return ( diff --git a/packages/renderer/src/components/StoreProvider.tsx b/packages/renderer/src/components/StoreProvider.tsx index fbe9b2a..da1e699 100644 --- a/packages/renderer/src/components/StoreProvider.tsx +++ b/packages/renderer/src/components/StoreProvider.tsx @@ -20,7 +20,7 @@ import React, { createContext, useContext } from 'react'; -import type { RendererStore } from '../stores/RendererStore.jsx'; +import type { RendererStore } from '../stores/RendererStore'; const StoreContext = createContext(null); diff --git a/packages/renderer/src/components/ThemeProvider.tsx b/packages/renderer/src/components/ThemeProvider.tsx index 9313725..9215f5c 100644 --- a/packages/renderer/src/components/ThemeProvider.tsx +++ b/packages/renderer/src/components/ThemeProvider.tsx @@ -25,7 +25,7 @@ import { } from '@mui/material/styles'; import React from 'react'; -import { useStore } from './StoreProvider.jsx'; +import { useStore } from './StoreProvider'; export const ThemeProvider = observer(function ThemeProvider({ children }: { children: JSX.Element | JSX.Element[], diff --git a/packages/renderer/src/components/ToggleDarkModeButton.tsx b/packages/renderer/src/components/ToggleDarkModeButton.tsx index b48cc32..1b6757e 100644 --- a/packages/renderer/src/components/ToggleDarkModeButton.tsx +++ b/packages/renderer/src/components/ToggleDarkModeButton.tsx @@ -24,7 +24,7 @@ import LightModeIcon from '@mui/icons-material/LightMode'; import IconButton from '@mui/material/IconButton'; import React from 'react'; -import { useStore } from './StoreProvider.jsx'; +import { useStore } from './StoreProvider'; export const ToggleDarkModeButton = observer(function ToggleDarkModeButton() { const { shared: { shouldUseDarkColors }, toggleDarkMode } = useStore(); diff --git a/packages/renderer/src/index.tsx b/packages/renderer/src/index.tsx index 8bd70d3..1626bef 100644 --- a/packages/renderer/src/index.tsx +++ b/packages/renderer/src/index.tsx @@ -26,11 +26,11 @@ import CssBaseline from '@mui/material/CssBaseline'; import React from 'react'; import { render } from 'react-dom'; -import { App } from './components/App.jsx'; -import { StoreProvider } from './components/StoreProvider.jsx'; -import { ThemeProvider } from './components/ThemeProvider.jsx'; -import { exposeToReduxDevtools, hotReloadServices } from './devTools.js'; -import { createAndConnectRendererStore } from './stores/RendererStore.js'; +import { App } from './components/App'; +import { StoreProvider } from './components/StoreProvider'; +import { ThemeProvider } from './components/ThemeProvider'; +import { exposeToReduxDevtools, hotReloadServices } from './devTools'; +import { createAndConnectRendererStore } from './stores/RendererStore'; const isDevelopment = import.meta.env.MODE === 'development'; diff --git a/packages/renderer/src/stores/RendererStore.ts b/packages/renderer/src/stores/RendererStore.ts index 397c024..037b212 100644 --- a/packages/renderer/src/stores/RendererStore.ts +++ b/packages/renderer/src/stores/RendererStore.ts @@ -31,7 +31,7 @@ import { ThemeSource, } from '@sophie/shared'; -import { getEnv, RendererEnv } from './RendererEnv.js'; +import { getEnv, RendererEnv } from './RendererEnv'; export const rendererStore = types.model('RendererStore', { shared: types.optional(sharedStore, {}), diff --git a/packages/renderer/vite.config.js b/packages/renderer/vite.config.js index 80e9fb6..bcd1975 100644 --- a/packages/renderer/vite.config.js +++ b/packages/renderer/vite.config.js @@ -1,3 +1,4 @@ +/* eslint-disable no-process-env */ /* eslint-env node */ import { builtinModules } from 'module'; diff --git a/packages/service-shared/src/index.ts b/packages/service-shared/src/index.ts index d8b5d0e..564ebe8 100644 --- a/packages/service-shared/src/index.ts +++ b/packages/service-shared/src/index.ts @@ -18,13 +18,13 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -export { ServiceToMainIpcMessage } from './ipc.js'; +export { ServiceToMainIpcMessage } from './ipc'; export type { UnreadCount, WebSource, -} from './schemas.js'; +} from './schemas'; export { unreadCount, webSource, -} from './schemas.js'; +} from './schemas'; diff --git a/packages/shared/src/contextBridge/SophieRenderer.ts b/packages/shared/src/contextBridge/SophieRenderer.ts index 285b373..fc43b6e 100644 --- a/packages/shared/src/contextBridge/SophieRenderer.ts +++ b/packages/shared/src/contextBridge/SophieRenderer.ts @@ -20,7 +20,7 @@ import { SharedStoreListener } from '../stores/SharedStore'; -import { Action } from '../schemas.js'; +import { Action } from '../schemas'; export interface SophieRenderer { onSharedStoreChange(listener: SharedStoreListener): Promise; diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index f0ae5dc..2f7146c 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -23,26 +23,26 @@ export type { SophieRenderer } from './contextBridge/SophieRenderer'; export { MainToRendererIpcMessage, RendererToMainIpcMessage, -} from './ipc.js'; +} from './ipc'; export type { Action, BrowserViewBounds, ThemeSource, -} from './schemas.js'; +} from './schemas'; export { action, browserViewBounds, themeSource, -} from './schemas.js'; +} from './schemas'; -export type { Config, ConfigSnapshotIn, ConfigSnapshotOut } from './stores/Config.js'; -export { config } from './stores/Config.js'; +export type { Config, ConfigSnapshotIn, ConfigSnapshotOut } from './stores/Config'; +export { config } from './stores/Config'; export type { SharedStore, SharedStoreListener, SharedStoreSnapshotIn, SharedStoreSnapshotOut, -} from './stores/SharedStore.js'; -export { sharedStore } from './stores/SharedStore.js'; +} from './stores/SharedStore'; +export { sharedStore } from './stores/SharedStore'; diff --git a/packages/shared/src/stores/Config.ts b/packages/shared/src/stores/Config.ts index 4b17d3c..432945c 100644 --- a/packages/shared/src/stores/Config.ts +++ b/packages/shared/src/stores/Config.ts @@ -25,7 +25,7 @@ import { SnapshotOut, } from 'mobx-state-tree'; -import { themeSource } from '../schemas.js'; +import { themeSource } from '../schemas'; export const config = types.model('Config', { themeSource: types.optional(types.enumeration(themeSource.options), 'system'), diff --git a/packages/shared/src/stores/SharedStore.ts b/packages/shared/src/stores/SharedStore.ts index 8aefcdb..c6c3ddc 100644 --- a/packages/shared/src/stores/SharedStore.ts +++ b/packages/shared/src/stores/SharedStore.ts @@ -26,7 +26,7 @@ import { SnapshotOut, } from 'mobx-state-tree'; -import { config } from './Config.js'; +import { config } from './Config'; export const sharedStore = types.model('SharedStore', { config: types.optional(config, {}), -- cgit v1.2.3-54-g00ecf