Is mock mode to fix errors when cap end or ids dont exist. (#1913)

* add is_mock

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* js side

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* is mock mode

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fix cargo tests

Signed-off-by: Jess Frazelle <github@jessfraz.com>

---------

Signed-off-by: Jess Frazelle <github@jessfraz.com>
This commit is contained in:
Jess Frazelle
2024-03-26 19:32:31 -07:00
committed by GitHub
parent dce5833d79
commit 86de039dc4
18 changed files with 71 additions and 177 deletions

View File

@ -127,13 +127,15 @@ export interface ProgramMemory {
export const executor = async ( export const executor = async (
node: Program, node: Program,
programMemory: ProgramMemory = { root: {}, return: null }, programMemory: ProgramMemory = { root: {}, return: null },
engineCommandManager: EngineCommandManager engineCommandManager: EngineCommandManager,
isMock: boolean = false
): Promise<ProgramMemory> => { ): Promise<ProgramMemory> => {
engineCommandManager.startNewSession() engineCommandManager.startNewSession()
const _programMemory = await _executor( const _programMemory = await _executor(
node, node,
programMemory, programMemory,
engineCommandManager engineCommandManager,
isMock
) )
await engineCommandManager.waitForAllCommands() await engineCommandManager.waitForAllCommands()
@ -148,7 +150,8 @@ const getSettingsState = import('components/SettingsAuthProvider').then(
export const _executor = async ( export const _executor = async (
node: Program, node: Program,
programMemory: ProgramMemory = { root: {}, return: null }, programMemory: ProgramMemory = { root: {}, return: null },
engineCommandManager: EngineCommandManager engineCommandManager: EngineCommandManager,
isMock: boolean
): Promise<ProgramMemory> => { ): Promise<ProgramMemory> => {
try { try {
const baseUnit = (await getSettingsState)()?.baseUnit || 'mm' const baseUnit = (await getSettingsState)()?.baseUnit || 'mm'
@ -157,7 +160,8 @@ export const _executor = async (
JSON.stringify(programMemory), JSON.stringify(programMemory),
baseUnit, baseUnit,
engineCommandManager, engineCommandManager,
fileSystemManager fileSystemManager,
isMock
) )
return memory return memory
} catch (e: any) { } catch (e: any) {

View File

@ -66,7 +66,7 @@ export async function enginelessExecutor(
}) as any as EngineCommandManager }) as any as EngineCommandManager
await mockEngineCommandManager.waitForReady await mockEngineCommandManager.waitForReady
mockEngineCommandManager.startNewSession() mockEngineCommandManager.startNewSession()
const programMemory = await _executor(ast, pm, mockEngineCommandManager) const programMemory = await _executor(ast, pm, mockEngineCommandManager, true)
await mockEngineCommandManager.waitForAllCommands() await mockEngineCommandManager.waitForAllCommands()
return programMemory return programMemory
} }
@ -86,7 +86,7 @@ export async function executor(
}) })
await engineCommandManager.waitForReady await engineCommandManager.waitForReady
engineCommandManager.startNewSession() engineCommandManager.startNewSession()
const programMemory = await _executor(ast, pm, engineCommandManager) const programMemory = await _executor(ast, pm, engineCommandManager, false)
await engineCommandManager.waitForAllCommands() await engineCommandManager.waitForAllCommands()
return programMemory return programMemory
} }

View File

@ -263,7 +263,7 @@ export async function executeAst({
} }
const programMemory = await (useFakeExecutor const programMemory = await (useFakeExecutor
? enginelessExecutor(ast, programMemoryOverride || programMemoryInit()) ? enginelessExecutor(ast, programMemoryOverride || programMemoryInit())
: _executor(ast, programMemoryInit(), engineCommandManager)) : _executor(ast, programMemoryInit(), engineCommandManager, false))
await engineCommandManager.waitForAllCommands() await engineCommandManager.waitForAllCommands()
return { return {

View File

@ -778,12 +778,7 @@ fn generate_code_block_test(fn_name: &str, code_block: &str, index: usize) -> pr
let parser = crate::parser::Parser::new(tokens); let parser = crate::parser::Parser::new(tokens);
let program = parser.ast().unwrap(); let program = parser.ast().unwrap();
let mut mem: crate::executor::ProgramMemory = Default::default(); let mut mem: crate::executor::ProgramMemory = Default::default();
let ctx = crate::executor::ExecutorContext { let ctx = crate::executor::ExecutorContext::new(ws,kittycad::types::UnitLength::Mm).await.unwrap();
engine: std::sync::Arc::new(Box::new(crate::engine::conn::EngineConnection::new(ws).await.unwrap())),
fs: crate::fs::FileManager::new(),
stdlib: std::sync::Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm,
};
crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx).await.unwrap(); crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx).await.unwrap();
} }

