feat: add treesitter
This commit is contained in:
parent
d96034325b
commit
a8cb3c0c78
|
@ -8,6 +8,7 @@ import rehypeKatex from 'rehype-katex';
|
|||
import remarkEmoji from 'remark-emoji';
|
||||
import remarkBib from './src/utils/remark/bib';
|
||||
import remarkRuby from './src/utils/remark/ruby';
|
||||
import rehypeTreesitter from './src/utils/treesitter';
|
||||
|
||||
|
||||
// https://astro.build/config
|
||||
|
@ -18,6 +19,7 @@ export default defineConfig({
|
|||
enabled: true,
|
||||
},
|
||||
markdown: {
|
||||
syntaxHighlight: false,
|
||||
remarkPlugins: [
|
||||
remarkDirective,
|
||||
remarkMath,
|
||||
|
@ -28,10 +30,8 @@ export default defineConfig({
|
|||
rehypePlugins: [
|
||||
// https://katex.org/docs/options.html
|
||||
[rehypeKatex, { output: 'mathml' }],
|
||||
rehypeTreesitter,
|
||||
],
|
||||
shikiConfig: {
|
||||
theme: 'min-light'
|
||||
},
|
||||
},
|
||||
integrations: [
|
||||
mdx(),
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
"@astrojs/svelte": "^5.0.3",
|
||||
"@citation-js/plugin-bibtex": "^0.7.8",
|
||||
"@js-temporal/polyfill": "^0.4.4",
|
||||
"astro": "^4.3.5",
|
||||
"astro": "^4.3.6",
|
||||
"astro-pagefind": "^1.4.0",
|
||||
"chart.js": "^4.4.1",
|
||||
"citation-js": "^0.7.8",
|
||||
|
@ -33,7 +33,7 @@
|
|||
"remark-parse": "^11.0.0",
|
||||
"remark-rehype": "^11.1.0",
|
||||
"reveal.js": "^5.0.4",
|
||||
"svelte": "5.0.0-next.51",
|
||||
"svelte": "5.0.0-next.52",
|
||||
"unified": "^11.0.4",
|
||||
"unist-util-visit": "^5.0.0"
|
||||
},
|
||||
|
|
269
pnpm-lock.yaml
269
pnpm-lock.yaml
|
@ -7,10 +7,10 @@ settings:
|
|||
dependencies:
|
||||
'@astrojs/mdx':
|
||||
specifier: ^2.1.1
|
||||
version: 2.1.1(astro@4.3.5)
|
||||
version: 2.1.1(astro@4.3.6)
|
||||
'@astrojs/svelte':
|
||||
specifier: ^5.0.3
|
||||
version: 5.0.3(astro@4.3.5)(svelte@5.0.0-next.51)(typescript@5.3.3)(vite@5.1.0)
|
||||
version: 5.0.3(astro@4.3.6)(svelte@5.0.0-next.52)(typescript@5.3.3)(vite@5.1.1)
|
||||
'@citation-js/plugin-bibtex':
|
||||
specifier: ^0.7.8
|
||||
version: 0.7.8(@citation-js/core@0.7.6)
|
||||
|
@ -18,11 +18,11 @@ dependencies:
|
|||
specifier: ^0.4.4
|
||||
version: 0.4.4
|
||||
astro:
|
||||
specifier: ^4.3.5
|
||||
version: 4.3.5(sass@1.70.0)(typescript@5.3.3)
|
||||
specifier: ^4.3.6
|
||||
version: 4.3.6(sass@1.70.0)(typescript@5.3.3)
|
||||
astro-pagefind:
|
||||
specifier: ^1.4.0
|
||||
version: 1.4.0(astro@4.3.5)
|
||||
version: 1.4.0(astro@4.3.6)
|
||||
chart.js:
|
||||
specifier: ^4.4.1
|
||||
version: 4.4.1
|
||||
|
@ -72,8 +72,8 @@ dependencies:
|
|||
specifier: ^5.0.4
|
||||
version: 5.0.4
|
||||
svelte:
|
||||
specifier: 5.0.0-next.51
|
||||
version: 5.0.0-next.51
|
||||
specifier: 5.0.0-next.52
|
||||
version: 5.0.0-next.52
|
||||
unified:
|
||||
specifier: ^11.0.4
|
||||
version: 11.0.4
|
||||
|
@ -103,6 +103,9 @@ devDependencies:
|
|||
sharp:
|
||||
specifier: ^0.33.2
|
||||
version: 0.33.2
|
||||
treesitter:
|
||||
specifier: file:/home/kamov/Desktop/treesitter
|
||||
version: file:../../Desktop/treesitter
|
||||
|
||||
packages:
|
||||
|
||||
|
@ -143,16 +146,16 @@ packages:
|
|||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@astrojs/mdx@2.1.1(astro@4.3.5):
|
||||
/@astrojs/mdx@2.1.1(astro@4.3.6):
|
||||
resolution: {integrity: sha512-AgGFdE7HOGmoFooGvMSatkA9FiSKwyVW7ImHot/bXJ6uAbFfu6iG2ht18Cf1pT22Hda/6iSCGWusFvBv0/EnKQ==}
|
||||
engines: {node: '>=18.14.1'}
|
||||
peerDependencies:
|
||||
astro: ^4.0.0
|
||||
dependencies:
|
||||
'@astrojs/markdown-remark': 4.2.1
|
||||
'@mdx-js/mdx': 3.0.0
|
||||
'@mdx-js/mdx': 3.0.1
|
||||
acorn: 8.11.3
|
||||
astro: 4.3.5(sass@1.70.0)(typescript@5.3.3)
|
||||
astro: 4.3.6(sass@1.70.0)(typescript@5.3.3)
|
||||
es-module-lexer: 1.4.1
|
||||
estree-util-visit: 2.0.0
|
||||
github-slugger: 2.0.0
|
||||
|
@ -176,17 +179,17 @@ packages:
|
|||
prismjs: 1.29.0
|
||||
dev: false
|
||||
|
||||
/@astrojs/svelte@5.0.3(astro@4.3.5)(svelte@5.0.0-next.51)(typescript@5.3.3)(vite@5.1.0):
|
||||
/@astrojs/svelte@5.0.3(astro@4.3.6)(svelte@5.0.0-next.52)(typescript@5.3.3)(vite@5.1.1):
|
||||
resolution: {integrity: sha512-6TUBRUxmsEczKPBT6oDUAfvzuFCmITuhZfKPT5ZtOOyj9XOVnEnj/Iobd3ajKUbpWNYX7qZVAd1KMkmJc1Nhsg==}
|
||||
engines: {node: '>=18.14.1'}
|
||||
peerDependencies:
|
||||
astro: ^4.0.0
|
||||
svelte: ^4.0.0 || ^5.0.0-next.1
|
||||
dependencies:
|
||||
'@sveltejs/vite-plugin-svelte': 3.0.2(svelte@5.0.0-next.51)(vite@5.1.0)
|
||||
astro: 4.3.5(sass@1.70.0)(typescript@5.3.3)
|
||||
svelte: 5.0.0-next.51
|
||||
svelte2tsx: 0.6.27(svelte@5.0.0-next.51)(typescript@5.3.3)
|
||||
'@sveltejs/vite-plugin-svelte': 3.0.2(svelte@5.0.0-next.52)(vite@5.1.1)
|
||||
astro: 4.3.6(sass@1.70.0)(typescript@5.3.3)
|
||||
svelte: 5.0.0-next.52
|
||||
svelte2tsx: 0.6.27(svelte@5.0.0-next.52)(typescript@5.3.3)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
- typescript
|
||||
|
@ -986,8 +989,8 @@ packages:
|
|||
resolution: {integrity: sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==}
|
||||
dev: false
|
||||
|
||||
/@mdx-js/mdx@3.0.0:
|
||||
resolution: {integrity: sha512-Icm0TBKBLYqroYbNW3BPnzMGn+7mwpQOK310aZ7+fkCtiU3aqv2cdcX+nd0Ydo3wI5Rx8bX2Z2QmGb/XcAClCw==}
|
||||
/@mdx-js/mdx@3.0.1:
|
||||
resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==}
|
||||
dependencies:
|
||||
'@types/estree': 1.0.5
|
||||
'@types/estree-jsx': 1.0.4
|
||||
|
@ -1003,7 +1006,7 @@ packages:
|
|||
hast-util-to-jsx-runtime: 2.3.0
|
||||
markdown-extensions: 2.0.0
|
||||
periscopic: 3.1.0
|
||||
remark-mdx: 3.0.0
|
||||
remark-mdx: 3.0.1
|
||||
remark-parse: 11.0.0
|
||||
remark-rehype: 11.1.0
|
||||
source-map: 0.7.4
|
||||
|
@ -1080,104 +1083,104 @@ packages:
|
|||
resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==}
|
||||
dev: false
|
||||
|
||||
/@rollup/rollup-android-arm-eabi@4.9.6:
|
||||
resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==}
|
||||
/@rollup/rollup-android-arm-eabi@4.10.0:
|
||||
resolution: {integrity: sha512-/MeDQmcD96nVoRumKUljsYOLqfv1YFJps+0pTrb2Z9Nl/w5qNUysMaWQsrd1mvAlNT4yza1iVyIu4Q4AgF6V3A==}
|
||||
cpu: [arm]
|
||||
os: [android]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@rollup/rollup-android-arm64@4.9.6:
|
||||
resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==}
|
||||
/@rollup/rollup-android-arm64@4.10.0:
|
||||
resolution: {integrity: sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@rollup/rollup-darwin-arm64@4.9.6:
|
||||
resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==}
|
||||
/@rollup/rollup-darwin-arm64@4.10.0:
|
||||
resolution: {integrity: sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@rollup/rollup-darwin-x64@4.9.6:
|
||||
resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==}
|
||||
/@rollup/rollup-darwin-x64@4.10.0:
|
||||
resolution: {integrity: sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@rollup/rollup-linux-arm-gnueabihf@4.9.6:
|
||||
resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==}
|
||||
/@rollup/rollup-linux-arm-gnueabihf@4.10.0:
|
||||
resolution: {integrity: sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@rollup/rollup-linux-arm64-gnu@4.9.6:
|
||||
resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==}
|
||||
/@rollup/rollup-linux-arm64-gnu@4.10.0:
|
||||
resolution: {integrity: sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@rollup/rollup-linux-arm64-musl@4.9.6:
|
||||
resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==}
|
||||
/@rollup/rollup-linux-arm64-musl@4.10.0:
|
||||
resolution: {integrity: sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@rollup/rollup-linux-riscv64-gnu@4.9.6:
|
||||
resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==}
|
||||
/@rollup/rollup-linux-riscv64-gnu@4.10.0:
|
||||
resolution: {integrity: sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@rollup/rollup-linux-x64-gnu@4.9.6:
|
||||
resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==}
|
||||
/@rollup/rollup-linux-x64-gnu@4.10.0:
|
||||
resolution: {integrity: sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@rollup/rollup-linux-x64-musl@4.9.6:
|
||||
resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==}
|
||||
/@rollup/rollup-linux-x64-musl@4.10.0:
|
||||
resolution: {integrity: sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@rollup/rollup-win32-arm64-msvc@4.9.6:
|
||||
resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==}
|
||||
/@rollup/rollup-win32-arm64-msvc@4.10.0:
|
||||
resolution: {integrity: sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@rollup/rollup-win32-ia32-msvc@4.9.6:
|
||||
resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==}
|
||||
/@rollup/rollup-win32-ia32-msvc@4.10.0:
|
||||
resolution: {integrity: sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@rollup/rollup-win32-x64-msvc@4.9.6:
|
||||
resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==}
|
||||
/@rollup/rollup-win32-x64-msvc@4.10.0:
|
||||
resolution: {integrity: sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
|
@ -1189,7 +1192,7 @@ packages:
|
|||
engines: {node: '>=10'}
|
||||
dev: false
|
||||
|
||||
/@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@5.0.0-next.51)(vite@5.1.0):
|
||||
/@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@5.0.0-next.52)(vite@5.1.1):
|
||||
resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==}
|
||||
engines: {node: ^18.0.0 || >=20}
|
||||
peerDependencies:
|
||||
|
@ -1197,30 +1200,30 @@ packages:
|
|||
svelte: ^4.0.0 || ^5.0.0-next.0
|
||||
vite: ^5.0.0
|
||||
dependencies:
|
||||
'@sveltejs/vite-plugin-svelte': 3.0.2(svelte@5.0.0-next.51)(vite@5.1.0)
|
||||
'@sveltejs/vite-plugin-svelte': 3.0.2(svelte@5.0.0-next.52)(vite@5.1.1)
|
||||
debug: 4.3.4
|
||||
svelte: 5.0.0-next.51
|
||||
vite: 5.1.0(sass@1.70.0)
|
||||
svelte: 5.0.0-next.52
|
||||
vite: 5.1.1(sass@1.70.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@sveltejs/vite-plugin-svelte@3.0.2(svelte@5.0.0-next.51)(vite@5.1.0):
|
||||
/@sveltejs/vite-plugin-svelte@3.0.2(svelte@5.0.0-next.52)(vite@5.1.1):
|
||||
resolution: {integrity: sha512-MpmF/cju2HqUls50WyTHQBZUV3ovV/Uk8k66AN2gwHogNAG8wnW8xtZDhzNBsFJJuvmq1qnzA5kE7YfMJNFv2Q==}
|
||||
engines: {node: ^18.0.0 || >=20}
|
||||
peerDependencies:
|
||||
svelte: ^4.0.0 || ^5.0.0-next.0
|
||||
vite: ^5.0.0
|
||||
dependencies:
|
||||
'@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@5.0.0-next.51)(vite@5.1.0)
|
||||
'@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@5.0.0-next.52)(vite@5.1.1)
|
||||
debug: 4.3.4
|
||||
deepmerge: 4.3.1
|
||||
kleur: 4.1.5
|
||||
magic-string: 0.30.7
|
||||
svelte: 5.0.0-next.51
|
||||
svelte-hmr: 0.15.3(svelte@5.0.0-next.51)
|
||||
vite: 5.1.0(sass@1.70.0)
|
||||
vitefu: 0.2.5(vite@5.1.0)
|
||||
svelte: 5.0.0-next.52
|
||||
svelte-hmr: 0.15.3(svelte@5.0.0-next.52)
|
||||
vite: 5.1.1(sass@1.70.0)
|
||||
vitefu: 0.2.5(vite@5.1.1)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
@ -1423,19 +1426,19 @@ packages:
|
|||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/astro-pagefind@1.4.0(astro@4.3.5):
|
||||
/astro-pagefind@1.4.0(astro@4.3.6):
|
||||
resolution: {integrity: sha512-WMUlS0TTqIDqygplj/cxKU+l3oI+zB2qgYNMZed5R5nXuw8HhAKATog9zazuN05TOSWxI2Ap9+9WAYnnJ+4C7A==}
|
||||
peerDependencies:
|
||||
astro: ^2.0.4 || ^3.0.0 || ^4.0.0
|
||||
dependencies:
|
||||
'@pagefind/default-ui': 1.0.4
|
||||
astro: 4.3.5(sass@1.70.0)(typescript@5.3.3)
|
||||
astro: 4.3.6(sass@1.70.0)(typescript@5.3.3)
|
||||
pagefind: 1.0.4
|
||||
sirv: 2.0.4
|
||||
dev: false
|
||||
|
||||
/astro@4.3.5(sass@1.70.0)(typescript@5.3.3):
|
||||
resolution: {integrity: sha512-7jPffNlcmDO94NlkWe/hUWta/pIjlx1LVD/DZb/fyjT1Jv+7mGhKZBIjkDfeVpequW70mep8cAS5RM7Pxa0Gdg==}
|
||||
/astro@4.3.6(sass@1.70.0)(typescript@5.3.3):
|
||||
resolution: {integrity: sha512-VYJGsBygMtPM/qTRgn5QdxkSILgjpW2uHVw3snp/Gkl+N9uRAAnuYxrUO7wkbLejfrmlb0nZyyKG+H5VDQPbeg==}
|
||||
engines: {node: '>=18.14.1', npm: '>=6.14.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
|
@ -1463,7 +1466,7 @@ packages:
|
|||
debug: 4.3.4
|
||||
deterministic-object-hash: 2.0.2
|
||||
devalue: 4.3.2
|
||||
diff: 5.1.0
|
||||
diff: 5.2.0
|
||||
dlv: 1.1.3
|
||||
dset: 3.1.3
|
||||
es-module-lexer: 1.4.1
|
||||
|
@ -1493,13 +1496,14 @@ packages:
|
|||
semver: 7.6.0
|
||||
server-destroy: 1.0.1
|
||||
shikiji: 0.9.19
|
||||
shikiji-core: 0.9.19
|
||||
string-width: 7.1.0
|
||||
strip-ansi: 7.1.0
|
||||
tsconfck: 3.0.2(typescript@5.3.3)
|
||||
unist-util-visit: 5.0.0
|
||||
vfile: 6.0.1
|
||||
vite: 5.1.0(sass@1.70.0)
|
||||
vitefu: 0.2.5(vite@5.1.0)
|
||||
vite: 5.1.1(sass@1.70.0)
|
||||
vitefu: 0.2.5(vite@5.1.1)
|
||||
which-pm: 2.1.1
|
||||
yargs-parser: 21.1.1
|
||||
zod: 3.22.4
|
||||
|
@ -1533,6 +1537,37 @@ packages:
|
|||
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
|
||||
dev: false
|
||||
|
||||
/bare-events@2.2.0:
|
||||
resolution: {integrity: sha512-Yyyqff4PIFfSuthCZqLlPISTWHmnQxoPuAvkmgzsJEmG3CesdIv6Xweayl0JkCZJSB2yYIdJyEz97tpxNhgjbg==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/bare-fs@2.1.3:
|
||||
resolution: {integrity: sha512-Oa7F0QJV7We0mtKq7Tk246uiBrl7vun64cPEsJOEwv2vHjnVL9yO7aH3643aSrd4rXfVe7yhJ9LHZywQQAXKFQ==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
bare-events: 2.2.0
|
||||
bare-os: 2.1.2
|
||||
bare-path: 2.1.0
|
||||
streamx: 2.15.8
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/bare-os@2.1.2:
|
||||
resolution: {integrity: sha512-slQjOn78Q8itnzomNAamiKo5MDpEpV3JnoNZ93lyynaFh6paWcU+5c0GVcZ7EYIJC2unN2JGdF1qupdscYl0Yg==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/bare-path@2.1.0:
|
||||
resolution: {integrity: sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
bare-os: 2.1.2
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/base-64@1.0.0:
|
||||
resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==}
|
||||
dev: false
|
||||
|
@ -1588,8 +1623,8 @@ packages:
|
|||
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
caniuse-lite: 1.0.30001585
|
||||
electron-to-chromium: 1.4.662
|
||||
caniuse-lite: 1.0.30001587
|
||||
electron-to-chromium: 1.4.665
|
||||
node-releases: 2.0.14
|
||||
update-browserslist-db: 1.0.13(browserslist@4.22.3)
|
||||
dev: false
|
||||
|
@ -1613,8 +1648,8 @@ packages:
|
|||
engines: {node: '>=14.16'}
|
||||
dev: false
|
||||
|
||||
/caniuse-lite@1.0.30001585:
|
||||
resolution: {integrity: sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==}
|
||||
/caniuse-lite@1.0.30001587:
|
||||
resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==}
|
||||
dev: false
|
||||
|
||||
/ccount@2.0.1:
|
||||
|
@ -1908,8 +1943,8 @@ packages:
|
|||
dequal: 2.0.3
|
||||
dev: false
|
||||
|
||||
/diff@5.1.0:
|
||||
resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==}
|
||||
/diff@5.2.0:
|
||||
resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==}
|
||||
engines: {node: '>=0.3.1'}
|
||||
dev: false
|
||||
|
||||
|
@ -1926,8 +1961,8 @@ packages:
|
|||
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
||||
dev: false
|
||||
|
||||
/electron-to-chromium@1.4.662:
|
||||
resolution: {integrity: sha512-gfl1XVWTQmPHhqEG0kN77SpUxaqPpMb9r83PT4gvKhg7P3irSxru3lW85RxvK1uI1j2CAcTWPjG/HbE0IP/Rtg==}
|
||||
/electron-to-chromium@1.4.665:
|
||||
resolution: {integrity: sha512-UpyCWObBoD+nSZgOC2ToaIdZB0r9GhqT2WahPKiSki6ckkSuKhQNso8V2PrFcHBMleI/eqbKgVQgVC4Wni4ilw==}
|
||||
dev: false
|
||||
|
||||
/emoji-regex@10.3.0:
|
||||
|
@ -2244,8 +2279,8 @@ packages:
|
|||
engines: {node: '>=4'}
|
||||
dev: false
|
||||
|
||||
/hasown@2.0.0:
|
||||
resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
|
||||
/hasown@2.0.1:
|
||||
resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
function-bind: 1.1.2
|
||||
|
@ -2334,7 +2369,7 @@ packages:
|
|||
estree-util-is-identifier-name: 3.0.0
|
||||
hast-util-whitespace: 3.0.0
|
||||
mdast-util-mdx-expression: 2.0.0
|
||||
mdast-util-mdx-jsx: 3.0.0
|
||||
mdast-util-mdx-jsx: 3.1.0
|
||||
mdast-util-mdxjs-esm: 2.0.1
|
||||
property-information: 6.4.1
|
||||
space-separated-tokens: 2.0.2
|
||||
|
@ -2373,7 +2408,7 @@ packages:
|
|||
estree-util-is-identifier-name: 3.0.0
|
||||
hast-util-whitespace: 3.0.0
|
||||
mdast-util-mdx-expression: 2.0.0
|
||||
mdast-util-mdx-jsx: 3.0.0
|
||||
mdast-util-mdx-jsx: 3.1.0
|
||||
mdast-util-mdxjs-esm: 2.0.1
|
||||
property-information: 6.4.1
|
||||
space-separated-tokens: 2.0.2
|
||||
|
@ -2502,7 +2537,7 @@ packages:
|
|||
/is-core-module@2.13.1:
|
||||
resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
|
||||
dependencies:
|
||||
hasown: 2.0.0
|
||||
hasown: 2.0.1
|
||||
dev: false
|
||||
|
||||
/is-decimal@2.0.1:
|
||||
|
@ -2882,8 +2917,8 @@ packages:
|
|||
- supports-color
|
||||
dev: false
|
||||
|
||||
/mdast-util-mdx-jsx@3.0.0:
|
||||
resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==}
|
||||
/mdast-util-mdx-jsx@3.1.0:
|
||||
resolution: {integrity: sha512-A8AJHlR7/wPQ3+Jre1+1rq040fX9A4Q1jG8JxmSNp/PLPHg80A6475wxTp3KzHpApFH6yWxFotHrJQA3dXP6/w==}
|
||||
dependencies:
|
||||
'@types/estree-jsx': 1.0.4
|
||||
'@types/hast': 3.0.4
|
||||
|
@ -2907,7 +2942,7 @@ packages:
|
|||
dependencies:
|
||||
mdast-util-from-markdown: 2.0.0
|
||||
mdast-util-mdx-expression: 2.0.0
|
||||
mdast-util-mdx-jsx: 3.0.0
|
||||
mdast-util-mdx-jsx: 3.1.0
|
||||
mdast-util-mdxjs-esm: 2.0.1
|
||||
mdast-util-to-markdown: 2.1.0
|
||||
transitivePeerDependencies:
|
||||
|
@ -3907,8 +3942,8 @@ packages:
|
|||
- supports-color
|
||||
dev: false
|
||||
|
||||
/remark-mdx@3.0.0:
|
||||
resolution: {integrity: sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g==}
|
||||
/remark-mdx@3.0.1:
|
||||
resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==}
|
||||
dependencies:
|
||||
mdast-util-mdx: 3.0.0
|
||||
micromark-extension-mdxjs: 3.0.0
|
||||
|
@ -4016,26 +4051,26 @@ packages:
|
|||
engines: {node: '>=18.0.0'}
|
||||
dev: false
|
||||
|
||||
/rollup@4.9.6:
|
||||
resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==}
|
||||
/rollup@4.10.0:
|
||||
resolution: {integrity: sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==}
|
||||
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@types/estree': 1.0.5
|
||||
optionalDependencies:
|
||||
'@rollup/rollup-android-arm-eabi': 4.9.6
|
||||
'@rollup/rollup-android-arm64': 4.9.6
|
||||
'@rollup/rollup-darwin-arm64': 4.9.6
|
||||
'@rollup/rollup-darwin-x64': 4.9.6
|
||||
'@rollup/rollup-linux-arm-gnueabihf': 4.9.6
|
||||
'@rollup/rollup-linux-arm64-gnu': 4.9.6
|
||||
'@rollup/rollup-linux-arm64-musl': 4.9.6
|
||||
'@rollup/rollup-linux-riscv64-gnu': 4.9.6
|
||||
'@rollup/rollup-linux-x64-gnu': 4.9.6
|
||||
'@rollup/rollup-linux-x64-musl': 4.9.6
|
||||
'@rollup/rollup-win32-arm64-msvc': 4.9.6
|
||||
'@rollup/rollup-win32-ia32-msvc': 4.9.6
|
||||
'@rollup/rollup-win32-x64-msvc': 4.9.6
|
||||
'@rollup/rollup-android-arm-eabi': 4.10.0
|
||||
'@rollup/rollup-android-arm64': 4.10.0
|
||||
'@rollup/rollup-darwin-arm64': 4.10.0
|
||||
'@rollup/rollup-darwin-x64': 4.10.0
|
||||
'@rollup/rollup-linux-arm-gnueabihf': 4.10.0
|
||||
'@rollup/rollup-linux-arm64-gnu': 4.10.0
|
||||
'@rollup/rollup-linux-arm64-musl': 4.10.0
|
||||
'@rollup/rollup-linux-riscv64-gnu': 4.10.0
|
||||
'@rollup/rollup-linux-x64-gnu': 4.10.0
|
||||
'@rollup/rollup-linux-x64-musl': 4.10.0
|
||||
'@rollup/rollup-win32-arm64-msvc': 4.10.0
|
||||
'@rollup/rollup-win32-ia32-msvc': 4.10.0
|
||||
'@rollup/rollup-win32-x64-msvc': 4.10.0
|
||||
fsevents: 2.3.3
|
||||
dev: false
|
||||
|
||||
|
@ -4101,7 +4136,7 @@ packages:
|
|||
prebuild-install: 7.1.1
|
||||
semver: 7.6.0
|
||||
simple-get: 4.0.1
|
||||
tar-fs: 3.0.4
|
||||
tar-fs: 3.0.5
|
||||
tunnel-agent: 0.6.0
|
||||
dev: false
|
||||
optional: true
|
||||
|
@ -4240,12 +4275,14 @@ packages:
|
|||
- supports-color
|
||||
dev: false
|
||||
|
||||
/streamx@2.15.7:
|
||||
resolution: {integrity: sha512-NPEKS5+yjyo597eafGbKW5ujh7Sm6lDLHZQd/lRSz6S0VarpADBJItqfB4PnwpS+472oob1GX5cCY9vzfJpHUA==}
|
||||
/streamx@2.15.8:
|
||||
resolution: {integrity: sha512-6pwMeMY/SuISiRsuS8TeIrAzyFbG5gGPHFQsYjUr/pbBadaL1PCWmzKw+CHZSwainfvcF6Si6cVLq4XTEwswFQ==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
fast-fifo: 1.3.2
|
||||
queue-tick: 1.0.1
|
||||
optionalDependencies:
|
||||
bare-events: 2.2.0
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
|
@ -4358,16 +4395,16 @@ packages:
|
|||
engines: {node: '>= 0.4'}
|
||||
dev: false
|
||||
|
||||
/svelte-hmr@0.15.3(svelte@5.0.0-next.51):
|
||||
/svelte-hmr@0.15.3(svelte@5.0.0-next.52):
|
||||
resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==}
|
||||
engines: {node: ^12.20 || ^14.13.1 || >= 16}
|
||||
peerDependencies:
|
||||
svelte: ^3.19.0 || ^4.0.0
|
||||
dependencies:
|
||||
svelte: 5.0.0-next.51
|
||||
svelte: 5.0.0-next.52
|
||||
dev: false
|
||||
|
||||
/svelte2tsx@0.6.27(svelte@5.0.0-next.51)(typescript@5.3.3):
|
||||
/svelte2tsx@0.6.27(svelte@5.0.0-next.52)(typescript@5.3.3):
|
||||
resolution: {integrity: sha512-E1uPW1o6VsbRz+nUk3fznZ2lSmCITAJoNu8AYefWSvIwE2pSB01i5sId4RMbWNzfcwCQl1DcgGShCPcldl4rvg==}
|
||||
peerDependencies:
|
||||
svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0
|
||||
|
@ -4375,12 +4412,12 @@ packages:
|
|||
dependencies:
|
||||
dedent-js: 1.0.1
|
||||
pascal-case: 3.1.2
|
||||
svelte: 5.0.0-next.51
|
||||
svelte: 5.0.0-next.52
|
||||
typescript: 5.3.3
|
||||
dev: false
|
||||
|
||||
/svelte@5.0.0-next.51:
|
||||
resolution: {integrity: sha512-ZnHaCxbFdE4zEihtxt0vbw/ZiZbgm70krGj71bnYKERk0Djlq94cpgZRmqbR6grO1Ct9itRdtTwhu89OaHBnBg==}
|
||||
/svelte@5.0.0-next.52:
|
||||
resolution: {integrity: sha512-f7yhm97uEZx2QjLSMwlkq70nxepcaZ27FE+Hub1WTUuiRpigAs3y9M5x7abjJDbarp8604dBGNIe3Cp/5BRwAw==}
|
||||
engines: {node: '>=18'}
|
||||
dependencies:
|
||||
'@ampproject/remapping': 2.2.1
|
||||
|
@ -4419,13 +4456,15 @@ packages:
|
|||
dev: false
|
||||
optional: true
|
||||
|
||||
/tar-fs@3.0.4:
|
||||
resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==}
|
||||
/tar-fs@3.0.5:
|
||||
resolution: {integrity: sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
mkdirp-classic: 0.5.3
|
||||
pump: 3.0.0
|
||||
tar-stream: 3.1.7
|
||||
optionalDependencies:
|
||||
bare-fs: 2.1.3
|
||||
bare-path: 2.1.0
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
|
@ -4448,7 +4487,7 @@ packages:
|
|||
dependencies:
|
||||
b4a: 1.6.6
|
||||
fast-fifo: 1.3.2
|
||||
streamx: 2.15.7
|
||||
streamx: 2.15.8
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
|
@ -4694,8 +4733,8 @@ packages:
|
|||
vfile-message: 4.0.2
|
||||
dev: false
|
||||
|
||||
/vite@5.1.0(sass@1.70.0):
|
||||
resolution: {integrity: sha512-STmSFzhY4ljuhz14bg9LkMTk3d98IO6DIArnTY6MeBwiD1Za2StcQtz7fzOUnRCqrHSD5+OS2reg4HOz1eoLnw==}
|
||||
/vite@5.1.1(sass@1.70.0):
|
||||
resolution: {integrity: sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==}
|
||||
engines: {node: ^18.0.0 || >=20.0.0}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
|
@ -4724,13 +4763,13 @@ packages:
|
|||
dependencies:
|
||||
esbuild: 0.19.12
|
||||
postcss: 8.4.35
|
||||
rollup: 4.9.6
|
||||
rollup: 4.10.0
|
||||
sass: 1.70.0
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.3
|
||||
dev: false
|
||||
|
||||
/vitefu@0.2.5(vite@5.1.0):
|
||||
/vitefu@0.2.5(vite@5.1.1):
|
||||
resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==}
|
||||
peerDependencies:
|
||||
vite: ^3.0.0 || ^4.0.0 || ^5.0.0
|
||||
|
@ -4738,7 +4777,7 @@ packages:
|
|||
vite:
|
||||
optional: true
|
||||
dependencies:
|
||||
vite: 5.1.0(sass@1.70.0)
|
||||
vite: 5.1.1(sass@1.70.0)
|
||||
dev: false
|
||||
|
||||
/web-namespaces@2.0.1:
|
||||
|
@ -4853,3 +4892,9 @@ packages:
|
|||
/zwitch@2.0.4:
|
||||
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
|
||||
dev: false
|
||||
|
||||
file:../../Desktop/treesitter:
|
||||
resolution: {directory: ../../Desktop/treesitter, type: directory}
|
||||
name: treesitter
|
||||
engines: {node: '>= 10'}
|
||||
dev: true
|
||||
|
|
|
@ -83,7 +83,7 @@ One of the things which have helped me improve the state of my CSS stylesheets i
|
|||
|
||||
If we tried to rewrite the previous example into BEM, we could theoretically rewrite it as such:
|
||||
|
||||
```scss
|
||||
```scss
|
||||
.blog-post {
|
||||
...
|
||||
&--centered {
|
||||
|
@ -105,7 +105,7 @@ BEM could devolve into writing separate "blocks" for each HTML element. We could
|
|||
|
||||
One problem that I have personally encountered with BEM is not being able to figure out how to approach the fact that a single "block" can have multiple variants. For instance, we could have three cards, each containing slightly different content:
|
||||
|
||||
```html
|
||||
```html
|
||||
<aside>
|
||||
<section id="A" class="???">
|
||||
Card with some content
|
||||
|
|
89
src/styles/_kanagawa.scss
Normal file
89
src/styles/_kanagawa.scss
Normal file
|
@ -0,0 +1,89 @@
|
|||
:root {
|
||||
--kngw-fujiWhite: #DCD7BA; // Default foreground
|
||||
--kngw-oldForeground: #C8C093; // Dark foreground (statuslines)
|
||||
--kngw-sumiInk0: #16161D; // Dark background (statuslines and floating windows)
|
||||
--kngw-sumiInk1: #1F1F28; // Default background
|
||||
--kngw-sumiInk2: #2A2A37; // Lighter background (colorcolumn, folds)
|
||||
--kngw-sumiInk3: #363646; // Lighter background (cursorline)
|
||||
--kngw-sumiInk4: #54546D; // Darker foreground (line numbers, fold column, non-text characters), float borders
|
||||
--kngw-waveBlue1: #223249; // Popup background, visual selection background
|
||||
--kngw-waveBlue2: #2D4F67; // Popup selection background, search background
|
||||
--kngw-winterGreen: #2B3328; // Diff Add (background)
|
||||
--kngw-winterYellow: #49443C; // Diff Change (background)
|
||||
--kngw-winterRed: #43242B; // Diff Deleted (background)
|
||||
--kngw-winterBlue: #252535; // Diff Line (background)
|
||||
--kngw-autumnGreen: #76946A; // Git Add
|
||||
--kngw-autumnRed: #C34043; // Git Delete
|
||||
--kngw-autumnYellow: #DCA561; // Git Change
|
||||
--kngw-samuraiRed: #E82424; // Diagnostic Error
|
||||
--kngw-roninYellow: #FF9E3B; // Diagnostic Warning
|
||||
--kngw-waveAqua1: #6A9589; // Diagnostic Info
|
||||
--kngw-dragonBlue: #658594; // Diagnostic Hint
|
||||
--kngw-fujiGray: #727169; // Comments
|
||||
--kngw-springViolet1: #938AA9; // Light foreground
|
||||
--kngw-oniViolet: #957FB8; // Statements and Keywords
|
||||
--kngw-crystalBlue: #7E9CD8; // Functions and Titles
|
||||
--kngw-springViolet2: #9CABCA; // Brackets and punctuation
|
||||
--kngw-springBlue: #7FB4CA; // Specials and builtin functions
|
||||
--kngw-lightBlue: #A3D4D5; // Not used
|
||||
--kngw-waveAqua2: #7AA89F; // Types
|
||||
--kngw-springGreen: #98BB6C; // Strings
|
||||
--kngw-boatYellow1: #938056; // Not used
|
||||
--kngw-boatYellow2: #C0A36E; // Operators, RegEx
|
||||
--kngw-carpYellow: #E6C384; // Identifiers
|
||||
--kngw-sakuraPink: #D27E99; // Numbers
|
||||
--kngw-waveRed: #E46876; // Standout specials 1 (builtin variables)
|
||||
--kngw-peachRed: #FF5D62; // Standout specials 2 (exception handling, return)
|
||||
--kngw-surimiOrange: #FFA066; // Constants, imports, booleans
|
||||
--kngw-katanaGray: #717C7C; // Deprecated
|
||||
}
|
||||
|
||||
.kanagawa {
|
||||
background-color: var(--kngw-sumiInk1);
|
||||
color: var(--kngw-fujiWhite);
|
||||
|
||||
.string {
|
||||
color: var(--kngw-springGreen);
|
||||
}
|
||||
|
||||
.type, .type-builtin {
|
||||
color: var(--kngw-waveAqua2);
|
||||
}
|
||||
|
||||
.keyword {
|
||||
color: var(--kngw-oniViolet);
|
||||
}
|
||||
|
||||
.constructor {
|
||||
color: var(--kngw-springBlue);
|
||||
}
|
||||
|
||||
.tag {
|
||||
color: var(--kngw-springBlue);
|
||||
}
|
||||
|
||||
.variable {
|
||||
color: var(--kngw-fujiWhite);
|
||||
}
|
||||
|
||||
.operator, .string-special {
|
||||
color: var(--kngw-boatYellow2);
|
||||
}
|
||||
|
||||
.comment {
|
||||
color: var(--kngw-fujiGray);
|
||||
}
|
||||
|
||||
.include {
|
||||
color: var(--kngw-oniViolet);
|
||||
}
|
||||
|
||||
.function {
|
||||
color: var(--kngw-crystalBlue);
|
||||
}
|
||||
|
||||
.property, .attribute {
|
||||
color: var(--kngw-carpYellow);
|
||||
}
|
||||
}
|
||||
|
|
@ -4,6 +4,7 @@
|
|||
@use 'fonts';
|
||||
@use 'base';
|
||||
@use 'markdown';
|
||||
@use 'kanagawa';
|
||||
|
||||
// Components
|
||||
@use 'components/map';
|
||||
|
|
59
src/utils/treesitter.ts
Normal file
59
src/utils/treesitter.ts
Normal file
|
@ -0,0 +1,59 @@
|
|||
import * as treesitter from '../../tools/treesitter/dist/index.js';
|
||||
import { visit } from 'unist-util-visit';
|
||||
|
||||
|
||||
function text(value: string) {
|
||||
return {
|
||||
type: 'text',
|
||||
value,
|
||||
}
|
||||
}
|
||||
|
||||
function span(classes: string[], value: string) {
|
||||
return {
|
||||
type: 'element',
|
||||
tagName: 'span',
|
||||
properties: {
|
||||
className: classes.map(c => c.replace('.', '-')).join(' '),
|
||||
},
|
||||
children: [
|
||||
text(value),
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export default function rehypeTreesitter() {
|
||||
return function (tree: any) {
|
||||
visit(tree, null, (node, _, parent) => {
|
||||
if (node.tagName !== 'code' || parent.tagName !== 'pre') return;
|
||||
parent.properties.className = ['kanagawa'];
|
||||
|
||||
const code = node.children?.[0].value;
|
||||
const lang = node.properties.className?.[0].replace('language-', '');
|
||||
if (!lang || !code) return;
|
||||
|
||||
const stack: string[] = [];
|
||||
const children = (node.children = [] as any[] );
|
||||
const events = treesitter.hl(lang, code);
|
||||
|
||||
for (const event of events) {
|
||||
switch (event.kind) {
|
||||
case 'text': {
|
||||
const child = (stack.length)
|
||||
? span(stack, event.text)
|
||||
: text(event.text);
|
||||
children.push(child);
|
||||
} break;
|
||||
case 'open': {
|
||||
stack.push(event.name);
|
||||
} break;
|
||||
case 'close': {
|
||||
stack.pop();
|
||||
} break;
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
|
2
tools/treesitter/.cargo/config.toml
Normal file
2
tools/treesitter/.cargo/config.toml
Normal file
|
@ -0,0 +1,2 @@
|
|||
[target.x86_64-pc-windows-msvc]
|
||||
rustflags = ["-C", "target-feature=+crt-static"]
|
197
tools/treesitter/.gitignore
vendored
Normal file
197
tools/treesitter/.gitignore
vendored
Normal file
|
@ -0,0 +1,197 @@
|
|||
# Created by https://www.toptal.com/developers/gitignore/api/node
|
||||
# Edit at https://www.toptal.com/developers/gitignore?templates=node
|
||||
|
||||
### Node ###
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# TypeScript v1 declaration files
|
||||
typings/
|
||||
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Microbundle cache
|
||||
.rpt2_cache/
|
||||
.rts2_cache_cjs/
|
||||
.rts2_cache_es/
|
||||
.rts2_cache_umd/
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
.env
|
||||
.env.test
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
|
||||
# Next.js build output
|
||||
.next
|
||||
|
||||
# Nuxt.js build / generate output
|
||||
.nuxt
|
||||
dist
|
||||
|
||||
# Gatsby files
|
||||
.cache/
|
||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||
# public
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
|
||||
# TernJS port file
|
||||
.tern-port
|
||||
|
||||
# Stores VSCode versions used for testing VSCode extensions
|
||||
.vscode-test
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/node
|
||||
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/macos
|
||||
# Edit at https://www.toptal.com/developers/gitignore?templates=macos
|
||||
|
||||
### macOS ###
|
||||
# General
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
# Icon must end with two
|
||||
Icon
|
||||
|
||||
|
||||
# Thumbnails
|
||||
._*
|
||||
|
||||
# Files that might appear in the root of a volume
|
||||
.DocumentRevisions-V100
|
||||
.fseventsd
|
||||
.Spotlight-V100
|
||||
.TemporaryItems
|
||||
.Trashes
|
||||
.VolumeIcon.icns
|
||||
.com.apple.timemachine.donotpresent
|
||||
|
||||
# Directories potentially created on remote AFP share
|
||||
.AppleDB
|
||||
.AppleDesktop
|
||||
Network Trash Folder
|
||||
Temporary Items
|
||||
.apdisk
|
||||
|
||||
### macOS Patch ###
|
||||
# iCloud generated files
|
||||
*.icloud
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/macos
|
||||
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/windows
|
||||
# Edit at https://www.toptal.com/developers/gitignore?templates=windows
|
||||
|
||||
### Windows ###
|
||||
# Windows thumbnail cache files
|
||||
Thumbs.db
|
||||
Thumbs.db:encryptable
|
||||
ehthumbs.db
|
||||
ehthumbs_vista.db
|
||||
|
||||
# Dump file
|
||||
*.stackdump
|
||||
|
||||
# Folder config file
|
||||
[Dd]esktop.ini
|
||||
|
||||
# Recycle Bin used on file shares
|
||||
$RECYCLE.BIN/
|
||||
|
||||
# Windows Installer files
|
||||
*.cab
|
||||
*.msi
|
||||
*.msix
|
||||
*.msm
|
||||
*.msp
|
||||
|
||||
# Windows shortcuts
|
||||
*.lnk
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/windows
|
||||
|
||||
#Added by cargo
|
||||
|
||||
/target
|
||||
Cargo.lock
|
||||
|
||||
.pnp.*
|
||||
.yarn/*
|
||||
!.yarn/patches
|
||||
!.yarn/plugins
|
||||
!.yarn/releases
|
||||
!.yarn/sdks
|
||||
!.yarn/versions
|
||||
|
||||
*.node
|
33
tools/treesitter/Cargo.toml
Normal file
33
tools/treesitter/Cargo.toml
Normal file
|
@ -0,0 +1,33 @@
|
|||
[package]
|
||||
edition = "2021"
|
||||
name = "treesitter"
|
||||
version = "0.0.0"
|
||||
|
||||
[lib]
|
||||
crate-type = ["cdylib"]
|
||||
|
||||
[dependencies]
|
||||
# Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix
|
||||
napi = { version = "2.12.2", default-features = false, features = ["napi4"] }
|
||||
napi-derive = "2.12.2"
|
||||
once_cell = "1.19.0"
|
||||
|
||||
# Treesitter
|
||||
tree-sitter = "0.20.10"
|
||||
tree-sitter-highlight = "0.20.1"
|
||||
|
||||
# Languages
|
||||
tree-sitter-css = "0.20.0"
|
||||
tree-sitter-haskell = { git = "https://github.com/tree-sitter/tree-sitter-haskell", rev = "cf98de23e4285b8e6bcb57b050ef2326e2cc284b" }
|
||||
tree-sitter-html = "0.20.0"
|
||||
tree-sitter-javascript = "0.20.3"
|
||||
tree-sitter-md = "0.1.7"
|
||||
tree-sitter-rust = "0.20.4"
|
||||
tree-sitter-typescript = "0.20.5"
|
||||
|
||||
[build-dependencies]
|
||||
napi-build = "2.0.1"
|
||||
|
||||
[profile.release]
|
||||
lto = true
|
||||
strip = "symbols"
|
5
tools/treesitter/build.rs
Normal file
5
tools/treesitter/build.rs
Normal file
|
@ -0,0 +1,5 @@
|
|||
extern crate napi_build;
|
||||
|
||||
fn main() {
|
||||
napi_build::setup();
|
||||
}
|
3
tools/treesitter/npm/darwin-x64/README.md
Normal file
3
tools/treesitter/npm/darwin-x64/README.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
# `xd-darwin-x64`
|
||||
|
||||
This is the **x86_64-apple-darwin** binary for `xd`
|
18
tools/treesitter/npm/darwin-x64/package.json
Normal file
18
tools/treesitter/npm/darwin-x64/package.json
Normal file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"name": "xd-darwin-x64",
|
||||
"version": "0.0.0",
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"main": "xd.darwin-x64.node",
|
||||
"files": [
|
||||
"xd.darwin-x64.node"
|
||||
],
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 10"
|
||||
}
|
||||
}
|
3
tools/treesitter/npm/linux-x64-gnu/README.md
Normal file
3
tools/treesitter/npm/linux-x64-gnu/README.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
# `xd-linux-x64-gnu`
|
||||
|
||||
This is the **x86_64-unknown-linux-gnu** binary for `xd`
|
21
tools/treesitter/npm/linux-x64-gnu/package.json
Normal file
21
tools/treesitter/npm/linux-x64-gnu/package.json
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"name": "xd-linux-x64-gnu",
|
||||
"version": "0.0.0",
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"main": "xd.linux-x64-gnu.node",
|
||||
"files": [
|
||||
"xd.linux-x64-gnu.node"
|
||||
],
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 10"
|
||||
},
|
||||
"libc": [
|
||||
"glibc"
|
||||
]
|
||||
}
|
3
tools/treesitter/npm/win32-x64-msvc/README.md
Normal file
3
tools/treesitter/npm/win32-x64-msvc/README.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
# `xd-win32-x64-msvc`
|
||||
|
||||
This is the **x86_64-pc-windows-msvc** binary for `xd`
|
18
tools/treesitter/npm/win32-x64-msvc/package.json
Normal file
18
tools/treesitter/npm/win32-x64-msvc/package.json
Normal file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"name": "xd-win32-x64-msvc",
|
||||
"version": "0.0.0",
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"main": "xd.win32-x64-msvc.node",
|
||||
"files": [
|
||||
"xd.win32-x64-msvc.node"
|
||||
],
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 10"
|
||||
}
|
||||
}
|
28
tools/treesitter/package.json
Normal file
28
tools/treesitter/package.json
Normal file
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
"name": "treesitter",
|
||||
"version": "0.0.0",
|
||||
"main": "index.js",
|
||||
"types": "index.d.ts",
|
||||
"napi": {
|
||||
"name": "treesitter",
|
||||
"triples": {
|
||||
"defaults": false
|
||||
}
|
||||
},
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@napi-rs/cli": "^2.18.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10"
|
||||
},
|
||||
"scripts": {
|
||||
"artifacts": "napi artifacts",
|
||||
"build": "napi build dist --platform --js false --release",
|
||||
"debug": "napi build dist --platform --js false",
|
||||
"prepublishOnly": "napi prepublish -t npm",
|
||||
"universal": "napi universal",
|
||||
"version": "napi version"
|
||||
},
|
||||
"type": "module"
|
||||
}
|
18
tools/treesitter/pnpm-lock.yaml
Normal file
18
tools/treesitter/pnpm-lock.yaml
Normal file
|
@ -0,0 +1,18 @@
|
|||
lockfileVersion: '6.0'
|
||||
|
||||
settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
devDependencies:
|
||||
'@napi-rs/cli':
|
||||
specifier: ^2.18.0
|
||||
version: 2.18.0
|
||||
|
||||
packages:
|
||||
|
||||
/@napi-rs/cli@2.18.0:
|
||||
resolution: {integrity: sha512-lfSRT7cs3iC4L+kv9suGYQEezn5Nii7Kpu+THsYVI0tA1Vh59LH45p4QADaD7hvIkmOz79eEGtoKQ9nAkAPkzA==}
|
||||
engines: {node: '>= 10'}
|
||||
hasBin: true
|
||||
dev: true
|
156
tools/treesitter/src/configs.rs
Normal file
156
tools/treesitter/src/configs.rs
Normal file
|
@ -0,0 +1,156 @@
|
|||
use std::collections::HashMap;
|
||||
use std::sync::Arc;
|
||||
use once_cell::sync::Lazy;
|
||||
use tree_sitter_highlight::HighlightConfiguration;
|
||||
|
||||
|
||||
pub const NAMES: &[&str] = &[
|
||||
"comment",
|
||||
|
||||
"attribute",
|
||||
"carriage-return",
|
||||
"comment",
|
||||
"comment.documentation",
|
||||
"constant",
|
||||
"constant.builtin",
|
||||
"constructor",
|
||||
"constructor.builtin",
|
||||
"embedded",
|
||||
"error",
|
||||
"escape",
|
||||
"function",
|
||||
"function.builtin",
|
||||
"include",
|
||||
"keyword",
|
||||
"markup",
|
||||
"markup.bold",
|
||||
"markup.heading",
|
||||
"markup.italic",
|
||||
"markup.link",
|
||||
"markup.link.url",
|
||||
"markup.list",
|
||||
"markup.list.checked",
|
||||
"markup.list.numbered",
|
||||
"markup.list.unchecked",
|
||||
"markup.list.unnumbered",
|
||||
"markup.quote",
|
||||
"markup.raw",
|
||||
"markup.raw.block",
|
||||
"markup.raw.inline",
|
||||
"markup.strikethrough",
|
||||
"module",
|
||||
"number",
|
||||
"operator",
|
||||
"property",
|
||||
"property.builtin",
|
||||
"punctuation",
|
||||
"punctuation.bracket",
|
||||
"punctuation.delimiter",
|
||||
"punctuation.special",
|
||||
"string",
|
||||
"string.escape",
|
||||
"string.regexp",
|
||||
"string.special",
|
||||
"string.special.symbol",
|
||||
"tag",
|
||||
"type",
|
||||
"type.builtin",
|
||||
"variable",
|
||||
"variable.builtin",
|
||||
"variable.member",
|
||||
"variable.parameter",
|
||||
];
|
||||
|
||||
|
||||
pub static CONFIGS: Lazy<HashMap<&'static str, Arc<HighlightConfiguration>>> = Lazy::new(|| {
|
||||
[
|
||||
(
|
||||
vec!["css", "scss"],
|
||||
HighlightConfiguration::new(
|
||||
tree_sitter_css::language(),
|
||||
tree_sitter_css::HIGHLIGHTS_QUERY,
|
||||
"",
|
||||
"",
|
||||
).unwrap()
|
||||
),
|
||||
(
|
||||
vec!["hs", "haskell"],
|
||||
HighlightConfiguration::new(
|
||||
tree_sitter_haskell::language(),
|
||||
tree_sitter_haskell::HIGHLIGHTS_QUERY,
|
||||
"",
|
||||
tree_sitter_haskell::LOCALS_QUERY,
|
||||
).unwrap()
|
||||
),
|
||||
(
|
||||
vec!["html", "html"],
|
||||
HighlightConfiguration::new(
|
||||
tree_sitter_html::language(),
|
||||
tree_sitter_html::HIGHLIGHTS_QUERY,
|
||||
tree_sitter_html::INJECTIONS_QUERY,
|
||||
"",
|
||||
).unwrap()
|
||||
),
|
||||
(
|
||||
vec!["md", "markdown"],
|
||||
HighlightConfiguration::new(
|
||||
tree_sitter_md::language(),
|
||||
// &format!("{}\n\n{}",
|
||||
tree_sitter_md::HIGHLIGHT_QUERY_BLOCK,
|
||||
// tree_sitter_md::HIGHLIGHT_QUERY_INLINE,
|
||||
// ),
|
||||
// &format!("{}\n\n{}",
|
||||
tree_sitter_md::INJECTION_QUERY_BLOCK,
|
||||
// tree_sitter_md::INJECTION_QUERY_INLINE,
|
||||
// ),
|
||||
""
|
||||
).unwrap()
|
||||
),
|
||||
(
|
||||
vec!["rs", "rust"],
|
||||
HighlightConfiguration::new(
|
||||
tree_sitter_rust::language(),
|
||||
tree_sitter_rust::HIGHLIGHT_QUERY,
|
||||
tree_sitter_rust::INJECTIONS_QUERY,
|
||||
"",
|
||||
).unwrap()
|
||||
),
|
||||
(
|
||||
vec!["js", "javascript"],
|
||||
HighlightConfiguration::new(
|
||||
tree_sitter_javascript::language(),
|
||||
tree_sitter_javascript::HIGHLIGHT_QUERY,
|
||||
tree_sitter_javascript::INJECTION_QUERY,
|
||||
tree_sitter_javascript::LOCALS_QUERY,
|
||||
).unwrap()
|
||||
),
|
||||
(
|
||||
vec!["jsx"],
|
||||
HighlightConfiguration::new(
|
||||
tree_sitter_javascript::language(),
|
||||
tree_sitter_javascript::JSX_HIGHLIGHT_QUERY,
|
||||
tree_sitter_javascript::INJECTION_QUERY,
|
||||
tree_sitter_javascript::LOCALS_QUERY,
|
||||
).unwrap()
|
||||
),
|
||||
(
|
||||
vec!["ts", "typescript"],
|
||||
HighlightConfiguration::new(
|
||||
tree_sitter_typescript::language_typescript(),
|
||||
&format!("{}\n\n{}",
|
||||
tree_sitter_javascript::HIGHLIGHT_QUERY,
|
||||
tree_sitter_typescript::HIGHLIGHT_QUERY
|
||||
),
|
||||
tree_sitter_javascript::INJECTION_QUERY,
|
||||
tree_sitter_typescript::LOCALS_QUERY,
|
||||
).unwrap()
|
||||
),
|
||||
]
|
||||
.into_iter()
|
||||
.flat_map(|(keys, mut config)| {
|
||||
config.configure(NAMES);
|
||||
let config = Arc::new(config);
|
||||
keys.into_iter().map(move |key| (key, config.clone()))
|
||||
})
|
||||
.collect()
|
||||
});
|
54
tools/treesitter/src/lib.rs
Normal file
54
tools/treesitter/src/lib.rs
Normal file
|
@ -0,0 +1,54 @@
|
|||
#![deny(clippy::all)]
|
||||
mod configs;
|
||||
|
||||
use std::collections::HashMap;
|
||||
use tree_sitter_highlight::Highlighter;
|
||||
use tree_sitter_highlight::HighlightEvent;
|
||||
use configs::{CONFIGS, NAMES};
|
||||
|
||||
|
||||
#[macro_use]
|
||||
extern crate napi_derive;
|
||||
|
||||
|
||||
#[napi]
|
||||
pub fn hl(lang: String, src: String) -> Vec<HashMap<String, String>> {
|
||||
let config = match CONFIGS.get(&*lang) {
|
||||
Some(c) => c,
|
||||
None => return vec![
|
||||
HashMap::from([
|
||||
("kind".into(), "text".into()),
|
||||
("text".into(), src.into())
|
||||
])
|
||||
]
|
||||
};
|
||||
|
||||
|
||||
let mut highlighter = Highlighter::new();
|
||||
let highlights = highlighter.highlight(
|
||||
&config,
|
||||
src.as_bytes(),
|
||||
None,
|
||||
|key| CONFIGS.get(key).map(|arc| arc.as_ref())
|
||||
).unwrap();
|
||||
|
||||
let mut out = vec![];
|
||||
for event in highlights {
|
||||
match event.unwrap() {
|
||||
HighlightEvent::Source {start, end} => out.push(HashMap::from([
|
||||
("kind".into(), "text".into()),
|
||||
("text".into(), src[start..end].into())
|
||||
])),
|
||||
HighlightEvent::HighlightStart(s) => out.push(HashMap::from([
|
||||
("kind".into(), "open".into()),
|
||||
("name".into(), NAMES[s.0].into())
|
||||
])),
|
||||
HighlightEvent::HighlightEnd => out.push(HashMap::from([
|
||||
("kind".into(), "close".into())
|
||||
]))
|
||||
}
|
||||
}
|
||||
|
||||
out
|
||||
}
|
||||
|
Loading…
Reference in a new issue