diff --git a/README.md b/README.md
index 74426b13..96260884 100644
--- a/README.md
+++ b/README.md
@@ -147,9 +147,9 @@ following characters should be escaped: `*`, `_`, `\`, `[`, `]`, `<`.
The CodeChat Editor contains rudimentary support for diagrams created by
[Graphviz](https://graphviz.org/). For example,
-| Source | Rendered |
-| -------------------------------------------------------------- | ------------------------------------------------------------ |
-| `` | |
+| Source | Rendered |
+| ----------------------------------------------------- | --------------------------------------------------- |
+| `digraph { A -> B }` | digraph { A -> B } |
To edit these diagrams, use an [HTML entity
encoder/decoder](https://mothereff.in/html-entities) and a Graphviz editor such
diff --git a/builder/Cargo.lock b/builder/Cargo.lock
index e4c9b0b5..44819ee0 100644
--- a/builder/Cargo.lock
+++ b/builder/Cargo.lock
@@ -81,9 +81,9 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.5.46"
+version = "4.5.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c5e4fcf9c21d2e544ca1ee9d8552de13019a42aa7dbf32747fa7aaf1df76e57"
+checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931"
dependencies = [
"clap_builder",
"clap_derive",
@@ -91,9 +91,9 @@ dependencies = [
[[package]]
name = "clap_builder"
-version = "4.5.46"
+version = "4.5.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fecb53a0e6fcfb055f686001bc2e2592fa527efaf38dbe81a6a9563562e57d41"
+checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6"
dependencies = [
"anstream",
"anstyle",
@@ -103,9 +103,9 @@ dependencies = [
[[package]]
name = "clap_derive"
-version = "4.5.45"
+version = "4.5.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6"
+checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c"
dependencies = [
"heck",
"proc-macro2",
diff --git a/builder/src/main.rs b/builder/src/main.rs
index 795a6458..3c6a15c4 100644
--- a/builder/src/main.rs
+++ b/builder/src/main.rs
@@ -317,10 +317,18 @@ fn patch_client_libs() -> io::Result<()> {
// Copy across the parts of MathJax that are needed, since bundling it is
// difficult.
+ remove_dir_all_if_exists("../client/static/mathjax")?;
+ for subdir in ["a11y", "adaptors", "input", "output", "sre", "ui"] {
+ quick_copy_dir(
+ format!("../client/node_modules/mathjax/{subdir}/"),
+ format!("../client/static/mathjax/{subdir}"),
+ None,
+ )?;
+ }
quick_copy_dir(
"../client/node_modules/mathjax/",
"../client/static/mathjax",
- None,
+ Some("tex-chtml.js"),
)?;
quick_copy_dir(
"../client/node_modules/@mathjax/mathjax-newcm-font/chtml/",
diff --git a/client/package.json5 b/client/package.json5
index ab0278d4..e22f0d21 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.31',
+ version: '0.1.33',
dependencies: {
'@codemirror/commands': '^6.8.1',
'@codemirror/lang-cpp': '^6.0.3',
@@ -62,7 +62,7 @@
'@codemirror/view': '^6.38.2',
'@mathjax/mathjax-newcm-font': '4.0.0',
codemirror: '^6.0.2',
- 'graphviz-webcomponent': '^2.0.0',
+ 'graphviz-webcomponent': 'github:bjones1/graphviz-webcomponent#dist',
mathjax: '4.0.0',
mermaid: '^11.10.1',
'npm-check-updates': '^18.0.3',
@@ -76,8 +76,8 @@
'@types/mocha': '^10.0.10',
'@types/node': '^24.3.0',
'@types/toastify-js': '^1.12.4',
- '@typescript-eslint/eslint-plugin': '^8.41.0',
- '@typescript-eslint/parser': '^8.41.0',
+ '@typescript-eslint/eslint-plugin': '^8.42.0',
+ '@typescript-eslint/parser': '^8.42.0',
chai: '^6.0.1',
esbuild: '^0.25.9',
eslint: '^9.34.0',
diff --git a/client/pnpm-lock.yaml b/client/pnpm-lock.yaml
index 8a471f60..e5e85aac 100644
--- a/client/pnpm-lock.yaml
+++ b/client/pnpm-lock.yaml
@@ -60,8 +60,8 @@ importers:
specifier: ^6.0.2
version: 6.0.2
graphviz-webcomponent:
- specifier: ^2.0.0
- version: 2.0.0
+ specifier: github:bjones1/graphviz-webcomponent#dist
+ version: https://codeload.github.com/bjones1/graphviz-webcomponent/tar.gz/6dc598f65f2ccca1038e6489b00d4d604e5644c7
mathjax:
specifier: 4.0.0
version: 4.0.0
@@ -97,11 +97,11 @@ importers:
specifier: ^1.12.4
version: 1.12.4
'@typescript-eslint/eslint-plugin':
- specifier: ^8.41.0
- version: 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)(typescript@5.9.2)
+ specifier: ^8.42.0
+ version: 8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)(typescript@5.9.2)
'@typescript-eslint/parser':
- specifier: ^8.41.0
- version: 8.41.0(eslint@9.34.0)(typescript@5.9.2)
+ specifier: ^8.42.0
+ version: 8.42.0(eslint@9.34.0)(typescript@5.9.2)
chai:
specifier: ^6.0.1
version: 6.0.1
@@ -116,7 +116,7 @@ importers:
version: 10.1.8(eslint@9.34.0)
eslint-plugin-import:
specifier: ^2.32.0
- version: 2.32.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)
+ version: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)
eslint-plugin-prettier:
specifier: ^5.5.4
version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.34.0))(eslint@9.34.0)(prettier@3.6.2)
@@ -156,8 +156,8 @@ packages:
'@chevrotain/utils@11.0.3':
resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==}
- '@codemirror/autocomplete@6.18.6':
- resolution: {integrity: sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==}
+ '@codemirror/autocomplete@6.18.7':
+ resolution: {integrity: sha512-8EzdeIoWPJDsMBwz3zdzwXnUpCzMiCyz5/A3FIPpriaclFCGDkAzK13sMcnsu5rowqiyeQN2Vs2TsOcoDPZirQ==}
'@codemirror/commands@6.8.1':
resolution: {integrity: sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==}
@@ -704,63 +704,63 @@ packages:
'@types/trusted-types@2.0.7':
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
- '@typescript-eslint/eslint-plugin@8.41.0':
- resolution: {integrity: sha512-8fz6oa6wEKZrhXWro/S3n2eRJqlRcIa6SlDh59FXJ5Wp5XRZ8B9ixpJDcjadHq47hMx0u+HW6SNa6LjJQ6NLtw==}
+ '@typescript-eslint/eslint-plugin@8.42.0':
+ resolution: {integrity: sha512-Aq2dPqsQkxHOLfb2OPv43RnIvfj05nw8v/6n3B2NABIPpHnjQnaLo9QGMTvml+tv4korl/Cjfrb/BYhoL8UUTQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/parser': ^8.41.0
+ '@typescript-eslint/parser': ^8.42.0
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/parser@8.41.0':
- resolution: {integrity: sha512-gTtSdWX9xiMPA/7MV9STjJOOYtWwIJIYxkQxnSV1U3xcE+mnJSH3f6zI0RYP+ew66WSlZ5ed+h0VCxsvdC1jJg==}
+ '@typescript-eslint/parser@8.42.0':
+ resolution: {integrity: sha512-r1XG74QgShUgXph1BYseJ+KZd17bKQib/yF3SR+demvytiRXrwd12Blnz5eYGm8tXaeRdd4x88MlfwldHoudGg==}
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.41.0':
- resolution: {integrity: sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ==}
+ '@typescript-eslint/project-service@8.42.0':
+ resolution: {integrity: sha512-vfVpLHAhbPjilrabtOSNcUDmBboQNrJUiNAGoImkZKnMjs2TIcWG33s4Ds0wY3/50aZmTMqJa6PiwkwezaAklg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/scope-manager@8.41.0':
- resolution: {integrity: sha512-n6m05bXn/Cd6DZDGyrpXrELCPVaTnLdPToyhBoFkLIMznRUQUEQdSp96s/pcWSQdqOhrgR1mzJ+yItK7T+WPMQ==}
+ '@typescript-eslint/scope-manager@8.42.0':
+ resolution: {integrity: sha512-51+x9o78NBAVgQzOPd17DkNTnIzJ8T/O2dmMBLoK9qbY0Gm52XJcdJcCl18ExBMiHo6jPMErUQWUv5RLE51zJw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/tsconfig-utils@8.41.0':
- resolution: {integrity: sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw==}
+ '@typescript-eslint/tsconfig-utils@8.42.0':
+ resolution: {integrity: sha512-kHeFUOdwAJfUmYKjR3CLgZSglGHjbNTi1H8sTYRYV2xX6eNz4RyJ2LIgsDLKf8Yi0/GL1WZAC/DgZBeBft8QAQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/type-utils@8.41.0':
- resolution: {integrity: sha512-63qt1h91vg3KsjVVonFJWjgSK7pZHSQFKH6uwqxAH9bBrsyRhO6ONoKyXxyVBzG1lJnFAJcKAcxLS54N1ee1OQ==}
+ '@typescript-eslint/type-utils@8.42.0':
+ resolution: {integrity: sha512-9KChw92sbPTYVFw3JLRH1ockhyR3zqqn9lQXol3/YbI6jVxzWoGcT3AsAW0mu1MY0gYtsXnUGV/AKpkAj5tVlQ==}
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.41.0':
- resolution: {integrity: sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag==}
+ '@typescript-eslint/types@8.42.0':
+ resolution: {integrity: sha512-LdtAWMiFmbRLNP7JNeY0SqEtJvGMYSzfiWBSmx+VSZ1CH+1zyl8Mmw1TT39OrtsRvIYShjJWzTDMPWZJCpwBlw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.41.0':
- resolution: {integrity: sha512-D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ==}
+ '@typescript-eslint/typescript-estree@8.42.0':
+ resolution: {integrity: sha512-ku/uYtT4QXY8sl9EDJETD27o3Ewdi72hcXg1ah/kkUgBvAYHLwj2ofswFFNXS+FL5G+AGkxBtvGt8pFBHKlHsQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/utils@8.41.0':
- resolution: {integrity: sha512-udbCVstxZ5jiPIXrdH+BZWnPatjlYwJuJkDA4Tbo3WyYLh8NvB+h/bKeSZHDOFKfphsZYJQqaFtLeXEqurQn1A==}
+ '@typescript-eslint/utils@8.42.0':
+ resolution: {integrity: sha512-JnIzu7H3RH5BrKC4NoZqRfmjqCIS1u3hGZltDYJgkVdqAezl4L9d1ZLw+36huCujtSBSAirGINF/S4UxOcR+/g==}
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.41.0':
- resolution: {integrity: sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg==}
+ '@typescript-eslint/visitor-keys@8.42.0':
+ resolution: {integrity: sha512-3WbiuzoEowaEn8RSnhJBrxSwX8ULYE9CXaPepS2C2W3NSA5NNIvBaslpBSBElPq0UGr0xVJlXFWOAKIkyylydQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
acorn-jsx@5.3.2:
@@ -1404,8 +1404,9 @@ packages:
graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
- graphviz-webcomponent@2.0.0:
- resolution: {integrity: sha512-1YQ6PafwxTCpdwsaeB+ZYsdErJ/PHOHryKkREBvg+iQz7A7N4Gu2DuVP/3DTOBAI23zjyQmxtrYBNq6vOnhXLQ==}
+ graphviz-webcomponent@https://codeload.github.com/bjones1/graphviz-webcomponent/tar.gz/6dc598f65f2ccca1038e6489b00d4d604e5644c7:
+ resolution: {tarball: https://codeload.github.com/bjones1/graphviz-webcomponent/tar.gz/6dc598f65f2ccca1038e6489b00d4d604e5644c7}
+ version: 2.0.0
engines: {node: '>=10'}
hachure-fill@0.5.2:
@@ -2187,7 +2188,7 @@ snapshots:
'@chevrotain/utils@11.0.3': {}
- '@codemirror/autocomplete@6.18.6':
+ '@codemirror/autocomplete@6.18.7':
dependencies:
'@codemirror/language': 6.11.3
'@codemirror/state': 6.5.2
@@ -2208,7 +2209,7 @@ snapshots:
'@codemirror/lang-css@6.3.1':
dependencies:
- '@codemirror/autocomplete': 6.18.6
+ '@codemirror/autocomplete': 6.18.7
'@codemirror/language': 6.11.3
'@codemirror/state': 6.5.2
'@lezer/common': 1.2.3
@@ -2216,7 +2217,7 @@ snapshots:
'@codemirror/lang-go@6.0.1':
dependencies:
- '@codemirror/autocomplete': 6.18.6
+ '@codemirror/autocomplete': 6.18.7
'@codemirror/language': 6.11.3
'@codemirror/state': 6.5.2
'@lezer/common': 1.2.3
@@ -2224,7 +2225,7 @@ snapshots:
'@codemirror/lang-html@6.4.9':
dependencies:
- '@codemirror/autocomplete': 6.18.6
+ '@codemirror/autocomplete': 6.18.7
'@codemirror/lang-css': 6.3.1
'@codemirror/lang-javascript': 6.2.4
'@codemirror/language': 6.11.3
@@ -2241,7 +2242,7 @@ snapshots:
'@codemirror/lang-javascript@6.2.4':
dependencies:
- '@codemirror/autocomplete': 6.18.6
+ '@codemirror/autocomplete': 6.18.7
'@codemirror/language': 6.11.3
'@codemirror/lint': 6.8.5
'@codemirror/state': 6.5.2
@@ -2256,7 +2257,7 @@ snapshots:
'@codemirror/lang-markdown@6.3.4':
dependencies:
- '@codemirror/autocomplete': 6.18.6
+ '@codemirror/autocomplete': 6.18.7
'@codemirror/lang-html': 6.4.9
'@codemirror/language': 6.11.3
'@codemirror/state': 6.5.2
@@ -2274,7 +2275,7 @@ snapshots:
'@codemirror/lang-python@6.2.1':
dependencies:
- '@codemirror/autocomplete': 6.18.6
+ '@codemirror/autocomplete': 6.18.7
'@codemirror/language': 6.11.3
'@codemirror/state': 6.5.2
'@lezer/common': 1.2.3
@@ -2287,7 +2288,7 @@ snapshots:
'@codemirror/lang-xml@6.1.0':
dependencies:
- '@codemirror/autocomplete': 6.18.6
+ '@codemirror/autocomplete': 6.18.7
'@codemirror/language': 6.11.3
'@codemirror/state': 6.5.2
'@codemirror/view': 6.38.2
@@ -2781,14 +2782,14 @@ snapshots:
'@types/trusted-types@2.0.7':
optional: true
- '@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)(typescript@5.9.2)':
+ '@typescript-eslint/eslint-plugin@8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)(typescript@5.9.2)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.41.0(eslint@9.34.0)(typescript@5.9.2)
- '@typescript-eslint/scope-manager': 8.41.0
- '@typescript-eslint/type-utils': 8.41.0(eslint@9.34.0)(typescript@5.9.2)
- '@typescript-eslint/utils': 8.41.0(eslint@9.34.0)(typescript@5.9.2)
- '@typescript-eslint/visitor-keys': 8.41.0
+ '@typescript-eslint/parser': 8.42.0(eslint@9.34.0)(typescript@5.9.2)
+ '@typescript-eslint/scope-manager': 8.42.0
+ '@typescript-eslint/type-utils': 8.42.0(eslint@9.34.0)(typescript@5.9.2)
+ '@typescript-eslint/utils': 8.42.0(eslint@9.34.0)(typescript@5.9.2)
+ '@typescript-eslint/visitor-keys': 8.42.0
eslint: 9.34.0
graphemer: 1.4.0
ignore: 7.0.5
@@ -2798,41 +2799,41 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2)':
+ '@typescript-eslint/parser@8.42.0(eslint@9.34.0)(typescript@5.9.2)':
dependencies:
- '@typescript-eslint/scope-manager': 8.41.0
- '@typescript-eslint/types': 8.41.0
- '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2)
- '@typescript-eslint/visitor-keys': 8.41.0
+ '@typescript-eslint/scope-manager': 8.42.0
+ '@typescript-eslint/types': 8.42.0
+ '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2)
+ '@typescript-eslint/visitor-keys': 8.42.0
debug: 4.4.1(supports-color@8.1.1)
eslint: 9.34.0
typescript: 5.9.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.41.0(typescript@5.9.2)':
+ '@typescript-eslint/project-service@8.42.0(typescript@5.9.2)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.2)
- '@typescript-eslint/types': 8.41.0
+ '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2)
+ '@typescript-eslint/types': 8.42.0
debug: 4.4.1(supports-color@8.1.1)
typescript: 5.9.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.41.0':
+ '@typescript-eslint/scope-manager@8.42.0':
dependencies:
- '@typescript-eslint/types': 8.41.0
- '@typescript-eslint/visitor-keys': 8.41.0
+ '@typescript-eslint/types': 8.42.0
+ '@typescript-eslint/visitor-keys': 8.42.0
- '@typescript-eslint/tsconfig-utils@8.41.0(typescript@5.9.2)':
+ '@typescript-eslint/tsconfig-utils@8.42.0(typescript@5.9.2)':
dependencies:
typescript: 5.9.2
- '@typescript-eslint/type-utils@8.41.0(eslint@9.34.0)(typescript@5.9.2)':
+ '@typescript-eslint/type-utils@8.42.0(eslint@9.34.0)(typescript@5.9.2)':
dependencies:
- '@typescript-eslint/types': 8.41.0
- '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2)
- '@typescript-eslint/utils': 8.41.0(eslint@9.34.0)(typescript@5.9.2)
+ '@typescript-eslint/types': 8.42.0
+ '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2)
+ '@typescript-eslint/utils': 8.42.0(eslint@9.34.0)(typescript@5.9.2)
debug: 4.4.1(supports-color@8.1.1)
eslint: 9.34.0
ts-api-utils: 2.1.0(typescript@5.9.2)
@@ -2840,14 +2841,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@8.41.0': {}
+ '@typescript-eslint/types@8.42.0': {}
- '@typescript-eslint/typescript-estree@8.41.0(typescript@5.9.2)':
+ '@typescript-eslint/typescript-estree@8.42.0(typescript@5.9.2)':
dependencies:
- '@typescript-eslint/project-service': 8.41.0(typescript@5.9.2)
- '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.2)
- '@typescript-eslint/types': 8.41.0
- '@typescript-eslint/visitor-keys': 8.41.0
+ '@typescript-eslint/project-service': 8.42.0(typescript@5.9.2)
+ '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2)
+ '@typescript-eslint/types': 8.42.0
+ '@typescript-eslint/visitor-keys': 8.42.0
debug: 4.4.1(supports-color@8.1.1)
fast-glob: 3.3.3
is-glob: 4.0.3
@@ -2858,20 +2859,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.41.0(eslint@9.34.0)(typescript@5.9.2)':
+ '@typescript-eslint/utils@8.42.0(eslint@9.34.0)(typescript@5.9.2)':
dependencies:
'@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0)
- '@typescript-eslint/scope-manager': 8.41.0
- '@typescript-eslint/types': 8.41.0
- '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2)
+ '@typescript-eslint/scope-manager': 8.42.0
+ '@typescript-eslint/types': 8.42.0
+ '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2)
eslint: 9.34.0
typescript: 5.9.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@8.41.0':
+ '@typescript-eslint/visitor-keys@8.42.0':
dependencies:
- '@typescript-eslint/types': 8.41.0
+ '@typescript-eslint/types': 8.42.0
eslint-visitor-keys: 4.2.1
acorn-jsx@5.3.2(acorn@8.15.0):
@@ -3026,7 +3027,7 @@ snapshots:
codemirror@6.0.2:
dependencies:
- '@codemirror/autocomplete': 6.18.6
+ '@codemirror/autocomplete': 6.18.7
'@codemirror/commands': 6.8.1
'@codemirror/language': 6.11.3
'@codemirror/lint': 6.8.5
@@ -3449,17 +3450,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.41.0(eslint@9.34.0)(typescript@5.9.2)
+ '@typescript-eslint/parser': 8.42.0(eslint@9.34.0)(typescript@5.9.2)
eslint: 9.34.0
eslint-import-resolver-node: 0.3.9
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -3470,7 +3471,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.34.0
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0)
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0)
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -3482,7 +3483,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.41.0(eslint@9.34.0)(typescript@5.9.2)
+ '@typescript-eslint/parser': 8.42.0(eslint@9.34.0)(typescript@5.9.2)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -3686,7 +3687,7 @@ snapshots:
graphemer@1.4.0: {}
- graphviz-webcomponent@2.0.0: {}
+ graphviz-webcomponent@https://codeload.github.com/bjones1/graphviz-webcomponent/tar.gz/6dc598f65f2ccca1038e6489b00d4d604e5644c7: {}
hachure-fill@0.5.2: {}
diff --git a/client/src/CodeMirror-integration.mts b/client/src/CodeMirror-integration.mts
index c63cf6a4..64bea408 100644
--- a/client/src/CodeMirror-integration.mts
+++ b/client/src/CodeMirror-integration.mts
@@ -457,12 +457,6 @@ class DocBlockWidget extends WidgetType {
// "Update a DOM element created by a widget of the same type (but
// different, non-eq content) to reflect this widget."
updateDOM(dom: HTMLElement, view: EditorView): boolean {
- // If this update has already been made to the provided DOM, then we're
- // done. TODO: does this actually improve performance?
- if (this.dom === dom) {
- return true;
- }
-
(dom.childNodes[0] as HTMLDivElement).innerHTML = this.indent;
// The contents div could be a TinyMCE instance, or just a plain div.
@@ -476,7 +470,6 @@ class DocBlockWidget extends WidgetType {
contents_div.innerHTML = this.contents;
mathJaxTypeset(contents_div);
}
- this.dom = dom as HTMLDivElement;
// Indicate the update was successful.
return true;
diff --git a/client/src/third-party/turndown/turndown.browser.es.mjs b/client/src/third-party/turndown/turndown.browser.es.mjs
index 7ef15f04..45f4211c 100644
--- a/client/src/third-party/turndown/turndown.browser.es.mjs
+++ b/client/src/third-party/turndown/turndown.browser.es.mjs
@@ -55,7 +55,8 @@ var meaningfulWhenBlankElements = [
];
function isMeaningfulWhenBlank (node) {
- return is(node, meaningfulWhenBlankElements)
+ // Certain standard HTML tags, plus any custom tag, are meaningful when blank.
+ return is(node, meaningfulWhenBlankElements) || node.nodeName.includes('-')
}
function hasMeaningfulWhenBlank (node) {
@@ -77,7 +78,7 @@ function has (node, tagNames) {
function Node (node, options) {
node.isBlock = isBlock(node);
- node.isCode = node.nodeName === 'CODE' || node.nodeName === 'WC-MERMAID' || node.parentNode.isCode;
+ node.isCode = node.nodeName === 'CODE' || node.nodeName === 'WC-MERMAID' || node.nodeName === 'GRAPHVIZ-GRAPH' || node.parentNode.isCode;
node.isBlank = isBlank(node);
node.flankingWhitespace = flankingWhitespace(node, options);
// When true, this node will be rendered as pure Markdown; false indicates it
@@ -132,7 +133,8 @@ function isBlank (node) {
!isMeaningfulWhenBlank(node) &&
/^\s*$/i.test(node.textContent) &&
!hasVoid(node) &&
- !hasMeaningfulWhenBlank(node)
+ !hasMeaningfulWhenBlank(node) &&
+ (node.childNodes === undefined || node.childNodes.length === 0)
)
}
@@ -773,7 +775,7 @@ function collapseWhitespace (options) {
var isBlock = options.isBlock;
var isVoid = options.isVoid;
var isPre = options.isPre || function (node) {
- return node.nodeName === 'PRE' || node.nodeName === 'WC-MERMAID'
+ return node.nodeName === 'PRE' || node.nodeName === 'WC-MERMAID' || node.nodeName === 'GRAPHVIZ-GRAPH'
};
var renderAsPure = options.renderAsPure;
@@ -1222,7 +1224,7 @@ TurndownService.prototype = {
// These HTML elements are considered block nodes, as opposed to inline nodes. It's based on the Commonmark spec's selection of [HTML blocks](https://spec.commonmark.org/0.31.2/#html-blocks).
const blockNodeNames = new Set([
- 'PRE', 'SCRIPT', 'STYLE', 'TEXTAREA', 'ADDRESS', 'ARTICLE', 'ASIDE', 'BASE', 'BASEFONT', 'BLOCKQUOTE', 'BODY', 'CAPTION', 'CENTER', 'COL', 'COLGROUP', 'DD', 'DETAILS', 'DIALOG', 'DIR', 'DIV', 'DL', 'DT', 'FIELDSET', 'FIGCAPTION', 'FIGURE', 'FOOTER', 'FORM', 'FRAME', 'FRAMESET', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HEAD', 'HEADER', 'HR', 'HTML', 'IFRAME', 'LEGEND', 'LI', 'LINK', 'MAIN', 'MENU', 'MENUITEM', 'NAV', 'NOFRAMES', 'OL', 'OPTGROUP', 'OPTION', 'P', 'PARAM', 'SEARCH', 'SECTION', 'SUMMARY', 'TABLE', 'TBODY', 'TD', 'TFOOT', 'TH', 'THEAD', 'TITLE', 'TR', 'TRACK', 'UL', 'WC-MERMAID'
+ 'PRE', 'SCRIPT', 'STYLE', 'TEXTAREA', 'ADDRESS', 'ARTICLE', 'ASIDE', 'BASE', 'BASEFONT', 'BLOCKQUOTE', 'BODY', 'CAPTION', 'CENTER', 'COL', 'COLGROUP', 'DD', 'DETAILS', 'DIALOG', 'DIR', 'DIV', 'DL', 'DT', 'FIELDSET', 'FIGCAPTION', 'FIGURE', 'FOOTER', 'FORM', 'FRAME', 'FRAMESET', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HEAD', 'HEADER', 'HR', 'HTML', 'IFRAME', 'LEGEND', 'LI', 'LINK', 'MAIN', 'MENU', 'MENUITEM', 'NAV', 'NOFRAMES', 'OL', 'OPTGROUP', 'OPTION', 'P', 'PARAM', 'SEARCH', 'SECTION', 'SUMMARY', 'TABLE', 'TBODY', 'TD', 'TFOOT', 'TH', 'THEAD', 'TITLE', 'TR', 'TRACK', 'UL', 'WC-MERMAID', 'GRAPHVIZ-GRAPH'
]);
/**
diff --git a/docs/changelog.md b/docs/changelog.md
index aac09cd0..1ccc440a 100644
--- a/docs/changelog.md
+++ b/docs/changelog.md
@@ -24,6 +24,16 @@ Changelog
* No changes.
+Version 0.1.33 -- 2025-Sep-02
+-----------------------------
+
+* Change `` syntax, which now correctly translates from the
+ Client to source code, avoiding data loss in previous versions.
+* Make the Client text editable from the IDE by fixing a bug introduced in
+ v0.1.32.
+* Significantly reduce the size of the MathJax package.
+* Correct a data loss bug when deleting multiple sequential doc blocks.
+
Version 0.1.32 -- 2025-Sep-01
-----------------------------
diff --git a/extensions/VSCode/.vscodeignore b/extensions/VSCode/.vscodeignore
index 803745fc..94dff3b5 100644
--- a/extensions/VSCode/.vscodeignore
+++ b/extensions/VSCode/.vscodeignore
@@ -41,6 +41,9 @@ node_modules/
contents.md
developer.md
jsconfig.json
+pnpm-lock.yaml
+pnpm-workspace.yaml
+package.json
tsconfig.json
# CodeChat Editor lexer: python.
diff --git a/extensions/VSCode/package.json b/extensions/VSCode/package.json
index 730ad517..4a067622 100644
--- a/extensions/VSCode/package.json
+++ b/extensions/VSCode/package.json
@@ -30,7 +30,7 @@
"type": "git",
"url": "https://github.com/bjones1/CodeChat_Editor"
},
- "version": "0.1.32",
+ "version": "0.1.33",
"activationEvents": [
"onCommand:extension.codeChatEditorActivate",
"onCommand:extension.codeChatEditorDeactivate"
@@ -83,10 +83,10 @@
},
"devDependencies": {
"@types/escape-html": "^1.0.4",
- "@types/vscode": "^1.61.0",
+ "@types/vscode": "1.61.0",
"@types/ws": "^8.18.1",
- "@typescript-eslint/eslint-plugin": "^8.41.0",
- "@typescript-eslint/parser": "^8.41.0",
+ "@typescript-eslint/eslint-plugin": "^8.42.0",
+ "@typescript-eslint/parser": "^8.42.0",
"@vscode/vsce": "^3.6.0",
"esbuild": "^0.25.9",
"eslint": "^9.34.0",
diff --git a/extensions/VSCode/pnpm-lock.yaml b/extensions/VSCode/pnpm-lock.yaml
index 679e4541..91c7fa5f 100644
--- a/extensions/VSCode/pnpm-lock.yaml
+++ b/extensions/VSCode/pnpm-lock.yaml
@@ -19,17 +19,17 @@ importers:
specifier: ^1.0.4
version: 1.0.4
'@types/vscode':
- specifier: ^1.61.0
+ specifier: 1.61.0
version: 1.61.0
'@types/ws':
specifier: ^8.18.1
version: 8.18.1
'@typescript-eslint/eslint-plugin':
- specifier: ^8.41.0
- version: 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)(typescript@5.9.2)
+ specifier: ^8.42.0
+ version: 8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)(typescript@5.9.2)
'@typescript-eslint/parser':
- specifier: ^8.41.0
- version: 8.41.0(eslint@9.34.0)(typescript@5.9.2)
+ specifier: ^8.42.0
+ version: 8.42.0(eslint@9.34.0)(typescript@5.9.2)
'@vscode/vsce':
specifier: ^3.6.0
version: 3.6.0
@@ -44,7 +44,7 @@ importers:
version: 10.1.8(eslint@9.34.0)
eslint-plugin-import:
specifier: ^2.32.0
- version: 2.32.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)
+ version: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)
eslint-plugin-node:
specifier: ^11.1.0
version: 11.1.0(eslint@9.34.0)
@@ -556,63 +556,63 @@ packages:
'@types/ws@8.18.1':
resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
- '@typescript-eslint/eslint-plugin@8.41.0':
- resolution: {integrity: sha512-8fz6oa6wEKZrhXWro/S3n2eRJqlRcIa6SlDh59FXJ5Wp5XRZ8B9ixpJDcjadHq47hMx0u+HW6SNa6LjJQ6NLtw==}
+ '@typescript-eslint/eslint-plugin@8.42.0':
+ resolution: {integrity: sha512-Aq2dPqsQkxHOLfb2OPv43RnIvfj05nw8v/6n3B2NABIPpHnjQnaLo9QGMTvml+tv4korl/Cjfrb/BYhoL8UUTQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/parser': ^8.41.0
+ '@typescript-eslint/parser': ^8.42.0
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/parser@8.41.0':
- resolution: {integrity: sha512-gTtSdWX9xiMPA/7MV9STjJOOYtWwIJIYxkQxnSV1U3xcE+mnJSH3f6zI0RYP+ew66WSlZ5ed+h0VCxsvdC1jJg==}
+ '@typescript-eslint/parser@8.42.0':
+ resolution: {integrity: sha512-r1XG74QgShUgXph1BYseJ+KZd17bKQib/yF3SR+demvytiRXrwd12Blnz5eYGm8tXaeRdd4x88MlfwldHoudGg==}
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.41.0':
- resolution: {integrity: sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ==}
+ '@typescript-eslint/project-service@8.42.0':
+ resolution: {integrity: sha512-vfVpLHAhbPjilrabtOSNcUDmBboQNrJUiNAGoImkZKnMjs2TIcWG33s4Ds0wY3/50aZmTMqJa6PiwkwezaAklg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/scope-manager@8.41.0':
- resolution: {integrity: sha512-n6m05bXn/Cd6DZDGyrpXrELCPVaTnLdPToyhBoFkLIMznRUQUEQdSp96s/pcWSQdqOhrgR1mzJ+yItK7T+WPMQ==}
+ '@typescript-eslint/scope-manager@8.42.0':
+ resolution: {integrity: sha512-51+x9o78NBAVgQzOPd17DkNTnIzJ8T/O2dmMBLoK9qbY0Gm52XJcdJcCl18ExBMiHo6jPMErUQWUv5RLE51zJw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/tsconfig-utils@8.41.0':
- resolution: {integrity: sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw==}
+ '@typescript-eslint/tsconfig-utils@8.42.0':
+ resolution: {integrity: sha512-kHeFUOdwAJfUmYKjR3CLgZSglGHjbNTi1H8sTYRYV2xX6eNz4RyJ2LIgsDLKf8Yi0/GL1WZAC/DgZBeBft8QAQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/type-utils@8.41.0':
- resolution: {integrity: sha512-63qt1h91vg3KsjVVonFJWjgSK7pZHSQFKH6uwqxAH9bBrsyRhO6ONoKyXxyVBzG1lJnFAJcKAcxLS54N1ee1OQ==}
+ '@typescript-eslint/type-utils@8.42.0':
+ resolution: {integrity: sha512-9KChw92sbPTYVFw3JLRH1ockhyR3zqqn9lQXol3/YbI6jVxzWoGcT3AsAW0mu1MY0gYtsXnUGV/AKpkAj5tVlQ==}
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.41.0':
- resolution: {integrity: sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag==}
+ '@typescript-eslint/types@8.42.0':
+ resolution: {integrity: sha512-LdtAWMiFmbRLNP7JNeY0SqEtJvGMYSzfiWBSmx+VSZ1CH+1zyl8Mmw1TT39OrtsRvIYShjJWzTDMPWZJCpwBlw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.41.0':
- resolution: {integrity: sha512-D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ==}
+ '@typescript-eslint/typescript-estree@8.42.0':
+ resolution: {integrity: sha512-ku/uYtT4QXY8sl9EDJETD27o3Ewdi72hcXg1ah/kkUgBvAYHLwj2ofswFFNXS+FL5G+AGkxBtvGt8pFBHKlHsQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/utils@8.41.0':
- resolution: {integrity: sha512-udbCVstxZ5jiPIXrdH+BZWnPatjlYwJuJkDA4Tbo3WyYLh8NvB+h/bKeSZHDOFKfphsZYJQqaFtLeXEqurQn1A==}
+ '@typescript-eslint/utils@8.42.0':
+ resolution: {integrity: sha512-JnIzu7H3RH5BrKC4NoZqRfmjqCIS1u3hGZltDYJgkVdqAezl4L9d1ZLw+36huCujtSBSAirGINF/S4UxOcR+/g==}
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.41.0':
- resolution: {integrity: sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg==}
+ '@typescript-eslint/visitor-keys@8.42.0':
+ resolution: {integrity: sha512-3WbiuzoEowaEn8RSnhJBrxSwX8ULYE9CXaPepS2C2W3NSA5NNIvBaslpBSBElPq0UGr0xVJlXFWOAKIkyylydQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typespec/ts-http-runtime@0.3.0':
@@ -2781,14 +2781,14 @@ snapshots:
dependencies:
'@types/node': 24.3.0
- '@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)(typescript@5.9.2)':
+ '@typescript-eslint/eslint-plugin@8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)(typescript@5.9.2)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.41.0(eslint@9.34.0)(typescript@5.9.2)
- '@typescript-eslint/scope-manager': 8.41.0
- '@typescript-eslint/type-utils': 8.41.0(eslint@9.34.0)(typescript@5.9.2)
- '@typescript-eslint/utils': 8.41.0(eslint@9.34.0)(typescript@5.9.2)
- '@typescript-eslint/visitor-keys': 8.41.0
+ '@typescript-eslint/parser': 8.42.0(eslint@9.34.0)(typescript@5.9.2)
+ '@typescript-eslint/scope-manager': 8.42.0
+ '@typescript-eslint/type-utils': 8.42.0(eslint@9.34.0)(typescript@5.9.2)
+ '@typescript-eslint/utils': 8.42.0(eslint@9.34.0)(typescript@5.9.2)
+ '@typescript-eslint/visitor-keys': 8.42.0
eslint: 9.34.0
graphemer: 1.4.0
ignore: 7.0.5
@@ -2798,41 +2798,41 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2)':
+ '@typescript-eslint/parser@8.42.0(eslint@9.34.0)(typescript@5.9.2)':
dependencies:
- '@typescript-eslint/scope-manager': 8.41.0
- '@typescript-eslint/types': 8.41.0
- '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2)
- '@typescript-eslint/visitor-keys': 8.41.0
+ '@typescript-eslint/scope-manager': 8.42.0
+ '@typescript-eslint/types': 8.42.0
+ '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2)
+ '@typescript-eslint/visitor-keys': 8.42.0
debug: 4.4.1
eslint: 9.34.0
typescript: 5.9.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.41.0(typescript@5.9.2)':
+ '@typescript-eslint/project-service@8.42.0(typescript@5.9.2)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.2)
- '@typescript-eslint/types': 8.41.0
+ '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2)
+ '@typescript-eslint/types': 8.42.0
debug: 4.4.1
typescript: 5.9.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.41.0':
+ '@typescript-eslint/scope-manager@8.42.0':
dependencies:
- '@typescript-eslint/types': 8.41.0
- '@typescript-eslint/visitor-keys': 8.41.0
+ '@typescript-eslint/types': 8.42.0
+ '@typescript-eslint/visitor-keys': 8.42.0
- '@typescript-eslint/tsconfig-utils@8.41.0(typescript@5.9.2)':
+ '@typescript-eslint/tsconfig-utils@8.42.0(typescript@5.9.2)':
dependencies:
typescript: 5.9.2
- '@typescript-eslint/type-utils@8.41.0(eslint@9.34.0)(typescript@5.9.2)':
+ '@typescript-eslint/type-utils@8.42.0(eslint@9.34.0)(typescript@5.9.2)':
dependencies:
- '@typescript-eslint/types': 8.41.0
- '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2)
- '@typescript-eslint/utils': 8.41.0(eslint@9.34.0)(typescript@5.9.2)
+ '@typescript-eslint/types': 8.42.0
+ '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2)
+ '@typescript-eslint/utils': 8.42.0(eslint@9.34.0)(typescript@5.9.2)
debug: 4.4.1
eslint: 9.34.0
ts-api-utils: 2.1.0(typescript@5.9.2)
@@ -2840,14 +2840,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@8.41.0': {}
+ '@typescript-eslint/types@8.42.0': {}
- '@typescript-eslint/typescript-estree@8.41.0(typescript@5.9.2)':
+ '@typescript-eslint/typescript-estree@8.42.0(typescript@5.9.2)':
dependencies:
- '@typescript-eslint/project-service': 8.41.0(typescript@5.9.2)
- '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.2)
- '@typescript-eslint/types': 8.41.0
- '@typescript-eslint/visitor-keys': 8.41.0
+ '@typescript-eslint/project-service': 8.42.0(typescript@5.9.2)
+ '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2)
+ '@typescript-eslint/types': 8.42.0
+ '@typescript-eslint/visitor-keys': 8.42.0
debug: 4.4.1
fast-glob: 3.3.3
is-glob: 4.0.3
@@ -2858,20 +2858,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.41.0(eslint@9.34.0)(typescript@5.9.2)':
+ '@typescript-eslint/utils@8.42.0(eslint@9.34.0)(typescript@5.9.2)':
dependencies:
'@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0)
- '@typescript-eslint/scope-manager': 8.41.0
- '@typescript-eslint/types': 8.41.0
- '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2)
+ '@typescript-eslint/scope-manager': 8.42.0
+ '@typescript-eslint/types': 8.42.0
+ '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2)
eslint: 9.34.0
typescript: 5.9.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@8.41.0':
+ '@typescript-eslint/visitor-keys@8.42.0':
dependencies:
- '@typescript-eslint/types': 8.41.0
+ '@typescript-eslint/types': 8.42.0
eslint-visitor-keys: 4.2.1
'@typespec/ts-http-runtime@0.3.0':
@@ -3451,11 +3451,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.41.0(eslint@9.34.0)(typescript@5.9.2)
+ '@typescript-eslint/parser': 8.42.0(eslint@9.34.0)(typescript@5.9.2)
eslint: 9.34.0
eslint-import-resolver-node: 0.3.9
transitivePeerDependencies:
@@ -3467,7 +3467,7 @@ snapshots:
eslint-utils: 2.1.0
regexpp: 3.2.0
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -3478,7 +3478,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.34.0
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0)
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0)
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -3490,7 +3490,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.41.0(eslint@9.34.0)(typescript@5.9.2)
+ '@typescript-eslint/parser': 8.42.0(eslint@9.34.0)(typescript@5.9.2)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
diff --git a/server/Cargo.lock b/server/Cargo.lock
index 818c48ce..a06cdf61 100644
--- a/server/Cargo.lock
+++ b/server/Cargo.lock
@@ -8,7 +8,7 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a"
dependencies = [
- "bitflags 2.9.3",
+ "bitflags 2.9.4",
"bytes",
"futures-core",
"futures-sink",
@@ -29,7 +29,7 @@ dependencies = [
"actix-service",
"actix-utils",
"actix-web",
- "bitflags 2.9.3",
+ "bitflags 2.9.4",
"bytes",
"derive_more",
"futures-core",
@@ -53,7 +53,7 @@ dependencies = [
"actix-service",
"actix-utils",
"base64",
- "bitflags 2.9.3",
+ "bitflags 2.9.4",
"brotli",
"bytes",
"bytestring",
@@ -437,9 +437,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.9.3"
+version = "2.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34efbcccd345379ca2868b2b2c9d3782e9cc58ba87bc7d79d5b53d9c9ae6f25d"
+checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394"
[[package]]
name = "block-buffer"
@@ -552,9 +552,9 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.5.46"
+version = "4.5.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c5e4fcf9c21d2e544ca1ee9d8552de13019a42aa7dbf32747fa7aaf1df76e57"
+checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931"
dependencies = [
"clap_builder",
"clap_derive",
@@ -562,9 +562,9 @@ dependencies = [
[[package]]
name = "clap_builder"
-version = "4.5.46"
+version = "4.5.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fecb53a0e6fcfb055f686001bc2e2592fa527efaf38dbe81a6a9563562e57d41"
+checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6"
dependencies = [
"anstream",
"anstyle",
@@ -574,9 +574,9 @@ dependencies = [
[[package]]
name = "clap_derive"
-version = "4.5.45"
+version = "4.5.47"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6"
+checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c"
dependencies = [
"heck",
"proc-macro2",
@@ -592,7 +592,7 @@ checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675"
[[package]]
name = "codechat-editor-server"
-version = "0.1.32"
+version = "0.1.33"
dependencies = [
"actix-files",
"actix-http",
@@ -1052,7 +1052,7 @@ version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757"
dependencies = [
- "bitflags 2.9.3",
+ "bitflags 2.9.4",
"ignore",
"walkdir",
]
@@ -1331,7 +1331,7 @@ version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3"
dependencies = [
- "bitflags 2.9.3",
+ "bitflags 2.9.4",
"inotify-sys",
"libc",
]
@@ -1351,7 +1351,7 @@ version = "0.7.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b"
dependencies = [
- "bitflags 2.9.3",
+ "bitflags 2.9.4",
"cfg-if",
"libc",
]
@@ -1454,7 +1454,7 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3"
dependencies = [
- "bitflags 2.9.3",
+ "bitflags 2.9.4",
"libc",
"redox_syscall",
]
@@ -1621,7 +1621,7 @@ version = "8.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3"
dependencies = [
- "bitflags 2.9.3",
+ "bitflags 2.9.4",
"fsevent-sys",
"inotify",
"kqueue",
@@ -1688,7 +1688,7 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c"
dependencies = [
- "bitflags 2.9.3",
+ "bitflags 2.9.4",
"objc2",
]
@@ -1946,7 +1946,7 @@ version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0"
dependencies = [
- "bitflags 2.9.3",
+ "bitflags 2.9.4",
"memchr",
"pulldown-cmark-escape",
"unicase",
@@ -2038,7 +2038,7 @@ version = "0.5.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77"
dependencies = [
- "bitflags 2.9.3",
+ "bitflags 2.9.4",
]
[[package]]
@@ -2088,7 +2088,7 @@ version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
dependencies = [
- "bitflags 2.9.3",
+ "bitflags 2.9.4",
"errno",
"libc",
"linux-raw-sys",
@@ -2406,9 +2406,9 @@ dependencies = [
[[package]]
name = "time"
-version = "0.3.42"
+version = "0.3.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ca967379f9d8eb8058d86ed467d81d03e81acd45757e4ca341c24affbe8e8e3"
+checksum = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031"
dependencies = [
"deranged",
"num-conv",
@@ -2420,15 +2420,15 @@ dependencies = [
[[package]]
name = "time-core"
-version = "0.1.5"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9108bb380861b07264b950ded55a44a14a4adc68b9f5efd85aafc3aa4d40a68"
+checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b"
[[package]]
name = "time-macros"
-version = "0.2.23"
+version = "0.2.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7182799245a7264ce590b349d90338f1c1affad93d2639aed5f8f69c090b334c"
+checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3"
dependencies = [
"num-conv",
"time-core",
diff --git a/server/Cargo.toml b/server/Cargo.toml
index 207f8d5b..ce76b2ad 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.32"
+version = "0.1.33"
# This library allows other packages to use core CodeChat Editor features.
[lib]
diff --git a/server/src/processing.rs b/server/src/processing.rs
index 24694612..f5a080a7 100644
--- a/server/src/processing.rs
+++ b/server/src/processing.rs
@@ -1065,10 +1065,11 @@ pub fn diff_code_mirror_doc_blocks(
}
}
- if before_index < hunk.before.end {
+ // Anything left should be deleted.
+ for index in before_index..hunk.before.end {
change_specs.push(CodeMirrorDocBlockTransaction::Delete(
CodeMirrorDocBlockDelete {
- from: before[before_index as usize].from,
+ from: before[index as usize].from,
},
));
}
diff --git a/server/src/processing/tests.rs b/server/src/processing/tests.rs
index 75b61ed0..8e19a7eb 100644
--- a/server/src/processing/tests.rs
+++ b/server/src/processing/tests.rs
@@ -1106,6 +1106,23 @@ fn test_diff_2() {
)]
);
+ // Delete multiple.
+ let before = vec![
+ build_codemirror_doc_block(10, 11, "", "#", "test1"),
+ build_codemirror_doc_block(11, 12, "", "#", "test2"),
+ build_codemirror_doc_block(12, 13, "", "#", "test3"),
+ ];
+ let after = vec![];
+ let ret = diff_code_mirror_doc_blocks(&before, &after);
+ assert_eq!(
+ ret,
+ vec![
+ CodeMirrorDocBlockTransaction::Delete(CodeMirrorDocBlockDelete { from: 10 }),
+ CodeMirrorDocBlockTransaction::Delete(CodeMirrorDocBlockDelete { from: 11 }),
+ CodeMirrorDocBlockTransaction::Delete(CodeMirrorDocBlockDelete { from: 12 }),
+ ]
+ );
+
// Delete at end.
let before = vec![
build_codemirror_doc_block(10, 11, "", "#", "test1"),
@@ -1120,7 +1137,7 @@ fn test_diff_2() {
)]
);
- // Test ordering of inserts, deletes, and updates: two deletes, follow by three add/updates.
+ // Test ordering of inserts, deletes, and updates.
let before = vec![
build_codemirror_doc_block(9, 10, "", "#", "test1"),
build_codemirror_doc_block(10, 11, "", "#", "test2"),