aboutsummaryrefslogtreecommitdiffstats
path: root/packages/preload/src
Commit message (Collapse)AuthorAge
* chore: Add import extensions preparing for ts 4.6 nodenextLibravatar Kristóf Marussy2021-12-31
|
* test: Add tests for main packageLibravatar Kristóf Marussy2021-12-31
| | | | | | | | | | | | | - Changed jest to run from the root package and reference the packages as projects. This required moving the base jest config file away from the project root. - Module isolation seems to prevent ts-jest from loading the shared package, so we disabled it for now. - To better facilitate mocking, services should be split into interfaces and implementation - Had to downgrade to chald 4.1.2 as per https://github.com/chalk/chalk/releases/tag/v5.0.0 at least until https://github.com/microsoft/TypeScript/issues/46452 is resolved.
* test: Silence logging in preload testsLibravatar Kristóf Marussy2021-12-30
|
* build: Fully switch over to ESMLibravatar Kristóf Marussy2021-12-30
| | | | | | | | | | | | | | | | | | | | | | | | | | Now we can run with ESM at build and test time and transpile into commonjs for electron. This greatly simplifies testing, since we treat everything as ESM during build with esbuild anyways. Now the test environment and the build scripts match the apparent (but not the actual for the main, preload, and inject modules) runtime environment. Caveats: - We may use top-level async expressions in tests and script, but not in code that gets transpiled into commonjs or scripts that get imported by vite. The limitation w.r.t. commonjs seems fundamental. - Jest only experimentally supports ESM and there are some limitations with mocking. Most limitations (except the lack of automatic mocks) can be worked around by async importing code that uses mocks. - There are packages marked as modules (so that node reads any scripts in them as ESM) that nevertheless get transpiled into commonjs modules. However, these should be clearly marked by using a .cjs extension as their bundle. The worst offender is the root package, which has a .cjs as its main entry point that gets read by electron, but is in fact marked as a module. This doesn't seem to bother electron at all. The service-inject package is an IIFE with a .js extension, but it outputs a fully self-contained bundle, so the choice of module format should be irrelevant.
* fix: Allow the shared store listener to re-register in dev modeLibravatar Kristóf Marussy2021-12-27
| | | | | This way the shared store will be able to stay connected even if vite HMR replaces the renderer code.
* build: Test runner configuration per packageLibravatar Kristóf Marussy2021-12-27
|
* refactor: Simplify preloadLibravatar Kristóf Marussy2021-12-27
| | | | Jest mocking keeps the electron interaction testable
* refactor: Simplify IpcRendererService and its specLibravatar Kristóf Marussy2021-12-27
|
* test: Add preload unit testsLibravatar Kristóf Marussy2021-12-27
|
* refactor: Improve error handling in preloadLibravatar Kristóf Marussy2021-12-26
|
* refactor: Less boilerplate around SophieRendererLibravatar Kristóf Marussy2021-12-26
|
* feat: Set nativeTheme theme source on dark modeLibravatar Kristóf Marussy2021-12-26
|
* feat: Service to main process communicationLibravatar Kristóf Marussy2021-12-24
|
* feat: Add BrowserView and synchronize its positionLibravatar Kristóf Marussy2021-12-23
|
* chore: Add license headersLibravatar Kristóf Marussy2021-12-23
| | | | | Centralizes vite configuration to be able to add license banners to outputs in one place.
* feat: Main to renderer store synchronizationLibravatar Kristóf Marussy2021-12-23
| | | | | | | | | | | | Patches are send in one direction only, from the main to the renderer, so all actions have to go through the context bridge and the renderer IPC to modify the store in the renderer. This makes the store in the main process a single source of truth, which simplifies debugging and state persistence. The store in the renderer is connected to redux devtools for inspection, but playing back the state in the devtools won't change the sotre in main process.
* feat: Add shared package for electron ipcLibravatar Kristóf Marussy2021-12-23
|
* Initial commitLibravatar Kristóf Marussy2021-12-22
Project skeleton based on https://github.com/cawa-93/vite-electron-builder but we use react instead of vue and yarn instead of npm.