Import all nix files in a directory tree. Discussions: https://oeiuwq.zulipchat.com/join/nqp26cd4kngon6mo3ncgnuap/ dendrix.oeiuwq.com/Dendritic.html
dendritic inputs

docs (#26)

authored by oeiuwq.com and committed by

GitHub c90c094d c968d3b5

+7322 -305
+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
+10 -304
README.md
··· 1 1 <p align="right"> 2 - <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"/> 2 + <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"/> 3 3 </a> 4 - <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> 4 + <a href="https://dendritic.oeiuwq.com"> <img src="https://img.shields.io/badge/Dendritic-Nix-informational?logo=nixos&logoColor=white" alt="Dendritic Nix"/> </a> 5 5 <a href="LICENSE"> <img src="https://img.shields.io/github/license/vic/import-tree" alt="License"/> </a> 6 6 <a href="https://github.com/vic/import-tree/actions"> 7 7 <img src="https://github.com/vic/import-tree/actions/workflows/test.yml/badge.svg" alt="CI Status"/> </a> 8 8 </p> 9 9 10 - > `import-tree` and [vic](https://github.com/vic/vix)'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) 10 + > `import-tree` 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) 11 11 12 12 # 🌲🌴 import-tree 🎄🌳 13 13 14 14 > Recursively import [Nix modules](https://nix.dev/tutorials/module-system/) from a directory, with a simple, extensible API. 15 15 16 16 ## Quick Start (flake-parts) 17 - 18 - Import all nix files inside `./modules` in your flake: 19 17 20 18 ```nix 21 19 { ··· 27 25 } 28 26 ``` 29 27 30 - > By default, paths having `/_` are ignored. 28 + By default, paths having `/_` are ignored. 31 29 32 30 ## Features 33 31 34 32 🌳 Works with NixOS, nix-darwin, home-manager, flake-parts, NixVim, etc.\ 35 33 🌲 Callable as a deps-free Flake or nix lib.\ 36 34 🌴 Sensible defaults and configurable behaviour.\ 37 - 🌵 API for listing custom file types with filters and transformations.\ 38 - 🎄 Extensible: add your own API methods to tailor import-tree objects.\ 39 - 🌿 Useful on [Dendritic Pattern](https://github.com/mightyiam/dendritic) setups.\ 35 + 🌵 Chain `.filter`, `.match`, `.map` for precise file selection.\ 36 + 🎄 Extensible: `.addAPI` to create domain-specific instances.\ 37 + 🌿 Built for the [Dendritic Pattern](https://github.com/mightyiam/dendritic).\ 40 38 🌱 [Growing](https://github.com/search?q=language%3ANix+import-tree&type=code) [community](https://vic.github.io/dendrix/Dendrix-Trees.html) [adoption](https://github.com/vic/flake-file) 41 39 42 - ## Other Usage (outside module evaluation) 43 - 44 - Get a list of nix files programmatically: 45 - 46 - ```nix 47 - (import-tree.withLib pkgs.lib).leafs ./modules 48 - ``` 49 - 50 - <details> 51 - <summary>Advanced Usage, API, and Rationale</summary> 52 - 53 - ### Ignored files 54 - 55 - By default, paths having a component that begins with an underscore (`/_`) are ignored. This can be changed by using `.initFilter` API. 56 - 57 - ### API usage 58 - 59 - The following goes recursively through `./modules` and imports all `.nix` files. 60 - 61 - ```nix 62 - {config, ...} { 63 - imports = [ (import-tree ./modules) ]; 64 - } 65 - ``` 66 - 67 - For more advanced usage, `import-tree` can be configured via its extensible API. 68 - 69 - --- 70 - 71 - #### Obtaining the API 72 - 73 - When used as a flake, the flake outputs attrset is the primary callable. Otherwise, importing the `default.nix` at the root of this repository will evaluate into the same attrset. This callable attrset is referred to as `import-tree` in this documentation. 74 - 75 - #### `import-tree` 76 - 77 - Takes a single argument: path or deeply nested list of path. Returns a module that imports the discovered files. For example, given the following file tree: 78 - 79 - ``` 80 - default.nix 81 - modules/ 82 - a.nix 83 - subdir/ 84 - b.nix 85 - ``` 86 - 87 - The following 88 - 89 - ```nix 90 - {lib, config, ...} { 91 - imports = [ (import-tree ./modules) ]; 92 - } 93 - ``` 94 - 95 - Is similar to 96 - 97 - ```nix 98 - {lib, config, ...} { 99 - imports = [ 100 - { 101 - imports = [ 102 - ./modules/a.nix 103 - ./modules/subdir/b.nix 104 - ]; 105 - } 106 - ]; 107 - } 108 - ``` 109 - 110 - If given a deeply nested list of paths the list will be flattened and results concatenated. The following is valid usage: 111 - 112 - ```nix 113 - {lib, config, ...} { 114 - imports = [ (import-tree [./a [./b]]) ]; 115 - } 116 - ``` 117 - 118 - Other import-tree objects can also be given as arguments (or in lists) as if they were paths. 119 - 120 - As a special case, when the single argument given to an `import-tree` object is an attribute-set containing an `options` attribute, the `import-tree` object assumes it is being evaluated as a module. This way, a pre-configured `import-tree` object can also be used directly in a list of module imports. 121 - 122 - #### Configurable behavior 123 - 124 - `import-tree` objects with custom behavior can be obtained using a builder pattern. For example: 125 - 126 - ```nix 127 - lib.pipe import-tree [ 128 - (i: i.map lib.traceVal) 129 - (i: i.filter (lib.hasInfix ".mod.")) 130 - (i: i ./modules) 131 - ] 132 - ``` 133 - 134 - Or, in a simpler but less readable way: 135 - 136 - ```nix 137 - ((import-tree.map lib.traceVal).filter (lib.hasInfix ".mod.")) ./modules 138 - ``` 139 - 140 - ##### 🌲 `import-tree.filter` and `import-tree.filterNot` 141 - 142 - `filter` takes a predicate function `path -> bool`. Only files with suffix `.nix` are candidates. 143 - 144 - ```nix 145 - import-tree.filter (lib.hasInfix ".mod.") ./some-dir 146 - ``` 147 - 148 - Multiple filters can be combined, results must match all of them. 149 - 150 - ##### 🌳 `import-tree.match` and `import-tree.matchNot` 151 - 152 - `match` takes a regular expression. The regex should match the full path for the path to be selected. Matching is done with `builtins.match`. 153 - 154 - ```nix 155 - import-tree.match ".*/[a-z]+@(foo|bar)\.nix" ./some-dir 156 - ``` 157 - 158 - Multiple match filters can be added, results must match all of them. 159 - 160 - ##### 🌴 `import-tree.map` 161 - 162 - `map` can be used to transform each path by providing a function. 163 - 164 - ```nix 165 - # generate a custom module from path 166 - import-tree.map (path: { imports = [ path ]; }) 167 - ``` 168 - 169 - Outside modules evaluation, you can transform paths into something else: 170 - 171 - ```nix 172 - lib.pipe import-tree [ 173 - (i: i.map builtins.readFile) 174 - (i: i.withLib lib) 175 - (i: i.leafs ./dir) 176 - ] 177 - # => list of contents of all files. 178 - ``` 179 - 180 - ##### 🌵 `import-tree.addPath` 181 - 182 - `addPath` can be used to prepend paths to be filtered as a setup for import-tree. 183 - 184 - ```nix 185 - (import-tree.addPath ./vendor) ./modules 186 - import-tree [./vendor ./modules] 187 - ``` 188 - 189 - ##### 🎄 `import-tree.addAPI` 190 - 191 - `addAPI` extends the current import-tree object with new methods. 192 - 193 - ```nix 194 - import-tree.addAPI { 195 - maximal = self: self.addPath ./modules; 196 - feature = self: infix: self.maximal.filter (lib.hasInfix infix); 197 - minimal = self: self.feature "minimal"; 198 - } 199 - ``` 200 - 201 - ##### 🌿 `import-tree.withLib` 202 - 203 - `withLib` is required prior to invocation of any of `.leafs` or `.pipeTo` when not used as part of a nix modules evaluation. 204 - 205 - ```nix 206 - import-tree.withLib pkgs.lib 207 - ``` 208 - 209 - ##### 🌱 `import-tree.pipeTo` 210 - 211 - `pipeTo` takes a function that will receive the list of paths. 212 - 213 - ```nix 214 - import-tree.pipeTo lib.id # equivalent to `.leafs` 215 - ``` 216 - 217 - ##### 🍃 `import-tree.leafs` 40 + ## Documentation 218 41 219 - `leafs` takes no arguments, it is equivalent to calling `import-tree.pipeTo lib.id`. 220 - 221 - ```nix 222 - import-tree.leafs 223 - ``` 224 - 225 - ##### 🌲 `import-tree.new` 226 - 227 - Returns a fresh import-tree with empty state. 228 - 229 - ##### 🌳 `import-tree.initFilter` 230 - 231 - _Replaces_ the initial filter which defaults to: Include files with `.nix` suffix and not having `/_` infix. 232 - 233 - ```nix 234 - import-tree.initFilter (p: lib.hasSuffix ".nix" p && !lib.hasInfix "/ignored/" p) 235 - import-tree.initFilter (lib.hasSuffix ".md") 236 - ``` 237 - 238 - ##### 🌴 `import-tree.files` 239 - 240 - A shorthand for `import-tree.leafs.result`. Returns a list of matching files. 241 - 242 - ```nix 243 - lib.pipe import-tree [ 244 - (i: i.initFilter (lib.hasSuffix ".js")) 245 - (i: i.addPath ./out) 246 - (i: i.withLib lib) 247 - (i: i.files) 248 - ] 249 - ``` 250 - 251 - ##### 🌵 `import-tree.result` 252 - 253 - Exactly the same as calling the import-tree object with an empty list `[ ]`. 254 - 255 - ```nix 256 - (import-tree.addPath ./modules).result 257 - (import-tree.addPath ./modules) [ ] 258 - ``` 259 - 260 - --- 261 - 262 - ## Why 263 - 264 - Importing a tree of nix modules has some advantages: 265 - 266 - ### Dendritic Pattern: each file is a flake-parts module 267 - 268 - [That pattern](https://github.com/mightyiam/dendritic) was the original inspiration for this library. 269 - See [@mightyiam's post](https://discourse.nixos.org/t/pattern-each-file-is-a-flake-parts-module/61271), 270 - [@drupol's blog post](https://not-a-number.io/2025/refactoring-my-infrastructure-as-code-configurations/) and 271 - [@vic's reply](https://discourse.nixos.org/t/how-do-you-structure-your-nixos-configs/65851/8) 272 - to learn about the Dendritic pattern advantages. 273 - 274 - ### Sharing pre-configured subtrees of modules 275 - 276 - Since the import-tree API is _extensible_ and lets you add paths or 277 - filters at configuration time, configuration-library authors can 278 - provide custom import-tree instances with an API suited for their 279 - particular idioms. 280 - 281 - @vic is using this on [Dendrix](https://github.com/vic/dendrix) for [community conventions](https://github.com/vic/dendrix/blob/main/dev/modules/community/_pipeline.nix) on tagging files. 282 - 283 - This would allow us to have community-driven _sets_ of configurations, 284 - much like those popular for editors: spacemacs/lazy-vim distributions. 285 - 286 - Imagine an editor distribution exposing the following flake output: 287 - 288 - ```nix 289 - # editor-distro's flakeModule 290 - {inputs, lib, ...}: 291 - let 292 - flake.lib.modules-tree = lib.pipe inputs.import-tree [ 293 - (i: i.addPath ./modules) 294 - (i: i.addAPI { inherit on off exclusive; }) 295 - (i: i.addAPI { ruby = self: self.on "ruby"; }) 296 - (i: i.addAPI { python = self: self.on "python"; }) 297 - (i: i.addAPI { old-school = self: self.off "copilot"; }) 298 - (i: i.addAPI { vim-btw = self: self.exclusive "vim" "emacs"; }) 299 - ]; 300 - 301 - on = self: flag: self.filter (lib.hasInfix "+${flag}"); 302 - off = self: flag: self.filterNot (lib.hasInfix "+${flag}"); 303 - exclusive = self: onFlag: offFlag: lib.pipe self [ 304 - (self: on self onFlag) 305 - (self: off self offFlag) 306 - ]; 307 - in 308 - { 309 - inherit flake; 310 - } 311 - ``` 312 - 313 - Users of such distribution can do: 314 - 315 - ```nix 316 - # consumer flakeModule 317 - {inputs, lib, ...}: let 318 - ed-tree = inputs.editor-distro.lib.modules-tree; 319 - in { 320 - imports = [ 321 - (ed-tree.vim-btw.old-school.on "rust") 322 - ]; 323 - } 324 - ``` 325 - 326 - --- 42 + 📖 **[Full documentation](https://import-tree.oeiuwq.com)** — guides, API reference, and examples. 327 43 328 44 ## Testing 329 45 330 - `import-tree` uses [`checkmate`](https://github.com/vic/checkmate) for testing. 331 - 332 - The test suite can be found in [`checkmate.nix`](checkmate.nix). To run it locally: 46 + `import-tree` uses [`checkmate`](https://github.com/vic/checkmate) for testing: 333 47 334 48 ```sh 335 49 nix flake check github:vic/checkmate --override-input target path:. 336 50 ``` 337 - 338 - Run the following to format files: 339 - 340 - ```sh 341 - nix run github:vic/checkmate#fmt 342 - ``` 343 - 344 - </details>
+4 -1
checkmate/modules/formatter.nix
··· 1 1 { 2 - perSystem.treefmt.settings.global.excludes = [ "checkmate/tree/*" ]; 2 + perSystem.treefmt.settings.global.excludes = [ 3 + "checkmate/tree/*" 4 + "docs/*" 5 + ]; 3 6 }
+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).
+81
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: 'import-tree', 26 + sidebar: [ 27 + { 28 + label: 'import-tree', 29 + items: [ 30 + { label: 'Overview', slug: 'overview' }, 31 + { label: 'Motivation', slug: 'motivation' }, 32 + { label: 'Community', slug: 'community' }, 33 + { label: 'Contributing', slug: 'contributing' }, 34 + { label: 'Sponsor', slug: 'sponsor' }, 35 + ], 36 + }, 37 + { 38 + label: 'Getting Started', 39 + items: [ 40 + { label: 'Quick Start', slug: 'getting-started/quick-start' }, 41 + ], 42 + }, 43 + { 44 + label: 'Guides', 45 + items: [ 46 + { label: 'Filtering Files', slug: 'guides/filtering' }, 47 + { label: 'Transforming Paths', slug: 'guides/mapping' }, 48 + { label: 'Custom API', slug: 'guides/custom-api' }, 49 + { label: 'Outside Modules', slug: 'guides/outside-modules' }, 50 + { label: 'Dendritic Pattern', slug: 'guides/dendritic' }, 51 + ], 52 + }, 53 + { 54 + label: 'Reference', 55 + items: [ 56 + { label: 'API Reference', slug: 'reference/api' }, 57 + { label: 'Examples', slug: 'reference/examples' }, 58 + ], 59 + }, 60 + ], 61 + components: { 62 + Sidebar: './src/components/Sidebar.astro', 63 + Footer: './src/components/Footer.astro', 64 + SocialIcons: './src/components/SocialIcons.astro', 65 + PageSidebar: './src/components/PageSidebar.astro', 66 + }, 67 + plugins: [ 68 + catppuccin({ 69 + dark: { flavor: "macchiato", accent: "mauve" }, 70 + light: { flavor: "latte", accent: "mauve" }, 71 + }), 72 + ], 73 + editLink: { 74 + baseUrl: 'https://github.com/vic/import-tree/edit/main/docs/', 75 + }, 76 + customCss: [ 77 + './src/styles/custom.css' 78 + ], 79 + }), 80 + ], 81 + });
+8
docs/node_modules/.vite/deps/_metadata.json
··· 1 + { 2 + "hash": "f68e01cf", 3 + "configHash": "1d81e718", 4 + "lockfileHash": "e3b0c442", 5 + "browserHash": "d917ec6f", 6 + "optimized": {}, 7 + "chunks": {} 8 + }
+3
docs/node_modules/.vite/deps/package.json
··· 1 + { 2 + "type": "module" 3 + }
+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.