View File

@ -29,16 +29,9 @@ mod test_examples_show {
let parser = crate::parser::Parser::new(tokens); let parser = crate::parser::Parser::new(tokens);
let program = parser.ast().unwrap(); let program = parser.ast().unwrap();
let mut mem: crate::executor::ProgramMemory = Default::default(); let mut mem: crate::executor::ProgramMemory = Default::default();
let ctx = crate::executor::ExecutorContext { let ctx = crate::executor::ExecutorContext::new(ws, kittycad::types::UnitLength::Mm)
engine: std::sync::Arc::new(Box::new( .await
crate::engine::conn::EngineConnection::new(ws) .unwrap();
.await
.unwrap(),
)),
fs: crate::fs::FileManager::new(),
stdlib: std::sync::Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm,
};
crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx) crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx)
.await .await
.unwrap(); .unwrap();
@ -73,16 +66,9 @@ mod test_examples_show {
let parser = crate::parser::Parser::new(tokens); let parser = crate::parser::Parser::new(tokens);
let program = parser.ast().unwrap(); let program = parser.ast().unwrap();
let mut mem: crate::executor::ProgramMemory = Default::default(); let mut mem: crate::executor::ProgramMemory = Default::default();
let ctx = crate::executor::ExecutorContext { let ctx = crate::executor::ExecutorContext::new(ws, kittycad::types::UnitLength::Mm)
engine: std::sync::Arc::new(Box::new( .await
crate::engine::conn::EngineConnection::new(ws) .unwrap();
.await
.unwrap(),
)),
fs: crate::fs::FileManager::new(),
stdlib: std::sync::Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm,
};
crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx) crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx)
.await .await
.unwrap(); .unwrap();

View File

@ -29,16 +29,9 @@ mod test_examples_show {
let parser = crate::parser::Parser::new(tokens); let parser = crate::parser::Parser::new(tokens);
let program = parser.ast().unwrap(); let program = parser.ast().unwrap();
let mut mem: crate::executor::ProgramMemory = Default::default(); let mut mem: crate::executor::ProgramMemory = Default::default();
let ctx = crate::executor::ExecutorContext { let ctx = crate::executor::ExecutorContext::new(ws, kittycad::types::UnitLength::Mm)
engine: std::sync::Arc::new(Box::new( .await
crate::engine::conn::EngineConnection::new(ws) .unwrap();
.await
.unwrap(),
)),
fs: crate::fs::FileManager::new(),
stdlib: std::sync::Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm,
};
crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx) crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx)
.await .await
.unwrap(); .unwrap();

View File

@ -29,16 +29,9 @@ mod test_examples_my_func {
let parser = crate::parser::Parser::new(tokens); let parser = crate::parser::Parser::new(tokens);
let program = parser.ast().unwrap(); let program = parser.ast().unwrap();
let mut mem: crate::executor::ProgramMemory = Default::default(); let mut mem: crate::executor::ProgramMemory = Default::default();
let ctx = crate::executor::ExecutorContext { let ctx = crate::executor::ExecutorContext::new(ws, kittycad::types::UnitLength::Mm)
engine: std::sync::Arc::new(Box::new( .await
crate::engine::conn::EngineConnection::new(ws) .unwrap();
.await
.unwrap(),
)),
fs: crate::fs::FileManager::new(),
stdlib: std::sync::Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm,
};
crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx) crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx)
.await .await
.unwrap(); .unwrap();
@ -73,16 +66,9 @@ mod test_examples_my_func {
let parser = crate::parser::Parser::new(tokens); let parser = crate::parser::Parser::new(tokens);
let program = parser.ast().unwrap(); let program = parser.ast().unwrap();
let mut mem: crate::executor::ProgramMemory = Default::default(); let mut mem: crate::executor::ProgramMemory = Default::default();
let ctx = crate::executor::ExecutorContext { let ctx = crate::executor::ExecutorContext::new(ws, kittycad::types::UnitLength::Mm)
engine: std::sync::Arc::new(Box::new( .await
crate::engine::conn::EngineConnection::new(ws) .unwrap();
.await
.unwrap(),
)),
fs: crate::fs::FileManager::new(),
stdlib: std::sync::Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm,
};
crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx) crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx)
.await .await
.unwrap(); .unwrap();

View File

