change electron build context detection, move mods package deps to main package

This commit is contained in:
Stewart Allen 2025-11-15 17:33:32 -05:00
commit 99503f5072
7 changed files with 55 additions and 51 deletions

View file

@ -32,7 +32,7 @@ function createWindow() {
height: 900,
webPreferences: {
// contextIsolation: true,
// nodeIntegration: false,
// nodeIntegration: true,
// sandbox: true,
// preload: undefined
// nodeIntegration: true,

60
app.js
View file

@ -15,6 +15,10 @@ const license = require_fresh('./src/moto/license.js');
const version = license.version || "rogue";
const netdb = require('@gridspace/net-level-client');
const PATH = require('path');
const isElectron = !!process.versions.electron ||
process.env.ELECTRON_RUN_AS_NODE === '1' ||
process.env.ELECTRON_NO_ATTACH === '1' ||
process.env.ELECTRON_BUILD === '1';
const append = { mesh:'', kiri:'' };
const code = {};
@ -32,6 +36,7 @@ let dversion;
let lastmod;
let logger;
let single;
let dryrun;
let debug;
let http;
let util;
@ -61,12 +66,14 @@ netdb.create = async function(map = {}) {
function init(mod) {
const ENV = mod.env;
const inElectron = isElectron || ENV.electron;
startTime = time();
lastmod = mod.util.lastmod;
logger = mod.log;
pre = ENV.pre || mod.meta.pre;
debug = ENV.debug || mod.meta.debug;
dryrun = ENV.dryrun;
single = ENV.single;
oversion = ENV.over || mod.meta.over;
crossOrigin = ENV.xorigin || mod.meta.xorigin || false;
@ -163,8 +170,14 @@ function init(mod) {
if (util.isfile(PATH.join(mod.dir,modpath,".disable"))) return;
const isDebugMod = util.isfile(PATH.join(mod.dir,modpath,".debug"));
const isElectronMod = util.isfile(PATH.join(mod.dir,modpath,".electron"));
if (force || (ENV.electron && !isElectronMod)) return;
if (force || (!ENV.electron && isElectronMod && !isDebugMod)) return;
if (inElectron && !isElectronMod) {
logger.log({ skip_non_electron_mod: modpath });
return;
}
if (!inElectron && isElectronMod && !isDebugMod) {
logger.log({ skip_electron_mod: modpath });
return;
}
try {
loadModule(mod, modpath);
} catch (error) {
@ -196,25 +209,30 @@ function init(mod) {
}
// create alt artifacts with module extensions
logger.log('creating artifacts', Object.keys(append));
for (let [ key, val ] of Object.entries(append)) {
let src = `${dir}/src/main/${key}.js`;
if (!fs.existsSync(src)) {
logger.log('missing', src);
continue;
if (dryrun || !isElectron) {
logger.log('creating artifacts', Object.keys(append));
for (let [ key, val ] of Object.entries(append)) {
// append mains
let src = `${dir}/src/main/${key}.js`;
if (!fs.existsSync(src)) {
logger.log('missing', src);
continue;
}
fs.mkdirSync(`${dir}/alt/main`, { recursive: true });
let body = fs.readFileSync(src);
fs.writeFileSync(`${dir}/alt/main/${key}.js`, body + val);
// append packed mains
src= `${dir}/src/pack/${key}-main.js`;
if (!fs.existsSync(src)) {
logger.log('missing', src);
continue;
}
fs.mkdirSync(`${dir}/alt/pack`, { recursive: true });
body = fs.readFileSync(src);
fs.writeFileSync(`${dir}/alt/pack/${key}-main.js`, body + val);
}
fs.mkdirSync(`${dir}/alt/main`, { recursive: true });
let body = fs.readFileSync(src);
fs.writeFileSync(`${dir}/alt/main/${key}.js`, body + val);
src= `${dir}/src/pack/${key}-main.js`;
if (!fs.existsSync(src)) {
logger.log('missing', src);
continue;
}
fs.mkdirSync(`${dir}/alt/pack`, { recursive: true });
body = fs.readFileSync(src);
fs.writeFileSync(`${dir}/alt/pack/${key}-main.js`, body + val);
} else {
logger.log('skipping artifacts');
}
};
@ -280,11 +298,9 @@ function initModule(mod, file, dir) {
const [ path, file ] = [ ...arguments ];
if (lastmod(file)) {
code[path] = fs.readFileSync(file);
// console.log({ CODE: path, file });
} else if (lastmod(mod.dir + '/' + file)) {
const alt = mod.dir + '/' + file;
code[path] = fs.readFileSync(alt);
// console.log({ CODE: path, alt });
} else {
console.log({ MISSING_CODE: path, file });
}

View file

@ -2,10 +2,13 @@ const fs = require('fs-extra');
const path = require('path');
const server = require('@gridspace/app-server');
const altTmp = path.join('tmp','alt');
fs.copySync("alt", altTmp, { dereference: true });
// deref src, web, mod for windows
const srcTmp = path.join('tmp','src');
fs.copySync("src", srcTmp, { dereference: true, filter:(src) => {
return src.indexOf('web/pack') < 0;
return true || src.indexOf('src/main') < 0;
} });
const webTmp = path.join('tmp','web');

View file

@ -1,16 +0,0 @@
{
"name": "grid-apps-mods",
"version": "4.1.0",
"description": "grid.space app modules",
"author": "Stewart Allen <sa@grid.space>",
"repository": {
"type": "git",
"url": "https://github.com/gridspace/apps.git"
},
"dependencies": {
"@gridspace/basic-ftp": "^5.0.5",
"aedes": "^0.51.3",
"hexer": "^1.5.0",
"mqtt": "^5.10.3"
}
}

View file

@ -42,6 +42,7 @@
"@gridspace/raster-path": "^1.0.6",
"@tracespace/parser": "^5.0.0-next.0",
"@tweenjs/tween.js": "^16.6.0",
"aedes": "^0.51.3",
"base64-js": "^1.5.1",
"bootstrap-icons": "^1.11.3",
"buffer-crc32": "^0.2.13",
@ -50,10 +51,12 @@
"earcut": "^3.0.1",
"express-useragent": "^1.0.13",
"fast-glob": "^3.3.3",
"hexer": "^1.5.0",
"i": "^0.3.7",
"jszip": "^3.7.1",
"manifold-3d": "^3.2.1",
"moment": "^2.29.4",
"mqtt": "^5.10.3",
"npm": "^11.4.2",
"prettier": "^3.5.3",
"react-responsive-carousel": "^3.2.23",
@ -104,18 +107,18 @@
"dryrun-prod": "gs-app-server --single --dryrun",
"mac-verify": "spctl --assess -vv --type install dist/*/*.app",
"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 bundle:dev",
"pack-prod": "npm run dryrun && npm run webpack-src prod && npm run bundle",
"pack-dev": "npm run webpack-src && npm run dryrun && npm run bundle:dev",
"pack-prod": "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 && node bin/electron-pre.js",
"prebuild": "export ELECTRON_BUILD=1 && npm run setup && npm run pack-dev && 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",
"setup": "npm run clean && npm run setup-mods && npm i && 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 .",
"start": "npm run prebuild && 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",

View file

@ -7,7 +7,6 @@ import { newSlice } from '../../core/slice.js';
import { Slicer as topo_slicer } from './slicer_topo.js';
import { polygons as POLY } from '../../../geo/polygons.js';
import { Tool } from './tool.js';
import { poly2polyEmit } from '../../../geo/paths.js';
const RAD2DEG = 180 / Math.PI;
const DEG2RAD = Math.PI / 180;
@ -122,7 +121,7 @@ export class Topo {
}
if (contourY) {
console.time('swap XY vertices');
// console.time('swap XY vertices');
// swap XY vertices
for (let i=0; i<vertices.length; i+= 3) {
let tmp = vertices[i+1];
@ -135,8 +134,7 @@ export class Topo {
ext.x = ext.y;
ext.y = tmp;
});
console.log({ wbounds });
console.timeEnd('swap XY vertices');
// console.timeEnd('swap XY vertices');
}
let gpu = await self.get_raster_gpu({

View file

@ -74,8 +74,8 @@ self.get_raster_gpu = async function({ mode, resolution, rotationStep }) {
resolution,
rotationStep,
workerName: "/lib/gpu/raster-worker.js",
quiet: false,
debug: true,
quiet: true,
debug: false,
});
await gpu.init();
return gpu;