+153
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/import-tree</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-file 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/flake-file">flake-file</a></li> 20 + <li><a href="https://github.com/vic/flake-aspects">flake-aspects</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: white; 48 + text-align: center; 49 + } 50 + 51 + .header { 52 + display: flex; 53 + align-items: center; 54 + justify-content: center; 55 + gap: 0.75rem; 56 + margin-bottom: 1rem; 57 + } 58 + 59 + .heart-icon { 60 + animation: pulse 2s ease-in-out infinite; 61 + } 62 + 63 + @keyframes pulse { 64 + 0%, 100% { 65 + opacity: 1; 66 + } 67 + 50% { 68 + opacity: 0.7; 69 + } 70 + } 71 + 72 + h3 { 73 + font-size: 1.5rem; 74 + font-weight: 700; 75 + margin: 0; 76 + letter-spacing: -0.02em; 77 + } 78 + 79 + .description { 80 + font-size: 0.95rem; 81 + line-height: 1.6; 82 + margin: 1rem 0 1.5rem 0; 83 + opacity: 0.95; 84 + } 85 + 86 + .description a { 87 + color: white; 88 + font-weight: 600; 89 + text-decoration: underline; 90 + text-decoration-thickness: 2px; 91 + text-underline-offset: 4px; 92 + } 93 + 94 + .description a:hover { 95 + opacity: 0.85; 96 + } 97 + 98 + .ecosystem { 99 + list-style: none; 100 + padding: 0; 101 + margin: 1.5rem 0; 102 + display: grid; 103 + grid-template-columns: repeat(2, 1fr); 104 + gap: 0.75rem; 105 + font-size: 0.9rem; 106 + } 107 + 108 + .ecosystem li { 109 + background: rgba(255, 255, 255, 0.15); 110 + padding: 0.5rem 0.75rem; 111 + border-radius: 0.5rem; 112 + backdrop-filter: blur(10px); 113 + } 114 + 115 + .ecosystem a { 116 + color: white; 117 + text-decoration: none; 118 + font-weight: 500; 119 + transition: opacity 0.2s; 120 + } 121 + 122 + .ecosystem a:hover { 123 + opacity: 0.85; 124 + text-decoration: underline; 125 + } 126 + 127 + .cta-button { 128 + display: inline-flex; 129 + align-items: center; 130 + gap: 0.5rem; 131 + background: rgba(255, 255, 255, 0.25); 132 + color: white; 133 + padding: 0.875rem 1.75rem; 134 + border-radius: 0.75rem; 135 + font-weight: 600; 136 + font-size: 1rem; 137 + text-decoration: none; 138 + border: 2px solid rgba(255, 255, 255, 0.4); 139 + transition: all 0.3s ease; 140 + margin-top: 1rem; 141 + cursor: pointer; 142 + } 143 + 144 + .cta-button:hover { 145 + background: rgba(255, 255, 255, 0.35); 146 + border-color: rgba(255, 255, 255, 0.6); 147 + transform: scale(1.05); 148 + } 149 + 150 + .cta-button:active { 151 + transform: scale(0.98); 152 + } 153 + </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/import-tree/releases"><img src="https://img.shields.io/github/v/release/vic/import-tree?logo=github&color=white"/></a> 8 + 9 + <a href="https://deepwiki.com/vic/import-tree"><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 + };
+24
docs/src/content/docs/community.md
··· 1 + --- 2 + title: Community 3 + description: Get help, share your work, and find real-world import-tree usage. 4 + --- 5 + 6 + ## Get Support 7 + 8 + - [GitHub Issues](https://github.com/vic/import-tree/issues) — report bugs, request features 9 + - [GitHub Discussions](https://github.com/vic/import-tree/discussions) — ask questions, share ideas 10 + 11 + Everyone is welcome. Be kind and respectful. 12 + 13 + ## Real-World Usage 14 + 15 + - [GitHub Code Search](https://github.com/search?q=language%3ANix+import-tree&type=code) — find projects using import-tree 16 + - [Dendrix Trees](https://vic.github.io/dendrix/Dendrix-Trees.html) — community index of dendritic setups 17 + 18 + ## Ecosystem 19 + 20 + - [Den](https://github.com/vic/den) — context-aware dendritic Nix framework 21 + - [flake-aspects](https://github.com/vic/flake-aspects) — aspect composition library 22 + - [denful](https://github.com/vic/denful) — community aspect distribution 23 + - [Dendrix](https://dendrix.oeiuwq.com/) — index of dendritic aspects 24 + - [Dendritic Design](https://github.com/mightyiam/dendritic) — the pattern that inspired this ecosystem
+36
docs/src/content/docs/contributing.md
··· 1 + --- 2 + title: Contributing 3 + description: How to report bugs, run tests, and contribute to import-tree. 4 + --- 5 + 6 + All contributions are welcome. PRs are checked by CI. 7 + 8 + ## Run Tests 9 + 10 + `import-tree` uses [checkmate](https://github.com/vic/checkmate) for testing: 11 + 12 + ```sh 13 + nix flake check github:vic/checkmate --override-input target path:. 14 + ``` 15 + 16 + ## Format Code 17 + 18 + ```sh 19 + nix run github:vic/checkmate#fmt 20 + ``` 21 + 22 + ## Bug Reports 23 + 24 + Open an [issue](https://github.com/vic/import-tree/issues) with a minimal reproduction. 25 + 26 + If possible, include a failing test case — the test suite is in `checkmate/modules/tests.nix` and the test tree fixtures are in `checkmate/tree/`. 27 + 28 + ## Documentation 29 + 30 + The documentation site lives under `./docs/`. It uses [Starlight](https://starlight.astro.build/). 31 + 32 + To run locally: 33 + 34 + ```sh 35 + cd docs && pnpm install && pnpm run dev 36 + ```
+107
docs/src/content/docs/getting-started/quick-start.mdx
··· 1 + --- 2 + title: Quick Start 3 + description: Get up and running with import-tree in minutes. 4 + --- 5 + 6 + import { Aside, Tabs, TabItem } from '@astrojs/starlight/components'; 7 + 8 + ## Installation 9 + 10 + <Tabs> 11 + <TabItem label="Flake"> 12 + 13 + Add `import-tree` to your flake inputs: 14 + 15 + ```nix 16 + { 17 + inputs.import-tree.url = "github:vic/import-tree"; 18 + } 19 + ``` 20 + 21 + </TabItem> 22 + <TabItem label="No Flake"> 23 + 24 + Import directly from a pinned source: 25 + 26 + ```nix 27 + let 28 + import-tree = import (builtins.fetchTarball { 29 + url = "https://github.com/vic/import-tree/archive/main.tar.gz"; 30 + }); 31 + in 32 + # use import-tree 33 + ``` 34 + 35 + Or from a local checkout: 36 + 37 + ```nix 38 + let import-tree = import ./path-to/import-tree; 39 + in 40 + # use import-tree 41 + ``` 42 + 43 + </TabItem> 44 + </Tabs> 45 + 46 + ## Basic Usage 47 + 48 + ### With flake-parts 49 + 50 + The most common pattern — import all modules from a directory as flake-parts modules: 51 + 52 + ```nix 53 + { 54 + inputs.import-tree.url = "github:vic/import-tree"; 55 + inputs.flake-parts.url = "github:hercules-ci/flake-parts"; 56 + 57 + outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } 58 + (inputs.import-tree ./modules); 59 + } 60 + ``` 61 + 62 + ### With NixOS / nix-darwin / home-manager 63 + 64 + Use `import-tree` anywhere you have an `imports` list: 65 + 66 + ```nix 67 + { config, ... }: { 68 + imports = [ (import-tree ./modules) ]; 69 + } 70 + ``` 71 + 72 + This recursively discovers all `.nix` files under `./modules` and imports them. 73 + 74 + ### What Gets Imported? 75 + 76 + Given this tree: 77 + 78 + ``` 79 + modules/ 80 + networking.nix 81 + desktop/ 82 + sway.nix 83 + _private/ 84 + helper.nix 85 + ``` 86 + 87 + `import-tree ./modules` imports `networking.nix` and `desktop/sway.nix`. The `_private/` directory is skipped because paths with `/_` are ignored by default. 88 + 89 + <Aside type="tip"> 90 + Use `/_` prefixed directories for helper files, library code, or anything you don't want auto-imported. 91 + </Aside> 92 + 93 + ## Multiple Directories 94 + 95 + Pass a list to import from several directories: 96 + 97 + ```nix 98 + { imports = [ (import-tree [ ./modules ./extra-modules ]) ]; } 99 + ``` 100 + 101 + Lists can be arbitrarily nested — they are flattened automatically. 102 + 103 + ## Next Steps 104 + 105 + - [Filtering](/guides/filtering/) — select specific files by predicate or regex 106 + - [API Reference](/reference/api/) — complete method documentation 107 + - [Dendritic Pattern](/guides/dendritic/) — learn the file-per-module approach
+90
docs/src/content/docs/guides/custom-api.mdx
··· 1 + --- 2 + title: Custom API 3 + description: Extend import-tree with your own methods using .addAPI. 4 + --- 5 + 6 + import { Aside } from '@astrojs/starlight/components'; 7 + 8 + ## addAPI 9 + 10 + `.addAPI` extends the import-tree object with new named methods. Each method receives the current import-tree instance (`self`) and can call any existing method on it. 11 + 12 + ```nix 13 + import-tree.addAPI { 14 + helloOption = self: self.addPath ./modules/hello-option; 15 + feature = self: infix: self.filter (lib.hasInfix infix); 16 + minimal = self: self.feature "minimal"; 17 + } 18 + ``` 19 + 20 + After calling `.addAPI`, the new methods are available directly on the import-tree object: 21 + 22 + ```nix 23 + extended.helloOption.files 24 + extended.feature "networking" ./modules 25 + extended.minimal ./src 26 + ``` 27 + 28 + ## Preserving Previous Extensions 29 + 30 + Calling `.addAPI` multiple times is cumulative — previous extensions are preserved: 31 + 32 + ```nix 33 + let 34 + first = import-tree.addAPI { foo = self: self.addPath ./foo; }; 35 + second = first.addAPI { bar = self: self.addPath ./bar; }; 36 + in 37 + second.foo.files # still works 38 + ``` 39 + 40 + ## Late Binding 41 + 42 + API methods are late-bound. You can reference methods that don't exist yet — they resolve when actually called: 43 + 44 + ```nix 45 + let 46 + first = import-tree.addAPI { result = self: self.late; }; 47 + extended = first.addAPI { late = _self: "hello"; }; 48 + in 49 + extended.result # => "hello" 50 + ``` 51 + 52 + This enables building APIs incrementally across multiple `.addAPI` calls. 53 + 54 + ## Real-World Example: Module Distribution 55 + 56 + <Aside type="tip"> 57 + This pattern enables community-driven module distributions — think editor plugin sets, server presets, or infrastructure templates. 58 + </Aside> 59 + 60 + A library author can ship a pre-configured import-tree with domain-specific methods: 61 + 62 + ```nix 63 + # editor-distro flake module 64 + { inputs, lib, ... }: 65 + let 66 + on = self: flag: self.filter (lib.hasInfix "+${flag}"); 67 + off = self: flag: self.filterNot (lib.hasInfix "+${flag}"); 68 + exclusive = self: onFlag: offFlag: (on self onFlag) |> (s: off s offFlag); 69 + in { 70 + flake.lib.modules-tree = lib.pipe inputs.import-tree [ 71 + (i: i.addPath ./modules) 72 + (i: i.addAPI { inherit on off exclusive; }) 73 + (i: i.addAPI { ruby = self: self.on "ruby"; }) 74 + (i: i.addAPI { python = self: self.on "python"; }) 75 + (i: i.addAPI { old-school = self: self.off "copilot"; }) 76 + (i: i.addAPI { vim-btw = self: self.exclusive "vim" "emacs"; }) 77 + ]; 78 + } 79 + ``` 80 + 81 + Consumers pick exactly the features they want: 82 + 83 + ```nix 84 + # consumer flake module 85 + { inputs, ... }: 86 + let ed = inputs.editor-distro.lib.modules-tree; 87 + in { 88 + imports = [ (ed.vim-btw.old-school.on "rust") ]; 89 + } 90 + ```
+94
docs/src/content/docs/guides/dendritic.mdx
··· 1 + --- 2 + title: Dendritic Pattern 3 + description: How import-tree enables the Dendritic pattern for Nix configurations. 4 + --- 5 + 6 + import { Aside } from '@astrojs/starlight/components'; 7 + 8 + ## What is the Dendritic Pattern? 9 + 10 + The [Dendritic pattern](https://github.com/mightyiam/dendritic) is a convention where **each file is a self-contained Nix module**. Rather than large monolithic files, your configuration becomes a directory tree where each concern lives in its own file. 11 + 12 + ``` 13 + modules/ 14 + networking.nix # network config 15 + openssh.nix # SSH server 16 + desktop/ 17 + sway.nix # window manager 18 + waybar.nix # status bar 19 + notifications.nix # notification daemon 20 + users/ 21 + alice.nix # user account 22 + ``` 23 + 24 + Each file is a standard Nix module: 25 + 26 + ```nix 27 + # modules/openssh.nix 28 + { ... }: { 29 + services.openssh.enable = true; 30 + services.openssh.settings.PasswordAuthentication = false; 31 + } 32 + ``` 33 + 34 + ## Why Dendritic? 35 + 36 + - **Locality** — each concern in its own file, easy to find and modify 37 + - **Composability** — add or remove features by adding or removing files 38 + - **No boilerplate** — `import-tree` handles the wiring 39 + - **Git-friendly** — file additions don't cause merge conflicts in import lists 40 + - **Discoverable** — directory structure documents the system 41 + 42 + ## Using with flake-parts 43 + 44 + With flake-parts, each file is a flake-parts module: 45 + 46 + ```nix 47 + # flake.nix 48 + { 49 + inputs.import-tree.url = "github:vic/import-tree"; 50 + inputs.flake-parts.url = "github:hercules-ci/flake-parts"; 51 + 52 + outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } 53 + (inputs.import-tree ./modules); 54 + } 55 + ``` 56 + 57 + ```nix 58 + # modules/dev-shell.nix 59 + { inputs, ... }: { 60 + perSystem = { pkgs, ... }: { 61 + devShells.default = pkgs.mkShell { 62 + packages = [ pkgs.nil pkgs.nixfmt-rfc-style ]; 63 + }; 64 + }; 65 + } 66 + ``` 67 + 68 + ## The `/_` Convention 69 + 70 + <Aside type="tip"> 71 + Use underscore-prefixed directories for helper code that shouldn't be auto-imported. 72 + </Aside> 73 + 74 + Files under `/_` prefixed paths are ignored by default. This gives you a place for shared utilities: 75 + 76 + ``` 77 + modules/ 78 + feature.nix 79 + _lib/ 80 + helpers.nix # not auto-imported 81 + ``` 82 + 83 + ```nix 84 + # modules/feature.nix 85 + let helpers = import ./_lib/helpers.nix; 86 + in { ... }: { /* use helpers */ } 87 + ``` 88 + 89 + ## Further Reading 90 + 91 + - [Dendritic Design](https://github.com/mightyiam/dendritic) — the pattern specification 92 + - [@mightyiam's post](https://discourse.nixos.org/t/pattern-each-file-is-a-flake-parts-module/61271) — introducing the pattern 93 + - [@drupol's blog](https://not-a-number.io/2025/refactoring-my-infrastructure-as-code-configurations/) — real-world adoption 94 + - [Dendrix](https://dendrix.oeiuwq.com/) — index of dendritic aspects
+92
docs/src/content/docs/guides/filtering.mdx
··· 1 + --- 2 + title: Filtering Files 3 + description: Control which files import-tree discovers using predicates and regular expressions. 4 + --- 5 + 6 + import { Aside } from '@astrojs/starlight/components'; 7 + 8 + ## Default Behavior 9 + 10 + By default, `import-tree` includes files that: 11 + 12 + 1. Have the `.nix` suffix 13 + 2. Do **not** have `/_` in their path (underscore-prefixed directories are ignored) 14 + 15 + You can narrow this down with filters, or replace the defaults entirely. 16 + 17 + ## filter / filterNot 18 + 19 + `filter` takes a predicate function `string -> bool` applied to each file's path: 20 + 21 + ```nix 22 + # Only import files containing ".mod." in their name 23 + import-tree.filter (lib.hasInfix ".mod.") ./modules 24 + ``` 25 + 26 + `filterNot` is the inverse — exclude files matching the predicate: 27 + 28 + ```nix 29 + # Skip any file with "experimental" in the path 30 + import-tree.filterNot (lib.hasInfix "experimental") ./modules 31 + ``` 32 + 33 + ### Composing Filters 34 + 35 + Multiple filters combine with logical AND — a file must pass **all** of them: 36 + 37 + ```nix 38 + lib.pipe import-tree [ 39 + (i: i.filter (lib.hasInfix "/desktop/")) 40 + (i: i.filter (lib.hasSuffix "bar.nix")) 41 + (i: i ./modules) 42 + ] 43 + ``` 44 + 45 + This selects only files under a `desktop/` directory whose name ends in `bar.nix`. 46 + 47 + ## match / matchNot 48 + 49 + `match` takes a regular expression. The regex is tested against the **full path** using `builtins.match`: 50 + 51 + ```nix 52 + # Only files named like "word_word.nix" 53 + import-tree.match ".*/[a-z]+_[a-z]+\.nix" ./modules 54 + ``` 55 + 56 + `matchNot` excludes files matching the regex: 57 + 58 + ```nix 59 + # Skip files with numeric names 60 + import-tree.matchNot ".*/[0-9]+\.nix" ./modules 61 + ``` 62 + 63 + <Aside type="caution"> 64 + `builtins.match` tests the **entire** string. Your regex must match the full path, not just a substring. Use `.*` to match surrounding parts. 65 + </Aside> 66 + 67 + ### Mixing filter and match 68 + 69 + All filter types compose together: 70 + 71 + ```nix 72 + (import-tree.match ".*_.*\.nix").filter (lib.hasInfix "/src/") ./tree 73 + ``` 74 + 75 + This finds files matching the regex **and** containing `/src/` in their path. 76 + 77 + ## initFilter — Replacing Defaults 78 + 79 + `initFilter` **replaces** the built-in `.nix` + no-`/_` filter entirely. Use it to discover non-Nix files or change the ignore convention: 80 + 81 + ```nix 82 + # Find .txt files instead of .nix files 83 + import-tree.initFilter (lib.hasSuffix ".txt") ./dir 84 + 85 + # Find .nix files but use /ignored/ instead of /_ 86 + import-tree.initFilter (p: lib.hasSuffix ".nix" p && !lib.hasInfix "/ignored/" p) 87 + ``` 88 + 89 + <Aside> 90 + `initFilter` also applies to non-path items (like attrsets) passed directly in import lists. 91 + This lets you filter out module attrsets programmatically. 92 + </Aside>
+50
docs/src/content/docs/guides/mapping.mdx
··· 1 + --- 2 + title: Transforming Paths 3 + description: Use .map to transform discovered file paths before they are imported. 4 + --- 5 + 6 + ## map 7 + 8 + `.map` takes a function that transforms each discovered path. Transformations are applied **after** filtering. 9 + 10 + ### Wrapping in Custom Modules 11 + 12 + ```nix 13 + import-tree.map (path: { imports = [ path ]; }) ./modules 14 + ``` 15 + 16 + ### Tracing Discovered Files 17 + 18 + ```nix 19 + import-tree.map lib.traceVal ./modules 20 + ``` 21 + 22 + This prints each discovered path during evaluation — useful for debugging. 23 + 24 + ### Composing Maps 25 + 26 + Multiple `.map` calls compose left-to-right (the first map runs first): 27 + 28 + ```nix 29 + lib.pipe import-tree [ 30 + (i: i.map import) # import each .nix file 31 + (i: i.map builtins.stringLength) # get the length of each result 32 + (i: i.withLib lib) 33 + (i: i.leafs ./dir) 34 + ] 35 + ``` 36 + 37 + ### Using map Outside Module Evaluation 38 + 39 + When used with `.leafs` or `.pipeTo`, `.map` transforms paths into arbitrary values — not just modules: 40 + 41 + ```nix 42 + # Read all .md files under a directory 43 + lib.pipe import-tree [ 44 + (i: i.initFilter (lib.hasSuffix ".md")) 45 + (i: i.map builtins.readFile) 46 + (i: i.withLib lib) 47 + (i: i.leafs ./docs) 48 + ] 49 + # => [ "# Title\n..." "# Other\n..." ] 50 + ```
+75
docs/src/content/docs/guides/outside-modules.mdx
··· 1 + --- 2 + title: Outside Module Evaluation 3 + description: Use import-tree to list files programmatically, without importing them as modules. 4 + --- 5 + 6 + ## Using import-tree as a File Lister 7 + 8 + `import-tree` doesn't have to produce module imports. You can use it to get a plain list of files: 9 + 10 + ```nix 11 + (import-tree.withLib pkgs.lib).leafs ./modules 12 + # => [ /path/to/modules/a.nix /path/to/modules/b.nix ] 13 + ``` 14 + 15 + ### withLib 16 + 17 + Outside module evaluation, `import-tree` needs access to `lib` (specifically `lib.filesystem.listFilesRecursive`). Call `.withLib` before `.leafs` or `.pipeTo`: 18 + 19 + ```nix 20 + import-tree.withLib lib 21 + ``` 22 + 23 + Omitting `.withLib` when calling `.leafs` produces an error: 24 + `"You need to call withLib before trying to read the tree."` 25 + 26 + ### leafs 27 + 28 + `.leafs` returns a configured import-tree that, when given a path, produces a flat list of discovered files: 29 + 30 + ```nix 31 + (import-tree.withLib lib).leafs ./src 32 + # => [ ./src/main.nix ./src/utils.nix ] 33 + ``` 34 + 35 + ### files 36 + 37 + `.files` is a shortcut for `.leafs.result` — returns the list directly when paths have already been added via `.addPath`: 38 + 39 + ```nix 40 + lib.pipe import-tree [ 41 + (i: i.addPath ./modules) 42 + (i: i.withLib lib) 43 + (i: i.files) 44 + ] 45 + ``` 46 + 47 + ### pipeTo 48 + 49 + `.pipeTo` takes a function that receives the list of discovered paths, letting you process the results: 50 + 51 + ```nix 52 + (import-tree.withLib lib).pipeTo builtins.length ./modules 53 + # => 5 (number of .nix files) 54 + ``` 55 + 56 + Combine with `.map` for powerful pipelines: 57 + 58 + ```nix 59 + lib.pipe import-tree [ 60 + (i: i.map import) 61 + (i: i.pipeTo lib.length) 62 + (i: i.withLib lib) 63 + (i: i ./modules) 64 + ] 65 + ``` 66 + 67 + ### result 68 + 69 + `.result` evaluates the import-tree with an empty path list — useful when paths are already configured via `.addPath`: 70 + 71 + ```nix 72 + (import-tree.addPath ./modules).result 73 + # equivalent to: 74 + (import-tree.addPath ./modules) [] 75 + ```
+60
docs/src/content/docs/index.mdx
··· 1 + --- 2 + title: import-tree 3 + description: Recursively import Nix modules from a directory tree, with a simple, extensible API. 4 + template: splash 5 + hero: 6 + tagline: Recursively import Nix modules from a directory tree 7 + image: 8 + html: | 9 + <span style="font-size: 8rem">🌲</span> 10 + actions: 11 + - text: Getting Started 12 + link: /getting-started/quick-start/ 13 + icon: right-arrow 14 + - text: API Reference 15 + link: /reference/api/ 16 + variant: minimal 17 + - text: Why import-tree? 18 + link: /motivation/ 19 + variant: minimal 20 + - text: Source Code 21 + link: https://github.com/vic/import-tree 22 + icon: github 23 + variant: secondary 24 + --- 25 + 26 + import { Card, CardGrid } from '@astrojs/starlight/components'; 27 + 28 + `import-tree` recursively discovers and imports Nix files from a directory tree. It works with **NixOS**, **nix-darwin**, **home-manager**, **flake-parts**, **NixVim**, and any Nix module system. 29 + 30 + ## At a Glance 31 + 32 + ```nix 33 + # In your flake.nix — import every .nix file under ./modules 34 + { 35 + inputs.import-tree.url = "github:vic/import-tree"; 36 + inputs.flake-parts.url = "github:hercules-ci/flake-parts"; 37 + 38 + outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } 39 + (inputs.import-tree ./modules); 40 + } 41 + ``` 42 + 43 + Paths containing `/_` are ignored by default — use underscored directories for private helpers. 44 + 45 + ## Highlights 46 + 47 + <CardGrid> 48 + <Card title="Zero Dependencies" icon="rocket"> 49 + A single `default.nix`. Usable as a flake or plain import. No extra inputs needed. 50 + </Card> 51 + <Card title="Sensible Defaults" icon="approve-check-circle"> 52 + Recursively finds `.nix` files, skips `/_` prefixed paths. Works out of the box. 53 + </Card> 54 + <Card title="Builder API" icon="setting"> 55 + Chain `.filter`, `.match`, `.map`, `.addPath`, and more to customize discovery. 56 + </Card> 57 + <Card title="Extensible" icon="puzzle"> 58 + Add your own API methods with `.addAPI` to create domain-specific import-tree instances. 59 + </Card> 60 + </CardGrid>
+79
docs/src/content/docs/motivation.mdx
··· 1 + --- 2 + title: Why import-tree? 3 + description: The motivation behind import-tree and the problems it solves. 4 + --- 5 + 6 + import { Aside } from '@astrojs/starlight/components'; 7 + 8 + ## The Problem 9 + 10 + As Nix configurations grow, the `imports` list becomes a maintenance burden: 11 + 12 + ```nix 13 + # This doesn't scale. 14 + { 15 + imports = [ 16 + ./modules/networking.nix 17 + ./modules/desktop/sway.nix 18 + ./modules/desktop/waybar.nix 19 + ./modules/services/docker.nix 20 + ./modules/services/ssh.nix 21 + ./modules/users/alice.nix 22 + # ... dozens more 23 + ]; 24 + } 25 + ``` 26 + 27 + Every new file requires updating the import list. Forget one and your config silently ignores it. Reorganize your directory and you must update every path by hand. 28 + 29 + ## The Solution 30 + 31 + ```nix 32 + { 33 + imports = [ (import-tree ./modules) ]; 34 + } 35 + ``` 36 + 37 + Add a file to `./modules/` and it is automatically discovered. Reorganize freely. Use `/_` prefixed directories for helpers that should not be imported. 38 + 39 + ## Dendritic Pattern 40 + 41 + The [Dendritic pattern](https://github.com/mightyiam/dendritic) — where each file is a self-contained module — was the original inspiration for `import-tree`. 42 + 43 + <Aside type="tip"> 44 + See [@mightyiam's post](https://discourse.nixos.org/t/pattern-each-file-is-a-flake-parts-module/61271), 45 + [@drupol's blog](https://not-a-number.io/2025/refactoring-my-infrastructure-as-code-configurations/), and 46 + [@vic's reply](https://discourse.nixos.org/t/how-do-you-structure-your-nixos-configs/65851/8) 47 + for more on Dendritic setups. 48 + </Aside> 49 + 50 + With Dendritic, your configuration becomes a file tree — each concern in its own file, each file a module. `import-tree` removes the glue code that would otherwise connect them. 51 + 52 + ## Beyond Loading Files 53 + 54 + `import-tree` is not just a file loader. Its builder API lets you: 55 + 56 + - **Filter** which files are selected — by predicate, regex, or both. 57 + - **Transform** discovered paths — wrap them in custom modules, read their contents, or anything else. 58 + - **Compose** multiple directory trees with shared filters. 59 + - **Extend** with domain-specific APIs — let library authors ship curated import-tree instances. 60 + 61 + This makes `import-tree` useful for sharing pre-configured sets of modules across projects. Library authors can ship an `import-tree` instance with custom filters and API methods, and consumers pick what they need: 62 + 63 + ```nix 64 + # A library could expose: 65 + lib.modules-tree = import-tree.addAPI { 66 + gaming = self: self.filter (lib.hasInfix "+gaming"); 67 + minimal = self: self.filterNot (lib.hasInfix "+heavy"); 68 + }; 69 + 70 + # Consumers use it like: 71 + { imports = [ lib.modules-tree.gaming.minimal ]; } 72 + ``` 73 + 74 + ## Design Goals 75 + 76 + - **Zero dependencies** — a single `default.nix`, no extra flake inputs 77 + - **Works everywhere** — flakes, non-flakes, any module system 78 + - **Composable** — builder pattern with filter/map/extend chains 79 + - **Predictable** — sensible defaults, clear ignore rules, no magic
+63
docs/src/content/docs/overview.mdx
··· 1 + --- 2 + title: Overview 3 + description: What import-tree does and how it fits into your Nix setup. 4 + --- 5 + 6 + import { Card, CardGrid, LinkButton } from '@astrojs/starlight/components'; 7 + 8 + ## What is import-tree? 9 + 10 + `import-tree` is a Nix library that recursively discovers files in a directory tree and produces a list of Nix module imports. Instead of manually listing every module in your `imports = [ ... ]`, you point `import-tree` at a directory and it does the rest. 11 + 12 + It is a **dependency-free**, **single-file** library that works as a flake or a plain `import`. 13 + 14 + ## How It Works 15 + 16 + Given a directory tree: 17 + 18 + ``` 19 + modules/ 20 + networking.nix 21 + desktop/ 22 + sway.nix 23 + waybar.nix 24 + _helpers/ 25 + utils.nix 26 + ``` 27 + 28 + Calling `import-tree ./modules` produces a module whose `imports` contain: 29 + 30 + - `./modules/networking.nix` 31 + - `./modules/desktop/sway.nix` 32 + - `./modules/desktop/waybar.nix` 33 + 34 + The `_helpers/` directory is skipped because paths containing `/_` are ignored by default. 35 + 36 + ## Key Features 37 + 38 + <CardGrid> 39 + <Card title="Universal" icon="open-book"> 40 + Works with NixOS, nix-darwin, home-manager, flake-parts, NixVim — any Nix module system. 41 + <LinkButton href="/getting-started/quick-start" variant="minimal" icon="right-arrow">Quick Start</LinkButton> 42 + </Card> 43 + <Card title="Composable Filters" icon="list-format"> 44 + Chain `.filter`, `.filterNot`, `.match`, `.matchNot` to select exactly the files you need. 45 + <LinkButton href="/guides/filtering" variant="minimal" icon="right-arrow">Filtering Guide</LinkButton> 46 + </Card> 47 + <Card title="Transformations" icon="random"> 48 + Use `.map` to transform discovered paths — wrap in modules, read contents, or anything else. 49 + <LinkButton href="/guides/mapping" variant="minimal" icon="right-arrow">Mapping Guide</LinkButton> 50 + </Card> 51 + <Card title="Extensible API" icon="puzzle"> 52 + Build domain-specific APIs with `.addAPI` — create named presets, feature flags, module sets. 53 + <LinkButton href="/guides/custom-api" variant="minimal" icon="right-arrow">Custom API Guide</LinkButton> 54 + </Card> 55 + <Card title="Non-Module Usage" icon="seti:folder"> 56 + Use `.leafs` and `.files` outside module evaluation to get raw file lists for any purpose. 57 + <LinkButton href="/guides/outside-modules" variant="minimal" icon="right-arrow">Outside Modules</LinkButton> 58 + </Card> 59 + <Card title="Dendritic Pattern" icon="star"> 60 + Purpose-built for the Dendritic pattern where every file is a self-contained module. 61 + <LinkButton href="/guides/dendritic" variant="minimal" icon="right-arrow">Dendritic Pattern</LinkButton> 62 + </Card> 63 + </CardGrid>
+200
docs/src/content/docs/reference/api.mdx
··· 1 + --- 2 + title: API Reference 3 + description: Complete reference for every import-tree method. 4 + --- 5 + 6 + import { Aside } from '@astrojs/starlight/components'; 7 + 8 + ## Obtaining import-tree 9 + 10 + **As a flake input:** 11 + ```nix 12 + inputs.import-tree.url = "github:vic/import-tree"; 13 + # Then use: inputs.import-tree 14 + ``` 15 + 16 + **As a plain import:** 17 + ```nix 18 + let import-tree = import ./path-to/import-tree; 19 + ``` 20 + 21 + The resulting value is a callable attrset — the primary `import-tree` object. 22 + 23 + --- 24 + 25 + ## Core: Calling import-tree 26 + 27 + ### `import-tree <path | [paths]>` 28 + 29 + Takes a path or a (nested) list of paths. Returns a Nix module with `imports` set to all discovered files. 30 + 31 + ```nix 32 + import-tree ./modules 33 + import-tree [ ./modules ./extra ] 34 + import-tree [ ./a [ ./b ] ] # nested lists are flattened 35 + ``` 36 + 37 + Other import-tree objects can appear in the list as if they were paths. 38 + 39 + <Aside> 40 + When the argument is an attrset with an `options` attribute, import-tree assumes it is being evaluated as a module. This lets a pre-configured import-tree object appear directly in `imports`. 41 + </Aside> 42 + 43 + Anything with an `outPath` attribute (like flake inputs) is treated as a path: 44 + 45 + ```nix 46 + import-tree [ { outPath = ./modules; } ] 47 + ``` 48 + 49 + Non-path values (like attrsets) are passed through the filter and included if they pass. 50 + 51 + --- 52 + 53 + ## Filtering 54 + 55 + ### `.filter <fn>` 56 + 57 + `fn : string -> bool` — only include paths where `fn` returns `true`. 58 + 59 + ```nix 60 + import-tree.filter (lib.hasInfix ".mod.") ./modules 61 + ``` 62 + 63 + Multiple `.filter` calls compose with AND. 64 + 65 + ### `.filterNot <fn>` 66 + 67 + Inverse of `.filter` — exclude paths where `fn` returns `true`. 68 + 69 + ```nix 70 + import-tree.filterNot (lib.hasInfix "experimental") ./modules 71 + ``` 72 + 73 + ### `.match <regex>` 74 + 75 + Include only paths matching the regex. Uses `builtins.match` (tests full string). 76 + 77 + ```nix 78 + import-tree.match ".*/[a-z]+_[a-z]+\.nix" ./modules 79 + ``` 80 + 81 + Multiple `.match` calls compose with AND. 82 + 83 + ### `.matchNot <regex>` 84 + 85 + Exclude paths matching the regex. 86 + 87 + ```nix 88 + import-tree.matchNot ".*/test_.*\.nix" ./modules 89 + ``` 90 + 91 + ### `.initFilter <fn>` 92 + 93 + **Replaces** the default filter (`.nix` suffix, no `/_` infix). Use for non-Nix files or custom ignore conventions. 94 + 95 + ```nix 96 + import-tree.initFilter (lib.hasSuffix ".md") ./docs 97 + import-tree.initFilter (p: lib.hasSuffix ".nix" p && !lib.hasInfix "/skip/" p) 98 + ``` 99 + 100 + Also applies to non-path items in import lists. 101 + 102 + --- 103 + 104 + ## Transformation 105 + 106 + ### `.map <fn>` 107 + 108 + `fn : path -> a` — transform each discovered path. 109 + 110 + ```nix 111 + import-tree.map lib.traceVal ./modules # trace each path 112 + import-tree.map (p: { imports = [ p ]; }) # wrap in module 113 + import-tree.map import # actually import 114 + ``` 115 + 116 + Multiple `.map` calls compose (first map runs first). 117 + 118 + --- 119 + 120 + ## Path Accumulation 121 + 122 + ### `.addPath <path>` 123 + 124 + Prepend a path to the internal path list. Can be called multiple times: 125 + 126 + ```nix 127 + (import-tree.addPath ./vendor).addPath ./modules 128 + # discovers files in both directories 129 + ``` 130 + 131 + --- 132 + 133 + ## Extension 134 + 135 + ### `.addAPI <attrset>` 136 + 137 + Extend the import-tree object with new methods. Each value is a function receiving `self` (the current import-tree): 138 + 139 + ```nix 140 + import-tree.addAPI { 141 + maximal = self: self.addPath ./all-modules; 142 + feature = self: name: self.filter (lib.hasInfix name); 143 + } 144 + ``` 145 + 146 + Methods are late-bound — you can reference methods added in later `.addAPI` calls. 147 + 148 + --- 149 + 150 + ## Output 151 + 152 + ### `.withLib <lib>` 153 + 154 + Required before `.leafs` or `.pipeTo` when used outside module evaluation. Provides `lib.filesystem.listFilesRecursive`. 155 + 156 + ```nix 157 + import-tree.withLib pkgs.lib 158 + ``` 159 + 160 + ### `.leafs` 161 + 162 + Returns a configured import-tree that produces file lists instead of modules: 163 + 164 + ```nix 165 + (import-tree.withLib lib).leafs ./modules 166 + # => [ ./modules/a.nix ./modules/b.nix ] 167 + ``` 168 + 169 + ### `.files` 170 + 171 + Shorthand for `.leafs.result`: 172 + 173 + ```nix 174 + (import-tree.addPath ./modules).withLib lib |>.files 175 + ``` 176 + 177 + ### `.pipeTo <fn>` 178 + 179 + Like `.leafs` but pipes the result list through `fn`: 180 + 181 + ```nix 182 + (import-tree.withLib lib).pipeTo builtins.length ./modules 183 + # => 3 184 + ``` 185 + 186 + ### `.result` 187 + 188 + Evaluate with an empty path list. Equivalent to calling with `[]`: 189 + 190 + ```nix 191 + (import-tree.addPath ./modules).result 192 + ``` 193 + 194 + ### `.new` 195 + 196 + Returns a fresh import-tree with empty state — no paths, filters, maps, or API extensions. 197 + 198 + ```nix 199 + configured-tree.new # back to a clean slate 200 + ```
+119
docs/src/content/docs/reference/examples.mdx
··· 1 + --- 2 + title: Examples 3 + description: Practical examples of import-tree usage patterns. 4 + --- 5 + 6 + ## flake-parts Module Tree 7 + 8 + ```nix 9 + # flake.nix 10 + { 11 + inputs.import-tree.url = "github:vic/import-tree"; 12 + inputs.flake-parts.url = "github:hercules-ci/flake-parts"; 13 + 14 + outputs = inputs: 15 + inputs.flake-parts.lib.mkFlake { inherit inputs; } 16 + (inputs.import-tree ./modules); 17 + } 18 + ``` 19 + 20 + ## NixOS Configuration 21 + 22 + ```nix 23 + # configuration.nix 24 + { import-tree, ... }: { 25 + imports = [ (import-tree ./modules) ]; 26 + } 27 + ``` 28 + 29 + ## Multiple Directories 30 + 31 + ```nix 32 + import-tree [ ./base-modules ./host-specific ./shared ] 33 + ``` 34 + 35 + ## Filter by Convention 36 + 37 + Only import files tagged with a `+feature` convention: 38 + 39 + ```nix 40 + import-tree.filter (lib.hasInfix "+networking") ./modules 41 + ``` 42 + 43 + ## Regex-Based Selection 44 + 45 + ```nix 46 + # Only files named like: word_word.nix 47 + import-tree.match ".*/[a-z]+_[a-z]+\.nix" ./modules 48 + ``` 49 + 50 + ## Pipeline Style 51 + 52 + ```nix 53 + lib.pipe import-tree [ 54 + (i: i.filter (lib.hasInfix "/desktop/")) 55 + (i: i.map lib.traceVal) 56 + (i: i ./modules) 57 + ] 58 + ``` 59 + 60 + ## Non-Nix File Discovery 61 + 62 + ```nix 63 + lib.pipe import-tree [ 64 + (i: i.initFilter (lib.hasSuffix ".json")) 65 + (i: i.map builtins.readFile) 66 + (i: i.map builtins.fromJSON) 67 + (i: i.withLib lib) 68 + (i: i.leafs ./config) 69 + ] 70 + # => list of parsed JSON objects 71 + ``` 72 + 73 + ## Pre-Configured Tree for a Library 74 + 75 + ```nix 76 + let 77 + my-tree = lib.pipe import-tree [ 78 + (i: i.addPath ./modules) 79 + (i: i.addAPI { 80 + desktop = self: self.filter (lib.hasInfix "/desktop/"); 81 + server = self: self.filter (lib.hasInfix "/server/"); 82 + all = self: self; 83 + }) 84 + ]; 85 + in { 86 + # Use the desktop subset 87 + imports = [ my-tree.desktop ]; 88 + 89 + # Or import everything 90 + # imports = [ my-tree.all ]; 91 + } 92 + ``` 93 + 94 + ## Counting Files 95 + 96 + ```nix 97 + (import-tree.withLib lib).pipeTo builtins.length ./modules 98 + ``` 99 + 100 + ## Mixing with Manual Imports 101 + 102 + ```nix 103 + { 104 + imports = [ 105 + (import-tree ./auto-modules) # auto-discovered 106 + ./manual/special-case.nix # manual import 107 + ]; 108 + } 109 + ``` 110 + 111 + ## Using with addPath and result 112 + 113 + ```nix 114 + let 115 + tree = import-tree.addPath ./core; 116 + extended = tree.addPath ./extras; 117 + in 118 + extended.result 119 + ```
+8
docs/src/content/docs/sponsor.md
··· 1 + --- 2 + title: Sponsor 3 + description: Support import-tree development. 4 + --- 5 + 6 + `import-tree` 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. 7 + 8 + If you find import-tree 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 + }