@ -30,16 +30,9 @@ mod test_examples_import {
let parser = crate::parser::Parser::new(tokens); let parser = crate::parser::Parser::new(tokens);
let program = parser.ast().unwrap(); let program = parser.ast().unwrap();
let mut mem: crate::executor::ProgramMemory = Default::default(); let mut mem: crate::executor::ProgramMemory = Default::default();
let ctx = crate::executor::ExecutorContext { let ctx = crate::executor::ExecutorContext::new(ws, kittycad::types::UnitLength::Mm)
engine: std::sync::Arc::new(Box::new( .await
crate::engine::conn::EngineConnection::new(ws) .unwrap();
.await
.unwrap(),
)),
fs: crate::fs::FileManager::new(),
stdlib: std::sync::Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm,
};
crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx) crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx)
.await .await
.unwrap(); .unwrap();
@ -75,16 +68,9 @@ mod test_examples_import {
let parser = crate::parser::Parser::new(tokens); let parser = crate::parser::Parser::new(tokens);
let program = parser.ast().unwrap(); let program = parser.ast().unwrap();
let mut mem: crate::executor::ProgramMemory = Default::default(); let mut mem: crate::executor::ProgramMemory = Default::default();
let ctx = crate::executor::ExecutorContext { let ctx = crate::executor::ExecutorContext::new(ws, kittycad::types::UnitLength::Mm)
engine: std::sync::Arc::new(Box::new( .await
crate::engine::conn::EngineConnection::new(ws) .unwrap();
.await
.unwrap(),
)),
fs: crate::fs::FileManager::new(),
stdlib: std::sync::Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm,
};
crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx) crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx)
.await .await
.unwrap(); .unwrap();

View File

@ -29,16 +29,9 @@ mod test_examples_line_to {
let parser = crate::parser::Parser::new(tokens); let parser = crate::parser::Parser::new(tokens);
let program = parser.ast().unwrap(); let program = parser.ast().unwrap();
let mut mem: crate::executor::ProgramMemory = Default::default(); let mut mem: crate::executor::ProgramMemory = Default::default();
let ctx = crate::executor::ExecutorContext { let ctx = crate::executor::ExecutorContext::new(ws, kittycad::types::UnitLength::Mm)
engine: std::sync::Arc::new(Box::new( .await
crate::engine::conn::EngineConnection::new(ws) .unwrap();
.await
.unwrap(),
)),
fs: crate::fs::FileManager::new(),
stdlib: std::sync::Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm,
};
crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx) crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx)
.await .await
.unwrap(); .unwrap();
@ -73,16 +66,9 @@ mod test_examples_line_to {
let parser = crate::parser::Parser::new(tokens); let parser = crate::parser::Parser::new(tokens);
let program = parser.ast().unwrap(); let program = parser.ast().unwrap();
let mut mem: crate::executor::ProgramMemory = Default::default(); let mut mem: crate::executor::ProgramMemory = Default::default();
let ctx = crate::executor::ExecutorContext { let ctx = crate::executor::ExecutorContext::new(ws, kittycad::types::UnitLength::Mm)
engine: std::sync::Arc::new(Box::new( .await
crate::engine::conn::EngineConnection::new(ws) .unwrap();
.await
.unwrap(),
)),
fs: crate::fs::FileManager::new(),
stdlib: std::sync::Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm,
};
crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx) crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx)
.await .await
.unwrap(); .unwrap();

View File

@ -29,16 +29,9 @@ mod test_examples_min {
let parser = crate::parser::Parser::new(tokens); let parser = crate::parser::Parser::new(tokens);
let program = parser.ast().unwrap(); let program = parser.ast().unwrap();
let mut mem: crate::executor::ProgramMemory = Default::default(); let mut mem: crate::executor::ProgramMemory = Default::default();
let ctx = crate::executor::ExecutorContext { let ctx = crate::executor::ExecutorContext::new(ws, kittycad::types::UnitLength::Mm)
engine: std::sync::Arc::new(Box::new( .await
crate::engine::conn::EngineConnection::new(ws) .unwrap();
.await
.unwrap(),
)),
fs: crate::fs::FileManager::new(),
stdlib: std::sync::Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm,
};
crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx) crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx)
.await .await
.unwrap(); .unwrap();
@ -73,16 +66,9 @@ mod test_examples_min {
let parser = crate::parser::Parser::new(tokens); let parser = crate::parser::Parser::new(tokens);
let program = parser.ast().unwrap(); let program = parser.ast().unwrap();
let mut mem: crate::executor::ProgramMemory = Default::default(); let mut mem: crate::executor::ProgramMemory = Default::default();
let ctx = crate::executor::ExecutorContext { let ctx = crate::executor::ExecutorContext::new(ws, kittycad::types::UnitLength::Mm)
engine: std::sync::Arc::new(Box::new( .await
crate::engine::conn::EngineConnection::new(ws) .unwrap();
.await
.unwrap(),
)),
fs: crate::fs::FileManager::new(),
stdlib: std::sync::Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm,
};
crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx) crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx)
.await .await
.unwrap(); .unwrap();

