clean up electron build, merge electron mod into core
This commit is contained in:
parent
ca61b0d618
commit
a66d7fe202
12 changed files with 69 additions and 146 deletions
28
app-el.js
28
app-el.js
|
|
@ -9,8 +9,8 @@ const appDir = path.join(usrDir, 'gapp');
|
|||
const cnfDir = path.join(appDir, 'conf');
|
||||
const logDir = path.join(appDir, 'logs');
|
||||
const datDir = path.join(appDir, 'data');
|
||||
const debug = process.argv.slice(2).map(v => v.replaceAll('-', '')).contains('debugg');
|
||||
const devel = process.argv.slice(2).map(v => v.replaceAll('-', '')).contains('devel');
|
||||
const debug = process.argv.slice(2).map(v => v.replaceAll('-', '')).indexOf('debugg') >= 0;
|
||||
const devel = process.argv.slice(2).map(v => v.replaceAll('-', '')).indexOf('devel') >= 0;
|
||||
|
||||
process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = true;
|
||||
|
||||
|
|
@ -40,23 +40,31 @@ function createWindow() {
|
|||
width: 1600,
|
||||
height: 900,
|
||||
webPreferences: {
|
||||
// contextIsolation: true,
|
||||
// nodeIntegration: false,
|
||||
// sandbox: true,
|
||||
// preload: undefined
|
||||
// nodeIntegration: true,
|
||||
// contextIsolation: false
|
||||
// preload: path.join(__dirname, 'preload.js')
|
||||
}
|
||||
});
|
||||
|
||||
const { webContents } = mainWindow;
|
||||
|
||||
mainWindow.loadURL('http://localhost:5309/kiri');
|
||||
|
||||
// default normal url navigation or page opens to happen outside Electron
|
||||
mainWindow.webContents.setWindowOpenHandler((details) => {
|
||||
webContents.setWindowOpenHandler((details) => {
|
||||
// console.log('EXTERNAL', details);
|
||||
shell.openExternal(details.url);
|
||||
return { action: 'deny' }
|
||||
});
|
||||
|
||||
// prevent "other" urls from opening inside Electron (alerts are problematic)
|
||||
mainWindow.webContents.on('will-navigate', (event, url) => {
|
||||
webContents.on('will-navigate', (event, url) => {
|
||||
// console.log('DIVERT', url);
|
||||
if (url.endsWith('/kiri') || url.endsWith('/kiri/')) {
|
||||
if (url.endsWith('/kiri') || url.endsWith('/kiri/')) {
|
||||
return;
|
||||
}
|
||||
if (url.endsWith('/mesh') || url.endsWith('/mesh/')) {
|
||||
|
|
@ -66,9 +74,13 @@ function createWindow() {
|
|||
shell.openExternal(url);
|
||||
});
|
||||
|
||||
webContents.on('did-finish-load', () => {
|
||||
mainWindow.webContents.executeJavaScript(`{ let x = document.getElementById('app-quit'); if (x) { x.onclick = () => window.close() } }; null;`);
|
||||
});
|
||||
|
||||
if (devel) {
|
||||
console.log("opening developer tools");
|
||||
mainWindow.webContents.openDevTools();
|
||||
webContents.openDevTools();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -77,9 +89,7 @@ app.on('ready', () => {
|
|||
});
|
||||
|
||||
app.on('window-all-closed', () => {
|
||||
if (process.platform !== 'darwin') {
|
||||
app.quit();
|
||||
}
|
||||
app.quit();
|
||||
});
|
||||
|
||||
app.on('activate', () => {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ exports.default = async function notarizing(context) {
|
|||
const { electronPlatformName, appOutDir } = context;
|
||||
|
||||
if (process.env.SKIPNOT || electronPlatformName !== 'darwin') {
|
||||
console.log('SKIP NOTARIZING');
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,28 +4,25 @@ const server = require('@gridspace/app-server');
|
|||
|
||||
// deref src, web, mod for windows
|
||||
const srcTmp = path.join('tmp','src');
|
||||
fs.copySync("src", srcTmp, { dereference: true });
|
||||
fs.copySync("src", srcTmp, { dereference: true, filter:(src) => {
|
||||
return src.indexOf('web/pack') < 0;
|
||||
} });
|
||||
|
||||
const webTmp = path.join('tmp','web');
|
||||
fs.copySync("web", webTmp, { dereference: true });
|
||||
fs.copySync("web", webTmp, { dereference: true, filter:(src) => {
|
||||
return src.indexOf('web/boot') < 0;
|
||||
} });
|
||||
|
||||
const modTmp = path.join('tmp','mod');
|
||||
if (fs.existsSync("mod"))
|
||||
fs.copySync("mod", modTmp, { dereference: true, filter:(src,dst) => {
|
||||
const ok =
|
||||
src === 'mod' ||
|
||||
src.indexOf('mod/standalone') === 0 ||
|
||||
src.indexOf('mod/node_modules') === 0;
|
||||
const ok = src === 'mod' || src.indexOf('mod/standalone') === 0;
|
||||
return ok;
|
||||
} });
|
||||
|
||||
const modsTmp = path.join('tmp','mods');
|
||||
fs.copySync("mods", modsTmp, { dereference: true, filter:(src,dst) => {
|
||||
const ok =
|
||||
src === 'mods' ||
|
||||
src.indexOf('mods/bambu') === 0 ||
|
||||
src.indexOf('mods/electron') === 0 ||
|
||||
src.indexOf('mods/node_modules') === 0;
|
||||
const ok = src === 'mods' || src.indexOf('mods/bambu') === 0;
|
||||
return ok;
|
||||
} });
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
if (self.kiri && !self.kiri.electron) {
|
||||
self.kiri.electron = {};
|
||||
self.kiri.load(api => {
|
||||
console.log('ELECTRON MODULE LOADED');
|
||||
api.event.on('init-done', () => {
|
||||
$('app-name-text').innerText = "More Info";
|
||||
$('top-sep').style.display = 'flex';
|
||||
});
|
||||
api.stats.set('kiri', api.version + 'e');
|
||||
});
|
||||
}
|
||||
|
||||
if (self.mesh && self.mesh) {
|
||||
self.mesh.electron = {};
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
/**
|
||||
* for electron standalone build support
|
||||
*/
|
||||
module.exports = function(server) {
|
||||
// insert script before all others in kiri client
|
||||
server.inject("kiri", "electron.js");
|
||||
// insert scripts into mesh client
|
||||
server.inject("mesh", "electron.js");
|
||||
};
|
||||
91
package.json
91
package.json
|
|
@ -82,39 +82,39 @@
|
|||
"webpack-cli": "^5.1.4"
|
||||
},
|
||||
"scripts": {
|
||||
"setup": "npm run setup-mods && npm i && npm run clean && npm run webpack-ext",
|
||||
"setup-mods": "cd mods && npm i",
|
||||
"build": "npm run prebuild && electron-builder",
|
||||
"build-nopublish": "npm run prebuild && electron-builder --publish never",
|
||||
"build-debug": "npm run prebuild && DEBUG=electron-builder electron-builder",
|
||||
"build-linux": "npm run build -- --linux --x64",
|
||||
"build-linux-arm": "npm run build -- --linux --arm64",
|
||||
"build-win": "npm run build -- --win --x64",
|
||||
"build-win-arm": "npm run build -- --win --arm64",
|
||||
"build-mac": "npm run build -- --mac --arm64",
|
||||
"build-linux": "npm run build -- --linux --x64",
|
||||
"build-mac-intel": "npm run build -- --mac --x64",
|
||||
"bundle": "COMPRESS=1 npm run bundle:prod",
|
||||
"bundle:dev": "node bin/bundler.mjs",
|
||||
"build-mac": "npm run build -- --mac --arm64",
|
||||
"build-nopublish": "npm run prebuild && electron-builder --publish never",
|
||||
"build-win-arm": "npm run build -- --win --arm64",
|
||||
"build-win": "npm run build -- --win --x64",
|
||||
"build": "npm run prebuild && electron-builder",
|
||||
"bundle:dev": "node bin/bundler.mjs bin/bundle.config.json",
|
||||
"bundle:prod": "node bin/bundler.mjs bin/bundle-prod.config.json",
|
||||
"bundle": "COMPRESS=1 npm run bundle:prod",
|
||||
"clean": "rm -rf alt build data dist src/pack src.old tmp web.old .bcache",
|
||||
"docs-dev": "docusaurus start --config conf/docusaurus.config.js",
|
||||
"docs-build": "docusaurus build --config conf/docusaurus.config.js",
|
||||
"docs-serve": "docusaurus serve --config conf/docusaurus.config.js",
|
||||
"docs-check": "prettier --config ./conf/prettier.config.js ./docs --check",
|
||||
"dryrun": "gs-app-server --debug --single --alt --dryrun",
|
||||
"dev": "npm run pack-dev && gs-app-server --debug --single",
|
||||
"prod": "npm run pack-prod && gs-app-server",
|
||||
"start": "npm run prebuild prod && electron .",
|
||||
"start-dev": "npm run prebuild prod && electron . --devel",
|
||||
"start-dbg": "npm run prebuild && electron . --debugg",
|
||||
"start-ddb": "npm run prebuild && electron . --devel --debugg",
|
||||
"mk-links": "find src web -type l | xargs -I{} sh -c 'echo \"{},$(readlink {})\"' > conf/links.csv",
|
||||
"docs-build": "docusaurus build --config conf/docusaurus.config.js",
|
||||
"docs-check": "prettier --config ./conf/prettier.config.js ./docs --check",
|
||||
"docs-dev": "docusaurus start --config conf/docusaurus.config.js",
|
||||
"docs-serve": "docusaurus serve --config conf/docusaurus.config.js",
|
||||
"dryrun": "gs-app-server --debug --single --alt --dryrun",
|
||||
"mac-verify": "spctl --assess -vv --type install dist/*/*.app",
|
||||
"prebuild": "npm run setup && npm run webpack-src prod && node bin/electron-pre.js",
|
||||
"postbuild": "node bin/electron-post.js",
|
||||
"preinstall": "node bin/install-pre.js",
|
||||
"mk-links": "find src web -type l | xargs -I{} sh -c 'echo \"{},$(readlink {})\"' > conf/links.csv",
|
||||
"pack-dev": "npm run dryrun && npm run webpack-src && npm run dryrun && npm run bundle:dev",
|
||||
"pack-prod": "npm run dryrun && npm run webpack-src prod && npm run dryrun && npm run bundle",
|
||||
"postbuild": "node bin/electron-post.js",
|
||||
"prebuild": "npm run setup && npm run pack-dev prod && node bin/electron-pre.js",
|
||||
"preinstall": "node bin/install-pre.js",
|
||||
"prod": "npm run pack-prod && gs-app-server",
|
||||
"setup-mods": "cd mods && npm i",
|
||||
"setup": "npm run setup-mods && npm i && npm run clean && npm run webpack-ext",
|
||||
"start-dbg": "npm run prebuild && electron . --debugg",
|
||||
"start-ddb": "npm run prebuild && electron . --devel --debugg",
|
||||
"start-dev": "npm run prebuild prod && electron . --devel",
|
||||
"start": "npm run prebuild prod && electron .",
|
||||
"webpack-ext": "npm run webpack-three && npm run webpack-zip",
|
||||
"webpack-src": "node bin/esbuild.config.mjs",
|
||||
"webpack-three": "npx webpack --config bin/webpack-three-esm.js",
|
||||
|
|
@ -128,52 +128,17 @@
|
|||
"artifactName": "KiriMoto-${os}-${arch}.${ext}",
|
||||
"files": [
|
||||
{
|
||||
"from": "tmp/src",
|
||||
"to": "src",
|
||||
"filter": [
|
||||
"**/*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"from": "tmp/web",
|
||||
"to": "web",
|
||||
"filter": [
|
||||
"**/*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"from": "tmp/mod",
|
||||
"to": "mod",
|
||||
"filter": [
|
||||
"**/*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"from": "tmp/mod/node_modules",
|
||||
"to": "mod/node_modules",
|
||||
"filter": [
|
||||
"**/*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"from": "tmp/mods",
|
||||
"to": "mods",
|
||||
"filter": [
|
||||
"**/*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"from": "tmp/mods/node_modules",
|
||||
"to": "mods/node_modules",
|
||||
"from": "tmp",
|
||||
"to": "",
|
||||
"filter": [
|
||||
"**/*"
|
||||
]
|
||||
},
|
||||
"app-el.js",
|
||||
"app.js",
|
||||
"bin/*",
|
||||
"conf/**/*",
|
||||
"data/cache/**/*",
|
||||
"app-el.js",
|
||||
"app.js",
|
||||
"package.json"
|
||||
],
|
||||
"extraFiles": [],
|
||||
|
|
|
|||
|
|
@ -143,6 +143,7 @@ export const api = {
|
|||
dialog,
|
||||
doit,
|
||||
event,
|
||||
electron: navigator.userAgent.includes('Electron'),
|
||||
feature,
|
||||
function: functions,
|
||||
group,
|
||||
|
|
|
|||
|
|
@ -39,14 +39,19 @@ function checkReady() {
|
|||
if (document.readyState === 'complete') {
|
||||
let bootctrl = navigator.serviceWorker.controller;
|
||||
console.log(`kiri | boot ctrl | ` + (bootctrl ? true : false));
|
||||
kiri.api = run();
|
||||
self.$ = kiri.api.web.$;
|
||||
let api = kiri.api = run();
|
||||
self.$ = api.web.$;
|
||||
for (let fn of load) {
|
||||
safeExec(fn);
|
||||
}
|
||||
load = undefined;
|
||||
kiri.api.event.emit('load-done', stats);
|
||||
if (bootctrl) {
|
||||
api.event.emit('load-done', stats);
|
||||
if (api.electron) {
|
||||
$('install').classList.add('hide');
|
||||
$('app-quit').classList.remove('hide');
|
||||
$('app-name-text').innerText = "More Info";
|
||||
$('top-sep').style.display = 'flex';
|
||||
} else if (bootctrl) {
|
||||
$('install').classList.add('hide');
|
||||
$('uninstall').classList.remove('hide');
|
||||
$('uninstall').onclick = () => {
|
||||
|
|
|
|||
|
|
@ -99,6 +99,7 @@ function init() {
|
|||
|
||||
// for electron
|
||||
self.mesh = { api };
|
||||
self.electron = navigator.userAgent.includes('Electron');
|
||||
}
|
||||
|
||||
// restore space layout and view from previous session
|
||||
|
|
|
|||
|
|
@ -1,37 +0,0 @@
|
|||
const service_worker = navigator.serviceWorker;
|
||||
|
||||
import { version } from '../moto/license.js';
|
||||
|
||||
async function start_service_worker() {
|
||||
function debug() {
|
||||
console.log(`[${version}]`, ...arguments);
|
||||
}
|
||||
|
||||
// install service worker
|
||||
debug('service worker registration');
|
||||
|
||||
try {
|
||||
const reg = await navigator
|
||||
.serviceWorker
|
||||
.register(`/code/service.js?${version}`, { scope: "/" });
|
||||
if (reg.installing) {
|
||||
debug('service worker installing');
|
||||
} else if (reg.waiting) {
|
||||
debug('service worker waiting');
|
||||
} else if (reg.active) {
|
||||
debug('service worker active');
|
||||
} else {
|
||||
debug({ service_worker: reg });
|
||||
}
|
||||
|
||||
if (service_worker.controller) {
|
||||
service_worker.controller.postMessage('ctrl message');
|
||||
}
|
||||
} catch (err) {
|
||||
debug('service worker registration failed', err);
|
||||
}
|
||||
}
|
||||
|
||||
if (service_worker && self.enable_service) {
|
||||
start_service_worker();
|
||||
}
|
||||
|
|
@ -238,6 +238,10 @@
|
|||
<label lk="uninstall">uninstall</label>
|
||||
<span><i class="fa-solid fa-trash"></i></span>
|
||||
</div>
|
||||
<div id="app-quit" class="hide">
|
||||
<label lk="quit">quit</label>
|
||||
<span></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</span>
|
||||
|
|
|
|||
Loading…
Reference in a new issue