* Start porting artifact graph creation to Rust
* Add most of artifact graph creation
* Add handling loft command from recent PR
* Refactor artifact merge code so that it errors when a new artifact type is added
* Add sweep subtype
* Finish implementation of build artifact graph
* Fix wasm.ts to use new combined generated ts-rs file
* Fix Rust lints
* Fix lints
* Fix up replacement code
* Add artifact graph to WASM outcome
* Add artifact graph to simulation test output
* Add new artifact graph output snapshots
* Fix wall field and reduce unreachable code
* Change field order for subtype
* Change subtype to be determined from the request, like the TS
* Fix plane sweep_id
* Condense code
* Change ID types to be properly optional
* Change to favor the new ID, the same as TS
* Fix to make error impossible
* Rename artifact type tag values to match TS
* Fix name of field on Cap
* Update outputs
* Change to use Rust source range
* Update output snapshots
* Add conversion to mermaid mind map and add to snapshot tests
* Add new mermaid mind map output
* Add flowchart
* Remove raw artifact graph from tests
* Remove JSON artifact graph output
* Update output file with header
* Update output after adding flowchart
* Fix flowchart to not have duplicate edges, one in each direction
* Fix not not output duplicate edges in flowcharts
* Change flowchart edge style to be more obvious when a direction is missing
* Update output after deduplication of edges
* Fix not not skip sketch-on-face artifacts
* Add docs
* Fix edge iteration order to be stable
* Update output after fixing order
* Port TS artifactGraph.test.ts tests to simulation tests
* Add grouping segments and solid2ds with their path
* Update output flowcharts since grouping paths
* Remove TS artifactGraph tests
* Remove unused d3 dependencies
* Fix to track loft ID on paths
* Add command ID to error messages
* Move artifact graph test code to a separate file since it's a large file
* Reduce function visibility
* Remove TS artifact graph code
* Fix spelling error with serde
* Add TODO for edge cut consumed ID
* Add comment about mermaid edge rank
* Fix mermaid flowchart edge cuts to appear as children of their edges
* Update output since fixing flowchart order
* Fix to always build the artifact graph even when there's a KCL error
* Add artifact graph to error output
* Change optional ID merge to match TS
* Remove redundant SourceRange definition
* Remove Rust-flavored default source range function
* Add helper for source range creation
* Update doc comment for the website
* Update docs after doc comment change
* Fix to save engine responses in execution cache
* Remove unused import
* Fix to not call WASM function before beforeAll callback is run
* Remove more unused imports
* Add Rust side artifacts for startSketchOn face or plane
* Add Rust-generated artifacts to ExecOutcome
* Add output of artifact commands
* Add new output files
* Wire the artifact commands to the artifact graph creation
* Fix to use real PartialEq implemented in modeling commands
* Fix modeling commands with zero fields to work
* Fix missing artifactCommands field in errors
* Change artifact graph to be built from artifact commands
* Wire up ExecState artifacts, but not using them yet
Co-authored-by: Kurt Hutten <k.hutten@protonmail.ch>
* Remove unneeded local var
* Fix test to fail with a helpful error message when command isn't found
* Rename and deprecate orderedCommands
* Update comment about borrowing
* Move ArtifactCommand tracking to the EngineManager trait
* Update artifact commands since tracking in the engine
* Upgrade kittycad-modeling-cmds from 0.2.85 to 0.2.86
* Remove unneeded JsonSchema derive to speed up build
* Fix to not fail on floating point differences in CI
* Update artifact commands output since truncating floating point numbers
* Fix to ensure artifact commands get cleared after a clear scene
* Update artifact commands snapshot after clearing them on clear scene
* Remove all remnants of OrderedCommands
* Update output for new simulation tests
---------
Co-authored-by: Kurt Hutten <k.hutten@protonmail.ch>
* Add operations tracking for the timeline
* Change to only track certain stdlib functions as operations
* Update gen files
* Add operations to simulation snapshot tests
* Add tracking of positional function calls
* Fix generated field names to be camel case in TS
* Fix generated TS field names to match and better docs
* Fix order of ops with patternTransform
* Fix sweep to be included
* Add new expected test outputs
* Add tracking for startSketchOn
* Update ops output to include startSketchOn
* Fix serde field name
* Fix output field name
* Add tracking of operations that fail
* Add snapshots of operations even when there's a KCL execution error
* Add ops output for error executions
* Add operations output to executor error
* Update op source ranges
* Remove tracking of circle() and polygon() since they're not needed
* Update output without circle and polygon
* Fix to track patternCircular3d and patternLinear3d
* Remove tracking for mirror2d
* Update ops output
* Fix to track the correct source range of function definitions
---------
Co-authored-by: Frank Noirot <frank@zoo.dev>
* Send multiple errors and warnings to the frontend and LSP
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* Refactor the parser to use CompilationError for parsing errors rather than KclError
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* Refactoring: move CompilationError, etc.
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* Integrate compilation errors with the frontend and CodeMirror
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* Fix tests
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* Review comments
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* Fix module id/source range stuff
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* More test fixups
Signed-off-by: Nick Cameron <nrc@ncameron.org>
---------
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* Add ts_rs feature to work with indexmap
* Add feature for schemars to work with indexmap
* Add module ID to intern module paths
* Update code to use new source range with three fields
* Update generated files
* Update docs
* Fix wasm
* Fix TS code to use new SourceRange
* Fix TS tests to use new SourceRange and moduleId
* Fix formatting
* Fix to filter errors and source ranges to only show the top-level module
* Fix to reuse module IDs
* Fix to disallow empty path for import
* Revert unneeded Self change
* Rename field to be clearer
* Fix parser tests
* Update snapshots
* Change to not serialize module_id of 0
* Update snapshots after adding default module_id
* Move module_id functions to separate module
* Fix tests for console errors
* Proposal: module ID = 0 gets skipped when serializing tokens too (#4422)
Just like in AST nodes.
Also I think "is_top_level" communicates intention better than is_default
---------
Co-authored-by: Adam Chalmers <adam.chalmers@zoo.dev>
* working without clean up
* clean up dependencies
* use test not dev
* add tests for kclErrToDiagnostic
* remove jest config
* remove unneeded @ts-ignore