diff --git a/README.md b/README.md
index 1426521..a36dd16 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-## Catalyst Documentation
+## Intent Documentation
[](https://starlight.astro.build)
diff --git a/_typos.toml b/_typos.toml
index fb979f9..9c65111 100644
--- a/_typos.toml
+++ b/_typos.toml
@@ -1,3 +1,2 @@
[default.extend-words]
-# Don't correct the surname "Teh"
OIF = "OIF"
\ No newline at end of file
diff --git a/astro.config.mjs b/astro.config.mjs
index c2dc2ae..00e8e9a 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -24,7 +24,8 @@ export default defineConfig({
integrations: [
starlight({
plugins: [starlightLinksValidator()],
- title: "Catalyst Documentation",
+ title: "LI.FI Intent Documentation",
+ tableOfContents: false,
editLink: {
baseUrl: `https://github.com/catalystsystem/catalyst-documentation/edit/${process.env["CF_PAGES_BRANCH"]}`,
},
@@ -40,7 +41,7 @@ export default defineConfig({
favicon: "/favicon.ico",
sidebar: [
{
- label: "Catalyst Intent System",
+ label: "Introduction",
link: "/",
},
{
@@ -49,12 +50,12 @@ export default defineConfig({
directory: "1-system-architecture",
},
},
- {
- label: "For Developers",
- autogenerate: {
- directory: "2-devs",
- },
- },
+ // {
+ // label: "For Developers",
+ // autogenerate: {
+ // directory: "2-devs",
+ // },
+ // },
{
label: "For Solvers",
autogenerate: {
diff --git a/package.json b/package.json
index edfae74..924751a 100644
--- a/package.json
+++ b/package.json
@@ -11,16 +11,16 @@
},
"dependencies": {
"@astrojs/check": "^0.9.4",
- "@astrojs/starlight": "^0.34.0",
- "@astrojs/svelte": "^7.0.10",
- "astro": "^5.7.3",
- "astro-d2": "^0.7.0",
+ "@astrojs/starlight": "^0.34.4",
+ "@astrojs/svelte": "^7.1.0",
+ "astro": "^5.9.4",
+ "astro-d2": "^0.8.0",
"astro-iconify": "^1.2.0",
"rehype-mathjax": "^7.1.0",
"remark-math": "^6.0.0",
- "sharp": "^0.34.1",
- "starlight-links-validator": "^0.16.0",
- "svelte": "^5.27.3",
+ "sharp": "^0.34.2",
+ "starlight-links-validator": "^0.17.0",
+ "svelte": "^5.34.5",
"typescript": "^5.8.3"
},
"packageManager": "pnpm@9.11.0+sha256.1c0e33f70e5df9eede84a357bdfa0b1f9dba6e58194628d48a1055756f553754"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 96eb02e..d8896e2 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -12,17 +12,17 @@ importers:
specifier: ^0.9.4
version: 0.9.4(typescript@5.8.3)
'@astrojs/starlight':
- specifier: ^0.34.0
- version: 0.34.0(astro@5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1))
+ specifier: ^0.34.4
+ version: 0.34.4(astro@5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0))
'@astrojs/svelte':
- specifier: ^7.0.10
- version: 7.0.10(@types/node@22.14.1)(astro@5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1))(svelte@5.27.3)(typescript@5.8.3)(yaml@2.7.1)
+ specifier: ^7.1.0
+ version: 7.1.0(@types/node@24.0.3)(astro@5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0))(svelte@5.34.5)(typescript@5.8.3)(yaml@2.8.0)
astro:
- specifier: ^5.7.3
- version: 5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1)
+ specifier: ^5.9.4
+ version: 5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0)
astro-d2:
- specifier: ^0.7.0
- version: 0.7.0(astro@5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1))
+ specifier: ^0.8.0
+ version: 0.8.0(astro@5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0))
astro-iconify:
specifier: ^1.2.0
version: 1.2.0
@@ -33,14 +33,14 @@ importers:
specifier: ^6.0.0
version: 6.0.0
sharp:
- specifier: ^0.34.1
- version: 0.34.1
+ specifier: ^0.34.2
+ version: 0.34.2
starlight-links-validator:
- specifier: ^0.16.0
- version: 0.16.0(@astrojs/starlight@0.34.0(astro@5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1)))
+ specifier: ^0.17.0
+ version: 0.17.0(@astrojs/starlight@0.34.4(astro@5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0)))
svelte:
- specifier: ^5.27.3
- version: 5.27.3
+ specifier: ^5.34.5
+ version: 5.34.5
typescript:
specifier: ^5.8.3
version: 5.8.3
@@ -51,8 +51,8 @@ packages:
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
- '@antfu/install-pkg@1.0.0':
- resolution: {integrity: sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==}
+ '@antfu/install-pkg@1.1.0':
+ resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==}
'@antfu/utils@8.1.1':
resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==}
@@ -66,8 +66,8 @@ packages:
'@astrojs/compiler@2.10.3':
resolution: {integrity: sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==}
- '@astrojs/compiler@2.11.0':
- resolution: {integrity: sha512-zZOO7i+JhojO8qmlyR/URui6LyfHJY6m+L9nwyX5GiKD78YoRaZ5tzz6X0fkl+5bD3uwlDHayf6Oe8Fu36RKNg==}
+ '@astrojs/compiler@2.12.2':
+ resolution: {integrity: sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw==}
'@astrojs/internal-helpers@0.6.1':
resolution: {integrity: sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==}
@@ -84,61 +84,61 @@ packages:
prettier-plugin-astro:
optional: true
- '@astrojs/markdown-remark@6.3.1':
- resolution: {integrity: sha512-c5F5gGrkczUaTVgmMW9g1YMJGzOtRvjjhw6IfGuxarM6ct09MpwysP10US729dy07gg8y+ofVifezvP3BNsWZg==}
+ '@astrojs/markdown-remark@6.3.2':
+ resolution: {integrity: sha512-bO35JbWpVvyKRl7cmSJD822e8YA8ThR/YbUsciWNA7yTcqpIAL2hJDToWP5KcZBWxGT6IOdOkHSXARSNZc4l/Q==}
- '@astrojs/mdx@4.2.4':
- resolution: {integrity: sha512-c832AWpiMCcuPY8j+yr5T+hOf8n5RlKLFHlNTt15xxkOk3zjFJP81TIYKrMrbhD5rMzJ09Ixi+xM0m68w2Q0DQ==}
- engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0}
+ '@astrojs/mdx@4.3.0':
+ resolution: {integrity: sha512-OGX2KvPeBzjSSKhkCqrUoDMyzFcjKt5nTE5SFw3RdoLf0nrhyCXBQcCyclzWy1+P+XpOamn+p+hm1EhpCRyPxw==}
+ engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0}
peerDependencies:
astro: ^5.0.0
- '@astrojs/prism@3.2.0':
- resolution: {integrity: sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==}
- engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0}
+ '@astrojs/prism@3.3.0':
+ resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==}
+ engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0}
- '@astrojs/sitemap@3.3.0':
- resolution: {integrity: sha512-nYE4lKQtk+Kbrw/w0G0TTgT724co0jUsU4tPlHY9au5HmTBKbwiCLwO/15b1/y13aZ4Kr9ZbMeMHlXuwn0ty4Q==}
+ '@astrojs/sitemap@3.4.1':
+ resolution: {integrity: sha512-VjZvr1e4FH6NHyyHXOiQgLiw94LnCVY4v06wN/D0gZKchTMkg71GrAHJz81/huafcmavtLkIv26HnpfDq6/h/Q==}
- '@astrojs/starlight@0.34.0':
- resolution: {integrity: sha512-RebhN1hoLmD/4WH0WneR2U6evEwRhwrtUcxUten9DjAZdKfCtav95kkj9aiU1manNDVBVgBliEZ9hGcOwSQXrg==}
+ '@astrojs/starlight@0.34.4':
+ resolution: {integrity: sha512-NfQ6S2OaDG8aaiE+evVxSMpgqMkXPLa/yCpzG340EX2pRzFxPeTSvpei3Uz9KouevXRCctjHSItKjuZP+2syrQ==}
peerDependencies:
astro: ^5.5.0
- '@astrojs/svelte@7.0.10':
- resolution: {integrity: sha512-ktu0GQeXsGUMhGEZWgsCWddV3pNqajeQlDNlDD7D1+Al6ImnU/j+xzjAkbbZgkp144guvPpo9dRqUTpgGKXodw==}
- engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0}
+ '@astrojs/svelte@7.1.0':
+ resolution: {integrity: sha512-nNAO7iFgCZXCN31N4xBSS/k7vZAZxeZ/v8V6VWZOKG47gVlxeAJBHzn2GlXMMVkxIamr6dhrkDrhYFKIPzoGpw==}
+ engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0}
peerDependencies:
astro: ^5.0.0
svelte: ^5.1.16
typescript: ^5.3.3
- '@astrojs/telemetry@3.2.0':
- resolution: {integrity: sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==}
- engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0}
+ '@astrojs/telemetry@3.3.0':
+ 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.25.9':
- resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
+ '@babel/helper-string-parser@7.27.1':
+ resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
engines: {node: '>=6.9.0'}
- '@babel/helper-validator-identifier@7.25.9':
- resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
+ '@babel/helper-validator-identifier@7.27.1':
+ resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
engines: {node: '>=6.9.0'}
- '@babel/parser@7.27.0':
- resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==}
+ '@babel/parser@7.27.5':
+ resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==}
engines: {node: '>=6.0.0'}
hasBin: true
- '@babel/runtime@7.27.0':
- resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==}
+ '@babel/runtime@7.27.6':
+ resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==}
engines: {node: '>=6.9.0'}
- '@babel/types@7.27.0':
- resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==}
+ '@babel/types@7.27.6':
+ resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==}
engines: {node: '>=6.9.0'}
'@capsizecss/unpack@2.4.0':
@@ -172,167 +172,167 @@ packages:
'@emnapi/runtime@1.4.3':
resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==}
- '@esbuild/aix-ppc64@0.25.2':
- resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==}
+ '@esbuild/aix-ppc64@0.25.5':
+ resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
- '@esbuild/android-arm64@0.25.2':
- resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==}
+ '@esbuild/android-arm64@0.25.5':
+ resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
- '@esbuild/android-arm@0.25.2':
- resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==}
+ '@esbuild/android-arm@0.25.5':
+ resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
- '@esbuild/android-x64@0.25.2':
- resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==}
+ '@esbuild/android-x64@0.25.5':
+ resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
- '@esbuild/darwin-arm64@0.25.2':
- resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==}
+ '@esbuild/darwin-arm64@0.25.5':
+ resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
- '@esbuild/darwin-x64@0.25.2':
- resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==}
+ '@esbuild/darwin-x64@0.25.5':
+ resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
- '@esbuild/freebsd-arm64@0.25.2':
- resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==}
+ '@esbuild/freebsd-arm64@0.25.5':
+ resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
- '@esbuild/freebsd-x64@0.25.2':
- resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==}
+ '@esbuild/freebsd-x64@0.25.5':
+ resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
- '@esbuild/linux-arm64@0.25.2':
- resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==}
+ '@esbuild/linux-arm64@0.25.5':
+ resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
- '@esbuild/linux-arm@0.25.2':
- resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==}
+ '@esbuild/linux-arm@0.25.5':
+ resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
- '@esbuild/linux-ia32@0.25.2':
- resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==}
+ '@esbuild/linux-ia32@0.25.5':
+ resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
- '@esbuild/linux-loong64@0.25.2':
- resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==}
+ '@esbuild/linux-loong64@0.25.5':
+ resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
- '@esbuild/linux-mips64el@0.25.2':
- resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==}
+ '@esbuild/linux-mips64el@0.25.5':
+ resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
- '@esbuild/linux-ppc64@0.25.2':
- resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==}
+ '@esbuild/linux-ppc64@0.25.5':
+ resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
- '@esbuild/linux-riscv64@0.25.2':
- resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==}
+ '@esbuild/linux-riscv64@0.25.5':
+ resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
- '@esbuild/linux-s390x@0.25.2':
- resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==}
+ '@esbuild/linux-s390x@0.25.5':
+ resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
- '@esbuild/linux-x64@0.25.2':
- resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==}
+ '@esbuild/linux-x64@0.25.5':
+ resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
- '@esbuild/netbsd-arm64@0.25.2':
- resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==}
+ '@esbuild/netbsd-arm64@0.25.5':
+ resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
- '@esbuild/netbsd-x64@0.25.2':
- resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==}
+ '@esbuild/netbsd-x64@0.25.5':
+ resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
- '@esbuild/openbsd-arm64@0.25.2':
- resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==}
+ '@esbuild/openbsd-arm64@0.25.5':
+ resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
- '@esbuild/openbsd-x64@0.25.2':
- resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==}
+ '@esbuild/openbsd-x64@0.25.5':
+ resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
- '@esbuild/sunos-x64@0.25.2':
- resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==}
+ '@esbuild/sunos-x64@0.25.5':
+ resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
- '@esbuild/win32-arm64@0.25.2':
- resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==}
+ '@esbuild/win32-arm64@0.25.5':
+ resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
- '@esbuild/win32-ia32@0.25.2':
- resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==}
+ '@esbuild/win32-ia32@0.25.5':
+ resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
- '@esbuild/win32-x64@0.25.2':
- resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==}
+ '@esbuild/win32-x64@0.25.5':
+ resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==}
engines: {node: '>=18'}
cpu: [x64]
os: [win32]
- '@expressive-code/core@0.41.1':
- resolution: {integrity: sha512-mG2IrN4t/NGPmEeeswmttsW7W7c96sz3ASjo1psQnOqU5QWAF61HpnBu3lPxHI8iQJyZI8wfAroo9FFpwlkvAQ==}
+ '@expressive-code/core@0.41.2':
+ resolution: {integrity: sha512-AJW5Tp9czbLqKMzwudL9Rv4js9afXBxkSGLmCNPq1iRgAYcx9NkTPJiSNCesjKRWoVC328AdSu6fqrD22zDgDg==}
- '@expressive-code/plugin-frames@0.41.1':
- resolution: {integrity: sha512-cwUUWMr2jNpKpgiepEzM9BGnU60WepE5/Ar3H2aOn8IzcDa4Eeuk0JqQB1Vvpo0bu+VRIxaTA2njoAIeQuMN5w==}
+ '@expressive-code/plugin-frames@0.41.2':
+ resolution: {integrity: sha512-pfy0hkJI4nbaONjmksFDcuHmIuyPTFmi1JpABe4q2ajskiJtfBf+WDAL2pg595R9JNoPrrH5+aT9lbkx2noicw==}
- '@expressive-code/plugin-shiki@0.41.1':
- resolution: {integrity: sha512-xJHk89ECxQpvf7ftTmtEfAKoApYYr5Um7d6fiE6GuY7+WuXN02+ZHH8r5pSJpxlQMfAmavqbNPd3dEJ9v/zHnQ==}
+ '@expressive-code/plugin-shiki@0.41.2':
+ resolution: {integrity: sha512-xD4zwqAkDccXqye+235BH5bN038jYiSMLfUrCOmMlzxPDGWdxJDk5z4uUB/aLfivEF2tXyO2zyaarL3Oqht0fQ==}
- '@expressive-code/plugin-text-markers@0.41.1':
- resolution: {integrity: sha512-PFvk91yY+H8KVEcyZSrktLoWzBgLVpowvMxOJooFn74roGxnU4TEBJpWcRnJFtMEwTLzWNnk10MSOApOccvSKg==}
+ '@expressive-code/plugin-text-markers@0.41.2':
+ resolution: {integrity: sha512-JFWBz2qYxxJOJkkWf96LpeolbnOqJY95TvwYc0hXIHf9oSWV0h0SY268w/5N3EtQaD9KktzDE+VIVwb9jdb3nw==}
'@iconify/tools@4.1.2':
resolution: {integrity: sha512-q6NzLQYEN9zkDfcyBqD3vItHcZw97w/s++3H3TBxUORr57EfHxj6tOW6fyufDjMq+Vl56WXWaPx1csBPYlI5CA==}
@@ -349,8 +349,8 @@ packages:
cpu: [arm64]
os: [darwin]
- '@img/sharp-darwin-arm64@0.34.1':
- resolution: {integrity: sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==}
+ '@img/sharp-darwin-arm64@0.34.2':
+ resolution: {integrity: sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [darwin]
@@ -361,8 +361,8 @@ packages:
cpu: [x64]
os: [darwin]
- '@img/sharp-darwin-x64@0.34.1':
- resolution: {integrity: sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==}
+ '@img/sharp-darwin-x64@0.34.2':
+ resolution: {integrity: sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [darwin]
@@ -458,8 +458,8 @@ packages:
cpu: [arm64]
os: [linux]
- '@img/sharp-linux-arm64@0.34.1':
- resolution: {integrity: sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==}
+ '@img/sharp-linux-arm64@0.34.2':
+ resolution: {integrity: sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
@@ -470,8 +470,8 @@ packages:
cpu: [arm]
os: [linux]
- '@img/sharp-linux-arm@0.34.1':
- resolution: {integrity: sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==}
+ '@img/sharp-linux-arm@0.34.2':
+ resolution: {integrity: sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm]
os: [linux]
@@ -482,8 +482,8 @@ packages:
cpu: [s390x]
os: [linux]
- '@img/sharp-linux-s390x@0.34.1':
- resolution: {integrity: sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==}
+ '@img/sharp-linux-s390x@0.34.2':
+ resolution: {integrity: sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [s390x]
os: [linux]
@@ -494,8 +494,8 @@ packages:
cpu: [x64]
os: [linux]
- '@img/sharp-linux-x64@0.34.1':
- resolution: {integrity: sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==}
+ '@img/sharp-linux-x64@0.34.2':
+ resolution: {integrity: sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
@@ -506,8 +506,8 @@ packages:
cpu: [arm64]
os: [linux]
- '@img/sharp-linuxmusl-arm64@0.34.1':
- resolution: {integrity: sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==}
+ '@img/sharp-linuxmusl-arm64@0.34.2':
+ resolution: {integrity: sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
@@ -518,8 +518,8 @@ packages:
cpu: [x64]
os: [linux]
- '@img/sharp-linuxmusl-x64@0.34.1':
- resolution: {integrity: sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==}
+ '@img/sharp-linuxmusl-x64@0.34.2':
+ resolution: {integrity: sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
@@ -529,19 +529,25 @@ packages:
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [wasm32]
- '@img/sharp-wasm32@0.34.1':
- resolution: {integrity: sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==}
+ '@img/sharp-wasm32@0.34.2':
+ resolution: {integrity: sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [wasm32]
+ '@img/sharp-win32-arm64@0.34.2':
+ resolution: {integrity: sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [win32]
+
'@img/sharp-win32-ia32@0.33.5':
resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [ia32]
os: [win32]
- '@img/sharp-win32-ia32@0.34.1':
- resolution: {integrity: sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==}
+ '@img/sharp-win32-ia32@0.34.2':
+ resolution: {integrity: sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [ia32]
os: [win32]
@@ -552,8 +558,8 @@ packages:
cpu: [x64]
os: [win32]
- '@img/sharp-win32-x64@0.34.1':
- resolution: {integrity: sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==}
+ '@img/sharp-win32-x64@0.34.2':
+ resolution: {integrity: sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [win32]
@@ -622,8 +628,8 @@ packages:
cpu: [x64]
os: [win32]
- '@rollup/pluginutils@5.1.4':
- resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==}
+ '@rollup/pluginutils@5.2.0':
+ resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==}
engines: {node: '>=14.0.0'}
peerDependencies:
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
@@ -631,123 +637,123 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.40.0':
- resolution: {integrity: sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==}
+ '@rollup/rollup-android-arm-eabi@4.43.0':
+ resolution: {integrity: sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.40.0':
- resolution: {integrity: sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==}
+ '@rollup/rollup-android-arm64@4.43.0':
+ resolution: {integrity: sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.40.0':
- resolution: {integrity: sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==}
+ '@rollup/rollup-darwin-arm64@4.43.0':
+ resolution: {integrity: sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.40.0':
- resolution: {integrity: sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==}
+ '@rollup/rollup-darwin-x64@4.43.0':
+ resolution: {integrity: sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.40.0':
- resolution: {integrity: sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==}
+ '@rollup/rollup-freebsd-arm64@4.43.0':
+ resolution: {integrity: sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.40.0':
- resolution: {integrity: sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==}
+ '@rollup/rollup-freebsd-x64@4.43.0':
+ resolution: {integrity: sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.40.0':
- resolution: {integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.43.0':
+ resolution: {integrity: sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.40.0':
- resolution: {integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==}
+ '@rollup/rollup-linux-arm-musleabihf@4.43.0':
+ resolution: {integrity: sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.40.0':
- resolution: {integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==}
+ '@rollup/rollup-linux-arm64-gnu@4.43.0':
+ resolution: {integrity: sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.40.0':
- resolution: {integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==}
+ '@rollup/rollup-linux-arm64-musl@4.43.0':
+ resolution: {integrity: sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-loongarch64-gnu@4.40.0':
- resolution: {integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==}
+ '@rollup/rollup-linux-loongarch64-gnu@4.43.0':
+ resolution: {integrity: sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==}
cpu: [loong64]
os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.40.0':
- resolution: {integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==}
+ '@rollup/rollup-linux-powerpc64le-gnu@4.43.0':
+ resolution: {integrity: sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.40.0':
- resolution: {integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==}
+ '@rollup/rollup-linux-riscv64-gnu@4.43.0':
+ resolution: {integrity: sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-riscv64-musl@4.40.0':
- resolution: {integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==}
+ '@rollup/rollup-linux-riscv64-musl@4.43.0':
+ resolution: {integrity: sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.40.0':
- resolution: {integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==}
+ '@rollup/rollup-linux-s390x-gnu@4.43.0':
+ resolution: {integrity: sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.40.0':
- resolution: {integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==}
+ '@rollup/rollup-linux-x64-gnu@4.43.0':
+ resolution: {integrity: sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.40.0':
- resolution: {integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==}
+ '@rollup/rollup-linux-x64-musl@4.43.0':
+ resolution: {integrity: sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.40.0':
- resolution: {integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==}
+ '@rollup/rollup-win32-arm64-msvc@4.43.0':
+ resolution: {integrity: sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.40.0':
- resolution: {integrity: sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==}
+ '@rollup/rollup-win32-ia32-msvc@4.43.0':
+ resolution: {integrity: sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.40.0':
- resolution: {integrity: sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==}
+ '@rollup/rollup-win32-x64-msvc@4.43.0':
+ resolution: {integrity: sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==}
cpu: [x64]
os: [win32]
- '@shikijs/core@3.2.2':
- resolution: {integrity: sha512-yvlSKVMLjddAGBa2Yu+vUZxuu3sClOWW1AG+UtJkvejYuGM5BVL35s6Ijiwb75O9QdEx6IkMxinHZSi8ZyrBaA==}
+ '@shikijs/core@3.6.0':
+ resolution: {integrity: sha512-9By7Xb3olEX0o6UeJyPLI1PE1scC4d3wcVepvtv2xbuN9/IThYN4Wcwh24rcFeASzPam11MCq8yQpwwzCgSBRw==}
- '@shikijs/engine-javascript@3.2.2':
- resolution: {integrity: sha512-tlDKfhWpF4jKLUyVAnmL+ggIC+0VyteNsUpBzh1iwWLZu4i+PelIRr0TNur6pRRo5UZIv3ss/PLMuwahg9S2hg==}
+ '@shikijs/engine-javascript@3.6.0':
+ resolution: {integrity: sha512-7YnLhZG/TU05IHMG14QaLvTW/9WiK8SEYafceccHUSXs2Qr5vJibUwsDfXDLmRi0zHdzsxrGKpSX6hnqe0k8nA==}
- '@shikijs/engine-oniguruma@3.2.2':
- resolution: {integrity: sha512-vyXRnWVCSvokwbaUD/8uPn6Gqsf5Hv7XwcW4AgiU4Z2qwy19sdr6VGzMdheKKN58tJOOe5MIKiNb901bgcUXYQ==}
+ '@shikijs/engine-oniguruma@3.6.0':
+ resolution: {integrity: sha512-nmOhIZ9yT3Grd+2plmW/d8+vZ2pcQmo/UnVwXMUXAKTXdi+LK0S08Ancrz5tQQPkxvjBalpMW2aKvwXfelauvA==}
- '@shikijs/langs@3.2.2':
- resolution: {integrity: sha512-NY0Urg2dV9ETt3JIOWoMPuoDNwte3geLZ4M1nrPHbkDS8dWMpKcEwlqiEIGqtwZNmt5gKyWpR26ln2Bg2ecPgw==}
+ '@shikijs/langs@3.6.0':
+ resolution: {integrity: sha512-IdZkQJaLBu1LCYCwkr30hNuSDfllOT8RWYVZK1tD2J03DkiagYKRxj/pDSl8Didml3xxuyzUjgtioInwEQM/TA==}
- '@shikijs/themes@3.2.2':
- resolution: {integrity: sha512-Zuq4lgAxVKkb0FFdhHSdDkALuRpsj1so1JdihjKNQfgM78EHxV2JhO10qPsMrm01FkE3mDRTdF68wfmsqjt6HA==}
+ '@shikijs/themes@3.6.0':
+ resolution: {integrity: sha512-Fq2j4nWr1DF4drvmhqKq8x5vVQ27VncF8XZMBuHuQMZvUSS3NBgpqfwz/FoGe36+W6PvniZ1yDlg2d4kmYDU6w==}
- '@shikijs/types@3.2.2':
- resolution: {integrity: sha512-a5TiHk7EH5Lso8sHcLHbVNNhWKP0Wi3yVnXnu73g86n3WoDgEra7n3KszyeCGuyoagspQ2fzvy4cpSc8pKhb0A==}
+ '@shikijs/types@3.6.0':
+ resolution: {integrity: sha512-cLWFiToxYu0aAzJqhXTQsFiJRTFDAGl93IrMSBNaGSzs7ixkLfdG6pH11HipuWFGW5vyx4X47W8HDQ7eSrmBUg==}
'@shikijs/vscode-textmate@10.0.2':
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
@@ -765,8 +771,8 @@ packages:
svelte: ^5.0.0
vite: ^6.0.0
- '@sveltejs/vite-plugin-svelte@5.0.3':
- resolution: {integrity: sha512-MCFS6CrQDu1yGwspm4qtli0e63vaPCehf6V7pIMP15AsWgMKrqDGCPFF/0kn4SP0ii4aySu4Pa62+fIRGFMjgw==}
+ '@sveltejs/vite-plugin-svelte@5.1.0':
+ resolution: {integrity: sha512-wojIS/7GYnJDYIg1higWj2ROA6sSRWvcR1PO/bqEyFr/5UZah26c8Cz4u0NaqjPeVltzsVpt2Tm8d2io0V+4Tw==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22}
peerDependencies:
svelte: ^5.0.0
@@ -788,6 +794,12 @@ packages:
'@types/estree@1.0.7':
resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
+ '@types/estree@1.0.8':
+ resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+
+ '@types/fontkit@2.0.8':
+ resolution: {integrity: sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==}
+
'@types/hast@3.0.4':
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
@@ -815,8 +827,8 @@ packages:
'@types/node@17.0.45':
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
- '@types/node@22.14.1':
- resolution: {integrity: sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==}
+ '@types/node@24.0.3':
+ resolution: {integrity: sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==}
'@types/picomatch@3.0.2':
resolution: {integrity: sha512-n0i8TD3UDB7paoMMxA3Y65vUncFJXjcUf7lQY7YyKGl6031FNjfsLs6pdLFCy2GNFxItPJG8GvvpbZc2skH7WA==}
@@ -874,8 +886,8 @@ packages:
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
- acorn@8.14.1:
- resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
+ acorn@8.15.0:
+ resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
engines: {node: '>=0.4.0'}
hasBin: true
@@ -922,30 +934,30 @@ packages:
resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==}
hasBin: true
- astro-d2@0.7.0:
- resolution: {integrity: sha512-g+lD6xZQcCT2T35zqC9cJKWJJZGhjQUmCWEHrUTXfaQYnpt7ubHjoYHAdYPweftigFrq2S5T2jdTT/BkManqTg==}
+ astro-d2@0.8.0:
+ resolution: {integrity: sha512-vs1crOjTmYeQg+kHUymB8AhcmFRZyiQBuK1bsuMoTbX1upX3ljhny8DdvOWoiEVUBQAwlUojjwO5bB8tRo8hCw==}
engines: {node: '>=18'}
peerDependencies:
astro: '>=5.0.0'
- astro-expressive-code@0.41.1:
- resolution: {integrity: sha512-za6HlekMOczwlkuYuQQTd6LkKFwsnfAjwjIprCzOqsjp9vkYrAcriXM5cIG7V1Zxx88sVXF6iGnyNl4J0DL2Mg==}
+ astro-expressive-code@0.41.2:
+ resolution: {integrity: sha512-HN0jWTnhr7mIV/2e6uu4PPRNNo/k4UEgTLZqbp3MrHU+caCARveG2yZxaZVBmxyiVdYqW5Pd3u3n2zjnshixbw==}
peerDependencies:
astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0
astro-iconify@1.2.0:
resolution: {integrity: sha512-arLDiSop3DAHHS30raZysspkz5MO9moJJZ4rJk1Ty+4W1jZDa00Jme0LrnRJRDB6BB2EDTxC553fo20yz3MeYw==}
- astro@5.7.3:
- resolution: {integrity: sha512-2b/OOS/A6GO4QP94x6oRzwTfXabFqE2rlUbbi42o6wZm9+zzcOc6VRFAq4lTOEI/iCrEVl3wTdBAC5X3h3Es+Q==}
- engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'}
+ astro@5.9.4:
+ resolution: {integrity: sha512-AEulm16C9IijMYrFb3VIFx9z17p/wfDSHUHdbbvSEX+rBca64xV+f67tnsql3s4CE8u2cwYpdX+5yH7l53W4iA==}
+ engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'}
hasBin: true
asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
- axios@1.8.4:
- resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==}
+ axios@1.10.0:
+ resolution: {integrity: sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==}
axobject-query@4.1.0:
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
@@ -1103,8 +1115,8 @@ packages:
cross-fetch@3.2.0:
resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==}
- crossws@0.3.4:
- resolution: {integrity: sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==}
+ crossws@0.3.5:
+ resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==}
css-select@5.1.0:
resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==}
@@ -1150,9 +1162,21 @@ packages:
supports-color:
optional: true
+ debug@4.4.1:
+ resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
decode-named-character-reference@1.1.0:
resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==}
+ decode-named-character-reference@1.2.0:
+ resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==}
+
dedent-js@1.0.1:
resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==}
@@ -1174,8 +1198,8 @@ packages:
destr@2.0.5:
resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
- detect-libc@2.0.3:
- resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
+ detect-libc@2.0.4:
+ resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
engines: {node: '>=8'}
deterministic-object-hash@2.0.2:
@@ -1229,25 +1253,26 @@ packages:
emmet@2.4.11:
resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==}
- emoji-regex-xs@1.0.0:
- resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==}
-
emoji-regex@10.4.0:
resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==}
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
- encoding-sniffer@0.2.0:
- resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==}
+ encoding-sniffer@0.2.1:
+ resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==}
- end-of-stream@1.4.4:
- resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
+ end-of-stream@1.4.5:
+ resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
entities@4.5.0:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
+ entities@6.0.1:
+ resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
+ engines: {node: '>=0.12'}
+
es-define-property@1.0.1:
resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
engines: {node: '>= 0.4'}
@@ -1256,8 +1281,8 @@ packages:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
- es-module-lexer@1.6.0:
- resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==}
+ es-module-lexer@1.7.0:
+ resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}
es-object-atoms@1.1.1:
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
@@ -1273,8 +1298,8 @@ packages:
esast-util-from-js@2.0.1:
resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==}
- esbuild@0.25.2:
- resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==}
+ esbuild@0.25.5:
+ resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==}
engines: {node: '>=18'}
hasBin: true
@@ -1293,8 +1318,8 @@ packages:
resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==}
engines: {node: '>=6'}
- esrap@1.4.6:
- resolution: {integrity: sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==}
+ esrap@1.4.9:
+ resolution: {integrity: sha512-3OMlcd0a03UGuZpPeUC1HxR3nA23l+HEyCiZw3b3FumJIN9KphoGzDJKMXI1S72jVS1dsenDyQC0kJlO1U9E1g==}
estree-util-attach-comments@3.0.0:
resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==}
@@ -1323,11 +1348,11 @@ packages:
eventemitter3@5.0.1:
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
- expressive-code@0.41.1:
- resolution: {integrity: sha512-O3+bDWGw+y7b0L3Y3xc7LbPgRTvFy2tqXzYY24TBbDwnHbIwb0OFdS4v+1PpX6NEsF7XsVv9sqY5xo22yWe7Hw==}
+ expressive-code@0.41.2:
+ resolution: {integrity: sha512-aLZiZaqorRtNExtGpUjK9zFH9aTpWeoTXMyLo4b4IcuXfPqtLPPxhRm/QlPb8QqIcMMXnSiGRHSFpQfX0m7HJw==}
- exsolve@1.0.5:
- resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==}
+ exsolve@1.0.6:
+ resolution: {integrity: sha512-Q05uIdxhPBVBwK29gcPsl2K220xSBy52TZQPdeYWE0zOs8jM+yJ6y5h7jm6cpAo1p+OOMZRIj/Ftku4EQQBLnQ==}
extend@3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
@@ -1353,8 +1378,8 @@ packages:
fd-slicer@1.1.0:
resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==}
- fdir@6.4.3:
- resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==}
+ fdir@6.4.6:
+ resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==}
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
@@ -1382,11 +1407,14 @@ packages:
debug:
optional: true
+ fontace@0.3.0:
+ resolution: {integrity: sha512-czoqATrcnxgWb/nAkfyIrRp6Q8biYj7nGnL6zfhTcX+JKKpWHFBnb8uNMw/kZr7u++3Y3wYSYoZgHkCcsuBpBg==}
+
fontkit@2.0.4:
resolution: {integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==}
- form-data@4.0.2:
- resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==}
+ form-data@4.0.3:
+ resolution: {integrity: sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==}
engines: {node: '>= 6'}
formdata-polyfill@4.0.10:
@@ -1440,8 +1468,8 @@ packages:
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
engines: {node: '>= 0.4'}
- h3@1.15.1:
- resolution: {integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==}
+ h3@1.15.3:
+ resolution: {integrity: sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ==}
has-symbols@1.1.0:
resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
@@ -1464,9 +1492,6 @@ packages:
hast-util-from-html@2.0.3:
resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==}
- hast-util-from-parse5@8.0.1:
- resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==}
-
hast-util-from-parse5@8.0.3:
resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==}
@@ -1515,9 +1540,6 @@ packages:
hast-util-whitespace@3.0.0:
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
- hastscript@8.0.0:
- resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==}
-
hastscript@9.0.1:
resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==}
@@ -1533,8 +1555,8 @@ packages:
htmlparser2@9.1.0:
resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==}
- http-cache-semantics@4.1.1:
- resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
+ http-cache-semantics@4.2.0:
+ resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==}
i18next@23.16.8:
resolution: {integrity: sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==}
@@ -1970,11 +1992,11 @@ packages:
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
- oniguruma-parser@0.11.2:
- resolution: {integrity: sha512-F7Ld4oDZJCI5/wCZ8AOffQbqjSzIRpKH7I/iuSs1SkhZeCj0wS6PMZ4W6VA16TWHrAo0Y9bBKEJOe7tvwcTXnw==}
+ oniguruma-parser@0.12.1:
+ resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==}
- oniguruma-to-es@4.2.0:
- resolution: {integrity: sha512-MDPs6KSOLS0tKQ7joqg44dRIRZUyotfTy0r+7oEEs6VwWWP0+E2PPDYWMFN0aqOjRyWHBYq7RfKw9GQk2S2z5g==}
+ oniguruma-to-es@4.3.3:
+ resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==}
p-limit@6.2.0:
resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==}
@@ -1988,11 +2010,8 @@ packages:
resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==}
engines: {node: '>=14.16'}
- package-manager-detector@0.2.11:
- resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==}
-
- package-manager-detector@1.2.0:
- resolution: {integrity: sha512-PutJepsOtsqVfUsxCzgTTpyXmiAgvKptIgY4th5eq5UXXFhj5PxfQ9hnGkypMeovpAvVshFRItoFHYO18TCOqA==}
+ package-manager-detector@1.3.0:
+ resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==}
pagefind@1.3.0:
resolution: {integrity: sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw==}
@@ -2013,11 +2032,8 @@ packages:
parse5-parser-stream@7.1.2:
resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==}
- parse5@7.1.2:
- resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
-
- parse5@7.2.1:
- resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==}
+ parse5@7.3.0:
+ resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
pascal-case@3.1.2:
resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
@@ -2064,8 +2080,8 @@ packages:
resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
engines: {node: '>=4'}
- postcss@8.5.3:
- resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
+ postcss@8.5.6:
+ resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
prettier@2.8.7:
@@ -2087,11 +2103,14 @@ packages:
property-information@7.0.0:
resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==}
+ property-information@7.1.0:
+ resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
+
proxy-from-env@1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
- pump@3.0.2:
- resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==}
+ pump@3.0.3:
+ resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==}
quansync@0.2.10:
resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==}
@@ -2118,9 +2137,6 @@ packages:
recma-stringify@1.0.0:
resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==}
- regenerator-runtime@0.14.1:
- resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
-
regex-recursion@6.0.2:
resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
@@ -2130,8 +2146,8 @@ packages:
regex@6.0.1:
resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==}
- rehype-expressive-code@0.41.1:
- resolution: {integrity: sha512-QApC3js5/AwrF6VqWfGsNY9Y1qLC0LQDWcqOHEAhbl3CB4e5GMor2SpWaGOWBW+mmrkVCEymayLPCPIbx0tcQQ==}
+ rehype-expressive-code@0.41.2:
+ resolution: {integrity: sha512-vHYfWO9WxAw6kHHctddOt+P4266BtyT1mrOIuxJD+1ELuvuJAa5uBIhYt0OVMyOhlvf57hzWOXJkHnMhpaHyxw==}
rehype-format@5.0.1:
resolution: {integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==}
@@ -2220,8 +2236,8 @@ packages:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
- rollup@4.40.0:
- resolution: {integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==}
+ rollup@4.43.0:
+ resolution: {integrity: sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -2239,16 +2255,21 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ semver@7.7.2:
+ resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==}
+ engines: {node: '>=10'}
+ hasBin: true
+
sharp@0.33.5:
resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- sharp@0.34.1:
- resolution: {integrity: sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==}
+ sharp@0.34.2:
+ resolution: {integrity: sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- shiki@3.2.2:
- resolution: {integrity: sha512-0qWBkM2t/0NXPRcVgtLhtHv6Ak3Q5yI4K/ggMqcgLRKm4+pCs3namgZlhlat/7u2CuqNtlShNs9lENOG6n7UaQ==}
+ shiki@3.6.0:
+ resolution: {integrity: sha512-tKn/Y0MGBTffQoklaATXmTqDU02zx8NYBGQ+F6gy87/YjKbizcLd+Cybh/0ZtOBX9r1NEnAy/GTRDKtOsc1L9w==}
simple-swizzle@0.2.2:
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
@@ -2261,8 +2282,8 @@ packages:
engines: {node: '>=14.0.0', npm: '>=6.0.0'}
hasBin: true
- smol-toml@1.3.3:
- resolution: {integrity: sha512-KMVLNWu490KlNfD0lbfDBUktJIEaZRBj1eeK0SMfdpO/rfyARIzlnPVI1Ge4l0vtSJmQUAiGKxMyLGrCT38iyA==}
+ smol-toml@1.3.4:
+ resolution: {integrity: sha512-UOPtVuYkzYGee0Bd2Szz8d2G3RfMfJ2t3qVdZUAozZyAk+a0Sxa+QKix0YCwjL/A1RR0ar44nCxaoN9FxdJGwA==}
engines: {node: '>= 18'}
source-map-js@1.2.1:
@@ -2280,8 +2301,8 @@ packages:
resolution: {integrity: sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw==}
hasBin: true
- starlight-links-validator@0.16.0:
- resolution: {integrity: sha512-wInToor19C7UxhesPuxTBIhB1LH1wzNQHD4HaumfcB+yFhg5u80yQEnkZDrABHrUEEEwFm//NoZbWhnUj1m2ug==}
+ starlight-links-validator@0.17.0:
+ resolution: {integrity: sha512-D+j0W7Z6CVSxPlt8jskBcApqaAU16JmuxE4c483Xj2sWJteiz0wW2xvk0cG3o/cW1q9x44Ezc668OnUi3a5LAA==}
engines: {node: '>=18.17.1'}
peerDependencies:
'@astrojs/starlight': '>=0.32.0'
@@ -2308,20 +2329,20 @@ packages:
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
engines: {node: '>=12'}
- style-to-js@1.1.16:
- resolution: {integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==}
+ style-to-js@1.1.17:
+ resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==}
- style-to-object@1.0.8:
- resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==}
+ style-to-object@1.0.9:
+ resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==}
- svelte2tsx@0.7.36:
- resolution: {integrity: sha512-nBlERuCZRwmpebC8m0vDqZ9oaKsqW8frQS2l3zwFQW1voQIkItYtHxh1F5OTZEmE0meDIH6cxU36eIOQVOxlCw==}
+ svelte2tsx@0.7.39:
+ resolution: {integrity: sha512-NX8a7eSqF1hr6WKArvXr7TV7DeE+y0kDFD7L5JP7TWqlwFidzGKaG415p992MHREiiEWOv2xIWXJ+mlONofs0A==}
peerDependencies:
svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0
typescript: ^4.9.4 || ^5.0.0
- svelte@5.27.3:
- resolution: {integrity: sha512-MK16NUEFwAunCkdJpIIJ6hvKElx0zFlKMqQd7NAIugMfrL0YeOH8VEn5pg9g2Q6RLj2JrGJL6c0zaAwmXx/nHQ==}
+ svelte@5.34.5:
+ resolution: {integrity: sha512-MMqhT/iTdwExPcyBCt+Bqxv7FV+LpSciej/gVgd/Vj7zRF9iPgRWGBxiVAwfzPYAOgwgFigIAQV8VJfhyB08/w==}
engines: {node: '>=18'}
svgo@3.3.2:
@@ -2339,8 +2360,11 @@ packages:
tinyexec@0.3.2:
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
- tinyglobby@0.2.12:
- resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==}
+ tinyexec@1.0.1:
+ resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==}
+
+ tinyglobby@0.2.14:
+ resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
engines: {node: '>=12.0.0'}
to-regex-range@5.0.1:
@@ -2356,8 +2380,8 @@ packages:
trough@2.2.0:
resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
- tsconfck@3.1.5:
- resolution: {integrity: sha512-CLDfGgUp7XPswWnezWwsCRxNmgQjhYq3VXHM0/XIRxhVrKw0M1if9agzryh1QS3nxjCROvV+xWxoJO1YctzzWg==}
+ tsconfck@3.1.6:
+ resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==}
engines: {node: ^18 || >=20}
hasBin: true
peerDependencies:
@@ -2369,8 +2393,8 @@ packages:
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
- type-fest@4.40.0:
- resolution: {integrity: sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==}
+ type-fest@4.41.0:
+ resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'}
typesafe-path@0.2.2:
@@ -2393,11 +2417,11 @@ packages:
uncrypto@0.1.3:
resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
- undici-types@6.21.0:
- resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
+ undici-types@7.8.0:
+ resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==}
- undici@6.21.2:
- resolution: {integrity: sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==}
+ undici@6.21.3:
+ resolution: {integrity: sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==}
engines: {node: '>=18.17'}
unicode-properties@1.4.1:
@@ -2409,8 +2433,8 @@ packages:
unified@11.0.5:
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
- unifont@0.2.0:
- resolution: {integrity: sha512-RoF14/tOhLvDa7R5K6A3PjsfJVFKvadvRpWjfV1ttabUe9704P1ie9z1ABLWEts/8SxrBVePav/XhgeFNltpsw==}
+ unifont@0.5.0:
+ resolution: {integrity: sha512-4DueXMP5Hy4n607sh+vJ+rajoLu778aU3GzqeTCqsD/EaUcvqZT9wPC8kgK6Vjh22ZskrxyRCR71FwNOaYn6jA==}
unist-util-find-after@5.0.0:
resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==}
@@ -2442,8 +2466,8 @@ packages:
unist-util-visit@5.0.0:
resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
- unstorage@1.15.0:
- resolution: {integrity: sha512-m40eHdGY/gA6xAPqo8eaxqXgBuzQTlAKfmB1iF7oCKXE1HfwHwzDJBywK+qQGn52dta+bPlZluPF7++yR3p/bg==}
+ unstorage@1.16.0:
+ resolution: {integrity: sha512-WQ37/H5A7LcRPWfYOrDa1Ys02xAbpPJq6q5GkO88FBXVSQzHd7+BjEwfRqyaSWCv9MbsJy058GWjjPjcJ16GGA==}
peerDependencies:
'@azure/app-configuration': ^1.8.0
'@azure/cosmos': ^4.2.0
@@ -2451,7 +2475,7 @@ packages:
'@azure/identity': ^4.6.0
'@azure/keyvault-secrets': ^4.9.0
'@azure/storage-blob': ^12.26.0
- '@capacitor/preferences': ^6.0.3
+ '@capacitor/preferences': ^6.0.3 || ^7.0.0
'@deno/kv': '>=0.9.0'
'@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0
'@planetscale/database': ^1.19.0
@@ -2513,8 +2537,8 @@ packages:
vfile@6.0.3:
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
- vite@6.3.2:
- resolution: {integrity: sha512-ZSvGOXKGceizRQIZSz7TGJ0pS3QLlVY/9hwxVh17W3re67je1RKYzFHivZ/t0tubU78Vkyb9WnHPENSBCzbckg==}
+ vite@6.3.5:
+ resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
peerDependencies:
@@ -2736,9 +2760,9 @@ packages:
engines: {node: '>= 14'}
hasBin: true
- yaml@2.7.1:
- resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==}
- engines: {node: '>= 14'}
+ yaml@2.8.0:
+ resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==}
+ engines: {node: '>= 14.6'}
hasBin: true
yargs-parser@21.1.1:
@@ -2756,8 +2780,8 @@ packages:
resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==}
engines: {node: '>=12.20'}
- yocto-spinner@0.2.1:
- resolution: {integrity: sha512-lHHxjh0bXaLgdJy3cNnVb/F9myx3CkhrvSOEVTkaUgNMXnYFa2xYPVhtGnqhh3jErY2gParBOHallCbc7NrlZQ==}
+ yocto-spinner@0.2.3:
+ resolution: {integrity: sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==}
engines: {node: '>=18.19'}
yoctocolors@2.1.1:
@@ -2778,8 +2802,8 @@ packages:
typescript: ^4.9.4 || ^5.0.2
zod: ^3
- zod@3.24.3:
- resolution: {integrity: sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==}
+ zod@3.25.67:
+ resolution: {integrity: sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==}
zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
@@ -2791,10 +2815,10 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.8
'@jridgewell/trace-mapping': 0.3.25
- '@antfu/install-pkg@1.0.0':
+ '@antfu/install-pkg@1.1.0':
dependencies:
- package-manager-detector: 0.2.11
- tinyexec: 0.3.2
+ package-manager-detector: 1.3.0
+ tinyexec: 1.0.1
'@antfu/utils@8.1.1': {}
@@ -2811,7 +2835,7 @@ snapshots:
'@astrojs/compiler@2.10.3': {}
- '@astrojs/compiler@2.11.0': {}
+ '@astrojs/compiler@2.12.2': {}
'@astrojs/internal-helpers@0.6.1': {}
@@ -2838,10 +2862,10 @@ snapshots:
transitivePeerDependencies:
- typescript
- '@astrojs/markdown-remark@6.3.1':
+ '@astrojs/markdown-remark@6.3.2':
dependencies:
'@astrojs/internal-helpers': 0.6.1
- '@astrojs/prism': 3.2.0
+ '@astrojs/prism': 3.3.0
github-slugger: 2.0.0
hast-util-from-html: 2.0.3
hast-util-to-text: 4.0.2
@@ -2854,8 +2878,8 @@ snapshots:
remark-parse: 11.0.0
remark-rehype: 11.1.2
remark-smartypants: 3.0.2
- shiki: 3.2.2
- smol-toml: 1.3.3
+ shiki: 3.6.0
+ smol-toml: 1.3.4
unified: 11.0.5
unist-util-remove-position: 5.0.0
unist-util-visit: 5.0.0
@@ -2864,13 +2888,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@astrojs/mdx@4.2.4(astro@5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1))':
+ '@astrojs/mdx@4.3.0(astro@5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0))':
dependencies:
- '@astrojs/markdown-remark': 6.3.1
- '@mdx-js/mdx': 3.1.0(acorn@8.14.1)
- acorn: 8.14.1
- astro: 5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1)
- es-module-lexer: 1.6.0
+ '@astrojs/markdown-remark': 6.3.2
+ '@mdx-js/mdx': 3.1.0(acorn@8.15.0)
+ acorn: 8.15.0
+ astro: 5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0)
+ es-module-lexer: 1.7.0
estree-util-visit: 2.0.0
hast-util-to-html: 9.0.5
kleur: 4.1.5
@@ -2883,27 +2907,27 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@astrojs/prism@3.2.0':
+ '@astrojs/prism@3.3.0':
dependencies:
prismjs: 1.30.0
- '@astrojs/sitemap@3.3.0':
+ '@astrojs/sitemap@3.4.1':
dependencies:
sitemap: 8.0.0
stream-replace-string: 2.0.0
- zod: 3.24.3
+ zod: 3.25.67
- '@astrojs/starlight@0.34.0(astro@5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1))':
+ '@astrojs/starlight@0.34.4(astro@5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0))':
dependencies:
- '@astrojs/markdown-remark': 6.3.1
- '@astrojs/mdx': 4.2.4(astro@5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1))
- '@astrojs/sitemap': 3.3.0
+ '@astrojs/markdown-remark': 6.3.2
+ '@astrojs/mdx': 4.3.0(astro@5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0))
+ '@astrojs/sitemap': 3.4.1
'@pagefind/default-ui': 1.3.0
'@types/hast': 3.0.4
'@types/js-yaml': 4.0.9
'@types/mdast': 4.0.4
- astro: 5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1)
- astro-expressive-code: 0.41.1(astro@5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1))
+ astro: 5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0)
+ astro-expressive-code: 0.41.2(astro@5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0))
bcp-47: 2.1.0
hast-util-from-html: 2.0.3
hast-util-select: 6.0.4
@@ -2926,14 +2950,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@astrojs/svelte@7.0.10(@types/node@22.14.1)(astro@5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1))(svelte@5.27.3)(typescript@5.8.3)(yaml@2.7.1)':
+ '@astrojs/svelte@7.1.0(@types/node@24.0.3)(astro@5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0))(svelte@5.34.5)(typescript@5.8.3)(yaml@2.8.0)':
dependencies:
- '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.27.3)(vite@6.3.2(@types/node@22.14.1)(yaml@2.7.1))
- astro: 5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1)
- svelte: 5.27.3
- svelte2tsx: 0.7.36(svelte@5.27.3)(typescript@5.8.3)
+ '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.34.5)(vite@6.3.5(@types/node@24.0.3)(yaml@2.8.0))
+ astro: 5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0)
+ svelte: 5.34.5
+ svelte2tsx: 0.7.39(svelte@5.34.5)(typescript@5.8.3)
typescript: 5.8.3
- vite: 6.3.2(@types/node@22.14.1)(yaml@2.7.1)
+ vite: 6.3.5(@types/node@24.0.3)(yaml@2.8.0)
transitivePeerDependencies:
- '@types/node'
- jiti
@@ -2948,10 +2972,10 @@ snapshots:
- tsx
- yaml
- '@astrojs/telemetry@3.2.0':
+ '@astrojs/telemetry@3.3.0':
dependencies:
ci-info: 4.2.0
- debug: 4.4.0
+ debug: 4.4.1
dlv: 1.1.3
dset: 3.1.4
is-docker: 3.0.0
@@ -2964,22 +2988,20 @@ snapshots:
dependencies:
yaml: 2.5.1
- '@babel/helper-string-parser@7.25.9': {}
+ '@babel/helper-string-parser@7.27.1': {}
- '@babel/helper-validator-identifier@7.25.9': {}
+ '@babel/helper-validator-identifier@7.27.1': {}
- '@babel/parser@7.27.0':
+ '@babel/parser@7.27.5':
dependencies:
- '@babel/types': 7.27.0
+ '@babel/types': 7.27.6
- '@babel/runtime@7.27.0':
- dependencies:
- regenerator-runtime: 0.14.1
+ '@babel/runtime@7.27.6': {}
- '@babel/types@7.27.0':
+ '@babel/types@7.27.6':
dependencies:
- '@babel/helper-string-parser': 7.25.9
- '@babel/helper-validator-identifier': 7.25.9
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.27.1
'@capsizecss/unpack@2.4.0':
dependencies:
@@ -3019,112 +3041,112 @@ snapshots:
tslib: 2.8.1
optional: true
- '@esbuild/aix-ppc64@0.25.2':
+ '@esbuild/aix-ppc64@0.25.5':
optional: true
- '@esbuild/android-arm64@0.25.2':
+ '@esbuild/android-arm64@0.25.5':
optional: true
- '@esbuild/android-arm@0.25.2':
+ '@esbuild/android-arm@0.25.5':
optional: true
- '@esbuild/android-x64@0.25.2':
+ '@esbuild/android-x64@0.25.5':
optional: true
- '@esbuild/darwin-arm64@0.25.2':
+ '@esbuild/darwin-arm64@0.25.5':
optional: true
- '@esbuild/darwin-x64@0.25.2':
+ '@esbuild/darwin-x64@0.25.5':
optional: true
- '@esbuild/freebsd-arm64@0.25.2':
+ '@esbuild/freebsd-arm64@0.25.5':
optional: true
- '@esbuild/freebsd-x64@0.25.2':
+ '@esbuild/freebsd-x64@0.25.5':
optional: true
- '@esbuild/linux-arm64@0.25.2':
+ '@esbuild/linux-arm64@0.25.5':
optional: true
- '@esbuild/linux-arm@0.25.2':
+ '@esbuild/linux-arm@0.25.5':
optional: true
- '@esbuild/linux-ia32@0.25.2':
+ '@esbuild/linux-ia32@0.25.5':
optional: true
- '@esbuild/linux-loong64@0.25.2':
+ '@esbuild/linux-loong64@0.25.5':
optional: true
- '@esbuild/linux-mips64el@0.25.2':
+ '@esbuild/linux-mips64el@0.25.5':
optional: true
- '@esbuild/linux-ppc64@0.25.2':
+ '@esbuild/linux-ppc64@0.25.5':
optional: true
- '@esbuild/linux-riscv64@0.25.2':
+ '@esbuild/linux-riscv64@0.25.5':
optional: true
- '@esbuild/linux-s390x@0.25.2':
+ '@esbuild/linux-s390x@0.25.5':
optional: true
- '@esbuild/linux-x64@0.25.2':
+ '@esbuild/linux-x64@0.25.5':
optional: true
- '@esbuild/netbsd-arm64@0.25.2':
+ '@esbuild/netbsd-arm64@0.25.5':
optional: true
- '@esbuild/netbsd-x64@0.25.2':
+ '@esbuild/netbsd-x64@0.25.5':
optional: true
- '@esbuild/openbsd-arm64@0.25.2':
+ '@esbuild/openbsd-arm64@0.25.5':
optional: true
- '@esbuild/openbsd-x64@0.25.2':
+ '@esbuild/openbsd-x64@0.25.5':
optional: true
- '@esbuild/sunos-x64@0.25.2':
+ '@esbuild/sunos-x64@0.25.5':
optional: true
- '@esbuild/win32-arm64@0.25.2':
+ '@esbuild/win32-arm64@0.25.5':
optional: true
- '@esbuild/win32-ia32@0.25.2':
+ '@esbuild/win32-ia32@0.25.5':
optional: true
- '@esbuild/win32-x64@0.25.2':
+ '@esbuild/win32-x64@0.25.5':
optional: true
- '@expressive-code/core@0.41.1':
+ '@expressive-code/core@0.41.2':
dependencies:
'@ctrl/tinycolor': 4.1.0
hast-util-select: 6.0.4
hast-util-to-html: 9.0.5
hast-util-to-text: 4.0.2
hastscript: 9.0.1
- postcss: 8.5.3
- postcss-nested: 6.2.0(postcss@8.5.3)
+ postcss: 8.5.6
+ postcss-nested: 6.2.0(postcss@8.5.6)
unist-util-visit: 5.0.0
unist-util-visit-parents: 6.0.1
- '@expressive-code/plugin-frames@0.41.1':
+ '@expressive-code/plugin-frames@0.41.2':
dependencies:
- '@expressive-code/core': 0.41.1
+ '@expressive-code/core': 0.41.2
- '@expressive-code/plugin-shiki@0.41.1':
+ '@expressive-code/plugin-shiki@0.41.2':
dependencies:
- '@expressive-code/core': 0.41.1
- shiki: 3.2.2
+ '@expressive-code/core': 0.41.2
+ shiki: 3.6.0
- '@expressive-code/plugin-text-markers@0.41.1':
+ '@expressive-code/plugin-text-markers@0.41.2':
dependencies:
- '@expressive-code/core': 0.41.1
+ '@expressive-code/core': 0.41.2
'@iconify/tools@4.1.2':
dependencies:
'@iconify/types': 2.0.0
'@iconify/utils': 2.3.0
'@types/tar': 6.1.13
- axios: 1.8.4
+ axios: 1.10.0
cheerio: 1.0.0
domhandler: 5.0.3
extract-zip: 2.0.1
@@ -3140,10 +3162,10 @@ snapshots:
'@iconify/utils@2.3.0':
dependencies:
- '@antfu/install-pkg': 1.0.0
+ '@antfu/install-pkg': 1.1.0
'@antfu/utils': 8.1.1
'@iconify/types': 2.0.0
- debug: 4.4.0
+ debug: 4.4.1
globals: 15.15.0
kolorist: 1.8.0
local-pkg: 1.1.1
@@ -3156,7 +3178,7 @@ snapshots:
'@img/sharp-libvips-darwin-arm64': 1.0.4
optional: true
- '@img/sharp-darwin-arm64@0.34.1':
+ '@img/sharp-darwin-arm64@0.34.2':
optionalDependencies:
'@img/sharp-libvips-darwin-arm64': 1.1.0
optional: true
@@ -3166,7 +3188,7 @@ snapshots:
'@img/sharp-libvips-darwin-x64': 1.0.4
optional: true
- '@img/sharp-darwin-x64@0.34.1':
+ '@img/sharp-darwin-x64@0.34.2':
optionalDependencies:
'@img/sharp-libvips-darwin-x64': 1.1.0
optional: true
@@ -3227,7 +3249,7 @@ snapshots:
'@img/sharp-libvips-linux-arm64': 1.0.4
optional: true
- '@img/sharp-linux-arm64@0.34.1':
+ '@img/sharp-linux-arm64@0.34.2':
optionalDependencies:
'@img/sharp-libvips-linux-arm64': 1.1.0
optional: true
@@ -3237,7 +3259,7 @@ snapshots:
'@img/sharp-libvips-linux-arm': 1.0.5
optional: true
- '@img/sharp-linux-arm@0.34.1':
+ '@img/sharp-linux-arm@0.34.2':
optionalDependencies:
'@img/sharp-libvips-linux-arm': 1.1.0
optional: true
@@ -3247,7 +3269,7 @@ snapshots:
'@img/sharp-libvips-linux-s390x': 1.0.4
optional: true
- '@img/sharp-linux-s390x@0.34.1':
+ '@img/sharp-linux-s390x@0.34.2':
optionalDependencies:
'@img/sharp-libvips-linux-s390x': 1.1.0
optional: true
@@ -3257,7 +3279,7 @@ snapshots:
'@img/sharp-libvips-linux-x64': 1.0.4
optional: true
- '@img/sharp-linux-x64@0.34.1':
+ '@img/sharp-linux-x64@0.34.2':
optionalDependencies:
'@img/sharp-libvips-linux-x64': 1.1.0
optional: true
@@ -3267,7 +3289,7 @@ snapshots:
'@img/sharp-libvips-linuxmusl-arm64': 1.0.4
optional: true
- '@img/sharp-linuxmusl-arm64@0.34.1':
+ '@img/sharp-linuxmusl-arm64@0.34.2':
optionalDependencies:
'@img/sharp-libvips-linuxmusl-arm64': 1.1.0
optional: true
@@ -3277,7 +3299,7 @@ snapshots:
'@img/sharp-libvips-linuxmusl-x64': 1.0.4
optional: true
- '@img/sharp-linuxmusl-x64@0.34.1':
+ '@img/sharp-linuxmusl-x64@0.34.2':
optionalDependencies:
'@img/sharp-libvips-linuxmusl-x64': 1.1.0
optional: true
@@ -3287,21 +3309,24 @@ snapshots:
'@emnapi/runtime': 1.4.3
optional: true
- '@img/sharp-wasm32@0.34.1':
+ '@img/sharp-wasm32@0.34.2':
dependencies:
'@emnapi/runtime': 1.4.3
optional: true
+ '@img/sharp-win32-arm64@0.34.2':
+ optional: true
+
'@img/sharp-win32-ia32@0.33.5':
optional: true
- '@img/sharp-win32-ia32@0.34.1':
+ '@img/sharp-win32-ia32@0.34.2':
optional: true
'@img/sharp-win32-x64@0.33.5':
optional: true
- '@img/sharp-win32-x64@0.34.1':
+ '@img/sharp-win32-x64@0.34.2':
optional: true
'@jridgewell/gen-mapping@0.3.8':
@@ -3321,9 +3346,9 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
- '@mdx-js/mdx@3.1.0(acorn@8.14.1)':
+ '@mdx-js/mdx@3.1.0(acorn@8.15.0)':
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
'@types/estree-jsx': 1.0.5
'@types/hast': 3.0.4
'@types/mdx': 2.0.13
@@ -3335,7 +3360,7 @@ snapshots:
hast-util-to-jsx-runtime: 2.3.6
markdown-extensions: 2.0.0
recma-build-jsx: 1.0.0
- recma-jsx: 1.0.0(acorn@8.14.1)
+ recma-jsx: 1.0.0(acorn@8.15.0)
recma-stringify: 1.0.0
rehype-recma: 1.0.0
remark-mdx: 3.1.0
@@ -3382,130 +3407,130 @@ snapshots:
'@pagefind/windows-x64@1.3.0':
optional: true
- '@rollup/pluginutils@5.1.4(rollup@4.40.0)':
+ '@rollup/pluginutils@5.2.0(rollup@4.43.0)':
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
estree-walker: 2.0.2
picomatch: 4.0.2
optionalDependencies:
- rollup: 4.40.0
+ rollup: 4.43.0
- '@rollup/rollup-android-arm-eabi@4.40.0':
+ '@rollup/rollup-android-arm-eabi@4.43.0':
optional: true
- '@rollup/rollup-android-arm64@4.40.0':
+ '@rollup/rollup-android-arm64@4.43.0':
optional: true
- '@rollup/rollup-darwin-arm64@4.40.0':
+ '@rollup/rollup-darwin-arm64@4.43.0':
optional: true
- '@rollup/rollup-darwin-x64@4.40.0':
+ '@rollup/rollup-darwin-x64@4.43.0':
optional: true
- '@rollup/rollup-freebsd-arm64@4.40.0':
+ '@rollup/rollup-freebsd-arm64@4.43.0':
optional: true
- '@rollup/rollup-freebsd-x64@4.40.0':
+ '@rollup/rollup-freebsd-x64@4.43.0':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.40.0':
+ '@rollup/rollup-linux-arm-gnueabihf@4.43.0':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.40.0':
+ '@rollup/rollup-linux-arm-musleabihf@4.43.0':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.40.0':
+ '@rollup/rollup-linux-arm64-gnu@4.43.0':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.40.0':
+ '@rollup/rollup-linux-arm64-musl@4.43.0':
optional: true
- '@rollup/rollup-linux-loongarch64-gnu@4.40.0':
+ '@rollup/rollup-linux-loongarch64-gnu@4.43.0':
optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.40.0':
+ '@rollup/rollup-linux-powerpc64le-gnu@4.43.0':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.40.0':
+ '@rollup/rollup-linux-riscv64-gnu@4.43.0':
optional: true
- '@rollup/rollup-linux-riscv64-musl@4.40.0':
+ '@rollup/rollup-linux-riscv64-musl@4.43.0':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.40.0':
+ '@rollup/rollup-linux-s390x-gnu@4.43.0':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.40.0':
+ '@rollup/rollup-linux-x64-gnu@4.43.0':
optional: true
- '@rollup/rollup-linux-x64-musl@4.40.0':
+ '@rollup/rollup-linux-x64-musl@4.43.0':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.40.0':
+ '@rollup/rollup-win32-arm64-msvc@4.43.0':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.40.0':
+ '@rollup/rollup-win32-ia32-msvc@4.43.0':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.40.0':
+ '@rollup/rollup-win32-x64-msvc@4.43.0':
optional: true
- '@shikijs/core@3.2.2':
+ '@shikijs/core@3.6.0':
dependencies:
- '@shikijs/types': 3.2.2
+ '@shikijs/types': 3.6.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
hast-util-to-html: 9.0.5
- '@shikijs/engine-javascript@3.2.2':
+ '@shikijs/engine-javascript@3.6.0':
dependencies:
- '@shikijs/types': 3.2.2
+ '@shikijs/types': 3.6.0
'@shikijs/vscode-textmate': 10.0.2
- oniguruma-to-es: 4.2.0
+ oniguruma-to-es: 4.3.3
- '@shikijs/engine-oniguruma@3.2.2':
+ '@shikijs/engine-oniguruma@3.6.0':
dependencies:
- '@shikijs/types': 3.2.2
+ '@shikijs/types': 3.6.0
'@shikijs/vscode-textmate': 10.0.2
- '@shikijs/langs@3.2.2':
+ '@shikijs/langs@3.6.0':
dependencies:
- '@shikijs/types': 3.2.2
+ '@shikijs/types': 3.6.0
- '@shikijs/themes@3.2.2':
+ '@shikijs/themes@3.6.0':
dependencies:
- '@shikijs/types': 3.2.2
+ '@shikijs/types': 3.6.0
- '@shikijs/types@3.2.2':
+ '@shikijs/types@3.6.0':
dependencies:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
'@shikijs/vscode-textmate@10.0.2': {}
- '@sveltejs/acorn-typescript@1.0.5(acorn@8.14.1)':
+ '@sveltejs/acorn-typescript@1.0.5(acorn@8.15.0)':
dependencies:
- acorn: 8.14.1
+ acorn: 8.15.0
- '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.27.3)(vite@6.3.2(@types/node@22.14.1)(yaml@2.7.1)))(svelte@5.27.3)(vite@6.3.2(@types/node@22.14.1)(yaml@2.7.1))':
+ '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.34.5)(vite@6.3.5(@types/node@24.0.3)(yaml@2.8.0)))(svelte@5.34.5)(vite@6.3.5(@types/node@24.0.3)(yaml@2.8.0))':
dependencies:
- '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.27.3)(vite@6.3.2(@types/node@22.14.1)(yaml@2.7.1))
- debug: 4.4.0
- svelte: 5.27.3
- vite: 6.3.2(@types/node@22.14.1)(yaml@2.7.1)
+ '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.34.5)(vite@6.3.5(@types/node@24.0.3)(yaml@2.8.0))
+ debug: 4.4.1
+ svelte: 5.34.5
+ vite: 6.3.5(@types/node@24.0.3)(yaml@2.8.0)
transitivePeerDependencies:
- supports-color
- '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.27.3)(vite@6.3.2(@types/node@22.14.1)(yaml@2.7.1))':
+ '@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.34.5)(vite@6.3.5(@types/node@24.0.3)(yaml@2.8.0))':
dependencies:
- '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.27.3)(vite@6.3.2(@types/node@22.14.1)(yaml@2.7.1)))(svelte@5.27.3)(vite@6.3.2(@types/node@22.14.1)(yaml@2.7.1))
- debug: 4.4.0
+ '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.34.5)(vite@6.3.5(@types/node@24.0.3)(yaml@2.8.0)))(svelte@5.34.5)(vite@6.3.5(@types/node@24.0.3)(yaml@2.8.0))
+ debug: 4.4.1
deepmerge: 4.3.1
kleur: 4.1.5
magic-string: 0.30.17
- svelte: 5.27.3
- vite: 6.3.2(@types/node@22.14.1)(yaml@2.7.1)
- vitefu: 1.0.6(vite@6.3.2(@types/node@22.14.1)(yaml@2.7.1))
+ svelte: 5.34.5
+ vite: 6.3.5(@types/node@24.0.3)(yaml@2.8.0)
+ vitefu: 1.0.6(vite@6.3.5(@types/node@24.0.3)(yaml@2.8.0))
transitivePeerDependencies:
- supports-color
@@ -3521,10 +3546,16 @@ snapshots:
'@types/estree-jsx@1.0.5':
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
'@types/estree@1.0.7': {}
+ '@types/estree@1.0.8': {}
+
+ '@types/fontkit@2.0.8':
+ dependencies:
+ '@types/node': 24.0.3
+
'@types/hast@3.0.4':
dependencies:
'@types/unist': 3.0.3
@@ -3549,9 +3580,9 @@ snapshots:
'@types/node@17.0.45': {}
- '@types/node@22.14.1':
+ '@types/node@24.0.3':
dependencies:
- undici-types: 6.21.0
+ undici-types: 7.8.0
'@types/picomatch@3.0.2': {}
@@ -3561,7 +3592,7 @@ snapshots:
'@types/tar@6.1.13':
dependencies:
- '@types/node': 22.14.1
+ '@types/node': 24.0.3
minipass: 4.2.8
'@types/unist@2.0.11': {}
@@ -3570,7 +3601,7 @@ snapshots:
'@types/yauzl@2.10.3':
dependencies:
- '@types/node': 22.14.1
+ '@types/node': 24.0.3
optional: true
'@ungap/structured-clone@1.3.0': {}
@@ -3627,11 +3658,11 @@ snapshots:
'@xmldom/xmldom@0.9.8': {}
- acorn-jsx@5.3.2(acorn@8.14.1):
+ acorn-jsx@5.3.2(acorn@8.15.0):
dependencies:
- acorn: 8.14.1
+ acorn: 8.15.0
- acorn@8.14.1: {}
+ acorn@8.15.0: {}
ajv@8.17.1:
dependencies:
@@ -3669,17 +3700,17 @@ snapshots:
astring@1.9.0: {}
- astro-d2@0.7.0(astro@5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1)):
+ astro-d2@0.8.0(astro@5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0)):
dependencies:
- astro: 5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1)
+ astro: 5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0)
hast-util-from-html: 2.0.3
hast-util-to-html: 9.0.5
unist-util-visit: 5.0.0
- astro-expressive-code@0.41.1(astro@5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1)):
+ astro-expressive-code@0.41.2(astro@5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0)):
dependencies:
- astro: 5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1)
- rehype-expressive-code: 0.41.1
+ astro: 5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0)
+ rehype-expressive-code: 0.41.2
astro-iconify@1.2.0:
dependencies:
@@ -3691,16 +3722,16 @@ snapshots:
- debug
- supports-color
- astro@5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1):
+ astro@5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0):
dependencies:
- '@astrojs/compiler': 2.11.0
+ '@astrojs/compiler': 2.12.2
'@astrojs/internal-helpers': 0.6.1
- '@astrojs/markdown-remark': 6.3.1
- '@astrojs/telemetry': 3.2.0
+ '@astrojs/markdown-remark': 6.3.2
+ '@astrojs/telemetry': 3.3.0
'@capsizecss/unpack': 2.4.0
'@oslojs/encoding': 1.1.0
- '@rollup/pluginutils': 5.1.4(rollup@4.40.0)
- acorn: 8.14.1
+ '@rollup/pluginutils': 5.2.0(rollup@4.43.0)
+ acorn: 8.15.0
aria-query: 5.3.2
axobject-query: 4.1.0
boxen: 8.0.1
@@ -3709,19 +3740,21 @@ snapshots:
common-ancestor-path: 1.0.1
cookie: 1.0.2
cssesc: 3.0.0
- debug: 4.4.0
+ debug: 4.4.1
deterministic-object-hash: 2.0.2
devalue: 5.1.1
diff: 5.2.0
dlv: 1.1.3
dset: 3.1.4
- es-module-lexer: 1.6.0
- esbuild: 0.25.2
+ es-module-lexer: 1.7.0
+ esbuild: 0.25.5
estree-walker: 3.0.3
flattie: 1.1.1
+ fontace: 0.3.0
github-slugger: 2.0.0
html-escaper: 3.0.3
- http-cache-semantics: 4.1.1
+ http-cache-semantics: 4.2.0
+ import-meta-resolve: 4.1.0
js-yaml: 4.1.0
kleur: 4.1.5
magic-string: 0.30.17
@@ -3730,28 +3763,28 @@ snapshots:
neotraverse: 0.6.18
p-limit: 6.2.0
p-queue: 8.1.0
- package-manager-detector: 1.2.0
+ package-manager-detector: 1.3.0
picomatch: 4.0.2
prompts: 2.4.2
rehype: 13.0.2
- semver: 7.7.1
- shiki: 3.2.2
+ semver: 7.7.2
+ shiki: 3.6.0
tinyexec: 0.3.2
- tinyglobby: 0.2.12
- tsconfck: 3.1.5(typescript@5.8.3)
+ tinyglobby: 0.2.14
+ tsconfck: 3.1.6(typescript@5.8.3)
ultrahtml: 1.6.0
- unifont: 0.2.0
+ unifont: 0.5.0
unist-util-visit: 5.0.0
- unstorage: 1.15.0
+ unstorage: 1.16.0
vfile: 6.0.3
- vite: 6.3.2(@types/node@22.14.1)(yaml@2.7.1)
- vitefu: 1.0.6(vite@6.3.2(@types/node@22.14.1)(yaml@2.7.1))
+ vite: 6.3.5(@types/node@24.0.3)(yaml@2.8.0)
+ vitefu: 1.0.6(vite@6.3.5(@types/node@24.0.3)(yaml@2.8.0))
xxhash-wasm: 1.1.0
yargs-parser: 21.1.1
- yocto-spinner: 0.2.1
- zod: 3.24.3
- zod-to-json-schema: 3.24.5(zod@3.24.3)
- zod-to-ts: 1.2.0(typescript@5.8.3)(zod@3.24.3)
+ yocto-spinner: 0.2.3
+ zod: 3.25.67
+ zod-to-json-schema: 3.24.5(zod@3.25.67)
+ zod-to-ts: 1.2.0(typescript@5.8.3)(zod@3.25.67)
optionalDependencies:
sharp: 0.33.5
transitivePeerDependencies:
@@ -3791,10 +3824,10 @@ snapshots:
asynckit@0.4.0: {}
- axios@1.8.4:
+ axios@1.10.0:
dependencies:
follow-redirects: 1.15.9
- form-data: 4.0.2
+ form-data: 4.0.3
proxy-from-env: 1.1.0
transitivePeerDependencies:
- debug
@@ -3826,7 +3859,7 @@ snapshots:
chalk: 5.4.1
cli-boxes: 3.0.0
string-width: 7.2.0
- type-fest: 4.40.0
+ type-fest: 4.41.0
widest-line: 5.0.0
wrap-ansi: 9.0.0
@@ -3874,12 +3907,12 @@ snapshots:
dom-serializer: 2.0.0
domhandler: 5.0.3
domutils: 3.2.2
- encoding-sniffer: 0.2.0
+ encoding-sniffer: 0.2.1
htmlparser2: 9.1.0
- parse5: 7.2.1
+ parse5: 7.3.0
parse5-htmlparser2-tree-adapter: 7.1.0
parse5-parser-stream: 7.1.2
- undici: 6.21.2
+ undici: 6.21.3
whatwg-mimetype: 4.0.0
chokidar@4.0.3:
@@ -3948,7 +3981,7 @@ snapshots:
transitivePeerDependencies:
- encoding
- crossws@0.3.4:
+ crossws@0.3.5:
dependencies:
uncrypto: 0.1.3
@@ -3991,10 +4024,18 @@ snapshots:
dependencies:
ms: 2.1.3
+ debug@4.4.1:
+ dependencies:
+ ms: 2.1.3
+
decode-named-character-reference@1.1.0:
dependencies:
character-entities: 2.0.2
+ decode-named-character-reference@1.2.0:
+ dependencies:
+ character-entities: 2.0.2
+
dedent-js@1.0.1: {}
deepmerge@4.3.1: {}
@@ -4007,7 +4048,7 @@ snapshots:
destr@2.0.5: {}
- detect-libc@2.0.3: {}
+ detect-libc@2.0.4: {}
deterministic-object-hash@2.0.2:
dependencies:
@@ -4064,28 +4105,28 @@ snapshots:
'@emmetio/abbreviation': 2.3.3
'@emmetio/css-abbreviation': 2.1.8
- emoji-regex-xs@1.0.0: {}
-
emoji-regex@10.4.0: {}
emoji-regex@8.0.0: {}
- encoding-sniffer@0.2.0:
+ encoding-sniffer@0.2.1:
dependencies:
iconv-lite: 0.6.3
whatwg-encoding: 3.1.1
- end-of-stream@1.4.4:
+ end-of-stream@1.4.5:
dependencies:
once: 1.4.0
entities@4.5.0: {}
+ entities@6.0.1: {}
+
es-define-property@1.0.1: {}
es-errors@1.3.0: {}
- es-module-lexer@1.6.0: {}
+ es-module-lexer@1.7.0: {}
es-object-atoms@1.1.1:
dependencies:
@@ -4108,37 +4149,37 @@ snapshots:
esast-util-from-js@2.0.1:
dependencies:
'@types/estree-jsx': 1.0.5
- acorn: 8.14.1
+ acorn: 8.15.0
esast-util-from-estree: 2.0.0
vfile-message: 4.0.2
- esbuild@0.25.2:
+ esbuild@0.25.5:
optionalDependencies:
- '@esbuild/aix-ppc64': 0.25.2
- '@esbuild/android-arm': 0.25.2
- '@esbuild/android-arm64': 0.25.2
- '@esbuild/android-x64': 0.25.2
- '@esbuild/darwin-arm64': 0.25.2
- '@esbuild/darwin-x64': 0.25.2
- '@esbuild/freebsd-arm64': 0.25.2
- '@esbuild/freebsd-x64': 0.25.2
- '@esbuild/linux-arm': 0.25.2
- '@esbuild/linux-arm64': 0.25.2
- '@esbuild/linux-ia32': 0.25.2
- '@esbuild/linux-loong64': 0.25.2
- '@esbuild/linux-mips64el': 0.25.2
- '@esbuild/linux-ppc64': 0.25.2
- '@esbuild/linux-riscv64': 0.25.2
- '@esbuild/linux-s390x': 0.25.2
- '@esbuild/linux-x64': 0.25.2
- '@esbuild/netbsd-arm64': 0.25.2
- '@esbuild/netbsd-x64': 0.25.2
- '@esbuild/openbsd-arm64': 0.25.2
- '@esbuild/openbsd-x64': 0.25.2
- '@esbuild/sunos-x64': 0.25.2
- '@esbuild/win32-arm64': 0.25.2
- '@esbuild/win32-ia32': 0.25.2
- '@esbuild/win32-x64': 0.25.2
+ '@esbuild/aix-ppc64': 0.25.5
+ '@esbuild/android-arm': 0.25.5
+ '@esbuild/android-arm64': 0.25.5
+ '@esbuild/android-x64': 0.25.5
+ '@esbuild/darwin-arm64': 0.25.5
+ '@esbuild/darwin-x64': 0.25.5
+ '@esbuild/freebsd-arm64': 0.25.5
+ '@esbuild/freebsd-x64': 0.25.5
+ '@esbuild/linux-arm': 0.25.5
+ '@esbuild/linux-arm64': 0.25.5
+ '@esbuild/linux-ia32': 0.25.5
+ '@esbuild/linux-loong64': 0.25.5
+ '@esbuild/linux-mips64el': 0.25.5
+ '@esbuild/linux-ppc64': 0.25.5
+ '@esbuild/linux-riscv64': 0.25.5
+ '@esbuild/linux-s390x': 0.25.5
+ '@esbuild/linux-x64': 0.25.5
+ '@esbuild/netbsd-arm64': 0.25.5
+ '@esbuild/netbsd-x64': 0.25.5
+ '@esbuild/openbsd-arm64': 0.25.5
+ '@esbuild/openbsd-x64': 0.25.5
+ '@esbuild/sunos-x64': 0.25.5
+ '@esbuild/win32-arm64': 0.25.5
+ '@esbuild/win32-ia32': 0.25.5
+ '@esbuild/win32-x64': 0.25.5
escalade@3.2.0: {}
@@ -4148,13 +4189,13 @@ snapshots:
esm@3.2.25: {}
- esrap@1.4.6:
+ esrap@1.4.9:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
estree-util-attach-comments@3.0.0:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
estree-util-build-jsx@3.0.1:
dependencies:
@@ -4167,7 +4208,7 @@ snapshots:
estree-util-scope@1.0.0:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
devlop: 1.1.0
estree-util-to-js@2.0.0:
@@ -4185,24 +4226,24 @@ snapshots:
estree-walker@3.0.3:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
eventemitter3@5.0.1: {}
- expressive-code@0.41.1:
+ expressive-code@0.41.2:
dependencies:
- '@expressive-code/core': 0.41.1
- '@expressive-code/plugin-frames': 0.41.1
- '@expressive-code/plugin-shiki': 0.41.1
- '@expressive-code/plugin-text-markers': 0.41.1
+ '@expressive-code/core': 0.41.2
+ '@expressive-code/plugin-frames': 0.41.2
+ '@expressive-code/plugin-shiki': 0.41.2
+ '@expressive-code/plugin-text-markers': 0.41.2
- exsolve@1.0.5: {}
+ exsolve@1.0.6: {}
extend@3.0.2: {}
extract-zip@2.0.1:
dependencies:
- debug: 4.4.0
+ debug: 4.4.1
get-stream: 5.2.0
yauzl: 2.10.0
optionalDependencies:
@@ -4230,7 +4271,7 @@ snapshots:
dependencies:
pend: 1.2.0
- fdir@6.4.3(picomatch@4.0.2):
+ fdir@6.4.6(picomatch@4.0.2):
optionalDependencies:
picomatch: 4.0.2
@@ -4247,6 +4288,11 @@ snapshots:
follow-redirects@1.15.9: {}
+ fontace@0.3.0:
+ dependencies:
+ '@types/fontkit': 2.0.8
+ fontkit: 2.0.4
+
fontkit@2.0.4:
dependencies:
'@swc/helpers': 0.5.17
@@ -4259,11 +4305,12 @@ snapshots:
unicode-properties: 1.4.1
unicode-trie: 2.0.0
- form-data@4.0.2:
+ form-data@4.0.3:
dependencies:
asynckit: 0.4.0
combined-stream: 1.0.8
es-set-tostringtag: 2.1.0
+ hasown: 2.0.2
mime-types: 2.1.35
formdata-polyfill@4.0.10:
@@ -4303,7 +4350,7 @@ snapshots:
get-stream@5.2.0:
dependencies:
- pump: 3.0.2
+ pump: 3.0.3
github-slugger@2.0.0: {}
@@ -4315,10 +4362,10 @@ snapshots:
gopd@1.2.0: {}
- h3@1.15.1:
+ h3@1.15.3:
dependencies:
cookie-es: 1.2.2
- crossws: 0.3.4
+ crossws: 0.3.5
defu: 6.1.4
destr: 2.0.5
iron-webcrypto: 1.2.1
@@ -4356,29 +4403,18 @@ snapshots:
dependencies:
'@types/hast': 3.0.4
devlop: 1.1.0
- hast-util-from-parse5: 8.0.1
- parse5: 7.1.2
+ hast-util-from-parse5: 8.0.3
+ parse5: 7.3.0
vfile: 6.0.3
vfile-message: 4.0.2
- hast-util-from-parse5@8.0.1:
- dependencies:
- '@types/hast': 3.0.4
- '@types/unist': 3.0.3
- devlop: 1.1.0
- hastscript: 8.0.0
- property-information: 6.5.0
- vfile: 6.0.3
- vfile-location: 5.0.3
- web-namespaces: 2.0.1
-
hast-util-from-parse5@8.0.3:
dependencies:
'@types/hast': 3.0.4
'@types/unist': 3.0.3
devlop: 1.1.0
hastscript: 9.0.1
- property-information: 7.0.0
+ property-information: 7.1.0
vfile: 6.0.3
vfile-location: 5.0.3
web-namespaces: 2.0.1
@@ -4424,7 +4460,7 @@ snapshots:
hast-util-to-parse5: 8.0.0
html-void-elements: 3.0.0
mdast-util-to-hast: 13.2.0
- parse5: 7.2.1
+ parse5: 7.3.0
unist-util-position: 5.0.0
unist-util-visit: 5.0.0
vfile: 6.0.3
@@ -4444,14 +4480,14 @@ snapshots:
hast-util-to-string: 3.0.1
hast-util-whitespace: 3.0.0
nth-check: 2.1.1
- property-information: 7.0.0
+ property-information: 7.1.0
space-separated-tokens: 2.0.2
unist-util-visit: 5.0.0
zwitch: 2.0.4
hast-util-to-estree@3.1.3:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
'@types/estree-jsx': 1.0.5
'@types/hast': 3.0.4
comma-separated-tokens: 2.0.3
@@ -4462,9 +4498,9 @@ snapshots:
mdast-util-mdx-expression: 2.0.1
mdast-util-mdx-jsx: 3.2.0
mdast-util-mdxjs-esm: 2.0.1
- property-information: 7.0.0
+ property-information: 7.1.0
space-separated-tokens: 2.0.2
- style-to-js: 1.1.16
+ style-to-js: 1.1.17
unist-util-position: 5.0.0
zwitch: 2.0.4
transitivePeerDependencies:
@@ -4479,14 +4515,14 @@ snapshots:
hast-util-whitespace: 3.0.0
html-void-elements: 3.0.0
mdast-util-to-hast: 13.2.0
- property-information: 7.0.0
+ property-information: 7.1.0
space-separated-tokens: 2.0.2
stringify-entities: 4.0.4
zwitch: 2.0.4
hast-util-to-jsx-runtime@2.3.6:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
'@types/hast': 3.0.4
'@types/unist': 3.0.3
comma-separated-tokens: 2.0.3
@@ -4496,9 +4532,9 @@ snapshots:
mdast-util-mdx-expression: 2.0.1
mdast-util-mdx-jsx: 3.2.0
mdast-util-mdxjs-esm: 2.0.1
- property-information: 7.0.0
+ property-information: 7.1.0
space-separated-tokens: 2.0.2
- style-to-js: 1.1.16
+ style-to-js: 1.1.17
unist-util-position: 5.0.0
vfile-message: 4.0.2
transitivePeerDependencies:
@@ -4529,14 +4565,6 @@ snapshots:
dependencies:
'@types/hast': 3.0.4
- hastscript@8.0.0:
- dependencies:
- '@types/hast': 3.0.4
- comma-separated-tokens: 2.0.3
- hast-util-parse-selector: 4.0.0
- property-information: 6.5.0
- space-separated-tokens: 2.0.2
-
hastscript@9.0.1:
dependencies:
'@types/hast': 3.0.4
@@ -4558,11 +4586,11 @@ snapshots:
domutils: 3.2.2
entities: 4.5.0
- http-cache-semantics@4.1.1: {}
+ http-cache-semantics@4.2.0: {}
i18next@23.16.8:
dependencies:
- '@babel/runtime': 7.27.0
+ '@babel/runtime': 7.27.6
iconv-lite@0.6.3:
dependencies:
@@ -4609,7 +4637,7 @@ snapshots:
is-reference@3.0.3:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
is-wsl@3.1.0:
dependencies:
@@ -4666,8 +4694,8 @@ snapshots:
magicast@0.3.5:
dependencies:
- '@babel/parser': 7.27.0
- '@babel/types': 7.27.0
+ '@babel/parser': 7.27.5
+ '@babel/types': 7.27.6
source-map-js: 1.2.1
markdown-extensions@2.0.0: {}
@@ -4987,7 +5015,7 @@ snapshots:
micromark-extension-mdx-expression@3.0.1:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
devlop: 1.1.0
micromark-factory-mdx-expression: 2.0.3
micromark-factory-space: 2.0.1
@@ -4998,7 +5026,7 @@ snapshots:
micromark-extension-mdx-jsx@3.0.2:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
devlop: 1.1.0
estree-util-is-identifier-name: 3.0.0
micromark-factory-mdx-expression: 2.0.3
@@ -5015,7 +5043,7 @@ snapshots:
micromark-extension-mdxjs-esm@3.0.0:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
devlop: 1.1.0
micromark-core-commonmark: 2.0.3
micromark-util-character: 2.1.1
@@ -5027,8 +5055,8 @@ snapshots:
micromark-extension-mdxjs@3.0.0:
dependencies:
- acorn: 8.14.1
- acorn-jsx: 5.3.2(acorn@8.14.1)
+ acorn: 8.15.0
+ acorn-jsx: 5.3.2(acorn@8.15.0)
micromark-extension-mdx-expression: 3.0.1
micromark-extension-mdx-jsx: 3.0.2
micromark-extension-mdx-md: 2.0.0
@@ -5051,7 +5079,7 @@ snapshots:
micromark-factory-mdx-expression@2.0.3:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
devlop: 1.1.0
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
@@ -5115,7 +5143,7 @@ snapshots:
micromark-util-events-to-acorn@2.0.3:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
'@types/unist': 3.0.3
devlop: 1.1.0
estree-util-visit: 2.0.0
@@ -5202,7 +5230,7 @@ snapshots:
mlly@1.7.4:
dependencies:
- acorn: 8.14.1
+ acorn: 8.15.0
pathe: 2.0.3
pkg-types: 1.3.1
ufo: 1.6.1
@@ -5260,12 +5288,11 @@ snapshots:
dependencies:
wrappy: 1.0.2
- oniguruma-parser@0.11.2: {}
+ oniguruma-parser@0.12.1: {}
- oniguruma-to-es@4.2.0:
+ oniguruma-to-es@4.3.3:
dependencies:
- emoji-regex-xs: 1.0.0
- oniguruma-parser: 0.11.2
+ oniguruma-parser: 0.12.1
regex: 6.0.1
regex-recursion: 6.0.2
@@ -5280,11 +5307,7 @@ snapshots:
p-timeout@6.1.4: {}
- package-manager-detector@0.2.11:
- dependencies:
- quansync: 0.2.10
-
- package-manager-detector@1.2.0: {}
+ package-manager-detector@1.3.0: {}
pagefind@1.3.0:
optionalDependencies:
@@ -5301,7 +5324,7 @@ snapshots:
'@types/unist': 2.0.11
character-entities-legacy: 3.0.0
character-reference-invalid: 2.0.1
- decode-named-character-reference: 1.1.0
+ decode-named-character-reference: 1.2.0
is-alphanumerical: 2.0.1
is-decimal: 2.0.1
is-hexadecimal: 2.0.1
@@ -5318,19 +5341,15 @@ snapshots:
parse5-htmlparser2-tree-adapter@7.1.0:
dependencies:
domhandler: 5.0.3
- parse5: 7.2.1
+ parse5: 7.3.0
parse5-parser-stream@7.1.2:
dependencies:
- parse5: 7.2.1
-
- parse5@7.1.2:
- dependencies:
- entities: 4.5.0
+ parse5: 7.3.0
- parse5@7.2.1:
+ parse5@7.3.0:
dependencies:
- entities: 4.5.0
+ entities: 6.0.1
pascal-case@3.1.2:
dependencies:
@@ -5362,12 +5381,12 @@ snapshots:
pkg-types@2.1.0:
dependencies:
confbox: 0.2.2
- exsolve: 1.0.5
+ exsolve: 1.0.6
pathe: 2.0.3
- postcss-nested@6.2.0(postcss@8.5.3):
+ postcss-nested@6.2.0(postcss@8.5.6):
dependencies:
- postcss: 8.5.3
+ postcss: 8.5.6
postcss-selector-parser: 6.1.2
postcss-selector-parser@6.1.2:
@@ -5375,7 +5394,7 @@ snapshots:
cssesc: 3.0.0
util-deprecate: 1.0.2
- postcss@8.5.3:
+ postcss@8.5.6:
dependencies:
nanoid: 3.3.11
picocolors: 1.1.1
@@ -5395,11 +5414,13 @@ snapshots:
property-information@7.0.0: {}
+ property-information@7.1.0: {}
+
proxy-from-env@1.1.0: {}
- pump@3.0.2:
+ pump@3.0.3:
dependencies:
- end-of-stream: 1.4.4
+ end-of-stream: 1.4.5
once: 1.4.0
quansync@0.2.10: {}
@@ -5412,13 +5433,13 @@ snapshots:
recma-build-jsx@1.0.0:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
estree-util-build-jsx: 3.0.1
vfile: 6.0.3
- recma-jsx@1.0.0(acorn@8.14.1):
+ recma-jsx@1.0.0(acorn@8.15.0):
dependencies:
- acorn-jsx: 5.3.2(acorn@8.14.1)
+ acorn-jsx: 5.3.2(acorn@8.15.0)
estree-util-to-js: 2.0.0
recma-parse: 1.0.0
recma-stringify: 1.0.0
@@ -5428,20 +5449,18 @@ snapshots:
recma-parse@1.0.0:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
esast-util-from-js: 2.0.1
unified: 11.0.5
vfile: 6.0.3
recma-stringify@1.0.0:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
estree-util-to-js: 2.0.0
unified: 11.0.5
vfile: 6.0.3
- regenerator-runtime@0.14.1: {}
-
regex-recursion@6.0.2:
dependencies:
regex-utilities: 2.3.0
@@ -5452,9 +5471,9 @@ snapshots:
dependencies:
regex-utilities: 2.3.0
- rehype-expressive-code@0.41.1:
+ rehype-expressive-code@0.41.2:
dependencies:
- expressive-code: 0.41.1
+ expressive-code: 0.41.2
rehype-format@5.0.1:
dependencies:
@@ -5486,7 +5505,7 @@ snapshots:
rehype-recma@1.0.0:
dependencies:
- '@types/estree': 1.0.7
+ '@types/estree': 1.0.8
'@types/hast': 3.0.4
hast-util-to-estree: 3.1.3
transitivePeerDependencies:
@@ -5614,30 +5633,30 @@ snapshots:
reusify@1.0.4: {}
- rollup@4.40.0:
+ rollup@4.43.0:
dependencies:
'@types/estree': 1.0.7
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.40.0
- '@rollup/rollup-android-arm64': 4.40.0
- '@rollup/rollup-darwin-arm64': 4.40.0
- '@rollup/rollup-darwin-x64': 4.40.0
- '@rollup/rollup-freebsd-arm64': 4.40.0
- '@rollup/rollup-freebsd-x64': 4.40.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.40.0
- '@rollup/rollup-linux-arm-musleabihf': 4.40.0
- '@rollup/rollup-linux-arm64-gnu': 4.40.0
- '@rollup/rollup-linux-arm64-musl': 4.40.0
- '@rollup/rollup-linux-loongarch64-gnu': 4.40.0
- '@rollup/rollup-linux-powerpc64le-gnu': 4.40.0
- '@rollup/rollup-linux-riscv64-gnu': 4.40.0
- '@rollup/rollup-linux-riscv64-musl': 4.40.0
- '@rollup/rollup-linux-s390x-gnu': 4.40.0
- '@rollup/rollup-linux-x64-gnu': 4.40.0
- '@rollup/rollup-linux-x64-musl': 4.40.0
- '@rollup/rollup-win32-arm64-msvc': 4.40.0
- '@rollup/rollup-win32-ia32-msvc': 4.40.0
- '@rollup/rollup-win32-x64-msvc': 4.40.0
+ '@rollup/rollup-android-arm-eabi': 4.43.0
+ '@rollup/rollup-android-arm64': 4.43.0
+ '@rollup/rollup-darwin-arm64': 4.43.0
+ '@rollup/rollup-darwin-x64': 4.43.0
+ '@rollup/rollup-freebsd-arm64': 4.43.0
+ '@rollup/rollup-freebsd-x64': 4.43.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.43.0
+ '@rollup/rollup-linux-arm-musleabihf': 4.43.0
+ '@rollup/rollup-linux-arm64-gnu': 4.43.0
+ '@rollup/rollup-linux-arm64-musl': 4.43.0
+ '@rollup/rollup-linux-loongarch64-gnu': 4.43.0
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.43.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.43.0
+ '@rollup/rollup-linux-riscv64-musl': 4.43.0
+ '@rollup/rollup-linux-s390x-gnu': 4.43.0
+ '@rollup/rollup-linux-x64-gnu': 4.43.0
+ '@rollup/rollup-linux-x64-musl': 4.43.0
+ '@rollup/rollup-win32-arm64-msvc': 4.43.0
+ '@rollup/rollup-win32-ia32-msvc': 4.43.0
+ '@rollup/rollup-win32-x64-msvc': 4.43.0
fsevents: 2.3.3
run-parallel@1.2.0:
@@ -5650,11 +5669,13 @@ snapshots:
semver@7.7.1: {}
+ semver@7.7.2: {}
+
sharp@0.33.5:
dependencies:
color: 4.2.3
- detect-libc: 2.0.3
- semver: 7.7.1
+ detect-libc: 2.0.4
+ semver: 7.7.2
optionalDependencies:
'@img/sharp-darwin-arm64': 0.33.5
'@img/sharp-darwin-x64': 0.33.5
@@ -5677,14 +5698,14 @@ snapshots:
'@img/sharp-win32-x64': 0.33.5
optional: true
- sharp@0.34.1:
+ sharp@0.34.2:
dependencies:
color: 4.2.3
- detect-libc: 2.0.3
- semver: 7.7.1
+ detect-libc: 2.0.4
+ semver: 7.7.2
optionalDependencies:
- '@img/sharp-darwin-arm64': 0.34.1
- '@img/sharp-darwin-x64': 0.34.1
+ '@img/sharp-darwin-arm64': 0.34.2
+ '@img/sharp-darwin-x64': 0.34.2
'@img/sharp-libvips-darwin-arm64': 1.1.0
'@img/sharp-libvips-darwin-x64': 1.1.0
'@img/sharp-libvips-linux-arm': 1.1.0
@@ -5694,24 +5715,25 @@ snapshots:
'@img/sharp-libvips-linux-x64': 1.1.0
'@img/sharp-libvips-linuxmusl-arm64': 1.1.0
'@img/sharp-libvips-linuxmusl-x64': 1.1.0
- '@img/sharp-linux-arm': 0.34.1
- '@img/sharp-linux-arm64': 0.34.1
- '@img/sharp-linux-s390x': 0.34.1
- '@img/sharp-linux-x64': 0.34.1
- '@img/sharp-linuxmusl-arm64': 0.34.1
- '@img/sharp-linuxmusl-x64': 0.34.1
- '@img/sharp-wasm32': 0.34.1
- '@img/sharp-win32-ia32': 0.34.1
- '@img/sharp-win32-x64': 0.34.1
-
- shiki@3.2.2:
- dependencies:
- '@shikijs/core': 3.2.2
- '@shikijs/engine-javascript': 3.2.2
- '@shikijs/engine-oniguruma': 3.2.2
- '@shikijs/langs': 3.2.2
- '@shikijs/themes': 3.2.2
- '@shikijs/types': 3.2.2
+ '@img/sharp-linux-arm': 0.34.2
+ '@img/sharp-linux-arm64': 0.34.2
+ '@img/sharp-linux-s390x': 0.34.2
+ '@img/sharp-linux-x64': 0.34.2
+ '@img/sharp-linuxmusl-arm64': 0.34.2
+ '@img/sharp-linuxmusl-x64': 0.34.2
+ '@img/sharp-wasm32': 0.34.2
+ '@img/sharp-win32-arm64': 0.34.2
+ '@img/sharp-win32-ia32': 0.34.2
+ '@img/sharp-win32-x64': 0.34.2
+
+ shiki@3.6.0:
+ dependencies:
+ '@shikijs/core': 3.6.0
+ '@shikijs/engine-javascript': 3.6.0
+ '@shikijs/engine-oniguruma': 3.6.0
+ '@shikijs/langs': 3.6.0
+ '@shikijs/themes': 3.6.0
+ '@shikijs/types': 3.6.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
@@ -5728,7 +5750,7 @@ snapshots:
arg: 5.0.2
sax: 1.4.1
- smol-toml@1.3.3: {}
+ smol-toml@1.3.4: {}
source-map-js@1.2.1: {}
@@ -5742,9 +5764,9 @@ snapshots:
commander: 13.1.0
wicked-good-xpath: 1.3.0
- starlight-links-validator@0.16.0(@astrojs/starlight@0.34.0(astro@5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1))):
+ starlight-links-validator@0.17.0(@astrojs/starlight@0.34.4(astro@5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0))):
dependencies:
- '@astrojs/starlight': 0.34.0(astro@5.7.3(@types/node@22.14.1)(rollup@4.40.0)(typescript@5.8.3)(yaml@2.7.1))
+ '@astrojs/starlight': 0.34.4(astro@5.9.4(@types/node@24.0.3)(rollup@4.43.0)(typescript@5.8.3)(yaml@2.8.0))
'@types/picomatch': 3.0.2
github-slugger: 2.0.0
hast-util-from-html: 2.0.3
@@ -5785,33 +5807,33 @@ snapshots:
dependencies:
ansi-regex: 6.1.0
- style-to-js@1.1.16:
+ style-to-js@1.1.17:
dependencies:
- style-to-object: 1.0.8
+ style-to-object: 1.0.9
- style-to-object@1.0.8:
+ style-to-object@1.0.9:
dependencies:
inline-style-parser: 0.2.4
- svelte2tsx@0.7.36(svelte@5.27.3)(typescript@5.8.3):
+ svelte2tsx@0.7.39(svelte@5.34.5)(typescript@5.8.3):
dependencies:
dedent-js: 1.0.1
pascal-case: 3.1.2
- svelte: 5.27.3
+ svelte: 5.34.5
typescript: 5.8.3
- svelte@5.27.3:
+ svelte@5.34.5:
dependencies:
'@ampproject/remapping': 2.3.0
'@jridgewell/sourcemap-codec': 1.5.0
- '@sveltejs/acorn-typescript': 1.0.5(acorn@8.14.1)
- '@types/estree': 1.0.7
- acorn: 8.14.1
+ '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0)
+ '@types/estree': 1.0.8
+ acorn: 8.15.0
aria-query: 5.3.2
axobject-query: 4.1.0
clsx: 2.1.1
esm-env: 1.2.2
- esrap: 1.4.6
+ esrap: 1.4.9
is-reference: 3.0.3
locate-character: 3.0.0
magic-string: 0.30.17
@@ -5840,9 +5862,11 @@ snapshots:
tinyexec@0.3.2: {}
- tinyglobby@0.2.12:
+ tinyexec@1.0.1: {}
+
+ tinyglobby@0.2.14:
dependencies:
- fdir: 6.4.3(picomatch@4.0.2)
+ fdir: 6.4.6(picomatch@4.0.2)
picomatch: 4.0.2
to-regex-range@5.0.1:
@@ -5855,13 +5879,13 @@ snapshots:
trough@2.2.0: {}
- tsconfck@3.1.5(typescript@5.8.3):
+ tsconfck@3.1.6(typescript@5.8.3):
optionalDependencies:
typescript: 5.8.3
tslib@2.8.1: {}
- type-fest@4.40.0: {}
+ type-fest@4.41.0: {}
typesafe-path@0.2.2: {}
@@ -5877,9 +5901,9 @@ snapshots:
uncrypto@0.1.3: {}
- undici-types@6.21.0: {}
+ undici-types@7.8.0: {}
- undici@6.21.2: {}
+ undici@6.21.3: {}
unicode-properties@1.4.1:
dependencies:
@@ -5901,7 +5925,7 @@ snapshots:
trough: 2.2.0
vfile: 6.0.3
- unifont@0.2.0:
+ unifont@0.5.0:
dependencies:
css-tree: 3.1.0
ohash: 2.0.11
@@ -5952,12 +5976,12 @@ snapshots:
unist-util-is: 6.0.0
unist-util-visit-parents: 6.0.1
- unstorage@1.15.0:
+ unstorage@1.16.0:
dependencies:
anymatch: 3.1.3
chokidar: 4.0.3
destr: 2.0.5
- h3: 1.15.1
+ h3: 1.15.3
lru-cache: 10.4.3
node-fetch-native: 1.6.6
ofetch: 1.4.1
@@ -5980,22 +6004,22 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.2
- vite@6.3.2(@types/node@22.14.1)(yaml@2.7.1):
+ vite@6.3.5(@types/node@24.0.3)(yaml@2.8.0):
dependencies:
- esbuild: 0.25.2
- fdir: 6.4.3(picomatch@4.0.2)
+ esbuild: 0.25.5
+ fdir: 6.4.6(picomatch@4.0.2)
picomatch: 4.0.2
- postcss: 8.5.3
- rollup: 4.40.0
- tinyglobby: 0.2.12
+ postcss: 8.5.6
+ rollup: 4.43.0
+ tinyglobby: 0.2.14
optionalDependencies:
- '@types/node': 22.14.1
+ '@types/node': 24.0.3
fsevents: 2.3.3
- yaml: 2.7.1
+ yaml: 2.8.0
- vitefu@1.0.6(vite@6.3.2(@types/node@22.14.1)(yaml@2.7.1)):
+ vitefu@1.0.6(vite@6.3.5(@types/node@24.0.3)(yaml@2.8.0)):
optionalDependencies:
- vite: 6.3.2(@types/node@22.14.1)(yaml@2.7.1)
+ vite: 6.3.5(@types/node@24.0.3)(yaml@2.8.0)
volar-service-css@0.0.62(@volar/language-service@2.4.11):
dependencies:
@@ -6172,7 +6196,7 @@ snapshots:
yaml@2.5.1: {}
- yaml@2.7.1:
+ yaml@2.8.0:
optional: true
yargs-parser@21.1.1: {}
@@ -6194,7 +6218,7 @@ snapshots:
yocto-queue@1.2.1: {}
- yocto-spinner@0.2.1:
+ yocto-spinner@0.2.3:
dependencies:
yoctocolors: 2.1.1
@@ -6202,15 +6226,15 @@ snapshots:
zimmerframe@1.1.2: {}
- zod-to-json-schema@3.24.5(zod@3.24.3):
+ zod-to-json-schema@3.24.5(zod@3.25.67):
dependencies:
- zod: 3.24.3
+ zod: 3.25.67
- zod-to-ts@1.2.0(typescript@5.8.3)(zod@3.24.3):
+ zod-to-ts@1.2.0(typescript@5.8.3)(zod@3.25.67):
dependencies:
typescript: 5.8.3
- zod: 3.24.3
+ zod: 3.25.67
- zod@3.24.3: {}
+ zod@3.25.67: {}
zwitch@2.0.4: {}
diff --git a/public/d2/docs/index-0.svg b/public/d2/docs/index-0.svg
index 7b3d48c..36a8bea 100644
--- a/public/d2/docs/index-0.svg
+++ b/public/d2/docs/index-0.svg
@@ -1,23 +1,23 @@
-
diff --git a/public/d2/docs/protocol/liquidity-pools-0.svg b/public/d2/docs/protocol/liquidity-pools-0.svg
deleted file mode 100644
index 8175722..0000000
--- a/public/d2/docs/protocol/liquidity-pools-0.svg
+++ /dev/null
@@ -1,985 +0,0 @@
-All Available RoutesVault ETHVault PolygonVault BSCEtherwBTCUnitsDAIMaticUnitsBNBUnitsUSDC
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Ether to wBTCVault ETHVault PolygonVault BSCEtherwBTCUnitsDAIMaticUnitsBNBUnitsUSDC
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-DAI to USDCVault ETHVault PolygonVault BSCEtherwBTCUnitsDAIMaticUnitsBNBUnitsUSDC
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/public/d2/docs/protocol/tx-lifecycle-0.svg b/public/d2/docs/protocol/tx-lifecycle-0.svg
deleted file mode 100644
index 7a96de2..0000000
--- a/public/d2/docs/protocol/tx-lifecycle-0.svg
+++ /dev/null
@@ -1,198 +0,0 @@
-AMBChain AChain BSenderVault ACCI AGARP ARecipientVault BCCI BGARP BAssets to unitsPack SwapIncentivesDeliver AssetsSwap ContextCollect ProofDeliver Proof
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/assets/intent-flow.svg b/src/assets/intent-flow.svg
new file mode 100644
index 0000000..25b9881
--- /dev/null
+++ b/src/assets/intent-flow.svg
@@ -0,0 +1,4 @@
+
+
+Input SettlerInput OracleOutput SettlerOutput OracleOutput ChainInput ChainTheCompact0. DepositSignature / Off-chainOrderServerUserSolver1. Submit Order&Signature1.3 Get Order&Signatures5.2 COMPACT.batchClaim5. finalise5.1efficientRequireProven3.1 arePaylodsValid2. fill3. [submit]4. [receiveMessage]2.1 Asset TransferAllocator1.1Get Signature1.2 Get Funds
\ No newline at end of file
diff --git a/src/assets/landing.css b/src/assets/landing.css
index 0e68051..7f695e2 100644
--- a/src/assets/landing.css
+++ b/src/assets/landing.css
@@ -1,6 +1,9 @@
:root {
--purple-hsl: 234, 85%, 65%;
--overlay-blurple: hsla(var(--purple-hsl), 0.2);
+ --gray-rgb: 237, 238, 243;
+ --gray-color: rgb(var(--gray-rgb));
+ --sl-color-backdrop-overlay: hsla(0, 0%, 98%, 0.66);
}
:root[data-theme="light"] {
@@ -40,3 +43,31 @@ mobile-starlight-toc nav {
[data-has-hero] .hero > img {
filter: drop-shadow(0 0 3rem var(--overlay-blurple));
}
+
+.pagination-links {
+ border-top: 1px solid;
+ border-color: var(--gray-color);
+}
+
+div.pagination-links > a {
+ border: 0px;
+ box-shadow: none;
+}
+
+.sl-steps > li:last-child::after {
+ content: none;
+}
+
+
+site-search > dialog {
+ background-color: hsla(0, 0%, 98%, 0.1);
+ -webkit-backdrop-filter: blur(16px);
+ backdrop-filter: blur(16px);
+ box-shadow: none;
+ border: 1px solid transparent;
+}
+
+site-search > dialog::backdrop {
+ background-color: transparent;
+ backdrop-filter: blur(0.1rem);
+}
\ No newline at end of file
diff --git a/src/content/docs/1-system-architecture/100-overview.mdx b/src/content/docs/1-system-architecture/100-overview.mdx
index 5356d74..2969e47 100644
--- a/src/content/docs/1-system-architecture/100-overview.mdx
+++ b/src/content/docs/1-system-architecture/100-overview.mdx
@@ -1,35 +1,40 @@
---
-title: "Overview"
+title: "System Overview"
slug: "architecture/overview"
-description: "Overview of the Catalyst full-stack intents system"
+description: "Overview of the LI.FI intent system. The system consists of three modular components (Input Settler, Output Settler, and validation network) that can be selected based on the desired intent structure."
sidebar:
order: 0
---
-Catalyst modularizes three components of the cross-chain intent flow:
+import { Image } from 'astro:assets';
+import intentFlow from '../../../assets/intent-flow.svg';
-1. **Input settlement scheme** – Handles the source chain funds
-2. **Output settlement scheme** – Handles the destination chain funds
-3. **Validation layer** – Connects the input and output settlement
+LI.FI intent modularizes three components of the cross-chain intent flow:
-Historically, these components have been intertwined, presenting issues with scaling. Catalyst's componentized approach allows for greater flexibility and extensibility, allowing for different input and output settlement schemes and validation layers to be matched. This allows Catalyst to support varying degrees of asset technologies: fill first, user as solver, and ordinary swaps.
+1. **Input settlement scheme** – Handles the source chain funds.
+2. **Output settlement scheme** – Handles the destination chain funds.
+3. **Oracle System** – Makes Output Settlement statements available for the input settler.
+
+
+
+Historically, these components have been intertwined, which presented scaling challenges. A componentized approach allows for greater flexibility and extensibility, enabling different input and output settlement schemes and validation layers to be mixed and matched.
### Input Settlement
-The input settlement scheme is responsible for managing user deposits and releasing funds to solvers once intents are fulfilled. Catalyst currently implements two input settlement schemes:
+The input settlement scheme manages user deposits and releases funds to solvers once intents are fulfilled. LI.FI intent currently implements one input settlement scheme:
-- [**TheCompact**](https://github.com/Uniswap/the-compact) through [`CompactSettlerWithDeposit.sol`](https://github.com/catalystsystem/catalyst-intent/blob/main/src/settlers/compact/CompactSettlerWithDeposit.sol)
-- [**Rhinestone**](https://www.rhinestone.wtf) through [`CompactSettler.sol`](https://github.com/catalystsystem/catalyst-intent/blob/main/src/settlers/compact/CompactSettler.sol)
+- [**TheCompact**](https://github.com/Uniswap/the-compact) via [`InputSettlerCompact.sol`](https://github.com/openintentsframework/oif-contracts/blob/d238f87d01552986b66d392d0f2ea77bd6e25f2f/src/input/compact/InputSettlerCompact.sol)
-Both are resource locks supporting fill-first flows, though Catalyst also supports ordinary flows.
+Resource locks support both fill-first flows and ordinary flows.
-Catalyst imposes no restrictions on the implementation of input settlements. Input settlements can access proven output through validation layers by either calling [`isProven` or `efficientRequireProven`](https://github.com/catalystsystem/catalyst-intent/blob/main/src/interfaces/IOracle.sol). If an order contains multiple outputs and the outputs are filled by different solvers, **the filler of the first output** in the order specification shall be the canonical solver.
+The intent system imposes no restrictions on the implementation of input settlements. Input settlements can access proven outputs through validation layers by calling [`efficientRequireProven`](https://github.com/openintentsframework/oif-contracts/blob/main/src/interfaces/IOracle.sol#L19-L27). If an order contains multiple outputs and the outputs are filled by different solvers, **the filler of the first output** in the order specification is considered the canonical solver.
[Learn more about Input Settlement →](/architecture/input)
### Output Settlement
-The output settlement scheme handles the delivery of assets on destination chains. The output settlement scheme imposes no interface requirements, order structure, or order type except that an [interface to validate payloads](https://github.com/catalystsystem/catalyst-intent/blob/main/src/interfaces/IPayloadCreator.sol) is provided:
+The output settlement scheme handles the delivery of assets on destination chains. It imposes no interface requirements, order structure, or order type, except that an [interface to validate payloads](https://github.com/openintentsframework/oif-contracts/blob/main/src/interfaces/IPayloadCreator.sol) must be provided:
+
```solidity
interface IPayloadCreator {
function arePayloadsValid(
@@ -37,51 +42,46 @@ interface IPayloadCreator {
) external view returns (bool);
}
```
+
This allows the output settlement scheme to be incredibly flexible; it can support any order type on any virtual machine, as long as the filled order can be expressed as an opaque bytes array.
-For simplicity, let's assume that an output can be expressed as `[token, amount, destination]`. If this output has been filled, then a valid payload could be `bytes(solver | token | amount | destination)`.
+The initial version of the intent system uses `MandateOutput`, with the encoding described by [`MandateOutputEncodingLib.sol`](https://github.com/openintentsframework/oif-contracts/blob/main/src/libs/MandateOutputEncodingLib.sol).
If the input settlement could validate this call, the inputs could be appropriately paid to the solver. However, this information only exists on the output settlement on the output chain.
[Learn more about Output Settlement →](/architecture/output)
-### Validation Layers
+### Oracle System
+
+The oracle system ferries valid payloads from the output chain to the input chain. It serves as the bridge that confirms output delivery has occurred.
-The validation layer ferries valid payloads from the output chain to the input chain. It serves as the bridge that confirms fulfillment has occurred.
+Any validation layer can be added as long as it supports validating a payload from a remote chain. Currently available validation layers include:
-Any validation layer can be added to Catalyst as long as it supports validating a payload from a remote chain. Currently implemented validation layers include:
+- [**Polymer**](https://github.com/openintentsframework/oif-contracts/blob/main/src/oracles/polymer/PolymerOracleMapped.sol)
+- [**Wormhole**](https://github.com/openintentsframework/oif-contracts/blob/main/src/oracles/wormhole/WormholeOracle.sol)
+- [**Bitcoin**](https://github.com/openintentsframework/oif-contracts/blob/main/src/oracles/bitcoin/BitcoinOracle.sol)
-- [**Wormhole**](https://github.com/catalystsystem/catalyst-intent/blob/main/src/oracles/wormhole/WormholeOracle.sol) (sponsored by LI.FI)
-- [**Polymer**](https://github.com/catalystsystem/catalyst-intent/blob/main/src/oracles/polymer/PolymerOracle.sol) (sponsored by Polymer)
-- [**Bitcoin**](https://github.com/catalystsystem/catalyst-intent/blob/main/src/oracles/bitcoin/BitcoinOracle.sol) (self-serve)
+Before emitting messages, the oracle is expected to check if one or more payloads are valid and then ship them to the input chain:
-It's expected that before making messages, the validation layer checks if one or more payloads are valid and then ships them to the input chain:
```solidity
function submit(address proofSource, bytes[] calldata payloads) external payable {
- // Check if the payloads are valid.
- if (!IPayloadCreator(proofSource).arePayloadsValid(payloads)) revert NotAllPayloadsValid();
+ // Check if the payloads are valid.
+ if (!IPayloadCreator(proofSource).arePayloadsValid(payloads)) revert NotAllPayloadsValid();
- // Payloads are good. We can submit them on behalf of proofSource.
- _submit(proofSource, payloads);
+ // Payloads are valid. We can submit them on behalf of proofSource.
+ _submit(proofSource, payloads);
}
```
-How validation layers pass the information to the input chain is not scoped. They may use custom message encodings, custom relaying properties, custom interfaces, or other special integration concerns.
-On the input chain, it is expected that the validation layer validates the payload(s) through a virtual machine local hash:
+Oracles may use custom message encodings, custom relaying properties, custom interfaces, or other special integration concerns. Internal oracle messaging is not standardized.
+
+On the input chain, the oracle system is expected to validate the payload(s) through a virtual machine local hash:
+
```solidity
interface IValidationLayer {
- /**
- * @notice Check if some data has been attested to.
- * @param remoteChainId Chain the data supposedly originated from.
- * @param remoteOracle Identifier for the remote attestation.
- * @param remoteApplication Identifier for the application that the attestation originated from.
- * @param dataHash Hash of data.
- */
- function isProven(uint256 remoteChainId, bytes32 remoteOracle, bytes32 remoteApplication, bytes32 dataHash) external view returns (bool);
-
/**
* @notice Check if a series of data has been attested to.
- * @dev More efficient implementation of isProven. Does not return a boolean, instead reverts if false.
+ * @dev Does not return a boolean; instead, it reverts if false.
* This function returns true if proofSeries is empty.
* @param proofSeries remoteOracle, remoteChainId, and dataHash encoded in chunks of 32*4=128 bytes.
*/
@@ -91,40 +91,41 @@ interface IValidationLayer {
}
```
-Using only the payload hash makes the system more efficient as less data is passed around.
-
-No attempt is made at standardizing the payload. As a result, there may be [incompatibilities](/architecture/overview#standardized-message-format) between the input and output settlement layers.
-
-[Learn more about Validation Layers →](/architecture/validation)
+Using only the payload hash makes the system more efficient, as less data is passed around. No attempt is made at standardizing the payload. As a result, there may be [incompatibilities](/architecture/overview#standardized-message-format) between the input and output settlement layers.
+[Learn more about Validation Layers →](/architecture/oracle)
## Security Assumptions
-The Catalyst system includes resource locks which create trust boundaries between key actors:
+The intent system includes resource locks, which create trust boundaries between key actors:
- **[Sponsors](/glossary#sponsor)** (users) trust that arbiters won't fraudulently finalize issued locks.
- **[Arbiters](/glossary#arbiter)** and **[solvers](/glossary#solver)** trust allocators not to co-sign overlapping locks exceeding user deposits.
No single actor can independently access funds, creating a secure environment for cross-chain transactions.
+For more about security and intent validation, [see order-validation →](/solver/orderflow/#order-validation)
+
## Integration Points
-Catalyst is designed to be highly composable with different components capable of being swapped out as needed:
+LI.FI intent is designed to be highly composable, with different components capable of being swapped out as needed:
- **Input Settlement**: New resource lock standards and standard intent interfaces can be integrated.
- **Output Settlement**: New order types and fulfillment mechanisms can be added.
-- **Validation Layer**: Different cross-chain messaging protocols and proof layers can be supported.
+- **Oracle System**: Different cross-chain messaging protocols and proof layers can be supported.
-[Integrators](/glossary#integrator) can freely pick and choose which components to use for which swaps. This gives intent issuers maximum flexibility to describe their desired endstate.
+[Integrators](/glossary#integrator) can freely pick and choose which components to use for which swaps. This gives intent issuers maximum flexibility to describe their desired end state.
## Unsolved Issues
-While the initial version of the Catalyst System is a step function improvement over competing solution at standardizing the intent stack, there are still interopability issues within the standard. For transparency, known specification issues have been listed below.
+While the initial version is a significant improvement over competing solutions at standardizing the intent stack, there are still interoperability issues within the standard. For transparency, known specification issues are listed below.
### Standardized Message Format
-Currently, the input settlement scheme and the output settlement scheme has to agree on an order-type specific payload. If a new order type or settlement system requires more functionality beyond the implemented message payload, it requires deploying these components over. This break composability between these layers.
+
+Currently, the input settlement scheme and the output settlement scheme must agree on an order-type-specific payload. If a new order type or settlement system requires more functionality beyond the implemented message payload, it requires redeploying these components. This breaks composability between these layers.
Assuming the output description can be represented as:
+
```solidity
struct OutputDescription {
bytes32 remoteOracle;
@@ -137,7 +138,9 @@ struct OutputDescription {
bytes fulfillmentContext;
}
```
-The proposed message format is the following:
+
+The proposed message format is as follows:
+
```
Encoded FillDescription
SOLVER 0 (32 bytes)
@@ -146,24 +149,26 @@ Encoded FillDescription
+ TOKEN 68 (32 bytes)
+ AMOUNT 100 (32 bytes)
+ RECIPIENT 132 (32 bytes)
- + REMOTE_CALL_LENGTH 164 (2 bytes)
- + REMOTE_CALL 166 (LENGTH bytes)
- + FULFILLMENT_CONTEXT_LENGTH 166+RC_LENGTH (2 bytes)
- + FULFILLMENT_CONTEXT 168+RC_LENGTH (LENGTH bytes)
+ + CALL_LENGTH 164 (2 bytes)
+ + CALL 166 (LENGTH bytes)
+ + CONTEXT_LENGTH 166+RC_LENGTH (2 bytes)
+ + CONTEXT 168+RC_LENGTH (LENGTH bytes)
```
+
:::note
-No assumptions are ever made on how validation layers pass messages between itself. They can pack fill descriptions however they like. [Example of a packed payload](https://github.com/catalystsystem/catalyst-intent/blob/main/src/libs/MessageEncodingLib.sol#L13-L19).
+No assumptions are made about how validation layers pass messages between themselves. They can pack fill descriptions however they like. [Example of a packed payload](https://github.com/catalystsystem/catalyst-intent/blob/main/src/libs/MessageEncodingLib.sol#L13-L19).
:::
-### Atomic Swaps and HTLCs as validation layers.
-HTCLs works very differently from ordinary intent schemes as they require a round of strong commitments. This pre-bakes certain system assumptions which cannot be abstracted away through the Catalyst Intent System. As a result, these are not considered.
+### Atomic Swaps and HTLCs as Validation Layers
+
+HTLCs work very differently from ordinary intent schemes, as they require a round of strong commitments. This pre-bakes certain system assumptions that cannot be abstracted away through the OIF Intent System. As a result, these are not considered.
### Integration Overheads
-As interfaces and validation layers are not standardized, each new order type, validation layer, or settlement scheme presents additional integration overhead. However, since components are eagerly reused the system complexity scales `O(n)` instead of `O(n^3)` with `n` roughly being equal to the number of components.
+As interfaces and validation layers are not standardized, each new order type, validation layer, or settlement scheme presents additional integration overhead. However, since components are eagerly reused, the system complexity scales as `O(n)` instead of `O(n^3)`, with `n` roughly being the number of components.
-### Optimistic Validation layers
+### Optimistic Validation Layers
-The current validation layers mainly support explicit validation. Optimistic validation can be implemented but requires each output to have an on-chain storage. This increases the gas cost. Ideally the specification should define a way for 1 proof to validate multiple _orders_, not just outputs.
+The current validation layers mainly support explicit validation. Optimistic validation can be implemented but requires each output to have on-chain storage, which increases gas costs. Ideally, the specification should define a way for one proof to validate multiple _orders_, not just outputs.
-This would likely involve [`isProven`](https://github.com/catalystsystem/catalyst-intent/blob/main/src/interfaces/IOracle.sol) using merkle trees or similar constructions to pass validated messages
\ No newline at end of file
+This would likely involve using Merkle trees or similar constructions to pass validated messages
\ No newline at end of file
diff --git a/src/content/docs/1-system-architecture/101-input-settlement.md b/src/content/docs/1-system-architecture/101-input-settlement.md
index 1a2b57c..8d5a50e 100644
--- a/src/content/docs/1-system-architecture/101-input-settlement.md
+++ b/src/content/docs/1-system-architecture/101-input-settlement.md
@@ -1,132 +1,83 @@
---
title: "Input Settlement"
slug: "architecture/input"
-description: "Built with resource locks in mind, Catalyst supports a variety of input settlement schemes. TheCompact and Rhinestone both allow for first-fill flows and sponsored transactions, assuming the user has existing deposits."
+description: "Built with resource locks in mind, LI.FI intents support a variety of input settlement schemes. The Compact and Rhinestone both allow for first-fill flows and sponsored transactions, assuming the user has existing deposits."
sidebar:
order: 1
---
-Catalyst currently implements two input settlement schemes:
-1. [**TheCompact**](https://github.com/Uniswap/the-compact) through [`CompactSettlerWithDeposit.sol`](https://github.com/catalystsystem/catalyst-intent/blob/main/src/settlers/compact/CompactSettlerWithDeposit.sol)
-2. [**Rhinestone**](https://www.rhinestone.wtf) through [`CompactSettler.sol`](https://github.com/catalystsystem/catalyst-intent/blob/main/src/settlers/compact/CompactSettler.sol)
+Currently, only one Input Settler is supported:
+- [**InputSettlerCompact**](https://github.com/openintentsframework/oif-contracts/blob/main/src/input/compact/InputSettlerCompact.sol)
-Both TheCompact and Rhinestone are resource locks and thus support first-fill flows. However, Catalyst also supports ordinary flows.
-
-Catalyst provides a base implementation for settlement schemes via [`BaseSettler.sol`](https://github.com/catalystsystem/catalyst-intent/blob/main/src/settlers/BaseSettler.sol). Alternatively, if possible, [`CompactSettler.sol`](https://github.com/catalystsystem/catalyst-intent/blob/main/src/settlers/compact/CompactSettler.sol) can be forked with less effort.
+The Compact uses resource locks and supports first-fill flows. However, LI.FI intents also support escrow-like flows.
#### Default Output
-The default output for settlement schemes is the [`OutputDescription`](https://github.com/catalystsystem/catalyst-intent/blob/fcdbdc6a77734ddc56be0e5de737f324cbba670d/src/libs/OutputEncodingLib.sol#L4-L38):
+The default output for settlement schemes is [`MandateOutput`](https://github.com/openintentsframework/oif-contracts/blob/main/src/input/types/MandateOutputType.sol#L4-L18):
```solidity
-struct OutputDescription {
- bytes32 remoteOracle;
- bytes32 remoteFiller;
+struct MandateOutput {
+ bytes32 oracle;
+ bytes32 settler;
uint256 chainId;
bytes32 token;
uint256 amount;
bytes32 recipient;
- bytes remoteCall;
- bytes fulfillmentContext;
+ bytes call;
+ bytes context;
}
```
-To check if the encoded output description has been validated, the hashed encoded payload should be sent to the appropriate local oracle using the Validation Layer Interface along with relevant resolution details, such as who the solver was.
+To verify if the encoded output description has been validated, send the hashed encoded payload to the appropriate local oracle along with relevant resolution details, such as the solver's identity.
-## CompactSettler
-Both Rhinestone and TheCompact work through [`CompactSettler.sol`](https://github.com/catalystsystem/catalyst-intent/blob/main/src/settlers/compact/CompactSettler.sol). Being able to solve for one allows you to solve the other, except that signature and lock validation differ slightly.
+## InputSettlerCompact
-The Compact Settler uses the [`CatalystCompactOrder`](https://github.com/catalystsystem/catalyst-intent/blob/fcdbdc6a77734ddc56be0e5de737f324cbba670d/src/settlers/compact/TheCompactOrderType.sol#L6-L14):
+The Compact Settler uses the [`StandardOrder`](https://github.com/openintentsframework/oif-contracts/blob/main/src/input/types/StandardOrderType.sol#L6-L15):
```solidity
-struct CatalystCompactOrder {
+struct StandardOrder {
address user;
uint256 nonce;
uint256 originChainId;
+ uint32 expires;
uint32 fillDeadline;
address localOracle;
uint256[2][] inputs;
- OutputDescription[] outputs;
+ MandateOutput[] outputs;
}
```
-Notice that the `fillDeadline` is also used as the expiry for the timelock. As a result, when filling outputs of `CatalystCompactOrder`, ensure there is sufficient time for validation as well.
-
-The CompactSettler supports [five ways](https://github.com/catalystsystem/catalyst-intent/blob/fcdbdc6a77734ddc56be0e5de737f324cbba670d/src/settlers/compact/CompactSettler.sol#L149-L265) to resolve locks once the outputs have been made available for verification by the validation layer:
-```solidity
-function finaliseSelf(CatalystCompactOrder calldata order, bytes calldata signatures, uint32[] calldata timestamps, bytes32 solver) external;
-
-function finaliseTo(CatalystCompactOrder calldata order, bytes calldata signatures, uint32[] calldata timestamps, bytes32 solver, address destination, bytes calldata call) external;
+The CompactSettler supports two ways to resolve locks once outputs are available for verification by the validation layer:
-function finaliseFor(
- CatalystCompactOrder calldata order,
- bytes calldata signatures,
- uint32[] calldata timestamps,
- bytes32 solver,
- address destination,
- bytes calldata call,
- bytes calldata orderOwnerSignature
-) external;
+There are two ways to finalize an intent:
+1. [`finalise`](https://github.com/openintentsframework/oif-contracts/blob/main/src/input/compact/InputSettlerCompact.sol#L177-L184): Can only be called by the solver. The caller can designate where to send assets and whether to make an external call.
+2. [`finaliseWithSignature`](https://github.com/openintentsframework/oif-contracts/blob/main/src/input/compact/InputSettlerCompact.sol#L213-L221): Can be called by anyone with an [`AllowOpen`](https://github.com/openintentsframework/oif-contracts/blob/main/src/input/types/AllowOpenType.sol#L5-L9l) signature from the solver, containing the destination and call details.
-// -- Fallback Finalise Functions -- //
+### Intent Registration
-function finaliseTo(CatalystCompactOrder calldata order, bytes calldata signatures, uint32[] calldata timestamps, bytes32[] calldata solvers, address destination, bytes calldata call) external;
+While intents are transferred as `StandardOrder` structures, they are signed as a `BatchClaim` with the following structure:
-function finaliseFor(
- CatalystCompactOrder calldata order,
- bytes calldata signatures,
- uint32[] calldata timestamps,
- bytes32[] calldata solvers,
- address destination,
- bytes calldata call,
- bytes calldata orderOwnerSignature
-) external;
-```
-
-Notice that the fallback functions exist to fix orders that have been solved by multiple solvers. This is required because we need to hydrate the `OutputDescription` with the solver to check if the output has been filled on the Validation Layer.
-
-The three ways to finalize an intent:
-1. [`finaliseSelf`](https://github.com/catalystsystem/catalyst-intent/blob/fcdbdc6a77734ddc56be0e5de737f324cbba670d/src/settlers/compact/CompactSettler.sol#L149): Self-serve, called by the solver with the tokens paid to the solver.
-2. [`finaliseTo`](https://github.com/catalystsystem/catalyst-intent/blob/fcdbdc6a77734ddc56be0e5de737f324cbba670d/src/settlers/compact/CompactSettler.sol#L162): Self-serve, custom delivery. Called by the solver with the tokens paid to a specific address.
-3. [`finaliseFor`](https://github.com/catalystsystem/catalyst-intent/blob/fcdbdc6a77734ddc56be0e5de737f324cbba670d/src/settlers/compact/CompactSettler.sol#L188-L196): External finalization with a signed message by the solver designating where assets are to be delivered.
-
-To use external finalization, the struct [`AllowOpen`](https://github.com/catalystsystem/catalyst-intent/blob/main/src/settlers/types/AllowOpenType.sol) must be [EIP712](https://eips.ethereum.org/EIPS/eip-712) signed:
```solidity
-struct AllowOpen {
- bytes32 orderId;
- address originSettler;
- address destination;
- bytes call;
+struct BatchCompact {
+ address arbiter;
+ address sponsor;
+ uint256 nonce;
+ uint256 expires;
+ uint256[2][] idsAndAmounts;
+ Mandate mandate;
}
```
-
-### Registering Intents
-
-For how to register intents with Rhinestone, please refer to their documentation.
-
-For TheCompact, `CompactSettler.sol` supports `BatchClaim` using claim type. The witness is the difference between the `BatchClaim` and `CatalystCompactOrder`:
-
+With the Mandate defined as:
```solidity
-struct CatalystWitness {
+struct Mandate {
uint32 fillDeadline;
address localOracle;
- OutputDescription[] outputs;
+ MandateOutput[] outputs;
}
```
-Sign the `BatchClaim` with the CatalystWitness using EIP712 with TheCompact domain separator.
-
-For further integration assistance, refer either to [`TestCatalyst.t.sol::test_entire_flow`](https://github.com/catalystsystem/catalyst-intent/blob/main/test/TestCatalyst.t.sol#L214) or reach out to the team.
-
-#### With Deposit
+Intents are EIP712-signed `BatchClaim`s using The Compact's domain separator.
-When integrating CompactSettler, if the settler uses the [`withDeposit`](https://github.com/catalystsystem/catalyst-intent/blob/fcdbdc6a77734ddc56be0e5de737f324cbba670d/src/settlers/compact/CompactSettlerWithDeposit.sol#L44-L51) extension, you may use the associated deposit function. This allows you to deposit and register an intent at the same time, reducing the number of user interactions by one.
+Alternatively, intents can be registered on-chain. There are two ways to do this: either the sponsor (user) registers it, or someone pays for the entire claim and registers it on their behalf.
-```solidity
-function depositFor(CatalystCompactOrder calldata order, ResetPeriod resetPeriod) external;
-```
-
-When this function is called, the `Deposit` event will be emitted for permissionless discovery.
-```solidity
-event Deposited(bytes32 orderId, CatalystCompactOrder order);
-```
+#### Integration Examples
-:::note
-Nonces cannot be reused and should be unique for an allocator. Please use your allocator's api to get an appropriate nonce.
-:::
\ No newline at end of file
+- For a smart contract example of registering intents on behalf of someone else, see [`RegisterIntentLib.sol`](https://github.com/catalystsystem/catalyst-intent/blob/27ce0972c150ed113f66ae91069eb953f23d920b/src/libs/RegisterIntentLib.sol#L100-L131).
+- For a UI example of signing the Batch Compact, refer to the [lintent.org demo](https://github.com/catalystsystem/lintent/blob/a4aa78cd058cade732b73d83aa2843dd4e9ea24d/src/lib/utils/lifiintent/tx.ts#L144).
+- For a UI example of depositing and registering the intent, see the [lintent.org demo](https://github.com/catalystsystem/lintent/blob/a4aa78cd058cade732b73d83aa2843dd4e9ea24d/src/lib/utils/lifiintent/tx.ts#L199).
\ No newline at end of file
diff --git a/src/content/docs/1-system-architecture/102-output-settlement.mdx b/src/content/docs/1-system-architecture/102-output-settlement.mdx
index 8e4e709..b8e87a1 100644
--- a/src/content/docs/1-system-architecture/102-output-settlement.mdx
+++ b/src/content/docs/1-system-architecture/102-output-settlement.mdx
@@ -1,27 +1,27 @@
---
title: "Output Settlement"
slug: "architecture/output"
-description: "Catalyst currently supports two order types: simple limit orders and Dutch auctions. However, the Catalyst System was designed with flexibility in mind, and more can easily be added."
+description: "LI.FI intent enables on-chain competition and flexible order types, letting solvers optimize settlement and capture cross-chain opportunities."
sidebar:
order: 2
---
-Catalyst's initial filler – [`CoinFiller.sol`](https://github.com/catalystsystem/catalyst-intent/blob/main/src/fillers/coin/CoinFiller.sol) – supports two order types: simple limit orders and Dutch auctions. For more about the specific order details, see the section on [Auctions](/solver/auctions)
+Currently, only one output settler exists: – [`OutputSettlerCoin.sol`](https://github.com/openintentsframework/oif-contracts/blob/main/src/output/coin/OutputSettlerCoin.sol) – which supports four order types: simple limit orders, Dutch auctions, exclusive limit orders, and exclusive Dutch auctions. For more details about specific order types, see the section on [Auctions](/solver/auctions).
## CoinFiller
-To configure whether to use a limit order or a Dutch auction, set the associated `fulfillmentContext` on the `OutputDescription`.
+To configure which auction type is used, set the associated `output.context`.
import { Code } from '@astrojs/starlight/components';
-export const outputDescription = `
-struct OutputDescription {
+export const mandateOutput = `
+struct MandateOutput {
...
- bytes remoteCall;
- bytes fulfillmentContext;
+ bytes call;
+ bytes context;
}`;
-
+
Use the following pseudocode:
@@ -34,4 +34,4 @@ if (orderType == "limit") fulfillmentContext = "0x" || fulfillmentContext = "0x0
if (orderType == "dutch") fulfillmentContext = abi.encodePacked(0x01, slope, stopTime);
```
-Specifically for Dutch auctions, if the order contains multiple outputs, only the first one will work as an auction, and the rest will resolve to the worst price. This is because solvers are only incentivized to compete on the first output in an order, since the winner of that order is the winner of the entire order once anyone fills the rest of the outputs.
\ No newline at end of file
+Specifically for Dutch auctions, if the order contains multiple outputs, only the first one will function as an auction. The rest will resolve to the worst price. This is because solvers are only incentivized to compete on the first output in an order, since the winner of that output is the winner of the entire order once anyone fills the remaining outputs.
\ No newline at end of file
diff --git a/src/content/docs/1-system-architecture/103-oracle.md b/src/content/docs/1-system-architecture/103-oracle.md
new file mode 100644
index 0000000..554b74e
--- /dev/null
+++ b/src/content/docs/1-system-architecture/103-oracle.md
@@ -0,0 +1,118 @@
+---
+title: "Oracle systems"
+slug: "architecture/oracle"
+description: "LI.FI intent lets you plug in custom validation and oracle layers, empowering you to choose the optimal trust and speed tradeoffs for your cross-chain use case."
+sidebar:
+ order: 3
+---
+
+Any validation layer can be added as long as it supports validating a payload from the output chain.
+
+In the simplest implementation, a validation layer needs to support the following:
+
+1. A submission interface where solvers can submit their filled outputs. The submission interface should accept arbitrary packages for validation and then call the associated output settlement contract to check whether the payloads are valid.
+ ```solidity
+ interface IPayloadCreator {
+ function arePayloadsValid(
+ bytes[] calldata payloads
+ ) external view returns (bool);
+ }
+ ```
+
+2. Implement the associated validation interfaces so that Input Settlement implementations can accurately verify whether outputs have been filled.
+ ```solidity
+ interface IOracle {
+ function efficientRequireProven(
+ bytes calldata proofSeries
+ ) external view;
+ }
+ ```
+
+Importantly, the submission interface does not have to be standardized; it just needs to be accurately documented so solvers can implement it.
+
+## Implemented Validation Interfaces
+
+There are three types of validation interfaces:
+1. Self-serve: Validation interfaces where submitting the payload generates an off-chain proof that must be collected and submitted on the input chain.
+2. Automatic: Validation interfaces where submitting the payload automatically delivers the associated proof on the input chain.
+
+Currently, all supported oracle systems are self-serve.
+
+:::note[Speed & Price]
+**Polymer** is significantly faster than most other oracle systems. While speed does not impact asset delivery for users, it matters for solvers. Choosing an oracle system with fast repayments results in cheaper intents, as solvers can rotate their capital faster.
+:::
+
+### Polymer
+
+Polymer allows validation of emitted events. The target event for validation is the [`OutputFilled`](https://github.com/openintentsframework/oif-contracts/blob/main/src/output/BaseOutputSettler.sol#L95) event, emitted when an output has been filled.
+```solidity
+event OutputFilled(bytes32 indexed orderId, bytes32 solver, uint32 timestamp, MandateOutput output);
+```
+
+Using the Polymer [prove API](https://docs.polymerlabs.org/docs/build/prove-api-V2/api-endpoints#1-request-log-proof), a proof of the event can be generated. Once generated, it can be submitted to [`receivedMessage`](https://github.com/openintentsframework/oif-contracts/blob/main/src/oracles/polymer/PolymerOracle.sol#L63-L67).
+
+For an example of such an integration, see the [lintent.org implementation](https://github.com/catalystsystem/lintent/blob/a4aa78cd058cade732b73d83aa2843dd4e9ea24d/src/lib/utils/lifiintent/tx.ts#L524-L577).
+
+Polymer can only prove one filled output at a time.
+
+### Wormhole
+
+The Wormhole implementation is based on the broadcast functionality of Wormhole. Messages must be submitted to the Wormhole Implementation via the [`submit`](https://github.com/openintentsframework/oif-contracts/blob/daa8913e5803d8b62b646335d4c5130cdfacfec8/src/oracles/wormhole/WormholeOracle.sol#L43) interface. Messages must be encoded into [`FillDescription`](https://github.com/openintentsframework/oif-contracts/blob/main/src/libs/MandateOutputEncodingLib.sol#L21-L36)s and then submitted:
+```solidity
+function submit(address source, bytes[] calldata payloads) public payable returns (uint256 refund);
+```
+
+This message is then emitted to the Wormhole guardian set. Once the associated proof becomes available, the solver can submit the proof to [`receiveMessage`](https://github.com/openintentsframework/oif-contracts/blob/daa8913e5803d8b62b646335d4c5130cdfacfec8/src/oracles/wormhole/WormholeOracle.sol#L78-L80) on the input chain to validate their intents.
+
+Note: The Wormhole implementation uses a more efficient validation algorithm than Wormhole's `Implementation.sol`.
+
+### Bitcoin
+
+LI.FI Intents has a Bitcoin Simplified Payment Validation (SPV) client implementation. This implementation works both as an Output Settlement implementation and as a validation layer.
+
+The Bitcoin SPV client requires constant upkeep—the blockchain must be updated approximately every 10 minutes, or whenever a transaction needs to be proven—to properly validate transactions.
+
+To generate a transaction proof, refer to the code below:
+
+```typescript
+import mempoolJS from "@catalabs/mempool.js";
+const mainnet: boolean;
+const {
+ bitcoin: { transactions, blocks },
+} = mempoolJS({
+ hostname: "mempool.space",
+ network: mainnet ? undefined : "testnet4",
+});
+
+export async function generateProof(
+ txid: string,
+): Promise<{ blockHeader: string; proof: Proof; rawTx: string }> {
+ const tx = await transactions.getTx({ txid });
+
+ const merkleProof = await transactions.getTxMerkleProof({ txid });
+ // TODO: serialization version 1.
+ const rawTx = await transactions.getTxHex({ txid });
+
+ const blockHash = await blocks.getBlockHeight({
+ height: merkleProof.block_height,
+ });
+
+ // Most endpoints provide transactions witness encoded.
+ // The following function serves to strip the witness data.
+ const rawTxWitnessStripped = removeWitnesses(rawTx);
+
+ const blockHeader = await blocks.getBlockHeader({ hash: blockHash });
+
+ return {
+ blockHeader,
+ proof: {
+ txId: txid,
+ txIndex: merkleProof.pos,
+ siblings: merkleProof.merkle.reduce(
+ (accumulator, currentValue) => accumulator + currentValue,
+ ),
+ },
+ rawTx: rawTxWitnessStripped,
+ };
+}
+```
\ No newline at end of file
diff --git a/src/content/docs/1-system-architecture/103-validation-layers.md b/src/content/docs/1-system-architecture/103-validation-layers.md
deleted file mode 100644
index c43498f..0000000
--- a/src/content/docs/1-system-architecture/103-validation-layers.md
+++ /dev/null
@@ -1,148 +0,0 @@
----
-title: "Validation Layers"
-slug: "architecture/validation"
-description: "Each Catalyst System order specifies which components are used for which aspects of the swap. Validation layers can be permissionlessly chosen by the issuer of an intent, and anyone can write a validation layer."
-sidebar:
- order: 3
----
-
-Any validation layer can be added to Catalyst as long as it supports validating a payload from a remote chain.
-
-In the simplest implementation, a validation layer needs to support the following:
-
-1. A submission interface where solvers can submit their filled outputs. The submission interface should take in arbitrary packages for validation and then call the associated output settlement contract to validate whether the payloads are valid.
- ```solidity
- interface IPayloadCreator {
- function arePayloadsValid(
- bytes[] calldata payloads
- ) external view returns (bool);
- }
- ```
-
-2. Implement the associated validation interfaces so that Input Settlement implementations can accurately verify whether outputs have been filled.
- ```solidity
- interface IValidationLayer {
- /**
- * @notice Check if some data has been attested to.
- * @param remoteChainId Chain the data supposedly originated from.
- * @param remoteOracle Identifier for the remote attestation.
- * @param remoteApplication Identifier for the application that the attestation originated from.
- * @param dataHash Hash of data.
- */
- function isProven(uint256 remoteChainId, bytes32 remoteOracle, bytes32 remoteApplication, bytes32 dataHash) external view returns (bool);
-
- /**
- * @notice Check if a series of data has been attested to.
- * @dev More efficient implementation of isProven. Does not return a boolean; instead, reverts if false.
- * This function returns true if proofSeries is empty.
- * @param proofSeries remoteOracle, remoteChainId, and dataHash encoded in chunks of 32*4=128 bytes.
- */
- function efficientRequireProven(
- bytes calldata proofSeries
- ) external view;
- }
- ```
-
-Importantly, the submission interface does not have to be standardized; as long as it is accurately documented for solvers to implement.
-
-Notice! While this has been designed for explicit verification, optimistic validation layers are also supported when they can expose the above proof interfaces.
-
-## Implemented Validation Interfaces
-
-There are three types of validation interfaces:
-1. Self-serve: Validation interfaces where the submission of the payload generates an off-chain proof that has to be collected and submitted on the input chain.
-2. Sponsored: Like a self-serve validation interface except someone is relaying for you.
-3. Automatic: Validation interfaces where the submission of the payload automatically delivers the associated proof on the input chain.
-
-Currently, two sponsored validation interfaces are implemented.
-
-### [Wormhole](https://github.com/catalystsystem/catalyst-intent/blob/main/src/oracles/wormhole/WormholeOracle.sol) (sponsored)
-
-The Wormhole implementation is based on the broadcast functionality of Wormhole. A group of payloads can be collected and [packed into a larger message](https://github.com/catalystsystem/catalyst-intent/blob/fcdbdc6a77734ddc56be0e5de737f324cbba670d/src/libs/MessageEncodingLib.sol#L30-L44):
-
-```solidity
-Common Structure (Repeated 0 times)
- SENDER_IDENTIFIER 0 (32 bytes)
- + NUM_PAYLOADS 32 (2 bytes)
-Payloads (repeated NUM_PAYLOADS times)
- PAYLOAD_LENGTH M_i+0 (2 bytes)
- PAYLOAD M_i+2 (PAYLOAD_LENGTH bytes)
-
-where M_i = sum_0^(i-1) M_i and M_0 = 32
-```
-
-This message is then emitted to the Wormhole guardian set. Once the associated proof becomes available, the solver can submit the associated proof on the input chain and validate their intents.
-
-Notice that the Wormhole implementation uses a more efficient validation algorithm than Wormhole's `Implementation.sol`.
-
-LI.FI will relay Wormhole proofs initially.
-
-Solvers wanting to support self-relaying of orders using the Wormhole validation layer need to listen to the Guardian gossip network to collect proofs.
-
-### [Polymer](https://github.com/catalystsystem/catalyst-intent/blob/main/src/oracles/polymer/PolymerOracle.sol) (sponsored)
-
-Polymer allows validating specific events. As a result, the fill event is parsed:
-```solidity
-event OutputFilled(bytes32 orderId, bytes32 solver, uint32 timestamp, OutputDescription output);
-```
-
-and converted into the appropriate payload for the input settlement layer:
-```solidity
-(bytes32 solver, uint32 timestamp, OutputDescription memory output) = abi.decode(unindexedData, (bytes32, uint32, OutputDescription));
-bytes32 payloadHash = _proofPayloadHash(orderId, solver, timestamp, output);
-```
-
-Polymer will relay orders for solvers.
-
-Solvers wanting to self-relay orders using the Polymer validation layer need to implement the Polymer API to collect relevant event proofs.
-
-### [Bitcoin](https://github.com/catalystsystem/catalyst-intent/blob/main/src/oracles/bitcoin/BitcoinOracle.sol) (self-serve)
-
-Catalyst has a Bitcoin Simplified Payment Validation (SPV) client implementation. The implementation works both as an Output Settlement implementation and as a validation layer.
-
-The Bitcoin SPV client requires constant upkeep – the blockchain has to be updated approximately every 10 minutes or whenever a transaction needs to be proven – to properly validate transactions.
-
-To generate a transaction proof, refer to the code below:
-
-```typescript
-import mempoolJS from "@catalabs/mempool.js";
-const mainnet: boolean;
-const {
- bitcoin: { transactions, blocks },
-} = mempoolJS({
- hostname: "mempool.space",
- network: mainnet ? undefined : "testnet4",
-});
-
-export async function generateProof(
- txid: string,
-): Promise<{ blockHeader: string; proof: Proof; rawTx: string }> {
- const tx = await transactions.getTx({ txid });
-
- const merkleProof = await transactions.getTxMerkleProof({ txid });
- // TODO: serialization version 1.
- const rawTx = await transactions.getTxHex({ txid });
-
- const blockHash = await blocks.getBlockHeight({
- height: merkleProof.block_height,
- });
-
- // Most endpoints provide transactions witness encoded.
- // The following function serves to strip the witness data.
- const rawTxWitnessStripped = removeWitnesses(rawTx);
-
- const blockHeader = await blocks.getBlockHeader({ hash: blockHash });
-
- return {
- blockHeader,
- proof: {
- txId: txid,
- txIndex: merkleProof.pos,
- siblings: merkleProof.merkle.reduce(
- (accumulator, currentValue) => accumulator + currentValue,
- ),
- },
- rawTx: rawTxWitnessStripped,
- };
-}
-```
\ No newline at end of file
diff --git a/src/content/docs/1-system-architecture/ERC7683.md b/src/content/docs/1-system-architecture/ERC7683.md
index 2f3fc54..cf60c50 100644
--- a/src/content/docs/1-system-architecture/ERC7683.md
+++ b/src/content/docs/1-system-architecture/ERC7683.md
@@ -7,11 +7,10 @@ sidebar:
---
LI.FI strives to support and contribute to existing and upcoming intent standards to unify intent networks to paving the road towards chain abstraction.
-By actively contributing to [TheCompact](https://github.com/Uniswap/the-compact/pull/65) with the goal of advancing resource locks development and spreading open and borderless account abstraction implementations.
+- By contributing to TheCompact with the goal of advancing resource locks development and spreading open and borderless account abstraction implementations.
+- Working with the Ethereum Foundation on building a modular and flexible intent framework for emerging chains through OIF.
-Working with the Ethereum Foundation on building a modular and flexible intent framework for emerging chains through OIF.
-
-By submitting feedback on ERC7683 and paving a road for ERC7683 integration into Catalyst. While Catalyst does not support ERC7683 today, the goal is to support it in the future.
+- By submitting feedback on ERC7683 and paving a road for ERC7683 integration into LI.FI intents. While LI.FI intents does not support ERC7683 today, the goal is to support it in the future.
## General Incompatibilities
diff --git a/src/content/docs/2-devs/200-dev-overview.mdx b/src/content/docs/2-devs/200-dev-overview.mdx
index a4b0694..f5294dd 100644
--- a/src/content/docs/2-devs/200-dev-overview.mdx
+++ b/src/content/docs/2-devs/200-dev-overview.mdx
@@ -24,7 +24,7 @@ By integrating with Catalyst, you gain access to our network of solvers who comp
### Simple Integration
-Catalyst is designed to work with common resource lock standards like [The Compact](/architecture/input#compactsettler). No custom development is required, significantly reducing the engineering effort needed to support cross-chain functionality.
+Catalyst is designed to work with common resource lock standards like [The Compact](/architecture/input#inputsettlercompact). No custom development is required, significantly reducing the engineering effort needed to support cross-chain functionality.
### Flexibility to Expand
diff --git a/src/content/docs/2-devs/201-simple-swaps.mdx b/src/content/docs/2-devs/201-simple-swaps.mdx
index 37e999a..7fce4c8 100644
--- a/src/content/docs/2-devs/201-simple-swaps.mdx
+++ b/src/content/docs/2-devs/201-simple-swaps.mdx
@@ -1,12 +1,12 @@
---
-title: "Swapping via Catalyst"
+title: "Issuing intents"
slug: "devs/get-started"
-description: "Catalyst is permissionless; no component of the stack requires permissions. You can solve, create intents, and even extend the system to your needs without anyone's permission."
+description: "LI.FI intent is permissionless; no component of the stack requires permissions. You can solve, create intents, and even extend the system to your needs without anyone's permission."
sidebar:
order: 1
---
-Catalyst is an entirely componentized and permissionless system with no inherent trust elements.
+LI.FI intent is an entirely componentized and permissionless system with no inherent trust elements.
It is up to integrators to mix and match components as needed.
Catalyst offers two ways to swap:
@@ -137,7 +137,7 @@ You can schedule additional calls to happen after token delivery. Note that if y
## Off-chain relay via resource locks
-Off-chain relaying of swaps assumes that you have an existing [resource lock](/glossary#resource-lock) somewhere. This guide we assumes you use [TheCompact](/architecture/input#compactsettler). When using pure resource lock flow, ensure funds are already deposited into the lock. For alternative integrations, refer to the [on-chain flow](#on-chain-relay).
+Off-chain relaying of swaps assumes that you have an existing [resource lock](/glossary#resource-lock) somewhere. This guide we assumes you use [TheCompact](/architecture/input#inputsettlercompact). When using pure resource lock flow, ensure funds are already deposited into the lock. For alternative integrations, refer to the [on-chain flow](#on-chain-relay).
```typescript
// Submit an order to the order server
diff --git a/src/content/docs/3-solver/300-introduction.mdx b/src/content/docs/3-solver/300-introduction.mdx
index 6c506f4..ea54349 100644
--- a/src/content/docs/3-solver/300-introduction.mdx
+++ b/src/content/docs/3-solver/300-introduction.mdx
@@ -1,7 +1,7 @@
---
-title: "Solving on Catalyst"
+title: "Solving LI.FI Intents"
slug: "solver/intro"
-description: "All Catalyst orders can be solved permissionlessly. This page introduces you to solving for Catalyst."
+description: "LI.FI intent gives you open order flow and permissionless solving—direct access to cross-chain liquidity, fast settlement cycles, and flexible integration."
sidebar:
order: 0
---
@@ -12,37 +12,35 @@ As a solver in the cross-chain ecosystem, you're likely focused on:
- Minimizing user escrow unlock times to reduce inventory requirements
- Having flexibility in your liquidity sources
-### How Catalyst Helps
+### How LI.FI Intent Helps
- **Direct access to [LI.FI](http://li.fi/)'s significant order flow**
- **Freedom to use any liquidity source** for solving (e.g., DEXs, CEXs, or your own inventory)
-- **Fast user escrow unlock times** (typically within 30 minutes)
+- **Fast user escrow unlock times** (typically less than 2 minutes)
- **Lower capital requirements** due to quick repayment cycles
-## Solving Catalyst
+## Solving Intents
-Catalyst is an entirely permissionless system. Since the system is componentized and components have no inherent trust elements with other components, they can be mixed and matched as desired by users. As a result, it is important that you validate orders in their entirety once received.
-
-The general Catalyst flow is as follows:
+LI.FI intent is an entirely permissionless system. Since the system is componentized and components have no inherent trust elements with other components, they can be mixed and matched as desired by users. As a result, it is important that you validate orders in their entirety once received. The general flow is:
import { Steps } from '@astrojs/starlight/components';
-1. The sponsor signs a Catalyst-compatible lock and sends it to the Catalyst order server.
+1. The sponsor signs the LI.FI intent-compatible lock and sends it to the LI.FI order server.
-2. The Catalyst order server preliminarily validates the order and obtains the allocator co-signature for the order. It is then broadcasted to solvers.
+2. The LI.FI order server preliminarily validates the order and obtains the allocator co-signature for the order. It is then broadcasted to solvers.
-3. A solver submits the order's output to the output settlement contract, starting the verification layer.
+3. A solver submits the order's output to the output settlement contract, starting the oracle system.
:::note[[Output Settlement](/architecture/output)]
- The output settlement is denoted as the `remoteFiller` in the order struct.
+ is denoted as the `output.settler`.
:::
4. The proof is delivered to the input chain through the validation layer.
- :::note[[Validation Layer](/architecture/validation)]
- The validation layer is denoted as the `localOracle` and `remoteOracle` in the order struct.
+ :::note[[Oracle system](/architecture/oracle)]
+ is denoted as the `localOracle` and `output.oracle` in the order struct.
:::
5. The solver submits the order to the input settlement contract, verifying the delivery and unlocking the associated input tokens.
@@ -50,62 +48,96 @@ import { Steps } from '@astrojs/starlight/components';
+### Order Types
+
+LI.FI uses three order structures, listed from least to most verbose:
+1. `BatchClaim`: A signed intent that allows for claiming input assets.
+2. `StandardOrder`: An on-chain definition containing enough information to convey the intent.
+3. Order Server response: A hydrated order with additional information that may be helpful to solvers.
+
+Unless you are verifying order signatures, you won't interact with `BatchClaim`. All on-chain interactions use `StandardOrder` to standardize interfaces. However, `StandardOrder` does not contain enough information to fill intents. As a result, it is hydrated off-chain with `InputSolver`, `signatures`, and more.
+
### Collecting Orders
-The Catalyst system supports the `CatalystCompactOrder` structure across all VMs:
+LI.FI Intents offers two ways to receive orders:
+
+1. **Recommended**: Connect to the order server via WebSocket.
+2. **Alternative**: Monitor on-chain deposits through the deposit interface.
+
+The order server is the recommended integration surface for most solvers. However, if you are interested in the lowest latency, decentralized, and permissionless order discovery, you can read some orders on-chain. Not all orders will be discoverable on-chain. From either source, you will receive a `StandardOrder` and other fill details to be submitted across all VMs:
```solidity
-struct CatalystCompactOrder {
+struct StandardOrder {
address user;
uint256 nonce;
uint256 originChainId;
+ uint32 expires;
uint32 fillDeadline;
address localOracle;
uint256[2][] inputs;
- OutputDescription[] outputs;
+ MandateOutput[] outputs;
}
```
-Where `uint256[2][] inputs === [uint256 tokenId, uint256 amount][]` and `OutputDescription`:
+Where `uint256[2][] inputs === [uint256 tokenId, uint256 amount][]` and `MandateOutput` is:
```solidity
-struct OutputDescription {
- bytes32 remoteOracle;
- bytes32 remoteFiller;
+struct MandateOutput {
+ bytes32 oracle;
+ bytes32 settler;
uint256 chainId;
bytes32 token;
uint256 amount;
bytes32 recipient;
- bytes remoteCall;
- bytes fulfillmentContext;
+ bytes call;
+ bytes context;
}
```
-The `CatalystCompactOrder` will be used to interface all functions on the input chain. Additionally, once hydrated with a signature, it allows one to verify the validity of an order.
+For more information on collecting orders, [View Order Collection Guide →](/solver/orderflow)
-Catalyst offers two ways of receiving orders:
+## Filling Intents
-1. **Recommended**: Connect to the Catalyst order server via WebSocket
-2. **Alternative**: Monitor on-chain deposits through the deposit interface
+To fill intents, all `MandateOutput`s must be executed. Each `MandateOutput` is a self-contained execution description.
+- `output.settler` defines the execution with its associated context and should be called on its interface. Currently, only one OutputSettler is implemented: [`OutputSettlerCoin.sol`](https://github.com/openintentsframework/oif-contracts/blob/main/src/output/coin/OutputSettlerCoin.sol), which has two interfaces for filling:
-The Catalyst order server is the recommended integration surface for most solvers. However, if you are interested in the lowest latency, decentralized, and permissionless order discovery, you can read some orders on-chain. Not all orders will be discoverable on-chain.
-
-[View Order Collection Guide →](/solver/orderflow)
-
-## Filling EVM Orders
+```solidity
+/// @notice For implementing own batching functionality
+function fill(
+ uint32 fillDeadline,
+ bytes32 orderId,
+ MandateOutput calldata output,
+ bytes32 proposedSolver
+) external returns (bytes32 actualSolver);
+
+/// @notice For batch filling entire orders.
+function fillOrderOutputs(
+ uint32 fillDeadline,
+ bytes32 orderId,
+ MandateOutput[] calldata outputs,
+ bytes32 proposedSolver
+) external;
+```
-To fill Catalyst orders, you must support the Output Settlement interfaces. Each Output Settlement interface is different, but most support the generic `OutputDescription` types.
+For more information about filling intents [View EVM Order Filling Guide →](/solver/evm)
-The delivery of assets depends on the Output Settlement Interface associated with an order. The Output Settlement Interface can be read from the order: `orderDto.order.remoteFiller`.
+## Validating Fills
-[View EVM Order Filling Guide →](/solver/evm)
+After filling intents, the proof of fill has to be sent to the input chain. The oracle system used for the order is specified through `localOracle` and `output.oracle`. These should match. However, validating filled outputs is highly oracle specific. For more, [View Oracle System Architecture ->](/architecture/oracle/#implemented-validation-interfaces) ->
## Settling Orders
-Settling Catalyst orders may require up to two transactions:
-1. Submission of self-serve message validation
-2. Finalizing the order on the resource lock
+Lastly, intents have to be settled before their expiry. This is achieved by calling `finalise[withSignature]` on the designated InputSettler. The caller has to be the designated solver set on fill.
-If the validation layer is not self-serve or is being sponsored, only one transaction is needed.
+```solidity
+function finalise(
+ StandardOrder calldata order,
+ bytes calldata signatures,
+ uint32[] calldata timestamps,
+ bytes32[] memory solvers,
+ bytes32 destination,
+ bytes calldata call
+) external;
+```
-[View Order Settlement Guide →](/solver/settlement)
+For more information about settling orders [View Order Settlement Guide →](/solver/settlement)
diff --git a/src/content/docs/3-solver/302-collecting-orders.mdx b/src/content/docs/3-solver/302-collecting-orders.mdx
index b99fdcc..13e131b 100644
--- a/src/content/docs/3-solver/302-collecting-orders.mdx
+++ b/src/content/docs/3-solver/302-collecting-orders.mdx
@@ -1,270 +1,79 @@
---
title: "Collecting Orders"
slug: "solver/orderflow"
-description: "Catalyst has two ways of emitting orders: 1. On-chain through the deposit interface or through the Catalyst order server. For ease of integration and to ensure you receive all orders, it is recommended that you connect to the Catalyst order server for events."
+description: "LI.FI intent delivers real-time order streams and on-chain discovery, ensuring you never miss a cross-chain fill and enabling proactive, data-driven solver strategies."
sidebar:
order: 2
badge:
- text: Devnet!
- variant: caution
+ text: Testnet!
+ variant: note
---
-:::caution[Devnet!]
-Catalyst is currently on devnet! There will be one breaking change to the order struct as we [migrate](https://github.com/catalystsystem/catalyst-intent/pull/92) to [TheCompact v1](https://github.com/Uniswap/the-compact/pull/65) and contracts will have to be redeployed twice before mainnet.
+:::note[Testnet!]
+Li.FI intent is currently on testnet! Contracts will be redeployed once before mainnet.
:::
import { Tabs, TabItem } from "@astrojs/starlight/components";
-The Catalyst order server is a helpful intermediary that allows users to submit intents (orders) and broadcasts those intents to solvers. It serves as a central hub that:
+The order server is a helpful intermediary that allows users to submit intents (orders) and broadcasts those intents to solvers. It serves as a central hub that:
-1. Collects user intents from various sources
-2. Broadcasts these intents to connected solvers in real-time
-3. Tracks the on-chain status of all transactions necessary for the intent to work end-to-end
+1. Collects user intents from various sources.
+2. Broadcasts these intents to connected solvers in real-time.
+3. Tracks the on-chain status of all transactions.
-While the order server is the recommended integration surface for most solvers due to its convenience and comprehensive order delivery, it's important to note that – _for on-chain orders_ – **it's entirely optional**. Catalyst is designed to be fully decentralized, and solvers can choose to directly monitor on-chain events for a more permissionless approach with potentially lower latency.
+:::caution[On-chain orders]
+While the order server is the recommended integration surface due to its built in security aids, it is important to note that – _for on-chain orders_ – the order server **is entirely optional**. However, not all intents are emitted on-chain and [lintent.org](https://lintent.org) does not emit intents on-chain. Intents emitted on-chain needs to be hydrated and very thoroughly validated.
+:::
## Order subscription
-Below we will go over how to collect Catalyst orders. Alternatively see the example solver here: https://github.com/catalystsystem/catalyst-example-solver/blob/main/src/handlers/vm-order.handler.ts
-
-The order subscription system allows solvers to receive real-time order notifications through a WebSocket connection. This subscription-based approach ensures that solvers can immediately process new orders as they enter the system, without needing to continuously poll for updates.
+There are 2 ways to collect orders. Either through a websocket subscription where orders will be pushed or via a GET endpoint. It is recommended to get orders pushed via the websocket subscription. Both methods can be found in the [lintent.org](https://lintent.org) demo [implementation](https://github.com/catalystsystem/lintent/blob/a4aa78cd058cade732b73d83aa2843dd4e9ea24d/src/lib/utils/api.ts#L75-L114).
-When subscribing to orders, solvers receive structured data containing all necessary information to evaluate and potentially fulfill each order. The subscription system handles automatic reconnection in case of connection issues and provides a robust way to maintain a persistent connection to the order server.
+If you use the GET endpoint too aggressively, you may be throttled or temporarily timed out. You can find swagger documentation on api interfaces on https://order-dev.li.fi/docs.
### Order Server events
-Catalyst webscoket message are formatted with a event and a data field:
-```typescript
-interface CatalystEvent {
- event: CatalystWsEventType;
- data: T;
-}
-```
-The Datafield depends on the event type::
-```typescript
-export enum WebSocketEvents {
- /// @dev Heartbeat event.
- PING = "ping",
- /// @dev Intent has been submitted and is being broadcast
- USER_ORDER_VM = "user:vm-order-submit",
- /// @dev Intent status has been changed. This may indicate that an intent has been filled.
- APP_ORDER_STATUS_CHANGED = "app:order-status-change",
-}
-```
-
-When connected to the order server, the order server will continuously send a ping messages to which the client is expected to respond with a `pongs`. This is used to disconnect misbehaving clients and for debugging purposes.
-
-For order collection, the important event is `USER_ORDER_VM`. The Data will be formatted as a `CatalystOrder`:
-
-```typescript
-export interface CatalystOrder {
- order: CompactOrder;
- quotes: QuoteContext;
- meta: CatalystOrderMeta;
- sponsorSignature: string;
- allocatorSignature: string;
-}
-
-export interface QuoteContext {
- toAsset: string;
- toPrice: string;
- discount: string;
- fromAsset: string;
- fromPrice: string;
- intermediary: string;
-}
-
-export interface CompactOrder {
- type: "CompactOrder"; // Used to identify this as a compact order
- user: string;
- nonce: number;
- originChainId: number;
- fillDeadline: number;
- localOracle: string;
- inputs: [number, number][];
- outputs: OutputDescription[];
-}
-
-export interface OutputDescription {
- remoteOracle: string;
- remoteFiller: string;
- token: string;
- amount: number;
- recipient: string;
- chainId: number;
- remoteCall: string;
- fulfillmentContext: string;
-}
-
-export interface CatalystOrderMeta {
- submitTime: number;
- orderIdentifier?: string;
- orderStatus?: string;
- connectedWalletId?: string;
- destinationAddress?: string;
- originId?: string;
- confirmationsCount?: number;
- requiredConfirmationsCount?: number;
- orderInitiatedTxHash?: string;
- orderPurchasedTxHash?: string;
- orderProvenTxHash?: string;
- nonVmTxHash?: string;
-
- signedAt?: Date;
- initiatedAt?: Date;
- pendingTransferAt?: Date;
- settledTransferAt?: Date;
- purchasedAt?: Date;
- provenAt?: Date;
- failedAt?: Date;
- expiredAt?: Date;
-}
-```
-
-Below you can find an example script to connect to the websocket server.
-
-```typescript
-import { WebSocket } from "ws";
+When connected to the order server, the order server will continuously send a ping messages to which the client is expected to respond with a `pong`. This is used to disconnect misbehaving clients and for debugging purposes. You can find an example [implementation here](https://github.com/catalystsystem/lintent/blob/a4aa78cd058cade732b73d83aa2843dd4e9ea24d/src/lib/utils/api.ts#L89-L95).
-class WebSocketClient {
- private ws: WebSocket;
- private reconnectInterval = 5000; // Reconnect interval in milliseconds
- private wsUri: string;
-
- constructor(wsUri: string) {
- this.wsUri = wsUri;
- this.connect();
- }
-
- private connect(): void {
- // Initialize WebSocket connection
- this.ws = new WebSocket(this.wsUri);
-
- // Connection opened
- this.ws.on("open", () => {
- console.log("Connected to WebSocket server");
- // You can send an initial message here if needed
- this.ws.send(
- JSON.stringify({ type: "hello", message: "Connected to server" })
- );
- });
-
- // Listen for messages
- this.ws.on("message", async (data: RawData) => {
- try {
- const parsedData: CatalystEvent = JSON.parse(data.toString());
-
- switch (parsedData.event) {
- case CatalystWsEventType.PING:
- this.handleReceivePing();
- break;
-
- case CatalystWsEventType.VM_ORDER:
- console.log(`[${CatalystWsEventType.VM_ORDER}]`, parsedData);
- // add your custom filling logic in this function
- await this.handleVmOrder(
- parsedData as CatalystEvent
- );
- break;
-
- default:
- console.log("Unknown message type:", parsedData);
- }
- } catch (error) {
- console.error("Error parsing JSON:", error);
- }
- });
-
- // Handle errors
- this.ws.on("error", (error) => {
- console.error("WebSocket error:", error);
- });
-
- // Handle disconnection
- this.ws.on("close", () => {
- console.log("Disconnected from WebSocket server");
- this.reconnect();
- });
- }
-
- private reconnect(): void {
- console.log(
- `Attempting to reconnect in ${this.reconnectInterval / 1000} seconds...`
- );
- setTimeout(() => {
- this.connect();
- }, this.reconnectInterval);
- }
-
- public sendMessage(message: any): void {
- if (this.ws.readyState === WebSocket.OPEN) {
- this.ws.send(JSON.stringify(message));
- } else {
- console.warn("WebSocket is not open. Cannot send message.");
- }
- }
-
- private sendPong(): void {
- this.sendMessage({ type: "pong" });
- }
-
- public close(): void {
- this.ws.close();
- }
-}
-
-// Usage example
-const wsUri = "order-server-uri";
-
-// Create WebSocket client
-const client = new WebSocketClient(wsUri);
-
-// Keep the process running
-process.on("SIGINT", () => {
- console.log("Closing WebSocket connection...");
- client.close();
- process.exit(0);
-});
-```
+For order collection, the important event is `user:vm-order-submit`. The Data will be returned similarly to it was [submitted](https://order-dev.li.fi/docs#:~:text=SubmitOrderDto).
## Order Validation
-Catalyst allows highly customizable orders. As a result, you want to add further validation to ensure that you support the order being relayed to you. As a result, it is important to properly validate orders.
-
-Below the term whitelisted will be used to describe trusted and validated by **you**. When it is written that a token _has_ to be whitelisted, it means **you** trust the token. If a validation layer is whitelisted, it means **you** trust the validation layer, etc.
-Whitelisted does not mean permissioned by a central entity, it means trusted by **you**.
-
-The following is an attempt at an exhausive list of validations that solvers have to implement. While this list seems excessive, you have already implemented checks for the majority of these.
-
-1. `fillDeadline` Ensure that you have sufficient time to fill the order:
- - Time to fill on destination chain, including potential source chain finality.
-2. `expiry` Ensure that you have sufficient time to fill, relay, and claim the order:
- - Time to fill on destination chain, including potential source chain finality.
- - Time to send message validation proof to input chain.
- - Time to claim order after validation has been delivered.
-3. Validation layer. Ensure that you support submitting proofs (and if not automatic, also relaying) to the validation layer. Additionally, the `localOracle` and `remoteOracle`s needs to be of the same validation layer.
-4. Ensure that you have whitelisted every single `input` token. If one input token is malicious the order may be unclaimable. Additionally, for blacklistable tokens like USDC, ensure that you is not on a blacklist.
- - If an order has a 0 input or output of a token you have not whitelisted, the order may not be fillable. Be careful about filling orders containing strange tokens.
-5. Ensure that every `input` token uses the same lockid.
-6. Ensure that the potential `reset period` for a resource lock extends beyond the `expiry` AND there is no active withdrawal.
-7. Ensure that the `allocatorID` is whitelisted. The allocator can block claims from processing (by withdrawing signatures or reusing nonces.)
- - The allocatorID is part of the `lock tag` for `inputs`. (first 12 bytes).
- - Optionally, ensure that the user has sufficient tokens. This should have been validated by the allocator though.
-8. Ensure that the user provides a ECDSA signature **or** they have a whitelisted [emissary](/glossary#emissary) registered **or** you register the claim on-chain before filling the claim.
+LI.FI Intents allows highly customizable orders. As a result, you should add further validation to ensure you support the order being relayed to you. It is important to properly validate orders.
+
+Below, the term whitelisted refers to trusted and validated by **you**. When a token _must_ be whitelisted, it means **you** trust the token. If a validation layer is whitelisted, it means **you** trust the validation layer, etc. Whitelisted does not mean permissioned by a central entity; it means trusted by **you**.
+
+The following is an attempt at an exhaustive list of validations that solvers must implement. While this list may seem excessive, you have likely already implemented checks for most of these.
+
+1. `fillDeadline`: Ensure you have sufficient time to fill the order:
+ - Time to fill on the destination chain, including potential source chain finality.
+2. `expiry`: Ensure you have enough time to fill, relay, and claim the order:
+ - Time to fill on the destination chain, including potential source chain finality.
+ - Time to send message validation proof to the input chain.
+ - Time to claim the order after validation has been delivered.
+3. Validation layer: Ensure you support submitting proofs (and, if not automatic, also relaying) to the validation layer. Additionally, the `localOracle` and `remoteOracle` must be of the same validation layer.
+4. Ensure you have whitelisted every single `input` token. If one input token is malicious, the order may be unclaimable. Additionally, for blacklistable tokens like USDC, ensure you are not on a blacklist.
+ - If an order has a 0 input or output of a token you have not whitelisted, the order may not be fillable. Be careful about filling orders containing unfamiliar tokens.
+5. Ensure every `input` token uses the same lockid.
+6. Ensure the potential `reset period` for a resource lock extends beyond the `expiry` AND there is no active withdrawal.
+7. Ensure the `allocatorID` is whitelisted. The allocator can block claims from processing (by withdrawing signatures or reusing nonces.)
+ - The allocatorID is part of the `lock tag` for `inputs` (first 12 bytes).
+ - Optionally, ensure the user has sufficient tokens. This should have been validated by the allocator, though.
+8. Ensure the user provides an ECDSA signature **or** they have a whitelisted [emissary](/glossary#emissary) registered **or** you register the claim on-chain before filling the claim.
- Note: If any of these actions are taken, the signature can be assumed to be trusted.
- - Emissary signatures cannot be registered on-chain. The emissary have to be trusted to not redact a signature.
+ - Emissary signatures cannot be registered on-chain. The emissary must be trusted not to redact a signature.
9. For each output:
1. `output.chainId` is whitelisted.
- 2. `remoteOracle` and `localOracle` has been correct configured regarding `originChainId` and `output.chainId`. The config is immutable so this can be done once for each pair.
+ 2. `remoteOracle` and `localOracle` are correctly configured regarding `originChainId` and `output.chainId`. The config is immutable, so this can be done once for each pair.
3. `output.remoteFiller` is whitelisted.
- 4. `output.fulfillmentContext` is decodable and the order type is supported and compatible with `output.remoteFiller`.
+ 4. `output.fulfillmentContext` is decodable, and the order type is supported and compatible with `output.remoteFiller`.
5. `output.token` is whitelisted. Additionally, for blacklistable tokens like USDC, ensure that neither you nor the recipient is on a blacklist.
- - If an order has a 0 input or output of a token you have not whitelisted, the order may not be fillable. Be careful about filling orders containing strange tokens.
+ - If an order has a 0 input or output of a token you have not whitelisted, the order may not be fillable. Be careful about filling orders containing unfamiliar tokens.
6. You have sufficient tokens for `output.amount`.
- 7. If the output has `calldata`, that you can execute it and other outputs atomically. For output on different chains, you may have to whitelist recipients if there is `calldata`.
- - On OP-chains, [CrossL2Inbox](https://specs.optimism.io/interop/predeploys.html#validatemessage) needs to be blacklisted in the entire call tree. If a similar contracts exists on another chain, they also need to be blacklisted.
+ 7. If the output has `calldata`, ensure you can execute it and other outputs atomically. For outputs on different chains, you may have to whitelist recipients if there is `calldata`.
+ - On OP-chains, [CrossL2Inbox](https://specs.optimism.io/interop/predeploys.html#validatemessage) needs to be blacklisted in the entire call tree. If similar contracts exist on another chain, they also need to be blacklisted.
-10. If the order has multiple outputs, ensure that you can fill all outputs and the first output is set to your solver identifier. If all outputs are on the same chain, `fillBatch` can be used as a protective measure.
+10. If the order has multiple outputs, ensure you can fill all outputs and the first output is set to your solver identifier. If all outputs are on the same chain, `fillBatch` can be used as a protective measure.
11. Validate the `allocatorData`. You may have to do an on-chain call.
12. Validate that the allocator `nonce` has not been spent previously by any user. The Order nonce is not a user nonce.
@@ -275,39 +84,35 @@ Tokens inputs are provided as uint256. This is a standard format for resource lo
### Signature Validation
-The `CatalystCompactOrder` will be used to interface all functions on the input chain. Additionally, once hydrated with a signature, it allows one to verify the validity of an order.
+The `StandardOrder` will be used to interface all functions on the input chain. Additionally, once hydrated with a signature, it allows one to verify the validity of an order.
-The `CatalystCompactOrder` struct will be signed and stored as a witness in the appropriate lock/claim structure. For TheCompact, this is:
+The `StandardOrder` struct will be signed and stored as a witness in the appropriate lock/claim structure. For TheCompact, this is:
```solidity
struct BatchCompact {
address arbiter; // Associated settlement contract
- address sponsor; // CatalystCompactOrder.user
- uint256 nonce; // CatalystCompactOrder.nonce
- uint256 expires; // CatalystCompactOrder.fillDeadline
- uint256[2][] idsAndAmounts; // CatalystCompactOrder.inputs
- CatalystWitness witness;
+ address sponsor; // StandardOrder.user
+ uint256 nonce; // StandardOrder.nonce
+ uint256 expires; // StandardOrder.expires
+ uint256[2][] idsAndAmounts; // StandardOrder.inputs
+ Mandate mandate;
}
-struct CatalystWitness {
- uint32 fillDeadline; // CatalystCompactOrder.fillDeadline
- address localOracle; // CatalystCompactOrder.localOracle
- OutputDescription[] outputs; // CatalystCompactOrder.outputs
+struct Mandate {
+ uint32 fillDeadline; // StandardOrder.fillDeadline
+ address localOracle; // StandardOrder.localOracle
+ OutputDescription[] outputs; // StandardOrder.outputs
}
```
To validate an order, ensure that the sponsor and allocator signatures are valid for this EIP-712 signed structure.
-
#### On-chain Order Broadcast
-Output settlement schemes supporting on-chain orders like [`CompactSettlerWithDeposit.sol`](/architecture/input/#with-deposit) or the [LI.FI facet](https://github.com/reednaa/lifi-contracts/blob/catalyst/src/Facets/CatalystFacet.sol) allow anyone to broadcast and collect orders on-chain through either `Deposited` event:
+When intents are registered on-chain, they can be broadcasted on the Input Settlement contract through the [`IntentRegistered`](https://github.com/catalystsystem/catalyst-intent/blob/27ce0972c150ed113f66ae91069eb953f23d920b/src/input/compact/InputSettlerCompactLIFI.sol#L67) event:
```solidity
-/// @dev LI.FI facet since it does not have access to the orderId.
-event Deposited(CatalystCompactOrder order);
-/// @dev Catalyst Settler since it does has access to the orderId.
-event Deposited(bytes32 indexed orderId, CatalystCompactOrder order);
+event IntentRegistered(bytes32 indexed orderId, StandardOrder order);
```
:::caution
diff --git a/src/content/docs/3-solver/303-quoting.mdx b/src/content/docs/3-solver/303-quoting.mdx
index 22e0c5c..878d01a 100644
--- a/src/content/docs/3-solver/303-quoting.mdx
+++ b/src/content/docs/3-solver/303-quoting.mdx
@@ -1,121 +1,81 @@
---
title: "Quoting Orders"
slug: "solver/quoting"
-description: "To avoid the need for solvers to respond to every individual quote request, the order server allows solvers to regularly push their inventory to the order server in the format of `quote chunks`. This approach significantly reduces the overhead for solvers and improves the efficiency of the quoting process."
+description: "LI.FI intent enables efficient quoting and inventory management—broadcast liquidity and pricing, compete on your terms, and respond to market changes instantly."
sidebar:
order: 3
---
-To avoid the need for solvers to respond to every individual quote request, the order server allows solvers to regularly push their inventory to the order server in the format of `quote chunks`.
+The order server will deliver quotes to intent issuers. These are based on the available inventory provided by solvers. To avoid the need for solvers to respond to every individual quote request, the order server allows solvers to regularly push their inventory to the order server in the format of `quote chunks`.
This approach significantly reduces the overhead for solvers and improves the efficiency of the quoting process.
-Solvers can broadcast their available liquidity and pricing information in the following format:
+The following code chunk provides an example implementation of quoting between USDC and USDC between Ethereum and Base.
```json
-// example of 2 quote chunks
{
"chainId": 1, // Ethereum
"asset": "0xA0b86991c...", // USDC on Ethereum, address(0) for native tokens
- "fromPrice": "1000000", // price of token in USDC when sold to the solver
- "toPrice": "1100000", // price of token in USDC when bought from the solver
- "fromCost": "1000", // cost of token in USDC when sold to the solver
- "toCost": "1000", // cost of token in USDC when bought from the solver
+ "fromPrice": "1000000000000000000", // price of token in USDC when sold to the solver
+ "toPrice": "1100000000000000000", // price of token in USDC when bought from the solver
+ "fromCost": "1000", // cost of token in token when sold to the solver
+ "toCost": "1000", // cost of token in token when bought from the solver
"maxAmount": 1000000000, // max the solver will handle
- "minAmount": 1000000, // optional minimum amount
+ "minAmount": 1000000, // minimum amount the solver will process
"expiry": 1713296400 // quote expires at this timestamp
-}
-
-{
+}, {
"chainId": 8453, // Base
- "asset": "0xA0b86991c...", // USDC on Base, address(0) for native tokens
- "fromPrice": "9900000", // price of token in USDC when sold to the solver
- "toPrice": "1000000", // price of token in USDC when bought from the solver
- "fromCost": "1000", // cost of token in USDC when sold to the solver
- "toCost": "1000", // cost of token in USDC when bought from the solver
+ "asset": "0x833589fCD...", // USDC on Base, address(0) for native tokens
+ "fromPrice": "1000000000000000000", // price of token in USDC when sold to the solver
+ "toPrice": "1100000000000000000", // price of token in USDC when bought from the solver
+ "fromCost": "1000", // cost of token in token when sold to the solver
+ "toCost": "1000", // cost of token in token when bought from the solver
"maxAmount": 1000000000, // max the solver will handle
- "minAmount": 1000000, // optional minimum amount
+ "minAmount": 1000000, // minimum amount the solver will process
"expiry": 1713296400 // quote expires at this timestamp
}
```
-Prices are specified in an abstract intermediary that has to be consistent between **your** quotes. We recommended using USDC. Everything is integer priced. Make sure that your decimals are correct. The final quote will be derived as: $Quote = \frac{\left(inputAmount - inputFee\right) \cdot inputPrice}{outputPrice} - outputFee$
+Prices are specified in an abstract intermediary that has to be consistent between **your** quotes. We recommended using USDC with 18 decimals. Everything is integer priced. Make sure that your decimals are correct. The final quote will be derived as: $$Quote = \frac{\left(inputAmount\ -\ inputFee\right)\ \cdot\ inputPrice}{outputPrice} - outputFee$$
:::caution
-It is important to factor token decimals into your quotes as otherwise assets will be priced incorrectly.
-For a 1000 USDC to Ether swap with the price of $1500 USDC per Ether:
+It is important to factor token decimals into your quotes; otherwise, assets will be priced incorrectly.
+For example, for a 1000 USDC to Ether swap with the price of $1500 USDC per Ether:
$$Quote = \frac{\left(1000'000'000 - 1'000'000\right) \cdot 1'000'000'000'000'000'000}{1500'000'000} - outputFee = 666'666'666'666'666'666 = 0.67\ Ether$$
-:::
+Note that the decimals are inversely represented. If a USDC quote is provided with 18 decimals, then an Ether quote should have $$6+18-18=6$$ decimals, while another USDC quote should have $$6+18-6=18$$ decimals. A token with 8 decimals should have its quote with $$6+18-8=16$$ decimals.
+:::
-It is important that solvers update their quotes periodically as market conditions change with correct expiry dates. If your quotes expire, the order server will stop using them to match user requests.
+It is important that solvers update their quotes periodically as market conditions change, with correct expiry dates. If your quotes expire, the order server will stop using them to match user requests.
:::note[You can overwrite old quotes by sending new quotes]
-Overwriting quotes allows you to send longer lived quotes, updating them as markets evolve. Alternatively, you can send very short lived quotes then preemtivly update your quotes.
+To avoid sending short-lived quotes, the order server will overwrite existing quotes when a new one is received. This allows you to have long-lived quotes and only update them as markets evolve. Alternatively, you can send very short-lived quotes and preemptively update your quotes every second.
:::
By broadcasting quotes in this manner, solvers can:
-- Efficiently communicate their available liquidity across multiple chain and token pairs
-- Set their own pricing and fee structure
-- Define limits on transaction sizes they're willing to process
-- Update their quotes as market conditions change
+- Efficiently communicate their available liquidity across multiple chain and token pairs.
+- Set their own pricing and fee structure.
+- Define limits on transaction sizes they're willing to process.
+- Update their quotes as market conditions change.
- The order server then uses these broadcast quotes to match incoming user requests without needing to query solvers in real-time for every request, resulting in faster quote responses for users and reduced operational overhead for solvers.
-Here's a simple JavaScript example showing how to submit quotes to the Catalyst order server:
-
-```javascript
-// Using fetch API (browser or Node.js with node-fetch)
-async function submitQuote(apiKey, quoteData) {
- const response = await fetch("order-server-uri/quotes/submit", {
- method: "POST",
- headers: {
- "Content-Type": "application/json",
- "x-api-key": apiKey,
- },
- body: JSON.stringify(quoteData),
- });
-
- if (!response.ok) {
- throw new Error(
- `Error submitting quote: ${response.status} ${response.statusText}`
- );
- }
-
- return await response.json();
-}
+Submit quotes to [`/quotes/submit`](https://order-dev.li.fi/docs#/Quotes/QuotesController_submitQuote).
-// Example usage
-const apiKey = "your-api-key-here";
-const quote = {
- chainId: 1, // Ethereum
- asset: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC on Ethereum
- fromPrice: "1000000", // price of token in USDC when sold to the solver
- toPrice: "1100000", // price of token in USDC when bought from the solver
- fromCost: "1000", // cost of token in USDC when sold to the solver
- toCost: "1000", // cost of token in USDC when bought from the solver
- maxAmount: 1000000000, // max the solver will handle
- minAmount: 10000000, // optional minimum amount
- expiry: Math.floor(Date.now() / 1000) + 3600, // 1 hour from now
-};
-
-// Submit the quote
-submitQuote(apiKey, quote)
- .then((response) => console.log("Quote submitted successfully:", response))
- .catch((error) => console.error("Failed to submit quote:", error));
-```
+## Chain & Asset Support
+The order server uses quotes to determine supported chains and assets. This allows solvers to add support for new chains and assets simply by producing quotes for them.
-## Authentication
+## Authentication (WIP)
-While authentication is not necessary to subscribe to the order server's WebSocket events, it is required to use some order server's API services.
-All solvers need to be authenticated with the Catalyst order server to be able to push their inventory to the order server. Without it, the order server won't be able to offer your quotes to users.
+While authentication is not necessary to subscribe to the order server's WebSocket events, it is required to use some of the order server's API services.
+All solvers must be authenticated with the order server to be able to push their inventory. Without authentication, the order server won't be able to offer your quotes to users.
Authentication is handled via API tokens that provide secure access to the order server's protected API services.
##### Obtaining API Access
-To get your API token please reach out to the order server team.
+To get your API token, please reach out to the order server team.
##### Using Your API Token
diff --git a/src/content/docs/3-solver/304-auction.mdx b/src/content/docs/3-solver/304-auction.mdx
index ef7ebaa..649c9f8 100644
--- a/src/content/docs/3-solver/304-auction.mdx
+++ b/src/content/docs/3-solver/304-auction.mdx
@@ -1,51 +1,38 @@
---
title: "Auctions"
slug: "solver/auctions"
-description: "Catalyst supports various order types and auctions to get the best price for users. Solvers compete in these auctions through various means."
+description: "LI.FI intent powers on-chain auctions and flexible order types, letting you compete for fills and optimize execution across cross-chain settlement."
sidebar:
order: 4
---
-Catalyst supports three order types: Limit Order (First come, first serve / gas auction), Dutch Auction (on-chain), and off-chain auctions.
+LI.FI intent supports four order types: Simple limit orders, Dutch auctions, Exclusive limit orders, and Exclusive dutch auctions. Each intent output encodes a specific order type. Generally, all outputs should be of the same order type.
-Each output encodes a specific order type. Generally, all outputs will be of the same order type. (This is enforced.)
-
-For an order with multiple outputs, the filler of the first output will **always** be the recipient of the inputs. The inputs cannot be claimed until all outputs are filled.
-
-The _auction_ happens on-chain, with the winner determined by speed.
+For an order with multiple outputs, the solver of the first output will **always** be the recipient of the inputs. The inputs cannot be claimed until all outputs are filled. The _auction_ happens on-chain, with the winner determined by speed.
### Limit Order (First come, First serve)
-Catalyst limit orders are simple: single price, first execution. That means the amount set in `OutputDescription` is final and will be what you are paying. The output can be filled once per `orderId` (the output is hashed and stored in a map with `orderId`).
+LI.FI intent limit orders are simple: single price, first execution. That means the amount set in `OutputDescription` is final and will be what you are paying. The output can be filled once per `orderId` (the output is hashed and stored in a map with `orderId`).
-The winner of an order is the first solver to call `fill` and set their identifier for the output.
+The winner of an order is the first solver to call `fill(...)` and set their identifier for the output.
-You can identify Limit Orders by **both** `fillerAddress` and `fulfillmentContext`. `fulfillmentContext` should be either `0x` or `0x00`.
+You can identify Limit Orders by `output.context` of either `0x` or the order type `0x00`.
### Dutch Auction
-Catalyst Dutch auctions are slightly more complicated. The fulfillment context will have the slope and stopTime encoded.
+LI.FI intent Dutch auctions are capped dutch auctions. They are fixed in price before and after certain timestamps. The slope, startTime, and stopTime are encoded in `output.context`.
-The winner of an order is the first solver to call `fill` and set their identifier as the output. Notice that the win selection is equivalent to the limit order, except the earlier the fill is called, the more the solver pays.
+The winner of an order is the first solver to call `fill(...)` and set their identifier as the output. Notice that the win selection is equivalent to the limit order, except the earlier the fill is called, the more the solver pays.
-You can identify Dutch Auctions by **both** `fillerAddress` and `fulfillmentContext`. `fulfillmentContext` should be `0x01 | uint256(slope) | uint256(stopTime)`, with the final amount being computed as:
+You can identify Dutch Auctions by the order type: `0x01`. The context is encoded as: `bytes1(0x01) | uint32(startTime) | uint32(stopTime) | uint256(slope)`, with the final amount being computed as:
```solidity
-uint32 currentTime = uint32(block.timestamp);
+uint32 currentTime = max(block.timestamp, startTime);
+if (stopTime < currentTime) return amount;
uint256 timeDiff = stopTime - currentTime;
return amount + slope * timeDiff;
```
-The auction happens on-chain, with the winner determined by speed and thus also price.
-
-### Off-chain Auctions
-
-Catalyst off-chain auctions allow for complex auction logic at the cost of centralization. An order can choose an off-chain entity to execute an auction on its behalf.
-
-That entity shall then sign and append information to the `Output`, which the winner of the auction can then redeem on-chain.
-
-You can identify off-chain auctions by their `fillerAddress`.
-
-The first off-chain auction will be a classical English auction; the winner will be determined as the person with the highest bid within the auction window.
+The maximum amount of the auction is `amount + (stopTime - startTime) * slope`.
-The auction happens off-chain, with the winner determined by the best price within the auction window.
\ No newline at end of file
+You can find the on-chain [implementation here](https://github.com/openintentsframework/oif-contracts/blob/main/src/output/coin/OutputSettlerCoin.sol#L60).
\ No newline at end of file
diff --git a/src/content/docs/3-solver/320-evm-fill.mdx b/src/content/docs/3-solver/320-evm-fill.mdx
index 83d03e7..7d4f0d0 100644
--- a/src/content/docs/3-solver/320-evm-fill.mdx
+++ b/src/content/docs/3-solver/320-evm-fill.mdx
@@ -1,72 +1,31 @@
---
title: "Filling EVM Orders"
slug: "solver/evm"
-description: "To fill Catalyst orders, you need to support Output Settlement interfaces. Each Output Settlement interface is different, but most support the generic OutputDescription types and allow filling orders through a shared context."
+description: "LI.FI intent standardizes settlement interfaces so you can focus on execution, not integration headaches—making EVM order filling fast and reliable."
sidebar:
order: 20
---
import { Tabs, TabItem } from "@astrojs/starlight/components";
-The delivery of assets depends on the Output Settlement Interface associated with an order. The Output Settlement Interface can be read from the order: `orderDto.order.remoteFiller`.
+To be able to finalise an intent, all outputs have to be delivered. This is done by submitting the intent outputs to the Output Settler as described by `output.settler`.
-### BaseFiller-based (CoinFiller)
-
-The CoinFiller is the simplest Output Settlement implementation and allows specifying limit orders and Dutch auctions.
-
-:::caution
-Support for Dutch auctions is not yet provided.
-:::
-
-To fill an output using Output Settlements based on `BaseFiller`, use the associated fill interfaces:
-
-```solidity
-function fill(bytes32 orderId, OutputDescription calldata output, bytes32 proposedSolver) external returns (bytes32) {
- return _fill(orderId, output, proposedSolver);
-}
-
-function fillThrow(bytes32[] calldata orderIds, OutputDescription[] calldata outputs, bytes32 filler) external {
- _fillThrow(orderIds, outputs, filler);
-}
-
-function fillSkip(bytes32[] calldata orderIds, OutputDescription[] calldata outputs, bytes32 filler) external {
- _fillSkip(orderIds, outputs, filler);
-}
-```
-
-Filling a single output description is most efficient with `fill(...)` since it does not contain a loop. However, it is limited to a single output at a time.
-
-For batch filling, `fillThrow` or `fillSkip` may be better:
-- `fillThrow` fills all outputs, but if one has already been filled by another solver, the entire call will revert. Use it when an output has multiple outputs and you are filling all outputs of an order or none.
-
-- `fillSkip` fills all outputs, but if some have already been filled, those will be skipped silently. Use it when you are batch filling multiple orders. This allows you to claim as many outputs as possible in one go, even if one order has been filled by another solver.
-
-## Validation Layers
-
-Once orders have been filled on the output settlement contract, they need to be submitted to the validation layer to be ferried to the input chain. The first step is to generate the associated payload. The reference payload encoding format is:
-
-```
-Encoded FillDescription
- SOLVER 0 (32 bytes)
- + ORDERID 32 (32 bytes)
- + TIMESTAMP 64 (4 bytes)
- + TOKEN 68 (32 bytes)
- + AMOUNT 100 (32 bytes)
- + RECIPIENT 132 (32 bytes)
- + REMOTE_CALL_LENGTH 164 (2 bytes)
- + REMOTE_CALL 166 (LENGTH bytes)
- + FULFILLMENT_CONTEXT_LENGTH 166+RC_LENGTH (2 bytes)
- + FULFILLMENT_CONTEXT 168+RC_LENGTH (LENGTH bytes)
-```
-
-It may be beneficial to batch multiple proven outputs to the validation layer.
-
-### Simple Broadcast Interfaces (Wormhole)
-
-For messaging protocols supporting simple broadcast interfaces like Wormhole, the following interface is used:
+Currently, only one Output Settler is supported exposing 2 [fill interfaces](https://github.com/openintentsframework/oif-contracts/blob/d238f87d01552986b66d392d0f2ea77bd6e25f2f/src/output/BaseOutputSettler.sol#L101-L151):
```solidity
-function submit(address proofSource, bytes[] calldata payloads) public payable returns (uint256 refund);
+function fill(
+ uint32 fillDeadline,
+ bytes32 orderId,
+ MandateOutput calldata output,
+ bytes32 proposedSolver
+) external virtual returns (bytes32 actualSolver);
+
+function fillOrderOutputs(
+ uint32 fillDeadline,
+ bytes32 orderId,
+ MandateOutput[] calldata outputs,
+ bytes32 proposedSolver
+) external;
```
-Where `proofSource = orderDto.order.remoteFiller` and `payloads` is the encoded OutputDescriptions.
\ No newline at end of file
+Note that `fill` does not revert if an output has already been filled. It instead returns the address of the solver that has been recorded as the filler. You will not be debited any assets. If you need the fill to revert, use `fillOrderOutputs`.
diff --git a/src/content/docs/3-solver/329-btc-fill.mdx b/src/content/docs/3-solver/329-btc-fill.mdx
index 2a12b63..2308b3a 100644
--- a/src/content/docs/3-solver/329-btc-fill.mdx
+++ b/src/content/docs/3-solver/329-btc-fill.mdx
@@ -1,7 +1,7 @@
---
title: "Filling BTC Orders"
slug: "solver/btc"
-description: "Catalyst supports Bitcoin orders. Filling Bitcoin orders is more complex than filling EVM orders. If you are interested in filling Bitcoin orders, reach out and we will assist you."
+description: "LI.FI intent supports Bitcoin orders. Filling Bitcoin orders is more complex than filling EVM orders. If you are interested in filling Bitcoin orders, reach out and we will assist you."
sidebar:
order: 100
badge:
@@ -9,7 +9,7 @@ sidebar:
variant: danger
---
-Catalyst supports a Bitcoin validation layer. However, filling Bitcoin swaps is technically more involved than filling EVM swaps. If you are already filling EVM swaps and are interested in filling BTC swaps, or if you want to add Bitcoin swaps to your app through Catalyst, reach out and we can get you onboarded.
+LI.FI intent supports a Bitcoin validation layer. However, filling Bitcoin swaps is technically more involved than filling EVM swaps. If you are already filling EVM swaps and are interested in filling BTC swaps, or if you want to add Bitcoin swaps to your app through LI.FI intent, reach out and we can get you onboarded.
import { Tabs, TabItem } from "@astrojs/starlight/components";
diff --git a/src/content/docs/3-solver/390-settling-orders.mdx b/src/content/docs/3-solver/390-settling-orders.mdx
index c1ec027..8b05a1a 100644
--- a/src/content/docs/3-solver/390-settling-orders.mdx
+++ b/src/content/docs/3-solver/390-settling-orders.mdx
@@ -1,55 +1,42 @@
---
title: "Settling Orders"
slug: "solver/settlement"
+description: "LI.FI intent streamlines finalization and settlement, closing the loop on cross-chain orders and giving you confidence and control over the entire lifecycle."
sidebar:
order: 90
---
import { Tabs, TabItem } from "@astrojs/starlight/components";
-To settle Catalyst orders, up to 2 transactions may be required:
-1. Submission of self-serve message validation
+To settle LI.FI intent orders, up to 2 transactions may be required:
+1. Submission of message validation
2. Finalizing the order on the resource lock.
-If the validation layer is not self-serve or is being sponsored, only 1 transaction is needed. You can listen to the `OutputProven` event to discover when your [payload](/solver/evm#validation-layers) has been verified.
-```
-event OutputProven(uint256 chainid, bytes32 remoteIdentifier, bytes32 application, bytes32 payloadHash);
-```
-## Self-serve (in-progress)
+## Oracle Validation
-For instructions on how to relay proof for self-serve systems, please refer to their section in [validation](/architecture/validation).
+For instructions on how to relay proof for oracle systems, please refer to their section in [validation](/architecture/oracle).
## Finalizing Orders
-The finalize call depends on the [Input Settlement](/architecture/input), but generally, there are multiple interfaces available:
-
-1. finaliseSelf: A self-serve interface to withdraw the claim to the solver address.
-2. finaliseTo: A self-serve interface that allows you to send tokens elsewhere.
-3. finaliseFor: An interface that allows someone to finalize for you, requiring a signature from you.
-
-### CompactSettler
-
-For the CompactSettler (and compliant settlers), you need to deliver the order as you originally received it in `CatalystCompactOrder`, the attached signatures as `bytes.concat(sponsor, allocator)`, the timestamps of the fills (which can be read from the OutputFilled event), and the solver's identifier or address. If there are multiple outputs, always index lists by their position in the order.
+Once the `OutputProven` event has been observed, the output has been validated and `finalise` can be called.
+```
+event OutputProven(uint256 chainid, bytes32 remoteIdentifier, bytes32 application, bytes32 payloadHash);
+```
-Then, finalize can be called:
+For the CompactSettler (and compliant settlers), you need to submit the `StandardOrder`, the attached signatures as `bytes.concat(sponsor, allocator)`, the timestamps of the fills (which can be read from the `OutputFilled` event), and the solver's identifier or address. If there are multiple outputs, always index lists by their position in the order. Then, finalize can be called:
```solidity
-function finaliseSelf(CatalystCompactOrder calldata order, bytes calldata signatures, uint32[] calldata timestamps, bytes32 solver) external;
-
-function finaliseTo(CatalystCompactOrder calldata order, bytes calldata signatures, uint32[] calldata timestamps, bytes32 solver, address destination, bytes calldata call) external;
-
-function finaliseFor(
- CatalystCompactOrder calldata order,
+function finalise(
+ StandardOrder calldata order,
bytes calldata signatures,
uint32[] calldata timestamps,
- bytes32 solver,
- address destination,
- bytes calldata call,
- bytes calldata orderOwnerSignature
+ bytes32[] memory solvers,
+ bytes32 destination,
+ bytes calldata call
) external;
```
:::note
-If an order contains multiple outputs and two solvers filled different outputs, then the solver of the 0th (or first) output is the canonical solver. However, the associated backup functions should be called instead with a list of the solvers as indexed by order.outputs.
+If an order contains multiple outputs and two solvers filled different outputs, then the solver of the 0th (first) output is the canonical solver.
:::
\ No newline at end of file
diff --git a/src/content/docs/7-knowledge/701-bitcoin-primer.mdx b/src/content/docs/7-knowledge/701-bitcoin-primer.mdx
index 3e2516c..b0dce6f 100644
--- a/src/content/docs/7-knowledge/701-bitcoin-primer.mdx
+++ b/src/content/docs/7-knowledge/701-bitcoin-primer.mdx
@@ -1,7 +1,7 @@
---
title: "Bitcoin Primer"
slug: "knowledge/bitcoin"
-description: "What is Bitcoin? What is a Bitcoin Block? What is a Bitcoin transaction? And how do Catalyst prove Bitcoin fulfillments? This page contains all the information required to understand how Catalyst can interact with BTC."
+description: "What is Bitcoin? What is a Bitcoin Block? What is a Bitcoin transaction? And how do LI.FI intent prove Bitcoin fulfillments? This page contains all the information required to understand how LI.FI intent can interact with BTC."
sidebar:
order: 1
---
diff --git a/src/content/docs/7-knowledge/702-resource-locks.mdx b/src/content/docs/7-knowledge/702-resource-locks.mdx
index 22f828c..91a9ec7 100644
--- a/src/content/docs/7-knowledge/702-resource-locks.mdx
+++ b/src/content/docs/7-knowledge/702-resource-locks.mdx
@@ -1,7 +1,7 @@
---
title: "Resource Locks"
slug: "knowledge/resource-locks"
-description: "Resource locks allow users to pay after the settlement of their desired asset has taken place. This improves the user experience and makes cross-chain actions more seamless."
+description: "LI.FI intent uses secure, flexible resource locks to enable trust-minimized cross-chain flows and new ways to design intent-based protocols."
sidebar:
order: 2
---
@@ -28,17 +28,15 @@ import { Steps } from '@astrojs/starlight/components';
+ 0. The **sponsor** makes a deposit into a resource lock, if one does not already exist.
- 0. The **sponsor** makes a deposit into a resource lock, if one does not already exist.
+ 1. The **sponsor** signs a lock that describes a desired outcome.
- 1. The **sponsor** signs a lock that describes a desired outcome.
+ 2. The **allocator** ensures that the appropriate funds exist for the lock to be valid. In other words, if the sponsor has deposited 10 tokens, no set of approved locks shall exceed 10 tokens. The allocator then co-signs the lock.
- 2. The **allocator** ensures that the appropriate funds exist for the lock to be valid. In other words, if the sponsor has deposited 10 tokens, no set of approved locks shall exceed 10 tokens. The allocator then co-signs the lock.
-
- 3. The desired event takes place.
-
- 4. The **arbiter** validates that the event has taken place and releases the token to the appropriate recipient.
+ 3. The desired event takes place.
+ 4. The **arbiter** validates that the event has taken place and releases the token to the appropriate recipient.
@@ -58,7 +56,7 @@ These systems instead rely on **allocators as arbiters** or resource lock suppor
The advantage of such a system is its simplicity. The third party (whether allocator or GMP) generally handles the entire validation/settlement pipeline, and thus solvers only have to concern themselves with filling orders.
-##### Intent system as *arbiter* (Catalyst)
+##### Intent system as *arbiter* (OIF)
In these flows, the intent system is the arbiter and usually describes how the entire system is constructed: output settlement, validation, and input settlement. This makes the system more flexible and customizable.
@@ -66,7 +64,7 @@ While these systems may also rely on GMPs, they can also use other – potential
The advantage of such a system is indirectly its complexity. Since more logic is explicitly defined by the system itself, the expressivity of intents can be greater and more specialized.
-For more on the resource locks Catalyst supports, read the chapter on [Input Settlement Implementations](/architecture/input).
+For more on the resource locks OIF supports, read the chapter on [Input Settlement Implementations](/architecture/input).
## Trust Assumptions
diff --git a/src/content/docs/7-knowledge/703-glossary.mdx b/src/content/docs/7-knowledge/703-glossary.mdx
index 6f94397..adfd278 100644
--- a/src/content/docs/7-knowledge/703-glossary.mdx
+++ b/src/content/docs/7-knowledge/703-glossary.mdx
@@ -19,7 +19,7 @@ For smart wallets unable to provide stable signatures, an emissary can be used t
## Fill First
A swap flow where the tokens are delivered to the user _before_ the input tokens are collected by a protocol. These flows use specialised wallet techniques like [resource locks](/glossary#resource-lock) to remain safe.
-## Filler
+## Output Settler
A contract that records fill statements allowing oracles to get original proof that outputs have been sent to users.
## GMP
@@ -32,7 +32,7 @@ An allowance issued by a user to an arbiter. Before locks are valid, they must b
The starting point. Input assets refer to the assets paid into the intent system. The input chain refers to the chain(s) of the input assets.
## Integrator
-See [Intent Issuer](#intent-issuer)
+See [Intent Issuer](#intent-issuer).
## Intent
An issuance of a desired action. Intents are often used to describe swaps but can also describe desired cross-chain interactions. Unlike swaps, intents should generally be composable. Intents are usually self-contained, meaning they describe both the desired end state and the payment to achieve that state; the output and input, respectively.
@@ -41,7 +41,7 @@ An issuance of a desired action. Intents are often used to describe swaps but ca
Someone who issues intents for a cross-chain intent system. The intent issuers specifies how the intent is configured. It is then up to [solvers](#solver) to determine whether or not they will fill the intent.
## Optimistic
-A validation method that assumes statements are true unless disputed. This
+A validation method that assumes statements are true unless disputed.
## Oracle
A contract that can attest to the trueness of a statement. In an intent system, oracles act as validation layers attesting to whether or not the user's desires assets have been delivered. Oracles may use a variety of different mechanisms to attest: Optimistic, messaging bridge, light clients, etc.
@@ -55,7 +55,7 @@ The endpoint. Output assets refer to the desired tokens to be paid to the user (
## Resource Lock
A clever 3/3 (or 2/2) multisignature scheme that provides unique balance abstractions. You can find a primer in our [knowledge hub](/knowledge/resource-locks).
-## Settler
+## Input Settler
A contract in a cross-chain intent system that delivers assets. In a resource lock supporting cross-chain intent system, the input/origin settler is often an arbiter.
## Solver
diff --git a/src/content/docs/7-knowledge/glossary.css b/src/content/docs/7-knowledge/glossary.css
index 44685b7..ac65a9c 100644
--- a/src/content/docs/7-knowledge/glossary.css
+++ b/src/content/docs/7-knowledge/glossary.css
@@ -1,18 +1,18 @@
.sl-markdown-content h2 {
display: inline;
- font-size: 1rem;
+ font-size: 1.5rem;
}
.sl-markdown-content p {
display: inline;
}
-.sl-markdown-content h2::after {
- content: ": ";
-}
-
.sl-markdown-content p::after {
content: "";
display: block;
- padding-top: 1rem;
+ padding-top: 0.5rem;
+}
+
+.sl-markdown-content :not(h1, h2, h3, h4, h5, h6, .sl-heading-wrapper) + :is(.sl-heading-wrapper) {
+ margin-top: 0em;
}
\ No newline at end of file
diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx
index ef111c5..bad867a 100644
--- a/src/content/docs/index.mdx
+++ b/src/content/docs/index.mdx
@@ -1,28 +1,26 @@
---
-title: Catalyst Intent System
-description: Catalyst Intents standardizes the 3 components to an intent, the input context, the output context, and the verification layer. This allows Catalyst to be efficient, flexible, and extensive.
+title: LI.FI Intents
+description: "LI.FI intent standardizes cross-chain workflows—enabling efficient, composable integration for engineers through unified intent expression, settlement, and verification."
hero:
- tagline: The full-stack cross-chain intent framework
+ tagline: The Full-stack Open Intent Framework
image:
light: "/src/assets/symbol_dark.svg"
dark: "/src/assets/symbol_light.svg"
---
-# Introduction
-
-**Catalyst is a cross-chain intent protocol that creates a marketplace where solvers compete to fulfil users' token transfers across different blockchains.** Built specifically for wallets and applications using resource locks, Catalyst helps deliver better prices and faster settlement times for cross-chain transactions.
+**LI.FI intents is an intent marketplace where solvers compete to fulfill users' token transfers across different blockchains.** Built specifically for wallets and applications using resource locks, LI.FI helps deliver better prices and faster settlement times for cross-chain transactions.
## What is an Intent Protocol?
-An intent protocol allows users to express what they want to accomplish (e.g., "transfer 100 USDC from Ethereum to Polygon") without specifying exactly how it should happen. The protocol then finds the best way to fulfil this intent through a competitive marketplace of solvers.
+An intent protocol allows users to express what they want to accomplish (e.g., "transfer 100 USDC from Ethereum to Polygon") without specifying exactly how it should happen. The protocol then finds the best way to fulfill this intent through a competitive marketplace of solvers.
-**Solvers** are specialised third-parties who fulfil cross-chain intents using their own capital and liquidity sources. They compete with each other to offer users the best prices for moving assets between blockchains.
+**Solvers** are specialized third parties who fulfill cross-chain intents using their own capital and liquidity sources. They compete to offer users the best prices for moving assets between blockchains.
```d2
style.fill: transparent
direction: right
-title: Catalyst Overview {
+title: Open Intents Framework Overview {
near: top-center
shape: text
style: {
@@ -30,53 +28,55 @@ title: Catalyst Overview {
}
}
-Output Chain.Remote Oracle -> Input Chain.Local Oracle: 4. Relay fill
+Output Chain.Output Oracle -> Input Chain.Input Oracle: 4. Relay fill
Input Chain: {
- User -> Lock: 0. Deposit
- Settler -> Local Oracle: 5. Check Fill
- Settler -> Lock: 6. Unlock Funds
+ Input Settler -> Input Oracle: 5. Check Fill
+ Input Settler -> Lock: 6. Unlock Funds
Lock -> Solver: 7. Payment
- Local Oracle.shape: page
+ Input Oracle.shape: page
Lock.shape: page
- Settler.shape: page
+ Input Settler.shape: page
+ User -> Lock: 0. Deposit
}
Output Chain: {
- Solver -> Filler: 1. Order Fill
- Filler -> User: 2. Payment
- Remote Oracle -> Filler: 3. Check Fill
- Remote Oracle.shape: page
- Filler.shape: page
+ Solver -> Output Settler: 1. Order Fill
+ Output Settler -> User: 2. Payment
+ Output Oracle -> Output Settler: 3. Check Fill
+ Output Oracle.shape: page
+ Output Settler.shape: page
}
-
```
-Think of Catalyst like Uber for cross-chain transfers: Users request a service (moving tokens across chains), and qualified providers (solvers) compete to offer the best price and service.
-
+Think of OIF like Uber for cross-chain transfers: Users request a service (moving tokens across chains), and qualified providers (solvers) compete to offer the best price and service.
## What are Resource Locks?
Resource locks are smart contracts that securely hold user funds until specific conditions are met. They act as escrow accounts, ensuring that users' assets remain safe until their cross-chain transaction is properly executed.
-You can find more information on resource locks in the [knowledge database](/knowledge/resource-locks).
+You can find more information about resource locks in the [knowledge database](/knowledge/resource-locks).
## How It Works
-1. **User expresses an intent**: A user deposits their tokens using a resource lock standard (like The Compact)
-2. **Intent is distributed to the marketplace**: The lock generates a proof of deposit that's broadcast to Catalyst's order server
-3. **Solvers bid and compete for intents**: Our network of solvers analyses the intent and submits competitive quotes
-4. **Intent execution**: The winning solver delivers the requested assets on the destination chain
-5. **Verification & settlement**: The delivery is verified, and the locked funds are released to the solver
-
-## Concepts & Actors in the Catalyst System
-
-- [**Intents**](/glossary#intent)**:** User requests that express what they want to accomplish without specifying exactly how it should happen.
-- [**Solvers**](/glossary#solver)**:** Entities who compete to fill orders
-- [**Resource Locks**](/glossary#resource-lock)**:** Smart contracts that securely escrow and unlock user funds
-- [**Order Server**](/glossary#order-server)**:** Marketplace where intents are matched with solvers
-- [**Filler**](/glossary#filler)**:** Records asset delivery on destination chain
-- [**Oracle**](/glossary#oracle)**:** Transmits proof of delivery back to source chain
-- [**Settler**](/glossary#settler)**:** Verifies proofs and releases locked funds to solvers
+import { Steps } from '@astrojs/starlight/components';
+
+
+ 1. **User expresses an intent**: The user deposits their tokens using a resource lock standard (such as The Compact).
+ 2. **Intent is distributed to the marketplace**: The lock generates a proof of deposit, which is broadcast to the order server.
+ 3. **Solvers bid and compete for intents**: Our network of solvers analyzes the intent and submits competitive quotes.
+ 4. **Intent execution**: The winning solver delivers the requested assets on the destination chain.
+ 5. **Verification & settlement**: The delivery is verified, and the locked funds are released to the solver.
+
+
+## Concepts & Actors in the OIF System
+
+- [**Intents**](/glossary#intent): User requests that express what they want to accomplish without specifying exactly how it should happen.
+- [**Solvers**](/glossary#solver): Entities who compete to fill orders.
+- [**Resource Locks**](/glossary#resource-lock): Smart contracts that securely escrow and unlock user funds.
+- [**Order Server**](/glossary#order-server): The marketplace where intents are matched with solvers.
+- [**Output Settler**](/glossary#output-settler): Records asset delivery on the destination chain.
+- [**Oracle**](/glossary#oracle): Transmits proof of delivery back to the source chain.
+- [**Input Settler**](/glossary#input-settler): Verifies proofs and releases locked funds to solvers.
You can find more definitions in the [glossary](/glossary).
\ No newline at end of file