View File

@ -29,16 +29,9 @@ mod test_examples_show {
let parser = crate::parser::Parser::new(tokens); let parser = crate::parser::Parser::new(tokens);
let program = parser.ast().unwrap(); let program = parser.ast().unwrap();
let mut mem: crate::executor::ProgramMemory = Default::default(); let mut mem: crate::executor::ProgramMemory = Default::default();
let ctx = crate::executor::ExecutorContext { let ctx = crate::executor::ExecutorContext::new(ws, kittycad::types::UnitLength::Mm)
engine: std::sync::Arc::new(Box::new( .await
crate::engine::conn::EngineConnection::new(ws) .unwrap();
.await
.unwrap(),
)),
fs: crate::fs::FileManager::new(),
stdlib: std::sync::Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm,
};
crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx) crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx)
.await .await
.unwrap(); .unwrap();

View File

@ -30,16 +30,9 @@ mod test_examples_import {
let parser = crate::parser::Parser::new(tokens); let parser = crate::parser::Parser::new(tokens);
let program = parser.ast().unwrap(); let program = parser.ast().unwrap();
let mut mem: crate::executor::ProgramMemory = Default::default(); let mut mem: crate::executor::ProgramMemory = Default::default();
let ctx = crate::executor::ExecutorContext { let ctx = crate::executor::ExecutorContext::new(ws, kittycad::types::UnitLength::Mm)
engine: std::sync::Arc::new(Box::new( .await
crate::engine::conn::EngineConnection::new(ws) .unwrap();
.await
.unwrap(),
)),
fs: crate::fs::FileManager::new(),
stdlib: std::sync::Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm,
};
crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx) crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx)
.await .await
.unwrap(); .unwrap();

View File

@ -30,16 +30,9 @@ mod test_examples_import {
let parser = crate::parser::Parser::new(tokens); let parser = crate::parser::Parser::new(tokens);
let program = parser.ast().unwrap(); let program = parser.ast().unwrap();
let mut mem: crate::executor::ProgramMemory = Default::default(); let mut mem: crate::executor::ProgramMemory = Default::default();
let ctx = crate::executor::ExecutorContext { let ctx = crate::executor::ExecutorContext::new(ws, kittycad::types::UnitLength::Mm)
engine: std::sync::Arc::new(Box::new( .await
crate::engine::conn::EngineConnection::new(ws) .unwrap();
.await
.unwrap(),
)),
fs: crate::fs::FileManager::new(),
stdlib: std::sync::Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm,
};
crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx) crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx)
.await .await
.unwrap(); .unwrap();

View File

@ -30,16 +30,9 @@ mod test_examples_import {
let parser = crate::parser::Parser::new(tokens); let parser = crate::parser::Parser::new(tokens);
let program = parser.ast().unwrap(); let program = parser.ast().unwrap();
let mut mem: crate::executor::ProgramMemory = Default::default(); let mut mem: crate::executor::ProgramMemory = Default::default();
let ctx = crate::executor::ExecutorContext { let ctx = crate::executor::ExecutorContext::new(ws, kittycad::types::UnitLength::Mm)
engine: std::sync::Arc::new(Box::new( .await
crate::engine::conn::EngineConnection::new(ws) .unwrap();
.await
.unwrap(),
)),
fs: crate::fs::FileManager::new(),
stdlib: std::sync::Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm,
};
crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx) crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx)
.await .await
.unwrap(); .unwrap();

View File

@ -29,16 +29,9 @@ mod test_examples_show {
let parser = crate::parser::Parser::new(tokens); let parser = crate::parser::Parser::new(tokens);
let program = parser.ast().unwrap(); let program = parser.ast().unwrap();
let mut mem: crate::executor::ProgramMemory = Default::default(); let mut mem: crate::executor::ProgramMemory = Default::default();
let ctx = crate::executor::ExecutorContext { let ctx = crate::executor::ExecutorContext::new(ws, kittycad::types::UnitLength::Mm)
engine: std::sync::Arc::new(Box::new( .await
crate::engine::conn::EngineConnection::new(ws) .unwrap();
.await
.unwrap(),
)),
fs: crate::fs::FileManager::new(),
stdlib: std::sync::Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm,
};
crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx) crate::executor::execute(program, &mut mem, crate::executor::BodyType::Root, &ctx)
.await .await
.unwrap(); .unwrap();

