Merge branch 'main' into kurt-bring-back-multi-profile

This commit is contained in:
Jonathan Tran
2025-01-08 21:08:47 -05:00
348 changed files with 127823 additions and 2699 deletions

View File

@ -1,4 +1,5 @@
import init, {
import {
init,
parse_wasm,
recast_wasm,
execute,
@ -16,7 +17,9 @@ import init, {
default_project_settings,
base64_decode,
clear_scene_and_bust_cache,
} from '../wasm-lib/pkg/wasm_lib'
reloadModule,
} from 'lib/wasm_lib_wrapper'
import { KCLError } from './errors'
import { KclError as RustKclError } from '../wasm-lib/kcl/bindings/KclError'
import { EngineCommandManager } from './std/engineConnection'
@ -35,7 +38,7 @@ import { Configuration } from 'wasm-lib/kcl/bindings/Configuration'
import { DeepPartial } from 'lib/types'
import { ProjectConfiguration } from 'wasm-lib/kcl/bindings/ProjectConfiguration'
import { Sketch } from '../wasm-lib/kcl/bindings/Sketch'
import { ExecState as RawExecState } from '../wasm-lib/kcl/bindings/ExecState'
import { ExecOutcome as RustExecOutcome } from 'wasm-lib/kcl/bindings/ExecOutcome'
import { ProgramMemory as RawProgramMemory } from '../wasm-lib/kcl/bindings/ProgramMemory'
import { EnvironmentRef } from '../wasm-lib/kcl/bindings/EnvironmentRef'
import { Environment } from '../wasm-lib/kcl/bindings/Environment'
@ -43,11 +46,14 @@ import { Node } from 'wasm-lib/kcl/bindings/Node'
import { CompilationError } from 'wasm-lib/kcl/bindings/CompilationError'
import { SourceRange as RustSourceRange } from 'wasm-lib/kcl/bindings/SourceRange'
import { getAllCurrentSettings } from 'lib/settings/settingsUtils'
import { Operation } from 'wasm-lib/kcl/bindings/Operation'
import { KclErrorWithOutputs } from 'wasm-lib/kcl/bindings/KclErrorWithOutputs'
import { Artifact } from 'wasm-lib/kcl/bindings/Artifact'
import { ArtifactId } from 'wasm-lib/kcl/bindings/ArtifactId'
import { ArtifactCommand } from 'wasm-lib/kcl/bindings/ArtifactCommand'
export type { Artifact } from 'wasm-lib/kcl/bindings/Artifact'
export type { ArtifactCommand } from 'wasm-lib/kcl/bindings/ArtifactCommand'
export type { ArtifactId } from 'wasm-lib/kcl/bindings/ArtifactId'
export type { Configuration } from 'wasm-lib/kcl/bindings/Configuration'
export type { Program } from '../wasm-lib/kcl/bindings/Program'
@ -147,6 +153,7 @@ export const wasmUrl = () => {
// Initialise the wasm module.
const initialise = async () => {
try {
await reloadModule()
const fullUrl = wasmUrl()
const input = await fetch(fullUrl)
const buffer = await input.arrayBuffer()
@ -226,6 +233,7 @@ export const parse = (code: string | Error): ParseResult | Error => {
parsed.kind,
parsed.msg,
sourceRangeFromRust(parsed.sourceRanges[0]),
[],
[]
)
}
@ -249,7 +257,9 @@ export const isPathToNodeNumber = (
export interface ExecState {
memory: ProgramMemory
operations: Operation[]
artifacts: { [key in ArtifactId]?: Artifact }
artifactCommands: ArtifactCommand[]
}
/**
@ -259,14 +269,18 @@ export interface ExecState {
export function emptyExecState(): ExecState {
return {
memory: ProgramMemory.empty(),
operations: [],
artifacts: {},
artifactCommands: [],
}
}
function execStateFromRaw(raw: RawExecState): ExecState {
function execStateFromRust(execOutcome: RustExecOutcome): ExecState {
return {
memory: ProgramMemory.fromRaw(raw.modLocal.memory),
artifacts: raw.global.artifacts,
memory: ProgramMemory.fromRaw(execOutcome.memory),
operations: execOutcome.operations,
artifacts: execOutcome.artifacts,
artifactCommands: execOutcome.artifactCommands,
}
}
@ -518,14 +532,14 @@ export const executor = async (
jsAppSettings = getAllCurrentSettings(lastSettingsSnapshot)
}
}
const execState: RawExecState = await execute(
const execOutcome: RustExecOutcome = await execute(
JSON.stringify(node),
JSON.stringify(programMemoryOverride?.toRaw() || null),
JSON.stringify({ settings: jsAppSettings }),
engineCommandManager,
fileSystemManager
)
return execStateFromRaw(execState)
return execStateFromRust(execOutcome)
} catch (e: any) {
console.log(e)
const parsed: KclErrorWithOutputs = JSON.parse(e.toString())
@ -533,7 +547,8 @@ export const executor = async (
parsed.error.kind,
parsed.error.msg,
sourceRangeFromRust(parsed.error.sourceRanges[0]),
parsed.operations
parsed.operations,
parsed.artifactCommands
)
return Promise.reject(kclError)
@ -593,6 +608,7 @@ export const modifyAstForSketch = async (
parsed.kind,
parsed.msg,
sourceRangeFromRust(parsed.sourceRanges[0]),
[],
[]
)
@ -662,6 +678,7 @@ export function programMemoryInit(): ProgramMemory | Error {
parsed.kind,
parsed.msg,
sourceRangeFromRust(parsed.sourceRanges[0]),
[],
[]
)
}