fix(electron): extensions

This commit is contained in:
cha0s 2024-01-21 04:57:51 -06:00
parent f1df3c60ce
commit 1bcd198aaf
5 changed files with 16 additions and 34 deletions

View File

@ -24,11 +24,7 @@ exports.hooks = {
/** /**
* Install devtools extensions (by default). * Install devtools extensions (by default).
* *
* If `true`, will install some devtools extensions based on which flecks are enabled.
*
* You can pass an array of Chrome store IDs to install a list of custom extensions. * You can pass an array of Chrome store IDs to install a list of custom extensions.
*
* Extensions will not be installed if `'production' === process.env.NODE_ENV`
*/ */
installExtensions: true, installExtensions: true,
/** /**

View File

@ -21,7 +21,7 @@
], ],
"dependencies": { "dependencies": {
"@flecks/core": "^3.0.0", "@flecks/core": "^3.0.0",
"electron": "^18.0.1", "electron": "^28.1.4",
"electron-devtools-installer": "^3.2.0" "electron-devtools-installer": "^3.2.0"
}, },
"devDependencies": { "devDependencies": {

View File

@ -2,10 +2,6 @@ import {Flecks} from '@flecks/core';
const electron = __non_webpack_require__('electron'); const electron = __non_webpack_require__('electron');
const {
NODE_ENV,
} = process.env;
let win; let win;
async function createWindow(flecks) { async function createWindow(flecks) {
@ -39,27 +35,15 @@ export const hooks = {
}, },
'@flecks/electron/server.window': async (win, flecks) => { '@flecks/electron/server.window': async (win, flecks) => {
const {public: $$public} = flecks.get('@flecks/web'); const {public: $$public} = flecks.get('@flecks/web');
const { const {installExtensions, url = `http://${$$public}`} = flecks.get('@flecks/electron');
installExtensions, if (installExtensions) {
url = `http://${$$public}`, const installer = __non_webpack_require__('electron-devtools-installer');
} = flecks.get('@flecks/electron'); const {default: installExtension} = installer;
if (installExtensions && 'production' !== NODE_ENV) { await installExtension([
const { ...Array.isArray(installExtensions) ? installExtensions : [],
default: installExtension, ...flecks.invokeFlat('@flecks/electron/server.extensions', installer)
REDUX_DEVTOOLS, .flat(),
REACT_DEVELOPER_TOOLS, ]);
} = __non_webpack_require__('electron-devtools-installer');
let extensions = installExtensions;
if (!Array.isArray(extensions)) {
extensions = [];
if (flecks.fleck('@flecks/react')) {
extensions.push(REACT_DEVELOPER_TOOLS);
}
if (flecks.fleck('@flecks/redux')) {
extensions.push(REDUX_DEVTOOLS);
}
}
await installExtension(extensions);
} }
await win.loadURL(url); await win.loadURL(url);
}, },

View File

@ -3,6 +3,7 @@ import {Flecks} from '@flecks/core';
import ssr from './ssr'; import ssr from './ssr';
export const hooks = { export const hooks = {
'@flecks/electron/server.extensions': (installer) => [installer.REACT_DEVELOPER_TOOLS],
'@flecks/web/server.stream.html': Flecks.priority( '@flecks/web/server.stream.html': Flecks.priority(
(stream, req, flecks) => ( (stream, req, flecks) => (
flecks.get('@flecks/react.ssr') ? ssr(stream, req, flecks) : stream flecks.get('@flecks/react.ssr') ? ssr(stream, req, flecks) : stream

View File

@ -9,6 +9,11 @@ const debug = D('@flecks/redux/server');
const debugSilly = debug.extend('silly'); const debugSilly = debug.extend('silly');
export const hooks = { export const hooks = {
'@flecks/electron/server.extensions': (installer) => [installer.REDUX_DEVTOOLS],
'@flecks/react.providers': Flecks.priority(
(req) => [Provider, {store: req.redux}],
{before: '@flecks/react/router/server'},
),
'@flecks/web/server.request.route': (flecks) => async (req, res, next) => { '@flecks/web/server.request.route': (flecks) => async (req, res, next) => {
const slices = await flecks.invokeMergeUnique('@flecks/redux.slices'); const slices = await flecks.invokeMergeUnique('@flecks/redux.slices');
const reducer = createReducer(flecks, slices); const reducer = createReducer(flecks, slices);
@ -30,8 +35,4 @@ export const hooks = {
preloadedState: req.redux.getState(), preloadedState: req.redux.getState(),
}, },
}), }),
'@flecks/react.providers': Flecks.priority(
(req) => [Provider, {store: req.redux}],
{before: '@flecks/react/router/server'},
),
}; };