View File

@ -983,11 +983,13 @@ pub struct ExecutorContext {
pub fs: FileManager, pub fs: FileManager,
pub stdlib: Arc<StdLib>, pub stdlib: Arc<StdLib>,
pub units: kittycad::types::UnitLength, pub units: kittycad::types::UnitLength,
/// Mock mode is only for the modeling app when they just want to mock engine calls and not
/// actually make them.
pub is_mock: bool,
} }
impl ExecutorContext { impl ExecutorContext {
/// Create a new default executor context. /// Create a new default executor context.
#[cfg(not(test))]
#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))]
pub async fn new(ws: reqwest::Upgraded, units: kittycad::types::UnitLength) -> Result<Self> { pub async fn new(ws: reqwest::Upgraded, units: kittycad::types::UnitLength) -> Result<Self> {
Ok(Self { Ok(Self {
@ -995,6 +997,7 @@ impl ExecutorContext {
fs: FileManager::new(), fs: FileManager::new(),
stdlib: Arc::new(StdLib::new()), stdlib: Arc::new(StdLib::new()),
units, units,
is_mock: false,
}) })
} }
} }
@ -1302,6 +1305,7 @@ mod tests {
fs: crate::fs::FileManager::new(), fs: crate::fs::FileManager::new(),
stdlib: Arc::new(crate::std::StdLib::new()), stdlib: Arc::new(crate::std::StdLib::new()),
units: kittycad::types::UnitLength::Mm, units: kittycad::types::UnitLength::Mm,
is_mock: false,
}; };
let memory = execute(program, &mut mem, BodyType::Root, &ctx).await?; let memory = execute(program, &mut mem, BodyType::Root, &ctx).await?;

View File

@ -125,8 +125,8 @@ pub(crate) async fn do_post_extrude(
// Create a hashmap for quick id lookup // Create a hashmap for quick id lookup
let mut face_id_map = std::collections::HashMap::new(); let mut face_id_map = std::collections::HashMap::new();
// creating fake ids for start and end caps is to make extrudes mock-execute safe // creating fake ids for start and end caps is to make extrudes mock-execute safe
let mut start_cap_id = Some(Uuid::new_v4()); let mut start_cap_id = if args.ctx.is_mock { Some(Uuid::new_v4()) } else { None };
let mut end_cap_id = Some(Uuid::new_v4()); let mut end_cap_id = if args.ctx.is_mock { Some(Uuid::new_v4()) } else { None };
for face_info in face_infos { for face_info in face_infos {
match face_info.cap { match face_info.cap {
@ -172,7 +172,8 @@ pub(crate) async fn do_post_extrude(
new_value.push(extrude_surface); new_value.push(extrude_surface);
} }
} }
} else { } else if args.ctx.is_mock {
// Only pre-populate the extrude surface if we are in mock mode.
new_value.push(ExtrudeSurface::ExtrudePlane(crate::executor::ExtrudePlane { new_value.push(ExtrudeSurface::ExtrudePlane(crate::executor::ExtrudePlane {
position: sketch_group.position, // TODO should be for the extrude surface position: sketch_group.position, // TODO should be for the extrude surface
rotation: sketch_group.rotation, // TODO should be for the extrude surface rotation: sketch_group.rotation, // TODO should be for the extrude surface

View File

@ -19,6 +19,7 @@ pub async fn execute_wasm(
units: &str, units: &str,
engine_manager: kcl_lib::engine::conn_wasm::EngineCommandManager, engine_manager: kcl_lib::engine::conn_wasm::EngineCommandManager,
fs_manager: kcl_lib::fs::wasm::FileSystemManager, fs_manager: kcl_lib::fs::wasm::FileSystemManager,
is_mock: bool,
) -> Result<JsValue, String> { ) -> Result<JsValue, String> {
console_error_panic_hook::set_once(); console_error_panic_hook::set_once();
// deserialize the ast from a stringified json // deserialize the ast from a stringified json
@ -37,6 +38,7 @@ pub async fn execute_wasm(
fs, fs,
stdlib: std::sync::Arc::new(kcl_lib::std::StdLib::new()), stdlib: std::sync::Arc::new(kcl_lib::std::StdLib::new()),
units, units,
is_mock,
}; };
let memory = kcl_lib::executor::execute(program, &mut mem, kcl_lib::executor::BodyType::Root, &ctx) let memory = kcl_lib::executor::execute(program, &mut mem, kcl_lib::executor::BodyType::Root, &ctx)