fake.modules transposition for aspect-oriented Dendritic Nix. with cross-aspect dependencies. Discussions: https://oeiuwq.zulipchat.com/join/nqp26cd4kngon6mo3ncgnuap/ dendrix.oeiuwq.com/Dendritic.html
dendritic nix aspect oriented

docs (#35)

authored by oeiuwq.com and committed by

GitHub 3d2e3b56 8934b6c9

+7438 -184
+39
.github/workflows/gh-pages.yml
··· 1 + name: GH Pages 2 + on: 3 + workflow_dispatch: 4 + push: 5 + branches: [main] 6 + paths: ["docs/**"] 7 + permissions: 8 + contents: read 9 + pages: write 10 + id-token: write 11 + concurrency: 12 + group: "pages" 13 + cancel-in-progress: true 14 + jobs: 15 + deploy: 16 + environment: 17 + name: github-pages 18 + url: ${{ steps.deployment.outputs.page_url }} 19 + runs-on: ubuntu-latest 20 + steps: 21 + - uses: actions/checkout@v4 22 + - uses: pnpm/action-setup@v4 23 + with: 24 + version: 10 25 + - name: Build 26 + run: | 27 + pushd docs 28 + pnpm install 29 + pnpm run build 30 + popd 31 + - name: Setup Pages 32 + uses: actions/configure-pages@v5 33 + - name: Upload artifact 34 + uses: actions/upload-pages-artifact@v3 35 + with: 36 + path: "./docs/dist" 37 + - name: Deploy to GitHub Pages 38 + id: deployment 39 + uses: actions/deploy-pages@v4
+28 -184
README.md
··· 1 1 <!-- Badges --> 2 2 3 3 <p align="right"> 4 - <a href="https://github.com/sponsors/vic"><img src="https://img.shields.io/badge/sponsor-vic-white?logo=githubsponsors&logoColor=white&labelColor=%23FF0000" alt="Sponsor Vic"/> 4 + <a href="https://dendritic.oeiuwq.com/sponsor"><img src="https://img.shields.io/badge/sponsor-vic-white?logo=githubsponsors&logoColor=white&labelColor=%23FF0000" alt="Sponsor Vic"/> 5 5 </a> 6 - <a href="https://vic.github.io/dendrix/Dendritic-Ecosystem.html#vics-dendritic-libraries"> <img src="https://img.shields.io/badge/Dendritic-Nix-informational?logo=nixos&logoColor=white" alt="Dendritic Nix"/> </a> 6 + <a href="https://dendritic.oeiuwq.com"> <img src="https://img.shields.io/badge/Dendritic-Nix-informational?logo=nixos&logoColor=white" alt="Dendritic Nix"/> </a> 7 7 <a href="https://github.com/vic/flake-aspects/actions"> 8 8 <img src="https://github.com/vic/flake-aspects/actions/workflows/test.yml/badge.svg" alt="CI Status"/> </a> 9 9 <a href="LICENSE"> <img src="https://img.shields.io/github/license/vic/flake-aspects" alt="License"/> </a> ··· 11 11 12 12 # `<aspect>.<class>` Transposition for Dendritic Nix 13 13 14 - > `flake-aspects` and [vic](https://bsky.app/profile/oeiuwq.bsky.social)'s [dendritic libs](https://vic.github.io/dendrix/Dendritic-Ecosystem.html#vics-dendritic-libraries) made for you with Love++ and AI--. If you like my work, consider [sponsoring](https://github.com/sponsors/vic) 14 + > `flake-aspects` and [vic](https://bsky.app/profile/oeiuwq.bsky.social)'s [dendritic libs](https://dendritic.oeiuwq.com) made for you with Love++ and AI--. If you like my work, consider [sponsoring](https://dendritic.oeiuwq.com/sponsor) 15 15 16 - In [aspect-oriented](https://vic.github.io/dendrix/Dendritic.html) [Dendritic](https://github.com/mightyiam/dendritic) setups, it is common to expose modules using the structure `flake.modules.<class>.<aspect>`. 16 + In [aspect-oriented](https://den.oeiuwq.com) [Dendritic](https://github.com/mightyiam/dendritic) setups, it is common to expose modules using the structure `flake.modules.<class>.<aspect>`. 17 17 18 18 However, for many users, a transposed attribute set, `<aspect>.<class>`, can be more intuitive. It often feels more natural to nest classes within aspects rather than the other way around. 19 19 ··· 77 77 </tr> 78 78 </table> 79 79 80 - Unlike `flake.modules.<class>.<aspect>` which is _flat_, aspects can be nested forming a _tree_ by using the `provides` (short alias: `_`) attribute. Each aspect can also specify a list of `includes` of other aspects, forming a _graph_ of dependencies. 80 + Unlike `flake.modules.<class>.<aspect>` which is _flat_, aspects form a _tree_ via `provides` (alias: `_`) and a _graph_ via `includes`. 81 81 82 82 --- 83 83 84 - ## Usage 85 - 86 - ### As a `flake-parts` Module 84 + ## Quick Start 87 85 88 86 ```nix 89 - { inputs, ... }: { 90 - imports = [ inputs.flake-aspects.flakeModule ]; 91 - flake.aspects = { 92 - sliding-desktop = { 93 - nixos = { }; # Niri on Linux 94 - darwin = { }; # Paneru on macOS 87 + # flake.nix 88 + { 89 + inputs.flake-aspects.url = "github:vic/flake-aspects"; 90 + outputs = { flake-parts, flake-aspects, nixpkgs, ... }@inputs: 91 + flake-parts.lib.mkFlake { inherit inputs; } { 92 + imports = [ flake-aspects.flakeModule ]; 93 + flake.aspects = { aspects, ... }: { 94 + my-desktop = { 95 + nixos = { }; 96 + darwin = { }; 97 + includes = [ aspects.my-tools ]; 98 + }; 99 + my-tools.nixos = { }; 100 + }; 95 101 }; 96 - awesome-cli = { 97 - nixos = { }; darwin = { }; homeManager = { }; nixvim = { }; 98 - }; 99 - }; 100 - flake.nixosConfigurations.my-host = inputs.nixpkgs.lib.nixosSystem { 101 - modules = [ 102 - inputs.self.modules.nixos.sliding-desktop # read resolved module 103 - ]; 104 - }; 105 102 } 106 103 ``` 107 104 108 - ### Without Flakes ([test](checkmate/modules/tests/without_flakes.nix)) 109 - 110 - ```nix 111 - let 112 - 113 - myModules = (lib.evalModules { 114 - modules = [ 115 - (new-scope "my") # creates my.aspects and my.modules. 116 - { my.aspects.laptop.nixos = ...; } 117 - ]; 118 - }).config.my.modules; 119 - 120 - in lib.nixosSystem { modules = [ myModules.nixos.laptop ]; }; 121 - ``` 122 - 123 - Useful for libraries that want isolated aspect scopes or flake-parts independence (see [`den`'s scope](https://github.com/vic/den/blob/main/nix/scope.nix)). 124 - 125 - --- 126 - 127 - ## API ([nix/lib.nix](nix/lib.nix)) 128 - 129 - | Export | Description | 130 - | --------------------- | ----------------------------------------------------------- | 131 - | `transpose { emit? }` | Generic 2-level transposition | 132 - | `types` | Nix type system for aspects and providers | 133 - | `aspects` | Aspect-aware transposition with resolution | 134 - | `new` | Low-level scope factory (callback-based) | 135 - | `new-scope` | Named scope factory (`${name}.aspects` / `${name}.modules`) | 136 - | `forward` | Cross-class module forwarding | 137 - 138 - ### Core: `transpose` ([nix/default.nix](nix/default.nix)) 139 - 140 - Generic 2-level attribute set transposition parameterized by an `emit` function. 141 - 142 - ```nix 143 - transpose { a.b.c = 1; } # ⇒ { b.a.c = 1; } 144 - ``` 145 - 146 - `emit` receives `{ child, parent, value }` and returns a list of `{ parent, child, value }` items. Default: `lib.singleton` (identity). This allows users to filter, modify or multiply items being transposed. This is exploited by [nix/aspects.nix](nix/aspects.nix) to intercept each transposition and inject [resolution](nix/resolve.nix). 147 - 148 - Tests: [transpose_swap](checkmate/modules/tests/transpose_swap.nix), [transpose_common](checkmate/modules/tests/transpose_common.nix), [tranpose_flake_modules](checkmate/modules/tests/tranpose_flake_modules.nix). 149 - 150 - ### Resolution: `resolve` ([nix/resolve.nix](nix/resolve.nix)) 151 - 152 - Recursive dependency resolver. Given a `class` and an `aspect-chain` (the call stack of aspects that led here -- most recent last), it extracts the class-specific config and recursively resolves all `includes`. 153 - 154 - The `aspect-chain` lets providers know who is including them and make decisions based on call context. Tests: [aspect_chain](checkmate/modules/tests/aspect_chain.nix), [aspect_modules_resolved](checkmate/modules/tests/aspect_modules_resolved.nix). 155 - 156 - ### Scope Factories ([nix/new.nix](nix/new.nix), [nix/new-scope.nix](nix/new-scope.nix)) 157 - 158 - `new` is a callback-based factory: `new (option: transposed: moduleDefinition) aspectsConfig`. The [flakeModule](nix/flakeModule.nix) uses it to wire `flake.aspects → flake.modules`. 159 - 160 - `new-scope` wraps `new` to create named scopes: `new-scope "foo"` produces `foo.aspects` (input) and `foo.modules` (output). Multiple independent namespaces can coexist. Tests: [without_flakes](checkmate/modules/tests/without_flakes.nix), [aspect_assignment](checkmate/modules/tests/aspect_assignment.nix). 161 - 162 - ### Forward ([nix/forward.nix](nix/forward.nix)) 163 - 164 - Cross-class configuration forwarding. Routes resolved modules from one class into a submodule path of another class. Used by [`den`](https://github.com/vic/den) to forward `homeManager` modules into `nixos.home-manager.users.<name>`. Test: [forward](checkmate/modules/tests/forward.nix). 165 - 166 - --- 167 - 168 - ## Dependency Resolution 169 - 170 - ### `includes` — Cross-Aspect Dependencies ([test](checkmate/modules/tests/aspect_dependencies.nix)) 171 - 172 - ```nix 173 - flake.aspects = { aspects, ... }: { 174 - server = { 175 - includes = with aspects; [ networking monitoring ]; 176 - nixos = { }; 177 - }; 178 - networking.nixos = { }; 179 - monitoring.nixos = { }; 180 - }; 181 - ``` 182 - 183 - When `flake.modules.nixos.server` is evaluated, it resolves to `{ imports = [ server.nixos, networking.nixos, monitoring.nixos ] }`. Only classes that exist on the included aspect are imported. 184 - 185 - ### Providers — `provides` / `_` ([test](checkmate/modules/tests/aspect_provides.nix)) 186 - 187 - Aspects can expose sub-aspects as providers. `_` is an alias for `provides`. 188 - 189 - ```nix 190 - flake.aspects = { aspects, ... }: { 191 - gaming = { 192 - nixos = { }; 193 - _.emulation = { 194 - nixos = { }; 195 - _.nes.nixos = { }; 196 - }; 197 - }; 198 - my-host.includes = [ aspects.gaming._.emulation._.nes ]; 199 - }; 200 - ``` 201 - 202 - Providers receive `{ class, aspect-chain }` and can use them for conditional logic or context-aware configuration. The `aspect-chain` tracks the full inclusion path. 203 - 204 - ### Fixpoint Semantics ([test](checkmate/modules/tests/aspect_fixpoint.nix)) 205 - 206 - The top-level `aspects` argument is a fixpoint: providers at any depth can reference siblings or top-level aspects. 207 - 208 - ```nix 209 - flake.aspects = { aspects, ... }: { 210 - two.provides = { aspects, ... }: { 211 - sub = { includes = [ aspects.sibling ]; classOne = { }; }; 212 - sibling.classOne = { }; 213 - }; 214 - one.includes = [ aspects.two._.sub ]; 215 - }; 216 - ``` 217 - 218 - ### Parametric Providers ([test](checkmate/modules/tests/aspect_parametric.nix)) 219 - 220 - Curried functions act as parametric providers: 221 - 222 - ```nix 223 - flake.aspects = { aspects, ... }: { 224 - base._.user = userName: { 225 - nixos.users.${userName}.isNormalUser = true; 226 - }; 227 - server.includes = [ (aspects.base._.user "bob") ]; 228 - }; 229 - ``` 105 + Also works [without flakes](checkmate/modules/tests/without_flakes.nix) via `new-scope` and `lib.evalModules`. 230 106 231 - ### Top-Level Parametric Aspects ([test](checkmate/modules/tests/aspect_toplevel_parametric.nix)) 107 + ## Documentation 232 108 233 - Top-level aspects can also be curried providers: 109 + **[Full documentation](https://flake-aspects.oeiuwq.com)** 234 110 235 - ```nix 236 - flake.aspects = { aspects, ... }: { 237 - greeter = { message }: { nixos.greeting = message; }; 238 - host.includes = [ (aspects.greeter { message = "hello"; }) ]; 239 - }; 240 - ``` 241 - 242 - ### `__functor` Override ([test](checkmate/modules/tests/aspect_default_provider_functor.nix), [test](checkmate/modules/tests/aspect_default_provider_override.nix)) 243 - 244 - The default `__functor` just returns the aspect itself. However, you can override the `__functor` to allow an aspect to intercept when it is being included and provide different config depending on who is including it. 245 - 246 - ```nix 247 - flake.aspects = { aspects, ... }: { 248 - foo = { 249 - nixos = { ... }; 250 - __functor = self: 251 - { class, aspect-chain }: 252 - if class == "nixos" then self else { darwin = ...; includes = [ ... ]; }; 253 - }; 254 - }; 255 - ``` 256 - 257 - ### Forward ([nix/forward.nix](nix/forward.nix)) ([test](checkmate/modules/tests/forward.nix)) 258 - 259 - Route modules from one class into a submodule path of another: 260 - 261 - ```nix 262 - forward { 263 - each = host.users; 264 - fromClass = _user: "homeManager"; 265 - intoClass = _user: "nixos"; 266 - intoPath = user: [ "home-manager" "users" user.name ]; 267 - fromAspect = user: den.aspects.${user.name}; 268 - } 269 - ``` 270 - 271 - --- 111 + | Section | Content | 112 + | ------------------------------------------------------------------- | ------------------------------------------------------------------- | 113 + | [Concepts](https://vic.github.io/flake-aspects/concepts/transpose/) | Transpose, resolution algorithm, providers & fixpoint | 114 + | [Guides](https://vic.github.io/flake-aspects/guides/flake-parts/) | flake-parts, standalone, dependencies, parametric, functor, forward | 115 + | [Reference](https://vic.github.io/flake-aspects/reference/api/) | API exports, type system, test suite | 272 116 273 117 ## Testing 274 118
+1
checkmate/modules/formatter.nix
··· 1 1 { 2 2 perSystem.treefmt.programs.nixf-diagnose.enable = false; 3 + perSystem.treefmt.settings.global.excludes = [ "docs/*" ]; 3 4 }
+21
docs/.gitignore
··· 1 + # build output 2 + dist/ 3 + # generated types 4 + .astro/ 5 + 6 + # dependencies 7 + node_modules/ 8 + 9 + # logs 10 + npm-debug.log* 11 + yarn-debug.log* 12 + yarn-error.log* 13 + pnpm-debug.log* 14 + 15 + 16 + # environment variables 17 + .env 18 + .env.production 19 + 20 + # macOS-specific files 21 + .DS_Store
+4
docs/.vscode/extensions.json
··· 1 + { 2 + "recommendations": ["astro-build.astro-vscode"], 3 + "unwantedRecommendations": [] 4 + }
+11
docs/.vscode/launch.json
··· 1 + { 2 + "version": "0.2.0", 3 + "configurations": [ 4 + { 5 + "command": "./node_modules/.bin/astro dev", 6 + "name": "Development server", 7 + "request": "launch", 8 + "type": "node-terminal" 9 + } 10 + ] 11 + }
+49
docs/README.md
··· 1 + # Starlight Starter Kit: Basics 2 + 3 + [![Built with Starlight](https://astro.badg.es/v2/built-with-starlight/tiny.svg)](https://starlight.astro.build) 4 + 5 + ``` 6 + pnpm create astro@latest -- --template starlight 7 + ``` 8 + 9 + > 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun! 10 + 11 + ## 🚀 Project Structure 12 + 13 + Inside of your Astro + Starlight project, you'll see the following folders and files: 14 + 15 + ``` 16 + . 17 + ├── public/ 18 + ├── src/ 19 + │ ├── assets/ 20 + │ ├── content/ 21 + │ │ └── docs/ 22 + │ └── content.config.ts 23 + ├── astro.config.mjs 24 + ├── package.json 25 + └── tsconfig.json 26 + ``` 27 + 28 + Starlight looks for `.md` or `.mdx` files in the `src/content/docs/` directory. Each file is exposed as a route based on its file name. 29 + 30 + Images can be added to `src/assets/` and embedded in Markdown with a relative link. 31 + 32 + Static assets, like favicons, can be placed in the `public/` directory. 33 + 34 + ## 🧞 Commands 35 + 36 + All commands are run from the root of the project, from a terminal: 37 + 38 + | Command | Action | 39 + | :------------------------ | :----------------------------------------------- | 40 + | `pnpm install` | Installs dependencies | 41 + | `pnpm dev` | Starts local dev server at `localhost:4321` | 42 + | `pnpm build` | Build your production site to `./dist/` | 43 + | `pnpm preview` | Preview your build locally, before deploying | 44 + | `pnpm astro ...` | Run CLI commands like `astro add`, `astro check` | 45 + | `pnpm astro -- --help` | Get help using the Astro CLI | 46 + 47 + ## 👀 Want to learn more? 48 + 49 + Check out [Starlight’s docs](https://starlight.astro.build/), read [the Astro documentation](https://docs.astro.build), or jump into the [Astro Discord server](https://astro.build/chat).
+90
docs/astro.config.mjs
··· 1 + // @ts-check 2 + import { defineConfig, fontProviders } from 'astro/config'; 3 + import starlight from '@astrojs/starlight'; 4 + 5 + import mermaid from 'astro-mermaid'; 6 + import catppuccin from "@catppuccin/starlight"; 7 + 8 + // https://astro.build/config 9 + export default defineConfig({ 10 + experimental: { 11 + fonts: [ 12 + { 13 + provider: fontProviders.google(), 14 + name: "Victor Mono", 15 + cssVariable: "--sl-font", 16 + }, 17 + ], 18 + }, 19 + integrations: [ 20 + mermaid({ 21 + theme: 'forest', 22 + autoTheme: true 23 + }), 24 + starlight({ 25 + title: 'flake-aspects', 26 + sidebar: [ 27 + { 28 + label: 'flake-aspects', 29 + items: [ 30 + { label: 'Home', slug: '' }, 31 + { label: 'Overview', slug: 'overview' }, 32 + { label: 'Motivation', slug: 'motivation' }, 33 + ], 34 + }, 35 + { 36 + label: 'Concepts', 37 + items: [ 38 + { label: 'Transpose', slug: 'concepts/transpose' }, 39 + { label: 'Aspects & Resolution', slug: 'concepts/aspects' }, 40 + { label: 'Providers & Fixpoint', slug: 'concepts/providers' }, 41 + ], 42 + }, 43 + { 44 + label: 'Guides', 45 + items: [ 46 + { label: 'With flake-parts', slug: 'guides/flake-parts' }, 47 + { label: 'Without Flakes', slug: 'guides/standalone' }, 48 + { label: 'Cross-Aspect Dependencies', slug: 'guides/dependencies' }, 49 + { label: 'Parametric Aspects', slug: 'guides/parametric' }, 50 + { label: '__functor Override', slug: 'guides/functor' }, 51 + { label: 'Forward Across Classes', slug: 'guides/forward' }, 52 + ], 53 + }, 54 + { 55 + label: 'Reference', 56 + items: [ 57 + { label: 'API', slug: 'reference/api' }, 58 + { label: 'Type System', slug: 'reference/types' }, 59 + { label: 'Tests', slug: 'reference/tests' }, 60 + ], 61 + }, 62 + { 63 + label: 'Project', 64 + items: [ 65 + { label: 'Contributing', slug: 'contributing' }, 66 + { label: 'Sponsor', slug: 'sponsor' }, 67 + ], 68 + }, 69 + ], 70 + components: { 71 + Sidebar: './src/components/Sidebar.astro', 72 + Footer: './src/components/Footer.astro', 73 + SocialIcons: './src/components/SocialIcons.astro', 74 + PageSidebar: './src/components/PageSidebar.astro', 75 + }, 76 + plugins: [ 77 + catppuccin({ 78 + dark: { flavor: "macchiato", accent: "mauve" }, 79 + light: { flavor: "latte", accent: "mauve" }, 80 + }), 81 + ], 82 + editLink: { 83 + baseUrl: 'https://github.com/vic/flake-aspects/edit/main/docs/', 84 + }, 85 + customCss: [ 86 + './src/styles/custom.css' 87 + ], 88 + }), 89 + ], 90 + });
+20
docs/package.json
··· 1 + { 2 + "name": "den", 3 + "type": "module", 4 + "version": "0.0.1", 5 + "scripts": { 6 + "dev": "astro dev", 7 + "start": "astro dev", 8 + "build": "astro build", 9 + "preview": "astro preview", 10 + "astro": "astro" 11 + }, 12 + "dependencies": { 13 + "@astrojs/starlight": "^0.37.6", 14 + "@catppuccin/starlight": "^1.1.1", 15 + "astro": "^5.17.3", 16 + "astro-mermaid": "^1.3.1", 17 + "mermaid": "^11.12.3", 18 + "sharp": "^0.34.5" 19 + } 20 + }
+5307
docs/pnpm-lock.yaml
··· 1 + lockfileVersion: '9.0' 2 + 3 + settings: 4 + autoInstallPeers: true 5 + excludeLinksFromLockfile: false 6 + 7 + importers: 8 + 9 + .: 10 + dependencies: 11 + '@astrojs/starlight': 12 + specifier: ^0.37.6 13 + version: 0.37.6(astro@5.17.3(rollup@4.57.1)(typescript@5.9.3)) 14 + '@catppuccin/starlight': 15 + specifier: ^1.1.1 16 + version: 1.1.1(@astrojs/starlight@0.37.6(astro@5.17.3(rollup@4.57.1)(typescript@5.9.3)))(astro@5.17.3(rollup@4.57.1)(typescript@5.9.3)) 17 + astro: 18 + specifier: ^5.17.3 19 + version: 5.17.3(rollup@4.57.1)(typescript@5.9.3) 20 + astro-mermaid: 21 + specifier: ^1.3.1 22 + version: 1.3.1(astro@5.17.3(rollup@4.57.1)(typescript@5.9.3))(mermaid@11.12.3) 23 + mermaid: 24 + specifier: ^11.12.3 25 + version: 11.12.3 26 + sharp: 27 + specifier: ^0.34.5 28 + version: 0.34.5 29 + 30 + packages: 31 + 32 + '@antfu/install-pkg@1.1.0': 33 + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} 34 + 35 + '@astrojs/compiler@2.13.1': 36 + resolution: {integrity: sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==} 37 + 38 + '@astrojs/internal-helpers@0.7.5': 39 + resolution: {integrity: sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==} 40 + 41 + '@astrojs/markdown-remark@6.3.10': 42 + resolution: {integrity: sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==} 43 + 44 + '@astrojs/mdx@4.3.13': 45 + resolution: {integrity: sha512-IHDHVKz0JfKBy3//52JSiyWv089b7GVSChIXLrlUOoTLWowG3wr2/8hkaEgEyd/vysvNQvGk+QhysXpJW5ve6Q==} 46 + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} 47 + peerDependencies: 48 + astro: ^5.0.0 49 + 50 + '@astrojs/prism@3.3.0': 51 + resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==} 52 + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} 53 + 54 + '@astrojs/sitemap@3.7.0': 55 + resolution: {integrity: sha512-+qxjUrz6Jcgh+D5VE1gKUJTA3pSthuPHe6Ao5JCxok794Lewx8hBFaWHtOnN0ntb2lfOf7gvOi9TefUswQ/ZVA==} 56 + 57 + '@astrojs/starlight@0.37.6': 58 + resolution: {integrity: sha512-wQrKwH431q+8FsLBnNQeG+R36TMtEGxTQ2AuiVpcx9APcazvL3n7wVW8mMmYyxX0POjTnxlcWPkdMGR3Yj1L+w==} 59 + peerDependencies: 60 + astro: ^5.5.0 61 + 62 + '@astrojs/telemetry@3.3.0': 63 + resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==} 64 + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} 65 + 66 + '@babel/helper-string-parser@7.27.1': 67 + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 68 + engines: {node: '>=6.9.0'} 69 + 70 + '@babel/helper-validator-identifier@7.28.5': 71 + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} 72 + engines: {node: '>=6.9.0'} 73 + 74 + '@babel/parser@7.29.0': 75 + resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} 76 + engines: {node: '>=6.0.0'} 77 + hasBin: true 78 + 79 + '@babel/runtime@7.28.6': 80 + resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} 81 + engines: {node: '>=6.9.0'} 82 + 83 + '@babel/types@7.29.0': 84 + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} 85 + engines: {node: '>=6.9.0'} 86 + 87 + '@braintree/sanitize-url@7.1.2': 88 + resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} 89 + 90 + '@capsizecss/unpack@4.0.0': 91 + resolution: {integrity: sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA==} 92 + engines: {node: '>=18'} 93 + 94 + '@catppuccin/starlight@1.1.1': 95 + resolution: {integrity: sha512-iyI/gdGfqREetGti3O11l7iMLCmt0LRSbIis8ySlZo8hqb749KyMmisO/9kqBvk2oFKw9hGNDbutcNxKSI2spg==} 96 + peerDependencies: 97 + '@astrojs/starlight': '>=0.34' 98 + astro: ^5.0.0 99 + 100 + '@chevrotain/cst-dts-gen@11.1.1': 101 + resolution: {integrity: sha512-fRHyv6/f542qQqiRGalrfJl/evD39mAvbJLCekPazhiextEatq1Jx1K/i9gSd5NNO0ds03ek0Cbo/4uVKmOBcw==} 102 + 103 + '@chevrotain/gast@11.1.1': 104 + resolution: {integrity: sha512-Ko/5vPEYy1vn5CbCjjvnSO4U7GgxyGm+dfUZZJIWTlQFkXkyym0jFYrWEU10hyCjrA7rQtiHtBr0EaZqvHFZvg==} 105 + 106 + '@chevrotain/regexp-to-ast@11.1.1': 107 + resolution: {integrity: sha512-ctRw1OKSXkOrR8VTvOxrQ5USEc4sNrfwXHa1NuTcR7wre4YbjPcKw+82C2uylg/TEwFRgwLmbhlln4qkmDyteg==} 108 + 109 + '@chevrotain/types@11.1.1': 110 + resolution: {integrity: sha512-wb2ToxG8LkgPYnKe9FH8oGn3TMCBdnwiuNC5l5y+CtlaVRbCytU0kbVsk6CGrqTL4ZN4ksJa0TXOYbxpbthtqw==} 111 + 112 + '@chevrotain/utils@11.1.1': 113 + resolution: {integrity: sha512-71eTYMzYXYSFPrbg/ZwftSaSDld7UYlS8OQa3lNnn9jzNtpFbaReRRyghzqS7rI3CDaorqpPJJcXGHK+FE1TVQ==} 114 + 115 + '@ctrl/tinycolor@4.2.0': 116 + resolution: {integrity: sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==} 117 + engines: {node: '>=14'} 118 + 119 + '@emnapi/runtime@1.8.1': 120 + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} 121 + 122 + '@esbuild/aix-ppc64@0.25.12': 123 + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} 124 + engines: {node: '>=18'} 125 + cpu: [ppc64] 126 + os: [aix] 127 + 128 + '@esbuild/aix-ppc64@0.27.3': 129 + resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} 130 + engines: {node: '>=18'} 131 + cpu: [ppc64] 132 + os: [aix] 133 + 134 + '@esbuild/android-arm64@0.25.12': 135 + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} 136 + engines: {node: '>=18'} 137 + cpu: [arm64] 138 + os: [android] 139 + 140 + '@esbuild/android-arm64@0.27.3': 141 + resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} 142 + engines: {node: '>=18'} 143 + cpu: [arm64] 144 + os: [android] 145 + 146 + '@esbuild/android-arm@0.25.12': 147 + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} 148 + engines: {node: '>=18'} 149 + cpu: [arm] 150 + os: [android] 151 + 152 + '@esbuild/android-arm@0.27.3': 153 + resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} 154 + engines: {node: '>=18'} 155 + cpu: [arm] 156 + os: [android] 157 + 158 + '@esbuild/android-x64@0.25.12': 159 + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} 160 + engines: {node: '>=18'} 161 + cpu: [x64] 162 + os: [android] 163 + 164 + '@esbuild/android-x64@0.27.3': 165 + resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} 166 + engines: {node: '>=18'} 167 + cpu: [x64] 168 + os: [android] 169 + 170 + '@esbuild/darwin-arm64@0.25.12': 171 + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} 172 + engines: {node: '>=18'} 173 + cpu: [arm64] 174 + os: [darwin] 175 + 176 + '@esbuild/darwin-arm64@0.27.3': 177 + resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} 178 + engines: {node: '>=18'} 179 + cpu: [arm64] 180 + os: [darwin] 181 + 182 + '@esbuild/darwin-x64@0.25.12': 183 + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} 184 + engines: {node: '>=18'} 185 + cpu: [x64] 186 + os: [darwin] 187 + 188 + '@esbuild/darwin-x64@0.27.3': 189 + resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} 190 + engines: {node: '>=18'} 191 + cpu: [x64] 192 + os: [darwin] 193 + 194 + '@esbuild/freebsd-arm64@0.25.12': 195 + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} 196 + engines: {node: '>=18'} 197 + cpu: [arm64] 198 + os: [freebsd] 199 + 200 + '@esbuild/freebsd-arm64@0.27.3': 201 + resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} 202 + engines: {node: '>=18'} 203 + cpu: [arm64] 204 + os: [freebsd] 205 + 206 + '@esbuild/freebsd-x64@0.25.12': 207 + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} 208 + engines: {node: '>=18'} 209 + cpu: [x64] 210 + os: [freebsd] 211 + 212 + '@esbuild/freebsd-x64@0.27.3': 213 + resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} 214 + engines: {node: '>=18'} 215 + cpu: [x64] 216 + os: [freebsd] 217 + 218 + '@esbuild/linux-arm64@0.25.12': 219 + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} 220 + engines: {node: '>=18'} 221 + cpu: [arm64] 222 + os: [linux] 223 + 224 + '@esbuild/linux-arm64@0.27.3': 225 + resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} 226 + engines: {node: '>=18'} 227 + cpu: [arm64] 228 + os: [linux] 229 + 230 + '@esbuild/linux-arm@0.25.12': 231 + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} 232 + engines: {node: '>=18'} 233 + cpu: [arm] 234 + os: [linux] 235 + 236 + '@esbuild/linux-arm@0.27.3': 237 + resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} 238 + engines: {node: '>=18'} 239 + cpu: [arm] 240 + os: [linux] 241 + 242 + '@esbuild/linux-ia32@0.25.12': 243 + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} 244 + engines: {node: '>=18'} 245 + cpu: [ia32] 246 + os: [linux] 247 + 248 + '@esbuild/linux-ia32@0.27.3': 249 + resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} 250 + engines: {node: '>=18'} 251 + cpu: [ia32] 252 + os: [linux] 253 + 254 + '@esbuild/linux-loong64@0.25.12': 255 + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} 256 + engines: {node: '>=18'} 257 + cpu: [loong64] 258 + os: [linux] 259 + 260 + '@esbuild/linux-loong64@0.27.3': 261 + resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} 262 + engines: {node: '>=18'} 263 + cpu: [loong64] 264 + os: [linux] 265 + 266 + '@esbuild/linux-mips64el@0.25.12': 267 + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} 268 + engines: {node: '>=18'} 269 + cpu: [mips64el] 270 + os: [linux] 271 + 272 + '@esbuild/linux-mips64el@0.27.3': 273 + resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} 274 + engines: {node: '>=18'} 275 + cpu: [mips64el] 276 + os: [linux] 277 + 278 + '@esbuild/linux-ppc64@0.25.12': 279 + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} 280 + engines: {node: '>=18'} 281 + cpu: [ppc64] 282 + os: [linux] 283 + 284 + '@esbuild/linux-ppc64@0.27.3': 285 + resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} 286 + engines: {node: '>=18'} 287 + cpu: [ppc64] 288 + os: [linux] 289 + 290 + '@esbuild/linux-riscv64@0.25.12': 291 + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} 292 + engines: {node: '>=18'} 293 + cpu: [riscv64] 294 + os: [linux] 295 + 296 + '@esbuild/linux-riscv64@0.27.3': 297 + resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} 298 + engines: {node: '>=18'} 299 + cpu: [riscv64] 300 + os: [linux] 301 + 302 + '@esbuild/linux-s390x@0.25.12': 303 + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} 304 + engines: {node: '>=18'} 305 + cpu: [s390x] 306 + os: [linux] 307 + 308 + '@esbuild/linux-s390x@0.27.3': 309 + resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} 310 + engines: {node: '>=18'} 311 + cpu: [s390x] 312 + os: [linux] 313 + 314 + '@esbuild/linux-x64@0.25.12': 315 + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} 316 + engines: {node: '>=18'} 317 + cpu: [x64] 318 + os: [linux] 319 + 320 + '@esbuild/linux-x64@0.27.3': 321 + resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} 322 + engines: {node: '>=18'} 323 + cpu: [x64] 324 + os: [linux] 325 + 326 + '@esbuild/netbsd-arm64@0.25.12': 327 + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} 328 + engines: {node: '>=18'} 329 + cpu: [arm64] 330 + os: [netbsd] 331 + 332 + '@esbuild/netbsd-arm64@0.27.3': 333 + resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} 334 + engines: {node: '>=18'} 335 + cpu: [arm64] 336 + os: [netbsd] 337 + 338 + '@esbuild/netbsd-x64@0.25.12': 339 + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} 340 + engines: {node: '>=18'} 341 + cpu: [x64] 342 + os: [netbsd] 343 + 344 + '@esbuild/netbsd-x64@0.27.3': 345 + resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} 346 + engines: {node: '>=18'} 347 + cpu: [x64] 348 + os: [netbsd] 349 + 350 + '@esbuild/openbsd-arm64@0.25.12': 351 + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} 352 + engines: {node: '>=18'} 353 + cpu: [arm64] 354 + os: [openbsd] 355 + 356 + '@esbuild/openbsd-arm64@0.27.3': 357 + resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} 358 + engines: {node: '>=18'} 359 + cpu: [arm64] 360 + os: [openbsd] 361 + 362 + '@esbuild/openbsd-x64@0.25.12': 363 + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} 364 + engines: {node: '>=18'} 365 + cpu: [x64] 366 + os: [openbsd] 367 + 368 + '@esbuild/openbsd-x64@0.27.3': 369 + resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} 370 + engines: {node: '>=18'} 371 + cpu: [x64] 372 + os: [openbsd] 373 + 374 + '@esbuild/openharmony-arm64@0.25.12': 375 + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} 376 + engines: {node: '>=18'} 377 + cpu: [arm64] 378 + os: [openharmony] 379 + 380 + '@esbuild/openharmony-arm64@0.27.3': 381 + resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} 382 + engines: {node: '>=18'} 383 + cpu: [arm64] 384 + os: [openharmony] 385 + 386 + '@esbuild/sunos-x64@0.25.12': 387 + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} 388 + engines: {node: '>=18'} 389 + cpu: [x64] 390 + os: [sunos] 391 + 392 + '@esbuild/sunos-x64@0.27.3': 393 + resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} 394 + engines: {node: '>=18'} 395 + cpu: [x64] 396 + os: [sunos] 397 + 398 + '@esbuild/win32-arm64@0.25.12': 399 + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} 400 + engines: {node: '>=18'} 401 + cpu: [arm64] 402 + os: [win32] 403 + 404 + '@esbuild/win32-arm64@0.27.3': 405 + resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} 406 + engines: {node: '>=18'} 407 + cpu: [arm64] 408 + os: [win32] 409 + 410 + '@esbuild/win32-ia32@0.25.12': 411 + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} 412 + engines: {node: '>=18'} 413 + cpu: [ia32] 414 + os: [win32] 415 + 416 + '@esbuild/win32-ia32@0.27.3': 417 + resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} 418 + engines: {node: '>=18'} 419 + cpu: [ia32] 420 + os: [win32] 421 + 422 + '@esbuild/win32-x64@0.25.12': 423 + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} 424 + engines: {node: '>=18'} 425 + cpu: [x64] 426 + os: [win32] 427 + 428 + '@esbuild/win32-x64@0.27.3': 429 + resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} 430 + engines: {node: '>=18'} 431 + cpu: [x64] 432 + os: [win32] 433 + 434 + '@expressive-code/core@0.41.6': 435 + resolution: {integrity: sha512-FvJQP+hG0jWi/FLBSmvHInDqWR7jNANp9PUDjdMqSshHb0y7sxx3vHuoOr6SgXjWw+MGLqorZyPQ0aAlHEok6g==} 436 + 437 + '@expressive-code/plugin-frames@0.41.6': 438 + resolution: {integrity: sha512-d+hkSYXIQot6fmYnOmWAM+7TNWRv/dhfjMsNq+mIZz8Tb4mPHOcgcfZeEM5dV9TDL0ioQNvtcqQNuzA1sRPjxg==} 439 + 440 + '@expressive-code/plugin-shiki@0.41.6': 441 + resolution: {integrity: sha512-Y6zmKBmsIUtWTzdefqlzm/h9Zz0Rc4gNdt2GTIH7fhHH2I9+lDYCa27BDwuBhjqcos6uK81Aca9dLUC4wzN+ng==} 442 + 443 + '@expressive-code/plugin-text-markers@0.41.6': 444 + resolution: {integrity: sha512-PBFa1wGyYzRExMDzBmAWC6/kdfG1oLn4pLpBeTfIRrALPjcGA/59HP3e7q9J0Smk4pC7U+lWkA2LHR8FYV8U7Q==} 445 + 446 + '@iconify/types@2.0.0': 447 + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} 448 + 449 + '@iconify/utils@3.1.0': 450 + resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} 451 + 452 + '@img/colour@1.0.0': 453 + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} 454 + engines: {node: '>=18'} 455 + 456 + '@img/sharp-darwin-arm64@0.34.5': 457 + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} 458 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 459 + cpu: [arm64] 460 + os: [darwin] 461 + 462 + '@img/sharp-darwin-x64@0.34.5': 463 + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} 464 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 465 + cpu: [x64] 466 + os: [darwin] 467 + 468 + '@img/sharp-libvips-darwin-arm64@1.2.4': 469 + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} 470 + cpu: [arm64] 471 + os: [darwin] 472 + 473 + '@img/sharp-libvips-darwin-x64@1.2.4': 474 + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} 475 + cpu: [x64] 476 + os: [darwin] 477 + 478 + '@img/sharp-libvips-linux-arm64@1.2.4': 479 + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} 480 + cpu: [arm64] 481 + os: [linux] 482 + 483 + '@img/sharp-libvips-linux-arm@1.2.4': 484 + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} 485 + cpu: [arm] 486 + os: [linux] 487 + 488 + '@img/sharp-libvips-linux-ppc64@1.2.4': 489 + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} 490 + cpu: [ppc64] 491 + os: [linux] 492 + 493 + '@img/sharp-libvips-linux-riscv64@1.2.4': 494 + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} 495 + cpu: [riscv64] 496 + os: [linux] 497 + 498 + '@img/sharp-libvips-linux-s390x@1.2.4': 499 + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} 500 + cpu: [s390x] 501 + os: [linux] 502 + 503 + '@img/sharp-libvips-linux-x64@1.2.4': 504 + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} 505 + cpu: [x64] 506 + os: [linux] 507 + 508 + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': 509 + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} 510 + cpu: [arm64] 511 + os: [linux] 512 + 513 + '@img/sharp-libvips-linuxmusl-x64@1.2.4': 514 + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} 515 + cpu: [x64] 516 + os: [linux] 517 + 518 + '@img/sharp-linux-arm64@0.34.5': 519 + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} 520 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 521 + cpu: [arm64] 522 + os: [linux] 523 + 524 + '@img/sharp-linux-arm@0.34.5': 525 + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} 526 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 527 + cpu: [arm] 528 + os: [linux] 529 + 530 + '@img/sharp-linux-ppc64@0.34.5': 531 + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} 532 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 533 + cpu: [ppc64] 534 + os: [linux] 535 + 536 + '@img/sharp-linux-riscv64@0.34.5': 537 + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} 538 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 539 + cpu: [riscv64] 540 + os: [linux] 541 + 542 + '@img/sharp-linux-s390x@0.34.5': 543 + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} 544 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 545 + cpu: [s390x] 546 + os: [linux] 547 + 548 + '@img/sharp-linux-x64@0.34.5': 549 + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} 550 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 551 + cpu: [x64] 552 + os: [linux] 553 + 554 + '@img/sharp-linuxmusl-arm64@0.34.5': 555 + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} 556 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 557 + cpu: [arm64] 558 + os: [linux] 559 + 560 + '@img/sharp-linuxmusl-x64@0.34.5': 561 + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} 562 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 563 + cpu: [x64] 564 + os: [linux] 565 + 566 + '@img/sharp-wasm32@0.34.5': 567 + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} 568 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 569 + cpu: [wasm32] 570 + 571 + '@img/sharp-win32-arm64@0.34.5': 572 + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} 573 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 574 + cpu: [arm64] 575 + os: [win32] 576 + 577 + '@img/sharp-win32-ia32@0.34.5': 578 + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} 579 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 580 + cpu: [ia32] 581 + os: [win32] 582 + 583 + '@img/sharp-win32-x64@0.34.5': 584 + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} 585 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 586 + cpu: [x64] 587 + os: [win32] 588 + 589 + '@jridgewell/sourcemap-codec@1.5.5': 590 + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 591 + 592 + '@mdx-js/mdx@3.1.1': 593 + resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} 594 + 595 + '@mermaid-js/parser@1.0.0': 596 + resolution: {integrity: sha512-vvK0Hi/VWndxoh03Mmz6wa1KDriSPjS2XMZL/1l19HFwygiObEEoEwSDxOqyLzzAI6J2PU3261JjTMTO7x+BPw==} 597 + 598 + '@oslojs/encoding@1.1.0': 599 + resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} 600 + 601 + '@pagefind/darwin-arm64@1.4.0': 602 + resolution: {integrity: sha512-2vMqkbv3lbx1Awea90gTaBsvpzgRs7MuSgKDxW0m9oV1GPZCZbZBJg/qL83GIUEN2BFlY46dtUZi54pwH+/pTQ==} 603 + cpu: [arm64] 604 + os: [darwin] 605 + 606 + '@pagefind/darwin-x64@1.4.0': 607 + resolution: {integrity: sha512-e7JPIS6L9/cJfow+/IAqknsGqEPjJnVXGjpGm25bnq+NPdoD3c/7fAwr1OXkG4Ocjx6ZGSCijXEV4ryMcH2E3A==} 608 + cpu: [x64] 609 + os: [darwin] 610 + 611 + '@pagefind/default-ui@1.4.0': 612 + resolution: {integrity: sha512-wie82VWn3cnGEdIjh4YwNESyS1G6vRHwL6cNjy9CFgNnWW/PGRjsLq300xjVH5sfPFK3iK36UxvIBymtQIEiSQ==} 613 + 614 + '@pagefind/freebsd-x64@1.4.0': 615 + resolution: {integrity: sha512-WcJVypXSZ+9HpiqZjFXMUobfFfZZ6NzIYtkhQ9eOhZrQpeY5uQFqNWLCk7w9RkMUwBv1HAMDW3YJQl/8OqsV0Q==} 616 + cpu: [x64] 617 + os: [freebsd] 618 + 619 + '@pagefind/linux-arm64@1.4.0': 620 + resolution: {integrity: sha512-PIt8dkqt4W06KGmQjONw7EZbhDF+uXI7i0XtRLN1vjCUxM9vGPdtJc2mUyVPevjomrGz5M86M8bqTr6cgDp1Uw==} 621 + cpu: [arm64] 622 + os: [linux] 623 + 624 + '@pagefind/linux-x64@1.4.0': 625 + resolution: {integrity: sha512-z4oddcWwQ0UHrTHR8psLnVlz6USGJ/eOlDPTDYZ4cI8TK8PgwRUPQZp9D2iJPNIPcS6Qx/E4TebjuGJOyK8Mmg==} 626 + cpu: [x64] 627 + os: [linux] 628 + 629 + '@pagefind/windows-x64@1.4.0': 630 + resolution: {integrity: sha512-NkT+YAdgS2FPCn8mIA9bQhiBs+xmniMGq1LFPDhcFn0+2yIUEiIG06t7bsZlhdjknEQRTSdT7YitP6fC5qwP0g==} 631 + cpu: [x64] 632 + os: [win32] 633 + 634 + '@rollup/pluginutils@5.3.0': 635 + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} 636 + engines: {node: '>=14.0.0'} 637 + peerDependencies: 638 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 639 + peerDependenciesMeta: 640 + rollup: 641 + optional: true 642 + 643 + '@rollup/rollup-android-arm-eabi@4.57.1': 644 + resolution: {integrity: sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==} 645 + cpu: [arm] 646 + os: [android] 647 + 648 + '@rollup/rollup-android-arm64@4.57.1': 649 + resolution: {integrity: sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==} 650 + cpu: [arm64] 651 + os: [android] 652 + 653 + '@rollup/rollup-darwin-arm64@4.57.1': 654 + resolution: {integrity: sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==} 655 + cpu: [arm64] 656 + os: [darwin] 657 + 658 + '@rollup/rollup-darwin-x64@4.57.1': 659 + resolution: {integrity: sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==} 660 + cpu: [x64] 661 + os: [darwin] 662 + 663 + '@rollup/rollup-freebsd-arm64@4.57.1': 664 + resolution: {integrity: sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==} 665 + cpu: [arm64] 666 + os: [freebsd] 667 + 668 + '@rollup/rollup-freebsd-x64@4.57.1': 669 + resolution: {integrity: sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==} 670 + cpu: [x64] 671 + os: [freebsd] 672 + 673 + '@rollup/rollup-linux-arm-gnueabihf@4.57.1': 674 + resolution: {integrity: sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==} 675 + cpu: [arm] 676 + os: [linux] 677 + 678 + '@rollup/rollup-linux-arm-musleabihf@4.57.1': 679 + resolution: {integrity: sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==} 680 + cpu: [arm] 681 + os: [linux] 682 + 683 + '@rollup/rollup-linux-arm64-gnu@4.57.1': 684 + resolution: {integrity: sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==} 685 + cpu: [arm64] 686 + os: [linux] 687 + 688 + '@rollup/rollup-linux-arm64-musl@4.57.1': 689 + resolution: {integrity: sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==} 690 + cpu: [arm64] 691 + os: [linux] 692 + 693 + '@rollup/rollup-linux-loong64-gnu@4.57.1': 694 + resolution: {integrity: sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==} 695 + cpu: [loong64] 696 + os: [linux] 697 + 698 + '@rollup/rollup-linux-loong64-musl@4.57.1': 699 + resolution: {integrity: sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==} 700 + cpu: [loong64] 701 + os: [linux] 702 + 703 + '@rollup/rollup-linux-ppc64-gnu@4.57.1': 704 + resolution: {integrity: sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==} 705 + cpu: [ppc64] 706 + os: [linux] 707 + 708 + '@rollup/rollup-linux-ppc64-musl@4.57.1': 709 + resolution: {integrity: sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==} 710 + cpu: [ppc64] 711 + os: [linux] 712 + 713 + '@rollup/rollup-linux-riscv64-gnu@4.57.1': 714 + resolution: {integrity: sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==} 715 + cpu: [riscv64] 716 + os: [linux] 717 + 718 + '@rollup/rollup-linux-riscv64-musl@4.57.1': 719 + resolution: {integrity: sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==} 720 + cpu: [riscv64] 721 + os: [linux] 722 + 723 + '@rollup/rollup-linux-s390x-gnu@4.57.1': 724 + resolution: {integrity: sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==} 725 + cpu: [s390x] 726 + os: [linux] 727 + 728 + '@rollup/rollup-linux-x64-gnu@4.57.1': 729 + resolution: {integrity: sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==} 730 + cpu: [x64] 731 + os: [linux] 732 + 733 + '@rollup/rollup-linux-x64-musl@4.57.1': 734 + resolution: {integrity: sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==} 735 + cpu: [x64] 736 + os: [linux] 737 + 738 + '@rollup/rollup-openbsd-x64@4.57.1': 739 + resolution: {integrity: sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==} 740 + cpu: [x64] 741 + os: [openbsd] 742 + 743 + '@rollup/rollup-openharmony-arm64@4.57.1': 744 + resolution: {integrity: sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==} 745 + cpu: [arm64] 746 + os: [openharmony] 747 + 748 + '@rollup/rollup-win32-arm64-msvc@4.57.1': 749 + resolution: {integrity: sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==} 750 + cpu: [arm64] 751 + os: [win32] 752 + 753 + '@rollup/rollup-win32-ia32-msvc@4.57.1': 754 + resolution: {integrity: sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==} 755 + cpu: [ia32] 756 + os: [win32] 757 + 758 + '@rollup/rollup-win32-x64-gnu@4.57.1': 759 + resolution: {integrity: sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==} 760 + cpu: [x64] 761 + os: [win32] 762 + 763 + '@rollup/rollup-win32-x64-msvc@4.57.1': 764 + resolution: {integrity: sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==} 765 + cpu: [x64] 766 + os: [win32] 767 + 768 + '@shikijs/core@3.22.0': 769 + resolution: {integrity: sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA==} 770 + 771 + '@shikijs/engine-javascript@3.22.0': 772 + resolution: {integrity: sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw==} 773 + 774 + '@shikijs/engine-oniguruma@3.22.0': 775 + resolution: {integrity: sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==} 776 + 777 + '@shikijs/langs@3.22.0': 778 + resolution: {integrity: sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==} 779 + 780 + '@shikijs/themes@3.22.0': 781 + resolution: {integrity: sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==} 782 + 783 + '@shikijs/types@3.22.0': 784 + resolution: {integrity: sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==} 785 + 786 + '@shikijs/vscode-textmate@10.0.2': 787 + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} 788 + 789 + '@types/d3-array@3.2.2': 790 + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} 791 + 792 + '@types/d3-axis@3.0.6': 793 + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} 794 + 795 + '@types/d3-brush@3.0.6': 796 + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} 797 + 798 + '@types/d3-chord@3.0.6': 799 + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} 800 + 801 + '@types/d3-color@3.1.3': 802 + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} 803 + 804 + '@types/d3-contour@3.0.6': 805 + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} 806 + 807 + '@types/d3-delaunay@6.0.4': 808 + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} 809 + 810 + '@types/d3-dispatch@3.0.7': 811 + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} 812 + 813 + '@types/d3-drag@3.0.7': 814 + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} 815 + 816 + '@types/d3-dsv@3.0.7': 817 + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} 818 + 819 + '@types/d3-ease@3.0.2': 820 + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} 821 + 822 + '@types/d3-fetch@3.0.7': 823 + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} 824 + 825 + '@types/d3-force@3.0.10': 826 + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} 827 + 828 + '@types/d3-format@3.0.4': 829 + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} 830 + 831 + '@types/d3-geo@3.1.0': 832 + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} 833 + 834 + '@types/d3-hierarchy@3.1.7': 835 + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} 836 + 837 + '@types/d3-interpolate@3.0.4': 838 + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} 839 + 840 + '@types/d3-path@3.1.1': 841 + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} 842 + 843 + '@types/d3-polygon@3.0.2': 844 + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} 845 + 846 + '@types/d3-quadtree@3.0.6': 847 + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} 848 + 849 + '@types/d3-random@3.0.3': 850 + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} 851 + 852 + '@types/d3-scale-chromatic@3.1.0': 853 + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} 854 + 855 + '@types/d3-scale@4.0.9': 856 + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} 857 + 858 + '@types/d3-selection@3.0.11': 859 + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} 860 + 861 + '@types/d3-shape@3.1.8': 862 + resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==} 863 + 864 + '@types/d3-time-format@4.0.3': 865 + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} 866 + 867 + '@types/d3-time@3.0.4': 868 + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} 869 + 870 + '@types/d3-timer@3.0.2': 871 + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} 872 + 873 + '@types/d3-transition@3.0.9': 874 + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} 875 + 876 + '@types/d3-zoom@3.0.8': 877 + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} 878 + 879 + '@types/d3@7.4.3': 880 + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} 881 + 882 + '@types/debug@4.1.12': 883 + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} 884 + 885 + '@types/estree-jsx@1.0.5': 886 + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} 887 + 888 + '@types/estree@1.0.8': 889 + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 890 + 891 + '@types/geojson@7946.0.16': 892 + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} 893 + 894 + '@types/hast@3.0.4': 895 + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} 896 + 897 + '@types/js-yaml@4.0.9': 898 + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} 899 + 900 + '@types/mdast@4.0.4': 901 + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} 902 + 903 + '@types/mdx@2.0.13': 904 + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} 905 + 906 + '@types/ms@2.1.0': 907 + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} 908 + 909 + '@types/nlcst@2.0.3': 910 + resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} 911 + 912 + '@types/node@17.0.45': 913 + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} 914 + 915 + '@types/sax@1.2.7': 916 + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} 917 + 918 + '@types/trusted-types@2.0.7': 919 + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} 920 + 921 + '@types/unist@2.0.11': 922 + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} 923 + 924 + '@types/unist@3.0.3': 925 + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} 926 + 927 + '@ungap/structured-clone@1.3.0': 928 + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} 929 + 930 + acorn-jsx@5.3.2: 931 + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 932 + peerDependencies: 933 + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 934 + 935 + acorn@8.16.0: 936 + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} 937 + engines: {node: '>=0.4.0'} 938 + hasBin: true 939 + 940 + ansi-align@3.0.1: 941 + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} 942 + 943 + ansi-regex@5.0.1: 944 + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 945 + engines: {node: '>=8'} 946 + 947 + ansi-regex@6.2.2: 948 + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} 949 + engines: {node: '>=12'} 950 + 951 + ansi-styles@6.2.3: 952 + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} 953 + engines: {node: '>=12'} 954 + 955 + anymatch@3.1.3: 956 + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 957 + engines: {node: '>= 8'} 958 + 959 + arg@5.0.2: 960 + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 961 + 962 + argparse@2.0.1: 963 + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 964 + 965 + aria-query@5.3.2: 966 + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} 967 + engines: {node: '>= 0.4'} 968 + 969 + array-iterate@2.0.1: 970 + resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} 971 + 972 + astring@1.9.0: 973 + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} 974 + hasBin: true 975 + 976 + astro-expressive-code@0.41.6: 977 + resolution: {integrity: sha512-l47tb1uhmVIebHUkw+HEPtU/av0G4O8Q34g2cbkPvC7/e9ZhANcjUUciKt9Hp6gSVDdIuXBBLwJQn2LkeGMOAw==} 978 + peerDependencies: 979 + astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta 980 + 981 + astro-mermaid@1.3.1: 982 + resolution: {integrity: sha512-1+FjwayMSZLtFd+ofdu1+v8a902nN5wmPmjY2qb8tLiO96YlL65LbskiuUcyH6q9h0CdZCrkc5FimlaHZsMJsg==} 983 + peerDependencies: 984 + '@mermaid-js/layout-elk': ^0.2.0 985 + astro: ^4.0.0 || ^5.0.0 986 + mermaid: ^10.0.0 || ^11.0.0 987 + peerDependenciesMeta: 988 + '@mermaid-js/layout-elk': 989 + optional: true 990 + 991 + astro@5.17.3: 992 + resolution: {integrity: sha512-69dcfPe8LsHzklwj+hl+vunWUbpMB6pmg35mACjetxbJeUNNys90JaBM8ZiwsPK689SAj/4Zqb1ayaANls9/MA==} 993 + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} 994 + hasBin: true 995 + 996 + axobject-query@4.1.0: 997 + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} 998 + engines: {node: '>= 0.4'} 999 + 1000 + bail@2.0.2: 1001 + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} 1002 + 1003 + base-64@1.0.0: 1004 + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} 1005 + 1006 + bcp-47-match@2.0.3: 1007 + resolution: {integrity: sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==} 1008 + 1009 + bcp-47@2.1.0: 1010 + resolution: {integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==} 1011 + 1012 + boolbase@1.0.0: 1013 + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 1014 + 1015 + boxen@8.0.1: 1016 + resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} 1017 + engines: {node: '>=18'} 1018 + 1019 + camelcase@8.0.0: 1020 + resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} 1021 + engines: {node: '>=16'} 1022 + 1023 + ccount@2.0.1: 1024 + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} 1025 + 1026 + chalk@5.6.2: 1027 + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} 1028 + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 1029 + 1030 + character-entities-html4@2.1.0: 1031 + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} 1032 + 1033 + character-entities-legacy@3.0.0: 1034 + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} 1035 + 1036 + character-entities@2.0.2: 1037 + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} 1038 + 1039 + character-reference-invalid@2.0.1: 1040 + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} 1041 + 1042 + chevrotain-allstar@0.3.1: 1043 + resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} 1044 + peerDependencies: 1045 + chevrotain: ^11.0.0 1046 + 1047 + chevrotain@11.1.1: 1048 + resolution: {integrity: sha512-f0yv5CPKaFxfsPTBzX7vGuim4oIC1/gcS7LUGdBSwl2dU6+FON6LVUksdOo1qJjoUvXNn45urgh8C+0a24pACQ==} 1049 + 1050 + chokidar@5.0.0: 1051 + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} 1052 + engines: {node: '>= 20.19.0'} 1053 + 1054 + ci-info@4.4.0: 1055 + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} 1056 + engines: {node: '>=8'} 1057 + 1058 + cli-boxes@3.0.0: 1059 + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} 1060 + engines: {node: '>=10'} 1061 + 1062 + clsx@2.1.1: 1063 + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} 1064 + engines: {node: '>=6'} 1065 + 1066 + collapse-white-space@2.1.0: 1067 + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} 1068 + 1069 + comma-separated-tokens@2.0.3: 1070 + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} 1071 + 1072 + commander@11.1.0: 1073 + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} 1074 + engines: {node: '>=16'} 1075 + 1076 + commander@7.2.0: 1077 + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} 1078 + engines: {node: '>= 10'} 1079 + 1080 + commander@8.3.0: 1081 + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} 1082 + engines: {node: '>= 12'} 1083 + 1084 + common-ancestor-path@1.0.1: 1085 + resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} 1086 + 1087 + confbox@0.1.8: 1088 + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} 1089 + 1090 + cookie-es@1.2.2: 1091 + resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} 1092 + 1093 + cookie@1.1.1: 1094 + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} 1095 + engines: {node: '>=18'} 1096 + 1097 + cose-base@1.0.3: 1098 + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} 1099 + 1100 + cose-base@2.2.0: 1101 + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} 1102 + 1103 + crossws@0.3.5: 1104 + resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} 1105 + 1106 + css-select@5.2.2: 1107 + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} 1108 + 1109 + css-selector-parser@3.3.0: 1110 + resolution: {integrity: sha512-Y2asgMGFqJKF4fq4xHDSlFYIkeVfRsm69lQC1q9kbEsH5XtnINTMrweLkjYMeaUgiXBy/uvKeO/a1JHTNnmB2g==} 1111 + 1112 + css-tree@2.2.1: 1113 + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} 1114 + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} 1115 + 1116 + css-tree@3.1.0: 1117 + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} 1118 + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 1119 + 1120 + css-what@6.2.2: 1121 + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} 1122 + engines: {node: '>= 6'} 1123 + 1124 + cssesc@3.0.0: 1125 + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1126 + engines: {node: '>=4'} 1127 + hasBin: true 1128 + 1129 + csso@5.0.5: 1130 + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} 1131 + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} 1132 + 1133 + cytoscape-cose-bilkent@4.1.0: 1134 + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} 1135 + peerDependencies: 1136 + cytoscape: ^3.2.0 1137 + 1138 + cytoscape-fcose@2.2.0: 1139 + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} 1140 + peerDependencies: 1141 + cytoscape: ^3.2.0 1142 + 1143 + cytoscape@3.33.1: 1144 + resolution: {integrity: sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==} 1145 + engines: {node: '>=0.10'} 1146 + 1147 + d3-array@2.12.1: 1148 + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} 1149 + 1150 + d3-array@3.2.4: 1151 + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} 1152 + engines: {node: '>=12'} 1153 + 1154 + d3-axis@3.0.0: 1155 + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} 1156 + engines: {node: '>=12'} 1157 + 1158 + d3-brush@3.0.0: 1159 + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} 1160 + engines: {node: '>=12'} 1161 + 1162 + d3-chord@3.0.1: 1163 + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} 1164 + engines: {node: '>=12'} 1165 + 1166 + d3-color@3.1.0: 1167 + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} 1168 + engines: {node: '>=12'} 1169 + 1170 + d3-contour@4.0.2: 1171 + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} 1172 + engines: {node: '>=12'} 1173 + 1174 + d3-delaunay@6.0.4: 1175 + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} 1176 + engines: {node: '>=12'} 1177 + 1178 + d3-dispatch@3.0.1: 1179 + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} 1180 + engines: {node: '>=12'} 1181 + 1182 + d3-drag@3.0.0: 1183 + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} 1184 + engines: {node: '>=12'} 1185 + 1186 + d3-dsv@3.0.1: 1187 + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} 1188 + engines: {node: '>=12'} 1189 + hasBin: true 1190 + 1191 + d3-ease@3.0.1: 1192 + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} 1193 + engines: {node: '>=12'} 1194 + 1195 + d3-fetch@3.0.1: 1196 + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} 1197 + engines: {node: '>=12'} 1198 + 1199 + d3-force@3.0.0: 1200 + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} 1201 + engines: {node: '>=12'} 1202 + 1203 + d3-format@3.1.2: 1204 + resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} 1205 + engines: {node: '>=12'} 1206 + 1207 + d3-geo@3.1.1: 1208 + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} 1209 + engines: {node: '>=12'} 1210 + 1211 + d3-hierarchy@3.1.2: 1212 + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} 1213 + engines: {node: '>=12'} 1214 + 1215 + d3-interpolate@3.0.1: 1216 + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} 1217 + engines: {node: '>=12'} 1218 + 1219 + d3-path@1.0.9: 1220 + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} 1221 + 1222 + d3-path@3.1.0: 1223 + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} 1224 + engines: {node: '>=12'} 1225 + 1226 + d3-polygon@3.0.1: 1227 + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} 1228 + engines: {node: '>=12'} 1229 + 1230 + d3-quadtree@3.0.1: 1231 + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} 1232 + engines: {node: '>=12'} 1233 + 1234 + d3-random@3.0.1: 1235 + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} 1236 + engines: {node: '>=12'} 1237 + 1238 + d3-sankey@0.12.3: 1239 + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} 1240 + 1241 + d3-scale-chromatic@3.1.0: 1242 + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} 1243 + engines: {node: '>=12'} 1244 + 1245 + d3-scale@4.0.2: 1246 + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} 1247 + engines: {node: '>=12'} 1248 + 1249 + d3-selection@3.0.0: 1250 + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} 1251 + engines: {node: '>=12'} 1252 + 1253 + d3-shape@1.3.7: 1254 + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} 1255 + 1256 + d3-shape@3.2.0: 1257 + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} 1258 + engines: {node: '>=12'} 1259 + 1260 + d3-time-format@4.1.0: 1261 + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} 1262 + engines: {node: '>=12'} 1263 + 1264 + d3-time@3.1.0: 1265 + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} 1266 + engines: {node: '>=12'} 1267 + 1268 + d3-timer@3.0.1: 1269 + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} 1270 + engines: {node: '>=12'} 1271 + 1272 + d3-transition@3.0.1: 1273 + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} 1274 + engines: {node: '>=12'} 1275 + peerDependencies: 1276 + d3-selection: 2 - 3 1277 + 1278 + d3-zoom@3.0.0: 1279 + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} 1280 + engines: {node: '>=12'} 1281 + 1282 + d3@7.9.0: 1283 + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} 1284 + engines: {node: '>=12'} 1285 + 1286 + dagre-d3-es@7.0.13: 1287 + resolution: {integrity: sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==} 1288 + 1289 + dayjs@1.11.19: 1290 + resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} 1291 + 1292 + debug@4.4.3: 1293 + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} 1294 + engines: {node: '>=6.0'} 1295 + peerDependencies: 1296 + supports-color: '*' 1297 + peerDependenciesMeta: 1298 + supports-color: 1299 + optional: true 1300 + 1301 + decode-named-character-reference@1.3.0: 1302 + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} 1303 + 1304 + defu@6.1.4: 1305 + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 1306 + 1307 + delaunator@5.0.1: 1308 + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} 1309 + 1310 + dequal@2.0.3: 1311 + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 1312 + engines: {node: '>=6'} 1313 + 1314 + destr@2.0.5: 1315 + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} 1316 + 1317 + detect-libc@2.1.2: 1318 + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} 1319 + engines: {node: '>=8'} 1320 + 1321 + deterministic-object-hash@2.0.2: 1322 + resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} 1323 + engines: {node: '>=18'} 1324 + 1325 + devalue@5.6.3: 1326 + resolution: {integrity: sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==} 1327 + 1328 + devlop@1.1.0: 1329 + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} 1330 + 1331 + diff@8.0.3: 1332 + resolution: {integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==} 1333 + engines: {node: '>=0.3.1'} 1334 + 1335 + direction@2.0.1: 1336 + resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} 1337 + hasBin: true 1338 + 1339 + dlv@1.1.3: 1340 + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1341 + 1342 + dom-serializer@2.0.0: 1343 + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} 1344 + 1345 + domelementtype@2.3.0: 1346 + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 1347 + 1348 + domhandler@5.0.3: 1349 + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} 1350 + engines: {node: '>= 4'} 1351 + 1352 + dompurify@3.3.1: 1353 + resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==} 1354 + 1355 + domutils@3.2.2: 1356 + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} 1357 + 1358 + dset@3.1.4: 1359 + resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} 1360 + engines: {node: '>=4'} 1361 + 1362 + emoji-regex@10.6.0: 1363 + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} 1364 + 1365 + emoji-regex@8.0.0: 1366 + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1367 + 1368 + entities@4.5.0: 1369 + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 1370 + engines: {node: '>=0.12'} 1371 + 1372 + entities@6.0.1: 1373 + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} 1374 + engines: {node: '>=0.12'} 1375 + 1376 + es-module-lexer@1.7.0: 1377 + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 1378 + 1379 + esast-util-from-estree@2.0.0: 1380 + resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} 1381 + 1382 + esast-util-from-js@2.0.1: 1383 + resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} 1384 + 1385 + esbuild@0.25.12: 1386 + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} 1387 + engines: {node: '>=18'} 1388 + hasBin: true 1389 + 1390 + esbuild@0.27.3: 1391 + resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} 1392 + engines: {node: '>=18'} 1393 + hasBin: true 1394 + 1395 + escape-string-regexp@5.0.0: 1396 + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} 1397 + engines: {node: '>=12'} 1398 + 1399 + estree-util-attach-comments@3.0.0: 1400 + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} 1401 + 1402 + estree-util-build-jsx@3.0.1: 1403 + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} 1404 + 1405 + estree-util-is-identifier-name@3.0.0: 1406 + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} 1407 + 1408 + estree-util-scope@1.0.0: 1409 + resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} 1410 + 1411 + estree-util-to-js@2.0.0: 1412 + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} 1413 + 1414 + estree-util-visit@2.0.0: 1415 + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} 1416 + 1417 + estree-walker@2.0.2: 1418 + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1419 + 1420 + estree-walker@3.0.3: 1421 + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 1422 + 1423 + eventemitter3@5.0.4: 1424 + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} 1425 + 1426 + expressive-code@0.41.6: 1427 + resolution: {integrity: sha512-W/5+IQbrpCIM5KGLjO35wlp1NCwDOOVQb+PAvzEoGkW1xjGM807ZGfBKptNWH6UECvt6qgmLyWolCMYKh7eQmA==} 1428 + 1429 + extend@3.0.2: 1430 + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} 1431 + 1432 + fdir@6.5.0: 1433 + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} 1434 + engines: {node: '>=12.0.0'} 1435 + peerDependencies: 1436 + picomatch: ^3 || ^4 1437 + peerDependenciesMeta: 1438 + picomatch: 1439 + optional: true 1440 + 1441 + flattie@1.1.1: 1442 + resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} 1443 + engines: {node: '>=8'} 1444 + 1445 + fontace@0.4.1: 1446 + resolution: {integrity: sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==} 1447 + 1448 + fontkitten@1.0.2: 1449 + resolution: {integrity: sha512-piJxbLnkD9Xcyi7dWJRnqszEURixe7CrF/efBfbffe2DPyabmuIuqraruY8cXTs19QoM8VJzx47BDRVNXETM7Q==} 1450 + engines: {node: '>=20'} 1451 + 1452 + fsevents@2.3.3: 1453 + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1454 + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1455 + os: [darwin] 1456 + 1457 + get-east-asian-width@1.5.0: 1458 + resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} 1459 + engines: {node: '>=18'} 1460 + 1461 + github-slugger@2.0.0: 1462 + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} 1463 + 1464 + h3@1.15.5: 1465 + resolution: {integrity: sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==} 1466 + 1467 + hachure-fill@0.5.2: 1468 + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} 1469 + 1470 + hast-util-embedded@3.0.0: 1471 + resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} 1472 + 1473 + hast-util-format@1.1.0: 1474 + resolution: {integrity: sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==} 1475 + 1476 + hast-util-from-html@2.0.3: 1477 + resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} 1478 + 1479 + hast-util-from-parse5@8.0.3: 1480 + resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} 1481 + 1482 + hast-util-has-property@3.0.0: 1483 + resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} 1484 + 1485 + hast-util-is-body-ok-link@3.0.1: 1486 + resolution: {integrity: sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==} 1487 + 1488 + hast-util-is-element@3.0.0: 1489 + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} 1490 + 1491 + hast-util-minify-whitespace@1.0.1: 1492 + resolution: {integrity: sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==} 1493 + 1494 + hast-util-parse-selector@4.0.0: 1495 + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} 1496 + 1497 + hast-util-phrasing@3.0.1: 1498 + resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==} 1499 + 1500 + hast-util-raw@9.1.0: 1501 + resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} 1502 + 1503 + hast-util-select@6.0.4: 1504 + resolution: {integrity: sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==} 1505 + 1506 + hast-util-to-estree@3.1.3: 1507 + resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} 1508 + 1509 + hast-util-to-html@9.0.5: 1510 + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} 1511 + 1512 + hast-util-to-jsx-runtime@2.3.6: 1513 + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} 1514 + 1515 + hast-util-to-parse5@8.0.1: 1516 + resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==} 1517 + 1518 + hast-util-to-string@3.0.1: 1519 + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} 1520 + 1521 + hast-util-to-text@4.0.2: 1522 + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} 1523 + 1524 + hast-util-whitespace@3.0.0: 1525 + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} 1526 + 1527 + hastscript@9.0.1: 1528 + resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} 1529 + 1530 + html-escaper@3.0.3: 1531 + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} 1532 + 1533 + html-void-elements@3.0.0: 1534 + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} 1535 + 1536 + html-whitespace-sensitive-tag-names@3.0.1: 1537 + resolution: {integrity: sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==} 1538 + 1539 + http-cache-semantics@4.2.0: 1540 + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} 1541 + 1542 + i18next@23.16.8: 1543 + resolution: {integrity: sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==} 1544 + 1545 + iconv-lite@0.6.3: 1546 + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 1547 + engines: {node: '>=0.10.0'} 1548 + 1549 + import-meta-resolve@4.2.0: 1550 + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} 1551 + 1552 + inline-style-parser@0.2.7: 1553 + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} 1554 + 1555 + internmap@1.0.1: 1556 + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} 1557 + 1558 + internmap@2.0.3: 1559 + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} 1560 + engines: {node: '>=12'} 1561 + 1562 + iron-webcrypto@1.2.1: 1563 + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} 1564 + 1565 + is-alphabetical@2.0.1: 1566 + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} 1567 + 1568 + is-alphanumerical@2.0.1: 1569 + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} 1570 + 1571 + is-decimal@2.0.1: 1572 + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} 1573 + 1574 + is-docker@3.0.0: 1575 + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} 1576 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1577 + hasBin: true 1578 + 1579 + is-fullwidth-code-point@3.0.0: 1580 + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1581 + engines: {node: '>=8'} 1582 + 1583 + is-hexadecimal@2.0.1: 1584 + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} 1585 + 1586 + is-inside-container@1.0.0: 1587 + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} 1588 + engines: {node: '>=14.16'} 1589 + hasBin: true 1590 + 1591 + is-plain-obj@4.1.0: 1592 + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} 1593 + engines: {node: '>=12'} 1594 + 1595 + is-wsl@3.1.1: 1596 + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} 1597 + engines: {node: '>=16'} 1598 + 1599 + js-yaml@4.1.1: 1600 + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} 1601 + hasBin: true 1602 + 1603 + katex@0.16.28: 1604 + resolution: {integrity: sha512-YHzO7721WbmAL6Ov1uzN/l5mY5WWWhJBSW+jq4tkfZfsxmo1hu6frS0EOswvjBUnWE6NtjEs48SFn5CQESRLZg==} 1605 + hasBin: true 1606 + 1607 + khroma@2.1.0: 1608 + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} 1609 + 1610 + kleur@3.0.3: 1611 + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 1612 + engines: {node: '>=6'} 1613 + 1614 + klona@2.0.6: 1615 + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} 1616 + engines: {node: '>= 8'} 1617 + 1618 + langium@4.2.1: 1619 + resolution: {integrity: sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ==} 1620 + engines: {node: '>=20.10.0', npm: '>=10.2.3'} 1621 + 1622 + layout-base@1.0.2: 1623 + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} 1624 + 1625 + layout-base@2.0.1: 1626 + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} 1627 + 1628 + lodash-es@4.17.23: 1629 + resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} 1630 + 1631 + longest-streak@3.1.0: 1632 + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} 1633 + 1634 + lru-cache@11.2.6: 1635 + resolution: {integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==} 1636 + engines: {node: 20 || >=22} 1637 + 1638 + magic-string@0.30.21: 1639 + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} 1640 + 1641 + magicast@0.5.2: 1642 + resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} 1643 + 1644 + markdown-extensions@2.0.0: 1645 + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} 1646 + engines: {node: '>=16'} 1647 + 1648 + markdown-table@3.0.4: 1649 + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} 1650 + 1651 + marked@16.4.2: 1652 + resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} 1653 + engines: {node: '>= 20'} 1654 + hasBin: true 1655 + 1656 + mdast-util-definitions@6.0.0: 1657 + resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} 1658 + 1659 + mdast-util-directive@3.1.0: 1660 + resolution: {integrity: sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==} 1661 + 1662 + mdast-util-find-and-replace@3.0.2: 1663 + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} 1664 + 1665 + mdast-util-from-markdown@2.0.2: 1666 + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} 1667 + 1668 + mdast-util-gfm-autolink-literal@2.0.1: 1669 + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} 1670 + 1671 + mdast-util-gfm-footnote@2.1.0: 1672 + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} 1673 + 1674 + mdast-util-gfm-strikethrough@2.0.0: 1675 + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} 1676 + 1677 + mdast-util-gfm-table@2.0.0: 1678 + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} 1679 + 1680 + mdast-util-gfm-task-list-item@2.0.0: 1681 + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} 1682 + 1683 + mdast-util-gfm@3.1.0: 1684 + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} 1685 + 1686 + mdast-util-mdx-expression@2.0.1: 1687 + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} 1688 + 1689 + mdast-util-mdx-jsx@3.2.0: 1690 + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} 1691 + 1692 + mdast-util-mdx@3.0.0: 1693 + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} 1694 + 1695 + mdast-util-mdxjs-esm@2.0.1: 1696 + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} 1697 + 1698 + mdast-util-phrasing@4.1.0: 1699 + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} 1700 + 1701 + mdast-util-to-hast@13.2.1: 1702 + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} 1703 + 1704 + mdast-util-to-markdown@2.1.2: 1705 + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} 1706 + 1707 + mdast-util-to-string@4.0.0: 1708 + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} 1709 + 1710 + mdn-data@2.0.28: 1711 + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} 1712 + 1713 + mdn-data@2.12.2: 1714 + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} 1715 + 1716 + mermaid@11.12.3: 1717 + resolution: {integrity: sha512-wN5ZSgJQIC+CHJut9xaKWsknLxaFBwCPwPkGTSUYrTiHORWvpT8RxGk849HPnpUAQ+/9BPRqYb80jTpearrHzQ==} 1718 + 1719 + micromark-core-commonmark@2.0.3: 1720 + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} 1721 + 1722 + micromark-extension-directive@3.0.2: 1723 + resolution: {integrity: sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==} 1724 + 1725 + micromark-extension-gfm-autolink-literal@2.1.0: 1726 + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} 1727 + 1728 + micromark-extension-gfm-footnote@2.1.0: 1729 + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} 1730 + 1731 + micromark-extension-gfm-strikethrough@2.1.0: 1732 + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} 1733 + 1734 + micromark-extension-gfm-table@2.1.1: 1735 + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} 1736 + 1737 + micromark-extension-gfm-tagfilter@2.0.0: 1738 + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} 1739 + 1740 + micromark-extension-gfm-task-list-item@2.1.0: 1741 + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} 1742 + 1743 + micromark-extension-gfm@3.0.0: 1744 + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} 1745 + 1746 + micromark-extension-mdx-expression@3.0.1: 1747 + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} 1748 + 1749 + micromark-extension-mdx-jsx@3.0.2: 1750 + resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} 1751 + 1752 + micromark-extension-mdx-md@2.0.0: 1753 + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} 1754 + 1755 + micromark-extension-mdxjs-esm@3.0.0: 1756 + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} 1757 + 1758 + micromark-extension-mdxjs@3.0.0: 1759 + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} 1760 + 1761 + micromark-factory-destination@2.0.1: 1762 + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} 1763 + 1764 + micromark-factory-label@2.0.1: 1765 + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} 1766 + 1767 + micromark-factory-mdx-expression@2.0.3: 1768 + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} 1769 + 1770 + micromark-factory-space@2.0.1: 1771 + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} 1772 + 1773 + micromark-factory-title@2.0.1: 1774 + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} 1775 + 1776 + micromark-factory-whitespace@2.0.1: 1777 + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} 1778 + 1779 + micromark-util-character@2.1.1: 1780 + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} 1781 + 1782 + micromark-util-chunked@2.0.1: 1783 + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} 1784 + 1785 + micromark-util-classify-character@2.0.1: 1786 + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} 1787 + 1788 + micromark-util-combine-extensions@2.0.1: 1789 + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} 1790 + 1791 + micromark-util-decode-numeric-character-reference@2.0.2: 1792 + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} 1793 + 1794 + micromark-util-decode-string@2.0.1: 1795 + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} 1796 + 1797 + micromark-util-encode@2.0.1: 1798 + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} 1799 + 1800 + micromark-util-events-to-acorn@2.0.3: 1801 + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} 1802 + 1803 + micromark-util-html-tag-name@2.0.1: 1804 + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} 1805 + 1806 + micromark-util-normalize-identifier@2.0.1: 1807 + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} 1808 + 1809 + micromark-util-resolve-all@2.0.1: 1810 + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} 1811 + 1812 + micromark-util-sanitize-uri@2.0.1: 1813 + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} 1814 + 1815 + micromark-util-subtokenize@2.1.0: 1816 + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} 1817 + 1818 + micromark-util-symbol@2.0.1: 1819 + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} 1820 + 1821 + micromark-util-types@2.0.2: 1822 + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} 1823 + 1824 + micromark@4.0.2: 1825 + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} 1826 + 1827 + mlly@1.8.0: 1828 + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} 1829 + 1830 + mrmime@2.0.1: 1831 + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} 1832 + engines: {node: '>=10'} 1833 + 1834 + ms@2.1.3: 1835 + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1836 + 1837 + nanoid@3.3.11: 1838 + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 1839 + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1840 + hasBin: true 1841 + 1842 + neotraverse@0.6.18: 1843 + resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} 1844 + engines: {node: '>= 10'} 1845 + 1846 + nlcst-to-string@4.0.0: 1847 + resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} 1848 + 1849 + node-fetch-native@1.6.7: 1850 + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} 1851 + 1852 + node-mock-http@1.0.4: 1853 + resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} 1854 + 1855 + normalize-path@3.0.0: 1856 + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1857 + engines: {node: '>=0.10.0'} 1858 + 1859 + nth-check@2.1.1: 1860 + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 1861 + 1862 + ofetch@1.5.1: 1863 + resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} 1864 + 1865 + ohash@2.0.11: 1866 + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} 1867 + 1868 + oniguruma-parser@0.12.1: 1869 + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} 1870 + 1871 + oniguruma-to-es@4.3.4: 1872 + resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} 1873 + 1874 + p-limit@6.2.0: 1875 + resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} 1876 + engines: {node: '>=18'} 1877 + 1878 + p-queue@8.1.1: 1879 + resolution: {integrity: sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==} 1880 + engines: {node: '>=18'} 1881 + 1882 + p-timeout@6.1.4: 1883 + resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} 1884 + engines: {node: '>=14.16'} 1885 + 1886 + package-manager-detector@1.6.0: 1887 + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} 1888 + 1889 + pagefind@1.4.0: 1890 + resolution: {integrity: sha512-z2kY1mQlL4J8q5EIsQkLzQjilovKzfNVhX8De6oyE6uHpfFtyBaqUpcl/XzJC/4fjD8vBDyh1zolimIcVrCn9g==} 1891 + hasBin: true 1892 + 1893 + parse-entities@4.0.2: 1894 + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} 1895 + 1896 + parse-latin@7.0.0: 1897 + resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} 1898 + 1899 + parse5@7.3.0: 1900 + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} 1901 + 1902 + path-data-parser@0.1.0: 1903 + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} 1904 + 1905 + pathe@2.0.3: 1906 + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1907 + 1908 + piccolore@0.1.3: 1909 + resolution: {integrity: sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==} 1910 + 1911 + picocolors@1.1.1: 1912 + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1913 + 1914 + picomatch@2.3.1: 1915 + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1916 + engines: {node: '>=8.6'} 1917 + 1918 + picomatch@4.0.3: 1919 + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 1920 + engines: {node: '>=12'} 1921 + 1922 + pkg-types@1.3.1: 1923 + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} 1924 + 1925 + points-on-curve@0.2.0: 1926 + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} 1927 + 1928 + points-on-path@0.2.1: 1929 + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} 1930 + 1931 + postcss-nested@6.2.0: 1932 + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} 1933 + engines: {node: '>=12.0'} 1934 + peerDependencies: 1935 + postcss: ^8.2.14 1936 + 1937 + postcss-selector-parser@6.1.2: 1938 + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} 1939 + engines: {node: '>=4'} 1940 + 1941 + postcss@8.5.6: 1942 + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 1943 + engines: {node: ^10 || ^12 || >=14} 1944 + 1945 + prismjs@1.30.0: 1946 + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} 1947 + engines: {node: '>=6'} 1948 + 1949 + prompts@2.4.2: 1950 + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} 1951 + engines: {node: '>= 6'} 1952 + 1953 + property-information@7.1.0: 1954 + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} 1955 + 1956 + radix3@1.1.2: 1957 + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} 1958 + 1959 + readdirp@5.0.0: 1960 + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} 1961 + engines: {node: '>= 20.19.0'} 1962 + 1963 + recma-build-jsx@1.0.0: 1964 + resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} 1965 + 1966 + recma-jsx@1.0.1: 1967 + resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} 1968 + peerDependencies: 1969 + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 1970 + 1971 + recma-parse@1.0.0: 1972 + resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} 1973 + 1974 + recma-stringify@1.0.0: 1975 + resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} 1976 + 1977 + regex-recursion@6.0.2: 1978 + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} 1979 + 1980 + regex-utilities@2.3.0: 1981 + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} 1982 + 1983 + regex@6.1.0: 1984 + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} 1985 + 1986 + rehype-expressive-code@0.41.6: 1987 + resolution: {integrity: sha512-aBMX8kxPtjmDSFUdZlAWJkMvsQ4ZMASfee90JWIAV8tweltXLzkWC3q++43ToTelI8ac5iC0B3/S/Cl4Ql1y2g==} 1988 + 1989 + rehype-format@5.0.1: 1990 + resolution: {integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==} 1991 + 1992 + rehype-parse@9.0.1: 1993 + resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} 1994 + 1995 + rehype-raw@7.0.0: 1996 + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} 1997 + 1998 + rehype-recma@1.0.0: 1999 + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} 2000 + 2001 + rehype-stringify@10.0.1: 2002 + resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} 2003 + 2004 + rehype@13.0.2: 2005 + resolution: {integrity: sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==} 2006 + 2007 + remark-directive@3.0.1: 2008 + resolution: {integrity: sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==} 2009 + 2010 + remark-gfm@4.0.1: 2011 + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} 2012 + 2013 + remark-mdx@3.1.1: 2014 + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} 2015 + 2016 + remark-parse@11.0.0: 2017 + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} 2018 + 2019 + remark-rehype@11.1.2: 2020 + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} 2021 + 2022 + remark-smartypants@3.0.2: 2023 + resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} 2024 + engines: {node: '>=16.0.0'} 2025 + 2026 + remark-stringify@11.0.0: 2027 + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} 2028 + 2029 + retext-latin@4.0.0: 2030 + resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} 2031 + 2032 + retext-smartypants@6.2.0: 2033 + resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==} 2034 + 2035 + retext-stringify@4.0.0: 2036 + resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} 2037 + 2038 + retext@9.0.0: 2039 + resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} 2040 + 2041 + robust-predicates@3.0.2: 2042 + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} 2043 + 2044 + rollup@4.57.1: 2045 + resolution: {integrity: sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==} 2046 + engines: {node: '>=18.0.0', npm: '>=8.0.0'} 2047 + hasBin: true 2048 + 2049 + roughjs@4.6.6: 2050 + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} 2051 + 2052 + rw@1.3.3: 2053 + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} 2054 + 2055 + safer-buffer@2.1.2: 2056 + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 2057 + 2058 + sax@1.4.4: 2059 + resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} 2060 + engines: {node: '>=11.0.0'} 2061 + 2062 + semver@7.7.4: 2063 + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} 2064 + engines: {node: '>=10'} 2065 + hasBin: true 2066 + 2067 + sharp@0.34.5: 2068 + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} 2069 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2070 + 2071 + shiki@3.22.0: 2072 + resolution: {integrity: sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g==} 2073 + 2074 + sisteransi@1.0.5: 2075 + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 2076 + 2077 + sitemap@8.0.2: 2078 + resolution: {integrity: sha512-LwktpJcyZDoa0IL6KT++lQ53pbSrx2c9ge41/SeLTyqy2XUNA6uR4+P9u5IVo5lPeL2arAcOKn1aZAxoYbCKlQ==} 2079 + engines: {node: '>=14.0.0', npm: '>=6.0.0'} 2080 + hasBin: true 2081 + 2082 + smol-toml@1.6.0: 2083 + resolution: {integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==} 2084 + engines: {node: '>= 18'} 2085 + 2086 + source-map-js@1.2.1: 2087 + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 2088 + engines: {node: '>=0.10.0'} 2089 + 2090 + source-map@0.7.6: 2091 + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} 2092 + engines: {node: '>= 12'} 2093 + 2094 + space-separated-tokens@2.0.2: 2095 + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} 2096 + 2097 + stream-replace-string@2.0.0: 2098 + resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} 2099 + 2100 + string-width@4.2.3: 2101 + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2102 + engines: {node: '>=8'} 2103 + 2104 + string-width@7.2.0: 2105 + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} 2106 + engines: {node: '>=18'} 2107 + 2108 + stringify-entities@4.0.4: 2109 + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} 2110 + 2111 + strip-ansi@6.0.1: 2112 + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2113 + engines: {node: '>=8'} 2114 + 2115 + strip-ansi@7.1.2: 2116 + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} 2117 + engines: {node: '>=12'} 2118 + 2119 + style-to-js@1.1.21: 2120 + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} 2121 + 2122 + style-to-object@1.0.14: 2123 + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} 2124 + 2125 + stylis@4.3.6: 2126 + resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} 2127 + 2128 + svgo@4.0.0: 2129 + resolution: {integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==} 2130 + engines: {node: '>=16'} 2131 + hasBin: true 2132 + 2133 + tiny-inflate@1.0.3: 2134 + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} 2135 + 2136 + tinyexec@1.0.2: 2137 + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} 2138 + engines: {node: '>=18'} 2139 + 2140 + tinyglobby@0.2.15: 2141 + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} 2142 + engines: {node: '>=12.0.0'} 2143 + 2144 + trim-lines@3.0.1: 2145 + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} 2146 + 2147 + trough@2.2.0: 2148 + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} 2149 + 2150 + ts-dedent@2.2.0: 2151 + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} 2152 + engines: {node: '>=6.10'} 2153 + 2154 + tsconfck@3.1.6: 2155 + resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} 2156 + engines: {node: ^18 || >=20} 2157 + hasBin: true 2158 + peerDependencies: 2159 + typescript: ^5.0.0 2160 + peerDependenciesMeta: 2161 + typescript: 2162 + optional: true 2163 + 2164 + tslib@2.8.1: 2165 + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 2166 + 2167 + type-fest@4.41.0: 2168 + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} 2169 + engines: {node: '>=16'} 2170 + 2171 + typescript@5.9.3: 2172 + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} 2173 + engines: {node: '>=14.17'} 2174 + hasBin: true 2175 + 2176 + ufo@1.6.3: 2177 + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} 2178 + 2179 + ultrahtml@1.6.0: 2180 + resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} 2181 + 2182 + uncrypto@0.1.3: 2183 + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} 2184 + 2185 + unified@11.0.5: 2186 + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} 2187 + 2188 + unifont@0.7.4: 2189 + resolution: {integrity: sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg==} 2190 + 2191 + unist-util-find-after@5.0.0: 2192 + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} 2193 + 2194 + unist-util-is@6.0.1: 2195 + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} 2196 + 2197 + unist-util-modify-children@4.0.0: 2198 + resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} 2199 + 2200 + unist-util-position-from-estree@2.0.0: 2201 + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} 2202 + 2203 + unist-util-position@5.0.0: 2204 + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} 2205 + 2206 + unist-util-remove-position@5.0.0: 2207 + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} 2208 + 2209 + unist-util-stringify-position@4.0.0: 2210 + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} 2211 + 2212 + unist-util-visit-children@3.0.0: 2213 + resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} 2214 + 2215 + unist-util-visit-parents@6.0.2: 2216 + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} 2217 + 2218 + unist-util-visit@5.1.0: 2219 + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} 2220 + 2221 + unstorage@1.17.4: 2222 + resolution: {integrity: sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==} 2223 + peerDependencies: 2224 + '@azure/app-configuration': ^1.8.0 2225 + '@azure/cosmos': ^4.2.0 2226 + '@azure/data-tables': ^13.3.0 2227 + '@azure/identity': ^4.6.0 2228 + '@azure/keyvault-secrets': ^4.9.0 2229 + '@azure/storage-blob': ^12.26.0 2230 + '@capacitor/preferences': ^6 || ^7 || ^8 2231 + '@deno/kv': '>=0.9.0' 2232 + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 2233 + '@planetscale/database': ^1.19.0 2234 + '@upstash/redis': ^1.34.3 2235 + '@vercel/blob': '>=0.27.1' 2236 + '@vercel/functions': ^2.2.12 || ^3.0.0 2237 + '@vercel/kv': ^1 || ^2 || ^3 2238 + aws4fetch: ^1.0.20 2239 + db0: '>=0.2.1' 2240 + idb-keyval: ^6.2.1 2241 + ioredis: ^5.4.2 2242 + uploadthing: ^7.4.4 2243 + peerDependenciesMeta: 2244 + '@azure/app-configuration': 2245 + optional: true 2246 + '@azure/cosmos': 2247 + optional: true 2248 + '@azure/data-tables': 2249 + optional: true 2250 + '@azure/identity': 2251 + optional: true 2252 + '@azure/keyvault-secrets': 2253 + optional: true 2254 + '@azure/storage-blob': 2255 + optional: true 2256 + '@capacitor/preferences': 2257 + optional: true 2258 + '@deno/kv': 2259 + optional: true 2260 + '@netlify/blobs': 2261 + optional: true 2262 + '@planetscale/database': 2263 + optional: true 2264 + '@upstash/redis': 2265 + optional: true 2266 + '@vercel/blob': 2267 + optional: true 2268 + '@vercel/functions': 2269 + optional: true 2270 + '@vercel/kv': 2271 + optional: true 2272 + aws4fetch: 2273 + optional: true 2274 + db0: 2275 + optional: true 2276 + idb-keyval: 2277 + optional: true 2278 + ioredis: 2279 + optional: true 2280 + uploadthing: 2281 + optional: true 2282 + 2283 + util-deprecate@1.0.2: 2284 + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2285 + 2286 + uuid@11.1.0: 2287 + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} 2288 + hasBin: true 2289 + 2290 + vfile-location@5.0.3: 2291 + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} 2292 + 2293 + vfile-message@4.0.3: 2294 + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} 2295 + 2296 + vfile@6.0.3: 2297 + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} 2298 + 2299 + vite@6.4.1: 2300 + resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} 2301 + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 2302 + hasBin: true 2303 + peerDependencies: 2304 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 2305 + jiti: '>=1.21.0' 2306 + less: '*' 2307 + lightningcss: ^1.21.0 2308 + sass: '*' 2309 + sass-embedded: '*' 2310 + stylus: '*' 2311 + sugarss: '*' 2312 + terser: ^5.16.0 2313 + tsx: ^4.8.1 2314 + yaml: ^2.4.2 2315 + peerDependenciesMeta: 2316 + '@types/node': 2317 + optional: true 2318 + jiti: 2319 + optional: true 2320 + less: 2321 + optional: true 2322 + lightningcss: 2323 + optional: true 2324 + sass: 2325 + optional: true 2326 + sass-embedded: 2327 + optional: true 2328 + stylus: 2329 + optional: true 2330 + sugarss: 2331 + optional: true 2332 + terser: 2333 + optional: true 2334 + tsx: 2335 + optional: true 2336 + yaml: 2337 + optional: true 2338 + 2339 + vitefu@1.1.1: 2340 + resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==} 2341 + peerDependencies: 2342 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 2343 + peerDependenciesMeta: 2344 + vite: 2345 + optional: true 2346 + 2347 + vscode-jsonrpc@8.2.0: 2348 + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} 2349 + engines: {node: '>=14.0.0'} 2350 + 2351 + vscode-languageserver-protocol@3.17.5: 2352 + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} 2353 + 2354 + vscode-languageserver-textdocument@1.0.12: 2355 + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} 2356 + 2357 + vscode-languageserver-types@3.17.5: 2358 + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} 2359 + 2360 + vscode-languageserver@9.0.1: 2361 + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} 2362 + hasBin: true 2363 + 2364 + vscode-uri@3.1.0: 2365 + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} 2366 + 2367 + web-namespaces@2.0.1: 2368 + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} 2369 + 2370 + which-pm-runs@1.1.0: 2371 + resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} 2372 + engines: {node: '>=4'} 2373 + 2374 + widest-line@5.0.0: 2375 + resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} 2376 + engines: {node: '>=18'} 2377 + 2378 + wrap-ansi@9.0.2: 2379 + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} 2380 + engines: {node: '>=18'} 2381 + 2382 + xxhash-wasm@1.1.0: 2383 + resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} 2384 + 2385 + yargs-parser@21.1.1: 2386 + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 2387 + engines: {node: '>=12'} 2388 + 2389 + yocto-queue@1.2.2: 2390 + resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} 2391 + engines: {node: '>=12.20'} 2392 + 2393 + yocto-spinner@0.2.3: 2394 + resolution: {integrity: sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==} 2395 + engines: {node: '>=18.19'} 2396 + 2397 + yoctocolors@2.1.2: 2398 + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} 2399 + engines: {node: '>=18'} 2400 + 2401 + zod-to-json-schema@3.25.1: 2402 + resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==} 2403 + peerDependencies: 2404 + zod: ^3.25 || ^4 2405 + 2406 + zod-to-ts@1.2.0: 2407 + resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} 2408 + peerDependencies: 2409 + typescript: ^4.9.4 || ^5.0.2 2410 + zod: ^3 2411 + 2412 + zod@3.25.76: 2413 + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} 2414 + 2415 + zwitch@2.0.4: 2416 + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} 2417 + 2418 + snapshots: 2419 + 2420 + '@antfu/install-pkg@1.1.0': 2421 + dependencies: 2422 + package-manager-detector: 1.6.0 2423 + tinyexec: 1.0.2 2424 + 2425 + '@astrojs/compiler@2.13.1': {} 2426 + 2427 + '@astrojs/internal-helpers@0.7.5': {} 2428 + 2429 + '@astrojs/markdown-remark@6.3.10': 2430 + dependencies: 2431 + '@astrojs/internal-helpers': 0.7.5 2432 + '@astrojs/prism': 3.3.0 2433 + github-slugger: 2.0.0 2434 + hast-util-from-html: 2.0.3 2435 + hast-util-to-text: 4.0.2 2436 + import-meta-resolve: 4.2.0 2437 + js-yaml: 4.1.1 2438 + mdast-util-definitions: 6.0.0 2439 + rehype-raw: 7.0.0 2440 + rehype-stringify: 10.0.1 2441 + remark-gfm: 4.0.1 2442 + remark-parse: 11.0.0 2443 + remark-rehype: 11.1.2 2444 + remark-smartypants: 3.0.2 2445 + shiki: 3.22.0 2446 + smol-toml: 1.6.0 2447 + unified: 11.0.5 2448 + unist-util-remove-position: 5.0.0 2449 + unist-util-visit: 5.1.0 2450 + unist-util-visit-parents: 6.0.2 2451 + vfile: 6.0.3 2452 + transitivePeerDependencies: 2453 + - supports-color 2454 + 2455 + '@astrojs/mdx@4.3.13(astro@5.17.3(rollup@4.57.1)(typescript@5.9.3))': 2456 + dependencies: 2457 + '@astrojs/markdown-remark': 6.3.10 2458 + '@mdx-js/mdx': 3.1.1 2459 + acorn: 8.16.0 2460 + astro: 5.17.3(rollup@4.57.1)(typescript@5.9.3) 2461 + es-module-lexer: 1.7.0 2462 + estree-util-visit: 2.0.0 2463 + hast-util-to-html: 9.0.5 2464 + piccolore: 0.1.3 2465 + rehype-raw: 7.0.0 2466 + remark-gfm: 4.0.1 2467 + remark-smartypants: 3.0.2 2468 + source-map: 0.7.6 2469 + unist-util-visit: 5.1.0 2470 + vfile: 6.0.3 2471 + transitivePeerDependencies: 2472 + - supports-color 2473 + 2474 + '@astrojs/prism@3.3.0': 2475 + dependencies: 2476 + prismjs: 1.30.0 2477 + 2478 + '@astrojs/sitemap@3.7.0': 2479 + dependencies: 2480 + sitemap: 8.0.2 2481 + stream-replace-string: 2.0.0 2482 + zod: 3.25.76 2483 + 2484 + '@astrojs/starlight@0.37.6(astro@5.17.3(rollup@4.57.1)(typescript@5.9.3))': 2485 + dependencies: 2486 + '@astrojs/markdown-remark': 6.3.10 2487 + '@astrojs/mdx': 4.3.13(astro@5.17.3(rollup@4.57.1)(typescript@5.9.3)) 2488 + '@astrojs/sitemap': 3.7.0 2489 + '@pagefind/default-ui': 1.4.0 2490 + '@types/hast': 3.0.4 2491 + '@types/js-yaml': 4.0.9 2492 + '@types/mdast': 4.0.4 2493 + astro: 5.17.3(rollup@4.57.1)(typescript@5.9.3) 2494 + astro-expressive-code: 0.41.6(astro@5.17.3(rollup@4.57.1)(typescript@5.9.3)) 2495 + bcp-47: 2.1.0 2496 + hast-util-from-html: 2.0.3 2497 + hast-util-select: 6.0.4 2498 + hast-util-to-string: 3.0.1 2499 + hastscript: 9.0.1 2500 + i18next: 23.16.8 2501 + js-yaml: 4.1.1 2502 + klona: 2.0.6 2503 + magic-string: 0.30.21 2504 + mdast-util-directive: 3.1.0 2505 + mdast-util-to-markdown: 2.1.2 2506 + mdast-util-to-string: 4.0.0 2507 + pagefind: 1.4.0 2508 + rehype: 13.0.2 2509 + rehype-format: 5.0.1 2510 + remark-directive: 3.0.1 2511 + ultrahtml: 1.6.0 2512 + unified: 11.0.5 2513 + unist-util-visit: 5.1.0 2514 + vfile: 6.0.3 2515 + transitivePeerDependencies: 2516 + - supports-color 2517 + 2518 + '@astrojs/telemetry@3.3.0': 2519 + dependencies: 2520 + ci-info: 4.4.0 2521 + debug: 4.4.3 2522 + dlv: 1.1.3 2523 + dset: 3.1.4 2524 + is-docker: 3.0.0 2525 + is-wsl: 3.1.1 2526 + which-pm-runs: 1.1.0 2527 + transitivePeerDependencies: 2528 + - supports-color 2529 + 2530 + '@babel/helper-string-parser@7.27.1': {} 2531 + 2532 + '@babel/helper-validator-identifier@7.28.5': {} 2533 + 2534 + '@babel/parser@7.29.0': 2535 + dependencies: 2536 + '@babel/types': 7.29.0 2537 + 2538 + '@babel/runtime@7.28.6': {} 2539 + 2540 + '@babel/types@7.29.0': 2541 + dependencies: 2542 + '@babel/helper-string-parser': 7.27.1 2543 + '@babel/helper-validator-identifier': 7.28.5 2544 + 2545 + '@braintree/sanitize-url@7.1.2': {} 2546 + 2547 + '@capsizecss/unpack@4.0.0': 2548 + dependencies: 2549 + fontkitten: 1.0.2 2550 + 2551 + '@catppuccin/starlight@1.1.1(@astrojs/starlight@0.37.6(astro@5.17.3(rollup@4.57.1)(typescript@5.9.3)))(astro@5.17.3(rollup@4.57.1)(typescript@5.9.3))': 2552 + dependencies: 2553 + '@astrojs/starlight': 0.37.6(astro@5.17.3(rollup@4.57.1)(typescript@5.9.3)) 2554 + astro: 5.17.3(rollup@4.57.1)(typescript@5.9.3) 2555 + 2556 + '@chevrotain/cst-dts-gen@11.1.1': 2557 + dependencies: 2558 + '@chevrotain/gast': 11.1.1 2559 + '@chevrotain/types': 11.1.1 2560 + lodash-es: 4.17.23 2561 + 2562 + '@chevrotain/gast@11.1.1': 2563 + dependencies: 2564 + '@chevrotain/types': 11.1.1 2565 + lodash-es: 4.17.23 2566 + 2567 + '@chevrotain/regexp-to-ast@11.1.1': {} 2568 + 2569 + '@chevrotain/types@11.1.1': {} 2570 + 2571 + '@chevrotain/utils@11.1.1': {} 2572 + 2573 + '@ctrl/tinycolor@4.2.0': {} 2574 + 2575 + '@emnapi/runtime@1.8.1': 2576 + dependencies: 2577 + tslib: 2.8.1 2578 + optional: true 2579 + 2580 + '@esbuild/aix-ppc64@0.25.12': 2581 + optional: true 2582 + 2583 + '@esbuild/aix-ppc64@0.27.3': 2584 + optional: true 2585 + 2586 + '@esbuild/android-arm64@0.25.12': 2587 + optional: true 2588 + 2589 + '@esbuild/android-arm64@0.27.3': 2590 + optional: true 2591 + 2592 + '@esbuild/android-arm@0.25.12': 2593 + optional: true 2594 + 2595 + '@esbuild/android-arm@0.27.3': 2596 + optional: true 2597 + 2598 + '@esbuild/android-x64@0.25.12': 2599 + optional: true 2600 + 2601 + '@esbuild/android-x64@0.27.3': 2602 + optional: true 2603 + 2604 + '@esbuild/darwin-arm64@0.25.12': 2605 + optional: true 2606 + 2607 + '@esbuild/darwin-arm64@0.27.3': 2608 + optional: true 2609 + 2610 + '@esbuild/darwin-x64@0.25.12': 2611 + optional: true 2612 + 2613 + '@esbuild/darwin-x64@0.27.3': 2614 + optional: true 2615 + 2616 + '@esbuild/freebsd-arm64@0.25.12': 2617 + optional: true 2618 + 2619 + '@esbuild/freebsd-arm64@0.27.3': 2620 + optional: true 2621 + 2622 + '@esbuild/freebsd-x64@0.25.12': 2623 + optional: true 2624 + 2625 + '@esbuild/freebsd-x64@0.27.3': 2626 + optional: true 2627 + 2628 + '@esbuild/linux-arm64@0.25.12': 2629 + optional: true 2630 + 2631 + '@esbuild/linux-arm64@0.27.3': 2632 + optional: true 2633 + 2634 + '@esbuild/linux-arm@0.25.12': 2635 + optional: true 2636 + 2637 + '@esbuild/linux-arm@0.27.3': 2638 + optional: true 2639 + 2640 + '@esbuild/linux-ia32@0.25.12': 2641 + optional: true 2642 + 2643 + '@esbuild/linux-ia32@0.27.3': 2644 + optional: true 2645 + 2646 + '@esbuild/linux-loong64@0.25.12': 2647 + optional: true 2648 + 2649 + '@esbuild/linux-loong64@0.27.3': 2650 + optional: true 2651 + 2652 + '@esbuild/linux-mips64el@0.25.12': 2653 + optional: true 2654 + 2655 + '@esbuild/linux-mips64el@0.27.3': 2656 + optional: true 2657 + 2658 + '@esbuild/linux-ppc64@0.25.12': 2659 + optional: true 2660 + 2661 + '@esbuild/linux-ppc64@0.27.3': 2662 + optional: true 2663 + 2664 + '@esbuild/linux-riscv64@0.25.12': 2665 + optional: true 2666 + 2667 + '@esbuild/linux-riscv64@0.27.3': 2668 + optional: true 2669 + 2670 + '@esbuild/linux-s390x@0.25.12': 2671 + optional: true 2672 + 2673 + '@esbuild/linux-s390x@0.27.3': 2674 + optional: true 2675 + 2676 + '@esbuild/linux-x64@0.25.12': 2677 + optional: true 2678 + 2679 + '@esbuild/linux-x64@0.27.3': 2680 + optional: true 2681 + 2682 + '@esbuild/netbsd-arm64@0.25.12': 2683 + optional: true 2684 + 2685 + '@esbuild/netbsd-arm64@0.27.3': 2686 + optional: true 2687 + 2688 + '@esbuild/netbsd-x64@0.25.12': 2689 + optional: true 2690 + 2691 + '@esbuild/netbsd-x64@0.27.3': 2692 + optional: true 2693 + 2694 + '@esbuild/openbsd-arm64@0.25.12': 2695 + optional: true 2696 + 2697 + '@esbuild/openbsd-arm64@0.27.3': 2698 + optional: true 2699 + 2700 + '@esbuild/openbsd-x64@0.25.12': 2701 + optional: true 2702 + 2703 + '@esbuild/openbsd-x64@0.27.3': 2704 + optional: true 2705 + 2706 + '@esbuild/openharmony-arm64@0.25.12': 2707 + optional: true 2708 + 2709 + '@esbuild/openharmony-arm64@0.27.3': 2710 + optional: true 2711 + 2712 + '@esbuild/sunos-x64@0.25.12': 2713 + optional: true 2714 + 2715 + '@esbuild/sunos-x64@0.27.3': 2716 + optional: true 2717 + 2718 + '@esbuild/win32-arm64@0.25.12': 2719 + optional: true 2720 + 2721 + '@esbuild/win32-arm64@0.27.3': 2722 + optional: true 2723 + 2724 + '@esbuild/win32-ia32@0.25.12': 2725 + optional: true 2726 + 2727 + '@esbuild/win32-ia32@0.27.3': 2728 + optional: true 2729 + 2730 + '@esbuild/win32-x64@0.25.12': 2731 + optional: true 2732 + 2733 + '@esbuild/win32-x64@0.27.3': 2734 + optional: true 2735 + 2736 + '@expressive-code/core@0.41.6': 2737 + dependencies: 2738 + '@ctrl/tinycolor': 4.2.0 2739 + hast-util-select: 6.0.4 2740 + hast-util-to-html: 9.0.5 2741 + hast-util-to-text: 4.0.2 2742 + hastscript: 9.0.1 2743 + postcss: 8.5.6 2744 + postcss-nested: 6.2.0(postcss@8.5.6) 2745 + unist-util-visit: 5.1.0 2746 + unist-util-visit-parents: 6.0.2 2747 + 2748 + '@expressive-code/plugin-frames@0.41.6': 2749 + dependencies: 2750 + '@expressive-code/core': 0.41.6 2751 + 2752 + '@expressive-code/plugin-shiki@0.41.6': 2753 + dependencies: 2754 + '@expressive-code/core': 0.41.6 2755 + shiki: 3.22.0 2756 + 2757 + '@expressive-code/plugin-text-markers@0.41.6': 2758 + dependencies: 2759 + '@expressive-code/core': 0.41.6 2760 + 2761 + '@iconify/types@2.0.0': {} 2762 + 2763 + '@iconify/utils@3.1.0': 2764 + dependencies: 2765 + '@antfu/install-pkg': 1.1.0 2766 + '@iconify/types': 2.0.0 2767 + mlly: 1.8.0 2768 + 2769 + '@img/colour@1.0.0': {} 2770 + 2771 + '@img/sharp-darwin-arm64@0.34.5': 2772 + optionalDependencies: 2773 + '@img/sharp-libvips-darwin-arm64': 1.2.4 2774 + optional: true 2775 + 2776 + '@img/sharp-darwin-x64@0.34.5': 2777 + optionalDependencies: 2778 + '@img/sharp-libvips-darwin-x64': 1.2.4 2779 + optional: true 2780 + 2781 + '@img/sharp-libvips-darwin-arm64@1.2.4': 2782 + optional: true 2783 + 2784 + '@img/sharp-libvips-darwin-x64@1.2.4': 2785 + optional: true 2786 + 2787 + '@img/sharp-libvips-linux-arm64@1.2.4': 2788 + optional: true 2789 + 2790 + '@img/sharp-libvips-linux-arm@1.2.4': 2791 + optional: true 2792 + 2793 + '@img/sharp-libvips-linux-ppc64@1.2.4': 2794 + optional: true 2795 + 2796 + '@img/sharp-libvips-linux-riscv64@1.2.4': 2797 + optional: true 2798 + 2799 + '@img/sharp-libvips-linux-s390x@1.2.4': 2800 + optional: true 2801 + 2802 + '@img/sharp-libvips-linux-x64@1.2.4': 2803 + optional: true 2804 + 2805 + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': 2806 + optional: true 2807 + 2808 + '@img/sharp-libvips-linuxmusl-x64@1.2.4': 2809 + optional: true 2810 + 2811 + '@img/sharp-linux-arm64@0.34.5': 2812 + optionalDependencies: 2813 + '@img/sharp-libvips-linux-arm64': 1.2.4 2814 + optional: true 2815 + 2816 + '@img/sharp-linux-arm@0.34.5': 2817 + optionalDependencies: 2818 + '@img/sharp-libvips-linux-arm': 1.2.4 2819 + optional: true 2820 + 2821 + '@img/sharp-linux-ppc64@0.34.5': 2822 + optionalDependencies: 2823 + '@img/sharp-libvips-linux-ppc64': 1.2.4 2824 + optional: true 2825 + 2826 + '@img/sharp-linux-riscv64@0.34.5': 2827 + optionalDependencies: 2828 + '@img/sharp-libvips-linux-riscv64': 1.2.4 2829 + optional: true 2830 + 2831 + '@img/sharp-linux-s390x@0.34.5': 2832 + optionalDependencies: 2833 + '@img/sharp-libvips-linux-s390x': 1.2.4 2834 + optional: true 2835 + 2836 + '@img/sharp-linux-x64@0.34.5': 2837 + optionalDependencies: 2838 + '@img/sharp-libvips-linux-x64': 1.2.4 2839 + optional: true 2840 + 2841 + '@img/sharp-linuxmusl-arm64@0.34.5': 2842 + optionalDependencies: 2843 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 2844 + optional: true 2845 + 2846 + '@img/sharp-linuxmusl-x64@0.34.5': 2847 + optionalDependencies: 2848 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 2849 + optional: true 2850 + 2851 + '@img/sharp-wasm32@0.34.5': 2852 + dependencies: 2853 + '@emnapi/runtime': 1.8.1 2854 + optional: true 2855 + 2856 + '@img/sharp-win32-arm64@0.34.5': 2857 + optional: true 2858 + 2859 + '@img/sharp-win32-ia32@0.34.5': 2860 + optional: true 2861 + 2862 + '@img/sharp-win32-x64@0.34.5': 2863 + optional: true 2864 + 2865 + '@jridgewell/sourcemap-codec@1.5.5': {} 2866 + 2867 + '@mdx-js/mdx@3.1.1': 2868 + dependencies: 2869 + '@types/estree': 1.0.8 2870 + '@types/estree-jsx': 1.0.5 2871 + '@types/hast': 3.0.4 2872 + '@types/mdx': 2.0.13 2873 + acorn: 8.16.0 2874 + collapse-white-space: 2.1.0 2875 + devlop: 1.1.0 2876 + estree-util-is-identifier-name: 3.0.0 2877 + estree-util-scope: 1.0.0 2878 + estree-walker: 3.0.3 2879 + hast-util-to-jsx-runtime: 2.3.6 2880 + markdown-extensions: 2.0.0 2881 + recma-build-jsx: 1.0.0 2882 + recma-jsx: 1.0.1(acorn@8.16.0) 2883 + recma-stringify: 1.0.0 2884 + rehype-recma: 1.0.0 2885 + remark-mdx: 3.1.1 2886 + remark-parse: 11.0.0 2887 + remark-rehype: 11.1.2 2888 + source-map: 0.7.6 2889 + unified: 11.0.5 2890 + unist-util-position-from-estree: 2.0.0 2891 + unist-util-stringify-position: 4.0.0 2892 + unist-util-visit: 5.1.0 2893 + vfile: 6.0.3 2894 + transitivePeerDependencies: 2895 + - supports-color 2896 + 2897 + '@mermaid-js/parser@1.0.0': 2898 + dependencies: 2899 + langium: 4.2.1 2900 + 2901 + '@oslojs/encoding@1.1.0': {} 2902 + 2903 + '@pagefind/darwin-arm64@1.4.0': 2904 + optional: true 2905 + 2906 + '@pagefind/darwin-x64@1.4.0': 2907 + optional: true 2908 + 2909 + '@pagefind/default-ui@1.4.0': {} 2910 + 2911 + '@pagefind/freebsd-x64@1.4.0': 2912 + optional: true 2913 + 2914 + '@pagefind/linux-arm64@1.4.0': 2915 + optional: true 2916 + 2917 + '@pagefind/linux-x64@1.4.0': 2918 + optional: true 2919 + 2920 + '@pagefind/windows-x64@1.4.0': 2921 + optional: true 2922 + 2923 + '@rollup/pluginutils@5.3.0(rollup@4.57.1)': 2924 + dependencies: 2925 + '@types/estree': 1.0.8 2926 + estree-walker: 2.0.2 2927 + picomatch: 4.0.3 2928 + optionalDependencies: 2929 + rollup: 4.57.1 2930 + 2931 + '@rollup/rollup-android-arm-eabi@4.57.1': 2932 + optional: true 2933 + 2934 + '@rollup/rollup-android-arm64@4.57.1': 2935 + optional: true 2936 + 2937 + '@rollup/rollup-darwin-arm64@4.57.1': 2938 + optional: true 2939 + 2940 + '@rollup/rollup-darwin-x64@4.57.1': 2941 + optional: true 2942 + 2943 + '@rollup/rollup-freebsd-arm64@4.57.1': 2944 + optional: true 2945 + 2946 + '@rollup/rollup-freebsd-x64@4.57.1': 2947 + optional: true 2948 + 2949 + '@rollup/rollup-linux-arm-gnueabihf@4.57.1': 2950 + optional: true 2951 + 2952 + '@rollup/rollup-linux-arm-musleabihf@4.57.1': 2953 + optional: true 2954 + 2955 + '@rollup/rollup-linux-arm64-gnu@4.57.1': 2956 + optional: true 2957 + 2958 + '@rollup/rollup-linux-arm64-musl@4.57.1': 2959 + optional: true 2960 + 2961 + '@rollup/rollup-linux-loong64-gnu@4.57.1': 2962 + optional: true 2963 + 2964 + '@rollup/rollup-linux-loong64-musl@4.57.1': 2965 + optional: true 2966 + 2967 + '@rollup/rollup-linux-ppc64-gnu@4.57.1': 2968 + optional: true 2969 + 2970 + '@rollup/rollup-linux-ppc64-musl@4.57.1': 2971 + optional: true 2972 + 2973 + '@rollup/rollup-linux-riscv64-gnu@4.57.1': 2974 + optional: true 2975 + 2976 + '@rollup/rollup-linux-riscv64-musl@4.57.1': 2977 + optional: true 2978 + 2979 + '@rollup/rollup-linux-s390x-gnu@4.57.1': 2980 + optional: true 2981 + 2982 + '@rollup/rollup-linux-x64-gnu@4.57.1': 2983 + optional: true 2984 + 2985 + '@rollup/rollup-linux-x64-musl@4.57.1': 2986 + optional: true 2987 + 2988 + '@rollup/rollup-openbsd-x64@4.57.1': 2989 + optional: true 2990 + 2991 + '@rollup/rollup-openharmony-arm64@4.57.1': 2992 + optional: true 2993 + 2994 + '@rollup/rollup-win32-arm64-msvc@4.57.1': 2995 + optional: true 2996 + 2997 + '@rollup/rollup-win32-ia32-msvc@4.57.1': 2998 + optional: true 2999 + 3000 + '@rollup/rollup-win32-x64-gnu@4.57.1': 3001 + optional: true 3002 + 3003 + '@rollup/rollup-win32-x64-msvc@4.57.1': 3004 + optional: true 3005 + 3006 + '@shikijs/core@3.22.0': 3007 + dependencies: 3008 + '@shikijs/types': 3.22.0 3009 + '@shikijs/vscode-textmate': 10.0.2 3010 + '@types/hast': 3.0.4 3011 + hast-util-to-html: 9.0.5 3012 + 3013 + '@shikijs/engine-javascript@3.22.0': 3014 + dependencies: 3015 + '@shikijs/types': 3.22.0 3016 + '@shikijs/vscode-textmate': 10.0.2 3017 + oniguruma-to-es: 4.3.4 3018 + 3019 + '@shikijs/engine-oniguruma@3.22.0': 3020 + dependencies: 3021 + '@shikijs/types': 3.22.0 3022 + '@shikijs/vscode-textmate': 10.0.2 3023 + 3024 + '@shikijs/langs@3.22.0': 3025 + dependencies: 3026 + '@shikijs/types': 3.22.0 3027 + 3028 + '@shikijs/themes@3.22.0': 3029 + dependencies: 3030 + '@shikijs/types': 3.22.0 3031 + 3032 + '@shikijs/types@3.22.0': 3033 + dependencies: 3034 + '@shikijs/vscode-textmate': 10.0.2 3035 + '@types/hast': 3.0.4 3036 + 3037 + '@shikijs/vscode-textmate@10.0.2': {} 3038 + 3039 + '@types/d3-array@3.2.2': {} 3040 + 3041 + '@types/d3-axis@3.0.6': 3042 + dependencies: 3043 + '@types/d3-selection': 3.0.11 3044 + 3045 + '@types/d3-brush@3.0.6': 3046 + dependencies: 3047 + '@types/d3-selection': 3.0.11 3048 + 3049 + '@types/d3-chord@3.0.6': {} 3050 + 3051 + '@types/d3-color@3.1.3': {} 3052 + 3053 + '@types/d3-contour@3.0.6': 3054 + dependencies: 3055 + '@types/d3-array': 3.2.2 3056 + '@types/geojson': 7946.0.16 3057 + 3058 + '@types/d3-delaunay@6.0.4': {} 3059 + 3060 + '@types/d3-dispatch@3.0.7': {} 3061 + 3062 + '@types/d3-drag@3.0.7': 3063 + dependencies: 3064 + '@types/d3-selection': 3.0.11 3065 + 3066 + '@types/d3-dsv@3.0.7': {} 3067 + 3068 + '@types/d3-ease@3.0.2': {} 3069 + 3070 + '@types/d3-fetch@3.0.7': 3071 + dependencies: 3072 + '@types/d3-dsv': 3.0.7 3073 + 3074 + '@types/d3-force@3.0.10': {} 3075 + 3076 + '@types/d3-format@3.0.4': {} 3077 + 3078 + '@types/d3-geo@3.1.0': 3079 + dependencies: 3080 + '@types/geojson': 7946.0.16 3081 + 3082 + '@types/d3-hierarchy@3.1.7': {} 3083 + 3084 + '@types/d3-interpolate@3.0.4': 3085 + dependencies: 3086 + '@types/d3-color': 3.1.3 3087 + 3088 + '@types/d3-path@3.1.1': {} 3089 + 3090 + '@types/d3-polygon@3.0.2': {} 3091 + 3092 + '@types/d3-quadtree@3.0.6': {} 3093 + 3094 + '@types/d3-random@3.0.3': {} 3095 + 3096 + '@types/d3-scale-chromatic@3.1.0': {} 3097 + 3098 + '@types/d3-scale@4.0.9': 3099 + dependencies: 3100 + '@types/d3-time': 3.0.4 3101 + 3102 + '@types/d3-selection@3.0.11': {} 3103 + 3104 + '@types/d3-shape@3.1.8': 3105 + dependencies: 3106 + '@types/d3-path': 3.1.1 3107 + 3108 + '@types/d3-time-format@4.0.3': {} 3109 + 3110 + '@types/d3-time@3.0.4': {} 3111 + 3112 + '@types/d3-timer@3.0.2': {} 3113 + 3114 + '@types/d3-transition@3.0.9': 3115 + dependencies: 3116 + '@types/d3-selection': 3.0.11 3117 + 3118 + '@types/d3-zoom@3.0.8': 3119 + dependencies: 3120 + '@types/d3-interpolate': 3.0.4 3121 + '@types/d3-selection': 3.0.11 3122 + 3123 + '@types/d3@7.4.3': 3124 + dependencies: 3125 + '@types/d3-array': 3.2.2 3126 + '@types/d3-axis': 3.0.6 3127 + '@types/d3-brush': 3.0.6 3128 + '@types/d3-chord': 3.0.6 3129 + '@types/d3-color': 3.1.3 3130 + '@types/d3-contour': 3.0.6 3131 + '@types/d3-delaunay': 6.0.4 3132 + '@types/d3-dispatch': 3.0.7 3133 + '@types/d3-drag': 3.0.7 3134 + '@types/d3-dsv': 3.0.7 3135 + '@types/d3-ease': 3.0.2 3136 + '@types/d3-fetch': 3.0.7 3137 + '@types/d3-force': 3.0.10 3138 + '@types/d3-format': 3.0.4 3139 + '@types/d3-geo': 3.1.0 3140 + '@types/d3-hierarchy': 3.1.7 3141 + '@types/d3-interpolate': 3.0.4 3142 + '@types/d3-path': 3.1.1 3143 + '@types/d3-polygon': 3.0.2 3144 + '@types/d3-quadtree': 3.0.6 3145 + '@types/d3-random': 3.0.3 3146 + '@types/d3-scale': 4.0.9 3147 + '@types/d3-scale-chromatic': 3.1.0 3148 + '@types/d3-selection': 3.0.11 3149 + '@types/d3-shape': 3.1.8 3150 + '@types/d3-time': 3.0.4 3151 + '@types/d3-time-format': 4.0.3 3152 + '@types/d3-timer': 3.0.2 3153 + '@types/d3-transition': 3.0.9 3154 + '@types/d3-zoom': 3.0.8 3155 + 3156 + '@types/debug@4.1.12': 3157 + dependencies: 3158 + '@types/ms': 2.1.0 3159 + 3160 + '@types/estree-jsx@1.0.5': 3161 + dependencies: 3162 + '@types/estree': 1.0.8 3163 + 3164 + '@types/estree@1.0.8': {} 3165 + 3166 + '@types/geojson@7946.0.16': {} 3167 + 3168 + '@types/hast@3.0.4': 3169 + dependencies: 3170 + '@types/unist': 3.0.3 3171 + 3172 + '@types/js-yaml@4.0.9': {} 3173 + 3174 + '@types/mdast@4.0.4': 3175 + dependencies: 3176 + '@types/unist': 3.0.3 3177 + 3178 + '@types/mdx@2.0.13': {} 3179 + 3180 + '@types/ms@2.1.0': {} 3181 + 3182 + '@types/nlcst@2.0.3': 3183 + dependencies: 3184 + '@types/unist': 3.0.3 3185 + 3186 + '@types/node@17.0.45': {} 3187 + 3188 + '@types/sax@1.2.7': 3189 + dependencies: 3190 + '@types/node': 17.0.45 3191 + 3192 + '@types/trusted-types@2.0.7': 3193 + optional: true 3194 + 3195 + '@types/unist@2.0.11': {} 3196 + 3197 + '@types/unist@3.0.3': {} 3198 + 3199 + '@ungap/structured-clone@1.3.0': {} 3200 + 3201 + acorn-jsx@5.3.2(acorn@8.16.0): 3202 + dependencies: 3203 + acorn: 8.16.0 3204 + 3205 + acorn@8.16.0: {} 3206 + 3207 + ansi-align@3.0.1: 3208 + dependencies: 3209 + string-width: 4.2.3 3210 + 3211 + ansi-regex@5.0.1: {} 3212 + 3213 + ansi-regex@6.2.2: {} 3214 + 3215 + ansi-styles@6.2.3: {} 3216 + 3217 + anymatch@3.1.3: 3218 + dependencies: 3219 + normalize-path: 3.0.0 3220 + picomatch: 2.3.1 3221 + 3222 + arg@5.0.2: {} 3223 + 3224 + argparse@2.0.1: {} 3225 + 3226 + aria-query@5.3.2: {} 3227 + 3228 + array-iterate@2.0.1: {} 3229 + 3230 + astring@1.9.0: {} 3231 + 3232 + astro-expressive-code@0.41.6(astro@5.17.3(rollup@4.57.1)(typescript@5.9.3)): 3233 + dependencies: 3234 + astro: 5.17.3(rollup@4.57.1)(typescript@5.9.3) 3235 + rehype-expressive-code: 0.41.6 3236 + 3237 + astro-mermaid@1.3.1(astro@5.17.3(rollup@4.57.1)(typescript@5.9.3))(mermaid@11.12.3): 3238 + dependencies: 3239 + astro: 5.17.3(rollup@4.57.1)(typescript@5.9.3) 3240 + import-meta-resolve: 4.2.0 3241 + mdast-util-to-string: 4.0.0 3242 + mermaid: 11.12.3 3243 + unist-util-visit: 5.1.0 3244 + 3245 + astro@5.17.3(rollup@4.57.1)(typescript@5.9.3): 3246 + dependencies: 3247 + '@astrojs/compiler': 2.13.1 3248 + '@astrojs/internal-helpers': 0.7.5 3249 + '@astrojs/markdown-remark': 6.3.10 3250 + '@astrojs/telemetry': 3.3.0 3251 + '@capsizecss/unpack': 4.0.0 3252 + '@oslojs/encoding': 1.1.0 3253 + '@rollup/pluginutils': 5.3.0(rollup@4.57.1) 3254 + acorn: 8.16.0 3255 + aria-query: 5.3.2 3256 + axobject-query: 4.1.0 3257 + boxen: 8.0.1 3258 + ci-info: 4.4.0 3259 + clsx: 2.1.1 3260 + common-ancestor-path: 1.0.1 3261 + cookie: 1.1.1 3262 + cssesc: 3.0.0 3263 + debug: 4.4.3 3264 + deterministic-object-hash: 2.0.2 3265 + devalue: 5.6.3 3266 + diff: 8.0.3 3267 + dlv: 1.1.3 3268 + dset: 3.1.4 3269 + es-module-lexer: 1.7.0 3270 + esbuild: 0.27.3 3271 + estree-walker: 3.0.3 3272 + flattie: 1.1.1 3273 + fontace: 0.4.1 3274 + github-slugger: 2.0.0 3275 + html-escaper: 3.0.3 3276 + http-cache-semantics: 4.2.0 3277 + import-meta-resolve: 4.2.0 3278 + js-yaml: 4.1.1 3279 + magic-string: 0.30.21 3280 + magicast: 0.5.2 3281 + mrmime: 2.0.1 3282 + neotraverse: 0.6.18 3283 + p-limit: 6.2.0 3284 + p-queue: 8.1.1 3285 + package-manager-detector: 1.6.0 3286 + piccolore: 0.1.3 3287 + picomatch: 4.0.3 3288 + prompts: 2.4.2 3289 + rehype: 13.0.2 3290 + semver: 7.7.4 3291 + shiki: 3.22.0 3292 + smol-toml: 1.6.0 3293 + svgo: 4.0.0 3294 + tinyexec: 1.0.2 3295 + tinyglobby: 0.2.15 3296 + tsconfck: 3.1.6(typescript@5.9.3) 3297 + ultrahtml: 1.6.0 3298 + unifont: 0.7.4 3299 + unist-util-visit: 5.1.0 3300 + unstorage: 1.17.4 3301 + vfile: 6.0.3 3302 + vite: 6.4.1 3303 + vitefu: 1.1.1(vite@6.4.1) 3304 + xxhash-wasm: 1.1.0 3305 + yargs-parser: 21.1.1 3306 + yocto-spinner: 0.2.3 3307 + zod: 3.25.76 3308 + zod-to-json-schema: 3.25.1(zod@3.25.76) 3309 + zod-to-ts: 1.2.0(typescript@5.9.3)(zod@3.25.76) 3310 + optionalDependencies: 3311 + sharp: 0.34.5 3312 + transitivePeerDependencies: 3313 + - '@azure/app-configuration' 3314 + - '@azure/cosmos' 3315 + - '@azure/data-tables' 3316 + - '@azure/identity' 3317 + - '@azure/keyvault-secrets' 3318 + - '@azure/storage-blob' 3319 + - '@capacitor/preferences' 3320 + - '@deno/kv' 3321 + - '@netlify/blobs' 3322 + - '@planetscale/database' 3323 + - '@types/node' 3324 + - '@upstash/redis' 3325 + - '@vercel/blob' 3326 + - '@vercel/functions' 3327 + - '@vercel/kv' 3328 + - aws4fetch 3329 + - db0 3330 + - idb-keyval 3331 + - ioredis 3332 + - jiti 3333 + - less 3334 + - lightningcss 3335 + - rollup 3336 + - sass 3337 + - sass-embedded 3338 + - stylus 3339 + - sugarss 3340 + - supports-color 3341 + - terser 3342 + - tsx 3343 + - typescript 3344 + - uploadthing 3345 + - yaml 3346 + 3347 + axobject-query@4.1.0: {} 3348 + 3349 + bail@2.0.2: {} 3350 + 3351 + base-64@1.0.0: {} 3352 + 3353 + bcp-47-match@2.0.3: {} 3354 + 3355 + bcp-47@2.1.0: 3356 + dependencies: 3357 + is-alphabetical: 2.0.1 3358 + is-alphanumerical: 2.0.1 3359 + is-decimal: 2.0.1 3360 + 3361 + boolbase@1.0.0: {} 3362 + 3363 + boxen@8.0.1: 3364 + dependencies: 3365 + ansi-align: 3.0.1 3366 + camelcase: 8.0.0 3367 + chalk: 5.6.2 3368 + cli-boxes: 3.0.0 3369 + string-width: 7.2.0 3370 + type-fest: 4.41.0 3371 + widest-line: 5.0.0 3372 + wrap-ansi: 9.0.2 3373 + 3374 + camelcase@8.0.0: {} 3375 + 3376 + ccount@2.0.1: {} 3377 + 3378 + chalk@5.6.2: {} 3379 + 3380 + character-entities-html4@2.1.0: {} 3381 + 3382 + character-entities-legacy@3.0.0: {} 3383 + 3384 + character-entities@2.0.2: {} 3385 + 3386 + character-reference-invalid@2.0.1: {} 3387 + 3388 + chevrotain-allstar@0.3.1(chevrotain@11.1.1): 3389 + dependencies: 3390 + chevrotain: 11.1.1 3391 + lodash-es: 4.17.23 3392 + 3393 + chevrotain@11.1.1: 3394 + dependencies: 3395 + '@chevrotain/cst-dts-gen': 11.1.1 3396 + '@chevrotain/gast': 11.1.1 3397 + '@chevrotain/regexp-to-ast': 11.1.1 3398 + '@chevrotain/types': 11.1.1 3399 + '@chevrotain/utils': 11.1.1 3400 + lodash-es: 4.17.23 3401 + 3402 + chokidar@5.0.0: 3403 + dependencies: 3404 + readdirp: 5.0.0 3405 + 3406 + ci-info@4.4.0: {} 3407 + 3408 + cli-boxes@3.0.0: {} 3409 + 3410 + clsx@2.1.1: {} 3411 + 3412 + collapse-white-space@2.1.0: {} 3413 + 3414 + comma-separated-tokens@2.0.3: {} 3415 + 3416 + commander@11.1.0: {} 3417 + 3418 + commander@7.2.0: {} 3419 + 3420 + commander@8.3.0: {} 3421 + 3422 + common-ancestor-path@1.0.1: {} 3423 + 3424 + confbox@0.1.8: {} 3425 + 3426 + cookie-es@1.2.2: {} 3427 + 3428 + cookie@1.1.1: {} 3429 + 3430 + cose-base@1.0.3: 3431 + dependencies: 3432 + layout-base: 1.0.2 3433 + 3434 + cose-base@2.2.0: 3435 + dependencies: 3436 + layout-base: 2.0.1 3437 + 3438 + crossws@0.3.5: 3439 + dependencies: 3440 + uncrypto: 0.1.3 3441 + 3442 + css-select@5.2.2: 3443 + dependencies: 3444 + boolbase: 1.0.0 3445 + css-what: 6.2.2 3446 + domhandler: 5.0.3 3447 + domutils: 3.2.2 3448 + nth-check: 2.1.1 3449 + 3450 + css-selector-parser@3.3.0: {} 3451 + 3452 + css-tree@2.2.1: 3453 + dependencies: 3454 + mdn-data: 2.0.28 3455 + source-map-js: 1.2.1 3456 + 3457 + css-tree@3.1.0: 3458 + dependencies: 3459 + mdn-data: 2.12.2 3460 + source-map-js: 1.2.1 3461 + 3462 + css-what@6.2.2: {} 3463 + 3464 + cssesc@3.0.0: {} 3465 + 3466 + csso@5.0.5: 3467 + dependencies: 3468 + css-tree: 2.2.1 3469 + 3470 + cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): 3471 + dependencies: 3472 + cose-base: 1.0.3 3473 + cytoscape: 3.33.1 3474 + 3475 + cytoscape-fcose@2.2.0(cytoscape@3.33.1): 3476 + dependencies: 3477 + cose-base: 2.2.0 3478 + cytoscape: 3.33.1 3479 + 3480 + cytoscape@3.33.1: {} 3481 + 3482 + d3-array@2.12.1: 3483 + dependencies: 3484 + internmap: 1.0.1 3485 + 3486 + d3-array@3.2.4: 3487 + dependencies: 3488 + internmap: 2.0.3 3489 + 3490 + d3-axis@3.0.0: {} 3491 + 3492 + d3-brush@3.0.0: 3493 + dependencies: 3494 + d3-dispatch: 3.0.1 3495 + d3-drag: 3.0.0 3496 + d3-interpolate: 3.0.1 3497 + d3-selection: 3.0.0 3498 + d3-transition: 3.0.1(d3-selection@3.0.0) 3499 + 3500 + d3-chord@3.0.1: 3501 + dependencies: 3502 + d3-path: 3.1.0 3503 + 3504 + d3-color@3.1.0: {} 3505 + 3506 + d3-contour@4.0.2: 3507 + dependencies: 3508 + d3-array: 3.2.4 3509 + 3510 + d3-delaunay@6.0.4: 3511 + dependencies: 3512 + delaunator: 5.0.1 3513 + 3514 + d3-dispatch@3.0.1: {} 3515 + 3516 + d3-drag@3.0.0: 3517 + dependencies: 3518 + d3-dispatch: 3.0.1 3519 + d3-selection: 3.0.0 3520 + 3521 + d3-dsv@3.0.1: 3522 + dependencies: 3523 + commander: 7.2.0 3524 + iconv-lite: 0.6.3 3525 + rw: 1.3.3 3526 + 3527 + d3-ease@3.0.1: {} 3528 + 3529 + d3-fetch@3.0.1: 3530 + dependencies: 3531 + d3-dsv: 3.0.1 3532 + 3533 + d3-force@3.0.0: 3534 + dependencies: 3535 + d3-dispatch: 3.0.1 3536 + d3-quadtree: 3.0.1 3537 + d3-timer: 3.0.1 3538 + 3539 + d3-format@3.1.2: {} 3540 + 3541 + d3-geo@3.1.1: 3542 + dependencies: 3543 + d3-array: 3.2.4 3544 + 3545 + d3-hierarchy@3.1.2: {} 3546 + 3547 + d3-interpolate@3.0.1: 3548 + dependencies: 3549 + d3-color: 3.1.0 3550 + 3551 + d3-path@1.0.9: {} 3552 + 3553 + d3-path@3.1.0: {} 3554 + 3555 + d3-polygon@3.0.1: {} 3556 + 3557 + d3-quadtree@3.0.1: {} 3558 + 3559 + d3-random@3.0.1: {} 3560 + 3561 + d3-sankey@0.12.3: 3562 + dependencies: 3563 + d3-array: 2.12.1 3564 + d3-shape: 1.3.7 3565 + 3566 + d3-scale-chromatic@3.1.0: 3567 + dependencies: 3568 + d3-color: 3.1.0 3569 + d3-interpolate: 3.0.1 3570 + 3571 + d3-scale@4.0.2: 3572 + dependencies: 3573 + d3-array: 3.2.4 3574 + d3-format: 3.1.2 3575 + d3-interpolate: 3.0.1 3576 + d3-time: 3.1.0 3577 + d3-time-format: 4.1.0 3578 + 3579 + d3-selection@3.0.0: {} 3580 + 3581 + d3-shape@1.3.7: 3582 + dependencies: 3583 + d3-path: 1.0.9 3584 + 3585 + d3-shape@3.2.0: 3586 + dependencies: 3587 + d3-path: 3.1.0 3588 + 3589 + d3-time-format@4.1.0: 3590 + dependencies: 3591 + d3-time: 3.1.0 3592 + 3593 + d3-time@3.1.0: 3594 + dependencies: 3595 + d3-array: 3.2.4 3596 + 3597 + d3-timer@3.0.1: {} 3598 + 3599 + d3-transition@3.0.1(d3-selection@3.0.0): 3600 + dependencies: 3601 + d3-color: 3.1.0 3602 + d3-dispatch: 3.0.1 3603 + d3-ease: 3.0.1 3604 + d3-interpolate: 3.0.1 3605 + d3-selection: 3.0.0 3606 + d3-timer: 3.0.1 3607 + 3608 + d3-zoom@3.0.0: 3609 + dependencies: 3610 + d3-dispatch: 3.0.1 3611 + d3-drag: 3.0.0 3612 + d3-interpolate: 3.0.1 3613 + d3-selection: 3.0.0 3614 + d3-transition: 3.0.1(d3-selection@3.0.0) 3615 + 3616 + d3@7.9.0: 3617 + dependencies: 3618 + d3-array: 3.2.4 3619 + d3-axis: 3.0.0 3620 + d3-brush: 3.0.0 3621 + d3-chord: 3.0.1 3622 + d3-color: 3.1.0 3623 + d3-contour: 4.0.2 3624 + d3-delaunay: 6.0.4 3625 + d3-dispatch: 3.0.1 3626 + d3-drag: 3.0.0 3627 + d3-dsv: 3.0.1 3628 + d3-ease: 3.0.1 3629 + d3-fetch: 3.0.1 3630 + d3-force: 3.0.0 3631 + d3-format: 3.1.2 3632 + d3-geo: 3.1.1 3633 + d3-hierarchy: 3.1.2 3634 + d3-interpolate: 3.0.1 3635 + d3-path: 3.1.0 3636 + d3-polygon: 3.0.1 3637 + d3-quadtree: 3.0.1 3638 + d3-random: 3.0.1 3639 + d3-scale: 4.0.2 3640 + d3-scale-chromatic: 3.1.0 3641 + d3-selection: 3.0.0 3642 + d3-shape: 3.2.0 3643 + d3-time: 3.1.0 3644 + d3-time-format: 4.1.0 3645 + d3-timer: 3.0.1 3646 + d3-transition: 3.0.1(d3-selection@3.0.0) 3647 + d3-zoom: 3.0.0 3648 + 3649 + dagre-d3-es@7.0.13: 3650 + dependencies: 3651 + d3: 7.9.0 3652 + lodash-es: 4.17.23 3653 + 3654 + dayjs@1.11.19: {} 3655 + 3656 + debug@4.4.3: 3657 + dependencies: 3658 + ms: 2.1.3 3659 + 3660 + decode-named-character-reference@1.3.0: 3661 + dependencies: 3662 + character-entities: 2.0.2 3663 + 3664 + defu@6.1.4: {} 3665 + 3666 + delaunator@5.0.1: 3667 + dependencies: 3668 + robust-predicates: 3.0.2 3669 + 3670 + dequal@2.0.3: {} 3671 + 3672 + destr@2.0.5: {} 3673 + 3674 + detect-libc@2.1.2: {} 3675 + 3676 + deterministic-object-hash@2.0.2: 3677 + dependencies: 3678 + base-64: 1.0.0 3679 + 3680 + devalue@5.6.3: {} 3681 + 3682 + devlop@1.1.0: 3683 + dependencies: 3684 + dequal: 2.0.3 3685 + 3686 + diff@8.0.3: {} 3687 + 3688 + direction@2.0.1: {} 3689 + 3690 + dlv@1.1.3: {} 3691 + 3692 + dom-serializer@2.0.0: 3693 + dependencies: 3694 + domelementtype: 2.3.0 3695 + domhandler: 5.0.3 3696 + entities: 4.5.0 3697 + 3698 + domelementtype@2.3.0: {} 3699 + 3700 + domhandler@5.0.3: 3701 + dependencies: 3702 + domelementtype: 2.3.0 3703 + 3704 + dompurify@3.3.1: 3705 + optionalDependencies: 3706 + '@types/trusted-types': 2.0.7 3707 + 3708 + domutils@3.2.2: 3709 + dependencies: 3710 + dom-serializer: 2.0.0 3711 + domelementtype: 2.3.0 3712 + domhandler: 5.0.3 3713 + 3714 + dset@3.1.4: {} 3715 + 3716 + emoji-regex@10.6.0: {} 3717 + 3718 + emoji-regex@8.0.0: {} 3719 + 3720 + entities@4.5.0: {} 3721 + 3722 + entities@6.0.1: {} 3723 + 3724 + es-module-lexer@1.7.0: {} 3725 + 3726 + esast-util-from-estree@2.0.0: 3727 + dependencies: 3728 + '@types/estree-jsx': 1.0.5 3729 + devlop: 1.1.0 3730 + estree-util-visit: 2.0.0 3731 + unist-util-position-from-estree: 2.0.0 3732 + 3733 + esast-util-from-js@2.0.1: 3734 + dependencies: 3735 + '@types/estree-jsx': 1.0.5 3736 + acorn: 8.16.0 3737 + esast-util-from-estree: 2.0.0 3738 + vfile-message: 4.0.3 3739 + 3740 + esbuild@0.25.12: 3741 + optionalDependencies: 3742 + '@esbuild/aix-ppc64': 0.25.12 3743 + '@esbuild/android-arm': 0.25.12 3744 + '@esbuild/android-arm64': 0.25.12 3745 + '@esbuild/android-x64': 0.25.12 3746 + '@esbuild/darwin-arm64': 0.25.12 3747 + '@esbuild/darwin-x64': 0.25.12 3748 + '@esbuild/freebsd-arm64': 0.25.12 3749 + '@esbuild/freebsd-x64': 0.25.12 3750 + '@esbuild/linux-arm': 0.25.12 3751 + '@esbuild/linux-arm64': 0.25.12 3752 + '@esbuild/linux-ia32': 0.25.12 3753 + '@esbuild/linux-loong64': 0.25.12 3754 + '@esbuild/linux-mips64el': 0.25.12 3755 + '@esbuild/linux-ppc64': 0.25.12 3756 + '@esbuild/linux-riscv64': 0.25.12 3757 + '@esbuild/linux-s390x': 0.25.12 3758 + '@esbuild/linux-x64': 0.25.12 3759 + '@esbuild/netbsd-arm64': 0.25.12 3760 + '@esbuild/netbsd-x64': 0.25.12 3761 + '@esbuild/openbsd-arm64': 0.25.12 3762 + '@esbuild/openbsd-x64': 0.25.12 3763 + '@esbuild/openharmony-arm64': 0.25.12 3764 + '@esbuild/sunos-x64': 0.25.12 3765 + '@esbuild/win32-arm64': 0.25.12 3766 + '@esbuild/win32-ia32': 0.25.12 3767 + '@esbuild/win32-x64': 0.25.12 3768 + 3769 + esbuild@0.27.3: 3770 + optionalDependencies: 3771 + '@esbuild/aix-ppc64': 0.27.3 3772 + '@esbuild/android-arm': 0.27.3 3773 + '@esbuild/android-arm64': 0.27.3 3774 + '@esbuild/android-x64': 0.27.3 3775 + '@esbuild/darwin-arm64': 0.27.3 3776 + '@esbuild/darwin-x64': 0.27.3 3777 + '@esbuild/freebsd-arm64': 0.27.3 3778 + '@esbuild/freebsd-x64': 0.27.3 3779 + '@esbuild/linux-arm': 0.27.3 3780 + '@esbuild/linux-arm64': 0.27.3 3781 + '@esbuild/linux-ia32': 0.27.3 3782 + '@esbuild/linux-loong64': 0.27.3 3783 + '@esbuild/linux-mips64el': 0.27.3 3784 + '@esbuild/linux-ppc64': 0.27.3 3785 + '@esbuild/linux-riscv64': 0.27.3 3786 + '@esbuild/linux-s390x': 0.27.3 3787 + '@esbuild/linux-x64': 0.27.3 3788 + '@esbuild/netbsd-arm64': 0.27.3 3789 + '@esbuild/netbsd-x64': 0.27.3 3790 + '@esbuild/openbsd-arm64': 0.27.3 3791 + '@esbuild/openbsd-x64': 0.27.3 3792 + '@esbuild/openharmony-arm64': 0.27.3 3793 + '@esbuild/sunos-x64': 0.27.3 3794 + '@esbuild/win32-arm64': 0.27.3 3795 + '@esbuild/win32-ia32': 0.27.3 3796 + '@esbuild/win32-x64': 0.27.3 3797 + 3798 + escape-string-regexp@5.0.0: {} 3799 + 3800 + estree-util-attach-comments@3.0.0: 3801 + dependencies: 3802 + '@types/estree': 1.0.8 3803 + 3804 + estree-util-build-jsx@3.0.1: 3805 + dependencies: 3806 + '@types/estree-jsx': 1.0.5 3807 + devlop: 1.1.0 3808 + estree-util-is-identifier-name: 3.0.0 3809 + estree-walker: 3.0.3 3810 + 3811 + estree-util-is-identifier-name@3.0.0: {} 3812 + 3813 + estree-util-scope@1.0.0: 3814 + dependencies: 3815 + '@types/estree': 1.0.8 3816 + devlop: 1.1.0 3817 + 3818 + estree-util-to-js@2.0.0: 3819 + dependencies: 3820 + '@types/estree-jsx': 1.0.5 3821 + astring: 1.9.0 3822 + source-map: 0.7.6 3823 + 3824 + estree-util-visit@2.0.0: 3825 + dependencies: 3826 + '@types/estree-jsx': 1.0.5 3827 + '@types/unist': 3.0.3 3828 + 3829 + estree-walker@2.0.2: {} 3830 + 3831 + estree-walker@3.0.3: 3832 + dependencies: 3833 + '@types/estree': 1.0.8 3834 + 3835 + eventemitter3@5.0.4: {} 3836 + 3837 + expressive-code@0.41.6: 3838 + dependencies: 3839 + '@expressive-code/core': 0.41.6 3840 + '@expressive-code/plugin-frames': 0.41.6 3841 + '@expressive-code/plugin-shiki': 0.41.6 3842 + '@expressive-code/plugin-text-markers': 0.41.6 3843 + 3844 + extend@3.0.2: {} 3845 + 3846 + fdir@6.5.0(picomatch@4.0.3): 3847 + optionalDependencies: 3848 + picomatch: 4.0.3 3849 + 3850 + flattie@1.1.1: {} 3851 + 3852 + fontace@0.4.1: 3853 + dependencies: 3854 + fontkitten: 1.0.2 3855 + 3856 + fontkitten@1.0.2: 3857 + dependencies: 3858 + tiny-inflate: 1.0.3 3859 + 3860 + fsevents@2.3.3: 3861 + optional: true 3862 + 3863 + get-east-asian-width@1.5.0: {} 3864 + 3865 + github-slugger@2.0.0: {} 3866 + 3867 + h3@1.15.5: 3868 + dependencies: 3869 + cookie-es: 1.2.2 3870 + crossws: 0.3.5 3871 + defu: 6.1.4 3872 + destr: 2.0.5 3873 + iron-webcrypto: 1.2.1 3874 + node-mock-http: 1.0.4 3875 + radix3: 1.1.2 3876 + ufo: 1.6.3 3877 + uncrypto: 0.1.3 3878 + 3879 + hachure-fill@0.5.2: {} 3880 + 3881 + hast-util-embedded@3.0.0: 3882 + dependencies: 3883 + '@types/hast': 3.0.4 3884 + hast-util-is-element: 3.0.0 3885 + 3886 + hast-util-format@1.1.0: 3887 + dependencies: 3888 + '@types/hast': 3.0.4 3889 + hast-util-embedded: 3.0.0 3890 + hast-util-minify-whitespace: 1.0.1 3891 + hast-util-phrasing: 3.0.1 3892 + hast-util-whitespace: 3.0.0 3893 + html-whitespace-sensitive-tag-names: 3.0.1 3894 + unist-util-visit-parents: 6.0.2 3895 + 3896 + hast-util-from-html@2.0.3: 3897 + dependencies: 3898 + '@types/hast': 3.0.4 3899 + devlop: 1.1.0 3900 + hast-util-from-parse5: 8.0.3 3901 + parse5: 7.3.0 3902 + vfile: 6.0.3 3903 + vfile-message: 4.0.3 3904 + 3905 + hast-util-from-parse5@8.0.3: 3906 + dependencies: 3907 + '@types/hast': 3.0.4 3908 + '@types/unist': 3.0.3 3909 + devlop: 1.1.0 3910 + hastscript: 9.0.1 3911 + property-information: 7.1.0 3912 + vfile: 6.0.3 3913 + vfile-location: 5.0.3 3914 + web-namespaces: 2.0.1 3915 + 3916 + hast-util-has-property@3.0.0: 3917 + dependencies: 3918 + '@types/hast': 3.0.4 3919 + 3920 + hast-util-is-body-ok-link@3.0.1: 3921 + dependencies: 3922 + '@types/hast': 3.0.4 3923 + 3924 + hast-util-is-element@3.0.0: 3925 + dependencies: 3926 + '@types/hast': 3.0.4 3927 + 3928 + hast-util-minify-whitespace@1.0.1: 3929 + dependencies: 3930 + '@types/hast': 3.0.4 3931 + hast-util-embedded: 3.0.0 3932 + hast-util-is-element: 3.0.0 3933 + hast-util-whitespace: 3.0.0 3934 + unist-util-is: 6.0.1 3935 + 3936 + hast-util-parse-selector@4.0.0: 3937 + dependencies: 3938 + '@types/hast': 3.0.4 3939 + 3940 + hast-util-phrasing@3.0.1: 3941 + dependencies: 3942 + '@types/hast': 3.0.4 3943 + hast-util-embedded: 3.0.0 3944 + hast-util-has-property: 3.0.0 3945 + hast-util-is-body-ok-link: 3.0.1 3946 + hast-util-is-element: 3.0.0 3947 + 3948 + hast-util-raw@9.1.0: 3949 + dependencies: 3950 + '@types/hast': 3.0.4 3951 + '@types/unist': 3.0.3 3952 + '@ungap/structured-clone': 1.3.0 3953 + hast-util-from-parse5: 8.0.3 3954 + hast-util-to-parse5: 8.0.1 3955 + html-void-elements: 3.0.0 3956 + mdast-util-to-hast: 13.2.1 3957 + parse5: 7.3.0 3958 + unist-util-position: 5.0.0 3959 + unist-util-visit: 5.1.0 3960 + vfile: 6.0.3 3961 + web-namespaces: 2.0.1 3962 + zwitch: 2.0.4 3963 + 3964 + hast-util-select@6.0.4: 3965 + dependencies: 3966 + '@types/hast': 3.0.4 3967 + '@types/unist': 3.0.3 3968 + bcp-47-match: 2.0.3 3969 + comma-separated-tokens: 2.0.3 3970 + css-selector-parser: 3.3.0 3971 + devlop: 1.1.0 3972 + direction: 2.0.1 3973 + hast-util-has-property: 3.0.0 3974 + hast-util-to-string: 3.0.1 3975 + hast-util-whitespace: 3.0.0 3976 + nth-check: 2.1.1 3977 + property-information: 7.1.0 3978 + space-separated-tokens: 2.0.2 3979 + unist-util-visit: 5.1.0 3980 + zwitch: 2.0.4 3981 + 3982 + hast-util-to-estree@3.1.3: 3983 + dependencies: 3984 + '@types/estree': 1.0.8 3985 + '@types/estree-jsx': 1.0.5 3986 + '@types/hast': 3.0.4 3987 + comma-separated-tokens: 2.0.3 3988 + devlop: 1.1.0 3989 + estree-util-attach-comments: 3.0.0 3990 + estree-util-is-identifier-name: 3.0.0 3991 + hast-util-whitespace: 3.0.0 3992 + mdast-util-mdx-expression: 2.0.1 3993 + mdast-util-mdx-jsx: 3.2.0 3994 + mdast-util-mdxjs-esm: 2.0.1 3995 + property-information: 7.1.0 3996 + space-separated-tokens: 2.0.2 3997 + style-to-js: 1.1.21 3998 + unist-util-position: 5.0.0 3999 + zwitch: 2.0.4 4000 + transitivePeerDependencies: 4001 + - supports-color 4002 + 4003 + hast-util-to-html@9.0.5: 4004 + dependencies: 4005 + '@types/hast': 3.0.4 4006 + '@types/unist': 3.0.3 4007 + ccount: 2.0.1 4008 + comma-separated-tokens: 2.0.3 4009 + hast-util-whitespace: 3.0.0 4010 + html-void-elements: 3.0.0 4011 + mdast-util-to-hast: 13.2.1 4012 + property-information: 7.1.0 4013 + space-separated-tokens: 2.0.2 4014 + stringify-entities: 4.0.4 4015 + zwitch: 2.0.4 4016 + 4017 + hast-util-to-jsx-runtime@2.3.6: 4018 + dependencies: 4019 + '@types/estree': 1.0.8 4020 + '@types/hast': 3.0.4 4021 + '@types/unist': 3.0.3 4022 + comma-separated-tokens: 2.0.3 4023 + devlop: 1.1.0 4024 + estree-util-is-identifier-name: 3.0.0 4025 + hast-util-whitespace: 3.0.0 4026 + mdast-util-mdx-expression: 2.0.1 4027 + mdast-util-mdx-jsx: 3.2.0 4028 + mdast-util-mdxjs-esm: 2.0.1 4029 + property-information: 7.1.0 4030 + space-separated-tokens: 2.0.2 4031 + style-to-js: 1.1.21 4032 + unist-util-position: 5.0.0 4033 + vfile-message: 4.0.3 4034 + transitivePeerDependencies: 4035 + - supports-color 4036 + 4037 + hast-util-to-parse5@8.0.1: 4038 + dependencies: 4039 + '@types/hast': 3.0.4 4040 + comma-separated-tokens: 2.0.3 4041 + devlop: 1.1.0 4042 + property-information: 7.1.0 4043 + space-separated-tokens: 2.0.2 4044 + web-namespaces: 2.0.1 4045 + zwitch: 2.0.4 4046 + 4047 + hast-util-to-string@3.0.1: 4048 + dependencies: 4049 + '@types/hast': 3.0.4 4050 + 4051 + hast-util-to-text@4.0.2: 4052 + dependencies: 4053 + '@types/hast': 3.0.4 4054 + '@types/unist': 3.0.3 4055 + hast-util-is-element: 3.0.0 4056 + unist-util-find-after: 5.0.0 4057 + 4058 + hast-util-whitespace@3.0.0: 4059 + dependencies: 4060 + '@types/hast': 3.0.4 4061 + 4062 + hastscript@9.0.1: 4063 + dependencies: 4064 + '@types/hast': 3.0.4 4065 + comma-separated-tokens: 2.0.3 4066 + hast-util-parse-selector: 4.0.0 4067 + property-information: 7.1.0 4068 + space-separated-tokens: 2.0.2 4069 + 4070 + html-escaper@3.0.3: {} 4071 + 4072 + html-void-elements@3.0.0: {} 4073 + 4074 + html-whitespace-sensitive-tag-names@3.0.1: {} 4075 + 4076 + http-cache-semantics@4.2.0: {} 4077 + 4078 + i18next@23.16.8: 4079 + dependencies: 4080 + '@babel/runtime': 7.28.6 4081 + 4082 + iconv-lite@0.6.3: 4083 + dependencies: 4084 + safer-buffer: 2.1.2 4085 + 4086 + import-meta-resolve@4.2.0: {} 4087 + 4088 + inline-style-parser@0.2.7: {} 4089 + 4090 + internmap@1.0.1: {} 4091 + 4092 + internmap@2.0.3: {} 4093 + 4094 + iron-webcrypto@1.2.1: {} 4095 + 4096 + is-alphabetical@2.0.1: {} 4097 + 4098 + is-alphanumerical@2.0.1: 4099 + dependencies: 4100 + is-alphabetical: 2.0.1 4101 + is-decimal: 2.0.1 4102 + 4103 + is-decimal@2.0.1: {} 4104 + 4105 + is-docker@3.0.0: {} 4106 + 4107 + is-fullwidth-code-point@3.0.0: {} 4108 + 4109 + is-hexadecimal@2.0.1: {} 4110 + 4111 + is-inside-container@1.0.0: 4112 + dependencies: 4113 + is-docker: 3.0.0 4114 + 4115 + is-plain-obj@4.1.0: {} 4116 + 4117 + is-wsl@3.1.1: 4118 + dependencies: 4119 + is-inside-container: 1.0.0 4120 + 4121 + js-yaml@4.1.1: 4122 + dependencies: 4123 + argparse: 2.0.1 4124 + 4125 + katex@0.16.28: 4126 + dependencies: 4127 + commander: 8.3.0 4128 + 4129 + khroma@2.1.0: {} 4130 + 4131 + kleur@3.0.3: {} 4132 + 4133 + klona@2.0.6: {} 4134 + 4135 + langium@4.2.1: 4136 + dependencies: 4137 + chevrotain: 11.1.1 4138 + chevrotain-allstar: 0.3.1(chevrotain@11.1.1) 4139 + vscode-languageserver: 9.0.1 4140 + vscode-languageserver-textdocument: 1.0.12 4141 + vscode-uri: 3.1.0 4142 + 4143 + layout-base@1.0.2: {} 4144 + 4145 + layout-base@2.0.1: {} 4146 + 4147 + lodash-es@4.17.23: {} 4148 + 4149 + longest-streak@3.1.0: {} 4150 + 4151 + lru-cache@11.2.6: {} 4152 + 4153 + magic-string@0.30.21: 4154 + dependencies: 4155 + '@jridgewell/sourcemap-codec': 1.5.5 4156 + 4157 + magicast@0.5.2: 4158 + dependencies: 4159 + '@babel/parser': 7.29.0 4160 + '@babel/types': 7.29.0 4161 + source-map-js: 1.2.1 4162 + 4163 + markdown-extensions@2.0.0: {} 4164 + 4165 + markdown-table@3.0.4: {} 4166 + 4167 + marked@16.4.2: {} 4168 + 4169 + mdast-util-definitions@6.0.0: 4170 + dependencies: 4171 + '@types/mdast': 4.0.4 4172 + '@types/unist': 3.0.3 4173 + unist-util-visit: 5.1.0 4174 + 4175 + mdast-util-directive@3.1.0: 4176 + dependencies: 4177 + '@types/mdast': 4.0.4 4178 + '@types/unist': 3.0.3 4179 + ccount: 2.0.1 4180 + devlop: 1.1.0 4181 + mdast-util-from-markdown: 2.0.2 4182 + mdast-util-to-markdown: 2.1.2 4183 + parse-entities: 4.0.2 4184 + stringify-entities: 4.0.4 4185 + unist-util-visit-parents: 6.0.2 4186 + transitivePeerDependencies: 4187 + - supports-color 4188 + 4189 + mdast-util-find-and-replace@3.0.2: 4190 + dependencies: 4191 + '@types/mdast': 4.0.4 4192 + escape-string-regexp: 5.0.0 4193 + unist-util-is: 6.0.1 4194 + unist-util-visit-parents: 6.0.2 4195 + 4196 + mdast-util-from-markdown@2.0.2: 4197 + dependencies: 4198 + '@types/mdast': 4.0.4 4199 + '@types/unist': 3.0.3 4200 + decode-named-character-reference: 1.3.0 4201 + devlop: 1.1.0 4202 + mdast-util-to-string: 4.0.0 4203 + micromark: 4.0.2 4204 + micromark-util-decode-numeric-character-reference: 2.0.2 4205 + micromark-util-decode-string: 2.0.1 4206 + micromark-util-normalize-identifier: 2.0.1 4207 + micromark-util-symbol: 2.0.1 4208 + micromark-util-types: 2.0.2 4209 + unist-util-stringify-position: 4.0.0 4210 + transitivePeerDependencies: 4211 + - supports-color 4212 + 4213 + mdast-util-gfm-autolink-literal@2.0.1: 4214 + dependencies: 4215 + '@types/mdast': 4.0.4 4216 + ccount: 2.0.1 4217 + devlop: 1.1.0 4218 + mdast-util-find-and-replace: 3.0.2 4219 + micromark-util-character: 2.1.1 4220 + 4221 + mdast-util-gfm-footnote@2.1.0: 4222 + dependencies: 4223 + '@types/mdast': 4.0.4 4224 + devlop: 1.1.0 4225 + mdast-util-from-markdown: 2.0.2 4226 + mdast-util-to-markdown: 2.1.2 4227 + micromark-util-normalize-identifier: 2.0.1 4228 + transitivePeerDependencies: 4229 + - supports-color 4230 + 4231 + mdast-util-gfm-strikethrough@2.0.0: 4232 + dependencies: 4233 + '@types/mdast': 4.0.4 4234 + mdast-util-from-markdown: 2.0.2 4235 + mdast-util-to-markdown: 2.1.2 4236 + transitivePeerDependencies: 4237 + - supports-color 4238 + 4239 + mdast-util-gfm-table@2.0.0: 4240 + dependencies: 4241 + '@types/mdast': 4.0.4 4242 + devlop: 1.1.0 4243 + markdown-table: 3.0.4 4244 + mdast-util-from-markdown: 2.0.2 4245 + mdast-util-to-markdown: 2.1.2 4246 + transitivePeerDependencies: 4247 + - supports-color 4248 + 4249 + mdast-util-gfm-task-list-item@2.0.0: 4250 + dependencies: 4251 + '@types/mdast': 4.0.4 4252 + devlop: 1.1.0 4253 + mdast-util-from-markdown: 2.0.2 4254 + mdast-util-to-markdown: 2.1.2 4255 + transitivePeerDependencies: 4256 + - supports-color 4257 + 4258 + mdast-util-gfm@3.1.0: 4259 + dependencies: 4260 + mdast-util-from-markdown: 2.0.2 4261 + mdast-util-gfm-autolink-literal: 2.0.1 4262 + mdast-util-gfm-footnote: 2.1.0 4263 + mdast-util-gfm-strikethrough: 2.0.0 4264 + mdast-util-gfm-table: 2.0.0 4265 + mdast-util-gfm-task-list-item: 2.0.0 4266 + mdast-util-to-markdown: 2.1.2 4267 + transitivePeerDependencies: 4268 + - supports-color 4269 + 4270 + mdast-util-mdx-expression@2.0.1: 4271 + dependencies: 4272 + '@types/estree-jsx': 1.0.5 4273 + '@types/hast': 3.0.4 4274 + '@types/mdast': 4.0.4 4275 + devlop: 1.1.0 4276 + mdast-util-from-markdown: 2.0.2 4277 + mdast-util-to-markdown: 2.1.2 4278 + transitivePeerDependencies: 4279 + - supports-color 4280 + 4281 + mdast-util-mdx-jsx@3.2.0: 4282 + dependencies: 4283 + '@types/estree-jsx': 1.0.5 4284 + '@types/hast': 3.0.4 4285 + '@types/mdast': 4.0.4 4286 + '@types/unist': 3.0.3 4287 + ccount: 2.0.1 4288 + devlop: 1.1.0 4289 + mdast-util-from-markdown: 2.0.2 4290 + mdast-util-to-markdown: 2.1.2 4291 + parse-entities: 4.0.2 4292 + stringify-entities: 4.0.4 4293 + unist-util-stringify-position: 4.0.0 4294 + vfile-message: 4.0.3 4295 + transitivePeerDependencies: 4296 + - supports-color 4297 + 4298 + mdast-util-mdx@3.0.0: 4299 + dependencies: 4300 + mdast-util-from-markdown: 2.0.2 4301 + mdast-util-mdx-expression: 2.0.1 4302 + mdast-util-mdx-jsx: 3.2.0 4303 + mdast-util-mdxjs-esm: 2.0.1 4304 + mdast-util-to-markdown: 2.1.2 4305 + transitivePeerDependencies: 4306 + - supports-color 4307 + 4308 + mdast-util-mdxjs-esm@2.0.1: 4309 + dependencies: 4310 + '@types/estree-jsx': 1.0.5 4311 + '@types/hast': 3.0.4 4312 + '@types/mdast': 4.0.4 4313 + devlop: 1.1.0 4314 + mdast-util-from-markdown: 2.0.2 4315 + mdast-util-to-markdown: 2.1.2 4316 + transitivePeerDependencies: 4317 + - supports-color 4318 + 4319 + mdast-util-phrasing@4.1.0: 4320 + dependencies: 4321 + '@types/mdast': 4.0.4 4322 + unist-util-is: 6.0.1 4323 + 4324 + mdast-util-to-hast@13.2.1: 4325 + dependencies: 4326 + '@types/hast': 3.0.4 4327 + '@types/mdast': 4.0.4 4328 + '@ungap/structured-clone': 1.3.0 4329 + devlop: 1.1.0 4330 + micromark-util-sanitize-uri: 2.0.1 4331 + trim-lines: 3.0.1 4332 + unist-util-position: 5.0.0 4333 + unist-util-visit: 5.1.0 4334 + vfile: 6.0.3 4335 + 4336 + mdast-util-to-markdown@2.1.2: 4337 + dependencies: 4338 + '@types/mdast': 4.0.4 4339 + '@types/unist': 3.0.3 4340 + longest-streak: 3.1.0 4341 + mdast-util-phrasing: 4.1.0 4342 + mdast-util-to-string: 4.0.0 4343 + micromark-util-classify-character: 2.0.1 4344 + micromark-util-decode-string: 2.0.1 4345 + unist-util-visit: 5.1.0 4346 + zwitch: 2.0.4 4347 + 4348 + mdast-util-to-string@4.0.0: 4349 + dependencies: 4350 + '@types/mdast': 4.0.4 4351 + 4352 + mdn-data@2.0.28: {} 4353 + 4354 + mdn-data@2.12.2: {} 4355 + 4356 + mermaid@11.12.3: 4357 + dependencies: 4358 + '@braintree/sanitize-url': 7.1.2 4359 + '@iconify/utils': 3.1.0 4360 + '@mermaid-js/parser': 1.0.0 4361 + '@types/d3': 7.4.3 4362 + cytoscape: 3.33.1 4363 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.1) 4364 + cytoscape-fcose: 2.2.0(cytoscape@3.33.1) 4365 + d3: 7.9.0 4366 + d3-sankey: 0.12.3 4367 + dagre-d3-es: 7.0.13 4368 + dayjs: 1.11.19 4369 + dompurify: 3.3.1 4370 + katex: 0.16.28 4371 + khroma: 2.1.0 4372 + lodash-es: 4.17.23 4373 + marked: 16.4.2 4374 + roughjs: 4.6.6 4375 + stylis: 4.3.6 4376 + ts-dedent: 2.2.0 4377 + uuid: 11.1.0 4378 + 4379 + micromark-core-commonmark@2.0.3: 4380 + dependencies: 4381 + decode-named-character-reference: 1.3.0 4382 + devlop: 1.1.0 4383 + micromark-factory-destination: 2.0.1 4384 + micromark-factory-label: 2.0.1 4385 + micromark-factory-space: 2.0.1 4386 + micromark-factory-title: 2.0.1 4387 + micromark-factory-whitespace: 2.0.1 4388 + micromark-util-character: 2.1.1 4389 + micromark-util-chunked: 2.0.1 4390 + micromark-util-classify-character: 2.0.1 4391 + micromark-util-html-tag-name: 2.0.1 4392 + micromark-util-normalize-identifier: 2.0.1 4393 + micromark-util-resolve-all: 2.0.1 4394 + micromark-util-subtokenize: 2.1.0 4395 + micromark-util-symbol: 2.0.1 4396 + micromark-util-types: 2.0.2 4397 + 4398 + micromark-extension-directive@3.0.2: 4399 + dependencies: 4400 + devlop: 1.1.0 4401 + micromark-factory-space: 2.0.1 4402 + micromark-factory-whitespace: 2.0.1 4403 + micromark-util-character: 2.1.1 4404 + micromark-util-symbol: 2.0.1 4405 + micromark-util-types: 2.0.2 4406 + parse-entities: 4.0.2 4407 + 4408 + micromark-extension-gfm-autolink-literal@2.1.0: 4409 + dependencies: 4410 + micromark-util-character: 2.1.1 4411 + micromark-util-sanitize-uri: 2.0.1 4412 + micromark-util-symbol: 2.0.1 4413 + micromark-util-types: 2.0.2 4414 + 4415 + micromark-extension-gfm-footnote@2.1.0: 4416 + dependencies: 4417 + devlop: 1.1.0 4418 + micromark-core-commonmark: 2.0.3 4419 + micromark-factory-space: 2.0.1 4420 + micromark-util-character: 2.1.1 4421 + micromark-util-normalize-identifier: 2.0.1 4422 + micromark-util-sanitize-uri: 2.0.1 4423 + micromark-util-symbol: 2.0.1 4424 + micromark-util-types: 2.0.2 4425 + 4426 + micromark-extension-gfm-strikethrough@2.1.0: 4427 + dependencies: 4428 + devlop: 1.1.0 4429 + micromark-util-chunked: 2.0.1 4430 + micromark-util-classify-character: 2.0.1 4431 + micromark-util-resolve-all: 2.0.1 4432 + micromark-util-symbol: 2.0.1 4433 + micromark-util-types: 2.0.2 4434 + 4435 + micromark-extension-gfm-table@2.1.1: 4436 + dependencies: 4437 + devlop: 1.1.0 4438 + micromark-factory-space: 2.0.1 4439 + micromark-util-character: 2.1.1 4440 + micromark-util-symbol: 2.0.1 4441 + micromark-util-types: 2.0.2 4442 + 4443 + micromark-extension-gfm-tagfilter@2.0.0: 4444 + dependencies: 4445 + micromark-util-types: 2.0.2 4446 + 4447 + micromark-extension-gfm-task-list-item@2.1.0: 4448 + dependencies: 4449 + devlop: 1.1.0 4450 + micromark-factory-space: 2.0.1 4451 + micromark-util-character: 2.1.1 4452 + micromark-util-symbol: 2.0.1 4453 + micromark-util-types: 2.0.2 4454 + 4455 + micromark-extension-gfm@3.0.0: 4456 + dependencies: 4457 + micromark-extension-gfm-autolink-literal: 2.1.0 4458 + micromark-extension-gfm-footnote: 2.1.0 4459 + micromark-extension-gfm-strikethrough: 2.1.0 4460 + micromark-extension-gfm-table: 2.1.1 4461 + micromark-extension-gfm-tagfilter: 2.0.0 4462 + micromark-extension-gfm-task-list-item: 2.1.0 4463 + micromark-util-combine-extensions: 2.0.1 4464 + micromark-util-types: 2.0.2 4465 + 4466 + micromark-extension-mdx-expression@3.0.1: 4467 + dependencies: 4468 + '@types/estree': 1.0.8 4469 + devlop: 1.1.0 4470 + micromark-factory-mdx-expression: 2.0.3 4471 + micromark-factory-space: 2.0.1 4472 + micromark-util-character: 2.1.1 4473 + micromark-util-events-to-acorn: 2.0.3 4474 + micromark-util-symbol: 2.0.1 4475 + micromark-util-types: 2.0.2 4476 + 4477 + micromark-extension-mdx-jsx@3.0.2: 4478 + dependencies: 4479 + '@types/estree': 1.0.8 4480 + devlop: 1.1.0 4481 + estree-util-is-identifier-name: 3.0.0 4482 + micromark-factory-mdx-expression: 2.0.3 4483 + micromark-factory-space: 2.0.1 4484 + micromark-util-character: 2.1.1 4485 + micromark-util-events-to-acorn: 2.0.3 4486 + micromark-util-symbol: 2.0.1 4487 + micromark-util-types: 2.0.2 4488 + vfile-message: 4.0.3 4489 + 4490 + micromark-extension-mdx-md@2.0.0: 4491 + dependencies: 4492 + micromark-util-types: 2.0.2 4493 + 4494 + micromark-extension-mdxjs-esm@3.0.0: 4495 + dependencies: 4496 + '@types/estree': 1.0.8 4497 + devlop: 1.1.0 4498 + micromark-core-commonmark: 2.0.3 4499 + micromark-util-character: 2.1.1 4500 + micromark-util-events-to-acorn: 2.0.3 4501 + micromark-util-symbol: 2.0.1 4502 + micromark-util-types: 2.0.2 4503 + unist-util-position-from-estree: 2.0.0 4504 + vfile-message: 4.0.3 4505 + 4506 + micromark-extension-mdxjs@3.0.0: 4507 + dependencies: 4508 + acorn: 8.16.0 4509 + acorn-jsx: 5.3.2(acorn@8.16.0) 4510 + micromark-extension-mdx-expression: 3.0.1 4511 + micromark-extension-mdx-jsx: 3.0.2 4512 + micromark-extension-mdx-md: 2.0.0 4513 + micromark-extension-mdxjs-esm: 3.0.0 4514 + micromark-util-combine-extensions: 2.0.1 4515 + micromark-util-types: 2.0.2 4516 + 4517 + micromark-factory-destination@2.0.1: 4518 + dependencies: 4519 + micromark-util-character: 2.1.1 4520 + micromark-util-symbol: 2.0.1 4521 + micromark-util-types: 2.0.2 4522 + 4523 + micromark-factory-label@2.0.1: 4524 + dependencies: 4525 + devlop: 1.1.0 4526 + micromark-util-character: 2.1.1 4527 + micromark-util-symbol: 2.0.1 4528 + micromark-util-types: 2.0.2 4529 + 4530 + micromark-factory-mdx-expression@2.0.3: 4531 + dependencies: 4532 + '@types/estree': 1.0.8 4533 + devlop: 1.1.0 4534 + micromark-factory-space: 2.0.1 4535 + micromark-util-character: 2.1.1 4536 + micromark-util-events-to-acorn: 2.0.3 4537 + micromark-util-symbol: 2.0.1 4538 + micromark-util-types: 2.0.2 4539 + unist-util-position-from-estree: 2.0.0 4540 + vfile-message: 4.0.3 4541 + 4542 + micromark-factory-space@2.0.1: 4543 + dependencies: 4544 + micromark-util-character: 2.1.1 4545 + micromark-util-types: 2.0.2 4546 + 4547 + micromark-factory-title@2.0.1: 4548 + dependencies: 4549 + micromark-factory-space: 2.0.1 4550 + micromark-util-character: 2.1.1 4551 + micromark-util-symbol: 2.0.1 4552 + micromark-util-types: 2.0.2 4553 + 4554 + micromark-factory-whitespace@2.0.1: 4555 + dependencies: 4556 + micromark-factory-space: 2.0.1 4557 + micromark-util-character: 2.1.1 4558 + micromark-util-symbol: 2.0.1 4559 + micromark-util-types: 2.0.2 4560 + 4561 + micromark-util-character@2.1.1: 4562 + dependencies: 4563 + micromark-util-symbol: 2.0.1 4564 + micromark-util-types: 2.0.2 4565 + 4566 + micromark-util-chunked@2.0.1: 4567 + dependencies: 4568 + micromark-util-symbol: 2.0.1 4569 + 4570 + micromark-util-classify-character@2.0.1: 4571 + dependencies: 4572 + micromark-util-character: 2.1.1 4573 + micromark-util-symbol: 2.0.1 4574 + micromark-util-types: 2.0.2 4575 + 4576 + micromark-util-combine-extensions@2.0.1: 4577 + dependencies: 4578 + micromark-util-chunked: 2.0.1 4579 + micromark-util-types: 2.0.2 4580 + 4581 + micromark-util-decode-numeric-character-reference@2.0.2: 4582 + dependencies: 4583 + micromark-util-symbol: 2.0.1 4584 + 4585 + micromark-util-decode-string@2.0.1: 4586 + dependencies: 4587 + decode-named-character-reference: 1.3.0 4588 + micromark-util-character: 2.1.1 4589 + micromark-util-decode-numeric-character-reference: 2.0.2 4590 + micromark-util-symbol: 2.0.1 4591 + 4592 + micromark-util-encode@2.0.1: {} 4593 + 4594 + micromark-util-events-to-acorn@2.0.3: 4595 + dependencies: 4596 + '@types/estree': 1.0.8 4597 + '@types/unist': 3.0.3 4598 + devlop: 1.1.0 4599 + estree-util-visit: 2.0.0 4600 + micromark-util-symbol: 2.0.1 4601 + micromark-util-types: 2.0.2 4602 + vfile-message: 4.0.3 4603 + 4604 + micromark-util-html-tag-name@2.0.1: {} 4605 + 4606 + micromark-util-normalize-identifier@2.0.1: 4607 + dependencies: 4608 + micromark-util-symbol: 2.0.1 4609 + 4610 + micromark-util-resolve-all@2.0.1: 4611 + dependencies: 4612 + micromark-util-types: 2.0.2 4613 + 4614 + micromark-util-sanitize-uri@2.0.1: 4615 + dependencies: 4616 + micromark-util-character: 2.1.1 4617 + micromark-util-encode: 2.0.1 4618 + micromark-util-symbol: 2.0.1 4619 + 4620 + micromark-util-subtokenize@2.1.0: 4621 + dependencies: 4622 + devlop: 1.1.0 4623 + micromark-util-chunked: 2.0.1 4624 + micromark-util-symbol: 2.0.1 4625 + micromark-util-types: 2.0.2 4626 + 4627 + micromark-util-symbol@2.0.1: {} 4628 + 4629 + micromark-util-types@2.0.2: {} 4630 + 4631 + micromark@4.0.2: 4632 + dependencies: 4633 + '@types/debug': 4.1.12 4634 + debug: 4.4.3 4635 + decode-named-character-reference: 1.3.0 4636 + devlop: 1.1.0 4637 + micromark-core-commonmark: 2.0.3 4638 + micromark-factory-space: 2.0.1 4639 + micromark-util-character: 2.1.1 4640 + micromark-util-chunked: 2.0.1 4641 + micromark-util-combine-extensions: 2.0.1 4642 + micromark-util-decode-numeric-character-reference: 2.0.2 4643 + micromark-util-encode: 2.0.1 4644 + micromark-util-normalize-identifier: 2.0.1 4645 + micromark-util-resolve-all: 2.0.1 4646 + micromark-util-sanitize-uri: 2.0.1 4647 + micromark-util-subtokenize: 2.1.0 4648 + micromark-util-symbol: 2.0.1 4649 + micromark-util-types: 2.0.2 4650 + transitivePeerDependencies: 4651 + - supports-color 4652 + 4653 + mlly@1.8.0: 4654 + dependencies: 4655 + acorn: 8.16.0 4656 + pathe: 2.0.3 4657 + pkg-types: 1.3.1 4658 + ufo: 1.6.3 4659 + 4660 + mrmime@2.0.1: {} 4661 + 4662 + ms@2.1.3: {} 4663 + 4664 + nanoid@3.3.11: {} 4665 + 4666 + neotraverse@0.6.18: {} 4667 + 4668 + nlcst-to-string@4.0.0: 4669 + dependencies: 4670 + '@types/nlcst': 2.0.3 4671 + 4672 + node-fetch-native@1.6.7: {} 4673 + 4674 + node-mock-http@1.0.4: {} 4675 + 4676 + normalize-path@3.0.0: {} 4677 + 4678 + nth-check@2.1.1: 4679 + dependencies: 4680 + boolbase: 1.0.0 4681 + 4682 + ofetch@1.5.1: 4683 + dependencies: 4684 + destr: 2.0.5 4685 + node-fetch-native: 1.6.7 4686 + ufo: 1.6.3 4687 + 4688 + ohash@2.0.11: {} 4689 + 4690 + oniguruma-parser@0.12.1: {} 4691 + 4692 + oniguruma-to-es@4.3.4: 4693 + dependencies: 4694 + oniguruma-parser: 0.12.1 4695 + regex: 6.1.0 4696 + regex-recursion: 6.0.2 4697 + 4698 + p-limit@6.2.0: 4699 + dependencies: 4700 + yocto-queue: 1.2.2 4701 + 4702 + p-queue@8.1.1: 4703 + dependencies: 4704 + eventemitter3: 5.0.4 4705 + p-timeout: 6.1.4 4706 + 4707 + p-timeout@6.1.4: {} 4708 + 4709 + package-manager-detector@1.6.0: {} 4710 + 4711 + pagefind@1.4.0: 4712 + optionalDependencies: 4713 + '@pagefind/darwin-arm64': 1.4.0 4714 + '@pagefind/darwin-x64': 1.4.0 4715 + '@pagefind/freebsd-x64': 1.4.0 4716 + '@pagefind/linux-arm64': 1.4.0 4717 + '@pagefind/linux-x64': 1.4.0 4718 + '@pagefind/windows-x64': 1.4.0 4719 + 4720 + parse-entities@4.0.2: 4721 + dependencies: 4722 + '@types/unist': 2.0.11 4723 + character-entities-legacy: 3.0.0 4724 + character-reference-invalid: 2.0.1 4725 + decode-named-character-reference: 1.3.0 4726 + is-alphanumerical: 2.0.1 4727 + is-decimal: 2.0.1 4728 + is-hexadecimal: 2.0.1 4729 + 4730 + parse-latin@7.0.0: 4731 + dependencies: 4732 + '@types/nlcst': 2.0.3 4733 + '@types/unist': 3.0.3 4734 + nlcst-to-string: 4.0.0 4735 + unist-util-modify-children: 4.0.0 4736 + unist-util-visit-children: 3.0.0 4737 + vfile: 6.0.3 4738 + 4739 + parse5@7.3.0: 4740 + dependencies: 4741 + entities: 6.0.1 4742 + 4743 + path-data-parser@0.1.0: {} 4744 + 4745 + pathe@2.0.3: {} 4746 + 4747 + piccolore@0.1.3: {} 4748 + 4749 + picocolors@1.1.1: {} 4750 + 4751 + picomatch@2.3.1: {} 4752 + 4753 + picomatch@4.0.3: {} 4754 + 4755 + pkg-types@1.3.1: 4756 + dependencies: 4757 + confbox: 0.1.8 4758 + mlly: 1.8.0 4759 + pathe: 2.0.3 4760 + 4761 + points-on-curve@0.2.0: {} 4762 + 4763 + points-on-path@0.2.1: 4764 + dependencies: 4765 + path-data-parser: 0.1.0 4766 + points-on-curve: 0.2.0 4767 + 4768 + postcss-nested@6.2.0(postcss@8.5.6): 4769 + dependencies: 4770 + postcss: 8.5.6 4771 + postcss-selector-parser: 6.1.2 4772 + 4773 + postcss-selector-parser@6.1.2: 4774 + dependencies: 4775 + cssesc: 3.0.0 4776 + util-deprecate: 1.0.2 4777 + 4778 + postcss@8.5.6: 4779 + dependencies: 4780 + nanoid: 3.3.11 4781 + picocolors: 1.1.1 4782 + source-map-js: 1.2.1 4783 + 4784 + prismjs@1.30.0: {} 4785 + 4786 + prompts@2.4.2: 4787 + dependencies: 4788 + kleur: 3.0.3 4789 + sisteransi: 1.0.5 4790 + 4791 + property-information@7.1.0: {} 4792 + 4793 + radix3@1.1.2: {} 4794 + 4795 + readdirp@5.0.0: {} 4796 + 4797 + recma-build-jsx@1.0.0: 4798 + dependencies: 4799 + '@types/estree': 1.0.8 4800 + estree-util-build-jsx: 3.0.1 4801 + vfile: 6.0.3 4802 + 4803 + recma-jsx@1.0.1(acorn@8.16.0): 4804 + dependencies: 4805 + acorn: 8.16.0 4806 + acorn-jsx: 5.3.2(acorn@8.16.0) 4807 + estree-util-to-js: 2.0.0 4808 + recma-parse: 1.0.0 4809 + recma-stringify: 1.0.0 4810 + unified: 11.0.5 4811 + 4812 + recma-parse@1.0.0: 4813 + dependencies: 4814 + '@types/estree': 1.0.8 4815 + esast-util-from-js: 2.0.1 4816 + unified: 11.0.5 4817 + vfile: 6.0.3 4818 + 4819 + recma-stringify@1.0.0: 4820 + dependencies: 4821 + '@types/estree': 1.0.8 4822 + estree-util-to-js: 2.0.0 4823 + unified: 11.0.5 4824 + vfile: 6.0.3 4825 + 4826 + regex-recursion@6.0.2: 4827 + dependencies: 4828 + regex-utilities: 2.3.0 4829 + 4830 + regex-utilities@2.3.0: {} 4831 + 4832 + regex@6.1.0: 4833 + dependencies: 4834 + regex-utilities: 2.3.0 4835 + 4836 + rehype-expressive-code@0.41.6: 4837 + dependencies: 4838 + expressive-code: 0.41.6 4839 + 4840 + rehype-format@5.0.1: 4841 + dependencies: 4842 + '@types/hast': 3.0.4 4843 + hast-util-format: 1.1.0 4844 + 4845 + rehype-parse@9.0.1: 4846 + dependencies: 4847 + '@types/hast': 3.0.4 4848 + hast-util-from-html: 2.0.3 4849 + unified: 11.0.5 4850 + 4851 + rehype-raw@7.0.0: 4852 + dependencies: 4853 + '@types/hast': 3.0.4 4854 + hast-util-raw: 9.1.0 4855 + vfile: 6.0.3 4856 + 4857 + rehype-recma@1.0.0: 4858 + dependencies: 4859 + '@types/estree': 1.0.8 4860 + '@types/hast': 3.0.4 4861 + hast-util-to-estree: 3.1.3 4862 + transitivePeerDependencies: 4863 + - supports-color 4864 + 4865 + rehype-stringify@10.0.1: 4866 + dependencies: 4867 + '@types/hast': 3.0.4 4868 + hast-util-to-html: 9.0.5 4869 + unified: 11.0.5 4870 + 4871 + rehype@13.0.2: 4872 + dependencies: 4873 + '@types/hast': 3.0.4 4874 + rehype-parse: 9.0.1 4875 + rehype-stringify: 10.0.1 4876 + unified: 11.0.5 4877 + 4878 + remark-directive@3.0.1: 4879 + dependencies: 4880 + '@types/mdast': 4.0.4 4881 + mdast-util-directive: 3.1.0 4882 + micromark-extension-directive: 3.0.2 4883 + unified: 11.0.5 4884 + transitivePeerDependencies: 4885 + - supports-color 4886 + 4887 + remark-gfm@4.0.1: 4888 + dependencies: 4889 + '@types/mdast': 4.0.4 4890 + mdast-util-gfm: 3.1.0 4891 + micromark-extension-gfm: 3.0.0 4892 + remark-parse: 11.0.0 4893 + remark-stringify: 11.0.0 4894 + unified: 11.0.5 4895 + transitivePeerDependencies: 4896 + - supports-color 4897 + 4898 + remark-mdx@3.1.1: 4899 + dependencies: 4900 + mdast-util-mdx: 3.0.0 4901 + micromark-extension-mdxjs: 3.0.0 4902 + transitivePeerDependencies: 4903 + - supports-color 4904 + 4905 + remark-parse@11.0.0: 4906 + dependencies: 4907 + '@types/mdast': 4.0.4 4908 + mdast-util-from-markdown: 2.0.2 4909 + micromark-util-types: 2.0.2 4910 + unified: 11.0.5 4911 + transitivePeerDependencies: 4912 + - supports-color 4913 + 4914 + remark-rehype@11.1.2: 4915 + dependencies: 4916 + '@types/hast': 3.0.4 4917 + '@types/mdast': 4.0.4 4918 + mdast-util-to-hast: 13.2.1 4919 + unified: 11.0.5 4920 + vfile: 6.0.3 4921 + 4922 + remark-smartypants@3.0.2: 4923 + dependencies: 4924 + retext: 9.0.0 4925 + retext-smartypants: 6.2.0 4926 + unified: 11.0.5 4927 + unist-util-visit: 5.1.0 4928 + 4929 + remark-stringify@11.0.0: 4930 + dependencies: 4931 + '@types/mdast': 4.0.4 4932 + mdast-util-to-markdown: 2.1.2 4933 + unified: 11.0.5 4934 + 4935 + retext-latin@4.0.0: 4936 + dependencies: 4937 + '@types/nlcst': 2.0.3 4938 + parse-latin: 7.0.0 4939 + unified: 11.0.5 4940 + 4941 + retext-smartypants@6.2.0: 4942 + dependencies: 4943 + '@types/nlcst': 2.0.3 4944 + nlcst-to-string: 4.0.0 4945 + unist-util-visit: 5.1.0 4946 + 4947 + retext-stringify@4.0.0: 4948 + dependencies: 4949 + '@types/nlcst': 2.0.3 4950 + nlcst-to-string: 4.0.0 4951 + unified: 11.0.5 4952 + 4953 + retext@9.0.0: 4954 + dependencies: 4955 + '@types/nlcst': 2.0.3 4956 + retext-latin: 4.0.0 4957 + retext-stringify: 4.0.0 4958 + unified: 11.0.5 4959 + 4960 + robust-predicates@3.0.2: {} 4961 + 4962 + rollup@4.57.1: 4963 + dependencies: 4964 + '@types/estree': 1.0.8 4965 + optionalDependencies: 4966 + '@rollup/rollup-android-arm-eabi': 4.57.1 4967 + '@rollup/rollup-android-arm64': 4.57.1 4968 + '@rollup/rollup-darwin-arm64': 4.57.1 4969 + '@rollup/rollup-darwin-x64': 4.57.1 4970 + '@rollup/rollup-freebsd-arm64': 4.57.1 4971 + '@rollup/rollup-freebsd-x64': 4.57.1 4972 + '@rollup/rollup-linux-arm-gnueabihf': 4.57.1 4973 + '@rollup/rollup-linux-arm-musleabihf': 4.57.1 4974 + '@rollup/rollup-linux-arm64-gnu': 4.57.1 4975 + '@rollup/rollup-linux-arm64-musl': 4.57.1 4976 + '@rollup/rollup-linux-loong64-gnu': 4.57.1 4977 + '@rollup/rollup-linux-loong64-musl': 4.57.1 4978 + '@rollup/rollup-linux-ppc64-gnu': 4.57.1 4979 + '@rollup/rollup-linux-ppc64-musl': 4.57.1 4980 + '@rollup/rollup-linux-riscv64-gnu': 4.57.1 4981 + '@rollup/rollup-linux-riscv64-musl': 4.57.1 4982 + '@rollup/rollup-linux-s390x-gnu': 4.57.1 4983 + '@rollup/rollup-linux-x64-gnu': 4.57.1 4984 + '@rollup/rollup-linux-x64-musl': 4.57.1 4985 + '@rollup/rollup-openbsd-x64': 4.57.1 4986 + '@rollup/rollup-openharmony-arm64': 4.57.1 4987 + '@rollup/rollup-win32-arm64-msvc': 4.57.1 4988 + '@rollup/rollup-win32-ia32-msvc': 4.57.1 4989 + '@rollup/rollup-win32-x64-gnu': 4.57.1 4990 + '@rollup/rollup-win32-x64-msvc': 4.57.1 4991 + fsevents: 2.3.3 4992 + 4993 + roughjs@4.6.6: 4994 + dependencies: 4995 + hachure-fill: 0.5.2 4996 + path-data-parser: 0.1.0 4997 + points-on-curve: 0.2.0 4998 + points-on-path: 0.2.1 4999 + 5000 + rw@1.3.3: {} 5001 + 5002 + safer-buffer@2.1.2: {} 5003 + 5004 + sax@1.4.4: {} 5005 + 5006 + semver@7.7.4: {} 5007 + 5008 + sharp@0.34.5: 5009 + dependencies: 5010 + '@img/colour': 1.0.0 5011 + detect-libc: 2.1.2 5012 + semver: 7.7.4 5013 + optionalDependencies: 5014 + '@img/sharp-darwin-arm64': 0.34.5 5015 + '@img/sharp-darwin-x64': 0.34.5 5016 + '@img/sharp-libvips-darwin-arm64': 1.2.4 5017 + '@img/sharp-libvips-darwin-x64': 1.2.4 5018 + '@img/sharp-libvips-linux-arm': 1.2.4 5019 + '@img/sharp-libvips-linux-arm64': 1.2.4 5020 + '@img/sharp-libvips-linux-ppc64': 1.2.4 5021 + '@img/sharp-libvips-linux-riscv64': 1.2.4 5022 + '@img/sharp-libvips-linux-s390x': 1.2.4 5023 + '@img/sharp-libvips-linux-x64': 1.2.4 5024 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 5025 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 5026 + '@img/sharp-linux-arm': 0.34.5 5027 + '@img/sharp-linux-arm64': 0.34.5 5028 + '@img/sharp-linux-ppc64': 0.34.5 5029 + '@img/sharp-linux-riscv64': 0.34.5 5030 + '@img/sharp-linux-s390x': 0.34.5 5031 + '@img/sharp-linux-x64': 0.34.5 5032 + '@img/sharp-linuxmusl-arm64': 0.34.5 5033 + '@img/sharp-linuxmusl-x64': 0.34.5 5034 + '@img/sharp-wasm32': 0.34.5 5035 + '@img/sharp-win32-arm64': 0.34.5 5036 + '@img/sharp-win32-ia32': 0.34.5 5037 + '@img/sharp-win32-x64': 0.34.5 5038 + 5039 + shiki@3.22.0: 5040 + dependencies: 5041 + '@shikijs/core': 3.22.0 5042 + '@shikijs/engine-javascript': 3.22.0 5043 + '@shikijs/engine-oniguruma': 3.22.0 5044 + '@shikijs/langs': 3.22.0 5045 + '@shikijs/themes': 3.22.0 5046 + '@shikijs/types': 3.22.0 5047 + '@shikijs/vscode-textmate': 10.0.2 5048 + '@types/hast': 3.0.4 5049 + 5050 + sisteransi@1.0.5: {} 5051 + 5052 + sitemap@8.0.2: 5053 + dependencies: 5054 + '@types/node': 17.0.45 5055 + '@types/sax': 1.2.7 5056 + arg: 5.0.2 5057 + sax: 1.4.4 5058 + 5059 + smol-toml@1.6.0: {} 5060 + 5061 + source-map-js@1.2.1: {} 5062 + 5063 + source-map@0.7.6: {} 5064 + 5065 + space-separated-tokens@2.0.2: {} 5066 + 5067 + stream-replace-string@2.0.0: {} 5068 + 5069 + string-width@4.2.3: 5070 + dependencies: 5071 + emoji-regex: 8.0.0 5072 + is-fullwidth-code-point: 3.0.0 5073 + strip-ansi: 6.0.1 5074 + 5075 + string-width@7.2.0: 5076 + dependencies: 5077 + emoji-regex: 10.6.0 5078 + get-east-asian-width: 1.5.0 5079 + strip-ansi: 7.1.2 5080 + 5081 + stringify-entities@4.0.4: 5082 + dependencies: 5083 + character-entities-html4: 2.1.0 5084 + character-entities-legacy: 3.0.0 5085 + 5086 + strip-ansi@6.0.1: 5087 + dependencies: 5088 + ansi-regex: 5.0.1 5089 + 5090 + strip-ansi@7.1.2: 5091 + dependencies: 5092 + ansi-regex: 6.2.2 5093 + 5094 + style-to-js@1.1.21: 5095 + dependencies: 5096 + style-to-object: 1.0.14 5097 + 5098 + style-to-object@1.0.14: 5099 + dependencies: 5100 + inline-style-parser: 0.2.7 5101 + 5102 + stylis@4.3.6: {} 5103 + 5104 + svgo@4.0.0: 5105 + dependencies: 5106 + commander: 11.1.0 5107 + css-select: 5.2.2 5108 + css-tree: 3.1.0 5109 + css-what: 6.2.2 5110 + csso: 5.0.5 5111 + picocolors: 1.1.1 5112 + sax: 1.4.4 5113 + 5114 + tiny-inflate@1.0.3: {} 5115 + 5116 + tinyexec@1.0.2: {} 5117 + 5118 + tinyglobby@0.2.15: 5119 + dependencies: 5120 + fdir: 6.5.0(picomatch@4.0.3) 5121 + picomatch: 4.0.3 5122 + 5123 + trim-lines@3.0.1: {} 5124 + 5125 + trough@2.2.0: {} 5126 + 5127 + ts-dedent@2.2.0: {} 5128 + 5129 + tsconfck@3.1.6(typescript@5.9.3): 5130 + optionalDependencies: 5131 + typescript: 5.9.3 5132 + 5133 + tslib@2.8.1: 5134 + optional: true 5135 + 5136 + type-fest@4.41.0: {} 5137 + 5138 + typescript@5.9.3: {} 5139 + 5140 + ufo@1.6.3: {} 5141 + 5142 + ultrahtml@1.6.0: {} 5143 + 5144 + uncrypto@0.1.3: {} 5145 + 5146 + unified@11.0.5: 5147 + dependencies: 5148 + '@types/unist': 3.0.3 5149 + bail: 2.0.2 5150 + devlop: 1.1.0 5151 + extend: 3.0.2 5152 + is-plain-obj: 4.1.0 5153 + trough: 2.2.0 5154 + vfile: 6.0.3 5155 + 5156 + unifont@0.7.4: 5157 + dependencies: 5158 + css-tree: 3.1.0 5159 + ofetch: 1.5.1 5160 + ohash: 2.0.11 5161 + 5162 + unist-util-find-after@5.0.0: 5163 + dependencies: 5164 + '@types/unist': 3.0.3 5165 + unist-util-is: 6.0.1 5166 + 5167 + unist-util-is@6.0.1: 5168 + dependencies: 5169 + '@types/unist': 3.0.3 5170 + 5171 + unist-util-modify-children@4.0.0: 5172 + dependencies: 5173 + '@types/unist': 3.0.3 5174 + array-iterate: 2.0.1 5175 + 5176 + unist-util-position-from-estree@2.0.0: 5177 + dependencies: 5178 + '@types/unist': 3.0.3 5179 + 5180 + unist-util-position@5.0.0: 5181 + dependencies: 5182 + '@types/unist': 3.0.3 5183 + 5184 + unist-util-remove-position@5.0.0: 5185 + dependencies: 5186 + '@types/unist': 3.0.3 5187 + unist-util-visit: 5.1.0 5188 + 5189 + unist-util-stringify-position@4.0.0: 5190 + dependencies: 5191 + '@types/unist': 3.0.3 5192 + 5193 + unist-util-visit-children@3.0.0: 5194 + dependencies: 5195 + '@types/unist': 3.0.3 5196 + 5197 + unist-util-visit-parents@6.0.2: 5198 + dependencies: 5199 + '@types/unist': 3.0.3 5200 + unist-util-is: 6.0.1 5201 + 5202 + unist-util-visit@5.1.0: 5203 + dependencies: 5204 + '@types/unist': 3.0.3 5205 + unist-util-is: 6.0.1 5206 + unist-util-visit-parents: 6.0.2 5207 + 5208 + unstorage@1.17.4: 5209 + dependencies: 5210 + anymatch: 3.1.3 5211 + chokidar: 5.0.0 5212 + destr: 2.0.5 5213 + h3: 1.15.5 5214 + lru-cache: 11.2.6 5215 + node-fetch-native: 1.6.7 5216 + ofetch: 1.5.1 5217 + ufo: 1.6.3 5218 + 5219 + util-deprecate@1.0.2: {} 5220 + 5221 + uuid@11.1.0: {} 5222 + 5223 + vfile-location@5.0.3: 5224 + dependencies: 5225 + '@types/unist': 3.0.3 5226 + vfile: 6.0.3 5227 + 5228 + vfile-message@4.0.3: 5229 + dependencies: 5230 + '@types/unist': 3.0.3 5231 + unist-util-stringify-position: 4.0.0 5232 + 5233 + vfile@6.0.3: 5234 + dependencies: 5235 + '@types/unist': 3.0.3 5236 + vfile-message: 4.0.3 5237 + 5238 + vite@6.4.1: 5239 + dependencies: 5240 + esbuild: 0.25.12 5241 + fdir: 6.5.0(picomatch@4.0.3) 5242 + picomatch: 4.0.3 5243 + postcss: 8.5.6 5244 + rollup: 4.57.1 5245 + tinyglobby: 0.2.15 5246 + optionalDependencies: 5247 + fsevents: 2.3.3 5248 + 5249 + vitefu@1.1.1(vite@6.4.1): 5250 + optionalDependencies: 5251 + vite: 6.4.1 5252 + 5253 + vscode-jsonrpc@8.2.0: {} 5254 + 5255 + vscode-languageserver-protocol@3.17.5: 5256 + dependencies: 5257 + vscode-jsonrpc: 8.2.0 5258 + vscode-languageserver-types: 3.17.5 5259 + 5260 + vscode-languageserver-textdocument@1.0.12: {} 5261 + 5262 + vscode-languageserver-types@3.17.5: {} 5263 + 5264 + vscode-languageserver@9.0.1: 5265 + dependencies: 5266 + vscode-languageserver-protocol: 3.17.5 5267 + 5268 + vscode-uri@3.1.0: {} 5269 + 5270 + web-namespaces@2.0.1: {} 5271 + 5272 + which-pm-runs@1.1.0: {} 5273 + 5274 + widest-line@5.0.0: 5275 + dependencies: 5276 + string-width: 7.2.0 5277 + 5278 + wrap-ansi@9.0.2: 5279 + dependencies: 5280 + ansi-styles: 6.2.3 5281 + string-width: 7.2.0 5282 + strip-ansi: 7.1.2 5283 + 5284 + xxhash-wasm@1.1.0: {} 5285 + 5286 + yargs-parser@21.1.1: {} 5287 + 5288 + yocto-queue@1.2.2: {} 5289 + 5290 + yocto-spinner@0.2.3: 5291 + dependencies: 5292 + yoctocolors: 2.1.2 5293 + 5294 + yoctocolors@2.1.2: {} 5295 + 5296 + zod-to-json-schema@3.25.1(zod@3.25.76): 5297 + dependencies: 5298 + zod: 3.25.76 5299 + 5300 + zod-to-ts@1.2.0(typescript@5.9.3)(zod@3.25.76): 5301 + dependencies: 5302 + typescript: 5.9.3 5303 + zod: 3.25.76 5304 + 5305 + zod@3.25.76: {} 5306 + 5307 + zwitch@2.0.4: {}
+1
docs/public/favicon.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path fill-rule="evenodd" d="M81 36 64 0 47 36l-1 2-9-10a6 6 0 0 0-9 9l10 10h-2L0 64l36 17h2L28 91a6 6 0 1 0 9 9l9-10 1 2 17 36 17-36v-2l9 10a6 6 0 1 0 9-9l-9-9 2-1 36-17-36-17-2-1 9-9a6 6 0 1 0-9-9l-9 10v-2Zm-17 2-2 5c-4 8-11 15-19 19l-5 2 5 2c8 4 15 11 19 19l2 5 2-5c4-8 11-15 19-19l5-2-5-2c-8-4-15-11-19-19l-2-5Z" clip-rule="evenodd"/><path d="M118 19a6 6 0 0 0-9-9l-3 3a6 6 0 1 0 9 9l3-3Zm-96 4c-2 2-6 2-9 0l-3-3a6 6 0 1 1 9-9l3 3c3 2 3 6 0 9Zm0 82c-2-2-6-2-9 0l-3 3a6 6 0 1 0 9 9l3-3c3-2 3-6 0-9Zm96 4a6 6 0 0 1-9 9l-3-3a6 6 0 1 1 9-9l3 3Z"/><style>path{fill:#000}@media (prefers-color-scheme:dark){path{fill:#fff}}</style></svg>
docs/src/assets/houston.webp

This is a binary file and will not be displayed.

+173
docs/src/components/Ad.astro
··· 1 + --- 2 + import { LinkButton, Icon } from '@astrojs/starlight/components'; 3 + --- 4 + 5 + <section class="sponsor-card"> 6 + <div class="content"> 7 + <div class="header"> 8 + <Icon name="heart" size="2.5rem" class="heart-icon" /> 9 + <h4><code>vic/flake-aspects</code>?</h4> 10 + </div> 11 + 12 + <LinkButton href="https://dendritic.oeiuwq.com/sponsor" variant="primary">Become a Sponsor</LinkButton> 13 + 14 + <p class="description"> 15 + flake-aspects is part of <a href="https://dendritic.oeiuwq.com">@vic's Dendritic Ecosystem</a> — made with love and maintained with passion. 16 + </p> 17 + 18 + <ul class="ecosystem"> 19 + <li><a href="https://github.com/vic/import-tree">import-tree</a></li> 20 + <li><a href="https://github.com/vic/flake-file">flake-file</a></li> 21 + <li><a href="https://github.com/vic/with-inputs">with-inputs</a></li> 22 + <li><a href="https://github.com/vic/den">den</a></li> 23 + <li><a href="https://github.com/vic/denful">denful</a></li> 24 + <li><a href="https://github.com/vic/dendrix">dendrix</a></li> 25 + </ul> 26 + 27 + </div> 28 + </section> 29 + 30 + <style> 31 + .sponsor-card { 32 + border-radius: 1rem; 33 + padding: 2rem 1.5rem; 34 + margin: 2rem 1rem; 35 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); 36 + transition: all 0.4s ease; 37 + max-width: 20em; 38 + } 39 + 40 + .sponsor-card:hover { 41 + background: linear-gradient(135deg, #a855f7 0%, #06b6d4 100%); 42 + box-shadow: 0 15px 40px rgba(0, 0, 0, 0.2); 43 + transform: translateY(-2px); 44 + } 45 + 46 + .content * { 47 + color: var(--sl-color-fg); 48 + } 49 + 50 + .content { 51 + text-align: center; 52 + } 53 + 54 + .content:hover * { 55 + color: white; 56 + } 57 + 58 + .content a:link { 59 + color: inherit; 60 + } 61 + 62 + .content a.primary:link { 63 + color: var(--sl-color-bg); 64 + } 65 + 66 + .content a.primary:visited { 67 + color: var(--sl-color-bg); 68 + } 69 + 70 + .content a:visited { 71 + color: inherit; 72 + } 73 + 74 + .header { 75 + display: flex; 76 + align-items: center; 77 + justify-content: center; 78 + gap: 0.75rem; 79 + margin-bottom: 1rem; 80 + } 81 + 82 + .heart-icon { 83 + animation: pulse 2s ease-in-out infinite; 84 + } 85 + 86 + @keyframes pulse { 87 + 0%, 100% { 88 + opacity: 1; 89 + } 90 + 50% { 91 + opacity: 0.7; 92 + } 93 + } 94 + 95 + h3 { 96 + font-size: 1.5rem; 97 + font-weight: 700; 98 + margin: 0; 99 + letter-spacing: -0.02em; 100 + } 101 + 102 + .description { 103 + font-size: 0.95rem; 104 + line-height: 1.6; 105 + margin: 1rem 0 1.5rem 0; 106 + opacity: 0.95; 107 + } 108 + 109 + .description a { 110 + font-weight: 600; 111 + text-decoration: underline; 112 + text-decoration-thickness: 2px; 113 + text-underline-offset: 4px; 114 + } 115 + 116 + .description a:hover { 117 + opacity: 0.85; 118 + } 119 + 120 + .ecosystem { 121 + list-style: none; 122 + padding: 0; 123 + margin: 1.5rem 0; 124 + display: grid; 125 + grid-template-columns: repeat(2, 1fr); 126 + gap: 0.75rem; 127 + font-size: 0.9rem; 128 + } 129 + 130 + .ecosystem li { 131 + background: rgba(255, 255, 255, 0.15); 132 + padding: 0.5rem 0.75rem; 133 + border-radius: 0.5rem; 134 + backdrop-filter: blur(10px); 135 + } 136 + 137 + .ecosystem a { 138 + text-decoration: none; 139 + font-weight: 500; 140 + transition: opacity 0.2s; 141 + } 142 + 143 + .ecosystem a:hover { 144 + opacity: 0.85; 145 + text-decoration: underline; 146 + } 147 + 148 + .cta-button { 149 + display: inline-flex; 150 + align-items: center; 151 + gap: 0.5rem; 152 + background: rgba(255, 255, 255, 0.25); 153 + padding: 0.875rem 1.75rem; 154 + border-radius: 0.75rem; 155 + font-weight: 600; 156 + font-size: 1rem; 157 + text-decoration: none; 158 + border: 2px solid rgba(255, 255, 255, 0.4); 159 + transition: all 0.3s ease; 160 + margin-top: 1rem; 161 + cursor: pointer; 162 + } 163 + 164 + .cta-button:hover { 165 + background: rgba(255, 255, 255, 0.35); 166 + border-color: rgba(255, 255, 255, 0.6); 167 + transform: scale(1.05); 168 + } 169 + 170 + .cta-button:active { 171 + transform: scale(0.98); 172 + } 173 + </style>
+8
docs/src/components/Footer.astro
··· 1 + --- 2 + import DefaultFooter from '@astrojs/starlight/components/Footer.astro'; 3 + import FooterLinks from './FooterLinks.astro'; 4 + --- 5 + 6 + <DefaultFooter /> 7 + <FooterLinks /> 8 +
+51
docs/src/components/FooterLinks.astro
··· 1 + --- 2 + import { Icon } from '@astrojs/starlight/components'; 3 + --- 4 + 5 + <section class="sl-flex"> 6 + <a href="/contributing" class="sl-flex"> 7 + <Icon name="rocket" size="1.2em" /> 8 + Contribute 9 + </a> 10 + 11 + <a href="https://den.oeiuwq.com/community" class="sl-flex"> 12 + <svg 13 + xmlns="http://www.w3.org/2000/svg" 14 + width="16" 15 + height="16" 16 + viewBox="0 0 24 24" 17 + fill="currentColor" 18 + style="width:1.2em;height:1.2em;" 19 + > 20 + <path 21 + d="M12.3 12.22A4.92 4.92 0 0 0 14 8.5a5 5 0 0 0-10 0a4.92 4.92 0 0 0 1.7 3.72A8 8 0 0 0 1 19.5a1 1 0 0 0 2 0a6 6 0 0 1 12 0a1 1 0 0 0 2 0a8 8 0 0 0-4.7-7.28M9 11.5a3 3 0 1 1 3-3a3 3 0 0 1-3 3m9.74.32A5 5 0 0 0 15 3.5a1 1 0 0 0 0 2a3 3 0 0 1 3 3a3 3 0 0 1-1.5 2.59a1 1 0 0 0-.5.84a1 1 0 0 0 .45.86l.39.26l.13.07a7 7 0 0 1 4 6.38a1 1 0 0 0 2 0a9 9 0 0 0-4.23-7.68" 22 + ></path> 23 + </svg> 24 + Community 25 + </a> 26 + 27 + <a href="https://dendritic.oeiuwq.com/sponsor" class="sl-flex"> 28 + <Icon name="heart" size="1.2em" /> 29 + Sponsor 30 + </a> 31 + </section> 32 + 33 + <style> 34 + section { 35 + justify-content: center; 36 + flex-wrap: wrap; 37 + gap: 0.5rem 1.5rem; 38 + font-size: var(--sl-text-sm); 39 + } 40 + 41 + a { 42 + align-items: center; 43 + text-decoration: none; 44 + gap: 0.5rem; 45 + color: var(--sl-color-gray-3); 46 + } 47 + 48 + a:hover { 49 + color: var(--sl-color-white); 50 + } 51 + </style>
+9
docs/src/components/PageSidebar.astro
··· 1 + --- 2 + import Default from '@astrojs/starlight/components/PageSidebar.astro'; 3 + import Ad from './Ad.astro'; 4 + --- 5 + 6 + <Default /> 7 + 8 + <Ad /> 9 +
+154
docs/src/components/Sidebar.astro
··· 1 + --- 2 + import MobileMenuFooter from '@astrojs/starlight/components/MobileMenuFooter.astro'; 3 + import SidebarPersister from '@astrojs/starlight/components/SidebarPersister.astro'; 4 + import SidebarSublist from '@astrojs/starlight/components/SidebarSublist.astro'; 5 + 6 + const { sidebar, id } = Astro.locals.starlightRoute; 7 + 8 + import { Icon } from '@astrojs/starlight/components'; 9 + 10 + import TabbedContent from './tabs/TabbedContent.astro'; 11 + import TabListItem from './tabs/TabListItem.astro'; 12 + import TabPanel from './tabs/TabPanel.astro'; 13 + 14 + /** Get the icon for a group. Update the icon names in the array to change the icons associated with a group. */ 15 + const getIcon = (index: number) => 16 + (['nix', 'open-book', 'rocket', 'puzzle', 'information', 'setting'] as const)[index]; 17 + 18 + /** Convert a group label to an `id` we can use to identify tab panels. */ 19 + // The id is prefixed to avoid clashing with existing heading IDs on the page. 20 + const makeId = (label: string) => '__tab-' + label.toLowerCase().replaceAll(/\s+/g, '-'); 21 + 22 + /** Determine if an array of sidebar items contains the current page. */ 23 + const isCurrent = (sidebar: SidebarEntry[]): boolean => 24 + sidebar 25 + .map((entry) => (entry.type === 'link' ? entry.isCurrent : isCurrent(entry.entries))) 26 + .some((entry) => entry === true); 27 + 28 + --- 29 + <SidebarPersister> 30 + <TabbedContent class="tabbed-sidebar"> 31 + <Fragment slot="tab-list"> 32 + { 33 + sidebar.map(({ label, entries }, index) => ( 34 + <TabListItem id={makeId(label)} initial={isCurrent(entries)} class="tab-item"> 35 + <Icon class="icon" name={getIcon(index)} /> {label} 36 + </TabListItem> 37 + )) 38 + } 39 + </Fragment> 40 + { 41 + sidebar.map(({ label, entries }) => ( 42 + <TabPanel id={makeId(label)} initial={isCurrent(entries)}> 43 + <SidebarSublist sublist={entries} /> 44 + </TabPanel> 45 + )) 46 + } 47 + </TabbedContent> 48 + </SidebarPersister> 49 + 50 + <div class="md:sl-hidden"> 51 + <MobileMenuFooter /> 52 + </div> 53 + 54 + <style> 55 + /** Add "EN" to the end of sidebar items with the `fallback` class. */ 56 + :global(.fallback)::after { 57 + content: 'EN'; 58 + vertical-align: super; 59 + font-size: 0.75em; 60 + font-weight: 700; 61 + } 62 + 63 + /** Align sponsors at sidebar bottom when there is room. */ 64 + .desktop-footer { 65 + margin-top: auto; 66 + } 67 + 68 + /** Always show the scrollbar gutter. */ 69 + :global(.sidebar-pane) { 70 + overflow-y: scroll; 71 + } 72 + 73 + /* Styles for the custom tab switcher. */ 74 + .tabbed-sidebar { 75 + /* Layout variables */ 76 + --tab-switcher-border-width: 1px; 77 + --tab-switcher-padding: calc(0.25rem - var(--tab-switcher-border-width)); 78 + --tab-item-border-radius: 0.5rem; 79 + --tab-switcher-border-radius: calc( 80 + var(--tab-item-border-radius) + var(--tab-switcher-padding) + var(--tab-switcher-border-width) 81 + ); 82 + 83 + /* Color variables */ 84 + --tab-switcher-border-color: var(--sl-color-hairline-light); 85 + --tab-switcher-background-color: var(--sl-color-gray-7, var(--sl-color-gray-6)); 86 + --tab-switcher-text-color: var(--sl-color-gray-3); 87 + --tab-switcher-text-color--active: var(--sl-color-white); 88 + --tab-switcher-icon-color: var(--sl-color-gray-4); 89 + --tab-switcher-icon-color--active: var(--sl-color-text-accent); 90 + --tab-item-background-color--hover: var(--sl-color-gray-6); 91 + --tab-item-background-color--active: var(--sl-color-black); 92 + } 93 + /* Dark theme variations */ 94 + :global([data-theme='dark']) .tabbed-sidebar { 95 + --tab-switcher-text-color: var(--sl-color-gray-2); 96 + --tab-switcher-icon-color: var(--sl-color-gray-3); 97 + --tab-item-background-color--hover: var(--sl-color-gray-5); 98 + } 99 + 100 + @media (min-width: 50rem) { 101 + /* Dark theme variations with the desktop sidebar visible */ 102 + :global([data-theme='dark']) .tabbed-sidebar { 103 + --tab-switcher-background-color: var(--sl-color-black); 104 + --tab-item-background-color--hover: var(--sl-color-gray-6); 105 + --tab-item-background-color--active: var(--sl-color-gray-6); 106 + } 107 + } 108 + 109 + .tabbed-sidebar.tab-list { 110 + border: var(--tab-switcher-border-width) solid var(--tab-switcher-border-color); 111 + border-radius: var(--tab-switcher-border-radius); 112 + display: flex; 113 + flex-direction: column; 114 + gap: 0.25rem; 115 + padding: var(--tab-switcher-padding); 116 + background-color: var(--tab-switcher-background-color); 117 + margin-bottom: 1.5rem; 118 + } 119 + 120 + .tab-item :global(a) { 121 + border: var(--tab-switcher-border-width) solid transparent; 122 + border-radius: var(--tab-item-border-radius); 123 + display: flex; 124 + align-items: center; 125 + gap: 0.5rem; 126 + padding: calc(0.5rem - var(--tab-switcher-border-width)); 127 + background-clip: padding-box; 128 + line-height: var(--sl-line-height-headings); 129 + text-decoration: none; 130 + color: var(--tab-switcher-text-color); 131 + font-weight: 600; 132 + } 133 + 134 + .tab-item :global(a:hover) { 135 + color: var(--tab-switcher-text-color--active); 136 + background-color: var(--tab-item-background-color--hover); 137 + } 138 + .tab-item :global(a[aria-selected='true']) { 139 + border-color: var(--tab-switcher-border-color); 140 + color: var(--tab-switcher-text-color--active); 141 + background-color: var(--tab-item-background-color--active); 142 + } 143 + 144 + .icon { 145 + margin: 0.25rem; 146 + color: var(--tab-switcher-icon-color); 147 + } 148 + .tab-item :global(a:hover) .icon { 149 + color: inherit; 150 + } 151 + .tab-item :global(a[aria-selected='true']) .icon { 152 + color: var(--tab-switcher-icon-color--active); 153 + } 154 + </style>
+16
docs/src/components/SocialIcons.astro
··· 1 + --- 2 + 3 + import Default from '@astrojs/starlight/components/SocialIcons.astro'; 4 + 5 + --- 6 + 7 + <a href="https://github.com/vic/flake-aspects/releases"><img src="https://img.shields.io/github/v/release/vic/flake-aspects?logo=github&color=white"/></a> 8 + 9 + <a href="https://deepwiki.com/vic/flake-aspects"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a> 10 + 11 + <a href="https://dendritic.oeiuwq.com"> <img src="https://img.shields.io/badge/@vic-Dendritic libs-informational?logo=nixos&logoColor=white" alt="Vic Dendritic Nix"/> </a> 12 + 13 + <a href="https://dendritic.oeiuwq.com/sponsor"><img src="https://img.shields.io/badge/Sponsor-@vic-white?logo=githubsponsors&logoColor=white" alt="Sponsor Den"/> 14 + </a> 15 + 16 + <Default />
+21
docs/src/components/tabs/LICENSE
··· 1 + MIT License 2 + 3 + Copyright (c) 2022 withastro 4 + 5 + Permission is hereby granted, free of charge, to any person obtaining a copy 6 + of this software and associated documentation files (the "Software"), to deal 7 + in the Software without restriction, including without limitation the rights 8 + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 + copies of the Software, and to permit persons to whom the Software is 10 + furnished to do so, subject to the following conditions: 11 + 12 + The above copyright notice and this permission notice shall be included in all 13 + copies or substantial portions of the Software. 14 + 15 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 + SOFTWARE.
+23
docs/src/components/tabs/TabListItem.astro
··· 1 + --- 2 + import type { HTMLAttributes } from 'astro/types'; 3 + 4 + export interface Props { 5 + /** Unique ID for the tab panel this item links to. */ 6 + id: string; 7 + /** Mark this item as visible when the page loads. */ 8 + initial?: boolean; 9 + /** Additional class names to apply to the `<li>` */ 10 + class?: string; 11 + } 12 + 13 + const { id, initial } = Astro.props; 14 + const linkAttributes: HTMLAttributes<'a'> = initial 15 + ? { 'data-initial': 'true', 'aria-selected': 'true' } 16 + : {}; 17 + --- 18 + 19 + <li class:list={Astro.props.class}> 20 + <a href={'#' + id} class="tab-link" {...linkAttributes}> 21 + <slot /> 22 + </a> 23 + </li>
+44
docs/src/components/tabs/TabPanel.astro
··· 1 + --- 2 + import type { HTMLAttributes } from 'astro/types'; 3 + 4 + export interface Props { 5 + id: string; 6 + initial?: boolean; 7 + } 8 + const { id, initial } = Astro.props; 9 + const attributes: HTMLAttributes<'div'> = initial ? { 'data-initial': 'true' } : {}; 10 + --- 11 + 12 + <div {id} {...attributes}> 13 + <slot /> 14 + </div> 15 + 16 + <style> 17 + /* 18 + These styles avoid layout shift on page load. 19 + We don’t want to hide all tabs forever in case JS never loads, 20 + so instead we hide them initially with an animation that jumps 21 + from hidden to visible after 10s. Usually JS will run before 22 + 10s at which point we’ll rely on the `hidden` attribute and 23 + toggle off the animation using `role='tabpanel'`. Both these 24 + attributes are injected by the JS. 25 + */ 26 + 27 + div { 28 + animation: tab-panel-appear 10s steps(2, jump-none) 1; 29 + } 30 + 31 + div[data-initial], 32 + div[role='tabpanel'] { 33 + animation: none; 34 + } 35 + 36 + @keyframes tab-panel-appear { 37 + from { 38 + /* `content-visibility` is set as well as `display` to work around a Firefox 39 + bug where animations containing only `display: none` don’t play. */ 40 + display: none; 41 + content-visibility: hidden; 42 + } 43 + } 44 + </style>
+173
docs/src/components/tabs/TabbedContent.astro
··· 1 + --- 2 + import TabListItem from './TabListItem.astro'; 3 + 4 + export interface Props { 5 + /** 6 + * List of content for the tab list. 7 + * 8 + * To use more complex mark-up for the tab list, pass `<TabListItem>`s 9 + * inside a `<Fragment slot="tab-list">`. 10 + */ 11 + tabs?: { label: string; id: string; initial?: boolean }[]; 12 + /** Enable default styles for the tab list and panels. */ 13 + styled?: boolean; 14 + /** Additional class names to apply to `.tab-list` and `.panels`. */ 15 + class?: string; 16 + } 17 + 18 + const { tabs, styled } = Astro.props as Props; 19 + --- 20 + 21 + <tabbed-content> 22 + <ul class:list={['tab-list', Astro.props.class, { 'tab-list--styled': styled }]}> 23 + <slot name="tab-list"> 24 + { 25 + tabs?.map((tab) => ( 26 + <TabListItem id={tab.id} initial={tab.initial}> 27 + {tab.label} 28 + </TabListItem> 29 + )) 30 + } 31 + </slot> 32 + </ul> 33 + 34 + <div class:list={['panels', Astro.props.class, { 'panels--styled': styled }]}> 35 + <slot /> 36 + </div> 37 + </tabbed-content> 38 + 39 + <style> 40 + .tab-list { 41 + list-style: none; 42 + padding: 0; 43 + } 44 + .tab-list--styled { 45 + display: flex; 46 + margin-top: -1px; 47 + overflow-x: auto; 48 + overflow-y: hidden; 49 + } 50 + @media (min-width: 72em) { 51 + .tab-list--styled { 52 + justify-content: space-between; 53 + margin-top: 0; 54 + padding: 1px; 55 + } 56 + } 57 + 58 + .panels--styled { 59 + padding-left: 1px; 60 + padding-right: 1px; 61 + } 62 + </style> 63 + 64 + <script> 65 + class Tabs extends HTMLElement { 66 + readonly id = Math.floor(Math.random() * 10e10).toString(32); 67 + count = 0; 68 + TabStore: Set<HTMLElement>[] = []; 69 + PanelStore: Set<HTMLElement>[] = []; 70 + 71 + constructor() { 72 + super(); 73 + 74 + // Get relevant elements and collections 75 + const panels = this.querySelectorAll<HTMLElement>('.panels > [id]'); 76 + const tablist = this.querySelector('.tab-list')!; 77 + const tabs = tablist.querySelectorAll('a'); 78 + 79 + // Add the tablist role to the first <ul> in the .tabbed container 80 + tablist.setAttribute('role', 'tablist'); 81 + 82 + let initialTab = 0; 83 + 84 + // Add semantics are remove user focusability for each tab 85 + Array.prototype.forEach.call(tabs, (tab: HTMLElement, i: number) => { 86 + tab.setAttribute('role', 'tab'); 87 + tab.setAttribute('id', this.id + 'tab' + this.count++); 88 + tab.setAttribute('tabindex', '-1'); 89 + tab.parentElement?.setAttribute('role', 'presentation'); 90 + if (!this.TabStore[i]) this.TabStore.push(new Set()); 91 + this.TabStore[i].add(tab); 92 + if ('initial' in tab.dataset && tab.dataset.initial !== 'false') initialTab = i; 93 + 94 + // Handle clicking of tabs for mouse users 95 + const onClick = (e: MouseEvent) => { 96 + e.preventDefault(); 97 + const currentTab = tablist.querySelector('[aria-selected]'); 98 + if (e.currentTarget !== currentTab) { 99 + this.switchTab(e.currentTarget as HTMLElement, i); 100 + } 101 + }; 102 + tab.addEventListener('click', onClick); 103 + tab.addEventListener('auxclick', onClick); 104 + 105 + // Handle keydown events for keyboard users 106 + tab.addEventListener('keydown', (e) => { 107 + // Get the index of the current tab in the tabs node list 108 + const index: number = Array.prototype.indexOf.call(tabs, e.currentTarget); 109 + // Work out which key the user is pressing and 110 + // Calculate the new tab's index where appropriate 111 + const dir = 112 + e.key === 'ArrowLeft' 113 + ? index - 1 114 + : e.key === 'ArrowRight' 115 + ? index + 1 116 + : e.key === 'Home' 117 + ? 0 118 + : e.key === 'End' 119 + ? tabs.length - 1 120 + : null; 121 + if (dir !== null) { 122 + e.preventDefault(); 123 + if (tabs[dir]) this.switchTab(tabs[dir], dir); 124 + } 125 + }); 126 + }); 127 + 128 + // Add tab panel semantics and hide them all 129 + Array.prototype.forEach.call(panels, (panel: HTMLElement, i: number) => { 130 + panel.setAttribute('role', 'tabpanel'); 131 + panel.setAttribute('tabindex', '-1'); 132 + panel.setAttribute('aria-labelledby', tabs[i].id); 133 + panel.hidden = true; 134 + if (!this.PanelStore[i]) this.PanelStore.push(new Set()); 135 + this.PanelStore[i].add(panel); 136 + }); 137 + 138 + // Activate and reveal the initial tab panel 139 + tabs[initialTab].removeAttribute('tabindex'); 140 + tabs[initialTab].setAttribute('aria-selected', 'true'); 141 + panels[initialTab].hidden = false; 142 + } 143 + 144 + // The tab switching function 145 + switchTab(newTab: HTMLElement, index: number) { 146 + this.TabStore.forEach((store) => 147 + store.forEach((oldTab) => { 148 + oldTab.removeAttribute('aria-selected'); 149 + oldTab.setAttribute('tabindex', '-1'); 150 + }) 151 + ); 152 + this.TabStore[index].forEach((newTab) => { 153 + // Make the active tab focusable by the user (Tab key) 154 + newTab.removeAttribute('tabindex'); 155 + // Set the selected state 156 + newTab.setAttribute('aria-selected', 'true'); 157 + }); 158 + 159 + this.PanelStore.forEach((store) => 160 + store.forEach((oldPanel) => { 161 + oldPanel.hidden = true; 162 + }) 163 + ); 164 + this.PanelStore[index].forEach((newPanel) => { 165 + newPanel.hidden = false; 166 + }); 167 + 168 + newTab.focus(); 169 + } 170 + } 171 + 172 + customElements.define('tabbed-content', Tabs); 173 + </script>
+7
docs/src/content.config.ts
··· 1 + import { defineCollection } from 'astro:content'; 2 + import { docsLoader } from '@astrojs/starlight/loaders'; 3 + import { docsSchema } from '@astrojs/starlight/schema'; 4 + 5 + export const collections = { 6 + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), 7 + };
+96
docs/src/content/docs/concepts/aspects.mdx
··· 1 + --- 2 + title: Aspects & Resolution 3 + description: How aspect submodules are defined and resolved into Nix modules. 4 + --- 5 + 6 + import { Aside } from '@astrojs/starlight/components'; 7 + 8 + ## Aspect structure 9 + 10 + Each aspect is a Nix submodule ([`nix/types.nix`](https://github.com/vic/flake-aspects/blob/main/nix/types.nix)) with: 11 + 12 + | Attribute | Type | Purpose | 13 + |---|---|---| 14 + | `name` | `str` | Auto-set to the attribute name | 15 + | `description` | `str` | Human-readable description | 16 + | `<class>` | `deferredModule` | Freeform: any key not in this table is a class-specific config | 17 + | `includes` | `listOf providerType` | Dependencies on other aspects | 18 + | `provides` / `_` | `submodule` | Nested sub-aspects (see [Providers](/concepts/providers/)) | 19 + | `__functor` | `function` | Override resolution behavior (see [Functor guide](/guides/functor/)) | 20 + | `resolve` | internal | `{ class, aspect-chain? } → module` | 21 + | `modules` | internal | `<class> → resolved-module` (lazy attrset) | 22 + 23 + An aspect is simultaneously an attribute set (with class configs) and callable (via `__functor`). 24 + 25 + ## Defining aspects 26 + 27 + ```nix 28 + flake.aspects = { 29 + my-desktop = { 30 + nixos = { services.xserver.enable = true; }; 31 + darwin = { services.yabai.enable = true; }; 32 + }; 33 + }; 34 + ``` 35 + 36 + Each key under the aspect that is not a reserved attribute (`name`, `description`, `includes`, `provides`, `_`, `__functor`) is treated as a **class name** with its value being a deferred Nix module. 37 + 38 + ## Resolution 39 + 40 + Source: [`nix/resolve.nix`](https://github.com/vic/flake-aspects/blob/main/nix/resolve.nix) 41 + 42 + ``` 43 + resolve : class → aspect-chain → provided → { imports } 44 + ``` 45 + 46 + Given a `class` (e.g. `"nixos"`) and the aspect config: 47 + 48 + 1. Extract `provided.${class}` (the class-specific config) — may be absent. 49 + 2. Extract `provided.includes` — the list of dependency providers. 50 + 3. For each include, invoke it with `{ class, aspect-chain }` and recurse. 51 + 4. Return `{ imports = [ class-config ] ++ [ recursive-include-results ] }`. 52 + 53 + The result is a single Nix module whose `imports` list contains all transitively collected class-specific configs. 54 + 55 + ```mermaid 56 + graph TD 57 + A["aspect.resolve { class = 'nixos' }"] 58 + A --> C["aspect.nixos config"] 59 + A --> I["aspect.includes"] 60 + I --> D1["dep1.resolve { class = 'nixos' }"] 61 + I --> D2["dep2.resolve { class = 'nixos' }"] 62 + D1 --> M["merged { imports = [...] }"] 63 + D2 --> M 64 + C --> M 65 + ``` 66 + 67 + ## The `aspect-chain` 68 + 69 + The `aspect-chain` is the call stack during resolution — the list of aspect configs that led to the current point (most recent last). It grows by one entry on each recursive call. 70 + 71 + Providers receive `{ class, aspect-chain }` and can inspect who is including them: 72 + 73 + ```nix 74 + provides.logging = { aspect-chain, class }: 75 + let caller = (lib.last aspect-chain).name; 76 + in { ${class}.tag = "from-${caller}"; }; 77 + ``` 78 + 79 + <Aside> 80 + Tests: [`aspect_chain.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_chain.nix) · 81 + [`aspect_modules_resolved.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_modules_resolved.nix) 82 + </Aside> 83 + 84 + ## Accessing resolved modules 85 + 86 + Two equivalent ways: 87 + 88 + ```nix 89 + # Via .resolve 90 + aspect.resolve { class = "nixos"; } 91 + 92 + # Via .modules 93 + aspect.modules.nixos 94 + ``` 95 + 96 + Both return the same fully-resolved Nix module.
+81
docs/src/content/docs/concepts/providers.mdx
··· 1 + --- 2 + title: Providers & Fixpoint 3 + description: Nested sub-aspects, fixpoint semantics, and the provides/_ shorthand. 4 + --- 5 + 6 + import { Aside } from '@astrojs/starlight/components'; 7 + 8 + ## `provides` and `_` 9 + 10 + Aspects can expose sub-aspects through the `provides` attribute. The `_` attribute is a shorthand alias. 11 + 12 + ```nix 13 + flake.aspects = { aspects, ... }: { 14 + gaming = { 15 + nixos = { }; 16 + provides.emulation = { 17 + nixos = { }; 18 + _.nes.nixos = { }; # _ is alias for provides 19 + }; 20 + }; 21 + my-host.includes = [ aspects.gaming._.emulation._.nes ]; 22 + }; 23 + ``` 24 + 25 + Each entry in `provides` is itself an aspect — it has its own `name`, `includes`, class configs, and can nest further. 26 + 27 + Providers that are functions receive `{ class, aspect-chain }`: 28 + 29 + ```nix 30 + provides.logging = { class, aspect-chain }: { 31 + ${class}.enableLogging = true; 32 + }; 33 + ``` 34 + 35 + <Aside> 36 + Test: [`aspect_provides.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_provides.nix) 37 + </Aside> 38 + 39 + ## Fixpoint semantics 40 + 41 + Both the top-level `flake.aspects` and each `provides` submodule receive an `aspects` argument — a fixpoint of their sibling scope. This means: 42 + 43 + - **Top-level aspects** can reference each other: `aspects.foo`, `aspects.bar`. 44 + - **Providers** can reference siblings: `aspects.sibling` within the same `provides` block. 45 + - **Providers** can reference top-level aspects via closure. 46 + 47 + ```nix 48 + flake.aspects = { aspects, ... }: { 49 + two.provides = { aspects, ... }: { 50 + sub = { 51 + classOne = { }; 52 + includes = [ aspects.sibling ]; 53 + }; 54 + sibling.classOne = { }; 55 + }; 56 + five.classOne = { }; 57 + one.includes = [ 58 + aspects.two._.sub # reaches into two's providers 59 + ]; 60 + }; 61 + ``` 62 + 63 + The fixpoint is implemented via `freeformType` with `_module.args.aspects = config` in [types.nix](https://github.com/vic/flake-aspects/blob/main/nix/types.nix), so `aspects` always refers to the evaluated sibling scope. 64 + 65 + <Aside> 66 + Test: [`aspect_fixpoint.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_fixpoint.nix) — resolves aspects from five levels: top-level `aspects.five`, provider-local `aspects.four`, and cross-scope `aspects.two._.sub`. 67 + </Aside> 68 + 69 + ## Provider types 70 + 71 + The type system ([`nix/types.nix`](https://github.com/vic/flake-aspects/blob/main/nix/types.nix)) accepts several provider shapes: 72 + 73 + | Shape | Description | 74 + |---|---| 75 + | Aspect attrset | Direct `{ classX = ...; includes = [...]; }` | 76 + | `{ class, aspect-chain } → aspect` | Context-aware provider | 77 + | `{ class } → aspect` | Provider needing only class | 78 + | `{ aspect-chain } → aspect` | Provider needing only chain | 79 + | `args → provider` | Curried — parametric (see [guide](/guides/parametric/)) | 80 + 81 + All of these can appear in `includes` or as `provides` entries. The type system distinguishes them via `isProviderFn` and `isSubmoduleFn` checks.
+65
docs/src/content/docs/concepts/transpose.mdx
··· 1 + --- 2 + title: Transpose 3 + description: The generic 2-level attribute set transposition primitive. 4 + --- 5 + 6 + import { Aside } from '@astrojs/starlight/components'; 7 + 8 + ## What it does 9 + 10 + `transpose` swaps the outer two levels of a nested attribute set: 11 + 12 + ```nix 13 + transpose { a.b.c = 1; } 14 + # ⇒ { b.a.c = 1; } 15 + ``` 16 + 17 + Values below the second level are preserved as-is. Common children merge under one parent: 18 + 19 + ```nix 20 + transpose { a.x = 1; b.x = 2; } 21 + # ⇒ { x = { a = 1; b = 2; }; } 22 + ``` 23 + 24 + <Aside> 25 + Tests: [`transpose_swap.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/transpose_swap.nix) · 26 + [`transpose_common.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/transpose_common.nix) 27 + </Aside> 28 + 29 + ## Source: [`nix/default.nix`](https://github.com/vic/flake-aspects/blob/main/nix/default.nix) 30 + 31 + The implementation is a three-phase pipeline: 32 + 33 + 1. **Deconstruct** — `mapAttrsToList` over all parents, producing `{ child, parent, value }` items via `emit`. 34 + 2. **Flatten** — collapse the nested lists into a flat list. 35 + 3. **Reconstruct** — `foldl` items back into the transposed structure. 36 + 37 + ## The `emit` hook 38 + 39 + `emit` is a function `{ child, parent, value } → [{ parent, child, value }]`. 40 + 41 + Default is `lib.singleton` — identity transformation, one-to-one mapping. 42 + 43 + You can use `emit` to: 44 + - **Filter**: return `[]` to drop items during transposition. 45 + - **Modify**: change the value, rename parent/child. 46 + - **Multiply**: return multiple items from a single input. 47 + 48 + ## How aspects exploit `emit` 49 + 50 + [`nix/aspects.nix`](https://github.com/vic/flake-aspects/blob/main/nix/aspects.nix) supplies a custom `emit` that calls [`resolve`](/concepts/aspects/#resolution) on each item: 51 + 52 + ```nix 53 + emit = transposed: [{ 54 + inherit (transposed) parent child; 55 + value = aspects.${transposed.child}.resolve { 56 + class = transposed.parent; 57 + }; 58 + }]; 59 + ``` 60 + 61 + This intercepts every `<aspect>.<class>` → `<class>.<aspect>` transposition and replaces the raw value with a fully-resolved module that includes all transitive dependencies. 62 + 63 + <Aside> 64 + Test: [`tranpose_flake_modules.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/tranpose_flake_modules.nix) 65 + </Aside>
+37
docs/src/content/docs/contributing.md
··· 1 + --- 2 + title: Contributing 3 + description: How to contribute to flake-aspects. 4 + --- 5 + 6 + All contributions welcome. PRs are checked by CI. 7 + 8 + ## Run tests 9 + 10 + ```shell 11 + nix flake check github:vic/checkmate --override-input target . -L 12 + ``` 13 + 14 + ## Format code 15 + 16 + ```shell 17 + nix run github:vic/checkmate#fmt --override-input target . 18 + ``` 19 + 20 + ## Bug reports 21 + 22 + Create a minimal reproduction as a test case in `checkmate/modules/tests/` and send a PR. 23 + 24 + Failing tests are the best way to report bugs — they become the regression test once fixed. 25 + 26 + ## Documentation 27 + 28 + The docs site lives under `./docs/`. Run locally: 29 + 30 + ```shell 31 + cd docs && pnpm install && pnpm run dev 32 + ``` 33 + 34 + ## Community 35 + 36 + - [GitHub Issues](https://github.com/vic/flake-aspects/issues) — bugs and features 37 + - [GitHub Discussions](https://github.com/vic/flake-aspects/discussions) — questions and ideas
+86
docs/src/content/docs/guides/dependencies.mdx
··· 1 + --- 2 + title: Cross-Aspect Dependencies 3 + description: Using includes to form a dependency graph between aspects. 4 + --- 5 + 6 + import { Aside } from '@astrojs/starlight/components'; 7 + 8 + ## `includes` 9 + 10 + Every aspect can declare an `includes` list — references to other aspects (or providers) that should be resolved together: 11 + 12 + ```nix 13 + flake.aspects = { aspects, ... }: { 14 + server = { 15 + includes = with aspects; [ networking monitoring ]; 16 + nixos = { services.nginx.enable = true; }; 17 + }; 18 + networking.nixos = { networking.firewall.enable = true; }; 19 + monitoring.nixos = { services.prometheus.enable = true; }; 20 + }; 21 + ``` 22 + 23 + When `server` is resolved for class `"nixos"`, the result is: 24 + 25 + ```nix 26 + { 27 + imports = [ 28 + { services.nginx.enable = true; } # server.nixos 29 + { networking.firewall.enable = true; } # networking.nixos 30 + { services.prometheus.enable = true; } # monitoring.nixos 31 + ]; 32 + } 33 + ``` 34 + 35 + Only classes **present on the included aspect** propagate. If `networking` has no `darwin` key, nothing from `networking` appears when resolving for `"darwin"`. 36 + 37 + <Aside> 38 + Test: [`aspect_dependencies.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_dependencies.nix) 39 + </Aside> 40 + 41 + ## Transitive resolution 42 + 43 + Dependencies resolve transitively. If `A` includes `B` and `B` includes `C`, resolving `A` collects configs from `A`, `B`, and `C`: 44 + 45 + ```nix 46 + flake.aspects = { aspects, ... }: { 47 + one = { includes = [ aspects.two ]; classOne.bar = [ "1" ]; }; 48 + two = { 49 + includes = [ aspects.two._.three-and-four ]; 50 + classOne.bar = [ "2" ]; 51 + provides = { aspects, ... }: { 52 + three-and-four = { 53 + classOne.bar = [ "3" ]; 54 + includes = [ aspects.four ]; 55 + }; 56 + four.classOne.bar = [ "4" ]; 57 + }; 58 + }; 59 + }; 60 + ``` 61 + 62 + Resolving `one` for `classOne` collects `["1", "2", "3", "4"]`. 63 + 64 + <Aside> 65 + Test: [`aspect_fixpoint.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_fixpoint.nix) — tests five-level transitive resolution. 66 + </Aside> 67 + 68 + ## Inline aspects as includes 69 + 70 + `includes` entries don't have to be references to named aspects. They can be inline aspect attrsets: 71 + 72 + ```nix 73 + server.includes = [ 74 + { nixos = { services.sshd.enable = true; }; } 75 + ]; 76 + ``` 77 + 78 + Or context-aware providers: 79 + 80 + ```nix 81 + server.includes = [ 82 + ({ class, aspect-chain }: { 83 + ${class}.tag = "included-by-${(lib.last aspect-chain).name}"; 84 + }) 85 + ]; 86 + ```
+82
docs/src/content/docs/guides/flake-parts.mdx
··· 1 + --- 2 + title: With flake-parts 3 + description: Using flake-aspects as a flake-parts module. 4 + --- 5 + 6 + import { Aside } from '@astrojs/starlight/components'; 7 + 8 + ## Setup 9 + 10 + Add `flake-aspects` to your flake inputs and import its `flakeModule`: 11 + 12 + ```nix 13 + { 14 + inputs.flake-aspects.url = "github:vic/flake-aspects"; 15 + 16 + outputs = { flake-parts, flake-aspects, nixpkgs, ... }@inputs: 17 + flake-parts.lib.mkFlake { inherit inputs; } { 18 + imports = [ flake-aspects.flakeModule ]; 19 + 20 + flake.aspects = { 21 + my-desktop = { 22 + nixos = { pkgs, ... }: { environment.systemPackages = [ pkgs.firefox ]; }; 23 + darwin = { pkgs, ... }: { environment.systemPackages = [ pkgs.firefox ]; }; 24 + }; 25 + my-server = { 26 + nixos = { services.nginx.enable = true; }; 27 + }; 28 + }; 29 + 30 + flake.nixosConfigurations.workstation = nixpkgs.lib.nixosSystem { 31 + modules = [ 32 + inputs.self.modules.nixos.my-desktop 33 + ]; 34 + }; 35 + }; 36 + } 37 + ``` 38 + 39 + ## How it works 40 + 41 + The [`flakeModule`](https://github.com/vic/flake-aspects/blob/main/nix/flakeModule.nix) calls [`new`](/reference/api/#new) with a callback that: 42 + 43 + 1. Creates `flake.aspects` as a user-facing option (type: `aspectsType`). 44 + 2. Sets `flake.modules` to the transposed + resolved output. 45 + 46 + After evaluation, `flake.modules.<class>.<aspect>` contains fully-resolved Nix modules ready for use in `nixosSystem`, `darwinSystem`, `evalModules`, etc. 47 + 48 + ## With flake-parts `modules` output 49 + 50 + If you also import `flake-parts.flakeModules.modules`, the resolved modules are exposed as `inputs.self.modules`: 51 + 52 + ```nix 53 + imports = [ 54 + flake-aspects.flakeModule 55 + flake-parts.flakeModules.modules # exposes flake.modules as output 56 + ]; 57 + ``` 58 + 59 + Then in your system configs: `inputs.self.modules.nixos.my-desktop`. 60 + 61 + <Aside> 62 + Test: [`tranpose_flake_modules.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/tranpose_flake_modules.nix) · 63 + [`default_empty.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/default_empty.nix) 64 + </Aside> 65 + 66 + ## Using dependencies 67 + 68 + Aspects can reference each other via the `aspects` fixpoint argument: 69 + 70 + ```nix 71 + flake.aspects = { aspects, ... }: { 72 + base-tools = { 73 + nixos = { pkgs, ... }: { environment.systemPackages = with pkgs; [ git curl ]; }; 74 + }; 75 + workstation = { 76 + includes = [ aspects.base-tools ]; 77 + nixos = { pkgs, ... }: { environment.systemPackages = [ pkgs.vscode ]; }; 78 + }; 79 + }; 80 + ``` 81 + 82 + Resolving `workstation` for `"nixos"` produces `{ imports = [ workstation-nixos, base-tools-nixos ] }`.
+85
docs/src/content/docs/guides/forward.mdx
··· 1 + --- 2 + title: Forward Across Classes 3 + description: Route resolved modules from one class into a submodule of another. 4 + --- 5 + 6 + import { Aside } from '@astrojs/starlight/components'; 7 + 8 + ## What `forward` does 9 + 10 + [`forward`](https://github.com/vic/flake-aspects/blob/main/nix/forward.nix) resolves an aspect for one class and injects the result into a submodule path of another class. This enables cross-class configuration routing. 11 + 12 + The canonical use case: forward `homeManager` modules into `nixos.home-manager.users.<name>`. 13 + 14 + ## Arguments 15 + 16 + ```nix 17 + forward { 18 + each = [ items ]; # list of items to iterate over 19 + fromClass = item: "sourceClass"; # class to resolve from 20 + intoClass = item: "targetClass"; # class to inject into 21 + intoPath = item: [ "path" ]; # submodule path in targetClass 22 + fromAspect = item: aspect; # aspect to resolve 23 + } 24 + ``` 25 + 26 + | Parameter | Signature | Purpose | 27 + |---|---|---| 28 + | `each` | `listOf any` | Items to iterate. One forward per item. | 29 + | `fromClass` | `item → string` | Source class name to resolve | 30 + | `intoClass` | `item → string` | Target class name to inject into | 31 + | `intoPath` | `item → listOf string` | Attribute path for the submodule in target | 32 + | `fromAspect` | `item → aspect` | The aspect to resolve for `fromClass` | 33 + 34 + ## Return value 35 + 36 + `forward` returns `{ includes = [ ... ]; }` — an aspect with one include per item. Each include: 37 + 38 + 1. Resolves `fromAspect item` for `fromClass item` 39 + 2. Wraps the resolved module as `{ imports = [ module ]; }` at `intoPath item` 40 + 3. Places the result under `intoClass item` 41 + 42 + ## Example 43 + 44 + ```nix 45 + flake.aspects = { aspects, ... }: { 46 + my-host = { 47 + targetClass = { 48 + imports = [ targetSubmodule ]; 49 + targetMod.names = [ "from-target" ]; 50 + }; 51 + sourceClass.names = [ "from-source" ]; 52 + includes = [ 53 + ({ class, aspect-chain }: forward { 54 + each = [ "source" ]; 55 + fromClass = item: "${item}Class"; 56 + intoClass = _: "targetClass"; 57 + intoPath = _: [ "targetMod" ]; 58 + fromAspect = _: lib.head aspect-chain; 59 + }) 60 + ]; 61 + }; 62 + }; 63 + ``` 64 + 65 + Resolving for `"targetClass"` merges `["from-target", "from-source"]`. 66 + 67 + <Aside> 68 + Test: [`forward.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/forward.nix) 69 + </Aside> 70 + 71 + ## Real-world: Home-Manager into NixOS 72 + 73 + This is how [Den](https://github.com/vic/den) forwards user home-manager configs into host NixOS: 74 + 75 + ```nix 76 + hmSupport = { host }: forward { 77 + each = host.users; 78 + fromClass = _user: "homeManager"; 79 + intoClass = _user: "nixos"; 80 + intoPath = user: [ "home-manager" "users" user.userName ]; 81 + fromAspect = user: den.aspects.${user.userName}; 82 + }; 83 + ``` 84 + 85 + Each user's `homeManager` aspect gets resolved and placed at `nixos.home-manager.users.<name>`.
+67
docs/src/content/docs/guides/functor.mdx
··· 1 + --- 2 + title: __functor Override 3 + description: Override how an aspect behaves when included by others. 4 + --- 5 + 6 + import { Aside } from '@astrojs/starlight/components'; 7 + 8 + ## Default behavior 9 + 10 + Every aspect has a default `__functor` that, when the aspect is called as a function, returns itself ignoring the context: 11 + 12 + ```nix 13 + __functor = self: _context: self; 14 + ``` 15 + 16 + This means when aspect `A` appears in another's `includes`, resolution calls `A { class, aspect-chain }` which just returns `A` unchanged — so all of `A`'s class configs and nested includes get resolved normally. 17 + 18 + ## Overriding `__functor` 19 + 20 + Replace `__functor` to intercept inclusion. The functor receives `self` (the attrset) and must return a function `{ class, aspect-chain } → aspect`: 21 + 22 + ```nix 23 + flake.aspects = { aspects, ... }: { 24 + adaptable = { 25 + nixos.base = true; 26 + __functor = self: { class, aspect-chain }: 27 + if class == "nixos" then self 28 + else { darwin.fallback = true; }; 29 + }; 30 + }; 31 + ``` 32 + 33 + When resolved for `"nixos"`, it returns the full aspect (with `nixos.base = true`). 34 + When resolved for `"darwin"`, it returns a different aspect with `darwin.fallback = true`. 35 + 36 + <Aside> 37 + Test: [`aspect_default_provider_functor.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_default_provider_functor.nix) 38 + </Aside> 39 + 40 + ## Functor with parametric includes 41 + 42 + A common pattern: the functor intercepts `includes` to inject arguments before delegating: 43 + 44 + ```nix 45 + flake.aspects = { aspects, ... }: { 46 + wrapper = { 47 + includes = [ aspects.tool ]; 48 + __functor = self: { 49 + includes = [ 50 + { classOne.bar = [ "from-functor" ]; } 51 + ] ++ map (f: f { message = "hello"; }) self.includes; 52 + }; 53 + }; 54 + tool = { message }: { 55 + classOne.bar = [ message ]; 56 + }; 57 + }; 58 + ``` 59 + 60 + Here `wrapper.__functor` transforms each include by calling it with `{ message = "hello"; }` before resolution. 61 + 62 + Note: when `__functor` is overridden, the aspect's own class configs (e.g., `classOne.bar = [ "should-not-be-present" ]`) 63 + are **not** automatically included — the functor's return value replaces the aspect entirely during resolution. 64 + 65 + <Aside> 66 + Test: [`aspect_default_provider_override.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_default_provider_override.nix) — demonstrates that functor return replaces the original aspect config. 67 + </Aside>
+66
docs/src/content/docs/guides/parametric.mdx
··· 1 + --- 2 + title: Parametric Aspects 3 + description: Curried functions as configurable providers. 4 + --- 5 + 6 + import { Aside } from '@astrojs/starlight/components'; 7 + 8 + ## Provider-level parametric 9 + 10 + Providers inside `provides` can be curried functions. The outer function takes user arguments; the inner function (if needed) takes `{ class, aspect-chain }`: 11 + 12 + ```nix 13 + flake.aspects = { aspects, ... }: { 14 + base.provides.user = userName: { 15 + nixos.users.users.${userName}.isNormalUser = true; 16 + }; 17 + server = { 18 + includes = [ (aspects.base._.user "bob") ]; 19 + nixos = { }; 20 + }; 21 + }; 22 + ``` 23 + 24 + Resolving `server` for `"nixos"` produces imports containing `{ users.users.bob.isNormalUser = true; }`. 25 + 26 + <Aside> 27 + Test: [`aspect_parametric.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_parametric.nix) 28 + </Aside> 29 + 30 + ## Top-level parametric 31 + 32 + Top-level aspects can also be curried. The function takes named arguments and returns an aspect: 33 + 34 + ```nix 35 + flake.aspects = { aspects, ... }: { 36 + greeter = { message }: { 37 + nixos.greeting = message; 38 + }; 39 + host = { 40 + includes = [ (aspects.greeter { message = "hello"; }) ]; 41 + nixos = { }; 42 + }; 43 + }; 44 + ``` 45 + 46 + The type system ([`nix/types.nix`](https://github.com/vic/flake-aspects/blob/main/nix/types.nix)) distinguishes between: 47 + - **Direct providers**: `{ class, aspect-chain } → aspect` (1-2 named args: `class` and/or `aspect-chain`) 48 + - **Curried providers**: `anything → provider` (other function signatures) 49 + 50 + A curried provider is invoked by the user at inclusion time. Its return value must be either another provider function or a direct aspect attrset. 51 + 52 + <Aside> 53 + Test: [`aspect_toplevel_parametric.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_toplevel_parametric.nix) 54 + </Aside> 55 + 56 + ## Combining with context 57 + 58 + A parametric provider can return a context-aware function: 59 + 60 + ```nix 61 + provides.themed = theme: 62 + { class, aspect-chain }: 63 + { ${class}.theme = "${theme}-for-${(lib.last aspect-chain).name}"; }; 64 + ``` 65 + 66 + This is a three-level chain: user args → context → aspect config.
+73
docs/src/content/docs/guides/standalone.mdx
··· 1 + --- 2 + title: Without Flakes 3 + description: Using flake-aspects with lib.evalModules and new-scope. 4 + --- 5 + 6 + import { Aside } from '@astrojs/starlight/components'; 7 + 8 + ## `new-scope` — named aspect namespaces 9 + 10 + [`new-scope`](https://github.com/vic/flake-aspects/blob/main/nix/new-scope.nix) creates an isolated aspect namespace within any `lib.evalModules` evaluation: 11 + 12 + ```nix 13 + let 14 + result = lib.evalModules { 15 + modules = [ 16 + (new-scope "my") 17 + { 18 + my.aspects = { aspects, ... }: { 19 + laptop = { 20 + nixos = { pkgs, ... }: { environment.systemPackages = [ pkgs.vim ]; }; 21 + includes = [ aspects.base ]; 22 + }; 23 + base.nixos = { lib, ... }: { networking.hostName = "laptop"; }; 24 + }; 25 + } 26 + ]; 27 + }; 28 + in 29 + lib.nixosSystem { modules = [ result.config.my.modules.nixos.laptop ]; } 30 + ``` 31 + 32 + `new-scope "my"` creates: 33 + - `my.aspects` — input: aspect definitions (type: `aspectsType`) 34 + - `my.modules` — output: transposed + resolved modules (read-only) 35 + 36 + <Aside> 37 + Test: [`without_flakes.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/without_flakes.nix) 38 + </Aside> 39 + 40 + ## Multiple scopes 41 + 42 + Independent scopes can coexist and merge. Each creates its own `<name>.aspects` / `<name>.modules` pair: 43 + 44 + ```nix 45 + modules = [ 46 + (new-scope "foo") 47 + (new-scope "bar") 48 + { foo.aspects.a.nixos.x = [ "from-foo" ]; } 49 + { bar.aspects.a.nixos.x = [ "from-bar" ]; } 50 + ({ config, ... }: { bar = config.foo; }) # merge foo into bar 51 + ]; 52 + ``` 53 + 54 + After merging, `bar.modules.nixos.a` contains both `"from-foo"` and `"from-bar"`. 55 + 56 + <Aside> 57 + Test: [`aspect_assignment.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_assignment.nix) 58 + </Aside> 59 + 60 + ## `new` — low-level factory 61 + 62 + [`new`](https://github.com/vic/flake-aspects/blob/main/nix/new.nix) is the callback-based primitive underneath `new-scope`: 63 + 64 + ```nix 65 + new (option: transposed: { 66 + options.myLib.aspects = option; 67 + config.myLib.modules = transposed; 68 + }) config.myLib.aspects 69 + ``` 70 + 71 + `new-scope` is sugar for the common `${name}.aspects` / `${name}.modules` pattern. Use `new` directly when you need custom option paths or additional logic in the callback. 72 + 73 + Useful for libraries that want isolated aspect scopes or flake-parts independence (see [Den's scope](https://github.com/vic/den/blob/main/nix/scope.nix)).
+73
docs/src/content/docs/index.mdx
··· 1 + --- 2 + title: flake-aspects 3 + description: Aspect-oriented transposition for Nix module systems. 4 + template: splash 5 + hero: 6 + tagline: "<code>&lt;aspect&gt;.&lt;class&gt;</code> transposition for Nix — dependency-free, composable, cross-class." 7 + image: 8 + html: | 9 + <img width="400" height="400" src="https://github.com/user-attachments/assets/dd28ce8d-f727-4e31-a192-d3002ee8984e" /> 10 + actions: 11 + - text: Get Started 12 + link: /guides/flake-parts/ 13 + icon: right-arrow 14 + - text: Overview 15 + link: /overview/ 16 + variant: minimal 17 + - text: Source Code 18 + link: https://github.com/vic/flake-aspects 19 + icon: github 20 + variant: secondary 21 + --- 22 + 23 + import { Card, CardGrid } from '@astrojs/starlight/components'; 24 + 25 + **flake-aspects** is a small, dependency-free Nix library that transposes 26 + `<aspect>.<class>` into `<class>.<aspect>` — the standard `flake.modules` layout. 27 + 28 + On top of transposition, it provides a composable dependency graph via `includes`, 29 + nestable sub-aspects via `provides` (alias `_`), parametric curried providers, 30 + context-aware `__functor` override, and cross-class `forward`. 31 + 32 + <CardGrid> 33 + <Card title="Zero dependencies" icon="approve-check"> 34 + Pure Nix. Works with flakes, without flakes, with flake-parts, or standalone via `lib.evalModules`. 35 + </Card> 36 + <Card title="Any Nix class" icon="puzzle"> 37 + NixOS, Darwin, Home-Manager, NixVim, Terranix — any configuration class expressible as a Nix module. 38 + </Card> 39 + <Card title="Composable graph" icon="random"> 40 + Aspects declare `includes` forming a dependency DAG. Resolution collects all class-specific configs transitively. 41 + </Card> 42 + <Card title="Parametric" icon="setting"> 43 + Curried functions as providers. Pass arguments at inclusion time. Override behavior with `__functor`. 44 + </Card> 45 + </CardGrid> 46 + 47 + 48 + ```nix 49 + # input: flake.aspects 50 + { 51 + vim-btw = { 52 + nixos = { ... }; 53 + darwin = { ... }; 54 + homeManager = { ... }; 55 + }; 56 + tiling-desktop = { 57 + includes = [ aspects.vim-btw ]; 58 + nixos = { ... }; 59 + }; 60 + } 61 + ``` 62 + 63 + ```nix 64 + # output: flake.modules (transposed + resolved) 65 + { 66 + nixos.vim-btw = { imports = [ ... ]; }; 67 + nixos.tiling-desktop = { imports = [ nixos-config, vim-btw-nixos ]; }; 68 + darwin.vim-btw = { imports = [ ... ]; }; 69 + homeManager.vim-btw = { imports = [ ... ]; }; 70 + } 71 + ``` 72 + 73 + Used by [Den](https://github.com/vic/den) and others for dendritic Nix setups.
+50
docs/src/content/docs/motivation.mdx
··· 1 + --- 2 + title: Motivation 3 + description: Why flake-aspects exists. 4 + --- 5 + 6 + import { Aside } from '@astrojs/starlight/components'; 7 + 8 + ## The problem 9 + 10 + In [Dendritic](https://github.com/mightyiam/dendritic) Nix setups, modules are organized as 11 + `flake.modules.<class>.<name>` — a flat, two-level structure where class comes first. 12 + 13 + This works well for consumers, but for *authors* it fragments a logical concern across 14 + multiple class namespaces. A "desktop" aspect touching `nixos`, `darwin`, and `homeManager` 15 + ends up as three separate entries under three different class keys. 16 + 17 + ## The transposition idea 18 + 19 + [Unify](https://codeberg.org/quasigod/unify)'s author invented the `<aspect>.<class>` layout: 20 + group all class-specific configs under the aspect name, then transpose into the standard 21 + `<class>.<aspect>` output. 22 + 23 + **flake-aspects** implements this transposition as a small, dependency-free primitive. 24 + 25 + ## Beyond transposition 26 + 27 + A flat transposition is not enough for real-world reusability. flake-aspects adds: 28 + 29 + - **`includes`** — declare dependencies between aspects, forming a DAG resolved recursively per class. 30 + - **`provides` / `_`** — nest sub-aspects in a tree, with fixpoint semantics so siblings can reference each other. 31 + - **Parametric providers** — curried functions that accept arguments at inclusion time. 32 + - **`__functor` override** — intercept inclusion and dispatch based on `{ class, aspect-chain }` context. 33 + - **`forward`** — route resolved modules from one class into a submodule of another (e.g., homeManager → nixos). 34 + - **`aspect-chain`** — the call stack of aspects during resolution, enabling context-aware decisions. 35 + 36 + All of this with zero dependencies beyond `lib`. 37 + 38 + ## What flake-aspects is not 39 + 40 + flake-aspects is a **library**, not a framework. It does not: 41 + - Define hosts, users, or homes 42 + - Build `nixosConfigurations` or `darwinConfigurations` 43 + - Provide a context pipeline or entity schemas 44 + - Ship batteries or opinionated defaults 45 + 46 + For a framework built on flake-aspects, see [Den](https://github.com/vic/den). 47 + 48 + <Aside type="tip" icon="heart" title="Support development"> 49 + [vic](https://bsky.app/profile/oeiuwq.bsky.social)'s [dendritic libs](https://vic.github.io/dendrix/Dendritic-Ecosystem.html#vics-dendritic-libraries) are made with Love++ and AI--. If you find them useful, consider [sponsoring](https://github.com/sponsors/vic). 50 + </Aside>
+69
docs/src/content/docs/overview.mdx
··· 1 + --- 2 + title: Overview 3 + description: Everything in flake-aspects at a glance. 4 + --- 5 + 6 + import { Card, CardGrid, LinkButton } from '@astrojs/starlight/components'; 7 + 8 + ## Core Concepts 9 + 10 + <CardGrid> 11 + <Card title="Transpose" icon="random"> 12 + Generic 2-level attribute set transposition: `{ a.b = v }` → `{ b.a = v }`. Parameterized by an `emit` hook. 13 + <LinkButton href="/concepts/transpose" variant="minimal" icon="right-arrow">Learn More</LinkButton> 14 + </Card> 15 + <Card title="Aspects & Resolution" icon="puzzle"> 16 + Aspect submodules with `includes` (dependency graph) and per-class configs. Recursive resolution collects all transitive class-specific modules. 17 + <LinkButton href="/concepts/aspects" variant="minimal" icon="right-arrow">Learn More</LinkButton> 18 + </Card> 19 + <Card title="Providers & Fixpoint" icon="setting"> 20 + Nested sub-aspects via `provides` / `_`. Fixpoint semantics let providers reference siblings and top-level aspects. 21 + <LinkButton href="/concepts/providers" variant="minimal" icon="right-arrow">Learn More</LinkButton> 22 + </Card> 23 + </CardGrid> 24 + 25 + ## Guides 26 + 27 + <CardGrid> 28 + <Card title="With flake-parts" icon="rocket"> 29 + The `flakeModule` wires `flake.aspects` → `flake.modules` automatically. Minimal setup. 30 + <LinkButton href="/guides/flake-parts" variant="minimal" icon="right-arrow">Learn More</LinkButton> 31 + </Card> 32 + <Card title="Without Flakes" icon="open-book"> 33 + Use `new-scope` with `lib.evalModules` for isolated namespaces. No flake-parts dependency needed. 34 + <LinkButton href="/guides/standalone" variant="minimal" icon="right-arrow">Learn More</LinkButton> 35 + </Card> 36 + <Card title="Cross-Aspect Dependencies" icon="list-format"> 37 + `includes` forms a DAG. Only classes present on the included aspect propagate during resolution. 38 + <LinkButton href="/guides/dependencies" variant="minimal" icon="right-arrow">Learn More</LinkButton> 39 + </Card> 40 + <Card title="Parametric Aspects" icon="seti:config"> 41 + Curried providers with arguments at inclusion time. Works at both `provides` and top levels. 42 + <LinkButton href="/guides/parametric" variant="minimal" icon="right-arrow">Learn More</LinkButton> 43 + </Card> 44 + <Card title="__functor Override" icon="pencil"> 45 + Intercept inclusion. Dispatch different configs based on `class` and `aspect-chain` context. 46 + <LinkButton href="/guides/functor" variant="minimal" icon="right-arrow">Learn More</LinkButton> 47 + </Card> 48 + <Card title="Forward Across Classes" icon="right-arrow"> 49 + Route resolved modules from one class into a submodule path of another class. 50 + <LinkButton href="/guides/forward" variant="minimal" icon="right-arrow">Learn More</LinkButton> 51 + </Card> 52 + </CardGrid> 53 + 54 + ## Reference 55 + 56 + <CardGrid> 57 + <Card title="API" icon="seti:code-search"> 58 + Full export table: `transpose`, `types`, `aspects`, `new`, `new-scope`, `forward`. 59 + <LinkButton href="/reference/api" variant="minimal" icon="right-arrow">Learn More</LinkButton> 60 + </Card> 61 + <Card title="Type System" icon="document"> 62 + `aspectsType`, `aspectSubmodule`, `providerType` — the Nix option types that validate aspect definitions. 63 + <LinkButton href="/reference/types" variant="minimal" icon="right-arrow">Learn More</LinkButton> 64 + </Card> 65 + <Card title="Test Suite" icon="seti:test"> 66 + 16 test files covering every feature. How to run and read them. 67 + <LinkButton href="/reference/tests" variant="minimal" icon="right-arrow">Learn More</LinkButton> 68 + </Card> 69 + </CardGrid>
+89
docs/src/content/docs/reference/api.mdx
··· 1 + --- 2 + title: API Reference 3 + description: All exports from the flake-aspects library. 4 + --- 5 + 6 + import { Aside } from '@astrojs/starlight/components'; 7 + 8 + ## Entry points 9 + 10 + The flake exposes three entry points: 11 + 12 + ```nix 13 + { 14 + # Default functor: (lib) → { transpose, types, aspects, new, new-scope, forward } 15 + __functor = _: import ./nix; 16 + 17 + # flake-parts module: creates flake.aspects → flake.modules 18 + flakeModule = ./nix/flakeModule.nix; 19 + 20 + # Library API: (lib) → { transpose, types, aspects, new, new-scope, forward } 21 + lib = import ./nix/lib.nix; 22 + } 23 + ``` 24 + 25 + Usage: `flake-aspects.lib nixpkgs.lib` or `import ./nix/lib.nix lib`. 26 + 27 + ## Exports 28 + 29 + Source: [`nix/lib.nix`](https://github.com/vic/flake-aspects/blob/main/nix/lib.nix) 30 + 31 + ### `transpose { emit? }` 32 + 33 + Source: [`nix/default.nix`](https://github.com/vic/flake-aspects/blob/main/nix/default.nix) 34 + 35 + Generic 2-level transposition. Returns a function `attrs → transposed-attrs`. 36 + 37 + | Parameter | Type | Default | Purpose | 38 + |---|---|---|---| 39 + | `emit` | `{ child, parent, value } → [{ parent, child, value }]` | `lib.singleton` | Hook for filtering, modifying, or multiplying items | 40 + 41 + See [Transpose concept](/concepts/transpose/). 42 + 43 + ### `types` 44 + 45 + Source: [`nix/types.nix`](https://github.com/vic/flake-aspects/blob/main/nix/types.nix) 46 + 47 + Returns `{ aspectsType, aspectSubmodule, providerType }`. 48 + 49 + See [Type System reference](/reference/types/). 50 + 51 + ### `aspects` 52 + 53 + Source: [`nix/aspects.nix`](https://github.com/vic/flake-aspects/blob/main/nix/aspects.nix) 54 + 55 + `aspects : lib → aspectsConfig → { transposed }`. 56 + 57 + Aspect-aware transposition. Supplies a custom `emit` to `transpose` that calls `resolve` on each item. Returns `{ transposed = { <class>.<aspect> = resolved-module; }; }`. 58 + 59 + ### `new` 60 + 61 + Source: [`nix/new.nix`](https://github.com/vic/flake-aspects/blob/main/nix/new.nix) 62 + 63 + `new : lib → (option → transposed → moduleDefinition) → aspectsConfig → moduleDefinition`. 64 + 65 + Low-level scope factory. The callback receives: 66 + - `option` — an `mkOption` for `aspectsType` (the user-facing input) 67 + - `transposed` — the resolved `{ <class>.<aspect> }` output 68 + 69 + ### `new-scope` 70 + 71 + Source: [`nix/new-scope.nix`](https://github.com/vic/flake-aspects/blob/main/nix/new-scope.nix) 72 + 73 + `new-scope : name → nixos-module`. 74 + 75 + Creates `${name}.aspects` (input) and `${name}.modules` (read-only output). Sugar over `new`. See [Standalone guide](/guides/standalone/). 76 + 77 + ### `forward` 78 + 79 + Source: [`nix/forward.nix`](https://github.com/vic/flake-aspects/blob/main/nix/forward.nix) 80 + 81 + `forward : lib → { each, fromClass, intoClass, intoPath, fromAspect } → aspect`. 82 + 83 + Cross-class module forwarding. See [Forward guide](/guides/forward/). 84 + 85 + ## `flakeModule` 86 + 87 + Source: [`nix/flakeModule.nix`](https://github.com/vic/flake-aspects/blob/main/nix/flakeModule.nix) 88 + 89 + A flake-parts module. Import it to get `flake.aspects` (input) → `flake.modules` (output). Uses `new` internally. See [flake-parts guide](/guides/flake-parts/).
+77
docs/src/content/docs/reference/tests.mdx
··· 1 + --- 2 + title: Test Suite 3 + description: All test files and how to run them. 4 + --- 5 + 6 + ## Running tests 7 + 8 + ```shell 9 + # Format code 10 + nix run github:vic/checkmate#fmt --override-input target . 11 + 12 + # Run all tests 13 + nix flake check github:vic/checkmate --override-input target . -L 14 + ``` 15 + 16 + Tests use [checkmate](https://github.com/vic/checkmate) — each test defines `flake.tests.<name> = { expr, expected }`. 17 + 18 + ## Test index 19 + 20 + ### Transpose 21 + 22 + | Test | What it verifies | 23 + |---|---| 24 + | [`transpose_swap.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/transpose_swap.nix) | `{ a.b.c = 1 }` → `{ b.a.c = 1 }` | 25 + | [`transpose_common.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/transpose_common.nix) | Common children merge: `{ a.b, c.b }` → `{ b.{a,c} }` | 26 + | [`tranpose_flake_modules.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/tranpose_flake_modules.nix) | `flake.aspects` → `flake.modules` end-to-end | 27 + 28 + ### Resolution & Dependencies 29 + 30 + | Test | What it verifies | 31 + |---|---| 32 + | [`aspect_dependencies.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_dependencies.nix) | `includes` resolves transitive deps per class | 33 + | [`aspect_chain.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_chain.nix) | `aspect-chain` grows correctly through resolution | 34 + | [`aspect_modules_resolved.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_modules_resolved.nix) | `.modules.<class>` matches `.resolve { class }` | 35 + | [`aspect_fixpoint.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_fixpoint.nix) | Fixpoint: providers reference siblings and top-level | 36 + 37 + ### Providers 38 + 39 + | Test | What it verifies | 40 + |---|---| 41 + | [`aspect_provides.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_provides.nix) | `provides` / `_` with context-aware providers | 42 + | [`aspect_parametric.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_parametric.nix) | Curried provider in `provides` | 43 + | [`aspect_toplevel_parametric.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_toplevel_parametric.nix) | Curried top-level aspect | 44 + 45 + ### Functor 46 + 47 + | Test | What it verifies | 48 + |---|---| 49 + | [`aspect_default_provider_functor.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_default_provider_functor.nix) | `__functor` override with parametric includes | 50 + | [`aspect_default_provider_override.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_default_provider_override.nix) | Functor replaces original config entirely | 51 + 52 + ### Scopes & Standalone 53 + 54 + | Test | What it verifies | 55 + |---|---| 56 + | [`without_flakes.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/without_flakes.nix) | `new-scope` + `lib.evalModules` without flakes | 57 + | [`aspect_assignment.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/aspect_assignment.nix) | Multiple scopes merge correctly | 58 + | [`default_empty.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/default_empty.nix) | Empty `flake.aspects` produces empty `flake.modules` | 59 + 60 + ### Forward 61 + 62 + | Test | What it verifies | 63 + |---|---| 64 + | [`forward.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests/forward.nix) | Cross-class module forwarding | 65 + 66 + ## Test harness 67 + 68 + The test infrastructure ([`checkmate/modules/tests.nix`](https://github.com/vic/flake-aspects/blob/main/checkmate/modules/tests.nix)) provides: 69 + 70 + | Helper | Purpose | 71 + |---|---| 72 + | `mkFlake` | Creates a flake evaluation with aspects + test options pre-wired | 73 + | `evalMod` | Evaluates a module with `lib.evalModules` and returns `.config` | 74 + | `fooOpt` | Standard test options: `foo` (str), `bar` (listOf str), `baz` (attrsOf str) | 75 + | `transpose` | Direct access to the transpose function | 76 + | `new-scope` | Direct access for standalone tests | 77 + | `forward` | Direct access to the forward function |
+76
docs/src/content/docs/reference/types.mdx
··· 1 + --- 2 + title: Type System 3 + description: The Nix option types that validate aspect definitions. 4 + --- 5 + 6 + import { Aside } from '@astrojs/starlight/components'; 7 + 8 + Source: [`nix/types.nix`](https://github.com/vic/flake-aspects/blob/main/nix/types.nix) 9 + 10 + ## Exported types 11 + 12 + | Type | Purpose | 13 + |---|---| 14 + | `aspectsType` | Top-level container for all aspects. Used as the type for `flake.aspects`. | 15 + | `aspectSubmodule` | Individual aspect definition with class configs, includes, provides. | 16 + | `providerType` | Union of all valid provider shapes (functions and aspect attrsets). | 17 + 18 + ## `aspectsType` 19 + 20 + A `submodule` with `freeformType = lazyAttrsOf (either aspectSubmodule providerType)`. 21 + 22 + Provides a fixpoint: `_module.args.aspects = config` — so aspect definitions can reference siblings via the `aspects` argument. 23 + 24 + ```nix 25 + flake.aspects = { aspects, ... }: { 26 + a.includes = [ aspects.b ]; 27 + b.nixos = { }; 28 + }; 29 + ``` 30 + 31 + Top-level entries can be either `aspectSubmodule` values (with submodule-style function args like `{ lib, config, options, aspect }`) or `providerType` values (curried or direct provider functions). 32 + 33 + ## `aspectSubmodule` 34 + 35 + A `submodule` defining a single aspect. Key options: 36 + 37 + | Option | Type | Default | Description | 38 + |---|---|---|---| 39 + | `name` | `str` | attribute name | Aspect name, auto-set | 40 + | `description` | `str` | `"Aspect ${name}"` | Human description | 41 + | `includes` | `listOf providerType` | `[]` | Dependency providers | 42 + | `provides` / `_` | `submodule` (freeform) | `{}` | Nested sub-aspects | 43 + | `__functor` | `self → context → provider` | identity | Override resolution behavior | 44 + | `resolve` | internal | — | `{ class, aspect-chain? } → module` | 45 + | `modules` | internal | — | `{ <class> = module }` lazy attrset | 46 + 47 + The `freeformType = lazyAttrsOf deferredModule` means any key not listed above is treated as a class name with a deferred module value. 48 + 49 + `_` is an alias for `provides` (via `mkAliasOptionModule`). 50 + 51 + The `provides` submodule also receives a fixpoint: `_module.args.aspects = config` — providers can reference siblings. 52 + 53 + ## `providerType` 54 + 55 + A union type covering all valid provider shapes: 56 + 57 + ``` 58 + providerType = either providerFn aspectSubmodule 59 + ``` 60 + 61 + Where `providerFn = either directProviderFn curriedProviderFn`: 62 + 63 + - **`directProviderFn`**: a function whose args are exactly `{ class }`, `{ aspect-chain }`, or `{ class, aspect-chain }`. 64 + - **`curriedProviderFn`**: any other function that returns a `providerType`. 65 + 66 + The distinction is made by `isProviderFn` which inspects `functionArgs`: 67 + - If the function takes exactly `class` and/or `aspect-chain` (and nothing else), it's a direct provider. 68 + - Otherwise, it's treated as curried — the user must call it with arguments first. 69 + 70 + ## Internal types 71 + 72 + | Type | Purpose | 73 + |---|---| 74 + | `ignoredType` | For computed values that only exist during evaluation. Merges to `null`. | 75 + | `mkInternal` | Helper to create internal, invisible, read-only options with an `apply` function. | 76 + | `isSubmoduleFn` | Checks if a function has submodule-style args (`lib`, `config`, `options`, `aspect`). |
+8
docs/src/content/docs/sponsor.md
··· 1 + --- 2 + title: Sponsor 3 + description: Support flake-aspects development. 4 + --- 5 + 6 + flake-aspects and [vic](https://bsky.app/profile/oeiuwq.bsky.social)'s [dendritic libs](https://vic.github.io/dendrix/Dendritic-Ecosystem.html#vics-dendritic-libraries) are made with Love++ and AI--. 7 + 8 + If you find them useful, consider [sponsoring](https://github.com/sponsors/vic).
+3
docs/src/styles/custom.css
··· 1 + :root { 2 + --sl-font: 'Victor Mono'; 3 + }
+5
docs/tsconfig.json
··· 1 + { 2 + "extends": "astro/tsconfigs/strict", 3 + "include": [".astro/types.d.ts", "**/*"], 4 + "exclude": ["dist"] 5 + }