diff --git a/.changeset/cyan-berries-wear.md b/.changeset/cyan-berries-wear.md
new file mode 100644
index 0000000..c2eac51
--- /dev/null
+++ b/.changeset/cyan-berries-wear.md
@@ -0,0 +1,5 @@
+---
+"@sweetcorn/astro": minor
+---
+
+Adds proper types for the `dither` prop in Astro’s image APIs. Requires Astro 5.16.6 or higher.
diff --git a/.changeset/goofy-trains-joke.md b/.changeset/goofy-trains-joke.md
new file mode 100644
index 0000000..f464bdc
--- /dev/null
+++ b/.changeset/goofy-trains-joke.md
@@ -0,0 +1,9 @@
+---
+"@sweetcorn/astro": minor
+---
+
+Exports a type to help with typing code that interfaces with the `dither` prop:
+
+```ts
+import type { DitheringAlgorithm } from '@sweetcorn/astro';
+```
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 51830c6..6c99a4b 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -31,3 +31,27 @@ jobs:
- name: Run tests
run: pnpm -r test
+
+ typecheck:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ with:
+ persist-credentials: false
+
+ - name: Setup pnpm
+ uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0
+
+ - name: Setup Node.js
+ uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
+ with:
+ node-version: 24.12.0
+ cache: pnpm
+
+ - name: Install dependencies
+ run: pnpm install
+
+ - name: Type check docs
+ run: pnpm %docs astro check
diff --git a/docs/package.json b/docs/package.json
index b501817..4fdd598 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -13,12 +13,14 @@
"astro": "astro"
},
"dependencies": {
+ "@astrojs/check": "^0.9.6",
"@astrojs/starlight": "^0.37.1",
"@sweetcorn/astro": "workspace:*",
"astro": "^5.16.6",
"sharp": "^0.34.5",
"starlight-package-managers": "^0.11.1",
- "starlight-theme-flexoki": "^0.2.1"
+ "starlight-theme-flexoki": "^0.2.1",
+ "typescript": "^5.9.3"
},
"private": true
}
diff --git a/docs/src/components/AlgorithmDemo.astro b/docs/src/components/AlgorithmDemo.astro
index af6b13f..fcddc8c 100644
--- a/docs/src/components/AlgorithmDemo.astro
+++ b/docs/src/components/AlgorithmDemo.astro
@@ -1,4 +1,5 @@
---
+import type { DitheringAlgorithm } from '@sweetcorn/astro';
import { Image } from 'astro:assets';
import diffusionKernels from '../../../packages/sweetcorn/src/diffusion-kernels.ts';
import thresholdMaps from '../../../packages/sweetcorn/src/threshold-maps.json';
@@ -23,7 +24,7 @@ const algorithms = {
{algorithm}
-
+
))
}
diff --git a/docs/src/content/docs/guides/astro.mdx b/docs/src/content/docs/guides/astro.mdx
index c5dd267..a5ace2d 100644
--- a/docs/src/content/docs/guides/astro.mdx
+++ b/docs/src/content/docs/guides/astro.mdx
@@ -165,3 +165,36 @@ You can then use your custom diffusion kernels using the `dither` prop:
```
See [“Error diffusion dithering”](/sweetcorn/guides/byo-algorithm/#error-diffusion-dithering) for more details.
+
+## Types
+
+### `DitheringAlgorithm` type
+
+```ts
+import type { DitheringAlgorithm } from '@sweetcorn/astro';
+```
+
+The `DitheringAlgorithm` type represents all valid algorithms that can be passed to the `dither` prop in Astro’s image APIs.
+It can be helpful when typing a component that accepts a dither algorithm as a prop:
+
+```astro {3,8}
+---
+// src/components/DitheredFigure.astro
+import type { DitheringAlgorithm } from '@sweetcorn/astro';
+import type { ImageMetadata } from 'astro';
+import { Image } from 'astro:assets';
+
+interface Props {
+ algorithm: DitheringAlgorithm;
+ image: ImageMetadata;
+}
+
+const { algorithm, image } = Astro.props;
+---
+
+
+
+
+
+
+```
diff --git a/packages/astro/image-props.d.ts b/packages/astro/image-props.d.ts
new file mode 100644
index 0000000..b1a3dfb
--- /dev/null
+++ b/packages/astro/image-props.d.ts
@@ -0,0 +1,19 @@
+declare namespace Astro {
+ interface CustomImageProps {
+ /** Dither this image with the specified algorithm. Set to `false` to disable dithering. */
+ dither?:
+ | import('sweetcorn').DitheringAlgorithm
+ | false
+ | (keyof Sweetcorn.Astro extends never ? never : Sweetcorn.Astro['CustomAlgorithms']);
+ }
+}
+
+declare namespace Sweetcorn {
+ export interface Astro {
+ /**
+ * We don’t define this here to allow us to later set it during Astro’s type generation based
+ * on a user’s provided custom algorithms.
+ */
+ // CustomAlgorithms: never;
+ }
+}
diff --git a/packages/astro/index.ts b/packages/astro/index.ts
index 0f1d117..ecf8271 100644
--- a/packages/astro/index.ts
+++ b/packages/astro/index.ts
@@ -1,6 +1,10 @@
+///
+
import type { AstroIntegration } from 'astro';
import type { SweetcornImageConfig } from './types';
+export type DitheringAlgorithm = Exclude;
+
export default function sweetcornAstro(
config: SweetcornImageConfig = {}
) {
@@ -27,6 +31,29 @@ export default function sweetcornAstro 0) {
+ injectTypes({
+ filename: 'custom-algorithms.d.ts',
+ content:
+ 'declare namespace Sweetcorn {\n' +
+ ' export interface Astro {\n' +
+ ' /** Custom dithering algorithms provided by the user. */\n' +
+ ` CustomAlgorithms: ${customAlgorithms.map((a) => JSON.stringify(a)).join(' | ')};\n` +
+ ' }\n' +
+ '}',
+ });
+ }
+ },
},
} satisfies AstroIntegration;
}
diff --git a/packages/astro/package.json b/packages/astro/package.json
index 5c3c67c..4583cde 100644
--- a/packages/astro/package.json
+++ b/packages/astro/package.json
@@ -23,7 +23,7 @@
"sharp": "^0.34.5"
},
"peerDependencies": {
- "astro": "^5.16.5",
+ "astro": "^5.16.6",
"sharp": ">=0.33.0"
},
"publishConfig": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6a1bdd1..b61e957 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -17,24 +17,30 @@ importers:
docs:
dependencies:
+ '@astrojs/check':
+ specifier: ^0.9.6
+ version: 0.9.6(prettier@3.7.4)(typescript@5.9.3)
'@astrojs/starlight':
specifier: ^0.37.1
- version: 0.37.1(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3))
+ version: 0.37.1(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2))
'@sweetcorn/astro':
specifier: workspace:*
version: link:../packages/astro
astro:
specifier: ^5.16.6
- version: 5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)
+ version: 5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)
sharp:
specifier: ^0.34.5
version: 0.34.5
starlight-package-managers:
specifier: ^0.11.1
- version: 0.11.1(@astrojs/starlight@0.37.1(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)))
+ version: 0.11.1(@astrojs/starlight@0.37.1(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)))
starlight-theme-flexoki:
specifier: ^0.2.1
- version: 0.2.1(@astrojs/starlight@0.37.1(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)))
+ version: 0.2.1(@astrojs/starlight@0.37.1(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)))
+ typescript:
+ specifier: ^5.9.3
+ version: 5.9.3
packages/astro:
dependencies:
@@ -44,7 +50,7 @@ importers:
devDependencies:
astro:
specifier: ^5.16.6
- version: 5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)
+ version: 5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)
sharp:
specifier: ^0.34.5
version: 0.34.5
@@ -60,12 +66,30 @@ importers:
packages:
+ '@astrojs/check@0.9.6':
+ resolution: {integrity: sha512-jlaEu5SxvSgmfGIFfNgcn5/f+29H61NJzEMfAZ82Xopr4XBchXB1GVlcJsE+elUlsYSbXlptZLX+JMG3b/wZEA==}
+ hasBin: true
+ peerDependencies:
+ typescript: ^5.0.0
+
'@astrojs/compiler@2.13.0':
resolution: {integrity: sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw==}
'@astrojs/internal-helpers@0.7.5':
resolution: {integrity: sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==}
+ '@astrojs/language-server@2.16.2':
+ resolution: {integrity: sha512-J3hVx/mFi3FwEzKf8ExYXQNERogD6RXswtbU+TyrxoXRBiQoBO5ooo7/lRWJ+rlUKUd7+rziMPI9jYB7TRlh0w==}
+ hasBin: true
+ peerDependencies:
+ prettier: ^3.0.0
+ prettier-plugin-astro: '>=0.11.0'
+ peerDependenciesMeta:
+ prettier:
+ optional: true
+ prettier-plugin-astro:
+ optional: true
+
'@astrojs/markdown-remark@6.3.10':
resolution: {integrity: sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==}
@@ -91,6 +115,9 @@ packages:
resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==}
engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0}
+ '@astrojs/yaml2ts@0.2.2':
+ resolution: {integrity: sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==}
+
'@babel/helper-string-parser@7.27.1':
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
engines: {node: '>=6.9.0'}
@@ -181,6 +208,27 @@ packages:
resolution: {integrity: sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==}
engines: {node: '>=14'}
+ '@emmetio/abbreviation@2.3.3':
+ resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==}
+
+ '@emmetio/css-abbreviation@2.1.8':
+ resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==}
+
+ '@emmetio/css-parser@0.4.1':
+ resolution: {integrity: sha512-2bC6m0MV/voF4CTZiAbG5MWKbq5EBmDPKu9Sb7s7nVcEzNQlrZP6mFFFlIaISM8X6514H9shWMme1fCm8cWAfQ==}
+
+ '@emmetio/html-matcher@1.3.0':
+ resolution: {integrity: sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==}
+
+ '@emmetio/scanner@1.0.4':
+ resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==}
+
+ '@emmetio/stream-reader-utils@0.1.0':
+ resolution: {integrity: sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==}
+
+ '@emmetio/stream-reader@2.2.0':
+ resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==}
+
'@emnapi/runtime@1.7.1':
resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
@@ -752,6 +800,32 @@ packages:
'@ungap/structured-clone@1.3.0':
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
+ '@volar/kit@2.4.27':
+ resolution: {integrity: sha512-ilZoQDMLzqmSsImJRWx4YiZ4FcvvPrPnFVmL6hSsIWB6Bn3qc7k88J9yP32dagrs5Y8EXIlvvD/mAFaiuEOACQ==}
+ peerDependencies:
+ typescript: '*'
+
+ '@volar/language-core@2.4.27':
+ resolution: {integrity: sha512-DjmjBWZ4tJKxfNC1F6HyYERNHPYS7L7OPFyCrestykNdUZMFYzI9WTyvwPcaNaHlrEUwESHYsfEw3isInncZxQ==}
+
+ '@volar/language-server@2.4.27':
+ resolution: {integrity: sha512-SymGNkErcHg8GjiG65iQN8sLkhqu1pwKhFySmxeBuYq5xFYagKBW36eiNITXQTdvT0tutI1GXcXdq/FdE/IyjA==}
+
+ '@volar/language-service@2.4.27':
+ resolution: {integrity: sha512-SxKZ8yLhpWa7Y5e/RDxtNfm7j7xsXp/uf2urijXEffRNpPSmVdfzQrFFy5d7l8PNpZy+bHg+yakmqBPjQN+MOw==}
+
+ '@volar/source-map@2.4.27':
+ resolution: {integrity: sha512-ynlcBReMgOZj2i6po+qVswtDUeeBRCTgDurjMGShbm8WYZgJ0PA4RmtebBJ0BCYol1qPv3GQF6jK7C9qoVc7lg==}
+
+ '@volar/typescript@2.4.27':
+ resolution: {integrity: sha512-eWaYCcl/uAPInSK2Lze6IqVWaBu/itVqR5InXcHXFyles4zO++Mglt3oxdgj75BDcv1Knr9Y93nowS8U3wqhxg==}
+
+ '@vscode/emmet-helper@2.11.0':
+ resolution: {integrity: sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==}
+
+ '@vscode/l10n@0.0.18':
+ resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==}
+
acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
@@ -762,6 +836,17 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
+ ajv-draft-04@1.0.0:
+ resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==}
+ peerDependencies:
+ ajv: ^8.5.0
+ peerDependenciesMeta:
+ ajv:
+ optional: true
+
+ ajv@8.17.1:
+ resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
+
ansi-align@3.0.1:
resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
@@ -777,6 +862,10 @@ packages:
resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
engines: {node: '>=12'}
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
ansi-styles@6.2.3:
resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
engines: {node: '>=12'}
@@ -898,6 +987,10 @@ packages:
resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
engines: {node: '>=10'}
+ cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+
clone@2.1.2:
resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
engines: {node: '>=0.8'}
@@ -909,6 +1002,13 @@ packages:
collapse-white-space@2.1.0:
resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==}
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
comma-separated-tokens@2.0.3:
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
@@ -1042,6 +1142,9 @@ packages:
resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==}
engines: {node: '>=4'}
+ emmet@2.4.11:
+ resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==}
+
emoji-regex@10.6.0:
resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
@@ -1074,6 +1177,10 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
escape-string-regexp@5.0.0:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'}
@@ -1126,6 +1233,9 @@ packages:
resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
engines: {node: '>=8.6.0'}
+ fast-uri@3.1.0:
+ resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
+
fastq@1.19.1:
resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
@@ -1169,6 +1279,10 @@ packages:
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
+ get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+
get-east-asian-width@1.4.0:
resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==}
engines: {node: '>=18'}
@@ -1351,6 +1465,15 @@ packages:
resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
hasBin: true
+ json-schema-traverse@1.0.0:
+ resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+
+ jsonc-parser@2.3.1:
+ resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==}
+
+ jsonc-parser@3.3.1:
+ resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==}
+
jsonfile@4.0.0:
resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
@@ -1358,6 +1481,10 @@ packages:
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
engines: {node: '>=6'}
+ kleur@4.1.5:
+ resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+ engines: {node: '>=6'}
+
klona@2.0.6:
resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==}
engines: {node: '>= 8'}
@@ -1369,6 +1496,9 @@ packages:
lodash.startcase@4.4.0:
resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
+ lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+
longest-streak@3.1.0:
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
@@ -1575,6 +1705,9 @@ packages:
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ muggle-string@0.4.1:
+ resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==}
+
nanoid@3.3.11:
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -1678,6 +1811,9 @@ packages:
parse5@7.3.0:
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
+ path-browserify@1.0.1:
+ resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
+
path-exists@4.0.0:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
@@ -1727,6 +1863,11 @@ packages:
engines: {node: '>=10.13.0'}
hasBin: true
+ prettier@3.7.4:
+ resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==}
+ engines: {node: '>=14'}
+ hasBin: true
+
prismjs@1.30.0:
resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==}
engines: {node: '>=6'}
@@ -1821,6 +1962,20 @@ packages:
remark-stringify@11.0.0:
resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
+ request-light@0.5.8:
+ resolution: {integrity: sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==}
+
+ request-light@0.7.0:
+ resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==}
+
+ require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+
+ require-from-string@2.0.2:
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
+
resolve-from@5.0.0:
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
engines: {node: '>=8'}
@@ -2009,6 +2164,12 @@ packages:
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'}
+ typesafe-path@0.2.2:
+ resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==}
+
+ typescript-auto-import-cache@0.3.6:
+ resolution: {integrity: sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==}
+
typescript@5.9.3:
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
engines: {node: '>=14.17'}
@@ -2194,6 +2355,98 @@ packages:
vite:
optional: true
+ volar-service-css@0.0.67:
+ resolution: {integrity: sha512-zV7C6enn9T9tuvQ6iSUyYEs34iPXR69Pf9YYWpbFYPWzVs22w96BtE8p04XYXbmjU6unt5oFt+iLL77bMB5fhA==}
+ peerDependencies:
+ '@volar/language-service': ~2.4.0
+ peerDependenciesMeta:
+ '@volar/language-service':
+ optional: true
+
+ volar-service-emmet@0.0.67:
+ resolution: {integrity: sha512-UDBL5x7KptmuJZNCCXMlCndMhFult/tj+9jXq3FH1ZGS1E4M/1U5hC06pg1c6e4kn+vnR6bqmvX0vIhL4f98+A==}
+ peerDependencies:
+ '@volar/language-service': ~2.4.0
+ peerDependenciesMeta:
+ '@volar/language-service':
+ optional: true
+
+ volar-service-html@0.0.67:
+ resolution: {integrity: sha512-ljREMF79JbcjNvObiv69HK2HCl5UT7WTD10zi6CRFUHMbPfiF2UZ42HGLsEGSzaHGZz6H4IFjSS/qfENRLUviQ==}
+ peerDependencies:
+ '@volar/language-service': ~2.4.0
+ peerDependenciesMeta:
+ '@volar/language-service':
+ optional: true
+
+ volar-service-prettier@0.0.67:
+ resolution: {integrity: sha512-B4KnPJPNWFTkEDa6Fn08i5PpO6T1CecmLLTFZoXz2eI4Fxwba/3nDaaVSsEP7e/vEe+U5YqV9fBzayJT71G5xg==}
+ peerDependencies:
+ '@volar/language-service': ~2.4.0
+ prettier: ^2.2 || ^3.0
+ peerDependenciesMeta:
+ '@volar/language-service':
+ optional: true
+ prettier:
+ optional: true
+
+ volar-service-typescript-twoslash-queries@0.0.67:
+ resolution: {integrity: sha512-LD2R7WivDYp1SPgZrxx/0222xVTitDjm36oKo5+bfYG5kEgnw+BOPVHdwmvpJKg/RfssfxDI1ouwD4XkEDEfbA==}
+ peerDependencies:
+ '@volar/language-service': ~2.4.0
+ peerDependenciesMeta:
+ '@volar/language-service':
+ optional: true
+
+ volar-service-typescript@0.0.67:
+ resolution: {integrity: sha512-rfQBy36Rm1PU9vLWHk8BYJ4r2j/CI024vocJcH4Nb6K2RTc2Irmw6UOVY5DdGiPRV5r+e10wLMK5njj/EcL8sA==}
+ peerDependencies:
+ '@volar/language-service': ~2.4.0
+ peerDependenciesMeta:
+ '@volar/language-service':
+ optional: true
+
+ volar-service-yaml@0.0.67:
+ resolution: {integrity: sha512-jkdP/RF6wPIXEE3Ktnd81oJPn7aAvnVSiaqQHThC2Hrvo6xd9pEcqtbBUI+YfqVgvcMtXAkbtNO61K2GPhAiuA==}
+ peerDependencies:
+ '@volar/language-service': ~2.4.0
+ peerDependenciesMeta:
+ '@volar/language-service':
+ optional: true
+
+ vscode-css-languageservice@6.3.9:
+ resolution: {integrity: sha512-1tLWfp+TDM5ZuVWht3jmaY5y7O6aZmpeXLoHl5bv1QtRsRKt4xYGRMmdJa5Pqx/FTkgRbsna9R+Gn2xE+evVuA==}
+
+ vscode-html-languageservice@5.6.1:
+ resolution: {integrity: sha512-5Mrqy5CLfFZUgkyhNZLA1Ye5g12Cb/v6VM7SxUzZUaRKWMDz4md+y26PrfRTSU0/eQAl3XpO9m2og+GGtDMuaA==}
+
+ vscode-json-languageservice@4.1.8:
+ resolution: {integrity: sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==}
+ engines: {npm: '>=7.0.0'}
+
+ vscode-jsonrpc@8.2.0:
+ resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==}
+ engines: {node: '>=14.0.0'}
+
+ vscode-languageserver-protocol@3.17.5:
+ resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==}
+
+ vscode-languageserver-textdocument@1.0.12:
+ resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==}
+
+ vscode-languageserver-types@3.17.5:
+ resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==}
+
+ vscode-languageserver@9.0.1:
+ resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==}
+ hasBin: true
+
+ vscode-nls@5.2.0:
+ resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==}
+
+ vscode-uri@3.1.0:
+ resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==}
+
web-namespaces@2.0.1:
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
@@ -2216,6 +2469,10 @@ packages:
resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==}
engines: {node: '>=18'}
+ wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+
wrap-ansi@9.0.2:
resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==}
engines: {node: '>=18'}
@@ -2223,10 +2480,32 @@ packages:
xxhash-wasm@1.1.0:
resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==}
+ y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+
+ yaml-language-server@1.19.2:
+ resolution: {integrity: sha512-9F3myNmJzUN/679jycdMxqtydPSDRAarSj3wPiF7pchEPnO9Dg07Oc+gIYLqXR4L+g+FSEVXXv2+mr54StLFOg==}
+ hasBin: true
+
+ yaml@2.7.1:
+ resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==}
+ engines: {node: '>= 14'}
+ hasBin: true
+
+ yaml@2.8.2:
+ resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==}
+ engines: {node: '>= 14.6'}
+ hasBin: true
+
yargs-parser@21.1.1:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'}
+ yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
+
yocto-queue@1.2.2:
resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==}
engines: {node: '>=12.20'}
@@ -2258,10 +2537,46 @@ packages:
snapshots:
+ '@astrojs/check@0.9.6(prettier@3.7.4)(typescript@5.9.3)':
+ dependencies:
+ '@astrojs/language-server': 2.16.2(prettier@3.7.4)(typescript@5.9.3)
+ chokidar: 4.0.3
+ kleur: 4.1.5
+ typescript: 5.9.3
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - prettier
+ - prettier-plugin-astro
+
'@astrojs/compiler@2.13.0': {}
'@astrojs/internal-helpers@0.7.5': {}
+ '@astrojs/language-server@2.16.2(prettier@3.7.4)(typescript@5.9.3)':
+ dependencies:
+ '@astrojs/compiler': 2.13.0
+ '@astrojs/yaml2ts': 0.2.2
+ '@jridgewell/sourcemap-codec': 1.5.5
+ '@volar/kit': 2.4.27(typescript@5.9.3)
+ '@volar/language-core': 2.4.27
+ '@volar/language-server': 2.4.27
+ '@volar/language-service': 2.4.27
+ fast-glob: 3.3.3
+ muggle-string: 0.4.1
+ volar-service-css: 0.0.67(@volar/language-service@2.4.27)
+ volar-service-emmet: 0.0.67(@volar/language-service@2.4.27)
+ volar-service-html: 0.0.67(@volar/language-service@2.4.27)
+ volar-service-prettier: 0.0.67(@volar/language-service@2.4.27)(prettier@3.7.4)
+ volar-service-typescript: 0.0.67(@volar/language-service@2.4.27)
+ volar-service-typescript-twoslash-queries: 0.0.67(@volar/language-service@2.4.27)
+ volar-service-yaml: 0.0.67(@volar/language-service@2.4.27)
+ vscode-html-languageservice: 5.6.1
+ vscode-uri: 3.1.0
+ optionalDependencies:
+ prettier: 3.7.4
+ transitivePeerDependencies:
+ - typescript
+
'@astrojs/markdown-remark@6.3.10':
dependencies:
'@astrojs/internal-helpers': 0.7.5
@@ -2288,12 +2603,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@astrojs/mdx@4.3.13(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3))':
+ '@astrojs/mdx@4.3.13(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2))':
dependencies:
'@astrojs/markdown-remark': 6.3.10
'@mdx-js/mdx': 3.1.1
acorn: 8.15.0
- astro: 5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)
+ astro: 5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)
es-module-lexer: 1.7.0
estree-util-visit: 2.0.0
hast-util-to-html: 9.0.5
@@ -2317,17 +2632,17 @@ snapshots:
stream-replace-string: 2.0.0
zod: 3.25.76
- '@astrojs/starlight@0.37.1(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3))':
+ '@astrojs/starlight@0.37.1(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2))':
dependencies:
'@astrojs/markdown-remark': 6.3.10
- '@astrojs/mdx': 4.3.13(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3))
+ '@astrojs/mdx': 4.3.13(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2))
'@astrojs/sitemap': 3.6.0
'@pagefind/default-ui': 1.4.0
'@types/hast': 3.0.4
'@types/js-yaml': 4.0.9
'@types/mdast': 4.0.4
- astro: 5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)
- astro-expressive-code: 0.41.4(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3))
+ astro: 5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)
+ astro-expressive-code: 0.41.4(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2))
bcp-47: 2.1.0
hast-util-from-html: 2.0.3
hast-util-select: 6.0.4
@@ -2363,6 +2678,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@astrojs/yaml2ts@0.2.2':
+ dependencies:
+ yaml: 2.8.2
+
'@babel/helper-string-parser@7.27.1': {}
'@babel/helper-validator-identifier@7.28.5': {}
@@ -2543,6 +2862,29 @@ snapshots:
'@ctrl/tinycolor@4.2.0': {}
+ '@emmetio/abbreviation@2.3.3':
+ dependencies:
+ '@emmetio/scanner': 1.0.4
+
+ '@emmetio/css-abbreviation@2.1.8':
+ dependencies:
+ '@emmetio/scanner': 1.0.4
+
+ '@emmetio/css-parser@0.4.1':
+ dependencies:
+ '@emmetio/stream-reader': 2.2.0
+ '@emmetio/stream-reader-utils': 0.1.0
+
+ '@emmetio/html-matcher@1.3.0':
+ dependencies:
+ '@emmetio/scanner': 1.0.4
+
+ '@emmetio/scanner@1.0.4': {}
+
+ '@emmetio/stream-reader-utils@0.1.0': {}
+
+ '@emmetio/stream-reader@2.2.0': {}
+
'@emnapi/runtime@1.7.1':
dependencies:
tslib: 2.8.1
@@ -2997,12 +3339,73 @@ snapshots:
'@ungap/structured-clone@1.3.0': {}
+ '@volar/kit@2.4.27(typescript@5.9.3)':
+ dependencies:
+ '@volar/language-service': 2.4.27
+ '@volar/typescript': 2.4.27
+ typesafe-path: 0.2.2
+ typescript: 5.9.3
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-uri: 3.1.0
+
+ '@volar/language-core@2.4.27':
+ dependencies:
+ '@volar/source-map': 2.4.27
+
+ '@volar/language-server@2.4.27':
+ dependencies:
+ '@volar/language-core': 2.4.27
+ '@volar/language-service': 2.4.27
+ '@volar/typescript': 2.4.27
+ path-browserify: 1.0.1
+ request-light: 0.7.0
+ vscode-languageserver: 9.0.1
+ vscode-languageserver-protocol: 3.17.5
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-uri: 3.1.0
+
+ '@volar/language-service@2.4.27':
+ dependencies:
+ '@volar/language-core': 2.4.27
+ vscode-languageserver-protocol: 3.17.5
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-uri: 3.1.0
+
+ '@volar/source-map@2.4.27': {}
+
+ '@volar/typescript@2.4.27':
+ dependencies:
+ '@volar/language-core': 2.4.27
+ path-browserify: 1.0.1
+ vscode-uri: 3.1.0
+
+ '@vscode/emmet-helper@2.11.0':
+ dependencies:
+ emmet: 2.4.11
+ jsonc-parser: 2.3.1
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-languageserver-types: 3.17.5
+ vscode-uri: 3.1.0
+
+ '@vscode/l10n@0.0.18': {}
+
acorn-jsx@5.3.2(acorn@8.15.0):
dependencies:
acorn: 8.15.0
acorn@8.15.0: {}
+ ajv-draft-04@1.0.0(ajv@8.17.1):
+ optionalDependencies:
+ ajv: 8.17.1
+
+ ajv@8.17.1:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-uri: 3.1.0
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+
ansi-align@3.0.1:
dependencies:
string-width: 4.2.3
@@ -3013,6 +3416,10 @@ snapshots:
ansi-regex@6.2.2: {}
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
ansi-styles@6.2.3: {}
anymatch@3.1.3:
@@ -3036,12 +3443,12 @@ snapshots:
astring@1.9.0: {}
- astro-expressive-code@0.41.4(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)):
+ astro-expressive-code@0.41.4(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)):
dependencies:
- astro: 5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)
+ astro: 5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)
rehype-expressive-code: 0.41.4
- astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3):
+ astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2):
dependencies:
'@astrojs/compiler': 2.13.0
'@astrojs/internal-helpers': 0.7.5
@@ -3098,8 +3505,8 @@ snapshots:
unist-util-visit: 5.0.0
unstorage: 1.17.3
vfile: 6.0.3
- vite: 6.4.1(@types/node@25.0.2)
- vitefu: 1.1.1(vite@6.4.1(@types/node@25.0.2))
+ vite: 6.4.1(@types/node@25.0.2)(yaml@2.8.2)
+ vitefu: 1.1.1(vite@6.4.1(@types/node@25.0.2)(yaml@2.8.2))
xxhash-wasm: 1.1.0
yargs-parser: 21.1.1
yocto-spinner: 0.2.3
@@ -3210,12 +3617,24 @@ snapshots:
cli-boxes@3.0.0: {}
+ cliui@8.0.1:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
clone@2.1.2: {}
clsx@2.1.1: {}
collapse-white-space@2.1.0: {}
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.4: {}
+
comma-separated-tokens@2.0.3: {}
commander@11.1.0: {}
@@ -3328,6 +3747,11 @@ snapshots:
dset@3.1.4: {}
+ emmet@2.4.11:
+ dependencies:
+ '@emmetio/abbreviation': 2.3.3
+ '@emmetio/css-abbreviation': 2.1.8
+
emoji-regex@10.6.0: {}
emoji-regex@8.0.0: {}
@@ -3386,6 +3810,8 @@ snapshots:
'@esbuild/win32-ia32': 0.25.12
'@esbuild/win32-x64': 0.25.12
+ escalade@3.2.0: {}
+
escape-string-regexp@5.0.0: {}
esprima@4.0.1: {}
@@ -3448,6 +3874,8 @@ snapshots:
merge2: 1.4.1
micromatch: 4.0.8
+ fast-uri@3.1.0: {}
+
fastq@1.19.1:
dependencies:
reusify: 1.1.0
@@ -3499,6 +3927,8 @@ snapshots:
fsevents@2.3.3:
optional: true
+ get-caller-file@2.0.5: {}
+
get-east-asian-width@1.4.0: {}
github-slugger@2.0.0: {}
@@ -3795,12 +4225,20 @@ snapshots:
dependencies:
argparse: 2.0.1
+ json-schema-traverse@1.0.0: {}
+
+ jsonc-parser@2.3.1: {}
+
+ jsonc-parser@3.3.1: {}
+
jsonfile@4.0.0:
optionalDependencies:
graceful-fs: 4.2.11
kleur@3.0.3: {}
+ kleur@4.1.5: {}
+
klona@2.0.6: {}
locate-path@5.0.0:
@@ -3809,6 +4247,8 @@ snapshots:
lodash.startcase@4.4.0: {}
+ lodash@4.17.21: {}
+
longest-streak@3.1.0: {}
lru-cache@10.4.3: {}
@@ -4301,6 +4741,8 @@ snapshots:
ms@2.1.3: {}
+ muggle-string@0.4.1: {}
+
nanoid@3.3.11: {}
neotraverse@0.6.18: {}
@@ -4408,6 +4850,8 @@ snapshots:
dependencies:
entities: 6.0.1
+ path-browserify@1.0.1: {}
+
path-exists@4.0.0: {}
path-key@3.1.1: {}
@@ -4442,6 +4886,8 @@ snapshots:
prettier@2.8.8: {}
+ prettier@3.7.4: {}
+
prismjs@1.30.0: {}
prompts@2.4.2:
@@ -4604,6 +5050,14 @@ snapshots:
mdast-util-to-markdown: 2.1.2
unified: 11.0.5
+ request-light@0.5.8: {}
+
+ request-light@0.7.0: {}
+
+ require-directory@2.1.1: {}
+
+ require-from-string@2.0.2: {}
+
resolve-from@5.0.0: {}
restructure@3.0.2: {}
@@ -4749,13 +5203,13 @@ snapshots:
sprintf-js@1.0.3: {}
- starlight-package-managers@0.11.1(@astrojs/starlight@0.37.1(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3))):
+ starlight-package-managers@0.11.1(@astrojs/starlight@0.37.1(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2))):
dependencies:
- '@astrojs/starlight': 0.37.1(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3))
+ '@astrojs/starlight': 0.37.1(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2))
- starlight-theme-flexoki@0.2.1(@astrojs/starlight@0.37.1(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3))):
+ starlight-theme-flexoki@0.2.1(@astrojs/starlight@0.37.1(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2))):
dependencies:
- '@astrojs/starlight': 0.37.1(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3))
+ '@astrojs/starlight': 0.37.1(astro@5.16.6(@types/node@25.0.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2))
stream-replace-string@2.0.0: {}
@@ -4833,6 +5287,12 @@ snapshots:
type-fest@4.41.0: {}
+ typesafe-path@0.2.2: {}
+
+ typescript-auto-import-cache@0.3.6:
+ dependencies:
+ semver: 7.7.3
+
typescript@5.9.3: {}
ufo@1.6.1: {}
@@ -4945,7 +5405,7 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
- vite@6.4.1(@types/node@25.0.2):
+ vite@6.4.1(@types/node@25.0.2)(yaml@2.8.2):
dependencies:
esbuild: 0.25.12
fdir: 6.5.0(picomatch@4.0.3)
@@ -4956,10 +5416,108 @@ snapshots:
optionalDependencies:
'@types/node': 25.0.2
fsevents: 2.3.3
+ yaml: 2.8.2
+
+ vitefu@1.1.1(vite@6.4.1(@types/node@25.0.2)(yaml@2.8.2)):
+ optionalDependencies:
+ vite: 6.4.1(@types/node@25.0.2)(yaml@2.8.2)
- vitefu@1.1.1(vite@6.4.1(@types/node@25.0.2)):
+ volar-service-css@0.0.67(@volar/language-service@2.4.27):
+ dependencies:
+ vscode-css-languageservice: 6.3.9
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-uri: 3.1.0
optionalDependencies:
- vite: 6.4.1(@types/node@25.0.2)
+ '@volar/language-service': 2.4.27
+
+ volar-service-emmet@0.0.67(@volar/language-service@2.4.27):
+ dependencies:
+ '@emmetio/css-parser': 0.4.1
+ '@emmetio/html-matcher': 1.3.0
+ '@vscode/emmet-helper': 2.11.0
+ vscode-uri: 3.1.0
+ optionalDependencies:
+ '@volar/language-service': 2.4.27
+
+ volar-service-html@0.0.67(@volar/language-service@2.4.27):
+ dependencies:
+ vscode-html-languageservice: 5.6.1
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-uri: 3.1.0
+ optionalDependencies:
+ '@volar/language-service': 2.4.27
+
+ volar-service-prettier@0.0.67(@volar/language-service@2.4.27)(prettier@3.7.4):
+ dependencies:
+ vscode-uri: 3.1.0
+ optionalDependencies:
+ '@volar/language-service': 2.4.27
+ prettier: 3.7.4
+
+ volar-service-typescript-twoslash-queries@0.0.67(@volar/language-service@2.4.27):
+ dependencies:
+ vscode-uri: 3.1.0
+ optionalDependencies:
+ '@volar/language-service': 2.4.27
+
+ volar-service-typescript@0.0.67(@volar/language-service@2.4.27):
+ dependencies:
+ path-browserify: 1.0.1
+ semver: 7.7.3
+ typescript-auto-import-cache: 0.3.6
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-nls: 5.2.0
+ vscode-uri: 3.1.0
+ optionalDependencies:
+ '@volar/language-service': 2.4.27
+
+ volar-service-yaml@0.0.67(@volar/language-service@2.4.27):
+ dependencies:
+ vscode-uri: 3.1.0
+ yaml-language-server: 1.19.2
+ optionalDependencies:
+ '@volar/language-service': 2.4.27
+
+ vscode-css-languageservice@6.3.9:
+ dependencies:
+ '@vscode/l10n': 0.0.18
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-languageserver-types: 3.17.5
+ vscode-uri: 3.1.0
+
+ vscode-html-languageservice@5.6.1:
+ dependencies:
+ '@vscode/l10n': 0.0.18
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-languageserver-types: 3.17.5
+ vscode-uri: 3.1.0
+
+ vscode-json-languageservice@4.1.8:
+ dependencies:
+ jsonc-parser: 3.3.1
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-languageserver-types: 3.17.5
+ vscode-nls: 5.2.0
+ vscode-uri: 3.1.0
+
+ vscode-jsonrpc@8.2.0: {}
+
+ vscode-languageserver-protocol@3.17.5:
+ dependencies:
+ vscode-jsonrpc: 8.2.0
+ vscode-languageserver-types: 3.17.5
+
+ vscode-languageserver-textdocument@1.0.12: {}
+
+ vscode-languageserver-types@3.17.5: {}
+
+ vscode-languageserver@9.0.1:
+ dependencies:
+ vscode-languageserver-protocol: 3.17.5
+
+ vscode-nls@5.2.0: {}
+
+ vscode-uri@3.1.0: {}
web-namespaces@2.0.1: {}
@@ -4980,6 +5538,12 @@ snapshots:
dependencies:
string-width: 7.2.0
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
wrap-ansi@9.0.2:
dependencies:
ansi-styles: 6.2.3
@@ -4988,8 +5552,39 @@ snapshots:
xxhash-wasm@1.1.0: {}
+ y18n@5.0.8: {}
+
+ yaml-language-server@1.19.2:
+ dependencies:
+ '@vscode/l10n': 0.0.18
+ ajv: 8.17.1
+ ajv-draft-04: 1.0.0(ajv@8.17.1)
+ lodash: 4.17.21
+ prettier: 3.7.4
+ request-light: 0.5.8
+ vscode-json-languageservice: 4.1.8
+ vscode-languageserver: 9.0.1
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-languageserver-types: 3.17.5
+ vscode-uri: 3.1.0
+ yaml: 2.7.1
+
+ yaml@2.7.1: {}
+
+ yaml@2.8.2: {}
+
yargs-parser@21.1.1: {}
+ yargs@17.7.2:
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+
yocto-queue@1.2.2: {}
yocto-spinner@0.2.3: