ALPHA: wire is a tool to deploy nixos systems wire.althaea.zone/

switch to vitepress (#19)

authored by

marshmallow and committed by
GitHub
b7439a0b 51b12a05

+1882 -1537
+32
.github/workflows/pages.yml
··· 1 + name: "Pages" 2 + on: 3 + push: 4 + branches: [main] 5 + workflow_dispatch: 6 + 7 + jobs: 8 + deploy: 9 + runs-on: ubuntu-latest 10 + 11 + environment: 12 + name: production 13 + url: https://wire.althaea.zone/ 14 + 15 + steps: 16 + - uses: actions/checkout@v4 17 + - uses: cachix/install-nix-action@v27 18 + with: 19 + nix_path: nixpkgs=channel:nixos-unstable 20 + - uses: cachix/cachix-action@v14 21 + with: 22 + name: wires 23 + authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' 24 + - run: nix build .#docs 25 + - name: Deploy to Cloudflare Pages 26 + id: deployment 27 + uses: cloudflare/wrangler-action@v3 28 + with: 29 + apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} 30 + accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} 31 + environment: production 32 + command: pages deploy ./result/ --project-name wire-docs
+34
.github/workflows/pr-preview.yml
··· 1 + name: "PR Preview" 2 + on: 3 + push: 4 + 5 + jobs: 6 + deploy: 7 + runs-on: ubuntu-latest 8 + 9 + environment: 10 + name: preview 11 + url: https://pr-${{ steps.find-pr.outputs.number }}.wire-docs.pages.dev/ 12 + 13 + steps: 14 + - uses: actions/checkout@v4 15 + - uses: cachix/install-nix-action@v27 16 + with: 17 + nix_path: nixpkgs=channel:nixos-unstable 18 + - uses: cachix/cachix-action@v14 19 + with: 20 + name: wires 21 + authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' 22 + - run: nix build .#docs 23 + - uses: jwalton/gh-find-current-pr@master 24 + id: find-pr 25 + with: 26 + state: all 27 + - name: Deploy to Cloudflare Pages 28 + id: deployment 29 + uses: cloudflare/wrangler-action@v3 30 + if: success() && steps.find-pr.outputs.number 31 + with: 32 + apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} 33 + accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} 34 + command: pages deploy ./result/ --project-name wire-docs --branch pr-${{ steps.find-pr.outputs.number }}
-28
.github/workflows/publish-docs.yml
··· 1 - name: "Publish Docs" 2 - 3 - on: 4 - push: 5 - branches: 6 - - main 7 - 8 - jobs: 9 - publish: 10 - runs-on: ubuntu-latest 11 - 12 - steps: 13 - - uses: actions/checkout@v4 14 - - uses: cachix/install-nix-action@v27 15 - with: 16 - nix_path: nixpkgs=channel:nixos-unstable 17 - - uses: cachix/cachix-action@v14 18 - with: 19 - name: wires 20 - authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' 21 - - run: nix build .#docs 22 - - name: Publish 23 - uses: cloudflare/pages-action@v1 24 - with: 25 - apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} 26 - accountId: b300aa9feadcc6f9a3d855959d3287ed 27 - projectName: wire-docs 28 - directory: result
+1 -1
README.md
··· 16 16 │ └── key_agent 17 17 │ └── Rust binary ran on a target node. recieves key file bytes and metadata w/ protobuf over SSH stdin 18 18 ├── doc 19 - │ └── an [mdBook](https://rust-lang.github.io/mdBook/) 19 + │ └── a [vitepress](https://vitepress.dev/) site 20 20 ├── runtime 21 21 │ └── Nix files used during runtime to evaluate nodes 22 22 ├── intergration-testing
+4 -1
doc/.gitignore
··· 1 - book 1 + .vitepress/dist 2 + .vitepress/.temp 3 + .vitepress/cache 4 + node_modules/
+82
doc/.vitepress/config.ts
··· 1 + import { defineConfig } from 'vitepress' 2 + import pkg from "../package.json"; 3 + import markdownItFootnote from 'markdown-it-footnote' 4 + 5 + 6 + // https://vitepress.dev/reference/site-config 7 + export default defineConfig({ 8 + title: "wire", 9 + description: "a tool to deploy nixos systems", 10 + themeConfig: { 11 + search: { 12 + provider: 'local' 13 + }, 14 + 15 + // https://vitepress.dev/reference/default-theme-config 16 + nav: [ 17 + { text: 'Home', link: '/' }, 18 + { text: 'Guide', link: '/guide/wire' }, 19 + { text: 'Reference', link: '/reference/cli' }, 20 + { 21 + text: pkg.version, 22 + items: [ 23 + { 24 + text: 'Changelog', 25 + link: 'https://github.com/wires-org/wire/blob/main/CHANGELOG.md' 26 + } 27 + ] 28 + } 29 + ], 30 + 31 + sidebar: { 32 + '/guide/': [ 33 + { 34 + text: 'Introduction', 35 + items: [ 36 + { text: 'What is Wire?', link: '/guide/wire' }, 37 + { text: 'Getting Started', link: '/guide/getting-started' } 38 + ] 39 + }, 40 + { 41 + text: 'Features', 42 + items: [ 43 + { text: 'Parallelism', link: '/guide/parallelism' }, 44 + { text: 'Secret management', link: '/guide/keys' }, 45 + { text: 'Tagging', link: '/guide/tagging' }, 46 + { text: 'hive.default', link: '/guide/hive-default' }, 47 + { text: 'Magic Rollback', link: '/guide/magic-rollback' }, 48 + ] 49 + }, 50 + { 51 + text: 'Use cases', 52 + items: [ 53 + { text: 'Tailscale', link: '/guide/tailscale' }, 54 + ] 55 + } 56 + ], 57 + '/reference/': [ 58 + { 59 + text: 'Reference', 60 + items: [ 61 + { text: 'CLI', link: '/reference/cli' }, 62 + { text: 'Module Options', link: '/reference/module' }, 63 + ] 64 + } 65 + ] 66 + }, 67 + 68 + editLink: { 69 + pattern: 'https://github.com/wires-org/wire/edit/main/docs/:path', 70 + text: 'Edit this page on GitHub' 71 + }, 72 + 73 + socialLinks: [ 74 + { icon: 'github', link: 'https://github.com/wires-org/wire' } 75 + ] 76 + }, 77 + markdown: { 78 + config: (md) => { 79 + md.use(markdownItFootnote) 80 + } 81 + }, 82 + })
+23
doc/README.md
··· 1 + # wire docs 2 + 3 + `reference/{cli,module}.nix` are filled in during a nix build w/ nixos module docs generation and clap. Read `package.nix`'s patchPhase for the details. 4 + 5 + ## Develop 6 + 7 + ```sh 8 + pnpm install 9 + pnpm run dev 10 + ``` 11 + 12 + ## Build 13 + 14 + ```sh 15 + nix build .#docs 16 + 17 + # or 18 + 19 + pnpm install 20 + pnpm run build 21 + ``` 22 + 23 + The build will be found in `result/` or `.vitepress/dist` respectively.
-20
doc/book.toml
··· 1 - [book] 2 - authors = ["marshmallow"] 3 - language = "en" 4 - multilingual = false 5 - src = "src" 6 - title = "wire" 7 - 8 - [preprocessor] 9 - 10 - [preprocessor.alerts] 11 - 12 - [output] 13 - 14 - [output.html] 15 - additional-css = ["./theme/catppuccin.css", "./theme/catppuccin-alerts.css"] 16 - default-theme = "latte" 17 - preferred-dark-theme = "mocha" 18 - git-repository-url = "https://git.althaea.zone/wires/wire" 19 - git-repository-icon = "fa-code-fork" 20 - edit-url-template = "https://git.althaea.zone/wires/wire/_edit/main/doc/{path}"
+5 -1
doc/default.nix
··· 1 1 { 2 2 perSystem = 3 - { pkgs, self', ... }: 3 + { 4 + pkgs, 5 + self', 6 + ... 7 + }: 4 8 { 5 9 packages.docs = pkgs.callPackage ./package.nix { inherit (self'.packages) wire; }; 6 10 };
+1
doc/guide/getting-started.md
··· 1 + # Getting Started
+1
doc/guide/hive-default.md
··· 1 + # hive.default
+2
doc/guide/keys.md
··· 1 + # Secret Management 2 +
+3
doc/guide/magic-rollback.md
··· 1 + # Magic Rollback 2 + 3 + Magic Rollback is unimplemented.
+1
doc/guide/parallelism.md
··· 1 + # Parallelism
+1
doc/guide/tagging.md
··· 1 + # Tagging
+1
doc/guide/tailscale.md
··· 1 + # Wire & Tailscale
+31
doc/guide/wire.md
··· 1 + # What is Wire? 2 + 3 + Wire is a tool to deploy NixOS systems. Its configuration is a superset[^1] of [colmena](https://colmena.cli.rs/), however it is **not** a fork. 4 + 5 + [^1]: Any colmena configuration will continue to work with wire, but wire has additional ergonomic changes you can take advantage of. 6 + 7 + ::: warning 8 + Wire is alpha software, please use at your own risk. Many features listed in this documentation may not be complete / implemented. 9 + ::: 10 + 11 + <div class="tip custom-block" style="padding-top: 8px"> 12 + 13 + Ready? Skip to the [Quickstart](./getting-started). 14 + 15 + </div> 16 + 17 + ## Why Wire? 18 + 19 + ::: info 20 + The following is the goal for a stable release and not fully implemented. 21 + ::: 22 + 23 + | Features | Wire | Colmena | 24 + | -------------- | ------------- | -------- | 25 + | Secret Management | :white_check_mark: | :white_check_mark: | 26 + | Parallel Evaluation | :white_check_mark: | [Experimental](https://colmena.cli.rs/unstable/features/parallelism.html#parallel-evaluation-experimental) | 27 + | Node Tagging | :white_check_mark: | :white_check_mark: | 28 + | `jq` pipeline support | :white_check_mark: | :x:[^2] | 29 + | Magic Rollback | :white_check_mark: (Planned) | :x: | 30 + 31 + [^2]: You need to write custom nix code to use Colmena hive metadata inside environments like CI pipelines, bash scripting, etc., which requires a knowledge of its internals.
+25
doc/index.md
··· 1 + --- 2 + # https://vitepress.dev/reference/default-theme-home-page 3 + layout: home 4 + 5 + hero: 6 + name: "wire" 7 + text: "a tool to deploy nixos systems" 8 + # tagline: My great project tagline 9 + actions: 10 + - theme: brand 11 + text: Read Guide 12 + link: /guide/wire 13 + - theme: alt 14 + text: Reference 15 + link: /reference/cli 16 + 17 + features: 18 + - title: Parallelism 19 + details: Build and deploy many nodes at once 20 + - title: Secret management 21 + details: Fast & Unopinionated secret management 22 + - title: Node Tagging & CI Friendly 23 + details: Pipe data through jq 24 + --- 25 +
+31
doc/options.nix
··· 1 + { 2 + lib, 3 + nixosOptionsDoc, 4 + runCommand, 5 + ... 6 + }: 7 + let 8 + eval = lib.evalModules { 9 + modules = [ 10 + ../runtime/module.nix 11 + { 12 + options._module.args = lib.mkOption { 13 + internal = true; 14 + }; 15 + } 16 + ]; 17 + specialArgs = { 18 + name = "‹node name›"; 19 + nodes = { }; 20 + }; 21 + }; 22 + 23 + optionsMd = 24 + (nixosOptionsDoc { 25 + inherit (eval) options; 26 + }).optionsCommonMark; 27 + in 28 + runCommand "options-doc.md" { } '' 29 + cat ${optionsMd} > $out 30 + sed -i -e '/\*Declared by:\*/,+1d' $out 31 + ''
+21
doc/package.json
··· 1 + { 2 + "name": "wire-docs", 3 + "version": "0.1.0", 4 + "type": "module", 5 + "devDependencies": { 6 + "vitepress": "^1.6.3" 7 + }, 8 + "scripts": { 9 + "dev": "vitepress dev .", 10 + "build": "vitepress build .", 11 + "preview": "vitepress preview ." 12 + }, 13 + "pnpm": { 14 + "onlyBuiltDependencies": [ 15 + "esbuild" 16 + ] 17 + }, 18 + "dependencies": { 19 + "markdown-it-footnote": "^4.0.0" 20 + } 21 + }
+23 -10
doc/package.nix
··· 4 4 nixosOptionsDoc, 5 5 runCommand, 6 6 wire, 7 + nodejs, 8 + pnpm, 9 + stdenv, 7 10 ... 8 11 }: 9 12 let ··· 31 34 cat ${optionsMd} > $out 32 35 sed -i -e '/\*Declared by:\*/,+1d' $out 33 36 ''; 37 + 38 + pkg = builtins.fromJSON (builtins.readFile ./package.json); 34 39 in 35 - pkgs.stdenv.mkDerivation { 36 - name = "wire-docs"; 37 - buildInputs = with pkgs; [ 38 - mdbook 39 - mdbook-alerts 40 + stdenv.mkDerivation (finalAttrs: { 41 + inherit (pkg) version; 42 + pname = pkg.name; 43 + nativeBuildInputs = [ 44 + wire 45 + nodejs 46 + pnpm.configHook 40 47 ]; 41 48 src = ./.; 42 - buildPhase = '' 43 - cat ${optionsDoc} >> ./src/modules/README.md 44 - ${lib.getExe wire} inspect --markdown-help > ./src/cli/README.md 45 - mdbook build -d $out 49 + pnpmDeps = pnpm.fetchDeps { 50 + inherit (finalAttrs) pname version src; 51 + hash = "sha256-7ThshGf9tkCwSaz4DMTXxmjhN+2g0dErgzpgzJ2gv8Y"; 52 + }; 53 + patchPhase = '' 54 + cat ${optionsDoc} >> ./reference/module.md 55 + wire inspect --markdown-help > ./reference/cli.md 46 56 ''; 47 - } 57 + buildPhase = "pnpm run build > build.log 2>&1"; 58 + installPhase = "cp .vitepress/dist -r $out"; 59 + DEBUG = "*"; 60 + })
+1559
doc/pnpm-lock.yaml
··· 1 + lockfileVersion: '9.0' 2 + 3 + settings: 4 + autoInstallPeers: true 5 + excludeLinksFromLockfile: false 6 + 7 + importers: 8 + 9 + .: 10 + dependencies: 11 + markdown-it-footnote: 12 + specifier: ^4.0.0 13 + version: 4.0.0 14 + devDependencies: 15 + vitepress: 16 + specifier: ^1.6.3 17 + version: 1.6.3(@algolia/client-search@5.23.0)(postcss@8.5.3)(search-insights@2.17.3) 18 + 19 + packages: 20 + 21 + '@algolia/autocomplete-core@1.17.7': 22 + resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==} 23 + 24 + '@algolia/autocomplete-plugin-algolia-insights@1.17.7': 25 + resolution: {integrity: sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==} 26 + peerDependencies: 27 + search-insights: '>= 1 < 3' 28 + 29 + '@algolia/autocomplete-preset-algolia@1.17.7': 30 + resolution: {integrity: sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==} 31 + peerDependencies: 32 + '@algolia/client-search': '>= 4.9.1 < 6' 33 + algoliasearch: '>= 4.9.1 < 6' 34 + 35 + '@algolia/autocomplete-shared@1.17.7': 36 + resolution: {integrity: sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==} 37 + peerDependencies: 38 + '@algolia/client-search': '>= 4.9.1 < 6' 39 + algoliasearch: '>= 4.9.1 < 6' 40 + 41 + '@algolia/client-abtesting@5.23.0': 42 + resolution: {integrity: sha512-AyZ+9CUgWXwaaJ2lSwOJSy+/w0MFBPFqLrjWYs/HEpYMzBuFfGNZ7gEM9a7h4j7jY8hSBARBl8qdvInmj5vOEQ==} 43 + engines: {node: '>= 14.0.0'} 44 + 45 + '@algolia/client-analytics@5.23.0': 46 + resolution: {integrity: sha512-oeKCPwLBnTEPF/RWr0aaJnrfRDfFRLT5O7KV0OF1NmpEXvmzLmN7RwnwDKsNtPUHNfpJ6esP9xzkPEtJabrZ2w==} 47 + engines: {node: '>= 14.0.0'} 48 + 49 + '@algolia/client-common@5.23.0': 50 + resolution: {integrity: sha512-9jacdC44vXLSaYKNLkFpbU1J4BbBPi/N7uoPhcGO//8ubRuVzigH6+RfK5FbudmQlqFt0J5DGUCVeTlHtgyUeg==} 51 + engines: {node: '>= 14.0.0'} 52 + 53 + '@algolia/client-insights@5.23.0': 54 + resolution: {integrity: sha512-/Gw5UitweRsnyb24Td4XhjXmsx8PxFzCI0oW6FZZvyr4kjzB9ECP2IjO+PdDq1A2fzDl/LXQ+u8ROudoVnXnQg==} 55 + engines: {node: '>= 14.0.0'} 56 + 57 + '@algolia/client-personalization@5.23.0': 58 + resolution: {integrity: sha512-ivrEZBoXfDatpqpifgHauydxHEe4udNqJ0gy7adR2KODeQ+39MQeaT10I24mu+eylIuiQKJRqORgEdLZycq2qQ==} 59 + engines: {node: '>= 14.0.0'} 60 + 61 + '@algolia/client-query-suggestions@5.23.0': 62 + resolution: {integrity: sha512-DjSgJWqTcsnlXEKqDsU7Y2vB/W/VYLlr6UfkzJkMuKB554Ia7IJr4keP2AlHVjjbBG62IDpdh5OkEs/+fbWsOA==} 63 + engines: {node: '>= 14.0.0'} 64 + 65 + '@algolia/client-search@5.23.0': 66 + resolution: {integrity: sha512-XAYWUYUhEG4OIdo/N7H/OFFRD9fokfv3bBTky+4Y4/q07bxhnrGSUvcrU6JQ2jJTQyg6kv0ke1EIfiTO/Xxb+g==} 67 + engines: {node: '>= 14.0.0'} 68 + 69 + '@algolia/ingestion@1.23.0': 70 + resolution: {integrity: sha512-ULbykzzhhLVofCDU1m/CqSzTyKmjaxA/z1d6o6hgUuR6X7/dll9/G0lu0e4vmWIOItklWWrhU2V8sXD0YGBIHg==} 71 + engines: {node: '>= 14.0.0'} 72 + 73 + '@algolia/monitoring@1.23.0': 74 + resolution: {integrity: sha512-oB3wG7CgQJQr+uoijV7bWBphiSHkvGX43At8RGgkDyc7Aeabcp9ik5HgLC1YDgbHVOlQI+tce5HIbDCifzQCIg==} 75 + engines: {node: '>= 14.0.0'} 76 + 77 + '@algolia/recommend@5.23.0': 78 + resolution: {integrity: sha512-4PWvCV6VGhnCMAbv2zfQUAlc3ofMs6ovqKlC/xcp7tWaucYd//piHg9CcCM4S0p9OZznEGQMRYPt2uqbk6V9vg==} 79 + engines: {node: '>= 14.0.0'} 80 + 81 + '@algolia/requester-browser-xhr@5.23.0': 82 + resolution: {integrity: sha512-bacOsX41pnsupNB0k0Ny+1JDchQxIsZIcp69GKDBT0NgTHG8OayEO141eFalNmGil+GXPY0NUPRpx+5s4RdhGA==} 83 + engines: {node: '>= 14.0.0'} 84 + 85 + '@algolia/requester-fetch@5.23.0': 86 + resolution: {integrity: sha512-tVNFREexJWDrvc23evmRgAcb2KLZuVilOIB/rVnQCl0GDbqIWJuQ1lG22HKqvCEQFthHkgVFGLYE74wQ96768g==} 87 + engines: {node: '>= 14.0.0'} 88 + 89 + '@algolia/requester-node-http@5.23.0': 90 + resolution: {integrity: sha512-XXHbq2heOZc9EFCc4z+uyHS9YRBygZbYQVsWjWZWx8hdAz+tkBX/jLHM9Xg+3zO0/v8JN6pcZzqYEVsdrLeNLg==} 91 + engines: {node: '>= 14.0.0'} 92 + 93 + '@babel/helper-string-parser@7.25.9': 94 + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} 95 + engines: {node: '>=6.9.0'} 96 + 97 + '@babel/helper-validator-identifier@7.25.9': 98 + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 99 + engines: {node: '>=6.9.0'} 100 + 101 + '@babel/parser@7.27.0': 102 + resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} 103 + engines: {node: '>=6.0.0'} 104 + hasBin: true 105 + 106 + '@babel/types@7.27.0': 107 + resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} 108 + engines: {node: '>=6.9.0'} 109 + 110 + '@docsearch/css@3.8.2': 111 + resolution: {integrity: sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==} 112 + 113 + '@docsearch/js@3.8.2': 114 + resolution: {integrity: sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==} 115 + 116 + '@docsearch/react@3.8.2': 117 + resolution: {integrity: sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==} 118 + peerDependencies: 119 + '@types/react': '>= 16.8.0 < 19.0.0' 120 + react: '>= 16.8.0 < 19.0.0' 121 + react-dom: '>= 16.8.0 < 19.0.0' 122 + search-insights: '>= 1 < 3' 123 + peerDependenciesMeta: 124 + '@types/react': 125 + optional: true 126 + react: 127 + optional: true 128 + react-dom: 129 + optional: true 130 + search-insights: 131 + optional: true 132 + 133 + '@esbuild/aix-ppc64@0.21.5': 134 + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 135 + engines: {node: '>=12'} 136 + cpu: [ppc64] 137 + os: [aix] 138 + 139 + '@esbuild/android-arm64@0.21.5': 140 + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 141 + engines: {node: '>=12'} 142 + cpu: [arm64] 143 + os: [android] 144 + 145 + '@esbuild/android-arm@0.21.5': 146 + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 147 + engines: {node: '>=12'} 148 + cpu: [arm] 149 + os: [android] 150 + 151 + '@esbuild/android-x64@0.21.5': 152 + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 153 + engines: {node: '>=12'} 154 + cpu: [x64] 155 + os: [android] 156 + 157 + '@esbuild/darwin-arm64@0.21.5': 158 + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 159 + engines: {node: '>=12'} 160 + cpu: [arm64] 161 + os: [darwin] 162 + 163 + '@esbuild/darwin-x64@0.21.5': 164 + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 165 + engines: {node: '>=12'} 166 + cpu: [x64] 167 + os: [darwin] 168 + 169 + '@esbuild/freebsd-arm64@0.21.5': 170 + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 171 + engines: {node: '>=12'} 172 + cpu: [arm64] 173 + os: [freebsd] 174 + 175 + '@esbuild/freebsd-x64@0.21.5': 176 + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 177 + engines: {node: '>=12'} 178 + cpu: [x64] 179 + os: [freebsd] 180 + 181 + '@esbuild/linux-arm64@0.21.5': 182 + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 183 + engines: {node: '>=12'} 184 + cpu: [arm64] 185 + os: [linux] 186 + 187 + '@esbuild/linux-arm@0.21.5': 188 + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 189 + engines: {node: '>=12'} 190 + cpu: [arm] 191 + os: [linux] 192 + 193 + '@esbuild/linux-ia32@0.21.5': 194 + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 195 + engines: {node: '>=12'} 196 + cpu: [ia32] 197 + os: [linux] 198 + 199 + '@esbuild/linux-loong64@0.21.5': 200 + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 201 + engines: {node: '>=12'} 202 + cpu: [loong64] 203 + os: [linux] 204 + 205 + '@esbuild/linux-mips64el@0.21.5': 206 + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 207 + engines: {node: '>=12'} 208 + cpu: [mips64el] 209 + os: [linux] 210 + 211 + '@esbuild/linux-ppc64@0.21.5': 212 + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 213 + engines: {node: '>=12'} 214 + cpu: [ppc64] 215 + os: [linux] 216 + 217 + '@esbuild/linux-riscv64@0.21.5': 218 + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 219 + engines: {node: '>=12'} 220 + cpu: [riscv64] 221 + os: [linux] 222 + 223 + '@esbuild/linux-s390x@0.21.5': 224 + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 225 + engines: {node: '>=12'} 226 + cpu: [s390x] 227 + os: [linux] 228 + 229 + '@esbuild/linux-x64@0.21.5': 230 + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 231 + engines: {node: '>=12'} 232 + cpu: [x64] 233 + os: [linux] 234 + 235 + '@esbuild/netbsd-x64@0.21.5': 236 + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 237 + engines: {node: '>=12'} 238 + cpu: [x64] 239 + os: [netbsd] 240 + 241 + '@esbuild/openbsd-x64@0.21.5': 242 + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 243 + engines: {node: '>=12'} 244 + cpu: [x64] 245 + os: [openbsd] 246 + 247 + '@esbuild/sunos-x64@0.21.5': 248 + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 249 + engines: {node: '>=12'} 250 + cpu: [x64] 251 + os: [sunos] 252 + 253 + '@esbuild/win32-arm64@0.21.5': 254 + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 255 + engines: {node: '>=12'} 256 + cpu: [arm64] 257 + os: [win32] 258 + 259 + '@esbuild/win32-ia32@0.21.5': 260 + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 261 + engines: {node: '>=12'} 262 + cpu: [ia32] 263 + os: [win32] 264 + 265 + '@esbuild/win32-x64@0.21.5': 266 + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 267 + engines: {node: '>=12'} 268 + cpu: [x64] 269 + os: [win32] 270 + 271 + '@iconify-json/simple-icons@1.2.29': 272 + resolution: {integrity: sha512-KYrxmxtRz6iOAulRiUsIBMUuXek+H+Evwf8UvYPIkbQ+KDoOqTegHx3q/w3GDDVC0qJYB+D3hXPMZcpm78qIuA==} 273 + 274 + '@iconify/types@2.0.0': 275 + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} 276 + 277 + '@jridgewell/sourcemap-codec@1.5.0': 278 + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 279 + 280 + '@rollup/rollup-android-arm-eabi@4.37.0': 281 + resolution: {integrity: sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==} 282 + cpu: [arm] 283 + os: [android] 284 + 285 + '@rollup/rollup-android-arm64@4.37.0': 286 + resolution: {integrity: sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==} 287 + cpu: [arm64] 288 + os: [android] 289 + 290 + '@rollup/rollup-darwin-arm64@4.37.0': 291 + resolution: {integrity: sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==} 292 + cpu: [arm64] 293 + os: [darwin] 294 + 295 + '@rollup/rollup-darwin-x64@4.37.0': 296 + resolution: {integrity: sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==} 297 + cpu: [x64] 298 + os: [darwin] 299 + 300 + '@rollup/rollup-freebsd-arm64@4.37.0': 301 + resolution: {integrity: sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==} 302 + cpu: [arm64] 303 + os: [freebsd] 304 + 305 + '@rollup/rollup-freebsd-x64@4.37.0': 306 + resolution: {integrity: sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==} 307 + cpu: [x64] 308 + os: [freebsd] 309 + 310 + '@rollup/rollup-linux-arm-gnueabihf@4.37.0': 311 + resolution: {integrity: sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==} 312 + cpu: [arm] 313 + os: [linux] 314 + 315 + '@rollup/rollup-linux-arm-musleabihf@4.37.0': 316 + resolution: {integrity: sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==} 317 + cpu: [arm] 318 + os: [linux] 319 + 320 + '@rollup/rollup-linux-arm64-gnu@4.37.0': 321 + resolution: {integrity: sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==} 322 + cpu: [arm64] 323 + os: [linux] 324 + 325 + '@rollup/rollup-linux-arm64-musl@4.37.0': 326 + resolution: {integrity: sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==} 327 + cpu: [arm64] 328 + os: [linux] 329 + 330 + '@rollup/rollup-linux-loongarch64-gnu@4.37.0': 331 + resolution: {integrity: sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==} 332 + cpu: [loong64] 333 + os: [linux] 334 + 335 + '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': 336 + resolution: {integrity: sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==} 337 + cpu: [ppc64] 338 + os: [linux] 339 + 340 + '@rollup/rollup-linux-riscv64-gnu@4.37.0': 341 + resolution: {integrity: sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==} 342 + cpu: [riscv64] 343 + os: [linux] 344 + 345 + '@rollup/rollup-linux-riscv64-musl@4.37.0': 346 + resolution: {integrity: sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA==} 347 + cpu: [riscv64] 348 + os: [linux] 349 + 350 + '@rollup/rollup-linux-s390x-gnu@4.37.0': 351 + resolution: {integrity: sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==} 352 + cpu: [s390x] 353 + os: [linux] 354 + 355 + '@rollup/rollup-linux-x64-gnu@4.37.0': 356 + resolution: {integrity: sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ==} 357 + cpu: [x64] 358 + os: [linux] 359 + 360 + '@rollup/rollup-linux-x64-musl@4.37.0': 361 + resolution: {integrity: sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w==} 362 + cpu: [x64] 363 + os: [linux] 364 + 365 + '@rollup/rollup-win32-arm64-msvc@4.37.0': 366 + resolution: {integrity: sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==} 367 + cpu: [arm64] 368 + os: [win32] 369 + 370 + '@rollup/rollup-win32-ia32-msvc@4.37.0': 371 + resolution: {integrity: sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==} 372 + cpu: [ia32] 373 + os: [win32] 374 + 375 + '@rollup/rollup-win32-x64-msvc@4.37.0': 376 + resolution: {integrity: sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==} 377 + cpu: [x64] 378 + os: [win32] 379 + 380 + '@shikijs/core@2.5.0': 381 + resolution: {integrity: sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==} 382 + 383 + '@shikijs/engine-javascript@2.5.0': 384 + resolution: {integrity: sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==} 385 + 386 + '@shikijs/engine-oniguruma@2.5.0': 387 + resolution: {integrity: sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==} 388 + 389 + '@shikijs/langs@2.5.0': 390 + resolution: {integrity: sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==} 391 + 392 + '@shikijs/themes@2.5.0': 393 + resolution: {integrity: sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==} 394 + 395 + '@shikijs/transformers@2.5.0': 396 + resolution: {integrity: sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==} 397 + 398 + '@shikijs/types@2.5.0': 399 + resolution: {integrity: sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==} 400 + 401 + '@shikijs/vscode-textmate@10.0.2': 402 + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} 403 + 404 + '@types/estree@1.0.6': 405 + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 406 + 407 + '@types/hast@3.0.4': 408 + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} 409 + 410 + '@types/linkify-it@5.0.0': 411 + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} 412 + 413 + '@types/markdown-it@14.1.2': 414 + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} 415 + 416 + '@types/mdast@4.0.4': 417 + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} 418 + 419 + '@types/mdurl@2.0.0': 420 + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} 421 + 422 + '@types/unist@3.0.3': 423 + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} 424 + 425 + '@types/web-bluetooth@0.0.21': 426 + resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} 427 + 428 + '@ungap/structured-clone@1.3.0': 429 + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} 430 + 431 + '@vitejs/plugin-vue@5.2.3': 432 + resolution: {integrity: sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==} 433 + engines: {node: ^18.0.0 || >=20.0.0} 434 + peerDependencies: 435 + vite: ^5.0.0 || ^6.0.0 436 + vue: ^3.2.25 437 + 438 + '@vue/compiler-core@3.5.13': 439 + resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} 440 + 441 + '@vue/compiler-dom@3.5.13': 442 + resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} 443 + 444 + '@vue/compiler-sfc@3.5.13': 445 + resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} 446 + 447 + '@vue/compiler-ssr@3.5.13': 448 + resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} 449 + 450 + '@vue/devtools-api@7.7.2': 451 + resolution: {integrity: sha512-1syn558KhyN+chO5SjlZIwJ8bV/bQ1nOVTG66t2RbG66ZGekyiYNmRO7X9BJCXQqPsFHlnksqvPhce2qpzxFnA==} 452 + 453 + '@vue/devtools-kit@7.7.2': 454 + resolution: {integrity: sha512-CY0I1JH3Z8PECbn6k3TqM1Bk9ASWxeMtTCvZr7vb+CHi+X/QwQm5F1/fPagraamKMAHVfuuCbdcnNg1A4CYVWQ==} 455 + 456 + '@vue/devtools-shared@7.7.2': 457 + resolution: {integrity: sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA==} 458 + 459 + '@vue/reactivity@3.5.13': 460 + resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} 461 + 462 + '@vue/runtime-core@3.5.13': 463 + resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} 464 + 465 + '@vue/runtime-dom@3.5.13': 466 + resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} 467 + 468 + '@vue/server-renderer@3.5.13': 469 + resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} 470 + peerDependencies: 471 + vue: 3.5.13 472 + 473 + '@vue/shared@3.5.13': 474 + resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} 475 + 476 + '@vueuse/core@12.8.2': 477 + resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==} 478 + 479 + '@vueuse/integrations@12.8.2': 480 + resolution: {integrity: sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==} 481 + peerDependencies: 482 + async-validator: ^4 483 + axios: ^1 484 + change-case: ^5 485 + drauu: ^0.4 486 + focus-trap: ^7 487 + fuse.js: ^7 488 + idb-keyval: ^6 489 + jwt-decode: ^4 490 + nprogress: ^0.2 491 + qrcode: ^1.5 492 + sortablejs: ^1 493 + universal-cookie: ^7 494 + peerDependenciesMeta: 495 + async-validator: 496 + optional: true 497 + axios: 498 + optional: true 499 + change-case: 500 + optional: true 501 + drauu: 502 + optional: true 503 + focus-trap: 504 + optional: true 505 + fuse.js: 506 + optional: true 507 + idb-keyval: 508 + optional: true 509 + jwt-decode: 510 + optional: true 511 + nprogress: 512 + optional: true 513 + qrcode: 514 + optional: true 515 + sortablejs: 516 + optional: true 517 + universal-cookie: 518 + optional: true 519 + 520 + '@vueuse/metadata@12.8.2': 521 + resolution: {integrity: sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==} 522 + 523 + '@vueuse/shared@12.8.2': 524 + resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==} 525 + 526 + algoliasearch@5.23.0: 527 + resolution: {integrity: sha512-7TCj+hLx6fZKppLL74lYGDEltSBNSu4vqRwgqeIKZ3VQ0q3aOrdEN0f1sDWcvU1b+psn2wnl7aHt9hWtYatUUA==} 528 + engines: {node: '>= 14.0.0'} 529 + 530 + birpc@0.2.19: 531 + resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} 532 + 533 + ccount@2.0.1: 534 + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} 535 + 536 + character-entities-html4@2.1.0: 537 + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} 538 + 539 + character-entities-legacy@3.0.0: 540 + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} 541 + 542 + comma-separated-tokens@2.0.3: 543 + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} 544 + 545 + copy-anything@3.0.5: 546 + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} 547 + engines: {node: '>=12.13'} 548 + 549 + csstype@3.1.3: 550 + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 551 + 552 + dequal@2.0.3: 553 + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 554 + engines: {node: '>=6'} 555 + 556 + devlop@1.1.0: 557 + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} 558 + 559 + emoji-regex-xs@1.0.0: 560 + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} 561 + 562 + entities@4.5.0: 563 + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 564 + engines: {node: '>=0.12'} 565 + 566 + esbuild@0.21.5: 567 + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 568 + engines: {node: '>=12'} 569 + hasBin: true 570 + 571 + estree-walker@2.0.2: 572 + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 573 + 574 + focus-trap@7.6.4: 575 + resolution: {integrity: sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==} 576 + 577 + fsevents@2.3.3: 578 + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 579 + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 580 + os: [darwin] 581 + 582 + hast-util-to-html@9.0.5: 583 + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} 584 + 585 + hast-util-whitespace@3.0.0: 586 + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} 587 + 588 + hookable@5.5.3: 589 + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} 590 + 591 + html-void-elements@3.0.0: 592 + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} 593 + 594 + is-what@4.1.16: 595 + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} 596 + engines: {node: '>=12.13'} 597 + 598 + magic-string@0.30.17: 599 + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 600 + 601 + mark.js@8.11.1: 602 + resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==} 603 + 604 + markdown-it-footnote@4.0.0: 605 + resolution: {integrity: sha512-WYJ7urf+khJYl3DqofQpYfEYkZKbmXmwxQV8c8mO/hGIhgZ1wOe7R4HLFNwqx7TjILbnC98fuyeSsin19JdFcQ==} 606 + 607 + mdast-util-to-hast@13.2.0: 608 + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} 609 + 610 + micromark-util-character@2.1.1: 611 + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} 612 + 613 + micromark-util-encode@2.0.1: 614 + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} 615 + 616 + micromark-util-sanitize-uri@2.0.1: 617 + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} 618 + 619 + micromark-util-symbol@2.0.1: 620 + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} 621 + 622 + micromark-util-types@2.0.2: 623 + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} 624 + 625 + minisearch@7.1.2: 626 + resolution: {integrity: sha512-R1Pd9eF+MD5JYDDSPAp/q1ougKglm14uEkPMvQ/05RGmx6G9wvmLTrTI/Q5iPNJLYqNdsDQ7qTGIcNWR+FrHmA==} 627 + 628 + mitt@3.0.1: 629 + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} 630 + 631 + nanoid@3.3.11: 632 + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 633 + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 634 + hasBin: true 635 + 636 + oniguruma-to-es@3.1.1: 637 + resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==} 638 + 639 + perfect-debounce@1.0.0: 640 + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} 641 + 642 + picocolors@1.1.1: 643 + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 644 + 645 + postcss@8.5.3: 646 + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} 647 + engines: {node: ^10 || ^12 || >=14} 648 + 649 + preact@10.26.4: 650 + resolution: {integrity: sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w==} 651 + 652 + property-information@7.0.0: 653 + resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} 654 + 655 + regex-recursion@6.0.2: 656 + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} 657 + 658 + regex-utilities@2.3.0: 659 + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} 660 + 661 + regex@6.0.1: 662 + resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} 663 + 664 + rfdc@1.4.1: 665 + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} 666 + 667 + rollup@4.37.0: 668 + resolution: {integrity: sha512-iAtQy/L4QFU+rTJ1YUjXqJOJzuwEghqWzCEYD2FEghT7Gsy1VdABntrO4CLopA5IkflTyqNiLNwPcOJ3S7UKLg==} 669 + engines: {node: '>=18.0.0', npm: '>=8.0.0'} 670 + hasBin: true 671 + 672 + search-insights@2.17.3: 673 + resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} 674 + 675 + shiki@2.5.0: 676 + resolution: {integrity: sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==} 677 + 678 + source-map-js@1.2.1: 679 + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 680 + engines: {node: '>=0.10.0'} 681 + 682 + space-separated-tokens@2.0.2: 683 + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} 684 + 685 + speakingurl@14.0.1: 686 + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} 687 + engines: {node: '>=0.10.0'} 688 + 689 + stringify-entities@4.0.4: 690 + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} 691 + 692 + superjson@2.2.2: 693 + resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} 694 + engines: {node: '>=16'} 695 + 696 + tabbable@6.2.0: 697 + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} 698 + 699 + trim-lines@3.0.1: 700 + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} 701 + 702 + unist-util-is@6.0.0: 703 + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} 704 + 705 + unist-util-position@5.0.0: 706 + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} 707 + 708 + unist-util-stringify-position@4.0.0: 709 + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} 710 + 711 + unist-util-visit-parents@6.0.1: 712 + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} 713 + 714 + unist-util-visit@5.0.0: 715 + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} 716 + 717 + vfile-message@4.0.2: 718 + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} 719 + 720 + vfile@6.0.3: 721 + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} 722 + 723 + vite@5.4.15: 724 + resolution: {integrity: sha512-6ANcZRivqL/4WtwPGTKNaosuNJr5tWiftOC7liM7G9+rMb8+oeJeyzymDu4rTN93seySBmbjSfsS3Vzr19KNtA==} 725 + engines: {node: ^18.0.0 || >=20.0.0} 726 + hasBin: true 727 + peerDependencies: 728 + '@types/node': ^18.0.0 || >=20.0.0 729 + less: '*' 730 + lightningcss: ^1.21.0 731 + sass: '*' 732 + sass-embedded: '*' 733 + stylus: '*' 734 + sugarss: '*' 735 + terser: ^5.4.0 736 + peerDependenciesMeta: 737 + '@types/node': 738 + optional: true 739 + less: 740 + optional: true 741 + lightningcss: 742 + optional: true 743 + sass: 744 + optional: true 745 + sass-embedded: 746 + optional: true 747 + stylus: 748 + optional: true 749 + sugarss: 750 + optional: true 751 + terser: 752 + optional: true 753 + 754 + vitepress@1.6.3: 755 + resolution: {integrity: sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw==} 756 + hasBin: true 757 + peerDependencies: 758 + markdown-it-mathjax3: ^4 759 + postcss: ^8 760 + peerDependenciesMeta: 761 + markdown-it-mathjax3: 762 + optional: true 763 + postcss: 764 + optional: true 765 + 766 + vue@3.5.13: 767 + resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} 768 + peerDependencies: 769 + typescript: '*' 770 + peerDependenciesMeta: 771 + typescript: 772 + optional: true 773 + 774 + zwitch@2.0.4: 775 + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} 776 + 777 + snapshots: 778 + 779 + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.23.0)(algoliasearch@5.23.0)(search-insights@2.17.3)': 780 + dependencies: 781 + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.23.0)(algoliasearch@5.23.0)(search-insights@2.17.3) 782 + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.0)(algoliasearch@5.23.0) 783 + transitivePeerDependencies: 784 + - '@algolia/client-search' 785 + - algoliasearch 786 + - search-insights 787 + 788 + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.23.0)(algoliasearch@5.23.0)(search-insights@2.17.3)': 789 + dependencies: 790 + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.0)(algoliasearch@5.23.0) 791 + search-insights: 2.17.3 792 + transitivePeerDependencies: 793 + - '@algolia/client-search' 794 + - algoliasearch 795 + 796 + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.23.0)(algoliasearch@5.23.0)': 797 + dependencies: 798 + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.0)(algoliasearch@5.23.0) 799 + '@algolia/client-search': 5.23.0 800 + algoliasearch: 5.23.0 801 + 802 + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.23.0)(algoliasearch@5.23.0)': 803 + dependencies: 804 + '@algolia/client-search': 5.23.0 805 + algoliasearch: 5.23.0 806 + 807 + '@algolia/client-abtesting@5.23.0': 808 + dependencies: 809 + '@algolia/client-common': 5.23.0 810 + '@algolia/requester-browser-xhr': 5.23.0 811 + '@algolia/requester-fetch': 5.23.0 812 + '@algolia/requester-node-http': 5.23.0 813 + 814 + '@algolia/client-analytics@5.23.0': 815 + dependencies: 816 + '@algolia/client-common': 5.23.0 817 + '@algolia/requester-browser-xhr': 5.23.0 818 + '@algolia/requester-fetch': 5.23.0 819 + '@algolia/requester-node-http': 5.23.0 820 + 821 + '@algolia/client-common@5.23.0': {} 822 + 823 + '@algolia/client-insights@5.23.0': 824 + dependencies: 825 + '@algolia/client-common': 5.23.0 826 + '@algolia/requester-browser-xhr': 5.23.0 827 + '@algolia/requester-fetch': 5.23.0 828 + '@algolia/requester-node-http': 5.23.0 829 + 830 + '@algolia/client-personalization@5.23.0': 831 + dependencies: 832 + '@algolia/client-common': 5.23.0 833 + '@algolia/requester-browser-xhr': 5.23.0 834 + '@algolia/requester-fetch': 5.23.0 835 + '@algolia/requester-node-http': 5.23.0 836 + 837 + '@algolia/client-query-suggestions@5.23.0': 838 + dependencies: 839 + '@algolia/client-common': 5.23.0 840 + '@algolia/requester-browser-xhr': 5.23.0 841 + '@algolia/requester-fetch': 5.23.0 842 + '@algolia/requester-node-http': 5.23.0 843 + 844 + '@algolia/client-search@5.23.0': 845 + dependencies: 846 + '@algolia/client-common': 5.23.0 847 + '@algolia/requester-browser-xhr': 5.23.0 848 + '@algolia/requester-fetch': 5.23.0 849 + '@algolia/requester-node-http': 5.23.0 850 + 851 + '@algolia/ingestion@1.23.0': 852 + dependencies: 853 + '@algolia/client-common': 5.23.0 854 + '@algolia/requester-browser-xhr': 5.23.0 855 + '@algolia/requester-fetch': 5.23.0 856 + '@algolia/requester-node-http': 5.23.0 857 + 858 + '@algolia/monitoring@1.23.0': 859 + dependencies: 860 + '@algolia/client-common': 5.23.0 861 + '@algolia/requester-browser-xhr': 5.23.0 862 + '@algolia/requester-fetch': 5.23.0 863 + '@algolia/requester-node-http': 5.23.0 864 + 865 + '@algolia/recommend@5.23.0': 866 + dependencies: 867 + '@algolia/client-common': 5.23.0 868 + '@algolia/requester-browser-xhr': 5.23.0 869 + '@algolia/requester-fetch': 5.23.0 870 + '@algolia/requester-node-http': 5.23.0 871 + 872 + '@algolia/requester-browser-xhr@5.23.0': 873 + dependencies: 874 + '@algolia/client-common': 5.23.0 875 + 876 + '@algolia/requester-fetch@5.23.0': 877 + dependencies: 878 + '@algolia/client-common': 5.23.0 879 + 880 + '@algolia/requester-node-http@5.23.0': 881 + dependencies: 882 + '@algolia/client-common': 5.23.0 883 + 884 + '@babel/helper-string-parser@7.25.9': {} 885 + 886 + '@babel/helper-validator-identifier@7.25.9': {} 887 + 888 + '@babel/parser@7.27.0': 889 + dependencies: 890 + '@babel/types': 7.27.0 891 + 892 + '@babel/types@7.27.0': 893 + dependencies: 894 + '@babel/helper-string-parser': 7.25.9 895 + '@babel/helper-validator-identifier': 7.25.9 896 + 897 + '@docsearch/css@3.8.2': {} 898 + 899 + '@docsearch/js@3.8.2(@algolia/client-search@5.23.0)(search-insights@2.17.3)': 900 + dependencies: 901 + '@docsearch/react': 3.8.2(@algolia/client-search@5.23.0)(search-insights@2.17.3) 902 + preact: 10.26.4 903 + transitivePeerDependencies: 904 + - '@algolia/client-search' 905 + - '@types/react' 906 + - react 907 + - react-dom 908 + - search-insights 909 + 910 + '@docsearch/react@3.8.2(@algolia/client-search@5.23.0)(search-insights@2.17.3)': 911 + dependencies: 912 + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.23.0)(algoliasearch@5.23.0)(search-insights@2.17.3) 913 + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.23.0)(algoliasearch@5.23.0) 914 + '@docsearch/css': 3.8.2 915 + algoliasearch: 5.23.0 916 + optionalDependencies: 917 + search-insights: 2.17.3 918 + transitivePeerDependencies: 919 + - '@algolia/client-search' 920 + 921 + '@esbuild/aix-ppc64@0.21.5': 922 + optional: true 923 + 924 + '@esbuild/android-arm64@0.21.5': 925 + optional: true 926 + 927 + '@esbuild/android-arm@0.21.5': 928 + optional: true 929 + 930 + '@esbuild/android-x64@0.21.5': 931 + optional: true 932 + 933 + '@esbuild/darwin-arm64@0.21.5': 934 + optional: true 935 + 936 + '@esbuild/darwin-x64@0.21.5': 937 + optional: true 938 + 939 + '@esbuild/freebsd-arm64@0.21.5': 940 + optional: true 941 + 942 + '@esbuild/freebsd-x64@0.21.5': 943 + optional: true 944 + 945 + '@esbuild/linux-arm64@0.21.5': 946 + optional: true 947 + 948 + '@esbuild/linux-arm@0.21.5': 949 + optional: true 950 + 951 + '@esbuild/linux-ia32@0.21.5': 952 + optional: true 953 + 954 + '@esbuild/linux-loong64@0.21.5': 955 + optional: true 956 + 957 + '@esbuild/linux-mips64el@0.21.5': 958 + optional: true 959 + 960 + '@esbuild/linux-ppc64@0.21.5': 961 + optional: true 962 + 963 + '@esbuild/linux-riscv64@0.21.5': 964 + optional: true 965 + 966 + '@esbuild/linux-s390x@0.21.5': 967 + optional: true 968 + 969 + '@esbuild/linux-x64@0.21.5': 970 + optional: true 971 + 972 + '@esbuild/netbsd-x64@0.21.5': 973 + optional: true 974 + 975 + '@esbuild/openbsd-x64@0.21.5': 976 + optional: true 977 + 978 + '@esbuild/sunos-x64@0.21.5': 979 + optional: true 980 + 981 + '@esbuild/win32-arm64@0.21.5': 982 + optional: true 983 + 984 + '@esbuild/win32-ia32@0.21.5': 985 + optional: true 986 + 987 + '@esbuild/win32-x64@0.21.5': 988 + optional: true 989 + 990 + '@iconify-json/simple-icons@1.2.29': 991 + dependencies: 992 + '@iconify/types': 2.0.0 993 + 994 + '@iconify/types@2.0.0': {} 995 + 996 + '@jridgewell/sourcemap-codec@1.5.0': {} 997 + 998 + '@rollup/rollup-android-arm-eabi@4.37.0': 999 + optional: true 1000 + 1001 + '@rollup/rollup-android-arm64@4.37.0': 1002 + optional: true 1003 + 1004 + '@rollup/rollup-darwin-arm64@4.37.0': 1005 + optional: true 1006 + 1007 + '@rollup/rollup-darwin-x64@4.37.0': 1008 + optional: true 1009 + 1010 + '@rollup/rollup-freebsd-arm64@4.37.0': 1011 + optional: true 1012 + 1013 + '@rollup/rollup-freebsd-x64@4.37.0': 1014 + optional: true 1015 + 1016 + '@rollup/rollup-linux-arm-gnueabihf@4.37.0': 1017 + optional: true 1018 + 1019 + '@rollup/rollup-linux-arm-musleabihf@4.37.0': 1020 + optional: true 1021 + 1022 + '@rollup/rollup-linux-arm64-gnu@4.37.0': 1023 + optional: true 1024 + 1025 + '@rollup/rollup-linux-arm64-musl@4.37.0': 1026 + optional: true 1027 + 1028 + '@rollup/rollup-linux-loongarch64-gnu@4.37.0': 1029 + optional: true 1030 + 1031 + '@rollup/rollup-linux-powerpc64le-gnu@4.37.0': 1032 + optional: true 1033 + 1034 + '@rollup/rollup-linux-riscv64-gnu@4.37.0': 1035 + optional: true 1036 + 1037 + '@rollup/rollup-linux-riscv64-musl@4.37.0': 1038 + optional: true 1039 + 1040 + '@rollup/rollup-linux-s390x-gnu@4.37.0': 1041 + optional: true 1042 + 1043 + '@rollup/rollup-linux-x64-gnu@4.37.0': 1044 + optional: true 1045 + 1046 + '@rollup/rollup-linux-x64-musl@4.37.0': 1047 + optional: true 1048 + 1049 + '@rollup/rollup-win32-arm64-msvc@4.37.0': 1050 + optional: true 1051 + 1052 + '@rollup/rollup-win32-ia32-msvc@4.37.0': 1053 + optional: true 1054 + 1055 + '@rollup/rollup-win32-x64-msvc@4.37.0': 1056 + optional: true 1057 + 1058 + '@shikijs/core@2.5.0': 1059 + dependencies: 1060 + '@shikijs/engine-javascript': 2.5.0 1061 + '@shikijs/engine-oniguruma': 2.5.0 1062 + '@shikijs/types': 2.5.0 1063 + '@shikijs/vscode-textmate': 10.0.2 1064 + '@types/hast': 3.0.4 1065 + hast-util-to-html: 9.0.5 1066 + 1067 + '@shikijs/engine-javascript@2.5.0': 1068 + dependencies: 1069 + '@shikijs/types': 2.5.0 1070 + '@shikijs/vscode-textmate': 10.0.2 1071 + oniguruma-to-es: 3.1.1 1072 + 1073 + '@shikijs/engine-oniguruma@2.5.0': 1074 + dependencies: 1075 + '@shikijs/types': 2.5.0 1076 + '@shikijs/vscode-textmate': 10.0.2 1077 + 1078 + '@shikijs/langs@2.5.0': 1079 + dependencies: 1080 + '@shikijs/types': 2.5.0 1081 + 1082 + '@shikijs/themes@2.5.0': 1083 + dependencies: 1084 + '@shikijs/types': 2.5.0 1085 + 1086 + '@shikijs/transformers@2.5.0': 1087 + dependencies: 1088 + '@shikijs/core': 2.5.0 1089 + '@shikijs/types': 2.5.0 1090 + 1091 + '@shikijs/types@2.5.0': 1092 + dependencies: 1093 + '@shikijs/vscode-textmate': 10.0.2 1094 + '@types/hast': 3.0.4 1095 + 1096 + '@shikijs/vscode-textmate@10.0.2': {} 1097 + 1098 + '@types/estree@1.0.6': {} 1099 + 1100 + '@types/hast@3.0.4': 1101 + dependencies: 1102 + '@types/unist': 3.0.3 1103 + 1104 + '@types/linkify-it@5.0.0': {} 1105 + 1106 + '@types/markdown-it@14.1.2': 1107 + dependencies: 1108 + '@types/linkify-it': 5.0.0 1109 + '@types/mdurl': 2.0.0 1110 + 1111 + '@types/mdast@4.0.4': 1112 + dependencies: 1113 + '@types/unist': 3.0.3 1114 + 1115 + '@types/mdurl@2.0.0': {} 1116 + 1117 + '@types/unist@3.0.3': {} 1118 + 1119 + '@types/web-bluetooth@0.0.21': {} 1120 + 1121 + '@ungap/structured-clone@1.3.0': {} 1122 + 1123 + '@vitejs/plugin-vue@5.2.3(vite@5.4.15)(vue@3.5.13)': 1124 + dependencies: 1125 + vite: 5.4.15 1126 + vue: 3.5.13 1127 + 1128 + '@vue/compiler-core@3.5.13': 1129 + dependencies: 1130 + '@babel/parser': 7.27.0 1131 + '@vue/shared': 3.5.13 1132 + entities: 4.5.0 1133 + estree-walker: 2.0.2 1134 + source-map-js: 1.2.1 1135 + 1136 + '@vue/compiler-dom@3.5.13': 1137 + dependencies: 1138 + '@vue/compiler-core': 3.5.13 1139 + '@vue/shared': 3.5.13 1140 + 1141 + '@vue/compiler-sfc@3.5.13': 1142 + dependencies: 1143 + '@babel/parser': 7.27.0 1144 + '@vue/compiler-core': 3.5.13 1145 + '@vue/compiler-dom': 3.5.13 1146 + '@vue/compiler-ssr': 3.5.13 1147 + '@vue/shared': 3.5.13 1148 + estree-walker: 2.0.2 1149 + magic-string: 0.30.17 1150 + postcss: 8.5.3 1151 + source-map-js: 1.2.1 1152 + 1153 + '@vue/compiler-ssr@3.5.13': 1154 + dependencies: 1155 + '@vue/compiler-dom': 3.5.13 1156 + '@vue/shared': 3.5.13 1157 + 1158 + '@vue/devtools-api@7.7.2': 1159 + dependencies: 1160 + '@vue/devtools-kit': 7.7.2 1161 + 1162 + '@vue/devtools-kit@7.7.2': 1163 + dependencies: 1164 + '@vue/devtools-shared': 7.7.2 1165 + birpc: 0.2.19 1166 + hookable: 5.5.3 1167 + mitt: 3.0.1 1168 + perfect-debounce: 1.0.0 1169 + speakingurl: 14.0.1 1170 + superjson: 2.2.2 1171 + 1172 + '@vue/devtools-shared@7.7.2': 1173 + dependencies: 1174 + rfdc: 1.4.1 1175 + 1176 + '@vue/reactivity@3.5.13': 1177 + dependencies: 1178 + '@vue/shared': 3.5.13 1179 + 1180 + '@vue/runtime-core@3.5.13': 1181 + dependencies: 1182 + '@vue/reactivity': 3.5.13 1183 + '@vue/shared': 3.5.13 1184 + 1185 + '@vue/runtime-dom@3.5.13': 1186 + dependencies: 1187 + '@vue/reactivity': 3.5.13 1188 + '@vue/runtime-core': 3.5.13 1189 + '@vue/shared': 3.5.13 1190 + csstype: 3.1.3 1191 + 1192 + '@vue/server-renderer@3.5.13(vue@3.5.13)': 1193 + dependencies: 1194 + '@vue/compiler-ssr': 3.5.13 1195 + '@vue/shared': 3.5.13 1196 + vue: 3.5.13 1197 + 1198 + '@vue/shared@3.5.13': {} 1199 + 1200 + '@vueuse/core@12.8.2': 1201 + dependencies: 1202 + '@types/web-bluetooth': 0.0.21 1203 + '@vueuse/metadata': 12.8.2 1204 + '@vueuse/shared': 12.8.2 1205 + vue: 3.5.13 1206 + transitivePeerDependencies: 1207 + - typescript 1208 + 1209 + '@vueuse/integrations@12.8.2(focus-trap@7.6.4)': 1210 + dependencies: 1211 + '@vueuse/core': 12.8.2 1212 + '@vueuse/shared': 12.8.2 1213 + vue: 3.5.13 1214 + optionalDependencies: 1215 + focus-trap: 7.6.4 1216 + transitivePeerDependencies: 1217 + - typescript 1218 + 1219 + '@vueuse/metadata@12.8.2': {} 1220 + 1221 + '@vueuse/shared@12.8.2': 1222 + dependencies: 1223 + vue: 3.5.13 1224 + transitivePeerDependencies: 1225 + - typescript 1226 + 1227 + algoliasearch@5.23.0: 1228 + dependencies: 1229 + '@algolia/client-abtesting': 5.23.0 1230 + '@algolia/client-analytics': 5.23.0 1231 + '@algolia/client-common': 5.23.0 1232 + '@algolia/client-insights': 5.23.0 1233 + '@algolia/client-personalization': 5.23.0 1234 + '@algolia/client-query-suggestions': 5.23.0 1235 + '@algolia/client-search': 5.23.0 1236 + '@algolia/ingestion': 1.23.0 1237 + '@algolia/monitoring': 1.23.0 1238 + '@algolia/recommend': 5.23.0 1239 + '@algolia/requester-browser-xhr': 5.23.0 1240 + '@algolia/requester-fetch': 5.23.0 1241 + '@algolia/requester-node-http': 5.23.0 1242 + 1243 + birpc@0.2.19: {} 1244 + 1245 + ccount@2.0.1: {} 1246 + 1247 + character-entities-html4@2.1.0: {} 1248 + 1249 + character-entities-legacy@3.0.0: {} 1250 + 1251 + comma-separated-tokens@2.0.3: {} 1252 + 1253 + copy-anything@3.0.5: 1254 + dependencies: 1255 + is-what: 4.1.16 1256 + 1257 + csstype@3.1.3: {} 1258 + 1259 + dequal@2.0.3: {} 1260 + 1261 + devlop@1.1.0: 1262 + dependencies: 1263 + dequal: 2.0.3 1264 + 1265 + emoji-regex-xs@1.0.0: {} 1266 + 1267 + entities@4.5.0: {} 1268 + 1269 + esbuild@0.21.5: 1270 + optionalDependencies: 1271 + '@esbuild/aix-ppc64': 0.21.5 1272 + '@esbuild/android-arm': 0.21.5 1273 + '@esbuild/android-arm64': 0.21.5 1274 + '@esbuild/android-x64': 0.21.5 1275 + '@esbuild/darwin-arm64': 0.21.5 1276 + '@esbuild/darwin-x64': 0.21.5 1277 + '@esbuild/freebsd-arm64': 0.21.5 1278 + '@esbuild/freebsd-x64': 0.21.5 1279 + '@esbuild/linux-arm': 0.21.5 1280 + '@esbuild/linux-arm64': 0.21.5 1281 + '@esbuild/linux-ia32': 0.21.5 1282 + '@esbuild/linux-loong64': 0.21.5 1283 + '@esbuild/linux-mips64el': 0.21.5 1284 + '@esbuild/linux-ppc64': 0.21.5 1285 + '@esbuild/linux-riscv64': 0.21.5 1286 + '@esbuild/linux-s390x': 0.21.5 1287 + '@esbuild/linux-x64': 0.21.5 1288 + '@esbuild/netbsd-x64': 0.21.5 1289 + '@esbuild/openbsd-x64': 0.21.5 1290 + '@esbuild/sunos-x64': 0.21.5 1291 + '@esbuild/win32-arm64': 0.21.5 1292 + '@esbuild/win32-ia32': 0.21.5 1293 + '@esbuild/win32-x64': 0.21.5 1294 + 1295 + estree-walker@2.0.2: {} 1296 + 1297 + focus-trap@7.6.4: 1298 + dependencies: 1299 + tabbable: 6.2.0 1300 + 1301 + fsevents@2.3.3: 1302 + optional: true 1303 + 1304 + hast-util-to-html@9.0.5: 1305 + dependencies: 1306 + '@types/hast': 3.0.4 1307 + '@types/unist': 3.0.3 1308 + ccount: 2.0.1 1309 + comma-separated-tokens: 2.0.3 1310 + hast-util-whitespace: 3.0.0 1311 + html-void-elements: 3.0.0 1312 + mdast-util-to-hast: 13.2.0 1313 + property-information: 7.0.0 1314 + space-separated-tokens: 2.0.2 1315 + stringify-entities: 4.0.4 1316 + zwitch: 2.0.4 1317 + 1318 + hast-util-whitespace@3.0.0: 1319 + dependencies: 1320 + '@types/hast': 3.0.4 1321 + 1322 + hookable@5.5.3: {} 1323 + 1324 + html-void-elements@3.0.0: {} 1325 + 1326 + is-what@4.1.16: {} 1327 + 1328 + magic-string@0.30.17: 1329 + dependencies: 1330 + '@jridgewell/sourcemap-codec': 1.5.0 1331 + 1332 + mark.js@8.11.1: {} 1333 + 1334 + markdown-it-footnote@4.0.0: {} 1335 + 1336 + mdast-util-to-hast@13.2.0: 1337 + dependencies: 1338 + '@types/hast': 3.0.4 1339 + '@types/mdast': 4.0.4 1340 + '@ungap/structured-clone': 1.3.0 1341 + devlop: 1.1.0 1342 + micromark-util-sanitize-uri: 2.0.1 1343 + trim-lines: 3.0.1 1344 + unist-util-position: 5.0.0 1345 + unist-util-visit: 5.0.0 1346 + vfile: 6.0.3 1347 + 1348 + micromark-util-character@2.1.1: 1349 + dependencies: 1350 + micromark-util-symbol: 2.0.1 1351 + micromark-util-types: 2.0.2 1352 + 1353 + micromark-util-encode@2.0.1: {} 1354 + 1355 + micromark-util-sanitize-uri@2.0.1: 1356 + dependencies: 1357 + micromark-util-character: 2.1.1 1358 + micromark-util-encode: 2.0.1 1359 + micromark-util-symbol: 2.0.1 1360 + 1361 + micromark-util-symbol@2.0.1: {} 1362 + 1363 + micromark-util-types@2.0.2: {} 1364 + 1365 + minisearch@7.1.2: {} 1366 + 1367 + mitt@3.0.1: {} 1368 + 1369 + nanoid@3.3.11: {} 1370 + 1371 + oniguruma-to-es@3.1.1: 1372 + dependencies: 1373 + emoji-regex-xs: 1.0.0 1374 + regex: 6.0.1 1375 + regex-recursion: 6.0.2 1376 + 1377 + perfect-debounce@1.0.0: {} 1378 + 1379 + picocolors@1.1.1: {} 1380 + 1381 + postcss@8.5.3: 1382 + dependencies: 1383 + nanoid: 3.3.11 1384 + picocolors: 1.1.1 1385 + source-map-js: 1.2.1 1386 + 1387 + preact@10.26.4: {} 1388 + 1389 + property-information@7.0.0: {} 1390 + 1391 + regex-recursion@6.0.2: 1392 + dependencies: 1393 + regex-utilities: 2.3.0 1394 + 1395 + regex-utilities@2.3.0: {} 1396 + 1397 + regex@6.0.1: 1398 + dependencies: 1399 + regex-utilities: 2.3.0 1400 + 1401 + rfdc@1.4.1: {} 1402 + 1403 + rollup@4.37.0: 1404 + dependencies: 1405 + '@types/estree': 1.0.6 1406 + optionalDependencies: 1407 + '@rollup/rollup-android-arm-eabi': 4.37.0 1408 + '@rollup/rollup-android-arm64': 4.37.0 1409 + '@rollup/rollup-darwin-arm64': 4.37.0 1410 + '@rollup/rollup-darwin-x64': 4.37.0 1411 + '@rollup/rollup-freebsd-arm64': 4.37.0 1412 + '@rollup/rollup-freebsd-x64': 4.37.0 1413 + '@rollup/rollup-linux-arm-gnueabihf': 4.37.0 1414 + '@rollup/rollup-linux-arm-musleabihf': 4.37.0 1415 + '@rollup/rollup-linux-arm64-gnu': 4.37.0 1416 + '@rollup/rollup-linux-arm64-musl': 4.37.0 1417 + '@rollup/rollup-linux-loongarch64-gnu': 4.37.0 1418 + '@rollup/rollup-linux-powerpc64le-gnu': 4.37.0 1419 + '@rollup/rollup-linux-riscv64-gnu': 4.37.0 1420 + '@rollup/rollup-linux-riscv64-musl': 4.37.0 1421 + '@rollup/rollup-linux-s390x-gnu': 4.37.0 1422 + '@rollup/rollup-linux-x64-gnu': 4.37.0 1423 + '@rollup/rollup-linux-x64-musl': 4.37.0 1424 + '@rollup/rollup-win32-arm64-msvc': 4.37.0 1425 + '@rollup/rollup-win32-ia32-msvc': 4.37.0 1426 + '@rollup/rollup-win32-x64-msvc': 4.37.0 1427 + fsevents: 2.3.3 1428 + 1429 + search-insights@2.17.3: {} 1430 + 1431 + shiki@2.5.0: 1432 + dependencies: 1433 + '@shikijs/core': 2.5.0 1434 + '@shikijs/engine-javascript': 2.5.0 1435 + '@shikijs/engine-oniguruma': 2.5.0 1436 + '@shikijs/langs': 2.5.0 1437 + '@shikijs/themes': 2.5.0 1438 + '@shikijs/types': 2.5.0 1439 + '@shikijs/vscode-textmate': 10.0.2 1440 + '@types/hast': 3.0.4 1441 + 1442 + source-map-js@1.2.1: {} 1443 + 1444 + space-separated-tokens@2.0.2: {} 1445 + 1446 + speakingurl@14.0.1: {} 1447 + 1448 + stringify-entities@4.0.4: 1449 + dependencies: 1450 + character-entities-html4: 2.1.0 1451 + character-entities-legacy: 3.0.0 1452 + 1453 + superjson@2.2.2: 1454 + dependencies: 1455 + copy-anything: 3.0.5 1456 + 1457 + tabbable@6.2.0: {} 1458 + 1459 + trim-lines@3.0.1: {} 1460 + 1461 + unist-util-is@6.0.0: 1462 + dependencies: 1463 + '@types/unist': 3.0.3 1464 + 1465 + unist-util-position@5.0.0: 1466 + dependencies: 1467 + '@types/unist': 3.0.3 1468 + 1469 + unist-util-stringify-position@4.0.0: 1470 + dependencies: 1471 + '@types/unist': 3.0.3 1472 + 1473 + unist-util-visit-parents@6.0.1: 1474 + dependencies: 1475 + '@types/unist': 3.0.3 1476 + unist-util-is: 6.0.0 1477 + 1478 + unist-util-visit@5.0.0: 1479 + dependencies: 1480 + '@types/unist': 3.0.3 1481 + unist-util-is: 6.0.0 1482 + unist-util-visit-parents: 6.0.1 1483 + 1484 + vfile-message@4.0.2: 1485 + dependencies: 1486 + '@types/unist': 3.0.3 1487 + unist-util-stringify-position: 4.0.0 1488 + 1489 + vfile@6.0.3: 1490 + dependencies: 1491 + '@types/unist': 3.0.3 1492 + vfile-message: 4.0.2 1493 + 1494 + vite@5.4.15: 1495 + dependencies: 1496 + esbuild: 0.21.5 1497 + postcss: 8.5.3 1498 + rollup: 4.37.0 1499 + optionalDependencies: 1500 + fsevents: 2.3.3 1501 + 1502 + vitepress@1.6.3(@algolia/client-search@5.23.0)(postcss@8.5.3)(search-insights@2.17.3): 1503 + dependencies: 1504 + '@docsearch/css': 3.8.2 1505 + '@docsearch/js': 3.8.2(@algolia/client-search@5.23.0)(search-insights@2.17.3) 1506 + '@iconify-json/simple-icons': 1.2.29 1507 + '@shikijs/core': 2.5.0 1508 + '@shikijs/transformers': 2.5.0 1509 + '@shikijs/types': 2.5.0 1510 + '@types/markdown-it': 14.1.2 1511 + '@vitejs/plugin-vue': 5.2.3(vite@5.4.15)(vue@3.5.13) 1512 + '@vue/devtools-api': 7.7.2 1513 + '@vue/shared': 3.5.13 1514 + '@vueuse/core': 12.8.2 1515 + '@vueuse/integrations': 12.8.2(focus-trap@7.6.4) 1516 + focus-trap: 7.6.4 1517 + mark.js: 8.11.1 1518 + minisearch: 7.1.2 1519 + shiki: 2.5.0 1520 + vite: 5.4.15 1521 + vue: 3.5.13 1522 + optionalDependencies: 1523 + postcss: 8.5.3 1524 + transitivePeerDependencies: 1525 + - '@algolia/client-search' 1526 + - '@types/node' 1527 + - '@types/react' 1528 + - async-validator 1529 + - axios 1530 + - change-case 1531 + - drauu 1532 + - fuse.js 1533 + - idb-keyval 1534 + - jwt-decode 1535 + - less 1536 + - lightningcss 1537 + - nprogress 1538 + - qrcode 1539 + - react 1540 + - react-dom 1541 + - sass 1542 + - sass-embedded 1543 + - search-insights 1544 + - sortablejs 1545 + - stylus 1546 + - sugarss 1547 + - terser 1548 + - typescript 1549 + - universal-cookie 1550 + 1551 + vue@3.5.13: 1552 + dependencies: 1553 + '@vue/compiler-dom': 3.5.13 1554 + '@vue/compiler-sfc': 3.5.13 1555 + '@vue/runtime-dom': 3.5.13 1556 + '@vue/server-renderer': 3.5.13(vue@3.5.13) 1557 + '@vue/shared': 3.5.13 1558 + 1559 + zwitch@2.0.4: {}
doc/reference/cli.md

This is a binary file and will not be displayed.

-29
doc/src/SUMMARY.md
··· 1 - # Summary 2 - 3 - # User Guide 4 - 5 - - [Intro](./intro.md) 6 - - [Creating a Hive](./creating-a-hive/README.md) 7 - - [With Flakes](./creating-a-hive/flake.md) 8 - - [Without Flakes](./creating-a-hive/hive.md) 9 - - [Examples]() 10 - - [Using 'nodes' effectively]() 11 - - [Networking nodes together with tailscale]() 12 - - [Deploying in CI]() 13 - - [Features](./features/README.md) 14 - - [Parrallelism](./features/parallelism.md) 15 - - [Magic Rollback]() 16 - - [Keys & Secrets]() 17 - - [hive.`default`]() 18 - - [Tagging](./features/tagging.md) 19 - 20 - # Understanding Wire 21 - 22 - - [Intro](./understanding-wire/intro.md) 23 - - [How nodes are evaluated]() 24 - 25 - # Reference 26 - 27 - - [Command-Line Help](./cli/README.md) 28 - - [Top Level Hive Options](./top-level.md) 29 - - [Module Options](./modules/README.md)
-1
doc/src/cli/README.md
··· 1 - # Command Line Tool
-3
doc/src/creating-a-hive/README.md
··· 1 - # Creating a hive 2 - 3 - A "hive" is a collection of nodes. Each node has tags, keys, and options that define how to connect to it.
-82
doc/src/creating-a-hive/flake.md
··· 1 - # With Flakes 2 - 3 - Deploying nodes from a flake is as simple as adding a `colmena` attribute to your flake outputs. 4 - 5 - Wire will merge nixos options in `nixosConfigurations.${nodeName}` and `colmena.${nodeName}` to create the configuration it deploys. This means you can continue to use `nixos-rebuild` to deploy your configurations alongside wire. 6 - 7 - You don't need to create a `nixosConfigurations` attribute for your nodes if you don't want to. 8 - 9 - Every node recieves its name and a list of all other nodes through specialArgs. 10 - 11 - ```nix 12 - # flake.nix 13 - { 14 - # wire will automatically use the nixpkgs input. 15 - # change `colmena.meta.nixpkgs` if you want to use a different nixpkgs 16 - inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 17 - 18 - outputs = {nixpkgs, ...}: { 19 - nixosConfigurations.node-a = nixpkgs.lib.nixosSystem { 20 - system = "x86_64-linux"; 21 - modules = [ 22 - ./node-a/configuration.nix 23 - ]; 24 - }; 25 - 26 - colmena = { 27 - defaults = { 28 - # name of node default is being applied to 29 - node, 30 - # list of all nodes 31 - nodes, 32 - pkgs, 33 - ... 34 - }: { 35 - environment.systemPackages = with pkgs; [ 36 - vim 37 - ]; 38 - }; 39 - 40 - node-a = { 41 - # name of this node 42 - name, 43 - # list of all nodes 44 - nodes, 45 - pkgs, 46 - ... 47 - }: { 48 - deployment.target = { 49 - # host defaults to the name of the node 50 - host = "node-a"; 51 - # if you use a different user, it must be wheel 52 - user = "root"; 53 - }; 54 - 55 - # wire specific options are only valid here 56 - # for example, adding keys 57 - deployment.keys."key.env" = { 58 - destDir = "/etc/keys/"; 59 - source = [ 60 - "gpg" 61 - "--decrypt" 62 - ./secrets/key.env.gpg 63 - ]; 64 - }; 65 - 66 - # other module options are valid here 67 - system.stateVersion = "24.11"; 68 - }; 69 - 70 - # nodes don't have to be a function 71 - # and they don't have to be in `nixosConfigurations` 72 - node-b = { 73 - deployment.target = { 74 - # ... 75 - }; 76 - 77 - imports = [./node-b/configuration.nix]; 78 - }; 79 - }; 80 - }; 81 - } 82 - ```
-68
doc/src/creating-a-hive/hive.md
··· 1 - # Without Flakes 2 - 3 - Create a `hive.nix` file, which is equivalent to a flake's `outputs.colmena`. 4 - You must manually specify where nixpkgs comes from when using `hive.nix`. 5 - 6 - Every node recieves its name and a list of all other nodes through specialArgs. 7 - 8 - ```nix 9 - # hive.nix 10 - { 11 - # you must specify where nixpkgs comes from when using hive.nix 12 - meta.nixpkgs = <nixpkgs>; 13 - 14 - defaults = { 15 - # name of node default is being applied to 16 - node, 17 - # list of all nodes 18 - nodes, 19 - pkgs, 20 - ... 21 - }: { 22 - environment.systemPackages = with pkgs; [ 23 - vim 24 - ]; 25 - }; 26 - 27 - node-a = { 28 - # name of this node 29 - name, 30 - # list of all nodes 31 - nodes, 32 - pkgs, 33 - ... 34 - }: { 35 - deployment.target = { 36 - # host defaults to the name of the node 37 - host = "node-a"; 38 - # if you use a different user, it must be wheel 39 - user = "root"; 40 - }; 41 - 42 - imports = [./node-a/configuration.nix]; 43 - 44 - # wire specific options are valid here 45 - # for example, adding keys 46 - deployment.keys."key.env" = { 47 - destDir = "/etc/keys/"; 48 - source = [ 49 - "gpg" 50 - "--decrypt" 51 - ./secrets/key.env.gpg 52 - ]; 53 - }; 54 - 55 - # other module options are valid here 56 - system.stateVersion = "24.11"; 57 - }; 58 - 59 - # nodes don't have to be a function 60 - node-b = { 61 - deployment.target = { 62 - # ... 63 - }; 64 - 65 - imports = [./node-b/configuration.nix]; 66 - }; 67 - } 68 - ```
-1
doc/src/deploying-a-flake.md
··· 1 - # Without modification
-1
doc/src/features/README.md
··· 1 - # Features
-1
doc/src/features/default.md
··· 1 - # default
-1
doc/src/features/magic-rollback.md
··· 1 - # Magic Rollback
-5
doc/src/features/parallelism.md
··· 1 - # Parrallelism 2 - 3 - Wire selects nodes to deploy and performs the specified goal for each node in parallel. 4 - 5 - Use `--parallel` to limit the number of nodes that are deployed in parallel. It defaults to 10 nodes at a time.
-1
doc/src/features/secrets.md
··· 1 - # Keys / Secrets
-17
doc/src/features/tagging.md
··· 1 - # Tagging 2 - 3 - You can assign tags to nodes, and target nodes by tags. Use `--on @TAG` to reference them. 4 - 5 - ```nix 6 - { 7 - node-a = { 8 - deployment = { 9 - tags = ["arm" "native"]; 10 - }; 11 - }; 12 - } 13 - ``` 14 - 15 - ``` 16 - wire apply --on @arm 17 - ```
-13
doc/src/intro.md
··· 1 - # Intro 2 - 3 - Wire is a tool to deploy nixos systems. Its configuration is a superset of [colmena](https://colmena.cli.rs/), however it is not a fork. 4 - 5 - Any colmena configuration will continue to work with wire, but wire has additional ergonomic changes you can take advantage of. 6 - 7 - ## Features 8 - 9 - - Keys & Secrets 10 - - Parrallel deployment & evaluation 11 - - Node tagging 12 - - CI Friendly 13 - - Pipe hive metadata to `jq`
doc/src/modules/README.md doc/reference/module.md
-1
doc/src/reference/README.md
··· 1 - # Reference
-3
doc/src/top-level.md
··· 1 - # Top Level Hive Options 2 - 3 -
-1
doc/src/understanding-wire/intro.md
··· 1 - # Understanding Wire
-1
doc/src/usage/README.md
··· 1 - # Usage
-1
doc/src/usage/flakes.md
··· 1 - # Flakes
-1
doc/src/usage/hive.nix.md
··· 1 - # hive.nix
-63
doc/theme/catppuccin-alerts.css
··· 1 - .latte .mdbook-alerts-note { 2 - --mdbook-alerts-color: #1e66f5; 3 - } 4 - .latte .mdbook-alerts-tip { 5 - --mdbook-alerts-color: #40a02b; 6 - } 7 - .latte .mdbook-alerts-important { 8 - --mdbook-alerts-color: #8839ef; 9 - } 10 - .latte .mdbook-alerts-warning { 11 - --mdbook-alerts-color: #df8e1d; 12 - } 13 - .latte .mdbook-alerts-caution { 14 - --mdbook-alerts-color: #d20f39; 15 - } 16 - 17 - .frappe .mdbook-alerts-note { 18 - --mdbook-alerts-color: #8caaee; 19 - } 20 - .frappe .mdbook-alerts-tip { 21 - --mdbook-alerts-color: #a6d189; 22 - } 23 - .frappe .mdbook-alerts-important { 24 - --mdbook-alerts-color: #ca9ee6; 25 - } 26 - .frappe .mdbook-alerts-warning { 27 - --mdbook-alerts-color: #e5c890; 28 - } 29 - .frappe .mdbook-alerts-caution { 30 - --mdbook-alerts-color: #e78284; 31 - } 32 - 33 - .macchiato .mdbook-alerts-note { 34 - --mdbook-alerts-color: #8aadf4; 35 - } 36 - .macchiato .mdbook-alerts-tip { 37 - --mdbook-alerts-color: #a6da95; 38 - } 39 - .macchiato .mdbook-alerts-important { 40 - --mdbook-alerts-color: #c6a0f6; 41 - } 42 - .macchiato .mdbook-alerts-warning { 43 - --mdbook-alerts-color: #eed49f; 44 - } 45 - .macchiato .mdbook-alerts-caution { 46 - --mdbook-alerts-color: #ed8796; 47 - } 48 - 49 - .mocha .mdbook-alerts-note { 50 - --mdbook-alerts-color: #89b4fa; 51 - } 52 - .mocha .mdbook-alerts-tip { 53 - --mdbook-alerts-color: #a6e3a1; 54 - } 55 - .mocha .mdbook-alerts-important { 56 - --mdbook-alerts-color: #cba6f7; 57 - } 58 - .mocha .mdbook-alerts-warning { 59 - --mdbook-alerts-color: #f9e2af; 60 - } 61 - .mocha .mdbook-alerts-caution { 62 - --mdbook-alerts-color: #f38ba8; 63 - }
-836
doc/theme/catppuccin.css
··· 1 - /* https://highlightjs.readthedocs.io/en/latest/css-classes-reference.html */ 2 - .latte.hljs { 3 - color: #4c4f69; 4 - background: #eff1f5; 5 - } 6 - .latte .hljs-keyword { 7 - color: #8839ef; 8 - } 9 - .latte .hljs-built_in { 10 - color: #d20f39; 11 - } 12 - .latte .hljs-type { 13 - color: #df8e1d; 14 - } 15 - .latte .hljs-literal { 16 - color: #fe640b; 17 - } 18 - .latte .hljs-number { 19 - color: #fe640b; 20 - } 21 - .latte .hljs-operator { 22 - color: #04a5e5; 23 - } 24 - .latte .hljs-punctuation { 25 - color: #5c5f77; 26 - } 27 - .latte .hljs-property { 28 - color: #179299; 29 - } 30 - .latte .hljs-regexp { 31 - color: #ea76cb; 32 - } 33 - .latte .hljs-string { 34 - color: #40a02b; 35 - } 36 - .latte .hljs-char.escape_ { 37 - color: #40a02b; 38 - } 39 - .latte .hljs-subst { 40 - color: #6c6f85; 41 - } 42 - .latte .hljs-symbol { 43 - color: #dd7878; 44 - } 45 - .latte .hljs-variable { 46 - color: #8839ef; 47 - } 48 - .latte .hljs-variable.language_ { 49 - color: #8839ef; 50 - } 51 - .latte .hljs-variable.constant_ { 52 - color: #fe640b; 53 - } 54 - .latte .hljs-title { 55 - color: #1e66f5; 56 - } 57 - .latte .hljs-title.class_ { 58 - color: #df8e1d; 59 - } 60 - .latte .hljs-title.function_ { 61 - color: #1e66f5; 62 - } 63 - .latte .hljs-params { 64 - color: #4c4f69; 65 - } 66 - .latte .hljs-comment { 67 - color: #7c7f93; 68 - } 69 - .latte .hljs-doctag { 70 - color: #d20f39; 71 - } 72 - .latte .hljs-meta { 73 - color: #fe640b; 74 - } 75 - .latte .hljs-section { 76 - color: #1e66f5; 77 - } 78 - .latte .hljs-tag { 79 - color: #179299; 80 - } 81 - .latte .hljs-name { 82 - color: #8839ef; 83 - } 84 - .latte .hljs-attr { 85 - color: #1e66f5; 86 - } 87 - .latte .hljs-attribute { 88 - color: #40a02b; 89 - } 90 - .latte .hljs-bullet { 91 - color: #179299; 92 - } 93 - .latte .hljs-code { 94 - color: #40a02b; 95 - } 96 - .latte .hljs-emphasis { 97 - color: #d20f39; 98 - font-style: italic; 99 - } 100 - .latte .hljs-strong { 101 - color: #d20f39; 102 - font-weight: bold; 103 - } 104 - .latte .hljs-formula { 105 - color: #179299; 106 - } 107 - .latte .hljs-link { 108 - color: #209fb5; 109 - font-style: italic; 110 - } 111 - .latte .hljs-quote { 112 - color: #40a02b; 113 - font-style: italic; 114 - } 115 - .latte .hljs-selector-tag { 116 - color: #df8e1d; 117 - } 118 - .latte .hljs-selector-id { 119 - color: #1e66f5; 120 - } 121 - .latte .hljs-selector-class { 122 - color: #179299; 123 - } 124 - .latte .hljs-selector-attr { 125 - color: #8839ef; 126 - } 127 - .latte .hljs-selector-pseudo { 128 - color: #179299; 129 - } 130 - .latte .hljs-template-tag { 131 - color: #dd7878; 132 - } 133 - .latte .hljs-template-variable { 134 - color: #dd7878; 135 - } 136 - .latte .hljs-addition { 137 - color: #40a02b; 138 - background: rgba(64, 160, 43, 0.15); 139 - } 140 - .latte .hljs-deletion { 141 - color: #d20f39; 142 - background: rgba(210, 15, 57, 0.15); 143 - } 144 - .latte :is(h1, h2, h3, h4, h5, h6) a code { 145 - color: #4c4f69; 146 - } 147 - .latte a code { 148 - color: #1e66f5; 149 - } 150 - .latte code { 151 - color: #4c4f69; 152 - background: #e6e9ef; 153 - } 154 - .latte blockquote blockquote { 155 - border-top: 0.1em solid #acb0be; 156 - border-bottom: 0.1em solid #acb0be; 157 - } 158 - .latte hr { 159 - border-color: #acb0be; 160 - border-style: solid; 161 - } 162 - .latte del { 163 - color: #7c7f93; 164 - } 165 - .latte .ace_gutter { 166 - color: #8c8fa1; 167 - background: #e6e9ef; 168 - } 169 - .latte .ace_gutter-active-line.ace_gutter-cell { 170 - color: #ea76cb; 171 - background: #e6e9ef; 172 - } 173 - .latte .tooltiptext { 174 - background: #e6e9ef; 175 - color: #4c4f69; 176 - } 177 - 178 - .frappe.hljs { 179 - color: #c6d0f5; 180 - background: #303446; 181 - } 182 - .frappe .hljs-keyword { 183 - color: #ca9ee6; 184 - } 185 - .frappe .hljs-built_in { 186 - color: #e78284; 187 - } 188 - .frappe .hljs-type { 189 - color: #e5c890; 190 - } 191 - .frappe .hljs-literal { 192 - color: #ef9f76; 193 - } 194 - .frappe .hljs-number { 195 - color: #ef9f76; 196 - } 197 - .frappe .hljs-operator { 198 - color: #99d1db; 199 - } 200 - .frappe .hljs-punctuation { 201 - color: #b5bfe2; 202 - } 203 - .frappe .hljs-property { 204 - color: #81c8be; 205 - } 206 - .frappe .hljs-regexp { 207 - color: #f4b8e4; 208 - } 209 - .frappe .hljs-string { 210 - color: #a6d189; 211 - } 212 - .frappe .hljs-char.escape_ { 213 - color: #a6d189; 214 - } 215 - .frappe .hljs-subst { 216 - color: #a5adce; 217 - } 218 - .frappe .hljs-symbol { 219 - color: #eebebe; 220 - } 221 - .frappe .hljs-variable { 222 - color: #ca9ee6; 223 - } 224 - .frappe .hljs-variable.language_ { 225 - color: #ca9ee6; 226 - } 227 - .frappe .hljs-variable.constant_ { 228 - color: #ef9f76; 229 - } 230 - .frappe .hljs-title { 231 - color: #8caaee; 232 - } 233 - .frappe .hljs-title.class_ { 234 - color: #e5c890; 235 - } 236 - .frappe .hljs-title.function_ { 237 - color: #8caaee; 238 - } 239 - .frappe .hljs-params { 240 - color: #c6d0f5; 241 - } 242 - .frappe .hljs-comment { 243 - color: #949cbb; 244 - } 245 - .frappe .hljs-doctag { 246 - color: #e78284; 247 - } 248 - .frappe .hljs-meta { 249 - color: #ef9f76; 250 - } 251 - .frappe .hljs-section { 252 - color: #8caaee; 253 - } 254 - .frappe .hljs-tag { 255 - color: #81c8be; 256 - } 257 - .frappe .hljs-name { 258 - color: #ca9ee6; 259 - } 260 - .frappe .hljs-attr { 261 - color: #8caaee; 262 - } 263 - .frappe .hljs-attribute { 264 - color: #a6d189; 265 - } 266 - .frappe .hljs-bullet { 267 - color: #81c8be; 268 - } 269 - .frappe .hljs-code { 270 - color: #a6d189; 271 - } 272 - .frappe .hljs-emphasis { 273 - color: #e78284; 274 - font-style: italic; 275 - } 276 - .frappe .hljs-strong { 277 - color: #e78284; 278 - font-weight: bold; 279 - } 280 - .frappe .hljs-formula { 281 - color: #81c8be; 282 - } 283 - .frappe .hljs-link { 284 - color: #85c1dc; 285 - font-style: italic; 286 - } 287 - .frappe .hljs-quote { 288 - color: #a6d189; 289 - font-style: italic; 290 - } 291 - .frappe .hljs-selector-tag { 292 - color: #e5c890; 293 - } 294 - .frappe .hljs-selector-id { 295 - color: #8caaee; 296 - } 297 - .frappe .hljs-selector-class { 298 - color: #81c8be; 299 - } 300 - .frappe .hljs-selector-attr { 301 - color: #ca9ee6; 302 - } 303 - .frappe .hljs-selector-pseudo { 304 - color: #81c8be; 305 - } 306 - .frappe .hljs-template-tag { 307 - color: #eebebe; 308 - } 309 - .frappe .hljs-template-variable { 310 - color: #eebebe; 311 - } 312 - .frappe .hljs-addition { 313 - color: #a6d189; 314 - background: rgba(166, 209, 137, 0.15); 315 - } 316 - .frappe .hljs-deletion { 317 - color: #e78284; 318 - background: rgba(231, 130, 132, 0.15); 319 - } 320 - .frappe :is(h1, h2, h3, h4, h5, h6) a code { 321 - color: #c6d0f5; 322 - } 323 - .frappe a code { 324 - color: #8caaee; 325 - } 326 - .frappe code { 327 - color: #c6d0f5; 328 - background: #292c3c; 329 - } 330 - .frappe blockquote blockquote { 331 - border-top: 0.1em solid #626880; 332 - border-bottom: 0.1em solid #626880; 333 - } 334 - .frappe hr { 335 - border-color: #626880; 336 - border-style: solid; 337 - } 338 - .frappe del { 339 - color: #949cbb; 340 - } 341 - .frappe .ace_gutter { 342 - color: #838ba7; 343 - background: #292c3c; 344 - } 345 - .frappe .ace_gutter-active-line.ace_gutter-cell { 346 - color: #f4b8e4; 347 - background: #292c3c; 348 - } 349 - .frappe .tooltiptext { 350 - background: #292c3c; 351 - color: #c6d0f5; 352 - } 353 - 354 - .macchiato.hljs { 355 - color: #cad3f5; 356 - background: #24273a; 357 - } 358 - .macchiato .hljs-keyword { 359 - color: #c6a0f6; 360 - } 361 - .macchiato .hljs-built_in { 362 - color: #ed8796; 363 - } 364 - .macchiato .hljs-type { 365 - color: #eed49f; 366 - } 367 - .macchiato .hljs-literal { 368 - color: #f5a97f; 369 - } 370 - .macchiato .hljs-number { 371 - color: #f5a97f; 372 - } 373 - .macchiato .hljs-operator { 374 - color: #91d7e3; 375 - } 376 - .macchiato .hljs-punctuation { 377 - color: #b8c0e0; 378 - } 379 - .macchiato .hljs-property { 380 - color: #8bd5ca; 381 - } 382 - .macchiato .hljs-regexp { 383 - color: #f5bde6; 384 - } 385 - .macchiato .hljs-string { 386 - color: #a6da95; 387 - } 388 - .macchiato .hljs-char.escape_ { 389 - color: #a6da95; 390 - } 391 - .macchiato .hljs-subst { 392 - color: #a5adcb; 393 - } 394 - .macchiato .hljs-symbol { 395 - color: #f0c6c6; 396 - } 397 - .macchiato .hljs-variable { 398 - color: #c6a0f6; 399 - } 400 - .macchiato .hljs-variable.language_ { 401 - color: #c6a0f6; 402 - } 403 - .macchiato .hljs-variable.constant_ { 404 - color: #f5a97f; 405 - } 406 - .macchiato .hljs-title { 407 - color: #8aadf4; 408 - } 409 - .macchiato .hljs-title.class_ { 410 - color: #eed49f; 411 - } 412 - .macchiato .hljs-title.function_ { 413 - color: #8aadf4; 414 - } 415 - .macchiato .hljs-params { 416 - color: #cad3f5; 417 - } 418 - .macchiato .hljs-comment { 419 - color: #939ab7; 420 - } 421 - .macchiato .hljs-doctag { 422 - color: #ed8796; 423 - } 424 - .macchiato .hljs-meta { 425 - color: #f5a97f; 426 - } 427 - .macchiato .hljs-section { 428 - color: #8aadf4; 429 - } 430 - .macchiato .hljs-tag { 431 - color: #8bd5ca; 432 - } 433 - .macchiato .hljs-name { 434 - color: #c6a0f6; 435 - } 436 - .macchiato .hljs-attr { 437 - color: #8aadf4; 438 - } 439 - .macchiato .hljs-attribute { 440 - color: #a6da95; 441 - } 442 - .macchiato .hljs-bullet { 443 - color: #8bd5ca; 444 - } 445 - .macchiato .hljs-code { 446 - color: #a6da95; 447 - } 448 - .macchiato .hljs-emphasis { 449 - color: #ed8796; 450 - font-style: italic; 451 - } 452 - .macchiato .hljs-strong { 453 - color: #ed8796; 454 - font-weight: bold; 455 - } 456 - .macchiato .hljs-formula { 457 - color: #8bd5ca; 458 - } 459 - .macchiato .hljs-link { 460 - color: #7dc4e4; 461 - font-style: italic; 462 - } 463 - .macchiato .hljs-quote { 464 - color: #a6da95; 465 - font-style: italic; 466 - } 467 - .macchiato .hljs-selector-tag { 468 - color: #eed49f; 469 - } 470 - .macchiato .hljs-selector-id { 471 - color: #8aadf4; 472 - } 473 - .macchiato .hljs-selector-class { 474 - color: #8bd5ca; 475 - } 476 - .macchiato .hljs-selector-attr { 477 - color: #c6a0f6; 478 - } 479 - .macchiato .hljs-selector-pseudo { 480 - color: #8bd5ca; 481 - } 482 - .macchiato .hljs-template-tag { 483 - color: #f0c6c6; 484 - } 485 - .macchiato .hljs-template-variable { 486 - color: #f0c6c6; 487 - } 488 - .macchiato .hljs-addition { 489 - color: #a6da95; 490 - background: rgba(166, 218, 149, 0.15); 491 - } 492 - .macchiato .hljs-deletion { 493 - color: #ed8796; 494 - background: rgba(237, 135, 150, 0.15); 495 - } 496 - .macchiato :is(h1, h2, h3, h4, h5, h6) a code { 497 - color: #cad3f5; 498 - } 499 - .macchiato a code { 500 - color: #8aadf4; 501 - } 502 - .macchiato code { 503 - color: #cad3f5; 504 - background: #1e2030; 505 - } 506 - .macchiato blockquote blockquote { 507 - border-top: 0.1em solid #5b6078; 508 - border-bottom: 0.1em solid #5b6078; 509 - } 510 - .macchiato hr { 511 - border-color: #5b6078; 512 - border-style: solid; 513 - } 514 - .macchiato del { 515 - color: #939ab7; 516 - } 517 - .macchiato .ace_gutter { 518 - color: #8087a2; 519 - background: #1e2030; 520 - } 521 - .macchiato .ace_gutter-active-line.ace_gutter-cell { 522 - color: #f5bde6; 523 - background: #1e2030; 524 - } 525 - .macchiato .tooltiptext { 526 - background: #1e2030; 527 - color: #cad3f5; 528 - } 529 - 530 - .mocha.hljs { 531 - color: #cdd6f4; 532 - background: #1e1e2e; 533 - } 534 - .mocha .hljs-keyword { 535 - color: #cba6f7; 536 - } 537 - .mocha .hljs-built_in { 538 - color: #f38ba8; 539 - } 540 - .mocha .hljs-type { 541 - color: #f9e2af; 542 - } 543 - .mocha .hljs-literal { 544 - color: #fab387; 545 - } 546 - .mocha .hljs-number { 547 - color: #fab387; 548 - } 549 - .mocha .hljs-operator { 550 - color: #89dceb; 551 - } 552 - .mocha .hljs-punctuation { 553 - color: #bac2de; 554 - } 555 - .mocha .hljs-property { 556 - color: #94e2d5; 557 - } 558 - .mocha .hljs-regexp { 559 - color: #f5c2e7; 560 - } 561 - .mocha .hljs-string { 562 - color: #a6e3a1; 563 - } 564 - .mocha .hljs-char.escape_ { 565 - color: #a6e3a1; 566 - } 567 - .mocha .hljs-subst { 568 - color: #a6adc8; 569 - } 570 - .mocha .hljs-symbol { 571 - color: #f2cdcd; 572 - } 573 - .mocha .hljs-variable { 574 - color: #cba6f7; 575 - } 576 - .mocha .hljs-variable.language_ { 577 - color: #cba6f7; 578 - } 579 - .mocha .hljs-variable.constant_ { 580 - color: #fab387; 581 - } 582 - .mocha .hljs-title { 583 - color: #89b4fa; 584 - } 585 - .mocha .hljs-title.class_ { 586 - color: #f9e2af; 587 - } 588 - .mocha .hljs-title.function_ { 589 - color: #89b4fa; 590 - } 591 - .mocha .hljs-params { 592 - color: #cdd6f4; 593 - } 594 - .mocha .hljs-comment { 595 - color: #9399b2; 596 - } 597 - .mocha .hljs-doctag { 598 - color: #f38ba8; 599 - } 600 - .mocha .hljs-meta { 601 - color: #fab387; 602 - } 603 - .mocha .hljs-section { 604 - color: #89b4fa; 605 - } 606 - .mocha .hljs-tag { 607 - color: #94e2d5; 608 - } 609 - .mocha .hljs-name { 610 - color: #cba6f7; 611 - } 612 - .mocha .hljs-attr { 613 - color: #89b4fa; 614 - } 615 - .mocha .hljs-attribute { 616 - color: #a6e3a1; 617 - } 618 - .mocha .hljs-bullet { 619 - color: #94e2d5; 620 - } 621 - .mocha .hljs-code { 622 - color: #a6e3a1; 623 - } 624 - .mocha .hljs-emphasis { 625 - color: #f38ba8; 626 - font-style: italic; 627 - } 628 - .mocha .hljs-strong { 629 - color: #f38ba8; 630 - font-weight: bold; 631 - } 632 - .mocha .hljs-formula { 633 - color: #94e2d5; 634 - } 635 - .mocha .hljs-link { 636 - color: #74c7ec; 637 - font-style: italic; 638 - } 639 - .mocha .hljs-quote { 640 - color: #a6e3a1; 641 - font-style: italic; 642 - } 643 - .mocha .hljs-selector-tag { 644 - color: #f9e2af; 645 - } 646 - .mocha .hljs-selector-id { 647 - color: #89b4fa; 648 - } 649 - .mocha .hljs-selector-class { 650 - color: #94e2d5; 651 - } 652 - .mocha .hljs-selector-attr { 653 - color: #cba6f7; 654 - } 655 - .mocha .hljs-selector-pseudo { 656 - color: #94e2d5; 657 - } 658 - .mocha .hljs-template-tag { 659 - color: #f2cdcd; 660 - } 661 - .mocha .hljs-template-variable { 662 - color: #f2cdcd; 663 - } 664 - .mocha .hljs-addition { 665 - color: #a6e3a1; 666 - background: rgba(166, 227, 161, 0.15); 667 - } 668 - .mocha .hljs-deletion { 669 - color: #f38ba8; 670 - background: rgba(243, 139, 168, 0.15); 671 - } 672 - .mocha :is(h1, h2, h3, h4, h5, h6) a code { 673 - color: #cdd6f4; 674 - } 675 - .mocha a code { 676 - color: #89b4fa; 677 - } 678 - .mocha code { 679 - color: #cdd6f4; 680 - background: #181825; 681 - } 682 - .mocha blockquote blockquote { 683 - border-top: 0.1em solid #585b70; 684 - border-bottom: 0.1em solid #585b70; 685 - } 686 - .mocha hr { 687 - border-color: #585b70; 688 - border-style: solid; 689 - } 690 - .mocha del { 691 - color: #9399b2; 692 - } 693 - .mocha .ace_gutter { 694 - color: #7f849c; 695 - background: #181825; 696 - } 697 - .mocha .ace_gutter-active-line.ace_gutter-cell { 698 - color: #f5c2e7; 699 - background: #181825; 700 - } 701 - .mocha .tooltiptext { 702 - background: #181825; 703 - color: #cdd6f4; 704 - } 705 - 706 - .latte { 707 - --bg: #eff1f5; 708 - --fg: #4c4f69; 709 - --sidebar-bg: #e6e9ef; 710 - --sidebar-fg: #4c4f69; 711 - --sidebar-non-existant: #9ca0b0; 712 - --sidebar-active: #1e66f5; 713 - --sidebar-spacer: #9ca0b0; 714 - --scrollbar: #9ca0b0; 715 - --icons: #9ca0b0; 716 - --icons-hover: #7c7f93; 717 - --links: #1e66f5; 718 - --inline-code-color: #4c4f69; 719 - --theme-popup-bg: #e6e9ef; 720 - --theme-popup-border: #9ca0b0; 721 - --theme-hover: #ccd0da; 722 - --quote-bg: #e6e9ef; 723 - --quote-border: #dce0e8; 724 - --table-border-color: #ccd0da; 725 - --table-header-bg: #e6e9ef; 726 - --table-alternate-bg: #e6e9ef; 727 - --searchbar-border-color: #ccd0da; 728 - --searchbar-bg: #e6e9ef; 729 - --searchbar-fg: #4c4f69; 730 - --searchbar-shadow-color: #dce0e8; 731 - --searchresults-header-fg: #4c4f69; 732 - --searchresults-border-color: #ccd0da; 733 - --searchresults-li-bg: #eff1f5; 734 - --search-mark-bg: #fe640b; 735 - --warning-border: #fe640b; 736 - --color-scheme: light; 737 - } 738 - 739 - .frappe { 740 - --bg: #303446; 741 - --fg: #c6d0f5; 742 - --sidebar-bg: #292c3c; 743 - --sidebar-fg: #c6d0f5; 744 - --sidebar-non-existant: #737994; 745 - --sidebar-active: #8caaee; 746 - --sidebar-spacer: #737994; 747 - --scrollbar: #737994; 748 - --icons: #737994; 749 - --icons-hover: #949cbb; 750 - --links: #8caaee; 751 - --inline-code-color: #c6d0f5; 752 - --theme-popup-bg: #292c3c; 753 - --theme-popup-border: #737994; 754 - --theme-hover: #414559; 755 - --quote-bg: #292c3c; 756 - --quote-border: #232634; 757 - --table-border-color: #414559; 758 - --table-header-bg: #292c3c; 759 - --table-alternate-bg: #292c3c; 760 - --searchbar-border-color: #414559; 761 - --searchbar-bg: #292c3c; 762 - --searchbar-fg: #c6d0f5; 763 - --searchbar-shadow-color: #232634; 764 - --searchresults-header-fg: #c6d0f5; 765 - --searchresults-border-color: #414559; 766 - --searchresults-li-bg: #303446; 767 - --search-mark-bg: #ef9f76; 768 - --warning-border: #ef9f76; 769 - --color-scheme: dark; 770 - } 771 - 772 - .macchiato { 773 - --bg: #24273a; 774 - --fg: #cad3f5; 775 - --sidebar-bg: #1e2030; 776 - --sidebar-fg: #cad3f5; 777 - --sidebar-non-existant: #6e738d; 778 - --sidebar-active: #8aadf4; 779 - --sidebar-spacer: #6e738d; 780 - --scrollbar: #6e738d; 781 - --icons: #6e738d; 782 - --icons-hover: #939ab7; 783 - --links: #8aadf4; 784 - --inline-code-color: #cad3f5; 785 - --theme-popup-bg: #1e2030; 786 - --theme-popup-border: #6e738d; 787 - --theme-hover: #363a4f; 788 - --quote-bg: #1e2030; 789 - --quote-border: #181926; 790 - --table-border-color: #363a4f; 791 - --table-header-bg: #1e2030; 792 - --table-alternate-bg: #1e2030; 793 - --searchbar-border-color: #363a4f; 794 - --searchbar-bg: #1e2030; 795 - --searchbar-fg: #cad3f5; 796 - --searchbar-shadow-color: #181926; 797 - --searchresults-header-fg: #cad3f5; 798 - --searchresults-border-color: #363a4f; 799 - --searchresults-li-bg: #24273a; 800 - --search-mark-bg: #f5a97f; 801 - --warning-border: #f5a97f; 802 - --color-scheme: dark; 803 - } 804 - 805 - .mocha { 806 - --bg: #1e1e2e; 807 - --fg: #cdd6f4; 808 - --sidebar-bg: #181825; 809 - --sidebar-fg: #cdd6f4; 810 - --sidebar-non-existant: #6c7086; 811 - --sidebar-active: #89b4fa; 812 - --sidebar-spacer: #6c7086; 813 - --scrollbar: #6c7086; 814 - --icons: #6c7086; 815 - --icons-hover: #9399b2; 816 - --links: #89b4fa; 817 - --inline-code-color: #cdd6f4; 818 - --theme-popup-bg: #181825; 819 - --theme-popup-border: #6c7086; 820 - --theme-hover: #313244; 821 - --quote-bg: #181825; 822 - --quote-border: #11111b; 823 - --table-border-color: #313244; 824 - --table-header-bg: #181825; 825 - --table-alternate-bg: #181825; 826 - --searchbar-border-color: #313244; 827 - --searchbar-bg: #181825; 828 - --searchbar-fg: #cdd6f4; 829 - --searchbar-shadow-color: #11111b; 830 - --searchresults-header-fg: #cdd6f4; 831 - --searchresults-border-color: #313244; 832 - --searchresults-li-bg: #1e1e2e; 833 - --search-mark-bg: #fab387; 834 - --warning-border: #fab387; 835 - --color-scheme: dark; 836 - }
-343
doc/theme/index.hbs
··· 1 - <!DOCTYPE HTML> 2 - <html lang="{{ language }}" class="{{ default_theme }}" dir="{{ text_direction }}"> 3 - <head> 4 - <!-- Book generated using mdBook --> 5 - <meta charset="UTF-8"> 6 - <title>{{ title }}</title> 7 - {{#if is_print }} 8 - <meta name="robots" content="noindex"> 9 - {{/if}} 10 - {{#if base_url}} 11 - <base href="{{ base_url }}"> 12 - {{/if}} 13 - 14 - 15 - <!-- Custom HTML head --> 16 - {{> head}} 17 - 18 - <meta name="description" content="{{ description }}"> 19 - <meta name="viewport" content="width=device-width, initial-scale=1"> 20 - <meta name="theme-color" content="#ffffff"> 21 - 22 - {{#if favicon_svg}} 23 - <link rel="icon" href="{{ path_to_root }}favicon.svg"> 24 - {{/if}} 25 - {{#if favicon_png}} 26 - <link rel="shortcut icon" href="{{ path_to_root }}favicon.png"> 27 - {{/if}} 28 - <link rel="stylesheet" href="{{ path_to_root }}css/variables.css"> 29 - <link rel="stylesheet" href="{{ path_to_root }}css/general.css"> 30 - <link rel="stylesheet" href="{{ path_to_root }}css/chrome.css"> 31 - {{#if print_enable}} 32 - <link rel="stylesheet" href="{{ path_to_root }}css/print.css" media="print"> 33 - {{/if}} 34 - 35 - <!-- Fonts --> 36 - <link rel="stylesheet" href="{{ path_to_root }}FontAwesome/css/font-awesome.css"> 37 - {{#if copy_fonts}} 38 - <link rel="stylesheet" href="{{ path_to_root }}fonts/fonts.css"> 39 - {{/if}} 40 - 41 - <!-- Highlight.js Stylesheets --> 42 - <link rel="stylesheet" href="{{ path_to_root }}highlight.css"> 43 - <link rel="stylesheet" href="{{ path_to_root }}tomorrow-night.css"> 44 - <link rel="stylesheet" href="{{ path_to_root }}ayu-highlight.css"> 45 - 46 - <!-- Custom theme stylesheets --> 47 - {{#each additional_css}} 48 - <link rel="stylesheet" href="{{ ../path_to_root }}{{ this }}"> 49 - {{/each}} 50 - 51 - {{#if mathjax_support}} 52 - <!-- MathJax --> 53 - <script async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 54 - {{/if}} 55 - </head> 56 - <body class="sidebar-visible no-js"> 57 - <div id="body-container"> 58 - <!-- Provide site root to javascript --> 59 - <script> 60 - var path_to_root = "{{ path_to_root }}"; 61 - var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "{{ preferred_dark_theme }}" : "{{ default_theme }}"; 62 - </script> 63 - 64 - <!-- Work around some values being stored in localStorage wrapped in quotes --> 65 - <script> 66 - try { 67 - var theme = localStorage.getItem('mdbook-theme'); 68 - var sidebar = localStorage.getItem('mdbook-sidebar'); 69 - 70 - if (theme.startsWith('"') && theme.endsWith('"')) { 71 - localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1)); 72 - } 73 - 74 - if (sidebar.startsWith('"') && sidebar.endsWith('"')) { 75 - localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1)); 76 - } 77 - } catch (e) { } 78 - </script> 79 - 80 - <!-- Set the theme before any content is loaded, prevents flash --> 81 - <script> 82 - var theme; 83 - try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { } 84 - if (theme === null || theme === undefined) { theme = default_theme; } 85 - var html = document.querySelector('html'); 86 - html.classList.remove('{{ default_theme }}') 87 - html.classList.add(theme); 88 - var body = document.querySelector('body'); 89 - body.classList.remove('no-js') 90 - body.classList.add('js'); 91 - </script> 92 - 93 - <input type="checkbox" id="sidebar-toggle-anchor" class="hidden"> 94 - 95 - <!-- Hide / unhide sidebar before it is displayed --> 96 - <script> 97 - var body = document.querySelector('body'); 98 - var sidebar = null; 99 - var sidebar_toggle = document.getElementById("sidebar-toggle-anchor"); 100 - if (document.body.clientWidth >= 1080) { 101 - try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { } 102 - sidebar = sidebar || 'visible'; 103 - } else { 104 - sidebar = 'hidden'; 105 - } 106 - sidebar_toggle.checked = sidebar === 'visible'; 107 - body.classList.remove('sidebar-visible'); 108 - body.classList.add("sidebar-" + sidebar); 109 - </script> 110 - 111 - <nav id="sidebar" class="sidebar" aria-label="Table of contents"> 112 - <div class="sidebar-scrollbox"> 113 - {{#toc}}{{/toc}} 114 - </div> 115 - <div id="sidebar-resize-handle" class="sidebar-resize-handle"></div> 116 - </nav> 117 - 118 - <!-- Track and set sidebar scroll position --> 119 - <script> 120 - var sidebarScrollbox = document.querySelector('#sidebar .sidebar-scrollbox'); 121 - sidebarScrollbox.addEventListener('click', function(e) { 122 - if (e.target.tagName === 'A') { 123 - sessionStorage.setItem('sidebar-scroll', sidebarScrollbox.scrollTop); 124 - } 125 - }, { passive: true }); 126 - var sidebarScrollTop = sessionStorage.getItem('sidebar-scroll'); 127 - sessionStorage.removeItem('sidebar-scroll'); 128 - if (sidebarScrollTop) { 129 - // preserve sidebar scroll position when navigating via links within sidebar 130 - sidebarScrollbox.scrollTop = sidebarScrollTop; 131 - } else { 132 - // scroll sidebar to current active section when navigating via "next/previous chapter" buttons 133 - var activeSection = document.querySelector('#sidebar .active'); 134 - if (activeSection) { 135 - activeSection.scrollIntoView({ block: 'center' }); 136 - } 137 - } 138 - </script> 139 - 140 - <div id="page-wrapper" class="page-wrapper"> 141 - 142 - <div class="page"> 143 - {{> header}} 144 - <div id="menu-bar-hover-placeholder"></div> 145 - <div id="menu-bar" class="menu-bar sticky"> 146 - <div class="left-buttons"> 147 - <label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar"> 148 - <i class="fa fa-bars"></i> 149 - </label> 150 - <button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list"> 151 - <i class="fa fa-paint-brush"></i> 152 - </button> 153 - <ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu"> 154 - <li role="none"><button role="menuitem" class="theme" id="latte">Latte</button></li> 155 - <li role="none"><button role="menuitem" class="theme" id="frappe">Frappé</button></li> 156 - <li role="none"><button role="menuitem" class="theme" id="macchiato">Macchiato</button></li> 157 - <li role="none"><button role="menuitem" class="theme" id="mocha">Mocha</button></li> 158 - </ul> 159 - {{#if search_enabled}} 160 - <button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar"> 161 - <i class="fa fa-search"></i> 162 - </button> 163 - {{/if}} 164 - </div> 165 - 166 - <h1 class="menu-title">{{ book_title }}</h1> 167 - 168 - <div class="right-buttons"> 169 - {{#if print_enable}} 170 - <a href="{{ path_to_root }}print.html" title="Print this book" aria-label="Print this book"> 171 - <i id="print-button" class="fa fa-print"></i> 172 - </a> 173 - {{/if}} 174 - {{#if git_repository_url}} 175 - <a href="{{git_repository_url}}" title="Git repository" aria-label="Git repository"> 176 - <i id="git-repository-button" class="fa {{git_repository_icon}}"></i> 177 - </a> 178 - {{/if}} 179 - {{#if git_repository_edit_url}} 180 - <a href="{{git_repository_edit_url}}" title="Suggest an edit" aria-label="Suggest an edit"> 181 - <i id="git-edit-button" class="fa fa-edit"></i> 182 - </a> 183 - {{/if}} 184 - 185 - </div> 186 - </div> 187 - 188 - {{#if search_enabled}} 189 - <div id="search-wrapper" class="hidden"> 190 - <form id="searchbar-outer" class="searchbar-outer"> 191 - <input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header"> 192 - </form> 193 - <div id="searchresults-outer" class="searchresults-outer hidden"> 194 - <div id="searchresults-header" class="searchresults-header"></div> 195 - <ul id="searchresults"> 196 - </ul> 197 - </div> 198 - </div> 199 - {{/if}} 200 - 201 - <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM --> 202 - <script> 203 - document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible'); 204 - document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible'); 205 - Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) { 206 - link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1); 207 - }); 208 - </script> 209 - 210 - <div id="content" class="content"> 211 - <main> 212 - {{{ content }}} 213 - </main> 214 - 215 - <nav class="nav-wrapper" aria-label="Page navigation"> 216 - <!-- Mobile navigation buttons --> 217 - {{#previous}} 218 - <a rel="prev" href="{{ path_to_root }}{{link}}" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left"> 219 - <i class="fa fa-angle-left"></i> 220 - </a> 221 - {{/previous}} 222 - 223 - {{#next}} 224 - <a rel="next prefetch" href="{{ path_to_root }}{{link}}" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right"> 225 - <i class="fa fa-angle-right"></i> 226 - </a> 227 - {{/next}} 228 - 229 - <div style="clear: both"></div> 230 - </nav> 231 - </div> 232 - </div> 233 - 234 - <nav class="nav-wide-wrapper" aria-label="Page navigation"> 235 - {{#previous}} 236 - <a rel="prev" href="{{ path_to_root }}{{link}}" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left"> 237 - <i class="fa fa-angle-left"></i> 238 - </a> 239 - {{/previous}} 240 - 241 - {{#next}} 242 - <a rel="next prefetch" href="{{ path_to_root }}{{link}}" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right"> 243 - <i class="fa fa-angle-right"></i> 244 - </a> 245 - {{/next}} 246 - </nav> 247 - 248 - </div> 249 - 250 - {{#if live_reload_endpoint}} 251 - <!-- Livereload script (if served using the cli tool) --> 252 - <script> 253 - const wsProtocol = location.protocol === 'https:' ? 'wss:' : 'ws:'; 254 - const wsAddress = wsProtocol + "//" + location.host + "/" + "{{{live_reload_endpoint}}}"; 255 - const socket = new WebSocket(wsAddress); 256 - socket.onmessage = function (event) { 257 - if (event.data === "reload") { 258 - socket.close(); 259 - location.reload(); 260 - } 261 - }; 262 - 263 - window.onbeforeunload = function() { 264 - socket.close(); 265 - } 266 - </script> 267 - {{/if}} 268 - 269 - {{#if google_analytics}} 270 - <!-- Google Analytics Tag --> 271 - <script> 272 - var localAddrs = ["localhost", "127.0.0.1", ""]; 273 - 274 - // make sure we don't activate google analytics if the developer is 275 - // inspecting the book locally... 276 - if (localAddrs.indexOf(document.location.hostname) === -1) { 277 - (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 278 - (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 279 - m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 280 - })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 281 - 282 - ga('create', '{{google_analytics}}', 'auto'); 283 - ga('send', 'pageview'); 284 - } 285 - </script> 286 - {{/if}} 287 - 288 - {{#if playground_line_numbers}} 289 - <script> 290 - window.playground_line_numbers = true; 291 - </script> 292 - {{/if}} 293 - 294 - {{#if playground_copyable}} 295 - <script> 296 - window.playground_copyable = true; 297 - </script> 298 - {{/if}} 299 - 300 - {{#if playground_js}} 301 - <script src="{{ path_to_root }}ace.js"></script> 302 - <script src="{{ path_to_root }}editor.js"></script> 303 - <script src="{{ path_to_root }}mode-rust.js"></script> 304 - <script src="{{ path_to_root }}theme-dawn.js"></script> 305 - <script src="{{ path_to_root }}theme-tomorrow_night.js"></script> 306 - {{/if}} 307 - 308 - {{#if search_js}} 309 - <script src="{{ path_to_root }}elasticlunr.min.js"></script> 310 - <script src="{{ path_to_root }}mark.min.js"></script> 311 - <script src="{{ path_to_root }}searcher.js"></script> 312 - {{/if}} 313 - 314 - <script src="{{ path_to_root }}clipboard.min.js"></script> 315 - <script src="{{ path_to_root }}highlight.js"></script> 316 - <script src="{{ path_to_root }}book.js"></script> 317 - 318 - <!-- Custom JS scripts --> 319 - {{#each additional_js}} 320 - <script src="{{ ../path_to_root }}{{this}}"></script> 321 - {{/each}} 322 - 323 - {{#if is_print}} 324 - {{#if mathjax_support}} 325 - <script> 326 - window.addEventListener('load', function() { 327 - MathJax.Hub.Register.StartupHook('End', function() { 328 - window.setTimeout(window.print, 100); 329 - }); 330 - }); 331 - </script> 332 - {{else}} 333 - <script> 334 - window.addEventListener('load', function() { 335 - window.setTimeout(window.print, 100); 336 - }); 337 - </script> 338 - {{/if}} 339 - {{/if}} 340 - 341 - </div> 342 - </body> 343 - </html>
+1 -3
nix/shells.nix
··· 21 21 22 22 pkgs.just 23 23 pkgs.cargo-nextest 24 - 24 + pkgs.pnpm 25 25 ]; 26 26 inputsFrom = [ self'.packages.wire ]; 27 27 shellHook = builtins.concatStringsSep "\n" [ ··· 30 30 export WIRE_RUNTIME=$(realpath ./runtime) 31 31 export WIRE_TEST_DIR=$(realpath ./tests/rust) 32 32 '' 33 - 34 33 ]; 35 - 36 34 }; 37 35 }; 38 36 }