diff --git a/astro.config.mjs b/astro.config.mjs
index f01cca2..4571c8b 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -87,6 +87,7 @@ export default defineConfig({
'bm-tutorial',
'btt-tutorial',
'kanata-tutorial',
+ 'linguax-tutorial',
],
},
'portable-mode',
diff --git a/package-lock.json b/package-lock.json
index bfbb1a0..6bfc393 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,7 +10,7 @@
"dependencies": {
"@astro-community/astro-embed-youtube": "^0.5.10",
"@astrojs/check": "^0.9.9",
- "@astrojs/markdown-remark": "^6.3.10",
+ "@astrojs/markdown-remark": "^7.2.0",
"@astrojs/starlight": "^0.40.0",
"@fontsource/neucha": "^5.2.8",
"@iconify-json/simple-icons": "^1.2.82",
@@ -20,9 +20,10 @@
"astro-og-canvas": "^0.11.1",
"astro-swiper": "^2.7.0",
"sharp": "^0.34.5",
- "typescript": "^5.9.3"
+ "typescript": "^6.0.3"
},
"devDependencies": {
+ "node-gyp": "^13.0.1",
"sass-embedded": "^1.99.0"
}
},
@@ -82,10 +83,20 @@
"license": "MIT"
},
"node_modules/@astrojs/internal-helpers": {
- "version": "0.7.6",
- "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.6.tgz",
- "integrity": "sha512-GOle7smBWKfMSP8osUIGOlB5kaHdQLV3foCsf+5Q9Wsuu+C6Fs3Ez/ttXmhjZ1HkSgsogcM1RXSjjOVieHq16Q==",
- "license": "MIT"
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.10.0.tgz",
+ "integrity": "sha512-Ry2R3VPeIN4uPCSA4xQc+e+vsJXkalKpEbDc07hV+a/o5Bs2N/s/uDcPJH/05L19DKh9tAy7e6JM3YZ6Cxfezw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.4",
+ "@types/mdast": "^4.0.4",
+ "js-yaml": "^4.1.1",
+ "picomatch": "^4.0.4",
+ "retext-smartypants": "^6.2.0",
+ "shiki": "^4.0.2",
+ "smol-toml": "^1.6.0",
+ "unified": "^11.0.5"
+ }
},
"node_modules/@astrojs/language-server": {
"version": "2.16.10",
@@ -129,18 +140,16 @@
}
},
"node_modules/@astrojs/markdown-remark": {
- "version": "6.3.11",
- "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.11.tgz",
- "integrity": "sha512-hcaxX/5aC6lQgHeGh1i+aauvSwIT6cfyFjKWvExYSxUhZZBBdvCliOtu06gbQyhbe0pGJNoNmqNlQZ5zYUuIyQ==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.2.0.tgz",
+ "integrity": "sha512-+YxmVQu1Bd+MFfSzjq1rOJvD9+nIOJzz5YIIhdIH01RrxRkKbyKoEgyIqP3yv51MhzMDgd79QaPv+kCVPT8vHw==",
"license": "MIT",
"dependencies": {
- "@astrojs/internal-helpers": "0.7.6",
- "@astrojs/prism": "3.3.0",
+ "@astrojs/internal-helpers": "0.10.0",
+ "@astrojs/prism": "4.0.2",
"github-slugger": "^2.0.0",
"hast-util-from-html": "^2.0.3",
"hast-util-to-text": "^4.0.2",
- "import-meta-resolve": "^4.2.0",
- "js-yaml": "^4.1.1",
"mdast-util-definitions": "^6.0.0",
"rehype-raw": "^7.0.0",
"rehype-stringify": "^10.0.1",
@@ -148,11 +157,9 @@
"remark-parse": "^11.0.0",
"remark-rehype": "^11.1.2",
"remark-smartypants": "^3.0.2",
- "shiki": "^3.21.0",
- "smol-toml": "^1.6.0",
"unified": "^11.0.5",
"unist-util-remove-position": "^5.0.0",
- "unist-util-visit": "^5.0.0",
+ "unist-util-visit": "^5.1.0",
"unist-util-visit-parents": "^6.0.2",
"vfile": "^6.0.3"
}
@@ -191,48 +198,7 @@
}
}
},
- "node_modules/@astrojs/mdx/node_modules/@astrojs/internal-helpers": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.10.0.tgz",
- "integrity": "sha512-Ry2R3VPeIN4uPCSA4xQc+e+vsJXkalKpEbDc07hV+a/o5Bs2N/s/uDcPJH/05L19DKh9tAy7e6JM3YZ6Cxfezw==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.4",
- "@types/mdast": "^4.0.4",
- "js-yaml": "^4.1.1",
- "picomatch": "^4.0.4",
- "retext-smartypants": "^6.2.0",
- "shiki": "^4.0.2",
- "smol-toml": "^1.6.0",
- "unified": "^11.0.5"
- }
- },
- "node_modules/@astrojs/mdx/node_modules/@astrojs/markdown-remark": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.2.0.tgz",
- "integrity": "sha512-+YxmVQu1Bd+MFfSzjq1rOJvD9+nIOJzz5YIIhdIH01RrxRkKbyKoEgyIqP3yv51MhzMDgd79QaPv+kCVPT8vHw==",
- "license": "MIT",
- "dependencies": {
- "@astrojs/internal-helpers": "0.10.0",
- "@astrojs/prism": "4.0.2",
- "github-slugger": "^2.0.0",
- "hast-util-from-html": "^2.0.3",
- "hast-util-to-text": "^4.0.2",
- "mdast-util-definitions": "^6.0.0",
- "rehype-raw": "^7.0.0",
- "rehype-stringify": "^10.0.1",
- "remark-gfm": "^4.0.1",
- "remark-parse": "^11.0.0",
- "remark-rehype": "^11.1.2",
- "remark-smartypants": "^3.0.2",
- "unified": "^11.0.5",
- "unist-util-remove-position": "^5.0.0",
- "unist-util-visit": "^5.1.0",
- "unist-util-visit-parents": "^6.0.2",
- "vfile": "^6.0.3"
- }
- },
- "node_modules/@astrojs/mdx/node_modules/@astrojs/prism": {
+ "node_modules/@astrojs/prism": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-4.0.2.tgz",
"integrity": "sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA==",
@@ -244,117 +210,6 @@
"node": ">=22.12.0"
}
},
- "node_modules/@astrojs/mdx/node_modules/@shikijs/core": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.2.0.tgz",
- "integrity": "sha512-Hc87Ab1Ld/vEbZRCbwx344I5v+4RU8CVToUTRkqXL1+TjbuOp9U5Xa0M23V4GEWHxVn+yO5otb+HkQVm3ptWQQ==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/primitive": "4.2.0",
- "@shikijs/types": "4.2.0",
- "@shikijs/vscode-textmate": "^10.0.2",
- "@types/hast": "^3.0.4",
- "hast-util-to-html": "^9.0.5"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@astrojs/mdx/node_modules/@shikijs/engine-javascript": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.2.0.tgz",
- "integrity": "sha512-fjETeq1k5ffyXqRgS6+3hpvqseLalp1kjNfRbXpUgWR8FpZ1CmQfiNHovc5lncYjt/Vg5JK/WJEmLahjwMa0og==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.2.0",
- "@shikijs/vscode-textmate": "^10.0.2",
- "oniguruma-to-es": "^4.3.6"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@astrojs/mdx/node_modules/@shikijs/engine-oniguruma": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.2.0.tgz",
- "integrity": "sha512-hTorK1dffPkpbMUk6Z+828PgRo7d07HbnizoP0hNPFjhxMHctj0Px/qoHeGMYafc6ju+u9iMldN4JbVzNQM++g==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.2.0",
- "@shikijs/vscode-textmate": "^10.0.2"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@astrojs/mdx/node_modules/@shikijs/langs": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.2.0.tgz",
- "integrity": "sha512-bwrVRlJ0wUhZxAbVdvBbv2TTC9yLsh4C/IO5Ofz0T8MQntgDvyVnkbjw9vi50r1kx7RCIJdnJnjZAwmAsXFLZQ==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.2.0"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@astrojs/mdx/node_modules/@shikijs/themes": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.2.0.tgz",
- "integrity": "sha512-RX8IHYeLv8Cu2W6ruc3RxUqWn0IYCqSrMBzi/uRGAmfyDNOnNO5BF/Px7o97n4XTpmFTo5GbRaazuOWj+2ak2w==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.2.0"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@astrojs/mdx/node_modules/@shikijs/types": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.2.0.tgz",
- "integrity": "sha512-VT/MKtlpOhEPZloSH3Pb9WCZEBDoQVMa9jedp5UAwmJOar1DVc9DRODAxmYPW9M93IK4ryuqRejFfmlvlVDemw==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/vscode-textmate": "^10.0.2",
- "@types/hast": "^3.0.4"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@astrojs/mdx/node_modules/shiki": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.2.0.tgz",
- "integrity": "sha512-hjNax6o/ylDy9lefQEaSDtzaT3iVNtZ3WmpQnbuQNoG4xvnSKf2kSKbihZVO4JRG1TTMejs7CmNRYlWgAL66pQ==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/core": "4.2.0",
- "@shikijs/engine-javascript": "4.2.0",
- "@shikijs/engine-oniguruma": "4.2.0",
- "@shikijs/langs": "4.2.0",
- "@shikijs/themes": "4.2.0",
- "@shikijs/types": "4.2.0",
- "@shikijs/vscode-textmate": "^10.0.2",
- "@types/hast": "^3.0.4"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@astrojs/prism": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.3.0.tgz",
- "integrity": "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==",
- "license": "MIT",
- "dependencies": {
- "prismjs": "^1.30.0"
- },
- "engines": {
- "node": "18.20.8 || ^20.3.0 || >=22.0.0"
- }
- },
"node_modules/@astrojs/sitemap": {
"version": "3.7.3",
"resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.7.3.tgz",
@@ -411,158 +266,6 @@
}
}
},
- "node_modules/@astrojs/starlight/node_modules/@astrojs/internal-helpers": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.10.0.tgz",
- "integrity": "sha512-Ry2R3VPeIN4uPCSA4xQc+e+vsJXkalKpEbDc07hV+a/o5Bs2N/s/uDcPJH/05L19DKh9tAy7e6JM3YZ6Cxfezw==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.4",
- "@types/mdast": "^4.0.4",
- "js-yaml": "^4.1.1",
- "picomatch": "^4.0.4",
- "retext-smartypants": "^6.2.0",
- "shiki": "^4.0.2",
- "smol-toml": "^1.6.0",
- "unified": "^11.0.5"
- }
- },
- "node_modules/@astrojs/starlight/node_modules/@astrojs/markdown-remark": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.2.0.tgz",
- "integrity": "sha512-+YxmVQu1Bd+MFfSzjq1rOJvD9+nIOJzz5YIIhdIH01RrxRkKbyKoEgyIqP3yv51MhzMDgd79QaPv+kCVPT8vHw==",
- "license": "MIT",
- "dependencies": {
- "@astrojs/internal-helpers": "0.10.0",
- "@astrojs/prism": "4.0.2",
- "github-slugger": "^2.0.0",
- "hast-util-from-html": "^2.0.3",
- "hast-util-to-text": "^4.0.2",
- "mdast-util-definitions": "^6.0.0",
- "rehype-raw": "^7.0.0",
- "rehype-stringify": "^10.0.1",
- "remark-gfm": "^4.0.1",
- "remark-parse": "^11.0.0",
- "remark-rehype": "^11.1.2",
- "remark-smartypants": "^3.0.2",
- "unified": "^11.0.5",
- "unist-util-remove-position": "^5.0.0",
- "unist-util-visit": "^5.1.0",
- "unist-util-visit-parents": "^6.0.2",
- "vfile": "^6.0.3"
- }
- },
- "node_modules/@astrojs/starlight/node_modules/@astrojs/prism": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-4.0.2.tgz",
- "integrity": "sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA==",
- "license": "MIT",
- "dependencies": {
- "prismjs": "^1.30.0"
- },
- "engines": {
- "node": ">=22.12.0"
- }
- },
- "node_modules/@astrojs/starlight/node_modules/@shikijs/core": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.2.0.tgz",
- "integrity": "sha512-Hc87Ab1Ld/vEbZRCbwx344I5v+4RU8CVToUTRkqXL1+TjbuOp9U5Xa0M23V4GEWHxVn+yO5otb+HkQVm3ptWQQ==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/primitive": "4.2.0",
- "@shikijs/types": "4.2.0",
- "@shikijs/vscode-textmate": "^10.0.2",
- "@types/hast": "^3.0.4",
- "hast-util-to-html": "^9.0.5"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@astrojs/starlight/node_modules/@shikijs/engine-javascript": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.2.0.tgz",
- "integrity": "sha512-fjETeq1k5ffyXqRgS6+3hpvqseLalp1kjNfRbXpUgWR8FpZ1CmQfiNHovc5lncYjt/Vg5JK/WJEmLahjwMa0og==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.2.0",
- "@shikijs/vscode-textmate": "^10.0.2",
- "oniguruma-to-es": "^4.3.6"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@astrojs/starlight/node_modules/@shikijs/engine-oniguruma": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.2.0.tgz",
- "integrity": "sha512-hTorK1dffPkpbMUk6Z+828PgRo7d07HbnizoP0hNPFjhxMHctj0Px/qoHeGMYafc6ju+u9iMldN4JbVzNQM++g==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.2.0",
- "@shikijs/vscode-textmate": "^10.0.2"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@astrojs/starlight/node_modules/@shikijs/langs": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.2.0.tgz",
- "integrity": "sha512-bwrVRlJ0wUhZxAbVdvBbv2TTC9yLsh4C/IO5Ofz0T8MQntgDvyVnkbjw9vi50r1kx7RCIJdnJnjZAwmAsXFLZQ==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.2.0"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@astrojs/starlight/node_modules/@shikijs/themes": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.2.0.tgz",
- "integrity": "sha512-RX8IHYeLv8Cu2W6ruc3RxUqWn0IYCqSrMBzi/uRGAmfyDNOnNO5BF/Px7o97n4XTpmFTo5GbRaazuOWj+2ak2w==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.2.0"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@astrojs/starlight/node_modules/@shikijs/types": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.2.0.tgz",
- "integrity": "sha512-VT/MKtlpOhEPZloSH3Pb9WCZEBDoQVMa9jedp5UAwmJOar1DVc9DRODAxmYPW9M93IK4ryuqRejFfmlvlVDemw==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/vscode-textmate": "^10.0.2",
- "@types/hast": "^3.0.4"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@astrojs/starlight/node_modules/shiki": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.2.0.tgz",
- "integrity": "sha512-hjNax6o/ylDy9lefQEaSDtzaT3iVNtZ3WmpQnbuQNoG4xvnSKf2kSKbihZVO4JRG1TTMejs7CmNRYlWgAL66pQ==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/core": "4.2.0",
- "@shikijs/engine-javascript": "4.2.0",
- "@shikijs/engine-oniguruma": "4.2.0",
- "@shikijs/langs": "4.2.0",
- "@shikijs/themes": "4.2.0",
- "@shikijs/types": "4.2.0",
- "@shikijs/vscode-textmate": "^10.0.2",
- "@types/hast": "^3.0.4"
- },
- "engines": {
- "node": ">=20"
- }
- },
"node_modules/@astrojs/telemetry": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.2.tgz",
@@ -1207,105 +910,6 @@
"shiki": "^4.0.2"
}
},
- "node_modules/@expressive-code/plugin-shiki/node_modules/@shikijs/core": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.2.0.tgz",
- "integrity": "sha512-Hc87Ab1Ld/vEbZRCbwx344I5v+4RU8CVToUTRkqXL1+TjbuOp9U5Xa0M23V4GEWHxVn+yO5otb+HkQVm3ptWQQ==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/primitive": "4.2.0",
- "@shikijs/types": "4.2.0",
- "@shikijs/vscode-textmate": "^10.0.2",
- "@types/hast": "^3.0.4",
- "hast-util-to-html": "^9.0.5"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@expressive-code/plugin-shiki/node_modules/@shikijs/engine-javascript": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.2.0.tgz",
- "integrity": "sha512-fjETeq1k5ffyXqRgS6+3hpvqseLalp1kjNfRbXpUgWR8FpZ1CmQfiNHovc5lncYjt/Vg5JK/WJEmLahjwMa0og==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.2.0",
- "@shikijs/vscode-textmate": "^10.0.2",
- "oniguruma-to-es": "^4.3.6"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@expressive-code/plugin-shiki/node_modules/@shikijs/engine-oniguruma": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.2.0.tgz",
- "integrity": "sha512-hTorK1dffPkpbMUk6Z+828PgRo7d07HbnizoP0hNPFjhxMHctj0Px/qoHeGMYafc6ju+u9iMldN4JbVzNQM++g==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.2.0",
- "@shikijs/vscode-textmate": "^10.0.2"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@expressive-code/plugin-shiki/node_modules/@shikijs/langs": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.2.0.tgz",
- "integrity": "sha512-bwrVRlJ0wUhZxAbVdvBbv2TTC9yLsh4C/IO5Ofz0T8MQntgDvyVnkbjw9vi50r1kx7RCIJdnJnjZAwmAsXFLZQ==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.2.0"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@expressive-code/plugin-shiki/node_modules/@shikijs/themes": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.2.0.tgz",
- "integrity": "sha512-RX8IHYeLv8Cu2W6ruc3RxUqWn0IYCqSrMBzi/uRGAmfyDNOnNO5BF/Px7o97n4XTpmFTo5GbRaazuOWj+2ak2w==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.2.0"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@expressive-code/plugin-shiki/node_modules/@shikijs/types": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.2.0.tgz",
- "integrity": "sha512-VT/MKtlpOhEPZloSH3Pb9WCZEBDoQVMa9jedp5UAwmJOar1DVc9DRODAxmYPW9M93IK4ryuqRejFfmlvlVDemw==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/vscode-textmate": "^10.0.2",
- "@types/hast": "^3.0.4"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@expressive-code/plugin-shiki/node_modules/shiki": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.2.0.tgz",
- "integrity": "sha512-hjNax6o/ylDy9lefQEaSDtzaT3iVNtZ3WmpQnbuQNoG4xvnSKf2kSKbihZVO4JRG1TTMejs7CmNRYlWgAL66pQ==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/core": "4.2.0",
- "@shikijs/engine-javascript": "4.2.0",
- "@shikijs/engine-oniguruma": "4.2.0",
- "@shikijs/langs": "4.2.0",
- "@shikijs/themes": "4.2.0",
- "@shikijs/types": "4.2.0",
- "@shikijs/vscode-textmate": "^10.0.2",
- "@types/hast": "^3.0.4"
- },
- "engines": {
- "node": ">=20"
- }
- },
"node_modules/@expressive-code/plugin-text-markers": {
"version": "0.43.1",
"resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.43.1.tgz",
@@ -2707,45 +2311,58 @@
]
},
"node_modules/@shikijs/core": {
- "version": "3.23.0",
- "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.23.0.tgz",
- "integrity": "sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.2.0.tgz",
+ "integrity": "sha512-Hc87Ab1Ld/vEbZRCbwx344I5v+4RU8CVToUTRkqXL1+TjbuOp9U5Xa0M23V4GEWHxVn+yO5otb+HkQVm3ptWQQ==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "3.23.0",
+ "@shikijs/primitive": "4.2.0",
+ "@shikijs/types": "4.2.0",
"@shikijs/vscode-textmate": "^10.0.2",
"@types/hast": "^3.0.4",
"hast-util-to-html": "^9.0.5"
+ },
+ "engines": {
+ "node": ">=20"
}
},
"node_modules/@shikijs/engine-javascript": {
- "version": "3.23.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.23.0.tgz",
- "integrity": "sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.2.0.tgz",
+ "integrity": "sha512-fjETeq1k5ffyXqRgS6+3hpvqseLalp1kjNfRbXpUgWR8FpZ1CmQfiNHovc5lncYjt/Vg5JK/WJEmLahjwMa0og==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "3.23.0",
+ "@shikijs/types": "4.2.0",
"@shikijs/vscode-textmate": "^10.0.2",
- "oniguruma-to-es": "^4.3.4"
+ "oniguruma-to-es": "^4.3.6"
+ },
+ "engines": {
+ "node": ">=20"
}
},
"node_modules/@shikijs/engine-oniguruma": {
- "version": "3.23.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.23.0.tgz",
- "integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.2.0.tgz",
+ "integrity": "sha512-hTorK1dffPkpbMUk6Z+828PgRo7d07HbnizoP0hNPFjhxMHctj0Px/qoHeGMYafc6ju+u9iMldN4JbVzNQM++g==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "3.23.0",
+ "@shikijs/types": "4.2.0",
"@shikijs/vscode-textmate": "^10.0.2"
+ },
+ "engines": {
+ "node": ">=20"
}
},
"node_modules/@shikijs/langs": {
- "version": "3.23.0",
- "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.23.0.tgz",
- "integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.2.0.tgz",
+ "integrity": "sha512-bwrVRlJ0wUhZxAbVdvBbv2TTC9yLsh4C/IO5Ofz0T8MQntgDvyVnkbjw9vi50r1kx7RCIJdnJnjZAwmAsXFLZQ==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "3.23.0"
+ "@shikijs/types": "4.2.0"
+ },
+ "engines": {
+ "node": ">=20"
}
},
"node_modules/@shikijs/primitive": {
@@ -2762,36 +2379,29 @@
"node": ">=20"
}
},
- "node_modules/@shikijs/primitive/node_modules/@shikijs/types": {
+ "node_modules/@shikijs/themes": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.2.0.tgz",
- "integrity": "sha512-VT/MKtlpOhEPZloSH3Pb9WCZEBDoQVMa9jedp5UAwmJOar1DVc9DRODAxmYPW9M93IK4ryuqRejFfmlvlVDemw==",
+ "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.2.0.tgz",
+ "integrity": "sha512-RX8IHYeLv8Cu2W6ruc3RxUqWn0IYCqSrMBzi/uRGAmfyDNOnNO5BF/Px7o97n4XTpmFTo5GbRaazuOWj+2ak2w==",
"license": "MIT",
"dependencies": {
- "@shikijs/vscode-textmate": "^10.0.2",
- "@types/hast": "^3.0.4"
+ "@shikijs/types": "4.2.0"
},
"engines": {
"node": ">=20"
}
},
- "node_modules/@shikijs/themes": {
- "version": "3.23.0",
- "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.23.0.tgz",
- "integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "3.23.0"
- }
- },
"node_modules/@shikijs/types": {
- "version": "3.23.0",
- "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.23.0.tgz",
- "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.2.0.tgz",
+ "integrity": "sha512-VT/MKtlpOhEPZloSH3Pb9WCZEBDoQVMa9jedp5UAwmJOar1DVc9DRODAxmYPW9M93IK4ryuqRejFfmlvlVDemw==",
"license": "MIT",
"dependencies": {
"@shikijs/vscode-textmate": "^10.0.2",
"@types/hast": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=20"
}
},
"node_modules/@shikijs/vscode-textmate": {
@@ -3011,6 +2621,16 @@
"integrity": "sha512-pUrWq3V5PiSGFLeLxoGqReTZmiiXwY3jRkIG5sLLKjyqNxrwm/04b4nw7LSmGWJcKk59XOM/YRTUwOzo4MMlow==",
"license": "BSD-3-Clause"
},
+ "node_modules/abbrev": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-5.0.0.tgz",
+ "integrity": "sha512-/XrFJgzQQQHpti1raDJC6m4ws6aNktmjBlhk8Fdlk7LwCEuDoieEJJY9OFHjfiFJFFRM2tK+Ky/IsfbbmlMu1w==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
+ }
+ },
"node_modules/acorn": {
"version": "8.17.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz",
@@ -3286,158 +2906,6 @@
"integrity": "sha512-eouss7G8ygdZqHuke033VMcVw5HTZUu+PXd/h06DGDUg/jt5btPYPqh66ENWw/mU78rBrf/oeC4oqoBwMtDMNA==",
"license": "MIT"
},
- "node_modules/astro/node_modules/@astrojs/internal-helpers": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.10.0.tgz",
- "integrity": "sha512-Ry2R3VPeIN4uPCSA4xQc+e+vsJXkalKpEbDc07hV+a/o5Bs2N/s/uDcPJH/05L19DKh9tAy7e6JM3YZ6Cxfezw==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.4",
- "@types/mdast": "^4.0.4",
- "js-yaml": "^4.1.1",
- "picomatch": "^4.0.4",
- "retext-smartypants": "^6.2.0",
- "shiki": "^4.0.2",
- "smol-toml": "^1.6.0",
- "unified": "^11.0.5"
- }
- },
- "node_modules/astro/node_modules/@astrojs/markdown-remark": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.2.0.tgz",
- "integrity": "sha512-+YxmVQu1Bd+MFfSzjq1rOJvD9+nIOJzz5YIIhdIH01RrxRkKbyKoEgyIqP3yv51MhzMDgd79QaPv+kCVPT8vHw==",
- "license": "MIT",
- "dependencies": {
- "@astrojs/internal-helpers": "0.10.0",
- "@astrojs/prism": "4.0.2",
- "github-slugger": "^2.0.0",
- "hast-util-from-html": "^2.0.3",
- "hast-util-to-text": "^4.0.2",
- "mdast-util-definitions": "^6.0.0",
- "rehype-raw": "^7.0.0",
- "rehype-stringify": "^10.0.1",
- "remark-gfm": "^4.0.1",
- "remark-parse": "^11.0.0",
- "remark-rehype": "^11.1.2",
- "remark-smartypants": "^3.0.2",
- "unified": "^11.0.5",
- "unist-util-remove-position": "^5.0.0",
- "unist-util-visit": "^5.1.0",
- "unist-util-visit-parents": "^6.0.2",
- "vfile": "^6.0.3"
- }
- },
- "node_modules/astro/node_modules/@astrojs/prism": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-4.0.2.tgz",
- "integrity": "sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA==",
- "license": "MIT",
- "dependencies": {
- "prismjs": "^1.30.0"
- },
- "engines": {
- "node": ">=22.12.0"
- }
- },
- "node_modules/astro/node_modules/@shikijs/core": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.2.0.tgz",
- "integrity": "sha512-Hc87Ab1Ld/vEbZRCbwx344I5v+4RU8CVToUTRkqXL1+TjbuOp9U5Xa0M23V4GEWHxVn+yO5otb+HkQVm3ptWQQ==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/primitive": "4.2.0",
- "@shikijs/types": "4.2.0",
- "@shikijs/vscode-textmate": "^10.0.2",
- "@types/hast": "^3.0.4",
- "hast-util-to-html": "^9.0.5"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/astro/node_modules/@shikijs/engine-javascript": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.2.0.tgz",
- "integrity": "sha512-fjETeq1k5ffyXqRgS6+3hpvqseLalp1kjNfRbXpUgWR8FpZ1CmQfiNHovc5lncYjt/Vg5JK/WJEmLahjwMa0og==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.2.0",
- "@shikijs/vscode-textmate": "^10.0.2",
- "oniguruma-to-es": "^4.3.6"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/astro/node_modules/@shikijs/engine-oniguruma": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.2.0.tgz",
- "integrity": "sha512-hTorK1dffPkpbMUk6Z+828PgRo7d07HbnizoP0hNPFjhxMHctj0Px/qoHeGMYafc6ju+u9iMldN4JbVzNQM++g==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.2.0",
- "@shikijs/vscode-textmate": "^10.0.2"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/astro/node_modules/@shikijs/langs": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.2.0.tgz",
- "integrity": "sha512-bwrVRlJ0wUhZxAbVdvBbv2TTC9yLsh4C/IO5Ofz0T8MQntgDvyVnkbjw9vi50r1kx7RCIJdnJnjZAwmAsXFLZQ==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.2.0"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/astro/node_modules/@shikijs/themes": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.2.0.tgz",
- "integrity": "sha512-RX8IHYeLv8Cu2W6ruc3RxUqWn0IYCqSrMBzi/uRGAmfyDNOnNO5BF/Px7o97n4XTpmFTo5GbRaazuOWj+2ak2w==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.2.0"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/astro/node_modules/@shikijs/types": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.2.0.tgz",
- "integrity": "sha512-VT/MKtlpOhEPZloSH3Pb9WCZEBDoQVMa9jedp5UAwmJOar1DVc9DRODAxmYPW9M93IK4ryuqRejFfmlvlVDemw==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/vscode-textmate": "^10.0.2",
- "@types/hast": "^3.0.4"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/astro/node_modules/shiki": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.2.0.tgz",
- "integrity": "sha512-hjNax6o/ylDy9lefQEaSDtzaT3iVNtZ3WmpQnbuQNoG4xvnSKf2kSKbihZVO4JRG1TTMejs7CmNRYlWgAL66pQ==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/core": "4.2.0",
- "@shikijs/engine-javascript": "4.2.0",
- "@shikijs/engine-oniguruma": "4.2.0",
- "@shikijs/langs": "4.2.0",
- "@shikijs/themes": "4.2.0",
- "@shikijs/types": "4.2.0",
- "@shikijs/vscode-textmate": "^10.0.2",
- "@types/hast": "^3.0.4"
- },
- "engines": {
- "node": ">=20"
- }
- },
"node_modules/axobject-query": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
@@ -4110,6 +3578,16 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/es-module-lexer": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz",
@@ -4307,6 +3785,13 @@
"integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==",
"license": "MIT"
},
+ "node_modules/exponential-backoff": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz",
+ "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
"node_modules/expressive-code": {
"version": "0.43.1",
"resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.43.1.tgz",
@@ -4524,6 +4009,13 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/h3": {
"version": "1.15.11",
"resolved": "https://registry.npmjs.org/h3/-/h3-1.15.11.tgz",
@@ -5026,16 +4518,6 @@
"devOptional": true,
"license": "MIT"
},
- "node_modules/import-meta-resolve": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz",
- "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/inline-style-parser": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz",
@@ -5202,6 +4684,16 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/isexe": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz",
+ "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=20"
+ }
+ },
"node_modules/js-yaml": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz",
@@ -6533,12 +6025,63 @@
"integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==",
"license": "MIT"
},
+ "node_modules/node-gyp": {
+ "version": "13.0.1",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-13.0.1.tgz",
+ "integrity": "sha512-piOr0S10qy5THB+q5BdqkoOx65XL/tjTMUAit3vciPNp+snTOBnGunWH1Rz7XZUxf2T9uFrfT/Ty4+aC3yPeyg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.0",
+ "exponential-backoff": "^3.1.1",
+ "graceful-fs": "^4.2.6",
+ "nopt": "^10.0.0",
+ "proc-log": "^7.0.0",
+ "semver": "^7.3.5",
+ "tar": "^7.5.4",
+ "tinyglobby": "^0.2.12",
+ "undici": "^8.4.1",
+ "which": "^7.0.0"
+ },
+ "bin": {
+ "node-gyp": "bin/node-gyp.js"
+ },
+ "engines": {
+ "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
+ }
+ },
+ "node_modules/node-gyp/node_modules/undici": {
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-8.10.0.tgz",
+ "integrity": "sha512-HvltHd7avK13QIw/oLe4qoOLyoVSoafqJ2jYOrtMRBkbYT31eiBQ8O0ehRKZiEZCMEyLFQNIADpgCWC5fALvYQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=22.19.0"
+ }
+ },
"node_modules/node-mock-http": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.4.tgz",
"integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==",
"license": "MIT"
},
+ "node_modules/nopt": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-10.0.1.tgz",
+ "integrity": "sha512-df3sBr/6ax9hSGuC3CspvLlbnX8cP5L5nZwXF8cGN8l0zSWR6BvzmQ6jPUKjvo6+/xdpkNvEcucBNUdBeeV13g==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "abbrev": "^5.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
+ }
+ },
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -6918,6 +6461,16 @@
"node": ">=6"
}
},
+ "node_modules/proc-log": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-7.0.0.tgz",
+ "integrity": "sha512-FYgfaA69XZ93zaXLoMNQ+ViDXGGBgR8aLh03txzcFhV+9xOXx7+8DLCULrKKpR9+GsH9ZfHm82aSUPpozX0Ztg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
+ }
+ },
"node_modules/property-information": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz",
@@ -7875,19 +7428,22 @@
}
},
"node_modules/shiki": {
- "version": "3.23.0",
- "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.23.0.tgz",
- "integrity": "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.2.0.tgz",
+ "integrity": "sha512-hjNax6o/ylDy9lefQEaSDtzaT3iVNtZ3WmpQnbuQNoG4xvnSKf2kSKbihZVO4JRG1TTMejs7CmNRYlWgAL66pQ==",
"license": "MIT",
"dependencies": {
- "@shikijs/core": "3.23.0",
- "@shikijs/engine-javascript": "3.23.0",
- "@shikijs/engine-oniguruma": "3.23.0",
- "@shikijs/langs": "3.23.0",
- "@shikijs/themes": "3.23.0",
- "@shikijs/types": "3.23.0",
+ "@shikijs/core": "4.2.0",
+ "@shikijs/engine-javascript": "4.2.0",
+ "@shikijs/engine-oniguruma": "4.2.0",
+ "@shikijs/langs": "4.2.0",
+ "@shikijs/themes": "4.2.0",
+ "@shikijs/types": "4.2.0",
"@shikijs/vscode-textmate": "^10.0.2",
"@types/hast": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=20"
}
},
"node_modules/sisteransi": {
@@ -8207,9 +7763,9 @@
"license": "MIT"
},
"node_modules/typescript": {
- "version": "5.9.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
- "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
+ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
@@ -8247,9 +7803,9 @@
"license": "MIT"
},
"node_modules/undici": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz",
- "integrity": "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.0.tgz",
+ "integrity": "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==",
"license": "MIT",
"engines": {
"node": ">=20.18.1"
@@ -8993,6 +8549,22 @@
"node": ">=18"
}
},
+ "node_modules/which": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-7.0.0.tgz",
+ "integrity": "sha512-RancgH2dmbLdHl6LRhEqvklWMgl/Hdnun0Y90KhBOLkMefg8Qa7/Zel8Sm+8HEcP6DEjzsWzpkuBQEZok58isA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^4.0.0"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^22.22.2 || ^24.15.0 || >=26.0.0"
+ }
+ },
"node_modules/which-pm-runs": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz",
diff --git a/package.json b/package.json
index 35aecc4..3cf3f82 100644
--- a/package.json
+++ b/package.json
@@ -12,7 +12,7 @@
"dependencies": {
"@astro-community/astro-embed-youtube": "^0.5.10",
"@astrojs/check": "^0.9.9",
- "@astrojs/markdown-remark": "^6.3.10",
+ "@astrojs/markdown-remark": "^7.2.0",
"@astrojs/starlight": "^0.40.0",
"@fontsource/neucha": "^5.2.8",
"@iconify-json/simple-icons": "^1.2.82",
@@ -22,9 +22,10 @@
"astro-og-canvas": "^0.11.1",
"astro-swiper": "^2.7.0",
"sharp": "^0.34.5",
- "typescript": "^5.9.3"
+ "typescript": "^6.0.3"
},
"devDependencies": {
+ "node-gyp": "^13.0.1",
"sass-embedded": "^1.99.0"
}
}
diff --git a/src/assets/img/debuggingZed.png b/src/assets/img/debuggingZed.png
new file mode 100644
index 0000000..4d1365f
Binary files /dev/null and b/src/assets/img/debuggingZed.png differ
diff --git a/src/assets/img/linguax_action.png b/src/assets/img/linguax_action.png
new file mode 100644
index 0000000..f28af87
Binary files /dev/null and b/src/assets/img/linguax_action.png differ
diff --git a/src/assets/img/linguax_gesture.png b/src/assets/img/linguax_gesture.png
new file mode 100644
index 0000000..8f97162
Binary files /dev/null and b/src/assets/img/linguax_gesture.png differ
diff --git a/src/content/docs/create-menu-themes.mdx b/src/content/docs/create-menu-themes.mdx
index 6ea4785..010c768 100644
--- a/src/content/docs/create-menu-themes.mdx
+++ b/src/content/docs/create-menu-themes.mdx
@@ -170,6 +170,7 @@ Content Type | Description
`"none"` | The layer will not contain any additional content. This is for instance useful for simple background layers. You can also assign a background-image to the layer in the CSS file.
`"icon"` | The layer will contain a nested `.icon-container` element for this menu item. For a simple theme, a single layer of this type is usually enough, as you can style the layer to have a background color, border, drop shadow, etc.
`"name"` | The text content of the layer element will be the name of the menu item.
+`"quick-select-key"` | The text content of the layer element will contain the open workflow quick-key.
diff --git a/src/content/docs/linguax-tutorial.mdx b/src/content/docs/linguax-tutorial.mdx
new file mode 100644
index 0000000..908b4d3
--- /dev/null
+++ b/src/content/docs/linguax-tutorial.mdx
@@ -0,0 +1,35 @@
+---
+# SPDX-FileCopyrightText: Simon Schneegans
+# SPDX-License-Identifier: CC-BY-4.0
+
+title: LinguaX (macOS)
+description: A guide on how to use LinguaX to open Kando menus with mouse buttons.
+---
+
+import { Steps } from '@astrojs/starlight/components';
+import Intro from '../../components/Intro.astro';
+import {Image} from 'astro:assets';
+
+
+
+
+ [LinguaX](https://linguax.app/) is a macOS menu-bar app which combines automatic input-source switching with mouse-button remapping.
+ You can use it to open a Kando menu via a mouse button.
+
+
+## Configuration
+
+
+ 1. Open LinguaX from the menu bar and switch to the 'Mouse' tab.
+ 2. Select your mouse and click the button you want to use (for example a side button).
+ 3. Choose the 'Click' gesture for this button.
+ 4. Set the 'Action' to 'Keyboard Shortcut' and record the hotkey which opens your Kando menu.
+ 5. For example, you can send Ctrl+F13 when pressing the mouse button.
+ 6. Save the mapping and adjust it to your own needs (if necessary).
+
+
+| Selecting the Click gesture for a mouse button | Choosing the action for a mouse button |
+| -------------------------------------------------------- | ------------------------------------------------------ |
+|  |  |
+
+
diff --git a/src/content/docs/opening-menus.mdx b/src/content/docs/opening-menus.mdx
index 6d7759e..b62b327 100644
--- a/src/content/docs/opening-menus.mdx
+++ b/src/content/docs/opening-menus.mdx
@@ -32,6 +32,7 @@ Input Remapper **([→ Tutorial](/input-remapper-tutorial))** | | ✅ | 🖱️ + ✍️
BetterMouse **([→ Tutorial](/bm-tutorial))** | | ❌ | 🖱️
BetterTouchTool **([→ Tutorial](/btt-tutorial))** | | ❌ | 🖱️ + ✍️ + 👆
+LinguaX **([→ Tutorial](/linguax-tutorial))** | | ❌ | 🖱️
Kanata **([→ Tutorial](/kanata-tutorial))** | + + | ✅ | ⌨️
### Features Legend