From 4b59d1cf17b91e91d00b15dcccd68d94d7558da1 Mon Sep 17 00:00:00 2001
From: yuetsh <517252939@qq.com>
Date: Tue, 16 Sep 2025 17:37:43 +0800
Subject: [PATCH] add turtle
---
package-lock.json | 350 ++++++++++++++++--------------
package.json | 7 +-
public/turtle.svg | 1 +
src/components/SelectLanguage.vue | 3 +-
src/composables/code.ts | 27 ++-
src/desktop/Content.vue | 48 +++-
src/desktop/Debug.vue | 3 +-
src/templates.ts | 12 +
src/types.ts | 2 +-
9 files changed, 277 insertions(+), 176 deletions(-)
create mode 100644 public/turtle.svg
diff --git a/package-lock.json b/package-lock.json
index b64123f..eeb2bca 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,21 +11,22 @@
"@codemirror/lang-cpp": "^6.0.3",
"@codemirror/lang-python": "^6.2.1",
"@vueuse/core": "^13.9.0",
- "axios": "^1.11.0",
+ "axios": "^1.12.2",
"client-zip": "1.7.0",
"codemirror": "^6.0.2",
"copy-text-to-clipboard": "^3.2.1",
"fflate": "^0.8.2",
"file-saver": "^2.0.5",
- "naive-ui": "^2.42.0",
+ "naive-ui": "^2.43.1",
"normalize.css": "^8.0.1",
"query-string": "^9.3.0",
+ "skulpt": "^1.2.0",
"vue": "^3.5.21",
"vue-codemirror": "^6.1.1"
},
"devDependencies": {
"@iconify/vue": "^5.0.0",
- "@rsbuild/core": "^1.5.6",
+ "@rsbuild/core": "^1.5.7",
"@rsbuild/plugin-vue": "^1.1.2",
"@types/file-saver": "^2.0.7",
"prettier": "^3.6.2",
@@ -188,7 +189,7 @@
},
"node_modules/@css-render/vue3-ssr": {
"version": "0.15.14",
- "resolved": "https://registry.npmmirror.com/@css-render/vue3-ssr/-/vue3-ssr-0.15.14.tgz",
+ "resolved": "https://registry.npmjs.org/@css-render/vue3-ssr/-/vue3-ssr-0.15.14.tgz",
"integrity": "sha512-//8027GSbxE9n3QlD73xFY6z4ZbHbvrOVB7AO6hsmrEzGbg+h2A09HboUyDgu+xsmj7JnvJD39Irt+2D0+iV8g==",
"license": "MIT",
"peerDependencies": {
@@ -317,7 +318,7 @@
},
"node_modules/@juggle/resize-observer": {
"version": "3.4.0",
- "resolved": "https://registry.npmmirror.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz",
+ "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz",
"integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==",
"license": "Apache-2.0"
},
@@ -422,26 +423,26 @@
}
},
"node_modules/@napi-rs/wasm-runtime": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.3.tgz",
- "integrity": "sha512-rZxtMsLwjdXkMUGC3WwsPwLNVqVqnTJT6MNIB6e+5fhMcSCPP0AOsNWuMQ5mdCq6HNjs/ZeWAEchpqeprqBD2Q==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.5.tgz",
+ "integrity": "sha512-TBr9Cf9onSAS2LQ2+QHx6XcC6h9+RIzJgbqG3++9TUZSH204AwEy5jg3BTQ0VATsyoGj4ee49tN/y6rvaOOtcg==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
- "@emnapi/core": "^1.4.5",
- "@emnapi/runtime": "^1.4.5",
- "@tybys/wasm-util": "^0.10.0"
+ "@emnapi/core": "^1.5.0",
+ "@emnapi/runtime": "^1.5.0",
+ "@tybys/wasm-util": "^0.10.1"
}
},
"node_modules/@rsbuild/core": {
- "version": "1.5.6",
- "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.5.6.tgz",
- "integrity": "sha512-EbJ9HlkI2Y2C59pAv877rHz3qS+5dy9anXxagOOXEHt4u3/uqSj7pcz3cD+UWkFQ4XOGJ3mMwkPfR7EE24t12A==",
+ "version": "1.5.7",
+ "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.5.7.tgz",
+ "integrity": "sha512-1/yyJJfZo4hqMsL3WQQmMDYFp0L/znHqjHrYE6NKsiKhkBEwEwSVMk1M5QoRu2EcRL1acW5AJf7WJyKFfPZ//Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@rspack/core": "1.5.3",
+ "@rspack/core": "1.5.4",
"@rspack/lite-tapable": "~1.0.1",
"@swc/helpers": "^0.5.17",
"core-js": "~3.45.1",
@@ -469,28 +470,28 @@
}
},
"node_modules/@rspack/binding": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.5.3.tgz",
- "integrity": "sha512-bWAKligHxelx3XxOgFmK6k1vR+ANxjBXLXTmgOiZxsJNScHJap3HYViXWJHKj5jvdXEvg9sC8TE7WNctCfa8iQ==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.5.4.tgz",
+ "integrity": "sha512-HtLF5uxbf77hDarB/Wl26XgaTyWkhMogDPUOC1mLU+YPke1vYem8p8yr+McUkRtbhYoqtFMcVcT3S8jKJPP3+g==",
"dev": true,
"license": "MIT",
"optionalDependencies": {
- "@rspack/binding-darwin-arm64": "1.5.3",
- "@rspack/binding-darwin-x64": "1.5.3",
- "@rspack/binding-linux-arm64-gnu": "1.5.3",
- "@rspack/binding-linux-arm64-musl": "1.5.3",
- "@rspack/binding-linux-x64-gnu": "1.5.3",
- "@rspack/binding-linux-x64-musl": "1.5.3",
- "@rspack/binding-wasm32-wasi": "1.5.3",
- "@rspack/binding-win32-arm64-msvc": "1.5.3",
- "@rspack/binding-win32-ia32-msvc": "1.5.3",
- "@rspack/binding-win32-x64-msvc": "1.5.3"
+ "@rspack/binding-darwin-arm64": "1.5.4",
+ "@rspack/binding-darwin-x64": "1.5.4",
+ "@rspack/binding-linux-arm64-gnu": "1.5.4",
+ "@rspack/binding-linux-arm64-musl": "1.5.4",
+ "@rspack/binding-linux-x64-gnu": "1.5.4",
+ "@rspack/binding-linux-x64-musl": "1.5.4",
+ "@rspack/binding-wasm32-wasi": "1.5.4",
+ "@rspack/binding-win32-arm64-msvc": "1.5.4",
+ "@rspack/binding-win32-ia32-msvc": "1.5.4",
+ "@rspack/binding-win32-x64-msvc": "1.5.4"
}
},
"node_modules/@rspack/binding-darwin-arm64": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.5.3.tgz",
- "integrity": "sha512-8R1uqr5E2CzRZjsA1QLXkD4xwcsiHmLJTIzCNj9QJ4+lCw6XgtPqpHZuk3zNROLayijEKwotGXJFHJIbgv1clA==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.5.4.tgz",
+ "integrity": "sha512-qD+n4D8KOOSoWdngK87iXl6lqbx1J63f6/xZFLPVIstzxIUbNyo9V9tpJYsoT3gYpnLkPVqA+KwQI0ozgYEXvw==",
"cpu": [
"arm64"
],
@@ -502,9 +503,9 @@
]
},
"node_modules/@rspack/binding-darwin-x64": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.5.3.tgz",
- "integrity": "sha512-R4sb+scZbaBasyS+TQ6dRvv+f/2ZaZ0nXgY7t/ehcuGRvUz3S7FTJF/Mr/Ocxj5oVfb06thDAm+zaAVg+hsM9A==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.5.4.tgz",
+ "integrity": "sha512-g75qkrLLa28kVp7pkWAjUADwr+0GumEF134VWHuL+TAm7VCw4IXRKnZhquE8K5kcqRpLcLX4guRqZzK9OEu/hg==",
"cpu": [
"x64"
],
@@ -516,9 +517,9 @@
]
},
"node_modules/@rspack/binding-linux-arm64-gnu": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.5.3.tgz",
- "integrity": "sha512-NeDJJRNTLx8wOQT+si90th7cdt04I2F697Mp5w0a3Jf3XHAmsraBMn0phdLGWJoUWrrfVGthjgZDl5lcc1UHEA==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.5.4.tgz",
+ "integrity": "sha512-O3zSTz/dy1EJHd7YS8zzmAG2zxewEZJi7QlYiU+YhFuqjP2ab6ZFWLHkglvrSy4aHyC8fx9OkSjioYtHUcCSdQ==",
"cpu": [
"arm64"
],
@@ -530,9 +531,9 @@
]
},
"node_modules/@rspack/binding-linux-arm64-musl": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.5.3.tgz",
- "integrity": "sha512-M9utPq9s7zJkKapUlyfwwYT/rjZ+XM56NHQMUH9MVYgMJIl+66QURgWUXCAbuogxf1XWayUGQaZsgypoOrTG9A==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.5.4.tgz",
+ "integrity": "sha512-ki84vbRY1gbf1T3BHiKAdi3m0hQFmqiAIYvFuLGA9Vop1R+W2C3Mzh8Q5YL6TnWOP0eiwizuigztz4/07fPf6Q==",
"cpu": [
"arm64"
],
@@ -544,9 +545,9 @@
]
},
"node_modules/@rspack/binding-linux-x64-gnu": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.5.3.tgz",
- "integrity": "sha512-AsKqU4pIg0yYg1VvSEU0NspIwCexqXD2AYE0wujAAwBo0hOfbt5dl1JCK7idiZdIQvoFg86HbfGwdHIVcFLI0w==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.5.4.tgz",
+ "integrity": "sha512-SJVQSgR1JqDEnURI79SRcn/gcdG+yFb2mLUYV/TSPUTxMIlu44p5+fnOY6+6qMtjQhO6J4C2+UyV00U/yjlikA==",
"cpu": [
"x64"
],
@@ -558,9 +559,9 @@
]
},
"node_modules/@rspack/binding-linux-x64-musl": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.5.3.tgz",
- "integrity": "sha512-0aHuvDef92pFZaHhk8Mp8RP9TfTzhQ+Pjqrc2ixRS/FeJA+jVB2CSaYlAPP4QrgXdmW7tewSxEw8hYhF9CNv/A==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.5.4.tgz",
+ "integrity": "sha512-UL1xw3yLsFH6UD/ubXXbRaDRNl+qI22QgugKYuqmpDGfOcVlv4fGpf3faPwYJasqPjhDWvcoyd8OqI+ftWKWEA==",
"cpu": [
"x64"
],
@@ -572,9 +573,9 @@
]
},
"node_modules/@rspack/binding-wasm32-wasi": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.5.3.tgz",
- "integrity": "sha512-Y7KN/ZRuWcFdjCzuZE0JsPwTqJAz1aipJsEOI3whBUj9Va2RwbR9r3vbW6OscS0Wm3rTJAfqH0xwx9x3GksnAw==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.5.4.tgz",
+ "integrity": "sha512-VPGhik1M87SZQzmX2sRvXrO6KgycSbmJ/bLqVuXHYGjsLkYqw4auKCJrkZcKa1GVsSvpVNC3FlTUk2QxjpmNSA==",
"cpu": [
"wasm32"
],
@@ -586,9 +587,9 @@
}
},
"node_modules/@rspack/binding-win32-arm64-msvc": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.5.3.tgz",
- "integrity": "sha512-I9SqobDwFwcIUNzr+VwvR2lUGqfarOpFDp7mZmA6+qO/V0yJxS0aqBIwNoZB/UFPbUh71OdmFavBzcTYE9vPSg==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.5.4.tgz",
+ "integrity": "sha512-YxhK8dTv/6ff//C5Djm87TkiePuvGRoxLgsHgwR7C0rnA8lS5gLNwrNY9FjAY1x6WamnGGirFK97rigaeTDn+g==",
"cpu": [
"arm64"
],
@@ -600,9 +601,9 @@
]
},
"node_modules/@rspack/binding-win32-ia32-msvc": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.5.3.tgz",
- "integrity": "sha512-pPSzSycfK03lLNxzwEkrRUfqETB7y0KEEbO0HcGX63EC9Ne4SILJfkkH55G0PO4aT/dfAosAlkf6V64ATgrHGA==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.5.4.tgz",
+ "integrity": "sha512-SU4EyAo1BI1zV/sSDF2cqoN+Qq6iIHLwtq0RJI5WQ4Yjn/mhhRFxNoerPCJUpPiiCxvG/IrpGzGi90MwFnMtNQ==",
"cpu": [
"ia32"
],
@@ -614,9 +615,9 @@
]
},
"node_modules/@rspack/binding-win32-x64-msvc": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.5.3.tgz",
- "integrity": "sha512-He/GrFVrCZ4gBrHSxGd7mnwk9A9BDkAeZZEBnfK4n/HfXxU32WX5jiAGacFoJQYFLDOWTAcmxFad37TSs61zXw==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.5.4.tgz",
+ "integrity": "sha512-xEgOCnD2FCUcxRgg3X5etq81vvf8rWwvPASfrG234diSduvU6zRiuiyYFMLTMDwQNEzZEFGHp7wIZNCKHudbng==",
"cpu": [
"x64"
],
@@ -628,14 +629,14 @@
]
},
"node_modules/@rspack/core": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.5.3.tgz",
- "integrity": "sha512-EMNXysJyqsfd2aVys5C7GDZKaLEcoN5qgs7ZFhWOWJGKgBqjdKTljyRTd4RRZV4fV6iAko/WrxnAxmzZNk8mjA==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.5.4.tgz",
+ "integrity": "sha512-s/bVG+KRZjIpPP2f4TOQkJ/D+rql7HAV0MFEWoqoyeNnln/p6I28RYbw5zYF+Qg4J0swR8Qk2pbn7qlIdGusLQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@module-federation/runtime-tools": "0.18.0",
- "@rspack/binding": "1.5.3",
+ "@rspack/binding": "1.5.4",
"@rspack/lite-tapable": "1.0.1"
},
"engines": {
@@ -671,9 +672,9 @@
}
},
"node_modules/@tybys/wasm-util": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.0.tgz",
- "integrity": "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==",
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
+ "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -1172,9 +1173,9 @@
"license": "MIT"
},
"node_modules/axios": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz",
- "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz",
+ "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.6",
@@ -1601,7 +1602,7 @@
},
"node_modules/evtd": {
"version": "0.2.4",
- "resolved": "https://registry.npmmirror.com/evtd/-/evtd-0.2.4.tgz",
+ "resolved": "https://registry.npmjs.org/evtd/-/evtd-0.2.4.tgz",
"integrity": "sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==",
"license": "MIT"
},
@@ -1859,6 +1860,12 @@
"jiti": "lib/jiti-cli.mjs"
}
},
+ "node_modules/jsbi": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-3.2.5.tgz",
+ "integrity": "sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ==",
+ "license": "Apache-2.0"
+ },
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
@@ -1938,9 +1945,9 @@
}
},
"node_modules/naive-ui": {
- "version": "2.42.0",
- "resolved": "https://registry.npmjs.org/naive-ui/-/naive-ui-2.42.0.tgz",
- "integrity": "sha512-c7cXR2YgOjgtBadXHwiWL4Y0tpGLAI5W5QzzHksOi22iuHXoSGMAzdkVTGVPE/PM0MSGQ/JtUIzCx2Y0hU0vTQ==",
+ "version": "2.43.1",
+ "resolved": "https://registry.npmjs.org/naive-ui/-/naive-ui-2.43.1.tgz",
+ "integrity": "sha512-w52W0mOhdOGt4uucFSZmP0DI44PCsFyuxeLSs9aoUThfIuxms90MYjv46Qrr7xprjyJRw5RU6vYpCx4o9ind3A==",
"license": "MIT",
"dependencies": {
"@css-render/plugin-bem": "^0.15.14",
@@ -1961,7 +1968,7 @@
"treemate": "^0.3.11",
"vdirs": "^0.1.8",
"vooks": "^0.2.12",
- "vueuc": "^0.4.63"
+ "vueuc": "^0.4.65"
},
"peerDependencies": {
"vue": "^3.0.0"
@@ -2138,9 +2145,9 @@
}
},
"node_modules/seemly": {
- "version": "0.3.8",
- "resolved": "https://registry.npmmirror.com/seemly/-/seemly-0.3.8.tgz",
- "integrity": "sha512-MW8Qs6vbzo0pHmDpFSYPna+lwpZ6Zk1ancbajw/7E8TKtHdV+1DfZZD+kKJEhG/cAoB/i+LiT+5msZOqj0DwRA==",
+ "version": "0.3.10",
+ "resolved": "https://registry.npmjs.org/seemly/-/seemly-0.3.10.tgz",
+ "integrity": "sha512-2+SMxtG1PcsL0uyhkumlOU6Qo9TAQ/WyH7tthnPIOQB05/12jz9naq6GZ6iZ6ApVsO3rr2gsnTf3++OV63kE1Q==",
"license": "MIT"
},
"node_modules/serialize-javascript": {
@@ -2153,6 +2160,18 @@
"randombytes": "^2.1.0"
}
},
+ "node_modules/skulpt": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/skulpt/-/skulpt-1.2.0.tgz",
+ "integrity": "sha512-T0cv0sdSOXLlIJTuyXSeYJ3TFdWYSZfX2PcBLpRKrKZ3dTbVQXRMiYudSuko2xzcyMif47DS2ShatCwjCbsSsA==",
+ "license": "MIT",
+ "dependencies": {
+ "jsbi": "^3.1.4"
+ },
+ "engines": {
+ "node": ">=10.4"
+ }
+ },
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
@@ -2337,7 +2356,7 @@
},
"node_modules/vdirs": {
"version": "0.1.8",
- "resolved": "https://registry.npmmirror.com/vdirs/-/vdirs-0.1.8.tgz",
+ "resolved": "https://registry.npmjs.org/vdirs/-/vdirs-0.1.8.tgz",
"integrity": "sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==",
"license": "MIT",
"dependencies": {
@@ -2349,7 +2368,7 @@
},
"node_modules/vooks": {
"version": "0.2.12",
- "resolved": "https://registry.npmmirror.com/vooks/-/vooks-0.2.12.tgz",
+ "resolved": "https://registry.npmjs.org/vooks/-/vooks-0.2.12.tgz",
"integrity": "sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==",
"license": "MIT",
"dependencies": {
@@ -2419,9 +2438,9 @@
}
},
"node_modules/vueuc": {
- "version": "0.4.64",
- "resolved": "https://registry.npmmirror.com/vueuc/-/vueuc-0.4.64.tgz",
- "integrity": "sha512-wlJQj7fIwKK2pOEoOq4Aro8JdPOGpX8aWQhV8YkTW9OgWD2uj2O8ANzvSsIGjx7LTOc7QbS7sXdxHi6XvRnHPA==",
+ "version": "0.4.65",
+ "resolved": "https://registry.npmjs.org/vueuc/-/vueuc-0.4.65.tgz",
+ "integrity": "sha512-lXuMl+8gsBmruudfxnMF9HW4be8rFziylXFu1VHVNbLVhRTXXV4njvpRuJapD/8q+oFEMSfQMH16E/85VoWRyQ==",
"license": "MIT",
"dependencies": {
"@css-render/vue3-ssr": "^0.15.10",
@@ -2649,7 +2668,7 @@
},
"@css-render/vue3-ssr": {
"version": "0.15.14",
- "resolved": "https://registry.npmmirror.com/@css-render/vue3-ssr/-/vue3-ssr-0.15.14.tgz",
+ "resolved": "https://registry.npmjs.org/@css-render/vue3-ssr/-/vue3-ssr-0.15.14.tgz",
"integrity": "sha512-//8027GSbxE9n3QlD73xFY6z4ZbHbvrOVB7AO6hsmrEzGbg+h2A09HboUyDgu+xsmj7JnvJD39Irt+2D0+iV8g==",
"requires": {}
},
@@ -2754,7 +2773,7 @@
},
"@juggle/resize-observer": {
"version": "3.4.0",
- "resolved": "https://registry.npmmirror.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz",
+ "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz",
"integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA=="
},
"@lezer/common": {
@@ -2852,24 +2871,24 @@
}
},
"@napi-rs/wasm-runtime": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.3.tgz",
- "integrity": "sha512-rZxtMsLwjdXkMUGC3WwsPwLNVqVqnTJT6MNIB6e+5fhMcSCPP0AOsNWuMQ5mdCq6HNjs/ZeWAEchpqeprqBD2Q==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.5.tgz",
+ "integrity": "sha512-TBr9Cf9onSAS2LQ2+QHx6XcC6h9+RIzJgbqG3++9TUZSH204AwEy5jg3BTQ0VATsyoGj4ee49tN/y6rvaOOtcg==",
"dev": true,
"optional": true,
"requires": {
- "@emnapi/core": "^1.4.5",
- "@emnapi/runtime": "^1.4.5",
- "@tybys/wasm-util": "^0.10.0"
+ "@emnapi/core": "^1.5.0",
+ "@emnapi/runtime": "^1.5.0",
+ "@tybys/wasm-util": "^0.10.1"
}
},
"@rsbuild/core": {
- "version": "1.5.6",
- "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.5.6.tgz",
- "integrity": "sha512-EbJ9HlkI2Y2C59pAv877rHz3qS+5dy9anXxagOOXEHt4u3/uqSj7pcz3cD+UWkFQ4XOGJ3mMwkPfR7EE24t12A==",
+ "version": "1.5.7",
+ "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.5.7.tgz",
+ "integrity": "sha512-1/yyJJfZo4hqMsL3WQQmMDYFp0L/znHqjHrYE6NKsiKhkBEwEwSVMk1M5QoRu2EcRL1acW5AJf7WJyKFfPZ//Q==",
"dev": true,
"requires": {
- "@rspack/core": "1.5.3",
+ "@rspack/core": "1.5.4",
"@rspack/lite-tapable": "~1.0.1",
"@swc/helpers": "^0.5.17",
"core-js": "~3.45.1",
@@ -2887,69 +2906,69 @@
}
},
"@rspack/binding": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.5.3.tgz",
- "integrity": "sha512-bWAKligHxelx3XxOgFmK6k1vR+ANxjBXLXTmgOiZxsJNScHJap3HYViXWJHKj5jvdXEvg9sC8TE7WNctCfa8iQ==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.5.4.tgz",
+ "integrity": "sha512-HtLF5uxbf77hDarB/Wl26XgaTyWkhMogDPUOC1mLU+YPke1vYem8p8yr+McUkRtbhYoqtFMcVcT3S8jKJPP3+g==",
"dev": true,
"requires": {
- "@rspack/binding-darwin-arm64": "1.5.3",
- "@rspack/binding-darwin-x64": "1.5.3",
- "@rspack/binding-linux-arm64-gnu": "1.5.3",
- "@rspack/binding-linux-arm64-musl": "1.5.3",
- "@rspack/binding-linux-x64-gnu": "1.5.3",
- "@rspack/binding-linux-x64-musl": "1.5.3",
- "@rspack/binding-wasm32-wasi": "1.5.3",
- "@rspack/binding-win32-arm64-msvc": "1.5.3",
- "@rspack/binding-win32-ia32-msvc": "1.5.3",
- "@rspack/binding-win32-x64-msvc": "1.5.3"
+ "@rspack/binding-darwin-arm64": "1.5.4",
+ "@rspack/binding-darwin-x64": "1.5.4",
+ "@rspack/binding-linux-arm64-gnu": "1.5.4",
+ "@rspack/binding-linux-arm64-musl": "1.5.4",
+ "@rspack/binding-linux-x64-gnu": "1.5.4",
+ "@rspack/binding-linux-x64-musl": "1.5.4",
+ "@rspack/binding-wasm32-wasi": "1.5.4",
+ "@rspack/binding-win32-arm64-msvc": "1.5.4",
+ "@rspack/binding-win32-ia32-msvc": "1.5.4",
+ "@rspack/binding-win32-x64-msvc": "1.5.4"
}
},
"@rspack/binding-darwin-arm64": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.5.3.tgz",
- "integrity": "sha512-8R1uqr5E2CzRZjsA1QLXkD4xwcsiHmLJTIzCNj9QJ4+lCw6XgtPqpHZuk3zNROLayijEKwotGXJFHJIbgv1clA==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.5.4.tgz",
+ "integrity": "sha512-qD+n4D8KOOSoWdngK87iXl6lqbx1J63f6/xZFLPVIstzxIUbNyo9V9tpJYsoT3gYpnLkPVqA+KwQI0ozgYEXvw==",
"dev": true,
"optional": true
},
"@rspack/binding-darwin-x64": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.5.3.tgz",
- "integrity": "sha512-R4sb+scZbaBasyS+TQ6dRvv+f/2ZaZ0nXgY7t/ehcuGRvUz3S7FTJF/Mr/Ocxj5oVfb06thDAm+zaAVg+hsM9A==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.5.4.tgz",
+ "integrity": "sha512-g75qkrLLa28kVp7pkWAjUADwr+0GumEF134VWHuL+TAm7VCw4IXRKnZhquE8K5kcqRpLcLX4guRqZzK9OEu/hg==",
"dev": true,
"optional": true
},
"@rspack/binding-linux-arm64-gnu": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.5.3.tgz",
- "integrity": "sha512-NeDJJRNTLx8wOQT+si90th7cdt04I2F697Mp5w0a3Jf3XHAmsraBMn0phdLGWJoUWrrfVGthjgZDl5lcc1UHEA==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.5.4.tgz",
+ "integrity": "sha512-O3zSTz/dy1EJHd7YS8zzmAG2zxewEZJi7QlYiU+YhFuqjP2ab6ZFWLHkglvrSy4aHyC8fx9OkSjioYtHUcCSdQ==",
"dev": true,
"optional": true
},
"@rspack/binding-linux-arm64-musl": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.5.3.tgz",
- "integrity": "sha512-M9utPq9s7zJkKapUlyfwwYT/rjZ+XM56NHQMUH9MVYgMJIl+66QURgWUXCAbuogxf1XWayUGQaZsgypoOrTG9A==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.5.4.tgz",
+ "integrity": "sha512-ki84vbRY1gbf1T3BHiKAdi3m0hQFmqiAIYvFuLGA9Vop1R+W2C3Mzh8Q5YL6TnWOP0eiwizuigztz4/07fPf6Q==",
"dev": true,
"optional": true
},
"@rspack/binding-linux-x64-gnu": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.5.3.tgz",
- "integrity": "sha512-AsKqU4pIg0yYg1VvSEU0NspIwCexqXD2AYE0wujAAwBo0hOfbt5dl1JCK7idiZdIQvoFg86HbfGwdHIVcFLI0w==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.5.4.tgz",
+ "integrity": "sha512-SJVQSgR1JqDEnURI79SRcn/gcdG+yFb2mLUYV/TSPUTxMIlu44p5+fnOY6+6qMtjQhO6J4C2+UyV00U/yjlikA==",
"dev": true,
"optional": true
},
"@rspack/binding-linux-x64-musl": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.5.3.tgz",
- "integrity": "sha512-0aHuvDef92pFZaHhk8Mp8RP9TfTzhQ+Pjqrc2ixRS/FeJA+jVB2CSaYlAPP4QrgXdmW7tewSxEw8hYhF9CNv/A==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.5.4.tgz",
+ "integrity": "sha512-UL1xw3yLsFH6UD/ubXXbRaDRNl+qI22QgugKYuqmpDGfOcVlv4fGpf3faPwYJasqPjhDWvcoyd8OqI+ftWKWEA==",
"dev": true,
"optional": true
},
"@rspack/binding-wasm32-wasi": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.5.3.tgz",
- "integrity": "sha512-Y7KN/ZRuWcFdjCzuZE0JsPwTqJAz1aipJsEOI3whBUj9Va2RwbR9r3vbW6OscS0Wm3rTJAfqH0xwx9x3GksnAw==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.5.4.tgz",
+ "integrity": "sha512-VPGhik1M87SZQzmX2sRvXrO6KgycSbmJ/bLqVuXHYGjsLkYqw4auKCJrkZcKa1GVsSvpVNC3FlTUk2QxjpmNSA==",
"dev": true,
"optional": true,
"requires": {
@@ -2957,34 +2976,34 @@
}
},
"@rspack/binding-win32-arm64-msvc": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.5.3.tgz",
- "integrity": "sha512-I9SqobDwFwcIUNzr+VwvR2lUGqfarOpFDp7mZmA6+qO/V0yJxS0aqBIwNoZB/UFPbUh71OdmFavBzcTYE9vPSg==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.5.4.tgz",
+ "integrity": "sha512-YxhK8dTv/6ff//C5Djm87TkiePuvGRoxLgsHgwR7C0rnA8lS5gLNwrNY9FjAY1x6WamnGGirFK97rigaeTDn+g==",
"dev": true,
"optional": true
},
"@rspack/binding-win32-ia32-msvc": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.5.3.tgz",
- "integrity": "sha512-pPSzSycfK03lLNxzwEkrRUfqETB7y0KEEbO0HcGX63EC9Ne4SILJfkkH55G0PO4aT/dfAosAlkf6V64ATgrHGA==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.5.4.tgz",
+ "integrity": "sha512-SU4EyAo1BI1zV/sSDF2cqoN+Qq6iIHLwtq0RJI5WQ4Yjn/mhhRFxNoerPCJUpPiiCxvG/IrpGzGi90MwFnMtNQ==",
"dev": true,
"optional": true
},
"@rspack/binding-win32-x64-msvc": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.5.3.tgz",
- "integrity": "sha512-He/GrFVrCZ4gBrHSxGd7mnwk9A9BDkAeZZEBnfK4n/HfXxU32WX5jiAGacFoJQYFLDOWTAcmxFad37TSs61zXw==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.5.4.tgz",
+ "integrity": "sha512-xEgOCnD2FCUcxRgg3X5etq81vvf8rWwvPASfrG234diSduvU6zRiuiyYFMLTMDwQNEzZEFGHp7wIZNCKHudbng==",
"dev": true,
"optional": true
},
"@rspack/core": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.5.3.tgz",
- "integrity": "sha512-EMNXysJyqsfd2aVys5C7GDZKaLEcoN5qgs7ZFhWOWJGKgBqjdKTljyRTd4RRZV4fV6iAko/WrxnAxmzZNk8mjA==",
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.5.4.tgz",
+ "integrity": "sha512-s/bVG+KRZjIpPP2f4TOQkJ/D+rql7HAV0MFEWoqoyeNnln/p6I28RYbw5zYF+Qg4J0swR8Qk2pbn7qlIdGusLQ==",
"dev": true,
"requires": {
"@module-federation/runtime-tools": "0.18.0",
- "@rspack/binding": "1.5.3",
+ "@rspack/binding": "1.5.4",
"@rspack/lite-tapable": "1.0.1"
}
},
@@ -3004,9 +3023,9 @@
}
},
"@tybys/wasm-util": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.0.tgz",
- "integrity": "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==",
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
+ "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==",
"dev": true,
"optional": true,
"requires": {
@@ -3413,9 +3432,9 @@
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"axios": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz",
- "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz",
+ "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==",
"requires": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.4",
@@ -3695,7 +3714,7 @@
},
"evtd": {
"version": "0.2.4",
- "resolved": "https://registry.npmmirror.com/evtd/-/evtd-0.2.4.tgz",
+ "resolved": "https://registry.npmjs.org/evtd/-/evtd-0.2.4.tgz",
"integrity": "sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw=="
},
"fast-deep-equal": {
@@ -3856,6 +3875,11 @@
"integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==",
"dev": true
},
+ "jsbi": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-3.2.5.tgz",
+ "integrity": "sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ=="
+ },
"json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
@@ -3917,9 +3941,9 @@
}
},
"naive-ui": {
- "version": "2.42.0",
- "resolved": "https://registry.npmjs.org/naive-ui/-/naive-ui-2.42.0.tgz",
- "integrity": "sha512-c7cXR2YgOjgtBadXHwiWL4Y0tpGLAI5W5QzzHksOi22iuHXoSGMAzdkVTGVPE/PM0MSGQ/JtUIzCx2Y0hU0vTQ==",
+ "version": "2.43.1",
+ "resolved": "https://registry.npmjs.org/naive-ui/-/naive-ui-2.43.1.tgz",
+ "integrity": "sha512-w52W0mOhdOGt4uucFSZmP0DI44PCsFyuxeLSs9aoUThfIuxms90MYjv46Qrr7xprjyJRw5RU6vYpCx4o9ind3A==",
"requires": {
"@css-render/plugin-bem": "^0.15.14",
"@css-render/vue3-ssr": "^0.15.14",
@@ -3939,7 +3963,7 @@
"treemate": "^0.3.11",
"vdirs": "^0.1.8",
"vooks": "^0.2.12",
- "vueuc": "^0.4.63"
+ "vueuc": "^0.4.65"
}
},
"nanoid": {
@@ -4034,9 +4058,9 @@
}
},
"seemly": {
- "version": "0.3.8",
- "resolved": "https://registry.npmmirror.com/seemly/-/seemly-0.3.8.tgz",
- "integrity": "sha512-MW8Qs6vbzo0pHmDpFSYPna+lwpZ6Zk1ancbajw/7E8TKtHdV+1DfZZD+kKJEhG/cAoB/i+LiT+5msZOqj0DwRA=="
+ "version": "0.3.10",
+ "resolved": "https://registry.npmjs.org/seemly/-/seemly-0.3.10.tgz",
+ "integrity": "sha512-2+SMxtG1PcsL0uyhkumlOU6Qo9TAQ/WyH7tthnPIOQB05/12jz9naq6GZ6iZ6ApVsO3rr2gsnTf3++OV63kE1Q=="
},
"serialize-javascript": {
"version": "6.0.2",
@@ -4047,6 +4071,14 @@
"randombytes": "^2.1.0"
}
},
+ "skulpt": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/skulpt/-/skulpt-1.2.0.tgz",
+ "integrity": "sha512-T0cv0sdSOXLlIJTuyXSeYJ3TFdWYSZfX2PcBLpRKrKZ3dTbVQXRMiYudSuko2xzcyMif47DS2ShatCwjCbsSsA==",
+ "requires": {
+ "jsbi": "^3.1.4"
+ }
+ },
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
@@ -4153,7 +4185,7 @@
},
"vdirs": {
"version": "0.1.8",
- "resolved": "https://registry.npmmirror.com/vdirs/-/vdirs-0.1.8.tgz",
+ "resolved": "https://registry.npmjs.org/vdirs/-/vdirs-0.1.8.tgz",
"integrity": "sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==",
"requires": {
"evtd": "^0.2.2"
@@ -4161,7 +4193,7 @@
},
"vooks": {
"version": "0.2.12",
- "resolved": "https://registry.npmmirror.com/vooks/-/vooks-0.2.12.tgz",
+ "resolved": "https://registry.npmjs.org/vooks/-/vooks-0.2.12.tgz",
"integrity": "sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==",
"requires": {
"evtd": "^0.2.2"
@@ -4202,9 +4234,9 @@
}
},
"vueuc": {
- "version": "0.4.64",
- "resolved": "https://registry.npmmirror.com/vueuc/-/vueuc-0.4.64.tgz",
- "integrity": "sha512-wlJQj7fIwKK2pOEoOq4Aro8JdPOGpX8aWQhV8YkTW9OgWD2uj2O8ANzvSsIGjx7LTOc7QbS7sXdxHi6XvRnHPA==",
+ "version": "0.4.65",
+ "resolved": "https://registry.npmjs.org/vueuc/-/vueuc-0.4.65.tgz",
+ "integrity": "sha512-lXuMl+8gsBmruudfxnMF9HW4be8rFziylXFu1VHVNbLVhRTXXV4njvpRuJapD/8q+oFEMSfQMH16E/85VoWRyQ==",
"requires": {
"@css-render/vue3-ssr": "^0.15.10",
"@juggle/resize-observer": "^3.3.1",
diff --git a/package.json b/package.json
index 36ae909..3025fad 100644
--- a/package.json
+++ b/package.json
@@ -13,21 +13,22 @@
"@codemirror/lang-cpp": "^6.0.3",
"@codemirror/lang-python": "^6.2.1",
"@vueuse/core": "^13.9.0",
- "axios": "^1.11.0",
+ "axios": "^1.12.2",
"client-zip": "1.7.0",
"codemirror": "^6.0.2",
"copy-text-to-clipboard": "^3.2.1",
"fflate": "^0.8.2",
"file-saver": "^2.0.5",
- "naive-ui": "^2.42.0",
+ "naive-ui": "^2.43.1",
"normalize.css": "^8.0.1",
"query-string": "^9.3.0",
+ "skulpt": "^1.2.0",
"vue": "^3.5.21",
"vue-codemirror": "^6.1.1"
},
"devDependencies": {
"@iconify/vue": "^5.0.0",
- "@rsbuild/core": "^1.5.6",
+ "@rsbuild/core": "^1.5.7",
"@rsbuild/plugin-vue": "^1.1.2",
"@types/file-saver": "^2.0.7",
"prettier": "^3.6.2",
diff --git a/public/turtle.svg b/public/turtle.svg
new file mode 100644
index 0000000..1c4977d
--- /dev/null
+++ b/public/turtle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/components/SelectLanguage.vue b/src/components/SelectLanguage.vue
index 7216dd2..0734e49 100644
--- a/src/components/SelectLanguage.vue
+++ b/src/components/SelectLanguage.vue
@@ -5,6 +5,7 @@ import { code } from "../composables/code"
const LANGS = [
["python", "Python"],
+ ["turtle", "海龟绘图"],
["c", "C 语言"],
["cpp", "C++"],
]
@@ -35,6 +36,6 @@ const languages: SelectOption[] = LANGS.map((it) => ({
diff --git a/src/composables/code.ts b/src/composables/code.ts
index 02672b9..f3a0b99 100644
--- a/src/composables/code.ts
+++ b/src/composables/code.ts
@@ -18,6 +18,7 @@ const cache: Cache = {
python: useStorage("code_python", sources["python"]),
c: useStorage("code_c", sources["c"]),
cpp: useStorage("code_cpp", sources["cpp"]),
+ turtle: useStorage("code_turtle", sources["turtle"]),
},
}
@@ -29,6 +30,7 @@ export const input = ref("")
export const output = ref("")
export const status = ref(Status.NotStarted)
export const loading = ref(false)
+export const turtleRunId = ref(0)
export const size = ref(0)
export const debug = ref(false)
@@ -100,15 +102,22 @@ export function reset() {
export async function run() {
loading.value = true
const cleanCode = code.value.trim()
- if (!cleanCode) return
- output.value = ""
- status.value = Status.NotStarted
- const result = await submit(
- { value: cleanCode, language: code.language },
- input.value.trim(),
- )
- output.value = result.output || ""
- status.value = result.status
+ if (!cleanCode) {
+ loading.value = false
+ return
+ }
+ if (code.language === "turtle") {
+ turtleRunId.value++
+ } else {
+ output.value = ""
+ status.value = Status.NotStarted
+ const result = await submit(
+ { value: cleanCode, language: code.language },
+ input.value.trim(),
+ )
+ output.value = result.output || ""
+ status.value = result.status
+ }
loading.value = false
}
diff --git a/src/desktop/Content.vue b/src/desktop/Content.vue
index 2cdb153..c44364e 100644
--- a/src/desktop/Content.vue
+++ b/src/desktop/Content.vue
@@ -1,7 +1,9 @@
@@ -82,6 +121,7 @@ function handleDebug() {