From 99503f507293ddca62296bbf9ea199b24eb8100e Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sat, 15 Nov 2025 17:33:32 -0500 Subject: [PATCH] change electron build context detection, move mods package deps to main package --- app-el.js | 2 +- app.js | 60 ++++++++++++++++++++++++-------------- bin/electron-pre.js | 5 +++- mods/package.json | 16 ---------- package.json | 13 +++++---- src/kiri/mode/cam/topo3.js | 6 ++-- src/kiri/run/worker.js | 4 +-- 7 files changed, 55 insertions(+), 51 deletions(-) delete mode 100644 mods/package.json diff --git a/app-el.js b/app-el.js index e62ad888..d1d349b0 100644 --- a/app-el.js +++ b/app-el.js @@ -32,7 +32,7 @@ function createWindow() { height: 900, webPreferences: { // contextIsolation: true, - // nodeIntegration: false, + // nodeIntegration: true, // sandbox: true, // preload: undefined // nodeIntegration: true, diff --git a/app.js b/app.js index cbd8ee77..0eb91d3c 100644 --- a/app.js +++ b/app.js @@ -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 }); } diff --git a/bin/electron-pre.js b/bin/electron-pre.js index f4ff8e0b..7666b57b 100644 --- a/bin/electron-pre.js +++ b/bin/electron-pre.js @@ -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'); diff --git a/mods/package.json b/mods/package.json deleted file mode 100644 index 3b045dc1..00000000 --- a/mods/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "grid-apps-mods", - "version": "4.1.0", - "description": "grid.space app modules", - "author": "Stewart Allen ", - "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" - } -} diff --git a/package.json b/package.json index 5f33b694..3dbff9c5 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/src/kiri/mode/cam/topo3.js b/src/kiri/mode/cam/topo3.js index b70152c7..110c86a9 100644 --- a/src/kiri/mode/cam/topo3.js +++ b/src/kiri/mode/cam/topo3.js @@ -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