From 06c4f8829d09ff20be9e564d1d183634dcdfb41c Mon Sep 17 00:00:00 2001 From: "Bryan A. Jones" Date: Fri, 26 Dec 2025 08:22:21 -0600 Subject: [PATCH 1/7] Add: improve accessibility using content sectioning tags. --- client/src/css/CodeChatEditorProject.css | 4 ++-- server/src/webserver.rs | 22 +++++++++++++--------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/client/src/css/CodeChatEditorProject.css b/client/src/css/CodeChatEditorProject.css index 377e200..f3cb0df 100644 --- a/client/src/css/CodeChatEditorProject.css +++ b/client/src/css/CodeChatEditorProject.css @@ -43,17 +43,17 @@ body { padding: var(--body-padding); margin: 0px; overflow: hidden; + display: flex; } /* TODO: This is a overly simple, non-responsive layout to create a sidebar containing the table of contents. Fix. */ -#CodeChat-sidebar { +#CodeChat-sidebar, #CodeChat-sidebar-nav { width: var(--sidebar-width); height: calc(100vh - 2 * var(--body-padding)); border: 0px; } #CodeChat-contents { - float: right; width: calc(100vw - var(--sidebar-width) - 2 * var(--body-padding)); } diff --git a/server/src/webserver.rs b/server/src/webserver.rs index 7e5df7f..b7d1cdc 100644 --- a/server/src/webserver.rs +++ b/server/src/webserver.rs @@ -873,7 +873,7 @@ pub async fn file_to_response( let (sidebar_iframe, sidebar_css) = if is_project { ( format!( - r#""#, + r#""#, path_to_toc.unwrap().to_slash_lossy() ), format!( @@ -1001,15 +1001,19 @@ pub async fn file_to_response( {sidebar_iframe}
-
-
-

- {name} - {dir} -

+
+
+
+

+ {name} - {dir} +

