Search nix packages versions - and minimalist devshell and version manager built on nix - Flake generator for version pinned packages.

Adding docs

+1
.envrc
··· 1 + source_env_if_exists .envrc.private 1 2 use flake
+2
.gitignore
··· 2 2 .devenv* 3 3 devenv.local.nix 4 4 5 + # Use this for your local environment. 6 + .envrc.private 5 7 6 8 # direnv 7 9 .direnv
+4
docs/.gitignore
··· 1 + node_modules 2 + dist 3 + .temp 4 + cache
+56
docs/.vitepress/config.js
··· 1 + export default { 2 + themeConfig: { 3 + sidebar: { 4 + // This sidebar gets displayed when a user 5 + // is on `guide` directory. 6 + '/guide/': [ 7 + { 8 + text: 'Guide', 9 + items: [ 10 + { text: 'Installing', link: '/guide/installing' }, 11 + { text: 'Listing Versions', link: '/guide/listing-versions' }, 12 + { text: 'Finding Packages', link: '/guide/finding-packages' }, 13 + { text: 'Output formats', link: '/guide/finding-packages' }, 14 + { text: 'Command line options', link: '/guide/finding-packages' } 15 + ] 16 + }, 17 + {text: 'Integrations', link: '/integrations/nix'}, 18 + {text: 'Contributing', link: '/contributing/why'}, 19 + ], 20 + 21 + '/integrations/': [ 22 + {text: 'Guide', link: '/guide/installing'}, 23 + { 24 + text: 'Integrations', 25 + items: [ 26 + { 27 + text: 'Standalone - Easiest Dev Env', 28 + items: [ 29 + { text: 'nix installables', link: '/integrations/nix' }, 30 + { text: 'direnv', link: '/integrations/direnv' }, 31 + ] 32 + }, 33 + { 34 + text: 'With other nix configurations', 35 + items: [ 36 + { text: 'fetchPackageAtVersion', link: '/integrations/fetcher' }, 37 + { text: 'flakes', link: '/integrations/flakes' }, 38 + { text: 'flake-parts', link: '/integrations/flake-parts' }, 39 + ] 40 + }, 41 + { 42 + text: 'With advanced nix environments', 43 + items: [ 44 + { text: 'devenv', link: '/integrations/devenv' }, 45 + { text: 'devshell', link: '/integrations/devshell'}, 46 + { text: 'NixOS', link: '/integrations/devshell'}, 47 + { text: 'home-manager', link: '/integrations/devshell'}, 48 + { text: 'nix-darwin', link: '/integrations/devshell'}, 49 + ] 50 + } 51 + ] 52 + } 53 + ] 54 + } 55 + } 56 + }
docs/guide/bin_passwd.png

This is a binary file and will not be displayed.

docs/guide/bin_rust.png

This is a binary file and will not be displayed.

+86
docs/guide/finding-packages.md
··· 1 + ______________________________________________________________________ 2 + 3 + ## layout: doc outline: 1 title: Finding packages prev: text: Listing package versions link: /listing-versions next: text: Foo link: '/foo' 4 + 5 + # Finding packages - nixpkgs attribute-paths. 6 + 7 + You can think of the nixpkgs collection as a very-very-huge tree of json-like objects (but implemented in the nix-language). Installable packages are part of that nixpkgs tree. And even when most of the installable programs have pretty much guessable names, like: `emacs`, `ruby`, `go`, `cargo`, `zig`, `nodejs`, some others like `pip` are accessible under a nested attribute-path, like `python312Packages.pip`. This is because sometimes a package is tied to a particular version of their runtime or simply organized as part of a particular package set, eg, there's also `rubyPackages_3_1` upto `rubyPackages_3_4`, it pretty much depends on how the awesome people maintaining those packages decide to organize that huge tree of >200_000 packages. 8 + 9 + `nix-versions` is only possible thanks to the awesome people that have built indexes and APIs available for searching packages and their versions. And tries to make the best of them for you. 10 + 11 + # Search Backends 12 + 13 + Currently, `nix-versions` connects to the following backends: 14 + 15 + - [search.nixos.org](https://search.nixos.org) - This is the Official NixOS website to search for packages. Most people use it via ther web interface, but thanks to [nix-search-cli](https://github.com/peterldowns/nix-search-cli) we can query their ElasticSearch indexes for finding packages by name or provided programs (more on this bellow). 16 + 17 + - [Lazamar index](https://lazamar.co.uk/nix-versions/) - Thanks to Lazamar, people can search historical versions of packages by channel. (You can think of a nixpkgs channel as a particular branch, eg `nixpkgs-unstable` or a particular release `nixos-24.05`, see their website for available channels.) 18 + 19 + - [NixHub API](https://www.nixhub.io/) - The nice guys at [Jetify](https://www.jetify.com/) built this versions index for their wesome [devbox](https://www.jetify.com/devbox) product. And kindly have provided a public [API](https://www.jetify.com/docs/nixhub/). 20 + 21 + Both Lazamar and NixHub can be used by `nix-versions` when searching for historical versions. By default, we use NixHub since it seems to be updated more frequently. 22 + 23 + However each package spec can specify the backend used for it, and you can also change the default for those specs not specifying a particular backend with the `--nixhub` and `--lazamar` options. (read bellow) 24 + 25 + # Finding by name / description / meta-data. 26 + 27 + As stated above, the amazing [nix-search-cli](https://github.com/peterldowns/nix-search-cli) tool can be used from the terminal to query on [search.nixos.org](https://search.nixos.org). 28 + 29 + ```shell 30 + # Search programs whose name matches pip 31 + nix run nixpkgs#nix-search-cli -- --name pip --max-results 3 32 + ``` 33 + 34 + ::: details see command output 35 + ![pip-by-name](./pip-by-name.png) 36 + ::: 37 + 38 + See `nix-search-cli --help` for more advanced examples. 39 + 40 + # Finding by provided program. 41 + 42 + This is a feature we have borrowed from `nix-search-cli`, since it might be useful to search directly by the name of a provided program. 43 + 44 + ```shell 45 + # Packages that provide a program named exactly `passwd` 46 + nix-versions bin/passwd@ 47 + ``` 48 + 49 + ::: details see command output 50 + ![bin_passwd](./bin_passwd.png) 51 + ::: 52 + 53 + ```shell 54 + # Packages containing rust on their program name. 55 + nix-versions 'bin/*rust*@' 56 + ``` 57 + 58 + ::: details see command output 59 + ![bin_rust](./bin_rust.png) 60 + ::: 61 + 62 + For most cases we recommend using `nix-search-cli` for finding the correct attribute-path of some package you need. It even lets you filter by license and other metadata, see the examples on their readme. 63 + 64 + # Finding versions on a particular nixpkgs channel. 65 + 66 + Exmpalin this 67 + 68 + ```shell 69 + nix-versions lazamar:nixos-21.05:emacs@ lazamar:nixos-23.05:emacs@ lazamar:nixpkgs-unstable:emacs@ --one 70 + ``` 71 + 72 + ::: details see command output 73 + ![bin_rust](./bin_rust.png) 74 + ::: 75 + 76 + # Setting default versions backend 77 + 78 + ```shell 79 + nix-versions --lazamar emacs@ --one 80 + nix-versions --nixhub emacs@ --one 81 + nix-versions lazamar:emacs@ nixhub:emacs@ --one 82 + ``` 83 + 84 + ::: details see command output 85 + ![bin_rust](./bin_rust.png) 86 + :::
docs/guide/index.md

This is a binary file and will not be displayed.

+39
docs/guide/installing.md
··· 1 + ______________________________________________________________________ 2 + 3 + ## title: Installing the nix-versions command. outline: 1 layout: doc prev: false next: text: Listing package versions link: '/listing-versions' 4 + 5 + # All you need is Nix \<3 6 + 7 + Since you will be installing packages from the [nixpkgs repository](https://github.com/nixos/nixpkgs), 8 + the only requirement is to have the `nix` command on your system. 9 + 10 + If you are running on a [NixOS System](https://nixos.org/download/) you are all set. 11 + 12 + Otherwise you can install it on any Linux, MacOS, Windows-WSL2. We recommend either the [Lix](https://git.lix.systems/lix-project/lix-installer) or [Determinate](https://github.com/DeterminateSystems/nix-installer) nix installers. 13 + 14 + # Running `nix-versions` directly. 15 + 16 + Just run this command and skip all of this section. 17 + 18 + ```shell 19 + nix run github:vic/nix-versions 20 + ``` 21 + 22 + > \[!NOTE\] Note: On enabling Nix Flakes and the Modern Nix command. 23 + > If this is your first time using nix, it's possible that you might need to enable: 24 + > `--extra-experimental-features 'flakes nix-command'` 25 + > at the command line or [enable those features at your nix.conf file](https://www.tweag.io/blog/2020-05-25-flakes/#trying-out-flakes) 26 + 27 + # Installing on your system. 28 + 29 + If you want to avoid typing `nix run` everytime, you might consider 30 + installing `nix-versions` on your profile. 31 + 32 + ```shell 33 + nix profile install github:vic/nix-versions 34 + nix-versions --help 35 + ``` 36 + 37 + ###### Next step 38 + 39 + Now that `nix-versions` is available, you are ready to query some package versions.
docs/guide/list-all-emacs.png

This is a binary file and will not be displayed.

docs/guide/list-current-emacs.png

This is a binary file and will not be displayed.

docs/guide/list-emacs-27-29-all.png

This is a binary file and will not be displayed.

docs/guide/list-emacs-27-29-one.png

This is a binary file and will not be displayed.

docs/guide/list-emacs-27-29.png

This is a binary file and will not be displayed.

+73
docs/guide/listing-versions.md
··· 1 + ______________________________________________________________________ 2 + 3 + ## layout: doc outline: 1 title: Listing package versions prev: text: Installing link: /installing next: text: Finding packages link: /finding-package-names 4 + 5 + # Listing available package versions. 6 + 7 + The following command will list known versions of the `emacs` package. 8 + 9 + ```shell 10 + nix-versions emacs@ 11 + ``` 12 + 13 + ::: details see command output 14 + ![list-all-emacs](./list-all-emacs.png) 15 + ::: 16 + 17 + In the previous example, `emacs@` is a package spec, and is equivalent to `emacs@*`, that is, emacs at any version (no-constraint). 18 + 19 + If you dont include an `@` symbol, `nix-versions` will show what version is available on your system's 20 + nixpkgs tree. 21 + 22 + ```shell 23 + nix-versions emacs 24 + ``` 25 + 26 + ::: details see command output 27 + ![list-current-emacs](./list-current-emacs.png) 28 + ::: 29 + 30 + # Version Constraints. 31 + 32 + A version constraint lets you filter by only those versions that match a particular release set. 33 + 34 + This is a very useful feature when you need to keep your tools in a particular range of stable versions. 35 + For example, you might need that your compiler/interpreter is in a known version-range compatible with your current code, even if the nixpkgs tree is bleeding edge and contains latest versions that you might be not be ready to use. 36 + 37 + For more information on the supported constraint syntax, read the documentation of the library we use: [semver constraints](https://github.com/Masterminds/semver?tab=readme-ov-file#checking-version-constraints). 38 + 39 + Using the previous emacs example, lets filter by just a pair of release series. 40 + 41 + ```shell 42 + # show only emacs 27 and 29 release series. 43 + nix-versions 'emacs@~27 || ~29' 44 + ``` 45 + 46 + ::: details see command output 47 + ![list-emacs-27-29](./list-emacs-27-29.png) 48 + ::: 49 + 50 + ::: tip Tip: use `--all` (short: `-a`) to visualize the matching versions compared to all others. 51 + ::: 52 + 53 + ```shell 54 + nix-versions 'emacs@~27 || ~29' --all 55 + ``` 56 + 57 + ::: details see command output 58 + ![list-emacs-27-29-all](./list-emacs-27-29-all.png) 59 + ::: 60 + 61 + As you can see, coloring can help visualising the selected versions matching an specified constraint and also 62 + the latest version in all the set. You can turn off colors using the `--color=false` flag. 63 + 64 + ::: tip Tip: use `--one` (short: `-1`) to show only the latest version that matches an specified constraint. 65 + ::: 66 + 67 + ```shell 68 + nix-versions 'emacs@~27 || ~29' --one 69 + ``` 70 + 71 + ::: details see command output 72 + ![list-emacs-27-29-one](./list-emacs-27-29-one.png) 73 + :::
docs/guide/pip-by-name.png

This is a binary file and will not be displayed.

+28
docs/index.md
··· 1 + ______________________________________________________________________ 2 + 3 + title: "Install nix pacakges at any version." 4 + layout: home 5 + 6 + hero: 7 + name: nix-versions 8 + text: Install nix packages at any version. 9 + tagline: | 10 + 11 + ``` 12 + <a href="/guide/installing"><strong>Ready for you.</strong> 13 + <small><code>nix run github:vic/nix-versions</code></small></a> 14 + 15 + <a href="/guide/listing-versions"><strong>Ensure version compatibility of your tools.</strong> 16 + <small>Powerful version constraints: <code>ruby@~3.2.x</code></small></a> 17 + 18 + <a href="/guide/finding-packages"><strong>Any version of <code>&gt;200000</code> nixpkgs at your disposal.</strong> 19 + <small>Combines search.nixos.org with Lazamar/NixHub indexes.</small></a> 20 + 21 + <strong>Plays nice with other tools to empower you.</strong> 22 + <small>Mix with <code>nix shell</code> + <code>direnv</code> and get the easiest development environment with <strong>zero-nix knowledge</strong>.</small> 23 + 24 + <strong>Useful on advanced nix environments.</strong> 25 + <small>Integrates well with <code>devenv</code>, <code>devshell</code>, <code>NixOS</code>, you name it.</small> 26 + ``` 27 + 28 + ## actions: - theme: brand text: Get Started link: /example - theme: alt text: View on GitHub link: https://github.com/vic/nix-versions
docs/integrations/direnv.md

This is a binary file and will not be displayed.

docs/integrations/index.md

This is a binary file and will not be displayed.

docs/integrations/nix.md

This is a binary file and will not be displayed.

+2418
docs/package-lock.json
··· 1 + { 2 + "name": "docs", 3 + "lockfileVersion": 3, 4 + "requires": true, 5 + "packages": { 6 + "": { 7 + "devDependencies": { 8 + "vitepress": "^1.6.3" 9 + } 10 + }, 11 + "node_modules/@algolia/autocomplete-core": { 12 + "version": "1.17.7", 13 + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.7.tgz", 14 + "integrity": "sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==", 15 + "dev": true, 16 + "license": "MIT", 17 + "dependencies": { 18 + "@algolia/autocomplete-plugin-algolia-insights": "1.17.7", 19 + "@algolia/autocomplete-shared": "1.17.7" 20 + } 21 + }, 22 + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { 23 + "version": "1.17.7", 24 + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.7.tgz", 25 + "integrity": "sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==", 26 + "dev": true, 27 + "license": "MIT", 28 + "dependencies": { 29 + "@algolia/autocomplete-shared": "1.17.7" 30 + }, 31 + "peerDependencies": { 32 + "search-insights": ">= 1 < 3" 33 + } 34 + }, 35 + "node_modules/@algolia/autocomplete-preset-algolia": { 36 + "version": "1.17.7", 37 + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.7.tgz", 38 + "integrity": "sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==", 39 + "dev": true, 40 + "license": "MIT", 41 + "dependencies": { 42 + "@algolia/autocomplete-shared": "1.17.7" 43 + }, 44 + "peerDependencies": { 45 + "@algolia/client-search": ">= 4.9.1 < 6", 46 + "algoliasearch": ">= 4.9.1 < 6" 47 + } 48 + }, 49 + "node_modules/@algolia/autocomplete-shared": { 50 + "version": "1.17.7", 51 + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.7.tgz", 52 + "integrity": "sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==", 53 + "dev": true, 54 + "license": "MIT", 55 + "peerDependencies": { 56 + "@algolia/client-search": ">= 4.9.1 < 6", 57 + "algoliasearch": ">= 4.9.1 < 6" 58 + } 59 + }, 60 + "node_modules/@algolia/client-abtesting": { 61 + "version": "5.23.0", 62 + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.23.0.tgz", 63 + "integrity": "sha512-AyZ+9CUgWXwaaJ2lSwOJSy+/w0MFBPFqLrjWYs/HEpYMzBuFfGNZ7gEM9a7h4j7jY8hSBARBl8qdvInmj5vOEQ==", 64 + "dev": true, 65 + "license": "MIT", 66 + "dependencies": { 67 + "@algolia/client-common": "5.23.0", 68 + "@algolia/requester-browser-xhr": "5.23.0", 69 + "@algolia/requester-fetch": "5.23.0", 70 + "@algolia/requester-node-http": "5.23.0" 71 + }, 72 + "engines": { 73 + "node": ">= 14.0.0" 74 + } 75 + }, 76 + "node_modules/@algolia/client-analytics": { 77 + "version": "5.23.0", 78 + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.23.0.tgz", 79 + "integrity": "sha512-oeKCPwLBnTEPF/RWr0aaJnrfRDfFRLT5O7KV0OF1NmpEXvmzLmN7RwnwDKsNtPUHNfpJ6esP9xzkPEtJabrZ2w==", 80 + "dev": true, 81 + "license": "MIT", 82 + "dependencies": { 83 + "@algolia/client-common": "5.23.0", 84 + "@algolia/requester-browser-xhr": "5.23.0", 85 + "@algolia/requester-fetch": "5.23.0", 86 + "@algolia/requester-node-http": "5.23.0" 87 + }, 88 + "engines": { 89 + "node": ">= 14.0.0" 90 + } 91 + }, 92 + "node_modules/@algolia/client-common": { 93 + "version": "5.23.0", 94 + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.23.0.tgz", 95 + "integrity": "sha512-9jacdC44vXLSaYKNLkFpbU1J4BbBPi/N7uoPhcGO//8ubRuVzigH6+RfK5FbudmQlqFt0J5DGUCVeTlHtgyUeg==", 96 + "dev": true, 97 + "license": "MIT", 98 + "engines": { 99 + "node": ">= 14.0.0" 100 + } 101 + }, 102 + "node_modules/@algolia/client-insights": { 103 + "version": "5.23.0", 104 + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.23.0.tgz", 105 + "integrity": "sha512-/Gw5UitweRsnyb24Td4XhjXmsx8PxFzCI0oW6FZZvyr4kjzB9ECP2IjO+PdDq1A2fzDl/LXQ+u8ROudoVnXnQg==", 106 + "dev": true, 107 + "license": "MIT", 108 + "dependencies": { 109 + "@algolia/client-common": "5.23.0", 110 + "@algolia/requester-browser-xhr": "5.23.0", 111 + "@algolia/requester-fetch": "5.23.0", 112 + "@algolia/requester-node-http": "5.23.0" 113 + }, 114 + "engines": { 115 + "node": ">= 14.0.0" 116 + } 117 + }, 118 + "node_modules/@algolia/client-personalization": { 119 + "version": "5.23.0", 120 + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.23.0.tgz", 121 + "integrity": "sha512-ivrEZBoXfDatpqpifgHauydxHEe4udNqJ0gy7adR2KODeQ+39MQeaT10I24mu+eylIuiQKJRqORgEdLZycq2qQ==", 122 + "dev": true, 123 + "license": "MIT", 124 + "dependencies": { 125 + "@algolia/client-common": "5.23.0", 126 + "@algolia/requester-browser-xhr": "5.23.0", 127 + "@algolia/requester-fetch": "5.23.0", 128 + "@algolia/requester-node-http": "5.23.0" 129 + }, 130 + "engines": { 131 + "node": ">= 14.0.0" 132 + } 133 + }, 134 + "node_modules/@algolia/client-query-suggestions": { 135 + "version": "5.23.0", 136 + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.23.0.tgz", 137 + "integrity": "sha512-DjSgJWqTcsnlXEKqDsU7Y2vB/W/VYLlr6UfkzJkMuKB554Ia7IJr4keP2AlHVjjbBG62IDpdh5OkEs/+fbWsOA==", 138 + "dev": true, 139 + "license": "MIT", 140 + "dependencies": { 141 + "@algolia/client-common": "5.23.0", 142 + "@algolia/requester-browser-xhr": "5.23.0", 143 + "@algolia/requester-fetch": "5.23.0", 144 + "@algolia/requester-node-http": "5.23.0" 145 + }, 146 + "engines": { 147 + "node": ">= 14.0.0" 148 + } 149 + }, 150 + "node_modules/@algolia/client-search": { 151 + "version": "5.23.0", 152 + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.23.0.tgz", 153 + "integrity": "sha512-XAYWUYUhEG4OIdo/N7H/OFFRD9fokfv3bBTky+4Y4/q07bxhnrGSUvcrU6JQ2jJTQyg6kv0ke1EIfiTO/Xxb+g==", 154 + "dev": true, 155 + "license": "MIT", 156 + "dependencies": { 157 + "@algolia/client-common": "5.23.0", 158 + "@algolia/requester-browser-xhr": "5.23.0", 159 + "@algolia/requester-fetch": "5.23.0", 160 + "@algolia/requester-node-http": "5.23.0" 161 + }, 162 + "engines": { 163 + "node": ">= 14.0.0" 164 + } 165 + }, 166 + "node_modules/@algolia/ingestion": { 167 + "version": "1.23.0", 168 + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.23.0.tgz", 169 + "integrity": "sha512-ULbykzzhhLVofCDU1m/CqSzTyKmjaxA/z1d6o6hgUuR6X7/dll9/G0lu0e4vmWIOItklWWrhU2V8sXD0YGBIHg==", 170 + "dev": true, 171 + "license": "MIT", 172 + "dependencies": { 173 + "@algolia/client-common": "5.23.0", 174 + "@algolia/requester-browser-xhr": "5.23.0", 175 + "@algolia/requester-fetch": "5.23.0", 176 + "@algolia/requester-node-http": "5.23.0" 177 + }, 178 + "engines": { 179 + "node": ">= 14.0.0" 180 + } 181 + }, 182 + "node_modules/@algolia/monitoring": { 183 + "version": "1.23.0", 184 + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.23.0.tgz", 185 + "integrity": "sha512-oB3wG7CgQJQr+uoijV7bWBphiSHkvGX43At8RGgkDyc7Aeabcp9ik5HgLC1YDgbHVOlQI+tce5HIbDCifzQCIg==", 186 + "dev": true, 187 + "license": "MIT", 188 + "dependencies": { 189 + "@algolia/client-common": "5.23.0", 190 + "@algolia/requester-browser-xhr": "5.23.0", 191 + "@algolia/requester-fetch": "5.23.0", 192 + "@algolia/requester-node-http": "5.23.0" 193 + }, 194 + "engines": { 195 + "node": ">= 14.0.0" 196 + } 197 + }, 198 + "node_modules/@algolia/recommend": { 199 + "version": "5.23.0", 200 + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.23.0.tgz", 201 + "integrity": "sha512-4PWvCV6VGhnCMAbv2zfQUAlc3ofMs6ovqKlC/xcp7tWaucYd//piHg9CcCM4S0p9OZznEGQMRYPt2uqbk6V9vg==", 202 + "dev": true, 203 + "license": "MIT", 204 + "dependencies": { 205 + "@algolia/client-common": "5.23.0", 206 + "@algolia/requester-browser-xhr": "5.23.0", 207 + "@algolia/requester-fetch": "5.23.0", 208 + "@algolia/requester-node-http": "5.23.0" 209 + }, 210 + "engines": { 211 + "node": ">= 14.0.0" 212 + } 213 + }, 214 + "node_modules/@algolia/requester-browser-xhr": { 215 + "version": "5.23.0", 216 + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.23.0.tgz", 217 + "integrity": "sha512-bacOsX41pnsupNB0k0Ny+1JDchQxIsZIcp69GKDBT0NgTHG8OayEO141eFalNmGil+GXPY0NUPRpx+5s4RdhGA==", 218 + "dev": true, 219 + "license": "MIT", 220 + "dependencies": { 221 + "@algolia/client-common": "5.23.0" 222 + }, 223 + "engines": { 224 + "node": ">= 14.0.0" 225 + } 226 + }, 227 + "node_modules/@algolia/requester-fetch": { 228 + "version": "5.23.0", 229 + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.23.0.tgz", 230 + "integrity": "sha512-tVNFREexJWDrvc23evmRgAcb2KLZuVilOIB/rVnQCl0GDbqIWJuQ1lG22HKqvCEQFthHkgVFGLYE74wQ96768g==", 231 + "dev": true, 232 + "license": "MIT", 233 + "dependencies": { 234 + "@algolia/client-common": "5.23.0" 235 + }, 236 + "engines": { 237 + "node": ">= 14.0.0" 238 + } 239 + }, 240 + "node_modules/@algolia/requester-node-http": { 241 + "version": "5.23.0", 242 + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.23.0.tgz", 243 + "integrity": "sha512-XXHbq2heOZc9EFCc4z+uyHS9YRBygZbYQVsWjWZWx8hdAz+tkBX/jLHM9Xg+3zO0/v8JN6pcZzqYEVsdrLeNLg==", 244 + "dev": true, 245 + "license": "MIT", 246 + "dependencies": { 247 + "@algolia/client-common": "5.23.0" 248 + }, 249 + "engines": { 250 + "node": ">= 14.0.0" 251 + } 252 + }, 253 + "node_modules/@babel/helper-string-parser": { 254 + "version": "7.25.9", 255 + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", 256 + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", 257 + "dev": true, 258 + "license": "MIT", 259 + "engines": { 260 + "node": ">=6.9.0" 261 + } 262 + }, 263 + "node_modules/@babel/helper-validator-identifier": { 264 + "version": "7.25.9", 265 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", 266 + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", 267 + "dev": true, 268 + "license": "MIT", 269 + "engines": { 270 + "node": ">=6.9.0" 271 + } 272 + }, 273 + "node_modules/@babel/parser": { 274 + "version": "7.27.0", 275 + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", 276 + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", 277 + "dev": true, 278 + "license": "MIT", 279 + "dependencies": { 280 + "@babel/types": "^7.27.0" 281 + }, 282 + "bin": { 283 + "parser": "bin/babel-parser.js" 284 + }, 285 + "engines": { 286 + "node": ">=6.0.0" 287 + } 288 + }, 289 + "node_modules/@babel/types": { 290 + "version": "7.27.0", 291 + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", 292 + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", 293 + "dev": true, 294 + "license": "MIT", 295 + "dependencies": { 296 + "@babel/helper-string-parser": "^7.25.9", 297 + "@babel/helper-validator-identifier": "^7.25.9" 298 + }, 299 + "engines": { 300 + "node": ">=6.9.0" 301 + } 302 + }, 303 + "node_modules/@docsearch/css": { 304 + "version": "3.8.2", 305 + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.8.2.tgz", 306 + "integrity": "sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==", 307 + "dev": true, 308 + "license": "MIT" 309 + }, 310 + "node_modules/@docsearch/js": { 311 + "version": "3.8.2", 312 + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.8.2.tgz", 313 + "integrity": "sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==", 314 + "dev": true, 315 + "license": "MIT", 316 + "dependencies": { 317 + "@docsearch/react": "3.8.2", 318 + "preact": "^10.0.0" 319 + } 320 + }, 321 + "node_modules/@docsearch/react": { 322 + "version": "3.8.2", 323 + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.8.2.tgz", 324 + "integrity": "sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==", 325 + "dev": true, 326 + "license": "MIT", 327 + "dependencies": { 328 + "@algolia/autocomplete-core": "1.17.7", 329 + "@algolia/autocomplete-preset-algolia": "1.17.7", 330 + "@docsearch/css": "3.8.2", 331 + "algoliasearch": "^5.14.2" 332 + }, 333 + "peerDependencies": { 334 + "@types/react": ">= 16.8.0 < 19.0.0", 335 + "react": ">= 16.8.0 < 19.0.0", 336 + "react-dom": ">= 16.8.0 < 19.0.0", 337 + "search-insights": ">= 1 < 3" 338 + }, 339 + "peerDependenciesMeta": { 340 + "@types/react": { 341 + "optional": true 342 + }, 343 + "react": { 344 + "optional": true 345 + }, 346 + "react-dom": { 347 + "optional": true 348 + }, 349 + "search-insights": { 350 + "optional": true 351 + } 352 + } 353 + }, 354 + "node_modules/@esbuild/aix-ppc64": { 355 + "version": "0.21.5", 356 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", 357 + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", 358 + "cpu": [ 359 + "ppc64" 360 + ], 361 + "dev": true, 362 + "license": "MIT", 363 + "optional": true, 364 + "os": [ 365 + "aix" 366 + ], 367 + "engines": { 368 + "node": ">=12" 369 + } 370 + }, 371 + "node_modules/@esbuild/android-arm": { 372 + "version": "0.21.5", 373 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", 374 + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", 375 + "cpu": [ 376 + "arm" 377 + ], 378 + "dev": true, 379 + "license": "MIT", 380 + "optional": true, 381 + "os": [ 382 + "android" 383 + ], 384 + "engines": { 385 + "node": ">=12" 386 + } 387 + }, 388 + "node_modules/@esbuild/android-arm64": { 389 + "version": "0.21.5", 390 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", 391 + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", 392 + "cpu": [ 393 + "arm64" 394 + ], 395 + "dev": true, 396 + "license": "MIT", 397 + "optional": true, 398 + "os": [ 399 + "android" 400 + ], 401 + "engines": { 402 + "node": ">=12" 403 + } 404 + }, 405 + "node_modules/@esbuild/android-x64": { 406 + "version": "0.21.5", 407 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", 408 + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", 409 + "cpu": [ 410 + "x64" 411 + ], 412 + "dev": true, 413 + "license": "MIT", 414 + "optional": true, 415 + "os": [ 416 + "android" 417 + ], 418 + "engines": { 419 + "node": ">=12" 420 + } 421 + }, 422 + "node_modules/@esbuild/darwin-arm64": { 423 + "version": "0.21.5", 424 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", 425 + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", 426 + "cpu": [ 427 + "arm64" 428 + ], 429 + "dev": true, 430 + "license": "MIT", 431 + "optional": true, 432 + "os": [ 433 + "darwin" 434 + ], 435 + "engines": { 436 + "node": ">=12" 437 + } 438 + }, 439 + "node_modules/@esbuild/darwin-x64": { 440 + "version": "0.21.5", 441 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", 442 + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", 443 + "cpu": [ 444 + "x64" 445 + ], 446 + "dev": true, 447 + "license": "MIT", 448 + "optional": true, 449 + "os": [ 450 + "darwin" 451 + ], 452 + "engines": { 453 + "node": ">=12" 454 + } 455 + }, 456 + "node_modules/@esbuild/freebsd-arm64": { 457 + "version": "0.21.5", 458 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", 459 + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", 460 + "cpu": [ 461 + "arm64" 462 + ], 463 + "dev": true, 464 + "license": "MIT", 465 + "optional": true, 466 + "os": [ 467 + "freebsd" 468 + ], 469 + "engines": { 470 + "node": ">=12" 471 + } 472 + }, 473 + "node_modules/@esbuild/freebsd-x64": { 474 + "version": "0.21.5", 475 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", 476 + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", 477 + "cpu": [ 478 + "x64" 479 + ], 480 + "dev": true, 481 + "license": "MIT", 482 + "optional": true, 483 + "os": [ 484 + "freebsd" 485 + ], 486 + "engines": { 487 + "node": ">=12" 488 + } 489 + }, 490 + "node_modules/@esbuild/linux-arm": { 491 + "version": "0.21.5", 492 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", 493 + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", 494 + "cpu": [ 495 + "arm" 496 + ], 497 + "dev": true, 498 + "license": "MIT", 499 + "optional": true, 500 + "os": [ 501 + "linux" 502 + ], 503 + "engines": { 504 + "node": ">=12" 505 + } 506 + }, 507 + "node_modules/@esbuild/linux-arm64": { 508 + "version": "0.21.5", 509 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", 510 + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", 511 + "cpu": [ 512 + "arm64" 513 + ], 514 + "dev": true, 515 + "license": "MIT", 516 + "optional": true, 517 + "os": [ 518 + "linux" 519 + ], 520 + "engines": { 521 + "node": ">=12" 522 + } 523 + }, 524 + "node_modules/@esbuild/linux-ia32": { 525 + "version": "0.21.5", 526 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", 527 + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", 528 + "cpu": [ 529 + "ia32" 530 + ], 531 + "dev": true, 532 + "license": "MIT", 533 + "optional": true, 534 + "os": [ 535 + "linux" 536 + ], 537 + "engines": { 538 + "node": ">=12" 539 + } 540 + }, 541 + "node_modules/@esbuild/linux-loong64": { 542 + "version": "0.21.5", 543 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", 544 + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", 545 + "cpu": [ 546 + "loong64" 547 + ], 548 + "dev": true, 549 + "license": "MIT", 550 + "optional": true, 551 + "os": [ 552 + "linux" 553 + ], 554 + "engines": { 555 + "node": ">=12" 556 + } 557 + }, 558 + "node_modules/@esbuild/linux-mips64el": { 559 + "version": "0.21.5", 560 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", 561 + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", 562 + "cpu": [ 563 + "mips64el" 564 + ], 565 + "dev": true, 566 + "license": "MIT", 567 + "optional": true, 568 + "os": [ 569 + "linux" 570 + ], 571 + "engines": { 572 + "node": ">=12" 573 + } 574 + }, 575 + "node_modules/@esbuild/linux-ppc64": { 576 + "version": "0.21.5", 577 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", 578 + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", 579 + "cpu": [ 580 + "ppc64" 581 + ], 582 + "dev": true, 583 + "license": "MIT", 584 + "optional": true, 585 + "os": [ 586 + "linux" 587 + ], 588 + "engines": { 589 + "node": ">=12" 590 + } 591 + }, 592 + "node_modules/@esbuild/linux-riscv64": { 593 + "version": "0.21.5", 594 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", 595 + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", 596 + "cpu": [ 597 + "riscv64" 598 + ], 599 + "dev": true, 600 + "license": "MIT", 601 + "optional": true, 602 + "os": [ 603 + "linux" 604 + ], 605 + "engines": { 606 + "node": ">=12" 607 + } 608 + }, 609 + "node_modules/@esbuild/linux-s390x": { 610 + "version": "0.21.5", 611 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", 612 + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", 613 + "cpu": [ 614 + "s390x" 615 + ], 616 + "dev": true, 617 + "license": "MIT", 618 + "optional": true, 619 + "os": [ 620 + "linux" 621 + ], 622 + "engines": { 623 + "node": ">=12" 624 + } 625 + }, 626 + "node_modules/@esbuild/linux-x64": { 627 + "version": "0.21.5", 628 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", 629 + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", 630 + "cpu": [ 631 + "x64" 632 + ], 633 + "dev": true, 634 + "license": "MIT", 635 + "optional": true, 636 + "os": [ 637 + "linux" 638 + ], 639 + "engines": { 640 + "node": ">=12" 641 + } 642 + }, 643 + "node_modules/@esbuild/netbsd-x64": { 644 + "version": "0.21.5", 645 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", 646 + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", 647 + "cpu": [ 648 + "x64" 649 + ], 650 + "dev": true, 651 + "license": "MIT", 652 + "optional": true, 653 + "os": [ 654 + "netbsd" 655 + ], 656 + "engines": { 657 + "node": ">=12" 658 + } 659 + }, 660 + "node_modules/@esbuild/openbsd-x64": { 661 + "version": "0.21.5", 662 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", 663 + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", 664 + "cpu": [ 665 + "x64" 666 + ], 667 + "dev": true, 668 + "license": "MIT", 669 + "optional": true, 670 + "os": [ 671 + "openbsd" 672 + ], 673 + "engines": { 674 + "node": ">=12" 675 + } 676 + }, 677 + "node_modules/@esbuild/sunos-x64": { 678 + "version": "0.21.5", 679 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", 680 + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", 681 + "cpu": [ 682 + "x64" 683 + ], 684 + "dev": true, 685 + "license": "MIT", 686 + "optional": true, 687 + "os": [ 688 + "sunos" 689 + ], 690 + "engines": { 691 + "node": ">=12" 692 + } 693 + }, 694 + "node_modules/@esbuild/win32-arm64": { 695 + "version": "0.21.5", 696 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", 697 + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", 698 + "cpu": [ 699 + "arm64" 700 + ], 701 + "dev": true, 702 + "license": "MIT", 703 + "optional": true, 704 + "os": [ 705 + "win32" 706 + ], 707 + "engines": { 708 + "node": ">=12" 709 + } 710 + }, 711 + "node_modules/@esbuild/win32-ia32": { 712 + "version": "0.21.5", 713 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", 714 + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", 715 + "cpu": [ 716 + "ia32" 717 + ], 718 + "dev": true, 719 + "license": "MIT", 720 + "optional": true, 721 + "os": [ 722 + "win32" 723 + ], 724 + "engines": { 725 + "node": ">=12" 726 + } 727 + }, 728 + "node_modules/@esbuild/win32-x64": { 729 + "version": "0.21.5", 730 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", 731 + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", 732 + "cpu": [ 733 + "x64" 734 + ], 735 + "dev": true, 736 + "license": "MIT", 737 + "optional": true, 738 + "os": [ 739 + "win32" 740 + ], 741 + "engines": { 742 + "node": ">=12" 743 + } 744 + }, 745 + "node_modules/@iconify-json/simple-icons": { 746 + "version": "1.2.29", 747 + "resolved": "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.29.tgz", 748 + "integrity": "sha512-KYrxmxtRz6iOAulRiUsIBMUuXek+H+Evwf8UvYPIkbQ+KDoOqTegHx3q/w3GDDVC0qJYB+D3hXPMZcpm78qIuA==", 749 + "dev": true, 750 + "license": "CC0-1.0", 751 + "dependencies": { 752 + "@iconify/types": "*" 753 + } 754 + }, 755 + "node_modules/@iconify/types": { 756 + "version": "2.0.0", 757 + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", 758 + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", 759 + "dev": true, 760 + "license": "MIT" 761 + }, 762 + "node_modules/@jridgewell/sourcemap-codec": { 763 + "version": "1.5.0", 764 + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 765 + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 766 + "dev": true, 767 + "license": "MIT" 768 + }, 769 + "node_modules/@rollup/rollup-android-arm-eabi": { 770 + "version": "4.37.0", 771 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.37.0.tgz", 772 + "integrity": "sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==", 773 + "cpu": [ 774 + "arm" 775 + ], 776 + "dev": true, 777 + "license": "MIT", 778 + "optional": true, 779 + "os": [ 780 + "android" 781 + ] 782 + }, 783 + "node_modules/@rollup/rollup-android-arm64": { 784 + "version": "4.37.0", 785 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.37.0.tgz", 786 + "integrity": "sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==", 787 + "cpu": [ 788 + "arm64" 789 + ], 790 + "dev": true, 791 + "license": "MIT", 792 + "optional": true, 793 + "os": [ 794 + "android" 795 + ] 796 + }, 797 + "node_modules/@rollup/rollup-darwin-arm64": { 798 + "version": "4.37.0", 799 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.37.0.tgz", 800 + "integrity": "sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==", 801 + "cpu": [ 802 + "arm64" 803 + ], 804 + "dev": true, 805 + "license": "MIT", 806 + "optional": true, 807 + "os": [ 808 + "darwin" 809 + ] 810 + }, 811 + "node_modules/@rollup/rollup-darwin-x64": { 812 + "version": "4.37.0", 813 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.37.0.tgz", 814 + "integrity": "sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==", 815 + "cpu": [ 816 + "x64" 817 + ], 818 + "dev": true, 819 + "license": "MIT", 820 + "optional": true, 821 + "os": [ 822 + "darwin" 823 + ] 824 + }, 825 + "node_modules/@rollup/rollup-freebsd-arm64": { 826 + "version": "4.37.0", 827 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.37.0.tgz", 828 + "integrity": "sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==", 829 + "cpu": [ 830 + "arm64" 831 + ], 832 + "dev": true, 833 + "license": "MIT", 834 + "optional": true, 835 + "os": [ 836 + "freebsd" 837 + ] 838 + }, 839 + "node_modules/@rollup/rollup-freebsd-x64": { 840 + "version": "4.37.0", 841 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.37.0.tgz", 842 + "integrity": "sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==", 843 + "cpu": [ 844 + "x64" 845 + ], 846 + "dev": true, 847 + "license": "MIT", 848 + "optional": true, 849 + "os": [ 850 + "freebsd" 851 + ] 852 + }, 853 + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 854 + "version": "4.37.0", 855 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.37.0.tgz", 856 + "integrity": "sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==", 857 + "cpu": [ 858 + "arm" 859 + ], 860 + "dev": true, 861 + "license": "MIT", 862 + "optional": true, 863 + "os": [ 864 + "linux" 865 + ] 866 + }, 867 + "node_modules/@rollup/rollup-linux-arm-musleabihf": { 868 + "version": "4.37.0", 869 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.37.0.tgz", 870 + "integrity": "sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==", 871 + "cpu": [ 872 + "arm" 873 + ], 874 + "dev": true, 875 + "license": "MIT", 876 + "optional": true, 877 + "os": [ 878 + "linux" 879 + ] 880 + }, 881 + "node_modules/@rollup/rollup-linux-arm64-gnu": { 882 + "version": "4.37.0", 883 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.37.0.tgz", 884 + "integrity": "sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==", 885 + "cpu": [ 886 + "arm64" 887 + ], 888 + "dev": true, 889 + "license": "MIT", 890 + "optional": true, 891 + "os": [ 892 + "linux" 893 + ] 894 + }, 895 + "node_modules/@rollup/rollup-linux-arm64-musl": { 896 + "version": "4.37.0", 897 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.37.0.tgz", 898 + "integrity": "sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==", 899 + "cpu": [ 900 + "arm64" 901 + ], 902 + "dev": true, 903 + "license": "MIT", 904 + "optional": true, 905 + "os": [ 906 + "linux" 907 + ] 908 + }, 909 + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { 910 + "version": "4.37.0", 911 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.37.0.tgz", 912 + "integrity": "sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==", 913 + "cpu": [ 914 + "loong64" 915 + ], 916 + "dev": true, 917 + "license": "MIT", 918 + "optional": true, 919 + "os": [ 920 + "linux" 921 + ] 922 + }, 923 + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 924 + "version": "4.37.0", 925 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.37.0.tgz", 926 + "integrity": "sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==", 927 + "cpu": [ 928 + "ppc64" 929 + ], 930 + "dev": true, 931 + "license": "MIT", 932 + "optional": true, 933 + "os": [ 934 + "linux" 935 + ] 936 + }, 937 + "node_modules/@rollup/rollup-linux-riscv64-gnu": { 938 + "version": "4.37.0", 939 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.37.0.tgz", 940 + "integrity": "sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==", 941 + "cpu": [ 942 + "riscv64" 943 + ], 944 + "dev": true, 945 + "license": "MIT", 946 + "optional": true, 947 + "os": [ 948 + "linux" 949 + ] 950 + }, 951 + "node_modules/@rollup/rollup-linux-riscv64-musl": { 952 + "version": "4.37.0", 953 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.37.0.tgz", 954 + "integrity": "sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA==", 955 + "cpu": [ 956 + "riscv64" 957 + ], 958 + "dev": true, 959 + "license": "MIT", 960 + "optional": true, 961 + "os": [ 962 + "linux" 963 + ] 964 + }, 965 + "node_modules/@rollup/rollup-linux-s390x-gnu": { 966 + "version": "4.37.0", 967 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.37.0.tgz", 968 + "integrity": "sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==", 969 + "cpu": [ 970 + "s390x" 971 + ], 972 + "dev": true, 973 + "license": "MIT", 974 + "optional": true, 975 + "os": [ 976 + "linux" 977 + ] 978 + }, 979 + "node_modules/@rollup/rollup-linux-x64-gnu": { 980 + "version": "4.37.0", 981 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.37.0.tgz", 982 + "integrity": "sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ==", 983 + "cpu": [ 984 + "x64" 985 + ], 986 + "dev": true, 987 + "license": "MIT", 988 + "optional": true, 989 + "os": [ 990 + "linux" 991 + ] 992 + }, 993 + "node_modules/@rollup/rollup-linux-x64-musl": { 994 + "version": "4.37.0", 995 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.37.0.tgz", 996 + "integrity": "sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w==", 997 + "cpu": [ 998 + "x64" 999 + ], 1000 + "dev": true, 1001 + "license": "MIT", 1002 + "optional": true, 1003 + "os": [ 1004 + "linux" 1005 + ] 1006 + }, 1007 + "node_modules/@rollup/rollup-win32-arm64-msvc": { 1008 + "version": "4.37.0", 1009 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.37.0.tgz", 1010 + "integrity": "sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==", 1011 + "cpu": [ 1012 + "arm64" 1013 + ], 1014 + "dev": true, 1015 + "license": "MIT", 1016 + "optional": true, 1017 + "os": [ 1018 + "win32" 1019 + ] 1020 + }, 1021 + "node_modules/@rollup/rollup-win32-ia32-msvc": { 1022 + "version": "4.37.0", 1023 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.37.0.tgz", 1024 + "integrity": "sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==", 1025 + "cpu": [ 1026 + "ia32" 1027 + ], 1028 + "dev": true, 1029 + "license": "MIT", 1030 + "optional": true, 1031 + "os": [ 1032 + "win32" 1033 + ] 1034 + }, 1035 + "node_modules/@rollup/rollup-win32-x64-msvc": { 1036 + "version": "4.37.0", 1037 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.37.0.tgz", 1038 + "integrity": "sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==", 1039 + "cpu": [ 1040 + "x64" 1041 + ], 1042 + "dev": true, 1043 + "license": "MIT", 1044 + "optional": true, 1045 + "os": [ 1046 + "win32" 1047 + ] 1048 + }, 1049 + "node_modules/@shikijs/core": { 1050 + "version": "2.5.0", 1051 + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz", 1052 + "integrity": "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==", 1053 + "dev": true, 1054 + "license": "MIT", 1055 + "dependencies": { 1056 + "@shikijs/engine-javascript": "2.5.0", 1057 + "@shikijs/engine-oniguruma": "2.5.0", 1058 + "@shikijs/types": "2.5.0", 1059 + "@shikijs/vscode-textmate": "^10.0.2", 1060 + "@types/hast": "^3.0.4", 1061 + "hast-util-to-html": "^9.0.4" 1062 + } 1063 + }, 1064 + "node_modules/@shikijs/engine-javascript": { 1065 + "version": "2.5.0", 1066 + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz", 1067 + "integrity": "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==", 1068 + "dev": true, 1069 + "license": "MIT", 1070 + "dependencies": { 1071 + "@shikijs/types": "2.5.0", 1072 + "@shikijs/vscode-textmate": "^10.0.2", 1073 + "oniguruma-to-es": "^3.1.0" 1074 + } 1075 + }, 1076 + "node_modules/@shikijs/engine-oniguruma": { 1077 + "version": "2.5.0", 1078 + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", 1079 + "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", 1080 + "dev": true, 1081 + "license": "MIT", 1082 + "dependencies": { 1083 + "@shikijs/types": "2.5.0", 1084 + "@shikijs/vscode-textmate": "^10.0.2" 1085 + } 1086 + }, 1087 + "node_modules/@shikijs/langs": { 1088 + "version": "2.5.0", 1089 + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-2.5.0.tgz", 1090 + "integrity": "sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==", 1091 + "dev": true, 1092 + "license": "MIT", 1093 + "dependencies": { 1094 + "@shikijs/types": "2.5.0" 1095 + } 1096 + }, 1097 + "node_modules/@shikijs/themes": { 1098 + "version": "2.5.0", 1099 + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-2.5.0.tgz", 1100 + "integrity": "sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==", 1101 + "dev": true, 1102 + "license": "MIT", 1103 + "dependencies": { 1104 + "@shikijs/types": "2.5.0" 1105 + } 1106 + }, 1107 + "node_modules/@shikijs/transformers": { 1108 + "version": "2.5.0", 1109 + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-2.5.0.tgz", 1110 + "integrity": "sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==", 1111 + "dev": true, 1112 + "license": "MIT", 1113 + "dependencies": { 1114 + "@shikijs/core": "2.5.0", 1115 + "@shikijs/types": "2.5.0" 1116 + } 1117 + }, 1118 + "node_modules/@shikijs/types": { 1119 + "version": "2.5.0", 1120 + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", 1121 + "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", 1122 + "dev": true, 1123 + "license": "MIT", 1124 + "dependencies": { 1125 + "@shikijs/vscode-textmate": "^10.0.2", 1126 + "@types/hast": "^3.0.4" 1127 + } 1128 + }, 1129 + "node_modules/@shikijs/vscode-textmate": { 1130 + "version": "10.0.2", 1131 + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", 1132 + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", 1133 + "dev": true, 1134 + "license": "MIT" 1135 + }, 1136 + "node_modules/@types/estree": { 1137 + "version": "1.0.6", 1138 + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 1139 + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", 1140 + "dev": true, 1141 + "license": "MIT" 1142 + }, 1143 + "node_modules/@types/hast": { 1144 + "version": "3.0.4", 1145 + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", 1146 + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", 1147 + "dev": true, 1148 + "license": "MIT", 1149 + "dependencies": { 1150 + "@types/unist": "*" 1151 + } 1152 + }, 1153 + "node_modules/@types/linkify-it": { 1154 + "version": "5.0.0", 1155 + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", 1156 + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", 1157 + "dev": true, 1158 + "license": "MIT" 1159 + }, 1160 + "node_modules/@types/markdown-it": { 1161 + "version": "14.1.2", 1162 + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", 1163 + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", 1164 + "dev": true, 1165 + "license": "MIT", 1166 + "dependencies": { 1167 + "@types/linkify-it": "^5", 1168 + "@types/mdurl": "^2" 1169 + } 1170 + }, 1171 + "node_modules/@types/mdast": { 1172 + "version": "4.0.4", 1173 + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", 1174 + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", 1175 + "dev": true, 1176 + "license": "MIT", 1177 + "dependencies": { 1178 + "@types/unist": "*" 1179 + } 1180 + }, 1181 + "node_modules/@types/mdurl": { 1182 + "version": "2.0.0", 1183 + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", 1184 + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", 1185 + "dev": true, 1186 + "license": "MIT" 1187 + }, 1188 + "node_modules/@types/unist": { 1189 + "version": "3.0.3", 1190 + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", 1191 + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", 1192 + "dev": true, 1193 + "license": "MIT" 1194 + }, 1195 + "node_modules/@types/web-bluetooth": { 1196 + "version": "0.0.21", 1197 + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", 1198 + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", 1199 + "dev": true, 1200 + "license": "MIT" 1201 + }, 1202 + "node_modules/@ungap/structured-clone": { 1203 + "version": "1.3.0", 1204 + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", 1205 + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", 1206 + "dev": true, 1207 + "license": "ISC" 1208 + }, 1209 + "node_modules/@vitejs/plugin-vue": { 1210 + "version": "5.2.3", 1211 + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz", 1212 + "integrity": "sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==", 1213 + "dev": true, 1214 + "license": "MIT", 1215 + "engines": { 1216 + "node": "^18.0.0 || >=20.0.0" 1217 + }, 1218 + "peerDependencies": { 1219 + "vite": "^5.0.0 || ^6.0.0", 1220 + "vue": "^3.2.25" 1221 + } 1222 + }, 1223 + "node_modules/@vue/compiler-core": { 1224 + "version": "3.5.13", 1225 + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", 1226 + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", 1227 + "dev": true, 1228 + "license": "MIT", 1229 + "dependencies": { 1230 + "@babel/parser": "^7.25.3", 1231 + "@vue/shared": "3.5.13", 1232 + "entities": "^4.5.0", 1233 + "estree-walker": "^2.0.2", 1234 + "source-map-js": "^1.2.0" 1235 + } 1236 + }, 1237 + "node_modules/@vue/compiler-dom": { 1238 + "version": "3.5.13", 1239 + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", 1240 + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", 1241 + "dev": true, 1242 + "license": "MIT", 1243 + "dependencies": { 1244 + "@vue/compiler-core": "3.5.13", 1245 + "@vue/shared": "3.5.13" 1246 + } 1247 + }, 1248 + "node_modules/@vue/compiler-sfc": { 1249 + "version": "3.5.13", 1250 + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", 1251 + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", 1252 + "dev": true, 1253 + "license": "MIT", 1254 + "dependencies": { 1255 + "@babel/parser": "^7.25.3", 1256 + "@vue/compiler-core": "3.5.13", 1257 + "@vue/compiler-dom": "3.5.13", 1258 + "@vue/compiler-ssr": "3.5.13", 1259 + "@vue/shared": "3.5.13", 1260 + "estree-walker": "^2.0.2", 1261 + "magic-string": "^0.30.11", 1262 + "postcss": "^8.4.48", 1263 + "source-map-js": "^1.2.0" 1264 + } 1265 + }, 1266 + "node_modules/@vue/compiler-ssr": { 1267 + "version": "3.5.13", 1268 + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", 1269 + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", 1270 + "dev": true, 1271 + "license": "MIT", 1272 + "dependencies": { 1273 + "@vue/compiler-dom": "3.5.13", 1274 + "@vue/shared": "3.5.13" 1275 + } 1276 + }, 1277 + "node_modules/@vue/devtools-api": { 1278 + "version": "7.7.2", 1279 + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.2.tgz", 1280 + "integrity": "sha512-1syn558KhyN+chO5SjlZIwJ8bV/bQ1nOVTG66t2RbG66ZGekyiYNmRO7X9BJCXQqPsFHlnksqvPhce2qpzxFnA==", 1281 + "dev": true, 1282 + "license": "MIT", 1283 + "dependencies": { 1284 + "@vue/devtools-kit": "^7.7.2" 1285 + } 1286 + }, 1287 + "node_modules/@vue/devtools-kit": { 1288 + "version": "7.7.2", 1289 + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.2.tgz", 1290 + "integrity": "sha512-CY0I1JH3Z8PECbn6k3TqM1Bk9ASWxeMtTCvZr7vb+CHi+X/QwQm5F1/fPagraamKMAHVfuuCbdcnNg1A4CYVWQ==", 1291 + "dev": true, 1292 + "license": "MIT", 1293 + "dependencies": { 1294 + "@vue/devtools-shared": "^7.7.2", 1295 + "birpc": "^0.2.19", 1296 + "hookable": "^5.5.3", 1297 + "mitt": "^3.0.1", 1298 + "perfect-debounce": "^1.0.0", 1299 + "speakingurl": "^14.0.1", 1300 + "superjson": "^2.2.1" 1301 + } 1302 + }, 1303 + "node_modules/@vue/devtools-shared": { 1304 + "version": "7.7.2", 1305 + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.2.tgz", 1306 + "integrity": "sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA==", 1307 + "dev": true, 1308 + "license": "MIT", 1309 + "dependencies": { 1310 + "rfdc": "^1.4.1" 1311 + } 1312 + }, 1313 + "node_modules/@vue/reactivity": { 1314 + "version": "3.5.13", 1315 + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", 1316 + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", 1317 + "dev": true, 1318 + "license": "MIT", 1319 + "dependencies": { 1320 + "@vue/shared": "3.5.13" 1321 + } 1322 + }, 1323 + "node_modules/@vue/runtime-core": { 1324 + "version": "3.5.13", 1325 + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", 1326 + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", 1327 + "dev": true, 1328 + "license": "MIT", 1329 + "dependencies": { 1330 + "@vue/reactivity": "3.5.13", 1331 + "@vue/shared": "3.5.13" 1332 + } 1333 + }, 1334 + "node_modules/@vue/runtime-dom": { 1335 + "version": "3.5.13", 1336 + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", 1337 + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", 1338 + "dev": true, 1339 + "license": "MIT", 1340 + "dependencies": { 1341 + "@vue/reactivity": "3.5.13", 1342 + "@vue/runtime-core": "3.5.13", 1343 + "@vue/shared": "3.5.13", 1344 + "csstype": "^3.1.3" 1345 + } 1346 + }, 1347 + "node_modules/@vue/server-renderer": { 1348 + "version": "3.5.13", 1349 + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", 1350 + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", 1351 + "dev": true, 1352 + "license": "MIT", 1353 + "dependencies": { 1354 + "@vue/compiler-ssr": "3.5.13", 1355 + "@vue/shared": "3.5.13" 1356 + }, 1357 + "peerDependencies": { 1358 + "vue": "3.5.13" 1359 + } 1360 + }, 1361 + "node_modules/@vue/shared": { 1362 + "version": "3.5.13", 1363 + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", 1364 + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", 1365 + "dev": true, 1366 + "license": "MIT" 1367 + }, 1368 + "node_modules/@vueuse/core": { 1369 + "version": "12.8.2", 1370 + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-12.8.2.tgz", 1371 + "integrity": "sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==", 1372 + "dev": true, 1373 + "license": "MIT", 1374 + "dependencies": { 1375 + "@types/web-bluetooth": "^0.0.21", 1376 + "@vueuse/metadata": "12.8.2", 1377 + "@vueuse/shared": "12.8.2", 1378 + "vue": "^3.5.13" 1379 + }, 1380 + "funding": { 1381 + "url": "https://github.com/sponsors/antfu" 1382 + } 1383 + }, 1384 + "node_modules/@vueuse/integrations": { 1385 + "version": "12.8.2", 1386 + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-12.8.2.tgz", 1387 + "integrity": "sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==", 1388 + "dev": true, 1389 + "license": "MIT", 1390 + "dependencies": { 1391 + "@vueuse/core": "12.8.2", 1392 + "@vueuse/shared": "12.8.2", 1393 + "vue": "^3.5.13" 1394 + }, 1395 + "funding": { 1396 + "url": "https://github.com/sponsors/antfu" 1397 + }, 1398 + "peerDependencies": { 1399 + "async-validator": "^4", 1400 + "axios": "^1", 1401 + "change-case": "^5", 1402 + "drauu": "^0.4", 1403 + "focus-trap": "^7", 1404 + "fuse.js": "^7", 1405 + "idb-keyval": "^6", 1406 + "jwt-decode": "^4", 1407 + "nprogress": "^0.2", 1408 + "qrcode": "^1.5", 1409 + "sortablejs": "^1", 1410 + "universal-cookie": "^7" 1411 + }, 1412 + "peerDependenciesMeta": { 1413 + "async-validator": { 1414 + "optional": true 1415 + }, 1416 + "axios": { 1417 + "optional": true 1418 + }, 1419 + "change-case": { 1420 + "optional": true 1421 + }, 1422 + "drauu": { 1423 + "optional": true 1424 + }, 1425 + "focus-trap": { 1426 + "optional": true 1427 + }, 1428 + "fuse.js": { 1429 + "optional": true 1430 + }, 1431 + "idb-keyval": { 1432 + "optional": true 1433 + }, 1434 + "jwt-decode": { 1435 + "optional": true 1436 + }, 1437 + "nprogress": { 1438 + "optional": true 1439 + }, 1440 + "qrcode": { 1441 + "optional": true 1442 + }, 1443 + "sortablejs": { 1444 + "optional": true 1445 + }, 1446 + "universal-cookie": { 1447 + "optional": true 1448 + } 1449 + } 1450 + }, 1451 + "node_modules/@vueuse/metadata": { 1452 + "version": "12.8.2", 1453 + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-12.8.2.tgz", 1454 + "integrity": "sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==", 1455 + "dev": true, 1456 + "license": "MIT", 1457 + "funding": { 1458 + "url": "https://github.com/sponsors/antfu" 1459 + } 1460 + }, 1461 + "node_modules/@vueuse/shared": { 1462 + "version": "12.8.2", 1463 + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-12.8.2.tgz", 1464 + "integrity": "sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==", 1465 + "dev": true, 1466 + "license": "MIT", 1467 + "dependencies": { 1468 + "vue": "^3.5.13" 1469 + }, 1470 + "funding": { 1471 + "url": "https://github.com/sponsors/antfu" 1472 + } 1473 + }, 1474 + "node_modules/algoliasearch": { 1475 + "version": "5.23.0", 1476 + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.23.0.tgz", 1477 + "integrity": "sha512-7TCj+hLx6fZKppLL74lYGDEltSBNSu4vqRwgqeIKZ3VQ0q3aOrdEN0f1sDWcvU1b+psn2wnl7aHt9hWtYatUUA==", 1478 + "dev": true, 1479 + "license": "MIT", 1480 + "dependencies": { 1481 + "@algolia/client-abtesting": "5.23.0", 1482 + "@algolia/client-analytics": "5.23.0", 1483 + "@algolia/client-common": "5.23.0", 1484 + "@algolia/client-insights": "5.23.0", 1485 + "@algolia/client-personalization": "5.23.0", 1486 + "@algolia/client-query-suggestions": "5.23.0", 1487 + "@algolia/client-search": "5.23.0", 1488 + "@algolia/ingestion": "1.23.0", 1489 + "@algolia/monitoring": "1.23.0", 1490 + "@algolia/recommend": "5.23.0", 1491 + "@algolia/requester-browser-xhr": "5.23.0", 1492 + "@algolia/requester-fetch": "5.23.0", 1493 + "@algolia/requester-node-http": "5.23.0" 1494 + }, 1495 + "engines": { 1496 + "node": ">= 14.0.0" 1497 + } 1498 + }, 1499 + "node_modules/birpc": { 1500 + "version": "0.2.19", 1501 + "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.19.tgz", 1502 + "integrity": "sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==", 1503 + "dev": true, 1504 + "license": "MIT", 1505 + "funding": { 1506 + "url": "https://github.com/sponsors/antfu" 1507 + } 1508 + }, 1509 + "node_modules/ccount": { 1510 + "version": "2.0.1", 1511 + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", 1512 + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", 1513 + "dev": true, 1514 + "license": "MIT", 1515 + "funding": { 1516 + "type": "github", 1517 + "url": "https://github.com/sponsors/wooorm" 1518 + } 1519 + }, 1520 + "node_modules/character-entities-html4": { 1521 + "version": "2.1.0", 1522 + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", 1523 + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", 1524 + "dev": true, 1525 + "license": "MIT", 1526 + "funding": { 1527 + "type": "github", 1528 + "url": "https://github.com/sponsors/wooorm" 1529 + } 1530 + }, 1531 + "node_modules/character-entities-legacy": { 1532 + "version": "3.0.0", 1533 + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", 1534 + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", 1535 + "dev": true, 1536 + "license": "MIT", 1537 + "funding": { 1538 + "type": "github", 1539 + "url": "https://github.com/sponsors/wooorm" 1540 + } 1541 + }, 1542 + "node_modules/comma-separated-tokens": { 1543 + "version": "2.0.3", 1544 + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", 1545 + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", 1546 + "dev": true, 1547 + "license": "MIT", 1548 + "funding": { 1549 + "type": "github", 1550 + "url": "https://github.com/sponsors/wooorm" 1551 + } 1552 + }, 1553 + "node_modules/copy-anything": { 1554 + "version": "3.0.5", 1555 + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", 1556 + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", 1557 + "dev": true, 1558 + "license": "MIT", 1559 + "dependencies": { 1560 + "is-what": "^4.1.8" 1561 + }, 1562 + "engines": { 1563 + "node": ">=12.13" 1564 + }, 1565 + "funding": { 1566 + "url": "https://github.com/sponsors/mesqueeb" 1567 + } 1568 + }, 1569 + "node_modules/csstype": { 1570 + "version": "3.1.3", 1571 + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", 1572 + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", 1573 + "dev": true, 1574 + "license": "MIT" 1575 + }, 1576 + "node_modules/dequal": { 1577 + "version": "2.0.3", 1578 + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", 1579 + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", 1580 + "dev": true, 1581 + "license": "MIT", 1582 + "engines": { 1583 + "node": ">=6" 1584 + } 1585 + }, 1586 + "node_modules/devlop": { 1587 + "version": "1.1.0", 1588 + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", 1589 + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", 1590 + "dev": true, 1591 + "license": "MIT", 1592 + "dependencies": { 1593 + "dequal": "^2.0.0" 1594 + }, 1595 + "funding": { 1596 + "type": "github", 1597 + "url": "https://github.com/sponsors/wooorm" 1598 + } 1599 + }, 1600 + "node_modules/emoji-regex-xs": { 1601 + "version": "1.0.0", 1602 + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", 1603 + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", 1604 + "dev": true, 1605 + "license": "MIT" 1606 + }, 1607 + "node_modules/entities": { 1608 + "version": "4.5.0", 1609 + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", 1610 + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", 1611 + "dev": true, 1612 + "license": "BSD-2-Clause", 1613 + "engines": { 1614 + "node": ">=0.12" 1615 + }, 1616 + "funding": { 1617 + "url": "https://github.com/fb55/entities?sponsor=1" 1618 + } 1619 + }, 1620 + "node_modules/esbuild": { 1621 + "version": "0.21.5", 1622 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", 1623 + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", 1624 + "dev": true, 1625 + "hasInstallScript": true, 1626 + "license": "MIT", 1627 + "bin": { 1628 + "esbuild": "bin/esbuild" 1629 + }, 1630 + "engines": { 1631 + "node": ">=12" 1632 + }, 1633 + "optionalDependencies": { 1634 + "@esbuild/aix-ppc64": "0.21.5", 1635 + "@esbuild/android-arm": "0.21.5", 1636 + "@esbuild/android-arm64": "0.21.5", 1637 + "@esbuild/android-x64": "0.21.5", 1638 + "@esbuild/darwin-arm64": "0.21.5", 1639 + "@esbuild/darwin-x64": "0.21.5", 1640 + "@esbuild/freebsd-arm64": "0.21.5", 1641 + "@esbuild/freebsd-x64": "0.21.5", 1642 + "@esbuild/linux-arm": "0.21.5", 1643 + "@esbuild/linux-arm64": "0.21.5", 1644 + "@esbuild/linux-ia32": "0.21.5", 1645 + "@esbuild/linux-loong64": "0.21.5", 1646 + "@esbuild/linux-mips64el": "0.21.5", 1647 + "@esbuild/linux-ppc64": "0.21.5", 1648 + "@esbuild/linux-riscv64": "0.21.5", 1649 + "@esbuild/linux-s390x": "0.21.5", 1650 + "@esbuild/linux-x64": "0.21.5", 1651 + "@esbuild/netbsd-x64": "0.21.5", 1652 + "@esbuild/openbsd-x64": "0.21.5", 1653 + "@esbuild/sunos-x64": "0.21.5", 1654 + "@esbuild/win32-arm64": "0.21.5", 1655 + "@esbuild/win32-ia32": "0.21.5", 1656 + "@esbuild/win32-x64": "0.21.5" 1657 + } 1658 + }, 1659 + "node_modules/estree-walker": { 1660 + "version": "2.0.2", 1661 + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 1662 + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 1663 + "dev": true, 1664 + "license": "MIT" 1665 + }, 1666 + "node_modules/focus-trap": { 1667 + "version": "7.6.4", 1668 + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz", 1669 + "integrity": "sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==", 1670 + "dev": true, 1671 + "license": "MIT", 1672 + "dependencies": { 1673 + "tabbable": "^6.2.0" 1674 + } 1675 + }, 1676 + "node_modules/fsevents": { 1677 + "version": "2.3.3", 1678 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1679 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1680 + "dev": true, 1681 + "hasInstallScript": true, 1682 + "license": "MIT", 1683 + "optional": true, 1684 + "os": [ 1685 + "darwin" 1686 + ], 1687 + "engines": { 1688 + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1689 + } 1690 + }, 1691 + "node_modules/hast-util-to-html": { 1692 + "version": "9.0.5", 1693 + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", 1694 + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", 1695 + "dev": true, 1696 + "license": "MIT", 1697 + "dependencies": { 1698 + "@types/hast": "^3.0.0", 1699 + "@types/unist": "^3.0.0", 1700 + "ccount": "^2.0.0", 1701 + "comma-separated-tokens": "^2.0.0", 1702 + "hast-util-whitespace": "^3.0.0", 1703 + "html-void-elements": "^3.0.0", 1704 + "mdast-util-to-hast": "^13.0.0", 1705 + "property-information": "^7.0.0", 1706 + "space-separated-tokens": "^2.0.0", 1707 + "stringify-entities": "^4.0.0", 1708 + "zwitch": "^2.0.4" 1709 + }, 1710 + "funding": { 1711 + "type": "opencollective", 1712 + "url": "https://opencollective.com/unified" 1713 + } 1714 + }, 1715 + "node_modules/hast-util-whitespace": { 1716 + "version": "3.0.0", 1717 + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", 1718 + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", 1719 + "dev": true, 1720 + "license": "MIT", 1721 + "dependencies": { 1722 + "@types/hast": "^3.0.0" 1723 + }, 1724 + "funding": { 1725 + "type": "opencollective", 1726 + "url": "https://opencollective.com/unified" 1727 + } 1728 + }, 1729 + "node_modules/hookable": { 1730 + "version": "5.5.3", 1731 + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", 1732 + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", 1733 + "dev": true, 1734 + "license": "MIT" 1735 + }, 1736 + "node_modules/html-void-elements": { 1737 + "version": "3.0.0", 1738 + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", 1739 + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", 1740 + "dev": true, 1741 + "license": "MIT", 1742 + "funding": { 1743 + "type": "github", 1744 + "url": "https://github.com/sponsors/wooorm" 1745 + } 1746 + }, 1747 + "node_modules/is-what": { 1748 + "version": "4.1.16", 1749 + "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", 1750 + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", 1751 + "dev": true, 1752 + "license": "MIT", 1753 + "engines": { 1754 + "node": ">=12.13" 1755 + }, 1756 + "funding": { 1757 + "url": "https://github.com/sponsors/mesqueeb" 1758 + } 1759 + }, 1760 + "node_modules/magic-string": { 1761 + "version": "0.30.17", 1762 + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", 1763 + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", 1764 + "dev": true, 1765 + "license": "MIT", 1766 + "dependencies": { 1767 + "@jridgewell/sourcemap-codec": "^1.5.0" 1768 + } 1769 + }, 1770 + "node_modules/mark.js": { 1771 + "version": "8.11.1", 1772 + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", 1773 + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", 1774 + "dev": true, 1775 + "license": "MIT" 1776 + }, 1777 + "node_modules/mdast-util-to-hast": { 1778 + "version": "13.2.0", 1779 + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", 1780 + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", 1781 + "dev": true, 1782 + "license": "MIT", 1783 + "dependencies": { 1784 + "@types/hast": "^3.0.0", 1785 + "@types/mdast": "^4.0.0", 1786 + "@ungap/structured-clone": "^1.0.0", 1787 + "devlop": "^1.0.0", 1788 + "micromark-util-sanitize-uri": "^2.0.0", 1789 + "trim-lines": "^3.0.0", 1790 + "unist-util-position": "^5.0.0", 1791 + "unist-util-visit": "^5.0.0", 1792 + "vfile": "^6.0.0" 1793 + }, 1794 + "funding": { 1795 + "type": "opencollective", 1796 + "url": "https://opencollective.com/unified" 1797 + } 1798 + }, 1799 + "node_modules/micromark-util-character": { 1800 + "version": "2.1.1", 1801 + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", 1802 + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", 1803 + "dev": true, 1804 + "funding": [ 1805 + { 1806 + "type": "GitHub Sponsors", 1807 + "url": "https://github.com/sponsors/unifiedjs" 1808 + }, 1809 + { 1810 + "type": "OpenCollective", 1811 + "url": "https://opencollective.com/unified" 1812 + } 1813 + ], 1814 + "license": "MIT", 1815 + "dependencies": { 1816 + "micromark-util-symbol": "^2.0.0", 1817 + "micromark-util-types": "^2.0.0" 1818 + } 1819 + }, 1820 + "node_modules/micromark-util-encode": { 1821 + "version": "2.0.1", 1822 + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", 1823 + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", 1824 + "dev": true, 1825 + "funding": [ 1826 + { 1827 + "type": "GitHub Sponsors", 1828 + "url": "https://github.com/sponsors/unifiedjs" 1829 + }, 1830 + { 1831 + "type": "OpenCollective", 1832 + "url": "https://opencollective.com/unified" 1833 + } 1834 + ], 1835 + "license": "MIT" 1836 + }, 1837 + "node_modules/micromark-util-sanitize-uri": { 1838 + "version": "2.0.1", 1839 + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", 1840 + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", 1841 + "dev": true, 1842 + "funding": [ 1843 + { 1844 + "type": "GitHub Sponsors", 1845 + "url": "https://github.com/sponsors/unifiedjs" 1846 + }, 1847 + { 1848 + "type": "OpenCollective", 1849 + "url": "https://opencollective.com/unified" 1850 + } 1851 + ], 1852 + "license": "MIT", 1853 + "dependencies": { 1854 + "micromark-util-character": "^2.0.0", 1855 + "micromark-util-encode": "^2.0.0", 1856 + "micromark-util-symbol": "^2.0.0" 1857 + } 1858 + }, 1859 + "node_modules/micromark-util-symbol": { 1860 + "version": "2.0.1", 1861 + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", 1862 + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", 1863 + "dev": true, 1864 + "funding": [ 1865 + { 1866 + "type": "GitHub Sponsors", 1867 + "url": "https://github.com/sponsors/unifiedjs" 1868 + }, 1869 + { 1870 + "type": "OpenCollective", 1871 + "url": "https://opencollective.com/unified" 1872 + } 1873 + ], 1874 + "license": "MIT" 1875 + }, 1876 + "node_modules/micromark-util-types": { 1877 + "version": "2.0.2", 1878 + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", 1879 + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", 1880 + "dev": true, 1881 + "funding": [ 1882 + { 1883 + "type": "GitHub Sponsors", 1884 + "url": "https://github.com/sponsors/unifiedjs" 1885 + }, 1886 + { 1887 + "type": "OpenCollective", 1888 + "url": "https://opencollective.com/unified" 1889 + } 1890 + ], 1891 + "license": "MIT" 1892 + }, 1893 + "node_modules/minisearch": { 1894 + "version": "7.1.2", 1895 + "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.1.2.tgz", 1896 + "integrity": "sha512-R1Pd9eF+MD5JYDDSPAp/q1ougKglm14uEkPMvQ/05RGmx6G9wvmLTrTI/Q5iPNJLYqNdsDQ7qTGIcNWR+FrHmA==", 1897 + "dev": true, 1898 + "license": "MIT" 1899 + }, 1900 + "node_modules/mitt": { 1901 + "version": "3.0.1", 1902 + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", 1903 + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", 1904 + "dev": true, 1905 + "license": "MIT" 1906 + }, 1907 + "node_modules/nanoid": { 1908 + "version": "3.3.11", 1909 + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", 1910 + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 1911 + "dev": true, 1912 + "funding": [ 1913 + { 1914 + "type": "github", 1915 + "url": "https://github.com/sponsors/ai" 1916 + } 1917 + ], 1918 + "license": "MIT", 1919 + "bin": { 1920 + "nanoid": "bin/nanoid.cjs" 1921 + }, 1922 + "engines": { 1923 + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1924 + } 1925 + }, 1926 + "node_modules/oniguruma-to-es": { 1927 + "version": "3.1.1", 1928 + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", 1929 + "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", 1930 + "dev": true, 1931 + "license": "MIT", 1932 + "dependencies": { 1933 + "emoji-regex-xs": "^1.0.0", 1934 + "regex": "^6.0.1", 1935 + "regex-recursion": "^6.0.2" 1936 + } 1937 + }, 1938 + "node_modules/perfect-debounce": { 1939 + "version": "1.0.0", 1940 + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", 1941 + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", 1942 + "dev": true, 1943 + "license": "MIT" 1944 + }, 1945 + "node_modules/picocolors": { 1946 + "version": "1.1.1", 1947 + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 1948 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 1949 + "dev": true, 1950 + "license": "ISC" 1951 + }, 1952 + "node_modules/postcss": { 1953 + "version": "8.5.3", 1954 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", 1955 + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", 1956 + "dev": true, 1957 + "funding": [ 1958 + { 1959 + "type": "opencollective", 1960 + "url": "https://opencollective.com/postcss/" 1961 + }, 1962 + { 1963 + "type": "tidelift", 1964 + "url": "https://tidelift.com/funding/github/npm/postcss" 1965 + }, 1966 + { 1967 + "type": "github", 1968 + "url": "https://github.com/sponsors/ai" 1969 + } 1970 + ], 1971 + "license": "MIT", 1972 + "dependencies": { 1973 + "nanoid": "^3.3.8", 1974 + "picocolors": "^1.1.1", 1975 + "source-map-js": "^1.2.1" 1976 + }, 1977 + "engines": { 1978 + "node": "^10 || ^12 || >=14" 1979 + } 1980 + }, 1981 + "node_modules/preact": { 1982 + "version": "10.26.4", 1983 + "resolved": "https://registry.npmjs.org/preact/-/preact-10.26.4.tgz", 1984 + "integrity": "sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w==", 1985 + "dev": true, 1986 + "license": "MIT", 1987 + "funding": { 1988 + "type": "opencollective", 1989 + "url": "https://opencollective.com/preact" 1990 + } 1991 + }, 1992 + "node_modules/property-information": { 1993 + "version": "7.0.0", 1994 + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", 1995 + "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", 1996 + "dev": true, 1997 + "license": "MIT", 1998 + "funding": { 1999 + "type": "github", 2000 + "url": "https://github.com/sponsors/wooorm" 2001 + } 2002 + }, 2003 + "node_modules/regex": { 2004 + "version": "6.0.1", 2005 + "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", 2006 + "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", 2007 + "dev": true, 2008 + "license": "MIT", 2009 + "dependencies": { 2010 + "regex-utilities": "^2.3.0" 2011 + } 2012 + }, 2013 + "node_modules/regex-recursion": { 2014 + "version": "6.0.2", 2015 + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", 2016 + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", 2017 + "dev": true, 2018 + "license": "MIT", 2019 + "dependencies": { 2020 + "regex-utilities": "^2.3.0" 2021 + } 2022 + }, 2023 + "node_modules/regex-utilities": { 2024 + "version": "2.3.0", 2025 + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", 2026 + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", 2027 + "dev": true, 2028 + "license": "MIT" 2029 + }, 2030 + "node_modules/rfdc": { 2031 + "version": "1.4.1", 2032 + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", 2033 + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", 2034 + "dev": true, 2035 + "license": "MIT" 2036 + }, 2037 + "node_modules/rollup": { 2038 + "version": "4.37.0", 2039 + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.37.0.tgz", 2040 + "integrity": "sha512-iAtQy/L4QFU+rTJ1YUjXqJOJzuwEghqWzCEYD2FEghT7Gsy1VdABntrO4CLopA5IkflTyqNiLNwPcOJ3S7UKLg==", 2041 + "dev": true, 2042 + "license": "MIT", 2043 + "dependencies": { 2044 + "@types/estree": "1.0.6" 2045 + }, 2046 + "bin": { 2047 + "rollup": "dist/bin/rollup" 2048 + }, 2049 + "engines": { 2050 + "node": ">=18.0.0", 2051 + "npm": ">=8.0.0" 2052 + }, 2053 + "optionalDependencies": { 2054 + "@rollup/rollup-android-arm-eabi": "4.37.0", 2055 + "@rollup/rollup-android-arm64": "4.37.0", 2056 + "@rollup/rollup-darwin-arm64": "4.37.0", 2057 + "@rollup/rollup-darwin-x64": "4.37.0", 2058 + "@rollup/rollup-freebsd-arm64": "4.37.0", 2059 + "@rollup/rollup-freebsd-x64": "4.37.0", 2060 + "@rollup/rollup-linux-arm-gnueabihf": "4.37.0", 2061 + "@rollup/rollup-linux-arm-musleabihf": "4.37.0", 2062 + "@rollup/rollup-linux-arm64-gnu": "4.37.0", 2063 + "@rollup/rollup-linux-arm64-musl": "4.37.0", 2064 + "@rollup/rollup-linux-loongarch64-gnu": "4.37.0", 2065 + "@rollup/rollup-linux-powerpc64le-gnu": "4.37.0", 2066 + "@rollup/rollup-linux-riscv64-gnu": "4.37.0", 2067 + "@rollup/rollup-linux-riscv64-musl": "4.37.0", 2068 + "@rollup/rollup-linux-s390x-gnu": "4.37.0", 2069 + "@rollup/rollup-linux-x64-gnu": "4.37.0", 2070 + "@rollup/rollup-linux-x64-musl": "4.37.0", 2071 + "@rollup/rollup-win32-arm64-msvc": "4.37.0", 2072 + "@rollup/rollup-win32-ia32-msvc": "4.37.0", 2073 + "@rollup/rollup-win32-x64-msvc": "4.37.0", 2074 + "fsevents": "~2.3.2" 2075 + } 2076 + }, 2077 + "node_modules/search-insights": { 2078 + "version": "2.17.3", 2079 + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", 2080 + "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==", 2081 + "dev": true, 2082 + "license": "MIT", 2083 + "peer": true 2084 + }, 2085 + "node_modules/shiki": { 2086 + "version": "2.5.0", 2087 + "resolved": "https://registry.npmjs.org/shiki/-/shiki-2.5.0.tgz", 2088 + "integrity": "sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==", 2089 + "dev": true, 2090 + "license": "MIT", 2091 + "dependencies": { 2092 + "@shikijs/core": "2.5.0", 2093 + "@shikijs/engine-javascript": "2.5.0", 2094 + "@shikijs/engine-oniguruma": "2.5.0", 2095 + "@shikijs/langs": "2.5.0", 2096 + "@shikijs/themes": "2.5.0", 2097 + "@shikijs/types": "2.5.0", 2098 + "@shikijs/vscode-textmate": "^10.0.2", 2099 + "@types/hast": "^3.0.4" 2100 + } 2101 + }, 2102 + "node_modules/source-map-js": { 2103 + "version": "1.2.1", 2104 + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 2105 + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 2106 + "dev": true, 2107 + "license": "BSD-3-Clause", 2108 + "engines": { 2109 + "node": ">=0.10.0" 2110 + } 2111 + }, 2112 + "node_modules/space-separated-tokens": { 2113 + "version": "2.0.2", 2114 + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", 2115 + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", 2116 + "dev": true, 2117 + "license": "MIT", 2118 + "funding": { 2119 + "type": "github", 2120 + "url": "https://github.com/sponsors/wooorm" 2121 + } 2122 + }, 2123 + "node_modules/speakingurl": { 2124 + "version": "14.0.1", 2125 + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", 2126 + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", 2127 + "dev": true, 2128 + "license": "BSD-3-Clause", 2129 + "engines": { 2130 + "node": ">=0.10.0" 2131 + } 2132 + }, 2133 + "node_modules/stringify-entities": { 2134 + "version": "4.0.4", 2135 + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", 2136 + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", 2137 + "dev": true, 2138 + "license": "MIT", 2139 + "dependencies": { 2140 + "character-entities-html4": "^2.0.0", 2141 + "character-entities-legacy": "^3.0.0" 2142 + }, 2143 + "funding": { 2144 + "type": "github", 2145 + "url": "https://github.com/sponsors/wooorm" 2146 + } 2147 + }, 2148 + "node_modules/superjson": { 2149 + "version": "2.2.2", 2150 + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", 2151 + "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", 2152 + "dev": true, 2153 + "license": "MIT", 2154 + "dependencies": { 2155 + "copy-anything": "^3.0.2" 2156 + }, 2157 + "engines": { 2158 + "node": ">=16" 2159 + } 2160 + }, 2161 + "node_modules/tabbable": { 2162 + "version": "6.2.0", 2163 + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", 2164 + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", 2165 + "dev": true, 2166 + "license": "MIT" 2167 + }, 2168 + "node_modules/trim-lines": { 2169 + "version": "3.0.1", 2170 + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", 2171 + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", 2172 + "dev": true, 2173 + "license": "MIT", 2174 + "funding": { 2175 + "type": "github", 2176 + "url": "https://github.com/sponsors/wooorm" 2177 + } 2178 + }, 2179 + "node_modules/unist-util-is": { 2180 + "version": "6.0.0", 2181 + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", 2182 + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", 2183 + "dev": true, 2184 + "license": "MIT", 2185 + "dependencies": { 2186 + "@types/unist": "^3.0.0" 2187 + }, 2188 + "funding": { 2189 + "type": "opencollective", 2190 + "url": "https://opencollective.com/unified" 2191 + } 2192 + }, 2193 + "node_modules/unist-util-position": { 2194 + "version": "5.0.0", 2195 + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", 2196 + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", 2197 + "dev": true, 2198 + "license": "MIT", 2199 + "dependencies": { 2200 + "@types/unist": "^3.0.0" 2201 + }, 2202 + "funding": { 2203 + "type": "opencollective", 2204 + "url": "https://opencollective.com/unified" 2205 + } 2206 + }, 2207 + "node_modules/unist-util-stringify-position": { 2208 + "version": "4.0.0", 2209 + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", 2210 + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", 2211 + "dev": true, 2212 + "license": "MIT", 2213 + "dependencies": { 2214 + "@types/unist": "^3.0.0" 2215 + }, 2216 + "funding": { 2217 + "type": "opencollective", 2218 + "url": "https://opencollective.com/unified" 2219 + } 2220 + }, 2221 + "node_modules/unist-util-visit": { 2222 + "version": "5.0.0", 2223 + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", 2224 + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", 2225 + "dev": true, 2226 + "license": "MIT", 2227 + "dependencies": { 2228 + "@types/unist": "^3.0.0", 2229 + "unist-util-is": "^6.0.0", 2230 + "unist-util-visit-parents": "^6.0.0" 2231 + }, 2232 + "funding": { 2233 + "type": "opencollective", 2234 + "url": "https://opencollective.com/unified" 2235 + } 2236 + }, 2237 + "node_modules/unist-util-visit-parents": { 2238 + "version": "6.0.1", 2239 + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", 2240 + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", 2241 + "dev": true, 2242 + "license": "MIT", 2243 + "dependencies": { 2244 + "@types/unist": "^3.0.0", 2245 + "unist-util-is": "^6.0.0" 2246 + }, 2247 + "funding": { 2248 + "type": "opencollective", 2249 + "url": "https://opencollective.com/unified" 2250 + } 2251 + }, 2252 + "node_modules/vfile": { 2253 + "version": "6.0.3", 2254 + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", 2255 + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", 2256 + "dev": true, 2257 + "license": "MIT", 2258 + "dependencies": { 2259 + "@types/unist": "^3.0.0", 2260 + "vfile-message": "^4.0.0" 2261 + }, 2262 + "funding": { 2263 + "type": "opencollective", 2264 + "url": "https://opencollective.com/unified" 2265 + } 2266 + }, 2267 + "node_modules/vfile-message": { 2268 + "version": "4.0.2", 2269 + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", 2270 + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", 2271 + "dev": true, 2272 + "license": "MIT", 2273 + "dependencies": { 2274 + "@types/unist": "^3.0.0", 2275 + "unist-util-stringify-position": "^4.0.0" 2276 + }, 2277 + "funding": { 2278 + "type": "opencollective", 2279 + "url": "https://opencollective.com/unified" 2280 + } 2281 + }, 2282 + "node_modules/vite": { 2283 + "version": "5.4.15", 2284 + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.15.tgz", 2285 + "integrity": "sha512-6ANcZRivqL/4WtwPGTKNaosuNJr5tWiftOC7liM7G9+rMb8+oeJeyzymDu4rTN93seySBmbjSfsS3Vzr19KNtA==", 2286 + "dev": true, 2287 + "license": "MIT", 2288 + "dependencies": { 2289 + "esbuild": "^0.21.3", 2290 + "postcss": "^8.4.43", 2291 + "rollup": "^4.20.0" 2292 + }, 2293 + "bin": { 2294 + "vite": "bin/vite.js" 2295 + }, 2296 + "engines": { 2297 + "node": "^18.0.0 || >=20.0.0" 2298 + }, 2299 + "funding": { 2300 + "url": "https://github.com/vitejs/vite?sponsor=1" 2301 + }, 2302 + "optionalDependencies": { 2303 + "fsevents": "~2.3.3" 2304 + }, 2305 + "peerDependencies": { 2306 + "@types/node": "^18.0.0 || >=20.0.0", 2307 + "less": "*", 2308 + "lightningcss": "^1.21.0", 2309 + "sass": "*", 2310 + "sass-embedded": "*", 2311 + "stylus": "*", 2312 + "sugarss": "*", 2313 + "terser": "^5.4.0" 2314 + }, 2315 + "peerDependenciesMeta": { 2316 + "@types/node": { 2317 + "optional": true 2318 + }, 2319 + "less": { 2320 + "optional": true 2321 + }, 2322 + "lightningcss": { 2323 + "optional": true 2324 + }, 2325 + "sass": { 2326 + "optional": true 2327 + }, 2328 + "sass-embedded": { 2329 + "optional": true 2330 + }, 2331 + "stylus": { 2332 + "optional": true 2333 + }, 2334 + "sugarss": { 2335 + "optional": true 2336 + }, 2337 + "terser": { 2338 + "optional": true 2339 + } 2340 + } 2341 + }, 2342 + "node_modules/vitepress": { 2343 + "version": "1.6.3", 2344 + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.6.3.tgz", 2345 + "integrity": "sha512-fCkfdOk8yRZT8GD9BFqusW3+GggWYZ/rYncOfmgcDtP3ualNHCAg+Robxp2/6xfH1WwPHtGpPwv7mbA3qomtBw==", 2346 + "dev": true, 2347 + "license": "MIT", 2348 + "dependencies": { 2349 + "@docsearch/css": "3.8.2", 2350 + "@docsearch/js": "3.8.2", 2351 + "@iconify-json/simple-icons": "^1.2.21", 2352 + "@shikijs/core": "^2.1.0", 2353 + "@shikijs/transformers": "^2.1.0", 2354 + "@shikijs/types": "^2.1.0", 2355 + "@types/markdown-it": "^14.1.2", 2356 + "@vitejs/plugin-vue": "^5.2.1", 2357 + "@vue/devtools-api": "^7.7.0", 2358 + "@vue/shared": "^3.5.13", 2359 + "@vueuse/core": "^12.4.0", 2360 + "@vueuse/integrations": "^12.4.0", 2361 + "focus-trap": "^7.6.4", 2362 + "mark.js": "8.11.1", 2363 + "minisearch": "^7.1.1", 2364 + "shiki": "^2.1.0", 2365 + "vite": "^5.4.14", 2366 + "vue": "^3.5.13" 2367 + }, 2368 + "bin": { 2369 + "vitepress": "bin/vitepress.js" 2370 + }, 2371 + "peerDependencies": { 2372 + "markdown-it-mathjax3": "^4", 2373 + "postcss": "^8" 2374 + }, 2375 + "peerDependenciesMeta": { 2376 + "markdown-it-mathjax3": { 2377 + "optional": true 2378 + }, 2379 + "postcss": { 2380 + "optional": true 2381 + } 2382 + } 2383 + }, 2384 + "node_modules/vue": { 2385 + "version": "3.5.13", 2386 + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", 2387 + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", 2388 + "dev": true, 2389 + "license": "MIT", 2390 + "dependencies": { 2391 + "@vue/compiler-dom": "3.5.13", 2392 + "@vue/compiler-sfc": "3.5.13", 2393 + "@vue/runtime-dom": "3.5.13", 2394 + "@vue/server-renderer": "3.5.13", 2395 + "@vue/shared": "3.5.13" 2396 + }, 2397 + "peerDependencies": { 2398 + "typescript": "*" 2399 + }, 2400 + "peerDependenciesMeta": { 2401 + "typescript": { 2402 + "optional": true 2403 + } 2404 + } 2405 + }, 2406 + "node_modules/zwitch": { 2407 + "version": "2.0.4", 2408 + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", 2409 + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", 2410 + "dev": true, 2411 + "license": "MIT", 2412 + "funding": { 2413 + "type": "github", 2414 + "url": "https://github.com/sponsors/wooorm" 2415 + } 2416 + } 2417 + } 2418 + }
+13
docs/package.json
··· 1 + { 2 + "private": true, 3 + "type": "module", 4 + "scripts": { 5 + "dev": "vitepress dev .", 6 + "build": "vitepress build", 7 + "preview": "vitepress preview .", 8 + "push": "npm run build && rsync -avPzh -e ssh --delete .vitepress/dist/* $VITEPRESS" 9 + }, 10 + "devDependencies": { 11 + "vitepress": "^1.6.3" 12 + } 13 + }
+6
nix/devshell.nix
··· 9 9 devshells.default = 10 10 { ... }: 11 11 { 12 + imports = [ "${inputs.devshell}/extra/git/hooks.nix" ]; 13 + 14 + git.hooks.pre-commit.text = "nix flake check"; 15 + 12 16 packages = [ 13 17 pkgs.gopls 18 + pkgs.go 19 + pkgs.nodejs 14 20 ]; 15 21 packagesFrom = [ 16 22 self'.packages.default
+34 -2
nix/packages.nix
··· 7 7 pname = "nix-versions"; 8 8 src = ./..; 9 9 version = "1.0.0"; 10 - vendorHash = builtins.readFile ./vendor-hash; 10 + vendorHash = builtins.readFile ./../vendor-hash; 11 11 meta = with pkgs.lib; { 12 12 description = "Go CLI for searching nix packages versions using lazamar or nixhub"; 13 - homepage = "https://github.com/vic/nix-versions"; 13 + homepage = "https://nix-versions.alwaysdata.net"; 14 14 mainProgram = "nix-versions"; 15 15 }; 16 16 }; 17 17 18 + # hm this is not building `vitepress build` hangs 19 + docs = pkgs.buildNpmPackage { 20 + name = "nix-versions-site"; 21 + src = ./../docs; 22 + npmDepsHash = "sha256-DiFgdB7XMCWpemqcifoVpEsMskZTFltB6fSh7frwjq0="; 23 + buildPhase = '' 24 + ls -la 25 + node_modules/.bin/vitepress build | tee build.log 26 + mv .vitepress/dist $out 27 + ''; 28 + meta = with pkgs.lib; { 29 + description = "Site for docs and flake generation services."; 30 + homepage = "https://nix-versions.alwaysdata.net"; 31 + }; 32 + }; 33 + 34 + web = pkgs.buildGoModule { 35 + pname = "nix-versions-web"; 36 + src = ./../web; 37 + version = "1.0.0"; 38 + vendorHash = builtins.readFile ./../web/vendor-hash; 39 + env.CGO_ENABLED = 0; # static build 40 + meta = with pkgs.lib; { 41 + description = "Web UI for docs and flake generation services."; 42 + homepage = "https://nix-versions.alwaysdata.net"; 43 + mainProgram = "web"; 44 + }; 45 + }; 46 + 18 47 in 19 48 { 20 49 21 50 packages = { 22 51 default = nix-versions; 23 52 inherit nix-versions; 53 + 54 + nix-versions-web = web; 55 + nix-versions-docs = docs; 24 56 }; 25 57 26 58 };
+10 -20
nix/treefmt.nix
··· 1 1 { inputs, ... }: 2 2 { 3 - perSystem = ( 4 - { pkgs, ... }: 5 - let 6 - treefmt = inputs.treefmt-nix.lib.evalModule pkgs { 7 - projectRootFile = "flake.nix"; 8 - programs.nixfmt.enable = true; 9 - programs.nixfmt.excludes = [ ".direnv" ]; 10 - programs.deadnix.enable = true; 11 - programs.mdformat.enable = true; 12 - programs.yamlfmt.enable = true; 13 - programs.gofmt.enable = true; 14 - }; 15 - treefmt-wrapper = treefmt.config.build.wrapper; 16 - treefmt-check = treefmt.config.build.check ./..; 17 - in 18 - { 19 - formatter = treefmt-wrapper; 20 - checks.treefmt = treefmt-check; 21 - } 22 - ); 3 + imports = [ inputs.treefmt-nix.flakeModule ]; 4 + perSystem.treefmt = { 5 + projectRootFile = "flake.nix"; 6 + programs.nixfmt.enable = true; 7 + programs.nixfmt.excludes = [ ".direnv" ]; 8 + programs.deadnix.enable = true; 9 + programs.mdformat.enable = true; 10 + programs.yamlfmt.enable = true; 11 + programs.gofmt.enable = true; 12 + }; 23 13 }
nix/vendor-hash vendor-hash
+2
web/.gitignore
··· 1 + web 2 + vendor
+19
web/go.mod
··· 1 + module github.com/vic/nix-versions/web 2 + 3 + go 1.24.1 4 + 5 + require github.com/vic/ntv v0.0.0-20250327225243-d65149017dc0 6 + 7 + require ( 8 + github.com/Masterminds/semver/v3 v3.3.1 // indirect 9 + github.com/antchfx/htmlquery v1.3.4 // indirect 10 + github.com/antchfx/xpath v1.3.3 // indirect 11 + github.com/carlmjohnson/requests v0.24.3 // indirect 12 + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect 13 + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect 14 + github.com/hashicorp/go-retryablehttp v0.7.7 // indirect 15 + github.com/peterldowns/nix-search-cli v0.2.0 // indirect 16 + golang.org/x/net v0.36.0 // indirect 17 + golang.org/x/sync v0.12.0 // indirect 18 + golang.org/x/text v0.22.0 // indirect 19 + )
+99
web/go.sum
··· 1 + github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= 2 + github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= 3 + github.com/antchfx/htmlquery v1.3.4 h1:Isd0srPkni2iNTWCwVj/72t7uCphFeor5Q8nCzj1jdQ= 4 + github.com/antchfx/htmlquery v1.3.4/go.mod h1:K9os0BwIEmLAvTqaNSua8tXLWRWZpocZIH73OzWQbwM= 5 + github.com/antchfx/xpath v1.3.3 h1:tmuPQa1Uye0Ym1Zn65vxPgfltWb/Lxu2jeqIGteJSRs= 6 + github.com/antchfx/xpath v1.3.3/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= 7 + github.com/carlmjohnson/requests v0.24.3 h1:LYcM/jVIVPkioigMjEAnBACXl2vb42TVqiC8EYNoaXQ= 8 + github.com/carlmjohnson/requests v0.24.3/go.mod h1:duYA/jDnyZ6f3xbcF5PpZ9N8clgopubP2nK5i6MVMhU= 9 + github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= 10 + github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= 11 + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= 12 + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= 13 + github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 14 + github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= 15 + github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= 16 + github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= 17 + github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= 18 + github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= 19 + github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= 20 + github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= 21 + github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= 22 + github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= 23 + github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= 24 + github.com/peterldowns/nix-search-cli v0.2.0 h1:e3K1SOyH1ZfN0Lz3WEtqQSXu0JDlxIkwPAmo9K9I4SU= 25 + github.com/peterldowns/nix-search-cli v0.2.0/go.mod h1:oiHS+WiGbQW3qjon8+UEPnTB8RK9M0XdufwGGsogjtg= 26 + github.com/vic/ntv v0.0.0-20250327225243-d65149017dc0 h1:e1aydoULAf79Qco4bQ7R6MFmYVZfxq7nSinzMyYRmtE= 27 + github.com/vic/ntv v0.0.0-20250327225243-d65149017dc0/go.mod h1:NPx4zbfuDbbfeQBIbOZT48C1olVHry8beztxtTY555U= 28 + github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= 29 + golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 30 + golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= 31 + golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= 32 + golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= 33 + golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= 34 + golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= 35 + golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= 36 + golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 37 + golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= 38 + golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= 39 + golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= 40 + golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 41 + golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= 42 + golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= 43 + golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= 44 + golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= 45 + golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= 46 + golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= 47 + golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= 48 + golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= 49 + golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= 50 + golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= 51 + golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 52 + golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 53 + golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 54 + golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= 55 + golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 56 + golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 57 + golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 58 + golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= 59 + golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= 60 + golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 61 + golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 62 + golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 63 + golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 64 + golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 65 + golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 66 + golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 67 + golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 68 + golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 69 + golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 70 + golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 71 + golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= 72 + golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 73 + golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= 74 + golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 75 + golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= 76 + golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= 77 + golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= 78 + golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= 79 + golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= 80 + golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= 81 + golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= 82 + golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 83 + golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 84 + golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= 85 + golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= 86 + golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 87 + golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= 88 + golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= 89 + golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= 90 + golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= 91 + golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= 92 + golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= 93 + golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 94 + golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 95 + golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= 96 + golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= 97 + golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= 98 + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= 99 + golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+151
web/main.go
··· 1 + package main 2 + 3 + import ( 4 + "archive/zip" 5 + "crypto/sha256" 6 + "encoding/base64" 7 + "fmt" 8 + "io" 9 + "net/http" 10 + "os" 11 + "strings" 12 + 13 + "github.com/vic/ntv/packages/flake" 14 + "github.com/vic/ntv/packages/search" 15 + "github.com/vic/ntv/packages/search_spec" 16 + ) 17 + 18 + func main() { 19 + http.HandleFunc("/flake.nix/", HandleFlakeNix) 20 + http.HandleFunc("/flake.zip/", HandleFlakeZip) 21 + http.HandleFunc("/nixpkgs-sri/", HandleSri) 22 + fs := http.FileServer(http.Dir("www/")) 23 + http.Handle("/", http.StripPrefix("/", fs)) 24 + addr := os.ExpandEnv(":$PORT") 25 + if addr == ":" { 26 + addr = ":8080" 27 + } 28 + fmt.Println("Listening on", addr) 29 + http.ListenAndServe(addr, nil) 30 + } 31 + 32 + func createFlake(args []string) (string, error) { 33 + specs, err := search_spec.ParseSearchSpecs(args, nil) 34 + if err != nil { 35 + return "", err 36 + } 37 + 38 + res, err := search.PackageSearchSpecs(specs).Search() 39 + if err != nil { 40 + return "", err 41 + } 42 + 43 + if err := res.EnsureOneSelected(); err != nil { 44 + return "", err 45 + } 46 + if err := res.EnsureUniquePackageNames(); err != nil { 47 + return "", err 48 + } 49 + 50 + f := flake.New() 51 + for _, r := range res { 52 + f.AddTool(r) 53 + } 54 + 55 + code, err := f.Render(false) 56 + if err != nil { 57 + return "", err 58 + } 59 + 60 + return code, nil 61 + } 62 + 63 + func HandleFlakeNix(w http.ResponseWriter, r *http.Request) { 64 + werr := func(err error) { 65 + http.Error(w, err.Error(), http.StatusInternalServerError) 66 + } 67 + path := strings.TrimPrefix(r.URL.Path, "/flake.nix/") 68 + parts := strings.Split(path, "/") 69 + fmt.Println("GenFlake: ", parts) 70 + 71 + flake, err := createFlake(parts) 72 + if err != nil { 73 + werr(err) 74 + return 75 + } 76 + 77 + w.Header().Set("Content-Type", "text/x-nix") 78 + w.Header().Set("Content-Disposition", "attachment; filename=flake.nix") 79 + w.Header().Set("Cache-Control", "no-cache") 80 + w.Header().Set("Pragma", "no-cache") 81 + w.Header().Set("Expires", "0") 82 + fmt.Fprint(w, flake) 83 + } 84 + 85 + func HandleFlakeZip(w http.ResponseWriter, r *http.Request) { 86 + werr := func(err error) { 87 + http.Error(w, err.Error(), http.StatusInternalServerError) 88 + } 89 + path := strings.TrimPrefix(r.URL.Path, "/flake.zip/") 90 + parts := strings.Split(path, "/") 91 + fmt.Println("GenFlake: ", parts) 92 + 93 + flake, err := createFlake(parts) 94 + if err != nil { 95 + werr(err) 96 + return 97 + } 98 + 99 + w.Header().Set("Content-Type", "application/zip") 100 + w.Header().Set("Content-Disposition", "attachment; filename=flake.zip") 101 + w.Header().Set("Cache-Control", "no-cache") 102 + w.Header().Set("Pragma", "no-cache") 103 + w.Header().Set("Expires", "0") 104 + 105 + zw := zip.NewWriter(w) 106 + defer zw.Close() 107 + err = writeFileToZip(zw, "flake.nix", []byte(flake)) 108 + if err != nil { 109 + werr(err) 110 + return 111 + } 112 + } 113 + 114 + func writeFileToZip(zw *zip.Writer, path string, content []byte) error { 115 + w, err := zw.Create(path) 116 + if err != nil { 117 + return err 118 + } 119 + _, err = w.Write(content) 120 + return err 121 + } 122 + 123 + func HandleSri(w http.ResponseWriter, r *http.Request) { 124 + rev := strings.TrimPrefix(r.URL.Path, "/nixpkgs-sri/") 125 + sri, err := Sri("https://codeload.github.com/nixos/nixpkgs/zip/refs/heads/" + rev) 126 + if err != nil { 127 + http.Error(w, err.Error(), http.StatusInternalServerError) 128 + return 129 + } 130 + fmt.Fprint(w, sri) 131 + } 132 + 133 + func Sri(url string) (string, error) { 134 + resp, err := http.Get(url) 135 + if err != nil { 136 + return "", err 137 + } 138 + defer resp.Body.Close() 139 + 140 + fmt.Printf("Checking Nixpkgs: %s\n", url) 141 + h := sha256.New() 142 + _, err = io.Copy(h, resp.Body) 143 + if err != nil { 144 + return "", err 145 + } 146 + sum := h.Sum(nil) 147 + base64Url := base64.URLEncoding.EncodeToString(sum) 148 + sri := "sha256-" + base64Url 149 + fmt.Printf("Nixpkgs: %s\nSRI: %s\n", url, sri) 150 + return sri, nil 151 + }
+1
web/vendor-hash
··· 1 + sha256-X+RzFF1FpBhUhHrhRY/IHq6kWYI3zL413+0QusuFbfI=