From 438a9135e4ceb30ec0d5ad24e22d92b3160c8991 Mon Sep 17 00:00:00 2001 From: Davor Hrg Date: Mon, 26 Jul 2021 22:57:22 +0200 Subject: [PATCH] unhealthy on err --- app/web/public/demo-worker.js | 16 +++++++++++++-- .../helpers/cadPackages/jsCadController.ts | 20 +++++++++++-------- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/app/web/public/demo-worker.js b/app/web/public/demo-worker.js index 4833ca6..8900fa1 100644 --- a/app/web/public/demo-worker.js +++ b/app/web/public/demo-worker.js @@ -246,7 +246,13 @@ const makeScriptWorker = ({callback, convertToSolids})=>{ function runMain(params={}){ console.log('runMain'); let time = Date.now() - let solids = main(params) + let solids + try{ + solids = main(params) + }catch(e){ + callback({action:'entities', worker:'render', error:e.message, stack:e.stack.toString()}, transfer) + return + } let solidsTime = Date.now() - time scriptStats = `generate solids ${solidsTime}ms` @@ -271,7 +277,13 @@ const makeScriptWorker = ({callback, convertToSolids})=>{ if(!initialized){ onInit = ()=>handlers.runScript({script,url, params}) } - let script_module = requireModule(url,script) + let script_module + try{ + script_module = requireModule(url,script) + }catch(e){ + callback({action:'entities', worker:'render', error:e.message, stack:e.stack.toString()}) + return + } main = script_module.exports.main let gp = script_module.exports.getParameterDefinitions if(gp){ diff --git a/app/web/src/helpers/cadPackages/jsCadController.ts b/app/web/src/helpers/cadPackages/jsCadController.ts index ebe34a9..c06901d 100644 --- a/app/web/src/helpers/cadPackages/jsCadController.ts +++ b/app/web/src/helpers/cadPackages/jsCadController.ts @@ -75,14 +75,18 @@ self.addEventListener('message', (e)=>worker.postMessage(e.data)) console.log('message from worker', e.data) let data = e.data if(data.action == 'entities'){ - let group = new Group() - data.entities.map(CSG2Object3D).filter(o=>o).forEach(o=>group.add(o)) - response = createHealthyResponse( { - type: 'geometry', - data: group, - consoleMessage: data.scriptStats, - date: new Date(), - }) + if(data.error){ + response = createUnhealthyResponse( new Date(),data.error ) + }else{ + let group = new Group() + data.entities.map(CSG2Object3D).filter(o=>o).forEach(o=>group.add(o)) + response = createHealthyResponse( { + type: 'geometry', + data: group, + consoleMessage: data.scriptStats, + date: new Date(), + }) + } callResolve() } })