reflow build/serve of alt, update app-server dep for proper fallthrough handling
This commit is contained in:
parent
b046ae2fa8
commit
fc63f395a4
3 changed files with 54 additions and 86 deletions
104
app.js
104
app.js
|
|
@ -37,7 +37,6 @@ let util;
|
|||
let dir;
|
||||
let log;
|
||||
let pre;
|
||||
let alt;
|
||||
|
||||
const EventEmitter = require('events');
|
||||
class AppEmitter extends EventEmitter {}
|
||||
|
|
@ -65,7 +64,6 @@ function init(mod) {
|
|||
startTime = time();
|
||||
lastmod = mod.util.lastmod;
|
||||
logger = mod.log;
|
||||
alt = ENV.alt;
|
||||
pre = ENV.pre || mod.meta.pre;
|
||||
debug = ENV.debug || mod.meta.debug;
|
||||
oversion = ENV.over || mod.meta.over;
|
||||
|
|
@ -80,10 +78,6 @@ function init(mod) {
|
|||
dversion = debug ? `_${version}` : version;
|
||||
forceUseCache = ENV.cache ? true : false;
|
||||
|
||||
if (!ENV.electron) {
|
||||
generateDevices();
|
||||
}
|
||||
|
||||
if (pre) {
|
||||
for (let [k,v] of Object.entries(productionMap)) {
|
||||
productionMap[`${pre}${k}`] = `${pre}${v}`;
|
||||
|
|
@ -142,7 +136,8 @@ function init(mod) {
|
|||
return "reload";
|
||||
});
|
||||
}
|
||||
mod.add(rewriteHtmlVersion);
|
||||
mod.add(addAppHeaders);
|
||||
mod.static("/lib/", "alt");
|
||||
mod.static("/lib/", "src");
|
||||
mod.static("/obj/", "web/obj");
|
||||
mod.static("/font/", "web/font");
|
||||
|
|
@ -194,28 +189,26 @@ function init(mod) {
|
|||
}
|
||||
}
|
||||
|
||||
if (alt) {
|
||||
for (let [ key, val ] of Object.entries(append)) {
|
||||
let src = `src/main/${key}.js`;
|
||||
if (!fs.existsSync(src)) {
|
||||
logger.log('missing:', src);
|
||||
continue;
|
||||
}
|
||||
fs.mkdirSync(`alt/main`, { recursive: true });
|
||||
let body = fs.readFileSync(src);
|
||||
fs.writeFileSync(`alt/main/${key}.js`, body + val);
|
||||
if (true) {
|
||||
// packed
|
||||
src= `src/pack/${key}-main.js`;
|
||||
if (!fs.existsSync(src)) {
|
||||
logger.log('missing:', src);
|
||||
continue;
|
||||
}
|
||||
fs.mkdirSync(`alt/pack`, { recursive: true });
|
||||
body = fs.readFileSync(src);
|
||||
fs.writeFileSync(`alt/pack/${key}-main.js`, body + val);
|
||||
}
|
||||
// create alt artifacts with module extensions
|
||||
logger.log('create alt artifacts');
|
||||
for (let [ key, val ] of Object.entries(append)) {
|
||||
let src = `src/main/${key}.js`;
|
||||
if (!fs.existsSync(src)) {
|
||||
logger.log('missing:', src);
|
||||
continue;
|
||||
}
|
||||
fs.mkdirSync(`alt/main`, { recursive: true });
|
||||
let body = fs.readFileSync(src);
|
||||
fs.writeFileSync(`alt/main/${key}.js`, body + val);
|
||||
|
||||
src= `src/pack/${key}-main.js`;
|
||||
if (!fs.existsSync(src)) {
|
||||
logger.log('missing:', src);
|
||||
continue;
|
||||
}
|
||||
fs.mkdirSync(`alt/pack`, { recursive: true });
|
||||
body = fs.readFileSync(src);
|
||||
fs.writeFileSync(`alt/pack/${key}-main.js`, body + val);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -440,28 +433,6 @@ function serveWasm(req, res, next) {
|
|||
}
|
||||
}
|
||||
|
||||
// pack/concat device script strings to inject into /code/ scripts
|
||||
function generateDevices() {
|
||||
let root = PATH.join(dir,"src","kiri","dev");
|
||||
let devs = {};
|
||||
fs.readdirSync(root).forEach(type => {
|
||||
let map = devs[type] = devs[type] || {};
|
||||
fs.readdirSync(PATH.join(root,type)).forEach(device => {
|
||||
let deviceName = device.endsWith('.json')
|
||||
? device.substring(0,device.length-5)
|
||||
: device;
|
||||
map[deviceName] = JSON.parse(fs.readFileSync(PATH.join(root,type,device)));
|
||||
});
|
||||
});
|
||||
let dstr = JSON.stringify(devs);
|
||||
util.mkdir(PATH.join(dir,"src","pack"));
|
||||
fs.writeFileSync(PATH.join(dir,"src","pack","kiri-devs.js"), `export const devices = ${dstr};`);
|
||||
if (alt) {
|
||||
fs.mkdirSync('alt/pack', { recursive: true });
|
||||
fs.writeFileSync(PATH.join(dir,"alt","pack","kiri-devs.js"), `export const devices = ${dstr};`);
|
||||
}
|
||||
}
|
||||
|
||||
function minify(code) {
|
||||
let mini = uglify.minify(code.toString(), {
|
||||
compress: {
|
||||
|
|
@ -585,7 +556,7 @@ function cookieValue(cookie,key) {
|
|||
}
|
||||
}
|
||||
|
||||
function rewriteHtmlVersion(req, res, next) {
|
||||
function addAppHeaders(req, res, next) {
|
||||
if ([
|
||||
"/kiri/",
|
||||
"/mesh/",
|
||||
|
|
@ -599,37 +570,6 @@ function rewriteHtmlVersion(req, res, next) {
|
|||
].indexOf(req.app.path) >= 0) {
|
||||
addCorsHeaders(req, res);
|
||||
}
|
||||
if ([
|
||||
"/lib/main/kiri.js",
|
||||
"/lib/main/mesh.js"
|
||||
].indexOf(req.app.path) >= 0) {
|
||||
addCorsHeaders(req, res);
|
||||
// const data = append[req.app.path.split('/')[3].split('.')[0]];
|
||||
const data = append[req.app.path.split('.')[0].split('/').pop()];
|
||||
|
||||
if (!data) return next();
|
||||
if (debug) logger.log({ append: req.app.path, data: data.length });
|
||||
|
||||
const real_write = res.write;
|
||||
const real_end = res.end;
|
||||
let body = '';
|
||||
|
||||
res.write = function (chunk, encoding) {
|
||||
body += chunk.toString(encoding);
|
||||
};
|
||||
|
||||
res.end = function (chunk, encoding) {
|
||||
if (chunk) {
|
||||
body += chunk.toString(encoding);
|
||||
}
|
||||
body += data;
|
||||
res.setHeader('Content-Length', Buffer.byteLength(body));
|
||||
res.setHeader('Content-Type', "application/javascript; charset=utf-8");
|
||||
real_write.call(res, body);
|
||||
real_end.call(res);
|
||||
};
|
||||
}
|
||||
|
||||
next();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import { build, transform } from 'esbuild';
|
||||
import fs from 'fs/promises';
|
||||
import path from 'path';
|
||||
import glob from 'fast-glob';
|
||||
|
||||
// Get build mode from command line argument
|
||||
|
|
@ -38,6 +39,30 @@ async function appendExtraModules(extras, outfile, minify = false) {
|
|||
console.log(`Appended ${files.length} module(s) to ${outfile}`);
|
||||
}
|
||||
|
||||
async function generateDevices(dir = '') {
|
||||
let root = path.join(dir, "src", "kiri", "dev");
|
||||
let devs = {};
|
||||
let files = await fs.readdir(root);
|
||||
for (let type of files) {
|
||||
let map = devs[type] = devs[type] || {};
|
||||
let devices = await fs.readdir(path.join(root, type));
|
||||
for (let device of devices) {
|
||||
let deviceName = device.endsWith('.json')
|
||||
? device.substring(0, device.length - 5)
|
||||
: device;
|
||||
map[deviceName] = JSON.parse(await fs.readFile(path.join(root, type, device)));
|
||||
}
|
||||
}
|
||||
let dstr = JSON.stringify(devs);
|
||||
fs.mkdir(path.join(dir, "src", "pack"), { recursive: true });
|
||||
await fs.writeFile(path.join(dir, "src", "pack", "kiri-devs.js"), `export const devices = ${dstr};`);
|
||||
if (true) {
|
||||
// create alt artifacts
|
||||
await fs.mkdir('alt/pack', { recursive: true });
|
||||
await fs.writeFile(path.join(dir, "alt", "pack", "kiri-devs.js"), `export const devices = ${dstr};`);
|
||||
}
|
||||
}
|
||||
|
||||
const logOverride = {
|
||||
'duplicate-class-member': 'silent',
|
||||
'duplicate-object-key': 'silent',
|
||||
|
|
@ -72,6 +97,9 @@ const rec = {
|
|||
|
||||
async function buildApp() {
|
||||
try {
|
||||
// Concatenate kiri devices
|
||||
generateDevices();
|
||||
|
||||
// Bundle mesh main app
|
||||
await build(Object.assign({}, rec, {
|
||||
entryPoints: [ 'src/main/mesh.js' ],
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-free": "^6.1.1",
|
||||
"@gridspace/app-server": "github:gridspace/app-server#v0.0.19",
|
||||
"@gridspace/app-server": "github:gridspace/app-server#v0.0.20",
|
||||
"@gridspace/basic-ftp": "github:gridspace/basic-ftp#v5.0.5-gridspace",
|
||||
"@gridspace/net-level-client": "^0.2.3",
|
||||
"@gridspace/raster-path": "^1.0.6",
|
||||
|
|
@ -57,7 +57,7 @@
|
|||
"npm": "^11.4.2",
|
||||
"prettier": "^3.5.3",
|
||||
"react-responsive-carousel": "^3.2.23",
|
||||
"serve-static": "^1.14.1",
|
||||
"serve-static": "^2.2.0",
|
||||
"three": "^0.178.0",
|
||||
"three-mesh-bvh": "^0.7.6",
|
||||
"uglify-js": "3.14.5",
|
||||
|
|
@ -103,8 +103,8 @@
|
|||
"dryrun": "gs-app-server --debug --single --alt --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 dryrun && npm run bundle:dev",
|
||||
"pack-prod": "npm run dryrun && npm run webpack-src prod && npm run dryrun && 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 prod && node bin/electron-pre.js",
|
||||
"preinstall": "node bin/install-pre.js",
|
||||
|
|
|
|||
Loading…
Reference in a new issue