+
+
-
-
-
+ +
+
+
From 2c3d1846166df5f54b8aba61e42f48b681a335c4 Mon Sep 17 00:00:00 2001 From: "Bryan A. Jones" Date: Sat, 27 Dec 2025 18:04:40 -0600 Subject: [PATCH 2/7] Fix: correctly handle differences in the
element. --- server/src/translation.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/server/src/translation.rs b/server/src/translation.rs index dbd7659..b27a6cc 100644 --- a/server/src/translation.rs +++ b/server/src/translation.rs @@ -1229,12 +1229,15 @@ fn compare_html( .map(|c: char| if c == '\n' { ' ' } else { c }) } + // Normalized `
` elements are followed by a newline; raw `
` elements aren't. Remove the newline. + let fixed_normalized_html = normalized_html.replace("
\n", "
"); + // Transforming the HTML with an empty transform normalizes it but leave it // otherwise unchanged. if let Ok(normalized_raw_html) = transform_html(raw_html, |_node| {}) { // Ignore word wrapping and leading/trailing whitespace in the // comparison. - map_newlines_to_spaces(normalized_html).eq(map_newlines_to_spaces(&normalized_raw_html)) + map_newlines_to_spaces(&fixed_normalized_html).eq(map_newlines_to_spaces(&normalized_raw_html)) } else { false } From e319fd76dc042efc88807866f9a5795419324aa3 Mon Sep 17 00:00:00 2001 From: "Bryan A. Jones" Date: Mon, 29 Dec 2025 15:41:30 -0600 Subject: [PATCH 3/7] Docs: include intro video in readme Thoughts on cache. --- README.md | 2 + docs/implementation.md | 259 +++++++++++++++++++---------------------- 2 files changed, 123 insertions(+), 138 deletions(-) diff --git a/README.md b/README.md index 2db004a..b70b44d 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ its basic features and use. In contrast, the [style guide](docs/style_guide.cpp) provides strategies for effectively employing the CodeChat Editor to improve the software development process. + + Full manual -------------------------------------------------------------------------------- diff --git a/docs/implementation.md b/docs/implementation.md index 9f4f1bc..8323b35 100644 --- a/docs/implementation.md +++ b/docs/implementation.md @@ -89,7 +89,8 @@ files. Therefore, the overall strategy is: which implement custom tags which only need local information. For example, a GraphViz custom tag renders graphs based on a description of the graph inside the tag. Likewise, MathJax interprets anything in matching math delimiters - ($...$, for example), then transforms it back to text before saving. + (..., for example), then + transforms it back to text before saving. * On save, the client sends its text back to the server, which de-transforms custom tags which depend on information from other pages. If de-transforms disagree with the provided text, then re-load the updated text after the save @@ -100,16 +101,19 @@ files. Therefore, the overall strategy is: On load: -* Classify the file; input are mutable global state (which, if present, +* Classify the file; inputs are mutable global state (which, if present, indicates this is a project build), if the file is a TOC, the file's binary data, and the file's path. Output of the classification: binary, raw text, a CodeChat document (a Markdown file), or a CodeChat file. The load processing - pipelines For CodeChat files: + pipelines + +For CodeChat files: + * (CodeChat files only) Run pre-parse hooks: they receive source code, file metadata. Examples: code formatters. Skip if cache is up to date. * (CodeChat files only) Lex the file into code and doc blocks. * Run post-parse hooks: they receive an array of code and doc blocks. - * Transform Markdown to HTML. +* Transform Markdown to HTML. * Run HTML hooks: * Update the cache for the current file only if the current file's cache is stale. To do this, walk the DOM of each doc block. The hook specifies which @@ -150,25 +154,112 @@ On save: * Save the file to disk. * If dirty, re-load the file. -#### HTML to Markdown transformation - -Currently, Turndown translates HTML to Markdown and word-wraps the result. This -has several problems: - -* There are several bugs/open issues in Turndown; however, this package is no - longer maintained. I have a fork with fixes -- see the - [turndown](https://github.com/bjones1/turndown) and - [turndown-plugin-gfm](https://github.com/bjones1/turndown-plugin-gfm). -* Turndown doesn't have a good way to deal with raw HTML intermingled with - Markdown; since raw HTML can change the meaning of HTML through styles, this - is hard to avoid. But it still produces ugly results. -* Because both packages are written in Javascript, they run in the browser. - However, we need to run processing at the HTML level on the server first, - requiring some round trips between client and sever in the future. Therefore, - the next step is to switch to the Rust `htmd` crate, then port fixes from - Turndown to that. +### Table of contents -To build Turndown, simply execute `npm run build` or `npm run test`. +Ideas: + +* Something that reflects the filesystem. Subdirectories are branches, files are + leaves in the TOC tree. Problems: + * Subdirectories should have content, such as a readme. Assume a readme file + titles and provides content for a subdirectory? Or provide a config file + setting to assign this? + * I'd like the ability to relocate files/directories. The means a config file + that tracks this movement. + * We need ignores. + * To reorder files in the TOC, need a config file per directory to store this + ordering. + * Pro: all files are automatically included, so adding a new file is + automatic. The hierarchy is mostly defined by the filesystem, which is nice. + A GUI with drag and drop would make this really simple to maintain. + * Con: a lot of work/rewrite. + * So: readme.md provides a title and contents for a subdirectory. A config + file in each directory specifies ordering of files, titles for non-CodeChat + files (PDFs, etc.), moves of files/directories from other directories, and + ignores. +* Use mdbook's idea -- a very specific structure for a toc.md file. Simple, but + doesn't auto-update as files are added. +* Current TOC isn't immediately useful. Too much flexibility. + +Another topic: how to reconcile headings in a file with the TOC? + +* Separate them -- headings have orthogonal numbering to the TOC. I think this + is simplest. I just need the right way to display it; mdbook is reasonable in + this regard. I'll use this. +* Combine them -- H1 is current number, H2 is a subhead, etc. But this means the + TOC's numbering requires reading the contents of all files referenced by the + TOC, which could be slow. + +### Cache data format + +The cache stores the location (file name and ID), numbering (of headings and +figures/equations/etc.), and contents (title text or code/doc blocks for tags) +of a target. Targets are HTML anchors (such as headings, figure titles, display +equations, etc.) or tags. + +Goals: + +* Given a file name and/or ID, retrieve the associated location, numbering, and + contents. +* Perform a search of the contents of all targets, returning a list of matching + targets. +* Given a file name and/or ID, provide a list of all targets in the containing + file. + +Cache data structure: + +* A hashmap of (Path, target data structure). TBD: think about ownership. I + think a page is the owner of all targets. +* A hashmap of (ID, target data structure).  + +Target data structure: + +* Location: the containing page and an `Option` containing the ID, if + assigned. +* Page numbering: `[Option, ...]` where each i32 in the list represents the + number of a H1..6 element (non-TOC) or the numbering of a list item (TOC); + `None` represents a missing level of the hierarchy (e.g. H1 following by and + H3, with no H2 between). +* Type: page, heading, link, tag, caption, equation; numbered items (caption, + equation) also include the current number. Pages include the page data + structure. +* Contents: either a string of HTML (would prefer Markdown) or a vec of code/doc + blocks. Page contents are an empty string. + +Page data structure: + +* Path: the path to this file. +* File info: timestamp, etc. to compare with the filesystem in order to + determine if this cache entry is up to date or no. An option, in the case that + the file doesn't exist -- it's the target of a broken link. +* TOC location: `[i32, ...]` gives the numbering of this page in the TOC; if + it's not in the TOC, this is an empty list. +* Vector of targets on this page. +* (Maybe) first ID on this page. + +Pseudocode: + +1. Create a hashmap of (file paths to index, list of links depending on this + file). Initialize it with the current file. +2. For each file in the hashset: + 1. If this is the first file, we already have its DOM. Otherwise, load the + file from disk and compute the DOM. + 2. Given a file's DOM, first create its page data structure. Pre-existing + cache data provides the TOC numbering. + 3. For each target in the DOM (non-TOC) / numbered item (TOC), add the + target's data structure to the page's vector of targets, updating the + current numbering if this is a numbered item (heading, caption, etc.) and + inserting the HTML to set its number in the DOM. + 4. If this is the first file: for each link in the DOM, if the link is local + and autotitled, look for it in the cache. If it's not in the cache or if + the cache for that file is outdated, add the referring file to the hashset + of files to update if it's not in the hashmap; append this link to its + list of dependent links. + 5. For each link in the list of links depending on this file, update it with + the loaded content. + +References: + +* Hyperlinks with no link text are auto-titled. Look up ### IDE/editor integration @@ -225,31 +316,6 @@ Simplest IDE integration: More complex IDE integration: everything that the simple IDE does, plus the ability to toggle between the IDE's editor and the CodeChat Editor. -### Improved IDE interface - -To improve the IDE interface, switch from websockets to calling the Server -directly through a native interface. For example, [NAPI-RS](https://napi.rs/) -provide a way to call Rust from Node.js; [JNI](https://docs.rs/jni/latest/jni/) -allows calling Rust from Java. - -### Efficient websocket communication - -When an edit occurs, it's best to send only changed data, rather than the whole -file. The diff crate provides easy access to determining a diff. The idea: - -1. In the server, save the current file contents. Ignore diffing if the file - name changes. -2. When moving from IDE to client: - 1. Code: diff the string containing code, then diff each doc block's - contents. The new code string is now an array of insert(start, stop, - string)/delete(start, stop) instructions. - 2. Doc blocks: the format is \[ \[index, start?, end?, comment?, - \[insert/delete instructions\] \]. -3. From client to IDE: - 1. I'd like to do something similar. WASM, perhaps? Then recover changes on - the server. If there's any way to mark doc blocks as dirty, that might - help. - Build system -------------------------------------------------------------------------------- @@ -282,12 +348,12 @@ The Client supports several classes of files: ### Broken fences (Markdown challenges) -All Markdown blocks are termined by a blank line followed by unindented content, -except for fenced code blocks and some types of HTML blocks. To ensure that doc -blocks containing an opening fence but no matching closing fence, or a start -HTML tag but no closing tag, are properly closed (instead of affecting the +All Markdown blocks are terminated by a blank line followed by unindented +content, except for fenced code blocks and some types of HTML blocks. To ensure +that doc blocks containing an opening fence but no matching closing fence, or a +start HTML tag but no closing tag, are properly closed (instead of affecting the remainder of the doc blocks), the editor injects closing tags and fences after -each doc block, then reapirs them (if needed, due to a missing closing fence) or +each doc block, then repairs them (if needed, due to a missing closing fence) or removed them. This means that some HTML tags won't be properly closed, since the closing tags are removed from the HTML. This is fixed by later HTML processing steps (currently, by TinyMCE), which properly closes tags. @@ -300,10 +366,13 @@ Future work * While the TOC file must be placed in the root of the project, it will be served alongside pages served from subdirectories. Therefore, place this in an iframe to avoid regenerating it for every page. + * The TOC is just Markdown. Numbered sections are expressed as nested ordered lists, with links to each section inside these lists. + * All numbering is stored internally as a number, instead of the corresponding marker (I, II, III, etc.). This allows styles to customize numbering easily. + * Given an `a` element in the TOC, looking through its parents provides the section number. Given an array of section numbers, use CSS to style all the headings. Implement numbering using CSS variables, which makes it easy for a @@ -315,92 +384,6 @@ Future work `h1::before {` `counter-reset: var(--section-counter-reset);` `content: var(--section-counter-content);` `}` -### Cached state - -When hydrating a page (transforming all custom tags into standard HTML) on the -server, all needed hydration data should be stored in the cache. - -#### Data and format - -What we need to know: - -* To generate the TOC, we need a way to find the linked file, then get a list of - all its headings. - * Problem: files can be moved. Better would be an invariant anchor, stored in - the file, which doesn't change. It would make sense to link to the only - \

element...but there may not be one, or it may not be at the top of the - file. The easy solution would be an anchor tag at the beginning of the - file...but this would break shell scripts, for example. Another is including - an anchor tag somewhere in each document, but need authors to understand - what it is (and not delete it). Another possibility is to link to any anchor - in the file with a special query identifying it as link to the underlying - file. -* To auto-title a link, need to look up an anchor and get its location (page - number, section number) and title. -* For back links, need to look up all links to the given anchor, then get the - location and title of each link. -* To generate the TOC containing all anchors, we need a list of all anchors on a - given page. - -Therefore, the cache must contain a `FileAnchor`, an enum of: - -* A `PlainFileAnchor` (a non-HTML file -- an image, PDF, etc.). Generate an ID - based on a checksum of the file. Basically, this provides some way to find the - (unmodified) file if it's moved/renamed. Cache data: |path, ID, file's - metadata|. -* An `HtmlFileAnchor` (an HTML file). Store an ID as a comment in it somewhere, - probably at the end of the file. Cache data: |path, ID, file's metadata|, TOC - numbering, a vector of `HeadingAnchor`s, a vector of `NonHeadingAnchor`s: - * A `HeadingAnchor` in an HTML file: |weak ref to the containing - `HtmlFileAnchor`, ID, anchor's inner HTML, optional hyperlink|, numbering on - this page, a vector of `NonHeadingAnchors` contained in this heading. - * A `NonHeadingAnchor` in an HTML file: |weak ref to the containing - `HtmlFileAnchor`, ID, anchor's inner HTML, optional hyperlink|, optional - parent heading, snippet of surrounding text, numbering group, number. - -A `Hyperlink` consists of a path and ID the link refers to.\ -An `HtmlAnchor` is an enum of `HeadingAnchor` and `NonHeadingAnchor`.\ -An `Anchor` is an enum of a `FileAnchor` and an `HtmlAnchor`. - -Globals: - -* A map of `PathBuf`s to `FileAnchors`. -* A map of IDs to (`Anchor`, set of IDs of referring links) - -How to keep the sets of referring links up to date? If a link is deleted, we -won't know until that file is removed. To fix, add a validate() function that -looks up each link and drops anything that doesn't exist. - -How to deal with a link to an anchor not in the cache? Need a stub for that -until the actual anchor is found. Therefore, have a stub/nonexistent file that -holds all missing anchors. This file contains a single non-heading anchor, which -has an empty id. - -How to represent TOC numbering?  In the end, it has to becomes a series of -digits. I'd like to allow headings mixed with ordered lists, since this seems a -reasonable/common way to express the TOC. But these could easily be assembled in -a lot of weird ways. If a make a simplifying assumption -- put headings, -followed by ordered lists -- then this is easier. But, what to do if headings -appear in ordered lists? My goal is to produce something sensible from a wide -range of valid inputs. Options are: always treat headings as a higher level of -organization than lists; or treat them equivalently. The second option is -simplest, and would seem to be what the author is saying. - -#### Editing and cached state - -Edits to the document of any cached items cause the browser to push this edit to -the server; the server then propagates the edits to open windows and updates its -state. If a modified file is closed without saving it (meaning the cached state -for this file is now invalid), then all that cache state must be flushed. To -flush, simply set the date/time stamp of that file to something old/invalid. - -### TOC custom tag - -Options: - -* Path to linked file -* Depth of numbering - #### Example of non-editable text
From d814a555b4dc783f0ae1397e2609966bc98aee98 Mon Sep 17 00:00:00 2001 From: "Bryan A. Jones" Date: Mon, 29 Dec 2025 15:55:41 -0600 Subject: [PATCH 4/7] Fix: equations save to IDE in rendered form after a re-translation update. --- client/src/CodeChatEditor.mts | 24 ++++++++++++------------ client/src/CodeMirror-integration.mts | 4 ++++ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/client/src/CodeChatEditor.mts b/client/src/CodeChatEditor.mts index d7f6de8..23c6ea2 100644 --- a/client/src/CodeChatEditor.mts +++ b/client/src/CodeChatEditor.mts @@ -264,14 +264,14 @@ const _open_lp = async ( const codechat_body = document.getElementById( "CodeChat-body", ) as HTMLDivElement; - // Per the - // [docs](https://docs.mathjax.org/en/latest/web/typeset.html#updating-previously-typeset-content), - // "If you modify the page to remove content that contains typeset - // mathematics, you will need to tell MathJax about that so that it - // knows the typeset math that you are removing is no longer on the - // page." - window.MathJax.typesetClear(codechat_body); if (is_doc_only()) { + // Per the + // [docs](https://docs.mathjax.org/en/latest/web/typeset.html#updating-previously-typeset-content), + // "If you modify the page to remove content that contains typeset + // mathematics, you will need to tell MathJax about that so that it + // knows the typeset math that you are removing is no longer on the + // page." + window.MathJax.typesetClear(codechat_body); if (tinymce.activeEditor === null) { // We shouldn't have a diff if the editor hasn't been // initialized. @@ -324,7 +324,7 @@ const _open_lp = async ( restoreSelection(sel); } } - mathJaxTypeset(codechat_body); + await mathJaxTypeset(codechat_body); scroll_to_line(cursor_line, scroll_line); } else { if (is_dirty && "Diff" in source) { @@ -349,7 +349,7 @@ const _open_lp = async ( } } } finally { - // Use a `finally` block to ensure the cleanup code always run. + // Use a `finally` block to ensure the cleanup code always runs. // // Per the discussion at the beginning of this function, the dirty // contents have been overwritten by contents from the IDE. By the same @@ -366,7 +366,7 @@ const _open_lp = async ( } }; -const save_lp = (is_dirty: boolean) => { +const save_lp = async (is_dirty: boolean) => { const update: UpdateMessageContents = { // The Framework will fill in this value. file_path: "", @@ -401,7 +401,7 @@ const save_lp = (is_dirty: boolean) => { doc_blocks: [], }; // Retypeset all math after saving the document. - mathJaxTypeset(codechat_body); + await mathJaxTypeset(codechat_body); } else { code_mirror_diffable = CodeMirror_save(); assert("Plain" in code_mirror_diffable); @@ -534,7 +534,7 @@ const on_save = async (only_if_dirty: boolean = false) => { "CodeChat Editor Client: sent Update - saving document/updating cursor location.", ); // Don't wait for a response to change `is_dirty`; this boogers up logic. - webSocketComm().send_message({ Update: save_lp(is_dirty) }); + webSocketComm().send_message({ Update: await save_lp(is_dirty) }); is_dirty = false; }; diff --git a/client/src/CodeMirror-integration.mts b/client/src/CodeMirror-integration.mts index 703bcc3..391c998 100644 --- a/client/src/CodeMirror-integration.mts +++ b/client/src/CodeMirror-integration.mts @@ -760,6 +760,10 @@ export const DocBlockPlugin = ViewPlugin.fromClass( // cursor position (the selection) to be set in the // contenteditable div. Then, save that location. setTimeout(async () => { + // Before untypesetting, make sure all other typesets finish. + await new Promise((resolve) => + window.MathJax.whenReady(resolve(undefined)), + ); // Untypeset math in the old doc block and the current // doc block before moving its contents around. const tinymce_div = From acde1ed127720f5f9dbe02769498489bb49bf53b Mon Sep 17 00:00:00 2001 From: "Bryan A. Jones" Date: Mon, 29 Dec 2025 16:14:11 -0600 Subject: [PATCH 5/7] docs: Update to YouTube playlist. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b70b44d..98a70e8 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ its basic features and use. In contrast, the [style guide](docs/style_guide.cpp) provides strategies for effectively employing the CodeChat Editor to improve the software development process. - + Full manual -------------------------------------------------------------------------------- From bf99f9bcc3185cdf2169fbf01c4c46fb7bb3f676 Mon Sep 17 00:00:00 2001 From: "Bryan A. Jones" Date: Mon, 29 Dec 2025 16:25:18 -0600 Subject: [PATCH 6/7] Clean: wrap lines. --- client/src/CodeMirror-integration.mts | 18 +++++++++++++----- server/src/translation.rs | 6 ++++-- server/src/webserver.rs | 4 +++- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/client/src/CodeMirror-integration.mts b/client/src/CodeMirror-integration.mts index 391c998..a1f7e83 100644 --- a/client/src/CodeMirror-integration.mts +++ b/client/src/CodeMirror-integration.mts @@ -290,7 +290,9 @@ export const docBlockField = StateField.define({ prev.spec.widget.contents, effect.value.contents, ), - // If autosave is allowed (meaning no autosave is not true), then this data came from the user, not the IDE. + // If autosave is allowed (meaning no autosave + // is not true), then this data came from the + // user, not the IDE. tr.annotation(noAutosaveAnnotation) !== true, ), ...decorationOptions, @@ -688,7 +690,9 @@ export const DocBlockPlugin = ViewPlugin.fromClass( return; } - // TODO: current, posToDom never gives us a doc block, even when the from/to is correct. So, we never get here. + // TODO: current, posToDom never gives us a doc + // block, even when the from/to is correct. So, we + // never get here. (dom.childNodes[1] as HTMLElement).focus(); }, ); @@ -760,7 +764,8 @@ export const DocBlockPlugin = ViewPlugin.fromClass( // cursor position (the selection) to be set in the // contenteditable div. Then, save that location. setTimeout(async () => { - // Before untypesetting, make sure all other typesets finish. + // Before untypesetting, make sure all other typesets + // finish. await new Promise((resolve) => window.MathJax.whenReady(resolve(undefined)), ); @@ -1033,11 +1038,14 @@ export const CodeMirror_load = async ( setup: (editor: Editor) => { // See the // [docs](https://www.tiny.cloud/docs/tinymce/latest/events/#editor-core-events). - // This is triggered on edits (just as the `input` event), but also when applying formatting changes, inserting images, etc. that the above callback misses. + // This is triggered on edits (just as the `input` event), but + // also when applying formatting changes, inserting images, etc. + // that the above callback misses. editor.on( "Dirty", (event: EditorEvent) => { - // Sometimes, `tinymce.activeEditor` is null (perhaps when it's not focused). Use the `event` data instead. + // Sometimes, `tinymce.activeEditor` is null (perhaps + // when it's not focused). Use the `event` data instead. event.target.setDirty(false); // Get the div TinyMCE stores edits in. const target_or_false = event.target.bodyElement; diff --git a/server/src/translation.rs b/server/src/translation.rs index b27a6cc..6eff22c 100644 --- a/server/src/translation.rs +++ b/server/src/translation.rs @@ -1229,7 +1229,8 @@ fn compare_html( .map(|c: char| if c == '\n' { ' ' } else { c }) } - // Normalized `
` elements are followed by a newline; raw `
` elements aren't. Remove the newline. + // Normalized `
` elements are followed by a newline; raw `
` elements + // aren't. Remove the newline. let fixed_normalized_html = normalized_html.replace("
\n", "
"); // Transforming the HTML with an empty transform normalizes it but leave it @@ -1237,7 +1238,8 @@ fn compare_html( if let Ok(normalized_raw_html) = transform_html(raw_html, |_node| {}) { // Ignore word wrapping and leading/trailing whitespace in the // comparison. - map_newlines_to_spaces(&fixed_normalized_html).eq(map_newlines_to_spaces(&normalized_raw_html)) + map_newlines_to_spaces(&fixed_normalized_html) + .eq(map_newlines_to_spaces(&normalized_raw_html)) } else { false } diff --git a/server/src/webserver.rs b/server/src/webserver.rs index b7d1cdc..145172c 100644 --- a/server/src/webserver.rs +++ b/server/src/webserver.rs @@ -348,7 +348,9 @@ pub struct UpdateMessageContents { #[serde(skip_serializing_if = "Option::is_none")] pub scroll_position: Option, /// True if this is a re-translation, which can be ignored if the receiver's - /// document is dirty. Therefore, this is written by the IDE and read by the Client and IDE; conversely, it's ignored by the Server. The IDE and Client should set this value to false. + /// document is dirty. Therefore, this is written by the IDE and read by the + /// Client and IDE; conversely, it's ignored by the Server. The IDE and + /// Client should set this value to false. pub is_re_translation: bool, /// The contents of this file. #[serde(skip_serializing_if = "Option::is_none")] From 04a053b4d780af5aadc9a3b7156ec11257e48bfa Mon Sep 17 00:00:00 2001 From: "Bryan A. Jones" Date: Mon, 29 Dec 2025 16:29:58 -0600 Subject: [PATCH 7/7] Freeze for release. --- CHANGELOG.md | 10 ++ builder/Cargo.lock | 16 +- client/package.json5 | 10 +- client/pnpm-lock.yaml | 266 +++++++++++++++---------------- extensions/VSCode/Cargo.lock | 66 ++++---- extensions/VSCode/Cargo.toml | 2 +- extensions/VSCode/package.json | 8 +- extensions/VSCode/pnpm-lock.yaml | 185 ++++++++++----------- server/Cargo.lock | 84 +++++----- server/Cargo.toml | 2 +- 10 files changed, 340 insertions(+), 309 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4f3b1c..0e3e2de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,16 @@ Changelog * No changes. +Version 0.1.49 -- 2025-Dec-29 +-------------------------------------------------------------------------------- + +* Added instructional videos to manual. +* Improve accessibility by using content sectioning tags. +* Avoid unnecessary re-translations of Markdown documents containing line break + elements. +* Fix data corruption of math, in which an equation was stored as its rendered + form after a re-translation in the Client. + Version 0.1.48 -- 2025-Dec-22 -------------------------------------------------------------------------------- diff --git a/builder/Cargo.lock b/builder/Cargo.lock index 92dfebd..1843312 100644 --- a/builder/Cargo.lock +++ b/builder/Cargo.lock @@ -210,9 +210,9 @@ checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "jiff" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35" +checksum = "a87d9b8105c23642f50cbbae03d1f75d8422c5cb98ce7ee9271f7ff7505be6b8" dependencies = [ "jiff-static", "log", @@ -223,9 +223,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" +checksum = "b787bebb543f8969132630c51fd0afab173a86c6abae56ff3b9e5e3e3f9f6e58" dependencies = [ "proc-macro2", "quote", @@ -274,9 +274,9 @@ checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" [[package]] name = "portable-atomic" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f59e70c4aef1e55797c2e8fd94a4f2a973fc972cfde0e0b05f683667b0cd39dd" +checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" [[package]] name = "portable-atomic-util" @@ -311,9 +311,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.103" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +checksum = "9695f8df41bb4f3d222c95a67532365f569318332d03d5f3f67f37b20e6ebdf0" dependencies = [ "unicode-ident", ] diff --git a/client/package.json5 b/client/package.json5 index 7fbca13..1082962 100644 --- a/client/package.json5 +++ b/client/package.json5 @@ -43,7 +43,7 @@ url: 'https://github.com/bjones1/CodeChat_editor', }, type: 'module', - version: '0.1.48', + version: '0.1.49', dependencies: { '@codemirror/commands': '^6.10.1', '@codemirror/lang-cpp': '^6.0.3', @@ -68,7 +68,7 @@ mathjax: '^4.1.0', mermaid: '^11.12.2', 'npm-check-updates': '^19.2.0', - 'pdfjs-dist': '^5.4.449', + 'pdfjs-dist': '5.4.449', tinymce: '^8.3.1', 'toastify-js': '^1.12.0', }, @@ -80,8 +80,8 @@ '@types/mocha': '^10.0.10', '@types/node': '^24.10.4', '@types/toastify-js': '^1.12.4', - '@typescript-eslint/eslint-plugin': '^8.50.1', - '@typescript-eslint/parser': '^8.50.1', + '@typescript-eslint/eslint-plugin': '^8.51.0', + '@typescript-eslint/parser': '^8.51.0', chai: '^6.2.2', esbuild: '^0.27.2', eslint: '^9.39.2', @@ -91,7 +91,7 @@ mocha: '^11.7.5', prettier: '^3.7.4', typescript: '^5.9.3', - 'typescript-eslint': '^8.50.1', + 'typescript-eslint': '^8.51.0', }, scripts: { test: 'echo "Error: no test specified" && exit 1', diff --git a/client/pnpm-lock.yaml b/client/pnpm-lock.yaml index 4fc0a11..29bed9c 100644 --- a/client/pnpm-lock.yaml +++ b/client/pnpm-lock.yaml @@ -78,7 +78,7 @@ importers: specifier: ^19.2.0 version: 19.2.0 pdfjs-dist: - specifier: ^5.4.449 + specifier: 5.4.449 version: 5.4.449 tinymce: specifier: ^8.3.1 @@ -109,11 +109,11 @@ importers: specifier: ^1.12.4 version: 1.12.4 '@typescript-eslint/eslint-plugin': - specifier: ^8.50.1 - version: 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + specifier: ^8.51.0 + version: 8.51.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^8.50.1 - version: 8.50.1(eslint@9.39.2)(typescript@5.9.3) + specifier: ^8.51.0 + version: 8.51.0(eslint@9.39.2)(typescript@5.9.3) chai: specifier: ^6.2.2 version: 6.2.2 @@ -128,7 +128,7 @@ importers: version: 10.1.8(eslint@9.39.2) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2) + version: 2.32.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2) eslint-plugin-prettier: specifier: ^5.5.4 version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.2))(eslint@9.39.2)(prettier@3.7.4) @@ -142,8 +142,8 @@ importers: specifier: ^5.9.3 version: 5.9.3 typescript-eslint: - specifier: ^8.50.1 - version: 8.50.1(eslint@9.39.2)(typescript@5.9.3) + specifier: ^8.51.0 + version: 8.51.0(eslint@9.39.2)(typescript@5.9.3) packages: @@ -511,74 +511,74 @@ packages: '@mermaid-js/parser@0.6.3': resolution: {integrity: sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==} - '@napi-rs/canvas-android-arm64@0.1.86': - resolution: {integrity: sha512-IjkZFKUr6GzMzzrawJaN3v+yY3Fvpa71e0DcbePfxWelFKnESIir+XUcdAbim29JOd0JE0/hQJdfUCb5t/Fjrw==} + '@napi-rs/canvas-android-arm64@0.1.88': + resolution: {integrity: sha512-KEaClPnZuVxJ8smUWjV1wWFkByBO/D+vy4lN+Dm5DFH514oqwukxKGeck9xcKJhaWJGjfruGmYGiwRe//+/zQQ==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@napi-rs/canvas-darwin-arm64@0.1.86': - resolution: {integrity: sha512-PUCxDq0wSSJbtaOqoKj3+t5tyDbtxWumziOTykdn3T839hu6koMaBFpGk9lXpsGaPNgyFpPqjxhtsPljBGnDHg==} + '@napi-rs/canvas-darwin-arm64@0.1.88': + resolution: {integrity: sha512-Xgywz0dDxOKSgx3eZnK85WgGMmGrQEW7ZLA/E7raZdlEE+xXCozobgqz2ZvYigpB6DJFYkqnwHjqCOTSDGlFdg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@napi-rs/canvas-darwin-x64@0.1.86': - resolution: {integrity: sha512-rlCFLv4Rrg45qFZq7mysrKnsUbMhwdNg3YPuVfo9u4RkOqm7ooAJvdyDFxiqfSsJJTqupYqa9VQCUt8WKxKhNQ==} + '@napi-rs/canvas-darwin-x64@0.1.88': + resolution: {integrity: sha512-Yz4wSCIQOUgNucgk+8NFtQxQxZV5NO8VKRl9ePKE6XoNyNVC8JDqtvhh3b3TPqKK8W5p2EQpAr1rjjm0mfBxdg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@napi-rs/canvas-linux-arm-gnueabihf@0.1.86': - resolution: {integrity: sha512-6xWwyMc9BlDBt+9XHN/GzUo3MozHta/2fxQHMb80x0K2zpZuAdDKUYHmYzx9dFWDY3SbPYnx6iRlQl6wxnwS1w==} + '@napi-rs/canvas-linux-arm-gnueabihf@0.1.88': + resolution: {integrity: sha512-9gQM2SlTo76hYhxHi2XxWTAqpTOb+JtxMPEIr+H5nAhHhyEtNmTSDRtz93SP7mGd2G3Ojf2oF5tP9OdgtgXyKg==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@napi-rs/canvas-linux-arm64-gnu@0.1.86': - resolution: {integrity: sha512-r2OX3w50xHxrToTovOSQWwkVfSq752CUzH9dzlVXyr8UDKFV8dMjfa9hePXvAJhN3NBp4TkHcGx15QCdaCIwnA==} + '@napi-rs/canvas-linux-arm64-gnu@0.1.88': + resolution: {integrity: sha512-7qgaOBMXuVRk9Fzztzr3BchQKXDxGbY+nwsovD3I/Sx81e+sX0ReEDYHTItNb0Je4NHbAl7D0MKyd4SvUc04sg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@napi-rs/canvas-linux-arm64-musl@0.1.86': - resolution: {integrity: sha512-jbXuh8zVFUPw6a9SGpgc6EC+fRbGGyP1NFfeQiVqGLs6bN93ROtPLPL6MH9Bp6yt0CXUFallk2vgKdWDbmW+bw==} + '@napi-rs/canvas-linux-arm64-musl@0.1.88': + resolution: {integrity: sha512-kYyNrUsHLkoGHBc77u4Unh067GrfiCUMbGHC2+OTxbeWfZkPt2o32UOQkhnSswKd9Fko/wSqqGkY956bIUzruA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@napi-rs/canvas-linux-riscv64-gnu@0.1.86': - resolution: {integrity: sha512-9IwHR2qbq2HceM9fgwyL7x37Jy3ptt1uxvikQEuWR0FisIx9QEdt7F3huljCky76aoouF2vSd0R2fHo3ESRoPw==} + '@napi-rs/canvas-linux-riscv64-gnu@0.1.88': + resolution: {integrity: sha512-HVuH7QgzB0yavYdNZDRyAsn/ejoXB0hn8twwFnOqUbCCdkV+REna7RXjSR7+PdfW0qMQ2YYWsLvVBT5iL/mGpw==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] - '@napi-rs/canvas-linux-x64-gnu@0.1.86': - resolution: {integrity: sha512-Jor+rhRN6ubix+D2QkNn9XlPPVAYl+2qFrkZ4oZN9UgtqIUZ+n+HljxhlkkDFRaX1mlxXOXPQjxaZg17zDSFcQ==} + '@napi-rs/canvas-linux-x64-gnu@0.1.88': + resolution: {integrity: sha512-hvcvKIcPEQrvvJtJnwD35B3qk6umFJ8dFIr8bSymfrSMem0EQsfn1ztys8ETIFndTwdNWJKWluvxztA41ivsEw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@napi-rs/canvas-linux-x64-musl@0.1.86': - resolution: {integrity: sha512-A28VTy91DbclopSGZ2tIon3p8hcVI1JhnNpDpJ5N9rYlUnVz1WQo4waEMh+FICTZF07O3coxBNZc4Vu4doFw7A==} + '@napi-rs/canvas-linux-x64-musl@0.1.88': + resolution: {integrity: sha512-eSMpGYY2xnZSQ6UxYJ6plDboxq4KeJ4zT5HaVkUnbObNN6DlbJe0Mclh3wifAmquXfrlgTZt6zhHsUgz++AK6g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@napi-rs/canvas-win32-arm64-msvc@0.1.86': - resolution: {integrity: sha512-q6G1YXUt3gBCAS2bcDMCaBL4y20di8eVVBi1XhjUqZSVyZZxxwIuRQHy31NlPJUCMiyNiMuc6zeI0uqgkWwAmA==} + '@napi-rs/canvas-win32-arm64-msvc@0.1.88': + resolution: {integrity: sha512-qcIFfEgHrchyYqRrxsCeTQgpJZ/GqHiqPcU/Fvw/ARVlQeDX1VyFH+X+0gCR2tca6UJrq96vnW+5o7buCq+erA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@napi-rs/canvas-win32-x64-msvc@0.1.86': - resolution: {integrity: sha512-X0g46uRVgnvCM1cOjRXAOSFSG63ktUFIf/TIfbKCUc7QpmYUcHmSP9iR6DGOYfk+SggLsXoJCIhPTotYeZEAmg==} + '@napi-rs/canvas-win32-x64-msvc@0.1.88': + resolution: {integrity: sha512-ROVqbfS4QyZxYkqmaIBBpbz/BQvAR+05FXM5PAtTYVc0uyY8Y4BHJSMdGAaMf6TdIVRsQsiq+FG/dH9XhvWCFQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@napi-rs/canvas@0.1.86': - resolution: {integrity: sha512-hOkywnrkdFdVpsuaNsZWfEY7kc96eROV2DuMTTvGF15AZfwobzdG2w0eDlU5UBx3Lg/XlWUnqVT5zLUWyo5h6A==} + '@napi-rs/canvas@0.1.88': + resolution: {integrity: sha512-/p08f93LEbsL5mDZFQ3DBxcPv/I4QG9EDYRRq1WNlCOXVfAHBTHMSVMwxlqG/AtnSfUr9+vgfN7MKiyDo0+Weg==} engines: {node: '>= 10'} '@pkgjs/parseargs@0.11.0': @@ -721,63 +721,63 @@ packages: '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - '@typescript-eslint/eslint-plugin@8.50.1': - resolution: {integrity: sha512-PKhLGDq3JAg0Jk/aK890knnqduuI/Qj+udH7wCf0217IGi4gt+acgCyPVe79qoT+qKUvHMDQkwJeKW9fwl8Cyw==} + '@typescript-eslint/eslint-plugin@8.51.0': + resolution: {integrity: sha512-XtssGWJvypyM2ytBnSnKtHYOGT+4ZwTnBVl36TA4nRO2f4PRNGz5/1OszHzcZCvcBMh+qb7I06uoCmLTRdR9og==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.50.1 + '@typescript-eslint/parser': ^8.51.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.50.1': - resolution: {integrity: sha512-hM5faZwg7aVNa819m/5r7D0h0c9yC4DUlWAOvHAtISdFTc8xB86VmX5Xqabrama3wIPJ/q9RbGS1worb6JfnMg==} + '@typescript-eslint/parser@8.51.0': + resolution: {integrity: sha512-3xP4XzzDNQOIqBMWogftkwxhg5oMKApqY0BAflmLZiFYHqyhSOxv/cd/zPQLTcCXr4AkaKb25joocY0BD1WC6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.50.1': - resolution: {integrity: sha512-E1ur1MCVf+YiP89+o4Les/oBAVzmSbeRB0MQLfSlYtbWU17HPxZ6Bhs5iYmKZRALvEuBoXIZMOIRRc/P++Ortg==} + '@typescript-eslint/project-service@8.51.0': + resolution: {integrity: sha512-Luv/GafO07Z7HpiI7qeEW5NW8HUtZI/fo/kE0YbtQEFpJRUuR0ajcWfCE5bnMvL7QQFrmT/odMe8QZww8X2nfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.50.1': - resolution: {integrity: sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw==} + '@typescript-eslint/scope-manager@8.51.0': + resolution: {integrity: sha512-JhhJDVwsSx4hiOEQPeajGhCWgBMBwVkxC/Pet53EpBVs7zHHtayKefw1jtPaNRXpI9RA2uocdmpdfE7T+NrizA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.50.1': - resolution: {integrity: sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw==} + '@typescript-eslint/tsconfig-utils@8.51.0': + resolution: {integrity: sha512-Qi5bSy/vuHeWyir2C8u/uqGMIlIDu8fuiYWv48ZGlZ/k+PRPHtaAu7erpc7p5bzw2WNNSniuxoMSO4Ar6V9OXw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.50.1': - resolution: {integrity: sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg==} + '@typescript-eslint/type-utils@8.51.0': + resolution: {integrity: sha512-0XVtYzxnobc9K0VU7wRWg1yiUrw4oQzexCG2V2IDxxCxhqBMSMbjB+6o91A+Uc0GWtgjCa3Y8bi7hwI0Tu4n5Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.50.1': - resolution: {integrity: sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA==} + '@typescript-eslint/types@8.51.0': + resolution: {integrity: sha512-TizAvWYFM6sSscmEakjY3sPqGwxZRSywSsPEiuZF6d5GmGD9Gvlsv0f6N8FvAAA0CD06l3rIcWNbsN1e5F/9Ag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.50.1': - resolution: {integrity: sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ==} + '@typescript-eslint/typescript-estree@8.51.0': + resolution: {integrity: sha512-1qNjGqFRmlq0VW5iVlcyHBbCjPB7y6SxpBkrbhNWMy/65ZoncXCEPJxkRZL8McrseNH6lFhaxCIaX+vBuFnRng==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.50.1': - resolution: {integrity: sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ==} + '@typescript-eslint/utils@8.51.0': + resolution: {integrity: sha512-11rZYxSe0zabiKaCP2QAwRf/dnmgFgvTmeDTtZvUvXG3UuAdg/GU02NExmmIXzz3vLGgMdtrIosI84jITQOxUA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.50.1': - resolution: {integrity: sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ==} + '@typescript-eslint/visitor-keys@8.51.0': + resolution: {integrity: sha512-mM/JRQOzhVN1ykejrvwnBRV3+7yTKK8tVANVN3o1O0t0v7o+jqdVu9crPy5Y9dov15TJk/FTIgoUGHrTOVL3Zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -1800,8 +1800,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + prettier-linter-helpers@1.0.1: + resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} engines: {node: '>=6.0.0'} prettier@3.7.4: @@ -1996,8 +1996,8 @@ packages: toastify-js@1.12.0: resolution: {integrity: sha512-HeMHCO9yLPvP9k0apGSdPUWrUbLnxUKNFzgUoZp1PHCLploIX/4DSQ7V8H25ef+h4iO9n0he7ImfcndnN6nDrQ==} - ts-api-utils@2.1.0: - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + ts-api-utils@2.3.0: + resolution: {integrity: sha512-6eg3Y9SF7SsAvGzRHQvvc1skDAhwI4YQ32ui1scxD1Ccr0G5qIIbUBT3pFTKX8kmWIQClHobtUdNuaBgwdfdWg==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -2029,8 +2029,8 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-eslint@8.50.1: - resolution: {integrity: sha512-ytTHO+SoYSbhAH9CrYnMhiLx8To6PSSvqnvXyPUgPETCvB6eBKmTI9w6XMPS3HsBRGkwTVBX+urA8dYQx6bHfQ==} + typescript-eslint@8.51.0: + resolution: {integrity: sha512-jh8ZuM5oEh2PSdyQG9YAEM1TCGuWenLSuSUhf/irbVUNW9O5FhbFVONviN2TgMTBnUmyHv7E56rYnfLZK6TkiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2570,52 +2570,52 @@ snapshots: dependencies: langium: 3.3.1 - '@napi-rs/canvas-android-arm64@0.1.86': + '@napi-rs/canvas-android-arm64@0.1.88': optional: true - '@napi-rs/canvas-darwin-arm64@0.1.86': + '@napi-rs/canvas-darwin-arm64@0.1.88': optional: true - '@napi-rs/canvas-darwin-x64@0.1.86': + '@napi-rs/canvas-darwin-x64@0.1.88': optional: true - '@napi-rs/canvas-linux-arm-gnueabihf@0.1.86': + '@napi-rs/canvas-linux-arm-gnueabihf@0.1.88': optional: true - '@napi-rs/canvas-linux-arm64-gnu@0.1.86': + '@napi-rs/canvas-linux-arm64-gnu@0.1.88': optional: true - '@napi-rs/canvas-linux-arm64-musl@0.1.86': + '@napi-rs/canvas-linux-arm64-musl@0.1.88': optional: true - '@napi-rs/canvas-linux-riscv64-gnu@0.1.86': + '@napi-rs/canvas-linux-riscv64-gnu@0.1.88': optional: true - '@napi-rs/canvas-linux-x64-gnu@0.1.86': + '@napi-rs/canvas-linux-x64-gnu@0.1.88': optional: true - '@napi-rs/canvas-linux-x64-musl@0.1.86': + '@napi-rs/canvas-linux-x64-musl@0.1.88': optional: true - '@napi-rs/canvas-win32-arm64-msvc@0.1.86': + '@napi-rs/canvas-win32-arm64-msvc@0.1.88': optional: true - '@napi-rs/canvas-win32-x64-msvc@0.1.86': + '@napi-rs/canvas-win32-x64-msvc@0.1.88': optional: true - '@napi-rs/canvas@0.1.86': + '@napi-rs/canvas@0.1.88': optionalDependencies: - '@napi-rs/canvas-android-arm64': 0.1.86 - '@napi-rs/canvas-darwin-arm64': 0.1.86 - '@napi-rs/canvas-darwin-x64': 0.1.86 - '@napi-rs/canvas-linux-arm-gnueabihf': 0.1.86 - '@napi-rs/canvas-linux-arm64-gnu': 0.1.86 - '@napi-rs/canvas-linux-arm64-musl': 0.1.86 - '@napi-rs/canvas-linux-riscv64-gnu': 0.1.86 - '@napi-rs/canvas-linux-x64-gnu': 0.1.86 - '@napi-rs/canvas-linux-x64-musl': 0.1.86 - '@napi-rs/canvas-win32-arm64-msvc': 0.1.86 - '@napi-rs/canvas-win32-x64-msvc': 0.1.86 + '@napi-rs/canvas-android-arm64': 0.1.88 + '@napi-rs/canvas-darwin-arm64': 0.1.88 + '@napi-rs/canvas-darwin-x64': 0.1.88 + '@napi-rs/canvas-linux-arm-gnueabihf': 0.1.88 + '@napi-rs/canvas-linux-arm64-gnu': 0.1.88 + '@napi-rs/canvas-linux-arm64-musl': 0.1.88 + '@napi-rs/canvas-linux-riscv64-gnu': 0.1.88 + '@napi-rs/canvas-linux-x64-gnu': 0.1.88 + '@napi-rs/canvas-linux-x64-musl': 0.1.88 + '@napi-rs/canvas-win32-arm64-msvc': 0.1.88 + '@napi-rs/canvas-win32-x64-msvc': 0.1.88 optional: true '@pkgjs/parseargs@0.11.0': @@ -2772,95 +2772,95 @@ snapshots: '@types/trusted-types@2.0.7': optional: true - '@typescript-eslint/eslint-plugin@8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.51.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.50.1 - '@typescript-eslint/type-utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.51.0 + '@typescript-eslint/type-utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.51.0 eslint: 9.39.2 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.50.1 - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/scope-manager': 8.51.0 + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.51.0 debug: 4.4.3(supports-color@8.1.1) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.50.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.51.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) - '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/tsconfig-utils': 8.51.0(typescript@5.9.3) + '@typescript-eslint/types': 8.51.0 debug: 4.4.3(supports-color@8.1.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.50.1': + '@typescript-eslint/scope-manager@8.51.0': dependencies: - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/visitor-keys': 8.51.0 - '@typescript-eslint/tsconfig-utils@8.50.1(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.51.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.50.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.51.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) eslint: 9.39.2 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.50.1': {} + '@typescript-eslint/types@8.51.0': {} - '@typescript-eslint/typescript-estree@8.50.1(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.51.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.50.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/project-service': 8.51.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.51.0(typescript@5.9.3) + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/visitor-keys': 8.51.0 debug: 4.4.3(supports-color@8.1.1) minimatch: 9.0.5 semver: 7.7.3 tinyglobby: 0.2.15 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.50.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.51.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.50.1 - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.51.0 + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.50.1': + '@typescript-eslint/visitor-keys@8.51.0': dependencies: - '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/types': 8.51.0 eslint-visitor-keys: 4.2.1 acorn-jsx@5.3.2(acorn@8.15.0): @@ -3434,17 +3434,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -3455,7 +3455,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.2 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -3467,7 +3467,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -3477,7 +3477,7 @@ snapshots: dependencies: eslint: 9.39.2 prettier: 3.7.4 - prettier-linter-helpers: 1.0.0 + prettier-linter-helpers: 1.0.1 synckit: 0.11.11 optionalDependencies: eslint-config-prettier: 10.1.8(eslint@9.39.2) @@ -4044,7 +4044,7 @@ snapshots: pdfjs-dist@5.4.449: optionalDependencies: - '@napi-rs/canvas': 0.1.86 + '@napi-rs/canvas': 0.1.88 picocolors@1.1.1: {} @@ -4067,7 +4067,7 @@ snapshots: prelude-ls@1.2.1: {} - prettier-linter-helpers@1.0.0: + prettier-linter-helpers@1.0.1: dependencies: fast-diff: 1.3.0 @@ -4292,7 +4292,7 @@ snapshots: toastify-js@1.12.0: {} - ts-api-utils@2.1.0(typescript@5.9.3): + ts-api-utils@2.3.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -4342,12 +4342,12 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.50.1(eslint@9.39.2)(typescript@5.9.3): + typescript-eslint@8.51.0(eslint@9.39.2)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.51.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: diff --git a/extensions/VSCode/Cargo.lock b/extensions/VSCode/Cargo.lock index ea6da5b..84229eb 100644 --- a/extensions/VSCode/Cargo.lock +++ b/extensions/VSCode/Cargo.lock @@ -341,9 +341,12 @@ checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "arc-swap" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" +checksum = "51d03449bb8ca2cc2ef70869af31463d1ae5ccc8fa3e334b307203fbf815207e" +dependencies = [ + "rustversion", +] [[package]] name = "assert_fs" @@ -476,9 +479,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.50" +version = "1.2.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f50d563227a1c37cc0a263f64eca3334388c01c5e4c4861a9def205c614383c" +checksum = "7a0aeaff4ff1a90589618835a598e545176939b97874f7abc7851caa0618f203" dependencies = [ "find-msvc-tools", "jobserver", @@ -553,7 +556,7 @@ checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "codechat-editor-server" -version = "0.1.48" +version = "0.1.49" dependencies = [ "actix-files", "actix-http", @@ -605,7 +608,7 @@ dependencies = [ [[package]] name = "codechat-editor-vscode-extension" -version = "0.1.48" +version = "0.1.49" dependencies = [ "codechat-editor-server", "log", @@ -922,9 +925,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" +checksum = "645cbb3a84e60b7531617d5ae4e57f7e27308f6445f5abf653209ea76dec8dff" [[package]] name = "flate2" @@ -1424,9 +1427,9 @@ checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itoa" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee5b5339afb4c41626dde77b7a611bd4f2c202b897852b4bcf5d03eddc61010" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "jni" @@ -1520,13 +1523,13 @@ dependencies = [ [[package]] name = "libredox" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df15f6eac291ed1cf25865b1ee60399f57e7c227e7f51bdbd4c5270396a9ed50" +checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" dependencies = [ "bitflags 2.10.0", "libc", - "redox_syscall 0.6.0", + "redox_syscall 0.7.0", ] [[package]] @@ -2124,9 +2127,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.103" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +checksum = "9695f8df41bb4f3d222c95a67532365f569318332d03d5f3f67f37b20e6ebdf0" dependencies = [ "unicode-ident", ] @@ -2215,9 +2218,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec96166dafa0886eb81fe1c0a388bece180fbef2135f97c1e2cf8302e74b43b5" +checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" dependencies = [ "bitflags 2.10.0", ] @@ -2274,9 +2277,9 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" dependencies = [ "bitflags 2.10.0", "errno", @@ -2293,9 +2296,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea" +checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" [[package]] name = "same-file" @@ -2360,15 +2363,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.146" +version = "1.0.148" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "217ca874ae0207aac254aa02c957ded05585a90892cc8d87f9e5fa49669dadd8" +checksum = "3084b546a1dd6289475996f182a22aba973866ea8e8b02c51d9f46b1336a22da" dependencies = [ "itoa", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] @@ -2426,10 +2429,11 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.7" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] @@ -2566,9 +2570,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.23.0" +version = "3.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" dependencies = [ "fastrand", "getrandom", @@ -3581,6 +3585,12 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "zmij" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f4a4e8e9dc5c62d159f04fcdbe07f4c3fb710415aab4754bf11505501e3251d" + [[package]] name = "zstd" version = "0.13.3" diff --git a/extensions/VSCode/Cargo.toml b/extensions/VSCode/Cargo.toml index 13abdfa..47b31d0 100644 --- a/extensions/VSCode/Cargo.toml +++ b/extensions/VSCode/Cargo.toml @@ -32,7 +32,7 @@ license = "GPL-3.0-only" name = "codechat-editor-vscode-extension" readme = "../README.md" repository = "https://github.com/bjones1/CodeChat_Editor" -version = "0.1.48" +version = "0.1.49" [lib] crate-type = ["cdylib"] diff --git a/extensions/VSCode/package.json b/extensions/VSCode/package.json index ce9a248..94365e7 100644 --- a/extensions/VSCode/package.json +++ b/extensions/VSCode/package.json @@ -41,7 +41,7 @@ "type": "git", "url": "https://github.com/bjones1/CodeChat_Editor" }, - "version": "0.1.48", + "version": "0.1.49", "activationEvents": [ "onCommand:extension.codeChatEditorActivate", "onCommand:extension.codeChatEditorDeactivate" @@ -88,8 +88,8 @@ "@types/escape-html": "^1.0.4", "@types/node": "^24.10.4", "@types/vscode": "1.61.0", - "@typescript-eslint/eslint-plugin": "^8.50.1", - "@typescript-eslint/parser": "^8.50.1", + "@typescript-eslint/eslint-plugin": "^8.51.0", + "@typescript-eslint/parser": "^8.51.0", "@vscode/vsce": "^3.7.1", "chalk": "^5.6.2", "esbuild": "^0.27.2", @@ -102,7 +102,7 @@ "ovsx": "^0.10.7", "prettier": "^3.7.4", "typescript": "^5.9.3", - "typescript-eslint": "^8.50.1" + "typescript-eslint": "^8.51.0" }, "optionalDependencies": { "bufferutil": "^4.1.0" diff --git a/extensions/VSCode/pnpm-lock.yaml b/extensions/VSCode/pnpm-lock.yaml index e643f3f..67c09fb 100644 --- a/extensions/VSCode/pnpm-lock.yaml +++ b/extensions/VSCode/pnpm-lock.yaml @@ -37,11 +37,11 @@ importers: specifier: 1.61.0 version: 1.61.0 '@typescript-eslint/eslint-plugin': - specifier: ^8.50.1 - version: 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + specifier: ^8.51.0 + version: 8.51.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) '@typescript-eslint/parser': - specifier: ^8.50.1 - version: 8.50.1(eslint@9.39.2)(typescript@5.9.3) + specifier: ^8.51.0 + version: 8.51.0(eslint@9.39.2)(typescript@5.9.3) '@vscode/vsce': specifier: ^3.7.1 version: 3.7.1 @@ -59,7 +59,7 @@ importers: version: 10.1.8(eslint@9.39.2) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2) + version: 2.32.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2) eslint-plugin-node: specifier: ^11.1.0 version: 11.1.0(eslint@9.39.2) @@ -79,8 +79,8 @@ importers: specifier: ^5.9.3 version: 5.9.3 typescript-eslint: - specifier: ^8.50.1 - version: 8.50.1(eslint@9.39.2)(typescript@5.9.3) + specifier: ^8.51.0 + version: 8.51.0(eslint@9.39.2)(typescript@5.9.3) optionalDependencies: bufferutil: specifier: ^4.1.0 @@ -1096,63 +1096,63 @@ packages: '@types/vscode@1.61.0': resolution: {integrity: sha512-9k5Nwq45hkRwdfCFY+eKXeQQSbPoA114mF7U/4uJXRBJeGIO7MuJdhF1PnaDN+lllL9iKGQtd6FFXShBXMNaFg==} - '@typescript-eslint/eslint-plugin@8.50.1': - resolution: {integrity: sha512-PKhLGDq3JAg0Jk/aK890knnqduuI/Qj+udH7wCf0217IGi4gt+acgCyPVe79qoT+qKUvHMDQkwJeKW9fwl8Cyw==} + '@typescript-eslint/eslint-plugin@8.51.0': + resolution: {integrity: sha512-XtssGWJvypyM2ytBnSnKtHYOGT+4ZwTnBVl36TA4nRO2f4PRNGz5/1OszHzcZCvcBMh+qb7I06uoCmLTRdR9og==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.50.1 + '@typescript-eslint/parser': ^8.51.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.50.1': - resolution: {integrity: sha512-hM5faZwg7aVNa819m/5r7D0h0c9yC4DUlWAOvHAtISdFTc8xB86VmX5Xqabrama3wIPJ/q9RbGS1worb6JfnMg==} + '@typescript-eslint/parser@8.51.0': + resolution: {integrity: sha512-3xP4XzzDNQOIqBMWogftkwxhg5oMKApqY0BAflmLZiFYHqyhSOxv/cd/zPQLTcCXr4AkaKb25joocY0BD1WC6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.50.1': - resolution: {integrity: sha512-E1ur1MCVf+YiP89+o4Les/oBAVzmSbeRB0MQLfSlYtbWU17HPxZ6Bhs5iYmKZRALvEuBoXIZMOIRRc/P++Ortg==} + '@typescript-eslint/project-service@8.51.0': + resolution: {integrity: sha512-Luv/GafO07Z7HpiI7qeEW5NW8HUtZI/fo/kE0YbtQEFpJRUuR0ajcWfCE5bnMvL7QQFrmT/odMe8QZww8X2nfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.50.1': - resolution: {integrity: sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw==} + '@typescript-eslint/scope-manager@8.51.0': + resolution: {integrity: sha512-JhhJDVwsSx4hiOEQPeajGhCWgBMBwVkxC/Pet53EpBVs7zHHtayKefw1jtPaNRXpI9RA2uocdmpdfE7T+NrizA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.50.1': - resolution: {integrity: sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw==} + '@typescript-eslint/tsconfig-utils@8.51.0': + resolution: {integrity: sha512-Qi5bSy/vuHeWyir2C8u/uqGMIlIDu8fuiYWv48ZGlZ/k+PRPHtaAu7erpc7p5bzw2WNNSniuxoMSO4Ar6V9OXw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.50.1': - resolution: {integrity: sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg==} + '@typescript-eslint/type-utils@8.51.0': + resolution: {integrity: sha512-0XVtYzxnobc9K0VU7wRWg1yiUrw4oQzexCG2V2IDxxCxhqBMSMbjB+6o91A+Uc0GWtgjCa3Y8bi7hwI0Tu4n5Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.50.1': - resolution: {integrity: sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA==} + '@typescript-eslint/types@8.51.0': + resolution: {integrity: sha512-TizAvWYFM6sSscmEakjY3sPqGwxZRSywSsPEiuZF6d5GmGD9Gvlsv0f6N8FvAAA0CD06l3rIcWNbsN1e5F/9Ag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.50.1': - resolution: {integrity: sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ==} + '@typescript-eslint/typescript-estree@8.51.0': + resolution: {integrity: sha512-1qNjGqFRmlq0VW5iVlcyHBbCjPB7y6SxpBkrbhNWMy/65ZoncXCEPJxkRZL8McrseNH6lFhaxCIaX+vBuFnRng==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.50.1': - resolution: {integrity: sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ==} + '@typescript-eslint/utils@8.51.0': + resolution: {integrity: sha512-11rZYxSe0zabiKaCP2QAwRf/dnmgFgvTmeDTtZvUvXG3UuAdg/GU02NExmmIXzz3vLGgMdtrIosI84jITQOxUA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.50.1': - resolution: {integrity: sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ==} + '@typescript-eslint/visitor-keys@8.51.0': + resolution: {integrity: sha512-mM/JRQOzhVN1ykejrvwnBRV3+7yTKK8tVANVN3o1O0t0v7o+jqdVu9crPy5Y9dov15TJk/FTIgoUGHrTOVL3Zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typespec/ts-http-runtime@0.3.2': @@ -1754,8 +1754,8 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} @@ -2470,8 +2470,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + prettier-linter-helpers@1.0.1: + resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} engines: {node: '>=6.0.0'} prettier@3.7.4: @@ -2490,8 +2490,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qs@6.14.0: - resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + qs@6.14.1: + resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} engines: {node: '>=0.6'} queue-microtask@1.2.3: @@ -2773,8 +2773,8 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - ts-api-utils@2.1.0: - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + ts-api-utils@2.3.0: + resolution: {integrity: sha512-6eg3Y9SF7SsAvGzRHQvvc1skDAhwI4YQ32ui1scxD1Ccr0G5qIIbUBT3pFTKX8kmWIQClHobtUdNuaBgwdfdWg==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -2822,8 +2822,8 @@ packages: typed-rest-client@1.8.11: resolution: {integrity: sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==} - typescript-eslint@8.50.1: - resolution: {integrity: sha512-ytTHO+SoYSbhAH9CrYnMhiLx8To6PSSvqnvXyPUgPETCvB6eBKmTI9w6XMPS3HsBRGkwTVBX+urA8dYQx6bHfQ==} + typescript-eslint@8.51.0: + resolution: {integrity: sha512-jh8ZuM5oEh2PSdyQG9YAEM1TCGuWenLSuSUhf/irbVUNW9O5FhbFVONviN2TgMTBnUmyHv7E56rYnfLZK6TkiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2889,6 +2889,7 @@ packages: whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} @@ -3672,7 +3673,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 + fastq: 1.20.1 '@octokit/auth-token@6.0.0': {} @@ -3867,95 +3868,95 @@ snapshots: '@types/vscode@1.61.0': {} - '@typescript-eslint/eslint-plugin@8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.51.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.50.1 - '@typescript-eslint/type-utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.51.0 + '@typescript-eslint/type-utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.51.0 eslint: 9.39.2 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.50.1 - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/scope-manager': 8.51.0 + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.51.0 debug: 4.4.3 eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.50.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.51.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) - '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/tsconfig-utils': 8.51.0(typescript@5.9.3) + '@typescript-eslint/types': 8.51.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.50.1': + '@typescript-eslint/scope-manager@8.51.0': dependencies: - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/visitor-keys': 8.51.0 - '@typescript-eslint/tsconfig-utils@8.50.1(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.51.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.50.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.51.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.50.1': {} + '@typescript-eslint/types@8.51.0': {} - '@typescript-eslint/typescript-estree@8.50.1(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.51.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.50.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/project-service': 8.51.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.51.0(typescript@5.9.3) + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/visitor-keys': 8.51.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 tinyglobby: 0.2.15 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.3.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.50.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.51.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.50.1 - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.51.0 + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.50.1': + '@typescript-eslint/visitor-keys@8.51.0': dependencies: - '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/types': 8.51.0 eslint-visitor-keys: 4.2.1 '@typespec/ts-http-runtime@0.3.2': @@ -4549,11 +4550,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -4565,7 +4566,7 @@ snapshots: eslint-utils: 2.1.0 regexpp: 3.2.0 - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -4576,7 +4577,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.2 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -4588,7 +4589,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -4608,7 +4609,7 @@ snapshots: dependencies: eslint: 9.39.2 prettier: 3.7.4 - prettier-linter-helpers: 1.0.0 + prettier-linter-helpers: 1.0.1 synckit: 0.11.11 optionalDependencies: eslint-config-prettier: 10.1.8(eslint@9.39.2) @@ -4708,7 +4709,7 @@ snapshots: fast-uri@3.1.0: {} - fastq@1.19.1: + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -5451,7 +5452,7 @@ snapshots: prelude-ls@1.2.1: {} - prettier-linter-helpers@1.0.0: + prettier-linter-helpers@1.0.1: dependencies: fast-diff: 1.3.0 @@ -5467,7 +5468,7 @@ snapshots: punycode@2.3.1: {} - qs@6.14.0: + qs@6.14.1: dependencies: side-channel: 1.1.0 @@ -5823,7 +5824,7 @@ snapshots: dependencies: is-number: 7.0.0 - ts-api-utils@2.1.0(typescript@5.9.3): + ts-api-utils@2.3.0(typescript@5.9.3): dependencies: typescript: 5.9.3 @@ -5886,16 +5887,16 @@ snapshots: typed-rest-client@1.8.11: dependencies: - qs: 6.14.0 + qs: 6.14.1 tunnel: 0.0.6 underscore: 1.13.7 - typescript-eslint@8.50.1(eslint@9.39.2)(typescript@5.9.3): + typescript-eslint@8.51.0(eslint@9.39.2)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.51.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: diff --git a/server/Cargo.lock b/server/Cargo.lock index 6bb1312..f366a03 100644 --- a/server/Cargo.lock +++ b/server/Cargo.lock @@ -413,9 +413,12 @@ dependencies = [ [[package]] name = "arc-swap" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" +checksum = "51d03449bb8ca2cc2ef70869af31463d1ae5ccc8fa3e334b307203fbf815207e" +dependencies = [ + "rustversion", +] [[package]] name = "arrayvec" @@ -651,9 +654,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.50" +version = "1.2.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f50d563227a1c37cc0a263f64eca3334388c01c5e4c4861a9def205c614383c" +checksum = "7a0aeaff4ff1a90589618835a598e545176939b97874f7abc7851caa0618f203" dependencies = [ "find-msvc-tools", "jobserver", @@ -746,7 +749,7 @@ checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "codechat-editor-server" -version = "0.1.48" +version = "0.1.49" dependencies = [ "actix-files", "actix-http", @@ -1280,9 +1283,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" +checksum = "645cbb3a84e60b7531617d5ae4e57f7e27308f6445f5abf653209ea76dec8dff" [[package]] name = "flate2" @@ -1964,9 +1967,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" dependencies = [ "memchr", "serde", @@ -1989,15 +1992,15 @@ checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itoa" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee5b5339afb4c41626dde77b7a611bd4f2c202b897852b4bcf5d03eddc61010" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "jiff" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35" +checksum = "a87d9b8105c23642f50cbbae03d1f75d8422c5cb98ce7ee9271f7ff7505be6b8" dependencies = [ "jiff-static", "log", @@ -2008,9 +2011,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" +checksum = "b787bebb543f8969132630c51fd0afab173a86c6abae56ff3b9e5e3e3f9f6e58" dependencies = [ "proc-macro2", "quote", @@ -2105,13 +2108,13 @@ checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" [[package]] name = "libredox" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df15f6eac291ed1cf25865b1ee60399f57e7c227e7f51bdbd4c5270396a9ed50" +checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" dependencies = [ "bitflags 2.10.0", "libc", - "redox_syscall 0.6.0", + "redox_syscall 0.7.0", ] [[package]] @@ -2634,9 +2637,9 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "portable-atomic" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f59e70c4aef1e55797c2e8fd94a4f2a973fc972cfde0e0b05f683667b0cd39dd" +checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" [[package]] name = "portable-atomic-util" @@ -2749,9 +2752,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.103" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +checksum = "9695f8df41bb4f3d222c95a67532365f569318332d03d5f3f67f37b20e6ebdf0" dependencies = [ "unicode-ident", ] @@ -2925,9 +2928,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec96166dafa0886eb81fe1c0a388bece180fbef2135f97c1e2cf8302e74b43b5" +checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" dependencies = [ "bitflags 2.10.0", ] @@ -3055,9 +3058,9 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" dependencies = [ "bitflags 2.10.0", "errno", @@ -3109,9 +3112,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea" +checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" [[package]] name = "same-file" @@ -3242,16 +3245,16 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.146" +version = "1.0.148" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "217ca874ae0207aac254aa02c957ded05585a90892cc8d87f9e5fa49669dadd8" +checksum = "3084b546a1dd6289475996f182a22aba973866ea8e8b02c51d9f46b1336a22da" dependencies = [ "indexmap 2.12.1", "itoa", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] @@ -3346,10 +3349,11 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.7" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] @@ -3540,9 +3544,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.23.0" +version = "3.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" dependencies = [ "fastrand", "getrandom 0.3.4", @@ -4840,9 +4844,9 @@ dependencies = [ [[package]] name = "zeroize_derive" -version = "1.4.2" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ "proc-macro2", "quote", @@ -4902,6 +4906,12 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40990edd51aae2c2b6907af74ffb635029d5788228222c4bb811e9351c0caad3" +[[package]] +name = "zmij" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f4a4e8e9dc5c62d159f04fcdbe07f4c3fb710415aab4754bf11505501e3251d" + [[package]] name = "zopfli" version = "0.8.3" diff --git a/server/Cargo.toml b/server/Cargo.toml index 4a420d4..9bef763 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -32,7 +32,7 @@ license = "GPL-3.0-only" name = "codechat-editor-server" readme = "../README.md" repository = "https://github.com/bjones1/CodeChat_Editor" -version = "0.1.48" +version = "0.1.49" # This library allows other packages to use core CodeChat Editor features. [lib]