Mirror of
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: migrate whole project to Astro (#45)

authored by

Felix Schneider and committed by
GitHub
d4b30491 a6b1c9dc

+9117 -1508
+2 -6
.changeset/config.json
··· 1 1 { 2 - "$schema": "https://unpkg.com/@changesets/config@3.0.3/schema.json", 2 + "$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json", 3 3 "changelog": [ 4 4 "@changesets/changelog-github", 5 5 { "repo": "trueberryless-org/release-image-generator" } ··· 10 10 "access": "public", 11 11 "baseBranch": "main", 12 12 "updateInternalDependencies": "patch", 13 - "ignore": [], 14 - "privatePackages": { 15 - "version": true, 16 - "tag": true 17 - } 13 + "ignore": [] 18 14 }
+10
.changeset/eight-cups-play.md
··· 1 + --- 2 + "release-image-generator": minor 3 + --- 4 + 5 + **⚠️ Breaking change**: Move the image generation API endpoint from `/` to `/api/generateImage`. This means that you now need to add this path to your request: 6 + 7 + ```diff 8 + -https://release-image-generator.trueberryless.org?text=1.0 9 + +https://release-image-generator.trueberryless.org/api/generateImage?text=1.0 10 + ```
+5
.changeset/legal-moments-punch.md
··· 1 + --- 2 + "release-image-generator": minor 3 + --- 4 + 5 + Add new landing page which simplifies the generation of the correct URL query parameters. Try it out on https://release-image-generator.trueberryless.org
+5
.changeset/ninety-pillows-beam.md
··· 1 + --- 2 + "release-image-generator": patch 3 + --- 4 + 5 + Add new `hexagons` pattern and rename old `hexagons` pattern to `triangles` since it was not hexagons.
+5
.changeset/petite-baths-give.md
··· 1 + --- 2 + "release-image-generator": patch 3 + --- 4 + 5 + Migrate deployment to [Netlify](https://www.netlify.com/) to improve availability.
+5
.changeset/slow-streets-sneeze.md
··· 1 + --- 2 + "release-image-generator": patch 3 + --- 4 + 5 + Improve `circuitry` pattern by making sure the pattern extends over the edges of the image.
+5
.changeset/spotty-moments-walk.md
··· 1 + --- 2 + "release-image-generator": patch 3 + --- 4 + 5 + Add new `noiseLevel` with three options: `low`, `medium`, `high` to control how much randomness should be created over the image.
+5
.changeset/sweet-houses-stare.md
··· 1 + --- 2 + "release-image-generator": minor 3 + --- 4 + 5 + Migrate whole project from .NET to Astro (Typescript).
+5
.changeset/three-rings-decide.md
··· 1 + --- 2 + "release-image-generator": patch 3 + --- 4 + 5 + Add new `seed` option to deterministically generate colors, patterns, noise and background. Different options regarding `text`, `width`, `height`, `fontFamily`, `fontWeight` and `imageFormat` will still result in different image outcomes. Seeded images with same parameters will be cached.
+6 -61
.github/workflows/deployment.yaml .github/workflows/release.yaml
··· 1 - name: Deployment 1 + name: Release 2 2 3 3 on: 4 4 push: ··· 10 10 cancel-in-progress: true 11 11 12 12 env: 13 - REGISTRY: docker.io 14 - IMAGE_OWNER: trueberryless 15 13 IMAGE_NAME: release-image-generator 16 14 NODE_VERSION: 20 17 15 ··· 62 60 if: steps.changesets.outputs.hasChangesets == 'true' 63 61 run: | 64 62 git checkout changeset-release/main 65 - VERSION=$(node -p "require('./app/package.json').version") 66 - NAME=$(node -p "require('./app/package.json').name") 63 + VERSION=$(node -p "require('./package.json').version") 64 + NAME=$(node -p "require('./package.json').name") 67 65 git commit --amend -m "ci: release $NAME v$VERSION" --no-edit 68 66 git push origin changeset-release/main:changeset-release/main --force 69 67 ··· 79 77 - name: Read version from package.json 80 78 id: get_version 81 79 run: | 82 - VERSION=$(jq -r '.version' app/package.json) 80 + VERSION=$(jq -r '.version' package.json) 83 81 echo "IMAGE_TAG=$VERSION" >> $GITHUB_ENV 84 82 85 - deployment: 86 - needs: [changesets, image-tag] 87 - if: > 88 - ( 89 - needs.changesets.outputs.hasChangesets == 'false' && 90 - ( 91 - contains(github.event.head_commit.message, 'deploy') || 92 - contains(github.event.head_commit.message, 'release') 93 - ) 94 - ) || 95 - github.event_name == 'workflow_dispatch' 96 - runs-on: ubuntu-latest 97 - permissions: 98 - contents: write 99 - steps: 100 - - name: Check out the repo 101 - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 102 - with: 103 - fetch-depth: 0 104 - 105 - - name: Set up Docker Buildx 106 - uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1 107 - 108 - - name: Log in to Docker Hub 109 - uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0 110 - with: 111 - username: ${{ secrets.DOCKER_USERNAME }} 112 - password: ${{ secrets.DOCKER_PASSWORD }} 113 - 114 - - name: Extract metadata (tags, labels) for Docker 115 - id: meta 116 - uses: docker/metadata-action@c1e51972afc2121e065aed6d45c65596fe445f3f # v5.8.0 117 - with: 118 - images: ${{ env.REGISTRY }}/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }} 119 - 120 - - name: Build and push Docker image 121 - uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 122 - with: 123 - context: ./app 124 - push: true 125 - tags: | 126 - ${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:${{ needs.image-tag.outputs.IMAGE_TAG }} 127 - ${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:latest 128 - labels: ${{ steps.meta.outputs.labels }} 129 - 130 - - name: Update deployment.yaml file 131 - run: | 132 - yq eval '.spec.template.spec.containers[0].image = "${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:${{ needs.image-tag.outputs.IMAGE_TAG }}"' -i manifest/deployment.yaml 133 - 134 - - uses: stefanzweifel/git-auto-commit-action@b863ae1933cb653a53c021fe36dbb774e1fb9403 # v5.2.0 135 - with: 136 - commit_message: update deployment.json container image (automated) 137 - 138 83 release: 139 84 name: Release 140 - needs: [image-tag, deployment] 85 + needs: [image-tag] 141 86 runs-on: ubuntu-latest 142 87 permissions: 143 88 contents: write ··· 148 93 - id: extract-changelog 149 94 uses: sean0x42/markdown-extract@7b185cbe85263116bbf741e739e7198ba86465dc # v2.1.0 150 95 with: 151 - file: app/CHANGELOG.md 96 + file: CHANGELOG.md 152 97 pattern: ${{ needs.image-tag.outputs.IMAGE_TAG }} 153 98 154 99 - uses: ncipollo/release-action@v1
+22 -34
.gitignore
··· 1 - *.swp 2 - *.*~ 3 - project.lock.json 4 - .DS_Store 5 - *.pyc 6 - nupkg/ 1 + # build output 2 + dist/ 3 + # generated types 4 + .astro/ 7 5 8 - # Visual Studio Code 9 - .vscode 6 + # dependencies 7 + node_modules/ 10 8 11 - # Rider 12 - .idea 9 + # logs 10 + npm-debug.log* 11 + yarn-debug.log* 12 + yarn-error.log* 13 + pnpm-debug.log* 13 14 14 - # User-specific files 15 - *.suo 16 - *.user 17 - *.userosscache 18 - *.sln.docstates 19 15 20 - # Build results 21 - [Dd]ebug/ 22 - [Dd]ebugPublic/ 23 - [Rr]elease/ 24 - [Rr]eleases/ 25 - x64/ 26 - x86/ 27 - build/ 28 - bld/ 29 - [Bb]in/ 30 - [Oo]bj/ 31 - [Oo]ut/ 32 - msbuild.log 33 - msbuild.err 34 - msbuild.wrn 16 + # environment variables 17 + .env 18 + .env.production 19 + .env*.local 35 20 36 - # Visual Studio 2015 37 - .vs/ 21 + # macOS-specific files 22 + .DS_Store 38 23 39 - # Dependency directories because Changesets needs Node 40 - node_modules/ 24 + # jetbrains setting folder 25 + .idea/ 26 + 27 + # Local Netlify folder 28 + .netlify
+52 -41
README.md
··· 1 - ## Usage 1 + # Release Image Generator 2 + 3 + This project generates random images with customizable patterns, colors, and text overlays. 4 + 5 + ## API Usage 6 + 7 + ### Endpoint: `GET /api/generateImage` 8 + 9 + ### Query Parameters 10 + 11 + | Parameter | Type | Default | Options | 12 + |-----------|------|---------|---------| 13 + | `text` | string | none | Any text to display | 14 + | `width` | number | 1920 | Any positive integer | 15 + | `height` | number | 1080 | Any positive integer | 16 + | `fontFamily` | string | readexpro | See supported fonts below | 17 + | `fontWeight` | string | bold | bold, medium, light | 18 + | `primaryColor` | string | random | Any valid CSS color or hex | 19 + | `imageFormat` | string | png | png, jpg, jpeg | 20 + | `patternType` | string | random | grid, dots, waves, triangles, hexagons, concentric, circuitry, maze, steps, geometry | 21 + | `noiseLevel` | string | medium | low, medium, high | 22 + | `seed` | number | `Date.now()` | Any positive integer | 23 + 24 + ### Supported Fonts 25 + 26 + - bigshoulders 27 + - inter 28 + - jetbrainsmono 29 + - lato 30 + - opensans 31 + - poppins 32 + - quicksand 33 + - raleway 34 + - readexpro 35 + - roboto 36 + - robotomono 37 + - rubik 38 + - sourcecodepro 2 39 3 - Get your random default image from [https://release-image-generator.trueberryless.org/](https://release-image-generator.trueberryless.org/) and adjust some parameters in the URL: 40 + ### Supported Weights 4 41 5 - - **text**: Configure the text display in the middle of the image: [https://release-image-generator.trueberryless.org?text=2.0](https://release-image-generator.trueberryless.org?text=2.0), by default there is no text 6 - - **width** & **height**: Configure the width and height of the image (default: 1920x1080): [https://release-image-generator.trueberryless.org?width=1560&height=640](https://release-image-generator.trueberryless.org?width=1560&height=640) 7 - - **primaryColor**: Set the HEX value of the desired primary color (with or without the octothorpe - escape `#` with `%23`); example with pink: [https://release-image-generator.trueberryless.org/?text=1.0&primaryColor=%23ffc0d2](https://release-image-generator.trueberryless.org/?text=1.0&primaryColor=%23ffc0d2) 8 - - **imageFormat**: Define the desired image output format: [https://release-image-generator.trueberryless.org?text=1.0&imageFormat=jpg](https://release-image-generator.trueberryless.org?text=1.0&imageFormat=jpg) 42 + - bold 43 + - medium 44 + - light 9 45 10 - Image Format Options: 46 + ### Example Requests 11 47 12 - - `png` (default) 13 - - `jpg` / `jpeg` 14 - - `webp` 48 + Here are some example requests, you can also try out configuring your desired image on https://release-image-generator.trueberryless.org. 15 49 16 - - **backgroundPatternType**: Define what background pattern to use (default: random): [https://release-image-generator.trueberryless.org?text=1.0&backgroundPatternType=steps](https://release-image-generator.trueberryless.org?text=1.0&backgroundPatternType=steps) 50 + **Simple image with text:** 17 51 18 - Background Pattern Options: 52 + https://release-image-generator.trueberryless.org/api/generateImage?text=Hello+World 19 53 20 - - `circuitry` 21 - - `concentric` 22 - - `dots` 23 - - `geometry` 24 - - `grid` 25 - - `hexagons` 26 - - `maze` 27 - - `steps` 28 - - `waves` 29 - - **fontFamily** & **fontWeight**: Configure the font family and weight used: [https://release-image-generator.trueberryless.org?text=1.0&fontFamily=jetbrainsmono&fontWeight=bold](https://release-image-generator.trueberryless.org?text=1.0&fontFamily=jetbrainsmono&fontWeight=bold) 54 + **Custom dimensions and color:** 30 55 31 - Family Options: 56 + https://release-image-generator.trueberryless.org/api/generateImage?text=Release+v1.0&width=1920&height=1080&primaryColor=%23ff6b6b 32 57 33 - - `bigshoulders` 34 - - `inter` 35 - - `jetbrainsmono` 36 - - `lato` 37 - - `opensans` 38 - - `poppins` 39 - - `quicksand` 40 - - `raleway` 41 - - `readexpro` (default) 42 - - `roboto` 43 - - `robotomono` 44 - - `rubik` 45 - - `sourcecodepro` 58 + **Specific pattern and font:** 46 59 47 - Weight Options: 60 + https://release-image-generator.trueberryless.org/api/generateImage?text=Welcome&patternType=hexagons&fontFamily=poppins&fontWeight=bold 48 61 49 - - `bold` (default) 50 - - `medium` 51 - - `light` 62 + **JPEG format with low noise:** 52 63 53 - Every family works with every weight. 64 + https://release-image-generator.trueberryless.org/api/generateImage?text=Banner&imageFormat=jpeg&noiseLevel=low 54 65 55 66 ## License 56 67
-11
app/.dockerignore
··· 1 - Dockerfile 2 - .dockerignore 3 - **/node_modules/ 4 - **/.git 5 - README.md 6 - npm-debug.log 7 - .coverage 8 - .coverage.* 9 - .env 10 - .aws 11 - .next
app/CHANGELOG.md CHANGELOG.md
-25
app/Dockerfile
··· 1 - FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base 2 - WORKDIR /app 3 - RUN apt-get update && apt-get install -y libfontconfig1 && apt-get clean 4 - USER $APP_UID 5 - EXPOSE 8080 6 - EXPOSE 8081 7 - 8 - FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build 9 - ARG BUILD_CONFIGURATION=Release 10 - WORKDIR /src 11 - COPY ["ReleaseImageGenerator.API/ReleaseImageGenerator.API.csproj", "ReleaseImageGenerator.API/"] 12 - RUN dotnet restore "ReleaseImageGenerator.API/ReleaseImageGenerator.API.csproj" 13 - COPY . . 14 - WORKDIR "/src/ReleaseImageGenerator.API" 15 - RUN dotnet build "ReleaseImageGenerator.API.csproj" -c $BUILD_CONFIGURATION -o /app/build 16 - 17 - FROM build AS publish 18 - ARG BUILD_CONFIGURATION=Release 19 - COPY --from=build /src/ReleaseImageGenerator.API/fonts /app/publish/fonts 20 - RUN dotnet publish "ReleaseImageGenerator.API.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false 21 - 22 - FROM base AS final 23 - WORKDIR /app 24 - COPY --from=publish /app/publish . 25 - ENTRYPOINT ["dotnet", "ReleaseImageGenerator.API.dll"]
-41
app/ReleaseImageGenerator.API/Program.cs
··· 1 - using Microsoft.JSInterop; 2 - using ReleaseImageGenerator.Domain.Implementations; 3 - 4 - var builder = WebApplication.CreateBuilder(args); 5 - 6 - // Add services to the container. 7 - builder.Services.AddEndpointsApiExplorer(); 8 - builder.Services.AddSwaggerGen(); 9 - 10 - var app = builder.Build(); 11 - 12 - // Configure the HTTP request pipeline. 13 - if (app.Environment.IsDevelopment()) 14 - { 15 - app.UseSwagger(); 16 - app.UseSwaggerUI(); 17 - } 18 - 19 - app.UseHttpsRedirection(); 20 - 21 - app.MapGet("/", 22 - (string? text, int? width, int? height, SupportedFontFamily? fontFamily, SupportedFontWeight? fontWeight, 23 - string? primaryColor, SupportedImageFormat? imageFormat, SupportedPatternType? backgroundPatternType) => 24 - { 25 - var options = new ImageGeneratorOptions(text, width ?? 1920, height ?? 1080, 26 - fontFamily ?? SupportedFontFamily.readexpro, fontWeight ?? SupportedFontWeight.bold, primaryColor, 27 - imageFormat ?? SupportedImageFormat.png, backgroundPatternType); 28 - var imageGenerator = new ImageGenerator(options); 29 - return Results.File(imageGenerator.GenerateImage().ToArray(), imageFormat switch 30 - { 31 - SupportedImageFormat.jpeg => "image/jpeg", 32 - SupportedImageFormat.jpg => "image/jpeg", 33 - SupportedImageFormat.png => "image/png", 34 - SupportedImageFormat.webp => "image/webp", 35 - _ => "image/png" 36 - }); 37 - }) 38 - .WithName("ImageGenerator") 39 - .WithOpenApi(); 40 - 41 - app.Run();
-41
app/ReleaseImageGenerator.API/Properties/launchSettings.json
··· 1 - { 2 - "$schema": "http://json.schemastore.org/launchsettings.json", 3 - "iisSettings": { 4 - "windowsAuthentication": false, 5 - "anonymousAuthentication": true, 6 - "iisExpress": { 7 - "applicationUrl": "http://localhost:58033", 8 - "sslPort": 44331 9 - } 10 - }, 11 - "profiles": { 12 - "http": { 13 - "commandName": "Project", 14 - "dotnetRunMessages": true, 15 - "launchBrowser": true, 16 - "launchUrl": "swagger", 17 - "applicationUrl": "http://localhost:5033", 18 - "environmentVariables": { 19 - "ASPNETCORE_ENVIRONMENT": "Development" 20 - } 21 - }, 22 - "https": { 23 - "commandName": "Project", 24 - "dotnetRunMessages": true, 25 - "launchBrowser": true, 26 - "launchUrl": "swagger", 27 - "applicationUrl": "https://localhost:7023;http://localhost:5033", 28 - "environmentVariables": { 29 - "ASPNETCORE_ENVIRONMENT": "Development" 30 - } 31 - }, 32 - "IIS Express": { 33 - "commandName": "IISExpress", 34 - "launchBrowser": true, 35 - "launchUrl": "swagger", 36 - "environmentVariables": { 37 - "ASPNETCORE_ENVIRONMENT": "Development" 38 - } 39 - } 40 - } 41 - }
-26
app/ReleaseImageGenerator.API/ReleaseImageGenerator.API.csproj
··· 1 - <Project Sdk="Microsoft.NET.Sdk.Web"> 2 - 3 - <PropertyGroup> 4 - <TargetFramework>net8.0</TargetFramework> 5 - <Nullable>enable</Nullable> 6 - <ImplicitUsings>enable</ImplicitUsings> 7 - <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> 8 - <RootNamespace>ReleaseImageGenerator</RootNamespace> 9 - </PropertyGroup> 10 - 11 - <ItemGroup> 12 - <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.12"/> 13 - <PackageReference Include="Swashbuckle.AspNetCore" Version="6.6.2"/> 14 - </ItemGroup> 15 - 16 - <ItemGroup> 17 - <Content Include="..\.dockerignore"> 18 - <Link>.dockerignore</Link> 19 - </Content> 20 - </ItemGroup> 21 - 22 - <ItemGroup> 23 - <ProjectReference Include="..\ReleaseImageGenerator.Domain\ReleaseImageGenerator.Domain.csproj" /> 24 - </ItemGroup> 25 - 26 - </Project>
-6
app/ReleaseImageGenerator.API/ReleaseImageGenerator.http
··· 1 - @ReleaseImageGenerator_HostAddress = http://localhost:5033 2 - 3 - GET {{ReleaseImageGenerator_HostAddress}}/weatherforecast/ 4 - Accept: application/json 5 - 6 - ###
-8
app/ReleaseImageGenerator.API/appsettings.Development.json
··· 1 - { 2 - "Logging": { 3 - "LogLevel": { 4 - "Default": "Information", 5 - "Microsoft.AspNetCore": "Warning" 6 - } 7 - } 8 - }
-9
app/ReleaseImageGenerator.API/appsettings.json
··· 1 - { 2 - "Logging": { 3 - "LogLevel": { 4 - "Default": "Information", 5 - "Microsoft.AspNetCore": "Warning" 6 - } 7 - }, 8 - "AllowedHosts": "*" 9 - }
app/ReleaseImageGenerator.API/fonts/bigshoulders-bold.ttf public/fonts/bigshoulders-bold.ttf
app/ReleaseImageGenerator.API/fonts/bigshoulders-light.ttf public/fonts/bigshoulders-light.ttf
app/ReleaseImageGenerator.API/fonts/bigshoulders-medium.ttf public/fonts/bigshoulders-medium.ttf
app/ReleaseImageGenerator.API/fonts/inter-bold.ttf public/fonts/inter-bold.ttf
app/ReleaseImageGenerator.API/fonts/inter-light.ttf public/fonts/inter-light.ttf
app/ReleaseImageGenerator.API/fonts/inter-medium.ttf public/fonts/inter-medium.ttf
app/ReleaseImageGenerator.API/fonts/jetbrainsmono-bold.ttf public/fonts/jetbrainsmono-bold.ttf
app/ReleaseImageGenerator.API/fonts/jetbrainsmono-light.ttf public/fonts/jetbrainsmono-light.ttf
app/ReleaseImageGenerator.API/fonts/jetbrainsmono-medium.ttf public/fonts/jetbrainsmono-medium.ttf
app/ReleaseImageGenerator.API/fonts/lato-bold.ttf public/fonts/lato-bold.ttf
app/ReleaseImageGenerator.API/fonts/lato-light.ttf public/fonts/lato-light.ttf
app/ReleaseImageGenerator.API/fonts/lato-medium.ttf public/fonts/lato-medium.ttf
app/ReleaseImageGenerator.API/fonts/opensans-bold.ttf public/fonts/opensans-bold.ttf
app/ReleaseImageGenerator.API/fonts/opensans-light.ttf public/fonts/opensans-light.ttf
app/ReleaseImageGenerator.API/fonts/opensans-medium.ttf public/fonts/opensans-medium.ttf
app/ReleaseImageGenerator.API/fonts/poppins-bold.ttf public/fonts/poppins-bold.ttf
app/ReleaseImageGenerator.API/fonts/poppins-light.ttf public/fonts/poppins-light.ttf
app/ReleaseImageGenerator.API/fonts/poppins-medium.ttf public/fonts/poppins-medium.ttf
app/ReleaseImageGenerator.API/fonts/quicksand-bold.ttf public/fonts/quicksand-bold.ttf
app/ReleaseImageGenerator.API/fonts/quicksand-light.ttf public/fonts/quicksand-light.ttf
app/ReleaseImageGenerator.API/fonts/quicksand-medium.ttf public/fonts/quicksand-medium.ttf
app/ReleaseImageGenerator.API/fonts/raleway-bold.ttf public/fonts/raleway-bold.ttf
app/ReleaseImageGenerator.API/fonts/raleway-light.ttf public/fonts/raleway-light.ttf
app/ReleaseImageGenerator.API/fonts/raleway-medium.ttf public/fonts/raleway-medium.ttf
app/ReleaseImageGenerator.API/fonts/readexpro-bold.ttf public/fonts/readexpro-bold.ttf
app/ReleaseImageGenerator.API/fonts/readexpro-light.ttf public/fonts/readexpro-light.ttf
app/ReleaseImageGenerator.API/fonts/readexpro-medium.ttf public/fonts/readexpro-medium.ttf
app/ReleaseImageGenerator.API/fonts/roboto-bold.ttf public/fonts/roboto-bold.ttf
app/ReleaseImageGenerator.API/fonts/roboto-light.ttf public/fonts/roboto-light.ttf
app/ReleaseImageGenerator.API/fonts/roboto-medium.ttf public/fonts/roboto-medium.ttf
app/ReleaseImageGenerator.API/fonts/robotomono-bold.ttf public/fonts/robotomono-bold.ttf
app/ReleaseImageGenerator.API/fonts/robotomono-light.ttf public/fonts/robotomono-light.ttf
app/ReleaseImageGenerator.API/fonts/robotomono-medium.ttf public/fonts/robotomono-medium.ttf
app/ReleaseImageGenerator.API/fonts/rubik-bold.ttf public/fonts/rubik-bold.ttf
app/ReleaseImageGenerator.API/fonts/rubik-light.ttf public/fonts/rubik-light.ttf
app/ReleaseImageGenerator.API/fonts/rubik-medium.ttf public/fonts/rubik-medium.ttf
app/ReleaseImageGenerator.API/fonts/sourcecodepro-bold.ttf public/fonts/sourcecodepro-bold.ttf
app/ReleaseImageGenerator.API/fonts/sourcecodepro-light.ttf public/fonts/sourcecodepro-light.ttf
app/ReleaseImageGenerator.API/fonts/sourcecodepro-medium.ttf public/fonts/sourcecodepro-medium.ttf
-63
app/ReleaseImageGenerator.Domain/BackgroundGenerator.cs
··· 1 - using SkiaSharp; 2 - using Wacton.Unicolour; 3 - 4 - namespace ReleaseImageGenerator.Domain; 5 - 6 - public static class BackgroundGenerator 7 - { 8 - public static Unicolour GenerateBackground(SKCanvas canvas, int width, int height, Random random, Unicolour primaryColor) 9 - { 10 - // Generate a harmonious color palette around the primary color 11 - var colorPalette = ColorGenerator.GetRandomPalette(primaryColor, 8).Select(ColorGenerator.UnicolourToSKColor).ToArray(); 12 - 13 - var backgroundRotationIsClockwise = random.Next(2) == 0; 14 - 15 - // Fill with a smooth gradient background based on the palette 16 - var paint = new SKPaint 17 - { 18 - Shader = SKShader.CreateLinearGradient( 19 - new SKPoint(0, 20 - random.Next(backgroundRotationIsClockwise ? -1000 : height, 21 - backgroundRotationIsClockwise ? 0 : height + 1000)), 22 - new SKPoint(width, 23 - random.Next(backgroundRotationIsClockwise ? height : -1000, 24 - backgroundRotationIsClockwise ? height + 1000 : 0)), 25 - colorPalette, 26 - SKShaderTileMode.Clamp 27 - ) 28 - }; 29 - 30 - var colorPalette2 = ColorGenerator.GetRandomPalette(primaryColor, 6, 60, 0.3D).Select(ColorGenerator.UnicolourToSKColor) 31 - .ToArray(); 32 - var paint2 = new SKPaint 33 - { 34 - Shader = SKShader.CreateLinearGradient( 35 - new SKPoint(0, 36 - random.Next(!backgroundRotationIsClockwise ? -1000 : height, 37 - !backgroundRotationIsClockwise ? 0 : height + 1000)), 38 - new SKPoint(width, 39 - random.Next(!backgroundRotationIsClockwise ? height : -1000, 40 - !backgroundRotationIsClockwise ? height + 1000 : 0)), 41 - colorPalette2, 42 - SKShaderTileMode.Clamp 43 - ) 44 - }; 45 - 46 - var colorPalette3 = ColorGenerator.GetRandomPalette(primaryColor, 3, 50, 0.2D).Select(ColorGenerator.UnicolourToSKColor) 47 - .ToArray(); 48 - var paint3 = new SKPaint 49 - { 50 - Shader = SKShader.CreateRadialGradient( 51 - new SKPoint(width / 2, height / 2), 52 - (float)Math.Sqrt(Math.Pow(width, 2) + Math.Pow(height, 2)) / 2, 53 - colorPalette3, 54 - SKShaderTileMode.Clamp 55 - ) 56 - }; 57 - canvas.DrawRect(0, 0, width, height, paint); 58 - canvas.DrawRect(0, 0, width, height, paint2); 59 - canvas.DrawRect(0, 0, width, height, paint3); 60 - 61 - return primaryColor; 62 - } 63 - }
-78
app/ReleaseImageGenerator.Domain/ColorGenerator.cs
··· 1 - using SkiaSharp; 2 - using Wacton.Unicolour; 3 - 4 - namespace ReleaseImageGenerator.Domain; 5 - 6 - public static class ColorGenerator 7 - { 8 - public enum ColorLimitation 9 - { 10 - ALL, 11 - LIGHTER, 12 - NEUTRAL_LIGHTNESS, 13 - DARKER, 14 - SATURATED, 15 - NEUTRAL_SATURATION, 16 - DESATURATED, 17 - } 18 - 19 - public static Unicolour GetRandomColor(params ColorLimitation[] limitations) 20 - { 21 - var random = new Random(); 22 - var saturationRange = limitations?.Aggregate((0D, 1D), (current, limitation) => limitation switch 23 - { 24 - ColorLimitation.NEUTRAL_SATURATION => (0.25, 0.75), 25 - ColorLimitation.SATURATED => (0.5, 1D), 26 - ColorLimitation.DESATURATED => (0D, 0.5), 27 - _ => current 28 - }) ?? (0D, 1D); 29 - var lightnessRange = limitations?.Aggregate((0D, 1D), (current, limitation) => limitation switch 30 - { 31 - ColorLimitation.NEUTRAL_LIGHTNESS => (0.25, 0.75), 32 - ColorLimitation.LIGHTER => (0.5, 1D), 33 - ColorLimitation.DARKER => (0D, 0.5), 34 - _ => current 35 - }) ?? (0D, 1D); 36 - var color = new Unicolour(ColourSpace.Oklch, 37 - (lightnessRange.Item1 + random.NextDouble() * (lightnessRange.Item2 - lightnessRange.Item1 + double.Epsilon), 38 - saturationRange.Item1 + 39 - random.NextDouble() * (saturationRange.Item2 - saturationRange.Item1 + double.Epsilon), 40 - random.Next(0, 255) 41 - )).MapToRgbGamut(); 42 - return color; 43 - } 44 - 45 - public static Unicolour[] GetRandomPalette(Unicolour primaryColor, int numberOfColors = 5, int spread = 20, double alpha = 1D) 46 - { 47 - // Ensure we get an odd number of colors for better balance 48 - var halfPaletteSize = numberOfColors / 2; 49 - var colors = new List<Unicolour>(); 50 - 51 - // Get the HSL representation of the primary color 52 - var primaryHsl = primaryColor.Hsl; 53 - 54 - for (int i = -halfPaletteSize; i <= halfPaletteSize; i++) 55 - { 56 - // Create a new color with the shifted hue 57 - var shiftedColor = new Unicolour(ColourSpace.Hsl, primaryHsl.H + i * spread, primaryHsl.S, primaryHsl.L, alpha); 58 - colors.Add(shiftedColor); 59 - } 60 - 61 - return colors.ToArray(); 62 - } 63 - 64 - public static Unicolour[] GetRandomPalette(int numberOfColors) => 65 - GetRandomPalette(GetRandomColor(), numberOfColors); 66 - 67 - public static Unicolour[] GetRandomPalette() => GetRandomPalette(GetRandomColor()); 68 - 69 - 70 - public static SKColor UnicolourToSKColor(Unicolour unicolour) 71 - { 72 - return new SKColor( 73 - (byte)(unicolour.Rgb.R * 255), 74 - (byte)(unicolour.Rgb.G * 255), 75 - (byte)(unicolour.Rgb.B * 255), 76 - (byte)unicolour.Alpha.A255); 77 - } 78 - }
-60
app/ReleaseImageGenerator.Domain/Implementations/ImageGenerator.cs
··· 1 - using ReleaseImageGenerator.Domain.Interfaces; 2 - using SkiaSharp; 3 - using Wacton.Unicolour; 4 - 5 - namespace ReleaseImageGenerator.Domain.Implementations; 6 - 7 - public class ImageGenerator : IImageGenerator 8 - { 9 - public string? Text { get; set; } 10 - public int Width { get; set; } 11 - public int Height { get; set; } 12 - public SupportedFontFamily FontFamily { get; set; } 13 - public SupportedFontWeight FontWeight { get; set; } 14 - public string? PrimaryColor { get; set; } 15 - public SupportedImageFormat ImageFormat { get; set; } 16 - public SupportedPatternType? PatternType { get; set; } 17 - 18 - public ImageGenerator(ImageGeneratorOptions options) 19 - { 20 - Text = options.text; 21 - Width = options.width; 22 - Height = options.height; 23 - FontFamily = options.fontFamily; 24 - FontWeight = options.fontWeight; 25 - PrimaryColor = options.primaryColor; 26 - ImageFormat = options.imageFormat; 27 - PatternType = options.patternType; 28 - } 29 - 30 - public MemoryStream GenerateImage() 31 - { 32 - using var surface = SKSurface.Create(new SKImageInfo(Width, Height)); 33 - var canvas = surface.Canvas; 34 - var random = new Random(); 35 - 36 - var primaryColor = PrimaryColor != null 37 - ? new Unicolour(PrimaryColor) 38 - : ColorGenerator.GetRandomColor(ColorGenerator.ColorLimitation.NEUTRAL_LIGHTNESS, 39 - ColorGenerator.ColorLimitation.NEUTRAL_SATURATION); 40 - BackgroundGenerator.GenerateBackground(canvas, Width, Height, random, primaryColor); 41 - PatternGenerator.GeneratePattern(canvas, Width, Height, random, primaryColor, PatternType); 42 - NoiseGenerator.GenerateNoise(canvas, Width, Height, random); 43 - if (Text != null) TextGenerator.GenerateText(canvas, Text, Width, Height, FontFamily, FontWeight, primaryColor); 44 - 45 - // Encode and return image in the requested format 46 - var stream = new MemoryStream(); 47 - using var image = surface.Snapshot(); 48 - using var data = image.Encode(ImageFormat switch 49 - { 50 - SupportedImageFormat.jpeg => SKEncodedImageFormat.Jpeg, 51 - SupportedImageFormat.jpg => SKEncodedImageFormat.Jpeg, 52 - SupportedImageFormat.png => SKEncodedImageFormat.Png, 53 - SupportedImageFormat.webp => SKEncodedImageFormat.Webp, 54 - _ => SKEncodedImageFormat.Png 55 - }, 100); 56 - data.SaveTo(stream); 57 - stream.Position = 0; 58 - return stream; 59 - } 60 - }
-56
app/ReleaseImageGenerator.Domain/Implementations/ImageGeneratorOptions.cs
··· 1 - namespace ReleaseImageGenerator.Domain.Implementations; 2 - 3 - public record ImageGeneratorOptions( 4 - string? text, 5 - int width, 6 - int height, 7 - SupportedFontFamily fontFamily, 8 - SupportedFontWeight fontWeight, 9 - string? primaryColor, 10 - SupportedImageFormat imageFormat, 11 - SupportedPatternType? patternType); 12 - 13 - public enum SupportedFontFamily 14 - { 15 - bigshoulders, 16 - inter, 17 - jetbrainsmono, 18 - lato, 19 - opensans, 20 - poppins, 21 - quicksand, 22 - raleway, 23 - readexpro, 24 - roboto, 25 - robotomono, 26 - rubik, 27 - sourcecodepro 28 - } 29 - 30 - public enum SupportedFontWeight 31 - { 32 - bold, 33 - medium, 34 - light 35 - } 36 - 37 - public enum SupportedImageFormat 38 - { 39 - jpeg, 40 - jpg, 41 - png, 42 - webp 43 - } 44 - 45 - public enum SupportedPatternType 46 - { 47 - grid, 48 - dots, 49 - waves, 50 - hexagons, 51 - concentric, 52 - circuitry, 53 - maze, 54 - steps, 55 - geometry 56 - }
-8
app/ReleaseImageGenerator.Domain/Interfaces/IImageGenerator.cs
··· 1 - using ReleaseImageGenerator.Domain.Implementations; 2 - 3 - namespace ReleaseImageGenerator.Domain.Interfaces; 4 - 5 - public interface IImageGenerator 6 - { 7 - MemoryStream GenerateImage(); 8 - }
-28
app/ReleaseImageGenerator.Domain/NoiseGenerator.cs
··· 1 - using SkiaSharp; 2 - 3 - namespace ReleaseImageGenerator.Domain; 4 - 5 - public static class NoiseGenerator 6 - { 7 - public static void GenerateNoise(SKCanvas canvas, int width, int height, Random random) 8 - { 9 - int noiseWidth = width / (random.Next(5) + 7); 10 - int noiseHeight = height / (random.Next(5) + 7); 11 - 12 - var noiseBitmap = new SKBitmap(noiseWidth, noiseHeight); 13 - 14 - for (int y = 0; y < noiseHeight; y++) 15 - { 16 - for (int x = 0; x < noiseWidth; x++) 17 - { 18 - byte noise = (byte)random.Next(0, Math.Min(256, (width / 100) * (height / 100) * random.Next(1, 4))); 19 - noiseBitmap.SetPixel(x, y, new SKColor(noise, noise, noise, 30)); // Semi-transparent noise 20 - } 21 - } 22 - 23 - using var noiseShader = SKShader.CreateBitmap(noiseBitmap, SKShaderTileMode.Repeat, SKShaderTileMode.Repeat); 24 - using var noisePaint = new SKPaint { Shader = noiseShader }; 25 - 26 - canvas.DrawRect(new SKRect(0, 0, width, height), noisePaint); 27 - } 28 - }
-497
app/ReleaseImageGenerator.Domain/PatternGenerator.cs
··· 1 - using ReleaseImageGenerator.Domain.Implementations; 2 - using SkiaSharp; 3 - using Wacton.Unicolour; 4 - 5 - namespace ReleaseImageGenerator.Domain; 6 - 7 - public static class PatternGenerator 8 - { 9 - public static void GeneratePattern(SKCanvas canvas, int width, int height, Random random, Unicolour primaryColor, SupportedPatternType? patternType) 10 - { 11 - var lightness = primaryColor.Oklch.L; 12 - 13 - // Choose a pattern type randomly (except geometry pattern) if not defined by user 14 - var selectedPattern = patternType ?? (SupportedPatternType)random.Next(Enum.GetValues(typeof(SupportedPatternType)).Length - 1); 15 - 16 - switch (selectedPattern) 17 - { 18 - case SupportedPatternType.grid: 19 - DrawGridPattern(canvas, width, height, random, lightness); 20 - break; 21 - case SupportedPatternType.dots: 22 - DrawDottedPattern(canvas, width, height, random, lightness); 23 - break; 24 - case SupportedPatternType.waves: 25 - DrawWavyPattern(canvas, width, height, random, lightness); 26 - break; 27 - case SupportedPatternType.geometry: 28 - DrawGeometricPattern(canvas, width, height, random, lightness); 29 - break; 30 - case SupportedPatternType.hexagons: 31 - DrawHexagonalPattern(canvas, width, height, random, lightness); 32 - break; 33 - case SupportedPatternType.concentric: 34 - DrawConcentricPattern(canvas, width, height, random, lightness); 35 - break; 36 - case SupportedPatternType.circuitry: 37 - DrawCircuitPattern(canvas, width, height, random, lightness); 38 - break; 39 - case SupportedPatternType.maze: 40 - DrawMazePattern(canvas, width, height, random, lightness); 41 - break; 42 - case SupportedPatternType.steps: 43 - DrawStepsPattern(canvas, width, height, random, lightness); 44 - break; 45 - default: 46 - throw new ArgumentOutOfRangeException(); 47 - } 48 - } 49 - 50 - private static void DrawGridPattern(SKCanvas canvas, int width, int height, Random random, double lightness) 51 - { 52 - // Subtle grid lines with very low opacity 53 - var paint = new SKPaint 54 - { 55 - Color = SKColors.White.WithAlpha((byte)(random.Next(3) + lightness * 10 + 7)), 56 - IsStroke = true, 57 - StrokeWidth = 1 58 - }; 59 - 60 - int spacing = Math.Max(10, random.Next((width / 100) * (height / 100) / 7, (width / 100) * (height / 100) / 3)); 61 - 62 - // Draw vertical lines 63 - for (int x = 0; x < width; x += spacing) 64 - { 65 - canvas.DrawLine(x, 0, x, height, paint); 66 - } 67 - 68 - // Draw horizontal lines 69 - for (int y = 0; y < height; y += spacing) 70 - { 71 - canvas.DrawLine(0, y, width, y, paint); 72 - } 73 - } 74 - 75 - private static void DrawDottedPattern(SKCanvas canvas, int width, int height, Random random, double lightness) 76 - { 77 - // Create tiny dots with low opacity 78 - var paint = new SKPaint 79 - { 80 - Color = SKColors.White.WithAlpha((byte)(random.Next(3) + lightness * 11 + 12)), 81 - IsAntialias = true 82 - }; 83 - 84 - int spacing = Math.Max(10, random.Next((width / 100) * (height / 100) / 8, (width / 100) * (height / 100) / 5)); 85 - float dotSize = Math.Max(1, random.Next((width / 140) * (height / 140) / 100, (width / 140) * (height / 140) / 40)); 86 - 87 - for (int x = 0; x < width; x += spacing) 88 - { 89 - for (int y = 0; y < height; y += spacing) 90 - { 91 - // Add slight randomness to position 92 - float randomOffset = Math.Max(0, random.Next((width / 150) * (height / 150) / 50, (width / 150) * (height / 150) / 25)); 93 - float offsetX = (float)(randomOffset * 2 - randomOffset); 94 - float offsetY = (float)(randomOffset * 2 - randomOffset); 95 - 96 - canvas.DrawCircle(x + offsetX, y + offsetY, dotSize, paint); 97 - } 98 - } 99 - } 100 - 101 - private static void DrawWavyPattern(SKCanvas canvas, int width, int height, Random random, double lightness) 102 - { 103 - var paint = new SKPaint 104 - { 105 - Color = SKColors.White.WithAlpha((byte)(random.Next(3) + lightness * 9 + 8)), 106 - IsAntialias = true, 107 - IsStroke = true, 108 - StrokeWidth = 1 109 - }; 110 - 111 - int spacing = Math.Max(10, random.Next((width / 100) * (height / 100) / 7, (width / 100) * (height / 100) / 3)); 112 - int amplitude = Math.Max(5, random.Next((width / 100) * (height / 100) / 14, (width / 100) * (height / 100) / 8)); 113 - int frequency = Math.Max(2, random.Next((width / 100) * (height / 100) / 30, (width / 100) * (height / 100) / 15)); 114 - 115 - // Draw horizontal wavy lines 116 - for (int y = 0; y < height; y += spacing) 117 - { 118 - var path = new SKPath(); 119 - path.MoveTo(0, y); 120 - 121 - for (int x = 0; x < width; x += 2) 122 - { 123 - float yOffset = (float)(Math.Sin(x * frequency / (double)width * Math.PI * 2) * amplitude); 124 - path.LineTo(x, y + yOffset); 125 - } 126 - 127 - canvas.DrawPath(path, paint); 128 - } 129 - 130 - // Draw vertical wavy lines with different frequency 131 - frequency = random.Next(2, 5); 132 - for (int x = 0; x < width; x += spacing) 133 - { 134 - var path = new SKPath(); 135 - path.MoveTo(x, 0); 136 - 137 - for (int y = 0; y < height; y += 2) 138 - { 139 - float xOffset = (float)(Math.Sin(y * frequency / (double)height * Math.PI * 2) * amplitude); 140 - path.LineTo(x + xOffset, y); 141 - } 142 - 143 - canvas.DrawPath(path, paint); 144 - } 145 - } 146 - 147 - private static void DrawGeometricPattern(SKCanvas canvas, int width, int height, Random random, double lightness) 148 - { 149 - var paint = new SKPaint 150 - { 151 - Color = SKColors.White.WithAlpha((byte)(random.Next(4) + lightness * 17 + 18)), 152 - IsAntialias = true, 153 - IsStroke = true, 154 - StrokeWidth = 1 155 - }; 156 - 157 - int shapeCount = Math.Max(10, random.Next((width / 140) * (height / 140) / 100, (width / 140) * (height / 140) / 50)); 158 - 159 - // Calculate the optimal spacing based on the shape count and canvas size 160 - int spacing = width / shapeCount; 161 - 162 - for (int x = spacing / 4; x < width; x += spacing) 163 - { 164 - for (int y = spacing / 4; y < height; y += spacing) 165 - { 166 - int shapeType = random.Next(3); 167 - int size = Math.Max(10, random.Next(Math.Max(width, height) / 100, Math.Max(width, height) / 40)); 168 - 169 - // Add slight randomness to position 170 - float randomOffset = Math.Max(0, random.Next(Math.Max(width, height) / 100, Math.Max(width, height) / 50)); 171 - float offsetX = (float)(randomOffset * 2 - randomOffset); 172 - float offsetY = (float)(randomOffset * 2 - randomOffset); 173 - 174 - switch (shapeType) 175 - { 176 - case 0: // Squares 177 - canvas.DrawRect(x - size / 2 + offsetX, y - size / 2 + offsetY, size, size, paint); 178 - break; 179 - case 1: // Circles 180 - canvas.DrawCircle(x + offsetX, y + offsetY, size / 2, paint); 181 - break; 182 - case 2: // Triangles 183 - var path = new SKPath(); 184 - path.MoveTo(x + offsetX, y - size / 2 + offsetY); 185 - path.LineTo(x - size / 2 + offsetX, y + size / 2 + offsetY); 186 - path.LineTo(x + size / 2 + offsetX, y + size / 2 + offsetY); 187 - path.Close(); 188 - canvas.DrawPath(path, paint); 189 - break; 190 - } 191 - } 192 - } 193 - } 194 - 195 - private static void DrawHexagonalPattern(SKCanvas canvas, int width, int height, Random random, double lightness) 196 - { 197 - var paint = new SKPaint 198 - { 199 - Color = SKColors.White.WithAlpha((byte)(random.Next(3) + lightness * 11 + 8)), 200 - IsAntialias = true, 201 - IsStroke = true, 202 - StrokeWidth = 1 203 - }; 204 - 205 - // Size of hexagons 206 - int size = Math.Max(10, random.Next((width / 100) * (height / 100) / 3, (width / 100) * (height / 100) / 2)); 207 - float h = (float)(size * Math.Sqrt(3) / 2); // Height of equilateral triangle 208 - 209 - // Offset rows to create hexagonal tiling 210 - for (int row = -1; row < height / h + 1; row++) 211 - { 212 - for (int col = -1; col < width / size + 1; col++) 213 - { 214 - float centerX = col * size + (row % 2 == 0 ? 0 : size / 2); 215 - float centerY = row * h; 216 - 217 - // Draw a hexagon 218 - var path = new SKPath(); 219 - for (int i = 0; i < 6; i++) 220 - { 221 - float angle = (float)(Math.PI / 3 * i); 222 - float x = centerX + (float)(size / 2 * Math.Cos(angle)); 223 - float y = centerY + (float)(size / 2 * Math.Sin(angle)); 224 - 225 - if (i == 0) 226 - path.MoveTo(x, y); 227 - else 228 - path.LineTo(x, y); 229 - } 230 - 231 - path.Close(); 232 - canvas.DrawPath(path, paint); 233 - } 234 - } 235 - } 236 - 237 - private static void DrawConcentricPattern(SKCanvas canvas, int width, int height, Random random, double lightness) 238 - { 239 - var paint = new SKPaint 240 - { 241 - Color = SKColors.White.WithAlpha((byte)(random.Next(3) + lightness * 8 + 10)), 242 - IsAntialias = true, 243 - IsStroke = true, 244 - StrokeWidth = 1 245 - }; 246 - 247 - // Number of center points for concentric circles 248 - int numCenters = random.Next(1, 3); 249 - int maxRadius = Math.Max(width, height); 250 - 251 - for (int i = 0; i < numCenters; i++) 252 - { 253 - // Random center point 254 - float centerX = random.Next(width); 255 - float centerY = random.Next(height); 256 - 257 - // Draw several concentric circles from each center 258 - int numCircles = Math.Max(2, random.Next((width / 100) * (height / 100) / 30, (width / 100) * (height / 100) / 8)); 259 - float radiusStep = maxRadius / numCircles; 260 - 261 - for (int j = 1; j <= numCircles; j++) 262 - { 263 - float radius = j * radiusStep; 264 - canvas.DrawCircle(centerX, centerY, radius, paint); 265 - } 266 - } 267 - } 268 - 269 - private static void DrawCrosshatchPattern(SKCanvas canvas, int width, int height, Random random, double lightness) 270 - { 271 - var paint = new SKPaint 272 - { 273 - Color = SKColors.White.WithAlpha((byte)(random.Next(3) + lightness * 6 + 8)), 274 - IsAntialias = true, 275 - IsStroke = true, 276 - StrokeWidth = 1, 277 - PathEffect = SKPathEffect.CreateDash(new float[] { 2, 4 }, 0) 278 - }; 279 - 280 - int spacing = Math.Max(10, random.Next((width / 100) * (height / 100) / 7, (width / 100) * (height / 100) / 3)); 281 - float angle1 = (float)(random.Next(30, 60) * Math.PI / 180); // Convert to radians 282 - float angle2 = angle1 + (float)(Math.PI / 2); // Perpendicular 283 - 284 - // Additional randomness to have varied line density 285 - int lineDensity = random.Next(1, 3); 286 - 287 - // Draw lines at angle1 288 - for (int i = -height; i < width + height; i += spacing / lineDensity) 289 - { 290 - float x1 = i; 291 - float y1 = 0; 292 - float x2 = i + height * (float)Math.Cos(angle1); 293 - float y2 = height * (float)Math.Sin(angle1); 294 - 295 - canvas.DrawLine(x1, y1, x2, y2, paint); 296 - } 297 - 298 - // Draw lines at angle2 299 - for (int i = -height; i < width + height; i += spacing / lineDensity) 300 - { 301 - float x1 = i; 302 - float y1 = 0; 303 - float x2 = i + height * (float)Math.Cos(angle2); 304 - float y2 = height * (float)Math.Sin(angle2); 305 - 306 - canvas.DrawLine(x1, y1, x2, y2, paint); 307 - } 308 - } 309 - 310 - private static void DrawCircuitPattern(SKCanvas canvas, int width, int height, Random random, double lightness) 311 - { 312 - var paint = new SKPaint 313 - { 314 - Color = SKColors.White.WithAlpha((byte)(random.Next(5) + lightness * 14 + 12)), 315 - IsAntialias = true, 316 - IsStroke = true, 317 - StrokeWidth = 1 318 - }; 319 - 320 - int gridSize = Math.Max(10, random.Next((width / 100) * (height / 100) / 5, (width / 100) * (height / 100))); 321 - int lineChance = random.Next(50, 90); // Percentage chance of drawing a line 322 - 323 - // Create a grid of nodes 324 - for (int x = gridSize; x < width; x += gridSize) 325 - { 326 - for (int y = gridSize; y < height; y += gridSize) 327 - { 328 - // Sometimes draw a small node 329 - if (random.Next(100) < 60) 330 - { 331 - float nodeSize = Math.Max(1, 332 - random.Next((width / 140) * (height / 140) / 50, (width / 140) * (height / 140) / 20)); 333 - canvas.DrawCircle(x, y, nodeSize, paint); 334 - 335 - // Draw horizontal line to the right 336 - if (x + gridSize < width && random.Next(100) < lineChance) 337 - { 338 - // Occasionally draw straight line 339 - if (random.Next(100) < 80) 340 - { 341 - canvas.DrawLine(x, y, x + gridSize, y, paint); 342 - } 343 - else 344 - { 345 - // Draw L-shaped line 346 - int midX = x + gridSize / 2; 347 - int midY = y + (random.Next(2) == 0 ? gridSize / 2 : -gridSize / 2); 348 - 349 - var path = new SKPath(); 350 - path.MoveTo(x, y); 351 - path.LineTo(midX, y); 352 - path.LineTo(midX, midY); 353 - path.LineTo(x + gridSize, midY); 354 - path.LineTo(x + gridSize, y); 355 - canvas.DrawPath(path, paint); 356 - } 357 - } 358 - 359 - // Draw vertical line down 360 - if (y + gridSize < height && random.Next(100) < lineChance) 361 - { 362 - // Occasionally draw straight line 363 - if (random.Next(100) < 80) 364 - { 365 - canvas.DrawLine(x, y, x, y + gridSize, paint); 366 - } 367 - else 368 - { 369 - // Draw L-shaped line 370 - int midY = y + gridSize / 2; 371 - int midX = x + (random.Next(2) == 0 ? gridSize / 2 : -gridSize / 2); 372 - 373 - var path = new SKPath(); 374 - path.MoveTo(x, y); 375 - path.LineTo(x, midY); 376 - path.LineTo(midX, midY); 377 - path.LineTo(midX, y + gridSize); 378 - path.LineTo(x, y + gridSize); 379 - canvas.DrawPath(path, paint); 380 - } 381 - } 382 - } 383 - } 384 - } 385 - } 386 - 387 - private static void DrawMazePattern(SKCanvas canvas, int width, int height, Random random, double lightness) 388 - { 389 - var paint = new SKPaint 390 - { 391 - Color = SKColors.White.WithAlpha((byte)(random.Next(3) + lightness * 11 + 11)), 392 - IsAntialias = true, 393 - IsStroke = true, 394 - StrokeWidth = 2 // Thicker lines 395 - }; 396 - 397 - // Create a chess/steps pattern - decide on grid size 398 - int gridSize = Math.Max(10, random.Next((width / 100) * (height / 100) / 6, (width / 100) * (height / 100) / 3)); 399 - 400 - // Determine how many grid cells we need in each dimension 401 - int horizontalCells = width / Math.Max(gridSize, 1) + 1; 402 - int verticalCells = height / Math.Max(gridSize, 1) + 1; 403 - 404 - // Create the step pattern 405 - for (int i = 0; i < horizontalCells + verticalCells - 1; i++) 406 - { 407 - // For each diagonal, we draw the step pattern 408 - for (int x = 0; x <= i; x++) 409 - { 410 - int y = i - x; 411 - 412 - // Only draw if within the grid bounds 413 - if (x < horizontalCells && y < verticalCells) 414 - { 415 - // Calculate the actual coordinates 416 - int x1 = x * gridSize; 417 - int y1 = y * gridSize; 418 - int x2 = (x + 1) * gridSize; 419 - int y2 = (y + 1) * gridSize; 420 - 421 - // Only draw if this is a "white" square in our chessboard pattern 422 - if ((x + y) % 2 == 0) 423 - { 424 - bool goUp = random.Next(2) == 0; 425 - 426 - if (goUp) 427 - { 428 - canvas.DrawLine(x1, y1, x2, y1, paint); // Horizontal line 429 - canvas.DrawLine(x2, y1, x2, y2, paint); // Vertical down 430 - } 431 - else 432 - { 433 - canvas.DrawLine(x1, y2, x2, y2, paint); // Horizontal line 434 - canvas.DrawLine(x2, y2, x2, y1, paint); // Vertical up 435 - } 436 - } 437 - } 438 - } 439 - } 440 - } 441 - 442 - private static void DrawStepsPattern(SKCanvas canvas, int width, int height, Random random, double lightness) 443 - { 444 - var paint = new SKPaint 445 - { 446 - Color = SKColors.White.WithAlpha((byte)(random.Next(3) + lightness * 7 + 9)), // Slightly more visible 447 - IsAntialias = true, 448 - IsStroke = true, 449 - StrokeWidth = 2 // Thicker lines 450 - }; 451 - 452 - // Create a chess/steps pattern - decide on grid size 453 - int gridSize = Math.Max(10, random.Next((width / 100) * (height / 100) / 8, (width / 100) * (height / 100) / 3)); 454 - 455 - // Determine how many grid cells we need in each dimension 456 - int horizontalCells = width / Math.Max(gridSize, 1) + 1; 457 - int verticalCells = height / Math.Max(gridSize, 1) + 1; 458 - 459 - // Determine whether to go up or down 460 - bool goUp = random.Next(2) == 0; 461 - 462 - // Create the step pattern 463 - for (int i = 0; i < horizontalCells + verticalCells - 1; i++) 464 - { 465 - // For each diagonal, we draw the step pattern 466 - for (int x = 0; x <= i; x++) 467 - { 468 - int y = i - x; 469 - 470 - // Only draw if within the grid bounds 471 - if (x < horizontalCells && y < verticalCells) 472 - { 473 - // Calculate the actual coordinates 474 - int x1 = x * gridSize; 475 - int y1 = y * gridSize; 476 - int x2 = (x + 1) * gridSize; 477 - int y2 = (y + 1) * gridSize; 478 - 479 - // Only draw if this is a "white" square in our chessboard pattern 480 - if ((x + y) % 2 == 0) 481 - { 482 - if (goUp) 483 - { 484 - canvas.DrawLine(x1, y1, x2, y1, paint); // Horizontal line 485 - canvas.DrawLine(x2, y1, x2, y2, paint); // Vertical down 486 - } 487 - else 488 - { 489 - canvas.DrawLine(x1, y2, x2, y2, paint); // Horizontal line 490 - canvas.DrawLine(x2, y2, x2, y1, paint); // Vertical up 491 - } 492 - } 493 - } 494 - } 495 - } 496 - } 497 - }
-15
app/ReleaseImageGenerator.Domain/ReleaseImageGenerator.Domain.csproj
··· 1 - <Project Sdk="Microsoft.NET.Sdk"> 2 - 3 - <PropertyGroup> 4 - <TargetFramework>net8.0</TargetFramework> 5 - <ImplicitUsings>enable</ImplicitUsings> 6 - <Nullable>enable</Nullable> 7 - </PropertyGroup> 8 - 9 - <ItemGroup> 10 - <PackageReference Include="SkiaSharp" Version="3.116.1" /> 11 - <PackageReference Include="SkiaSharp.NativeAssets.Linux" Version="3.116.1" /> 12 - <PackageReference Include="Wacton.Unicolour" Version="5.0.0" /> 13 - </ItemGroup> 14 - 15 - </Project>
-139
app/ReleaseImageGenerator.Domain/TextGenerator.cs
··· 1 - using System.Net.Mime; 2 - using System.Reflection; 3 - using ReleaseImageGenerator.Domain.Implementations; 4 - using SkiaSharp; 5 - using Wacton.Unicolour; 6 - 7 - namespace ReleaseImageGenerator.Domain; 8 - 9 - public static class TextGenerator 10 - { 11 - public static void GenerateText(SKCanvas canvas, string text, int width, int height, SupportedFontFamily fontFamily, 12 - SupportedFontWeight fontWeight, Unicolour primaryColor) 13 - { 14 - var typeface = LoadFont(fontFamily.ToString(), fontWeight.ToString()); 15 - var fontsize = GetMaxFontSize(width - width / 3, typeface, text, 1f, width > height ? height / 3 : width / 3); 16 - 17 - // Calculate text size and position 18 - var textPaint = new SKPaint 19 - { 20 - TextSize = fontsize, 21 - IsAntialias = true, 22 - Typeface = typeface, 23 - TextScaleX = 0.95f 24 - }; 25 - 26 - var textwidth = textPaint.MeasureText(text); 27 - var textBounds = new SKRect(); 28 - textPaint.MeasureText(text, ref textBounds); 29 - 30 - float textX = (width - textwidth) / 2; 31 - float textY = height / 2 + textBounds.Height / 2; 32 - 33 - // Add light text shadow 34 - var textShadowPaint = new SKPaint 35 - { 36 - TextSize = fontsize, 37 - IsAntialias = true, 38 - Typeface = typeface, 39 - TextScaleX = 0.95f, 40 - Color = SKColors.Black.WithAlpha(80), 41 - MaskFilter = SKMaskFilter.CreateBlur(SKBlurStyle.Normal, 5) 42 - }; 43 - canvas.DrawText(text, textX + fontsize / 100, textY + fontsize / 100, textShadowPaint); 44 - 45 - // Now set up the gradient with proper positioning 46 - textPaint.Shader = SKShader.CreateLinearGradient( 47 - new SKPoint(textX, textY + textBounds.Top), 48 - new SKPoint(textX + textwidth, textY + textBounds.Bottom), 49 - new[] 50 - { 51 - SKColors.White, 52 - ColorGenerator.UnicolourToSKColor(new Unicolour(ColourSpace.Oklch, 53 - (0.8 + Math.Max(0, (primaryColor.Oklch.L - 0.8) * 0.5), 0, 0), 1D)) 54 - }, 55 - SKShaderTileMode.Clamp 56 - ); 57 - 58 - // Draw glassmorphism background with smaller border and shadow 59 - var bgPaint = new SKPaint 60 - { 61 - Color = SKColors.White.WithAlpha(40), 62 - IsAntialias = true 63 - }; 64 - var borderPaint = new SKPaint 65 - { 66 - Color = SKColors.White.WithAlpha(80), 67 - IsStroke = true, 68 - StrokeWidth = 4, 69 - IsAntialias = true 70 - }; 71 - 72 - var shadowPaint = new SKPaint 73 - { 74 - Color = SKColors.Black.WithAlpha(50), 75 - MaskFilter = SKMaskFilter.CreateBlur(SKBlurStyle.Normal, 10) 76 - }; 77 - 78 - var padding = fontsize / 3; 79 - var rect = new SKRect(textX - padding, textY + textBounds.Top - padding, textX + textwidth + padding, 80 - textY + padding); 81 - 82 - // Draw shadow in the direction of the light 83 - canvas.Translate(fontsize / 50, fontsize / 50); 84 - canvas.DrawRoundRect(rect, fontsize / 4, fontsize / 4, shadowPaint); 85 - canvas.Translate(-fontsize / 50, -fontsize / 50); 86 - 87 - canvas.DrawRoundRect(rect, fontsize / 4, fontsize / 4, bgPaint); 88 - canvas.DrawRoundRect(rect, fontsize / 4, fontsize / 4, borderPaint); 89 - 90 - // Draw the text 91 - canvas.DrawText(text, textX, textY, textPaint); 92 - } 93 - 94 - private static SKTypeface LoadFont(string fontFamily, string fontWeight) 95 - { 96 - var fontName = $"{fontFamily}-{fontWeight}.ttf"; 97 - 98 - return SKTypeface.FromFile($"./fonts/{fontFamily}-{fontWeight}.ttf") ?? 99 - SKTypeface.FromFile($"./fonts/readexpro-bold.ttf") ?? SKTypeface.Default; 100 - } 101 - 102 - private static float GetMaxFontSize(double sectorSize, SKTypeface typeface, string text, 103 - float degreeOfCertainty = 1f, 104 - float maxFont = 100f) 105 - { 106 - var max = maxFont; // The upper bound. We know the font size is below this value 107 - var min = 0f; // The lower bound, We know the font size is equal to or above this value 108 - var last = -1f; // The last calculated value. 109 - float value; 110 - while (true) 111 - { 112 - value = min + ((max - min) / 2); // Find the half way point between Max and Min 113 - using (SKFont ft = new SKFont(typeface, value)) 114 - using (SKPaint paint = new SKPaint(ft)) 115 - { 116 - if (paint.MeasureText(text) > sectorSize) // Measure the string size at this font size 117 - { 118 - // The text size is too large 119 - // therefore the max possible size is below value 120 - last = value; 121 - max = value; 122 - } 123 - else 124 - { 125 - // The text fits within the area 126 - // therefore the min size is above or equal to value 127 - min = value; 128 - 129 - // Check if this value is within our degree of certainty 130 - if (Math.Abs(last - value) <= degreeOfCertainty) 131 - return last; // Value is within certainty range, we found the best font size! 132 - 133 - //This font difference is not within our degree of certainty 134 - last = value; 135 - } 136 - } 137 - } 138 - } 139 - }
-22
app/ReleaseImageGenerator.sln
··· 1 -  2 - Microsoft Visual Studio Solution File, Format Version 12.00 3 - Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReleaseImageGenerator.API", "ReleaseImageGenerator.API\ReleaseImageGenerator.API.csproj", "{6DAC702E-2CFB-41BA-813E-8352C60203AE}" 4 - EndProject 5 - Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReleaseImageGenerator.Domain", "ReleaseImageGenerator.Domain\ReleaseImageGenerator.Domain.csproj", "{3042559D-EEF7-4E6D-99E0-6D604E8C31B9}" 6 - EndProject 7 - Global 8 - GlobalSection(SolutionConfigurationPlatforms) = preSolution 9 - Debug|Any CPU = Debug|Any CPU 10 - Release|Any CPU = Release|Any CPU 11 - EndGlobalSection 12 - GlobalSection(ProjectConfigurationPlatforms) = postSolution 13 - {6DAC702E-2CFB-41BA-813E-8352C60203AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 14 - {6DAC702E-2CFB-41BA-813E-8352C60203AE}.Debug|Any CPU.Build.0 = Debug|Any CPU 15 - {6DAC702E-2CFB-41BA-813E-8352C60203AE}.Release|Any CPU.ActiveCfg = Release|Any CPU 16 - {6DAC702E-2CFB-41BA-813E-8352C60203AE}.Release|Any CPU.Build.0 = Release|Any CPU 17 - {3042559D-EEF7-4E6D-99E0-6D604E8C31B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 18 - {3042559D-EEF7-4E6D-99E0-6D604E8C31B9}.Debug|Any CPU.Build.0 = Debug|Any CPU 19 - {3042559D-EEF7-4E6D-99E0-6D604E8C31B9}.Release|Any CPU.ActiveCfg = Release|Any CPU 20 - {3042559D-EEF7-4E6D-99E0-6D604E8C31B9}.Release|Any CPU.Build.0 = Release|Any CPU 21 - EndGlobalSection 22 - EndGlobal
-6
app/package.json
··· 1 - { 2 - "name": "release-image-generator", 3 - "version": "0.4.0", 4 - "private": true, 5 - "packageManager": "pnpm@10.10.0" 6 - }
+14
astro.config.mjs
··· 1 + // astro.config.mjs 2 + import netlify from "@astrojs/netlify"; 3 + import { defineConfig } from "astro/config"; 4 + 5 + export default defineConfig({ 6 + site: "https://release-image-generator.trueberryless.org", 7 + output: "server", 8 + adapter: netlify(), 9 + vite: { 10 + ssr: { 11 + external: ["canvas"], 12 + }, 13 + }, 14 + });
-12
manifest/certificate.yaml
··· 1 - apiVersion: cert-manager.io/v1 2 - kind: Certificate 3 - metadata: 4 - name: release-image-generator 5 - namespace: release-image-generator 6 - spec: 7 - secretName: release-image-generator 8 - issuerRef: 9 - name: acme-issuer 10 - kind: ClusterIssuer 11 - dnsNames: 12 - - "release-image-generator.trueberryless.org"
-23
manifest/deployment.yaml
··· 1 - apiVersion: apps/v1 2 - kind: Deployment 3 - metadata: 4 - name: release-image-generator 5 - namespace: release-image-generator 6 - labels: 7 - app: release-image-generator 8 - spec: 9 - replicas: 3 10 - selector: 11 - matchLabels: 12 - app: release-image-generator 13 - template: 14 - metadata: 15 - labels: 16 - app: release-image-generator 17 - spec: 18 - containers: 19 - - name: release-image-generator 20 - image: "trueberryless/release-image-generator:0.4.0" 21 - imagePullPolicy: Always 22 - ports: 23 - - containerPort: 8080
-22
manifest/ingress.yaml
··· 1 - apiVersion: networking.k8s.io/v1 2 - kind: Ingress 3 - metadata: 4 - name: release-image-generator 5 - namespace: release-image-generator 6 - spec: 7 - rules: 8 - - host: release-image-generator.trueberryless.org 9 - http: 10 - paths: 11 - - path: / 12 - pathType: Prefix 13 - backend: 14 - service: 15 - name: release-image-generator 16 - port: 17 - number: 80 18 - 19 - tls: 20 - - hosts: 21 - - release-image-generator.trueberryless.org 22 - secretName: release-image-generator
-4
manifest/namespace.yaml
··· 1 - apiVersion: v1 2 - kind: Namespace 3 - metadata: 4 - name: release-image-generator
-14
manifest/service.yaml
··· 1 - apiVersion: v1 2 - kind: Service 3 - metadata: 4 - name: release-image-generator 5 - namespace: release-image-generator 6 - annotations: 7 - cert-manager.io/issuer: acme-issuer 8 - spec: 9 - selector: 10 - app: release-image-generator 11 - ports: 12 - - name: http 13 - port: 80 14 - targetPort: 8080
+20 -5
package.json
··· 1 1 { 2 - "name": "release-image-generator-monorepo", 3 - "homepage": "https://github.com/trueberryless-org/release-image-generator", 2 + "name": "release-image-generator", 3 + "version": "0.4.0", 4 + "homepage": "https://release-image-generator.trueberryless.org", 4 5 "bugs": { 5 6 "url": "https://github.com/trueberryless-org/release-image-generator/issues" 6 7 }, ··· 10 11 }, 11 12 "license": "MIT", 12 13 "author": "trueberryless <trueberryless@gmail.com> (https://trueberryless.org)", 14 + "type": "module", 13 15 "scripts": { 16 + "build": "astro build", 17 + "dev": "astro dev", 18 + "preview": "astro preview", 19 + "start": "astro dev", 14 20 "version": "pnpm changeset version && pnpm i --no-frozen-lockfile" 15 21 }, 22 + "dependencies": { 23 + "@astrojs/netlify": "^6.6.0", 24 + "astro": "5.15.4", 25 + "canvas": "^3.2.0", 26 + "culori": "^4.0.2" 27 + }, 16 28 "devDependencies": { 17 - "@changesets/changelog-github": "^0.5.0", 18 - "@changesets/cli": "^2.27.11", 29 + "@changesets/changelog-github": "^0.5.1", 30 + "@changesets/cli": "^2.29.7", 19 31 "@trivago/prettier-plugin-sort-imports": "5.2.2", 32 + "@types/culori": "^4.0.1", 33 + "@types/node": "^20.10.0", 20 34 "prettier": "3.5.3", 21 - "prettier-plugin-astro": "0.14.1" 35 + "prettier-plugin-astro": "0.14.1", 36 + "typescript": "^5.3.3" 22 37 }, 23 38 "packageManager": "pnpm@10.10.0" 24 39 }
+7180 -145
pnpm-lock.yaml
··· 7 7 importers: 8 8 9 9 .: 10 + dependencies: 11 + '@astrojs/netlify': 12 + specifier: ^6.6.0 13 + version: 6.6.0(@types/node@20.19.24)(astro@5.15.4(@netlify/blobs@10.3.3)(@types/node@20.19.24)(jiti@2.6.1)(rollup@4.53.1)(typescript@5.9.3)(yaml@2.8.1))(jiti@2.6.1)(rollup@4.53.1)(yaml@2.8.1) 14 + astro: 15 + specifier: 5.15.4 16 + version: 5.15.4(@netlify/blobs@10.3.3)(@types/node@20.19.24)(jiti@2.6.1)(rollup@4.53.1)(typescript@5.9.3)(yaml@2.8.1) 17 + canvas: 18 + specifier: ^3.2.0 19 + version: 3.2.0 20 + culori: 21 + specifier: ^4.0.2 22 + version: 4.0.2 10 23 devDependencies: 11 24 '@changesets/changelog-github': 12 - specifier: ^0.5.0 25 + specifier: ^0.5.1 13 26 version: 0.5.1 14 27 '@changesets/cli': 15 - specifier: ^2.27.11 16 - version: 2.28.1 28 + specifier: ^2.29.7 29 + version: 2.29.7(@types/node@20.19.24) 17 30 '@trivago/prettier-plugin-sort-imports': 18 31 specifier: 5.2.2 19 - version: 5.2.2(prettier@3.5.3) 32 + version: 5.2.2(@vue/compiler-sfc@3.5.24)(prettier@3.5.3) 33 + '@types/culori': 34 + specifier: ^4.0.1 35 + version: 4.0.1 36 + '@types/node': 37 + specifier: ^20.10.0 38 + version: 20.19.24 20 39 prettier: 21 40 specifier: 3.5.3 22 41 version: 3.5.3 23 42 prettier-plugin-astro: 24 43 specifier: 0.14.1 25 44 version: 0.14.1 26 - 27 - app: {} 45 + typescript: 46 + specifier: ^5.3.3 47 + version: 5.9.3 28 48 29 49 packages: 30 50 31 - '@astrojs/compiler@2.12.0': 32 - resolution: {integrity: sha512-7bCjW6tVDpUurQLeKBUN9tZ5kSv5qYrGmcn0sG0IwacL7isR2ZbyyA3AdZ4uxsuUFOS2SlgReTH7wkxO6zpqWA==} 51 + '@astrojs/compiler@2.13.0': 52 + resolution: {integrity: sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw==} 53 + 54 + '@astrojs/internal-helpers@0.7.4': 55 + resolution: {integrity: sha512-lDA9MqE8WGi7T/t2BMi+EAXhs4Vcvr94Gqx3q15cFEz8oFZMO4/SFBqYr/UcmNlvW+35alowkVj+w9VhLvs5Cw==} 56 + 57 + '@astrojs/markdown-remark@6.3.8': 58 + resolution: {integrity: sha512-uFNyFWadnULWK2cOw4n0hLKeu+xaVWeuECdP10cQ3K2fkybtTlhb7J7TcScdjmS8Yps7oje9S/ehYMfZrhrgCg==} 59 + 60 + '@astrojs/netlify@6.6.0': 61 + resolution: {integrity: sha512-8sjuht5mHRN6prQukutgREu00sr9jpsftYmXAnC33HnGKbPeJX5hEBfZoLgD6aKSpC8+NikUBq7qc1xkMKOFDQ==} 62 + peerDependencies: 63 + astro: ^5.7.0 64 + 65 + '@astrojs/prism@3.3.0': 66 + resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==} 67 + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} 68 + 69 + '@astrojs/telemetry@3.3.0': 70 + resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==} 71 + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} 72 + 73 + '@astrojs/underscore-redirects@1.0.0': 74 + resolution: {integrity: sha512-qZxHwVnmb5FXuvRsaIGaqWgnftjCuMY+GSbaVZdBmE4j8AfgPqKPxYp8SUERyJcjpKCEmO4wD6ybuGH8A2kVRQ==} 33 75 34 76 '@babel/code-frame@7.27.1': 35 77 resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} 36 78 engines: {node: '>=6.9.0'} 37 79 38 - '@babel/generator@7.27.1': 39 - resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} 80 + '@babel/generator@7.28.5': 81 + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} 82 + engines: {node: '>=6.9.0'} 83 + 84 + '@babel/helper-globals@7.28.0': 85 + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} 40 86 engines: {node: '>=6.9.0'} 41 87 42 88 '@babel/helper-string-parser@7.27.1': 43 89 resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 44 90 engines: {node: '>=6.9.0'} 45 91 46 - '@babel/helper-validator-identifier@7.27.1': 47 - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} 92 + '@babel/helper-validator-identifier@7.28.5': 93 + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} 48 94 engines: {node: '>=6.9.0'} 49 95 50 - '@babel/parser@7.27.2': 51 - resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} 96 + '@babel/parser@7.28.5': 97 + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} 52 98 engines: {node: '>=6.0.0'} 53 99 hasBin: true 54 100 55 - '@babel/runtime@7.26.9': 56 - resolution: {integrity: sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==} 101 + '@babel/runtime@7.28.4': 102 + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} 57 103 engines: {node: '>=6.9.0'} 58 104 59 105 '@babel/template@7.27.2': 60 106 resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} 61 107 engines: {node: '>=6.9.0'} 62 108 63 - '@babel/traverse@7.27.1': 64 - resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} 109 + '@babel/traverse@7.28.5': 110 + resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} 65 111 engines: {node: '>=6.9.0'} 66 112 67 - '@babel/types@7.27.1': 68 - resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} 113 + '@babel/types@7.28.5': 114 + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} 69 115 engines: {node: '>=6.9.0'} 70 116 71 - '@changesets/apply-release-plan@7.0.10': 72 - resolution: {integrity: sha512-wNyeIJ3yDsVspYvHnEz1xQDq18D9ifed3lI+wxRQRK4pArUcuHgCTrHv0QRnnwjhVCQACxZ+CBih3wgOct6UXw==} 117 + '@capsizecss/unpack@3.0.0': 118 + resolution: {integrity: sha512-+ntATQe1AlL7nTOYjwjj6w3299CgRot48wL761TUGYpYgAou3AaONZazp0PKZyCyWhudWsjhq1nvRHOvbMzhTA==} 119 + engines: {node: '>=18'} 73 120 74 - '@changesets/assemble-release-plan@6.0.6': 75 - resolution: {integrity: sha512-Frkj8hWJ1FRZiY3kzVCKzS0N5mMwWKwmv9vpam7vt8rZjLL1JMthdh6pSDVSPumHPshTTkKZ0VtNbE0cJHZZUg==} 121 + '@changesets/apply-release-plan@7.0.13': 122 + resolution: {integrity: sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg==} 123 + 124 + '@changesets/assemble-release-plan@6.0.9': 125 + resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} 76 126 77 127 '@changesets/changelog-git@0.2.1': 78 128 resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} ··· 80 130 '@changesets/changelog-github@0.5.1': 81 131 resolution: {integrity: sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ==} 82 132 83 - '@changesets/cli@2.28.1': 84 - resolution: {integrity: sha512-PiIyGRmSc6JddQJe/W1hRPjiN4VrMvb2VfQ6Uydy2punBioQrsxppyG5WafinKcW1mT0jOe/wU4k9Zy5ff21AA==} 133 + '@changesets/cli@2.29.7': 134 + resolution: {integrity: sha512-R7RqWoaksyyKXbKXBTbT4REdy22yH81mcFK6sWtqSanxUCbUi9Uf+6aqxZtDQouIqPdem2W56CdxXgsxdq7FLQ==} 85 135 hasBin: true 86 136 87 137 '@changesets/config@3.1.1': ··· 96 146 '@changesets/get-github-info@0.6.0': 97 147 resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} 98 148 99 - '@changesets/get-release-plan@4.0.8': 100 - resolution: {integrity: sha512-MM4mq2+DQU1ZT7nqxnpveDMTkMBLnwNX44cX7NSxlXmr7f8hO6/S2MXNiXG54uf/0nYnefv0cfy4Czf/ZL/EKQ==} 149 + '@changesets/get-release-plan@4.0.13': 150 + resolution: {integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==} 101 151 102 152 '@changesets/get-version-range-type@0.4.0': 103 153 resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} 104 154 105 - '@changesets/git@3.0.2': 106 - resolution: {integrity: sha512-r1/Kju9Y8OxRRdvna+nxpQIsMsRQn9dhhAZt94FLDeu0Hij2hnOozW8iqnHBgvu+KdnJppCveQwK4odwfw/aWQ==} 155 + '@changesets/git@3.0.4': 156 + resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} 107 157 108 158 '@changesets/logger@0.1.1': 109 159 resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} ··· 114 164 '@changesets/pre@2.0.2': 115 165 resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} 116 166 117 - '@changesets/read@0.6.3': 118 - resolution: {integrity: sha512-9H4p/OuJ3jXEUTjaVGdQEhBdqoT2cO5Ts95JTFsQyawmKzpL8FnIeJSyhTDPW1MBRDnwZlHFEM9SpPwJDY5wIg==} 167 + '@changesets/read@0.6.5': 168 + resolution: {integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==} 119 169 120 170 '@changesets/should-skip-package@0.1.2': 121 171 resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} ··· 129 179 '@changesets/write@0.4.0': 130 180 resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} 131 181 132 - '@jridgewell/gen-mapping@0.3.8': 133 - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 134 - engines: {node: '>=6.0.0'} 182 + '@colors/colors@1.6.0': 183 + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} 184 + engines: {node: '>=0.1.90'} 185 + 186 + '@dabh/diagnostics@2.0.8': 187 + resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==} 188 + 189 + '@dependents/detective-less@5.0.1': 190 + resolution: {integrity: sha512-Y6+WUMsTFWE5jb20IFP4YGa5IrGY/+a/FbOSjDF/wz9gepU2hwCYSXRHP/vPwBvwcY3SVMASt4yXxbXNXigmZQ==} 191 + engines: {node: '>=18'} 192 + 193 + '@emnapi/runtime@1.7.0': 194 + resolution: {integrity: sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q==} 195 + 196 + '@envelop/instrumentation@1.0.0': 197 + resolution: {integrity: sha512-cxgkB66RQB95H3X27jlnxCRNTmPuSTgmBAq6/4n2Dtv4hsk4yz8FadA1ggmd0uZzvKqWD6CR+WFgTjhDqg7eyw==} 198 + engines: {node: '>=18.0.0'} 199 + 200 + '@esbuild/aix-ppc64@0.25.11': 201 + resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} 202 + engines: {node: '>=18'} 203 + cpu: [ppc64] 204 + os: [aix] 205 + 206 + '@esbuild/aix-ppc64@0.25.12': 207 + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} 208 + engines: {node: '>=18'} 209 + cpu: [ppc64] 210 + os: [aix] 211 + 212 + '@esbuild/android-arm64@0.25.11': 213 + resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} 214 + engines: {node: '>=18'} 215 + cpu: [arm64] 216 + os: [android] 217 + 218 + '@esbuild/android-arm64@0.25.12': 219 + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} 220 + engines: {node: '>=18'} 221 + cpu: [arm64] 222 + os: [android] 223 + 224 + '@esbuild/android-arm@0.25.11': 225 + resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} 226 + engines: {node: '>=18'} 227 + cpu: [arm] 228 + os: [android] 229 + 230 + '@esbuild/android-arm@0.25.12': 231 + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} 232 + engines: {node: '>=18'} 233 + cpu: [arm] 234 + os: [android] 235 + 236 + '@esbuild/android-x64@0.25.11': 237 + resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} 238 + engines: {node: '>=18'} 239 + cpu: [x64] 240 + os: [android] 241 + 242 + '@esbuild/android-x64@0.25.12': 243 + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} 244 + engines: {node: '>=18'} 245 + cpu: [x64] 246 + os: [android] 247 + 248 + '@esbuild/darwin-arm64@0.25.11': 249 + resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} 250 + engines: {node: '>=18'} 251 + cpu: [arm64] 252 + os: [darwin] 253 + 254 + '@esbuild/darwin-arm64@0.25.12': 255 + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} 256 + engines: {node: '>=18'} 257 + cpu: [arm64] 258 + os: [darwin] 259 + 260 + '@esbuild/darwin-x64@0.25.11': 261 + resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} 262 + engines: {node: '>=18'} 263 + cpu: [x64] 264 + os: [darwin] 265 + 266 + '@esbuild/darwin-x64@0.25.12': 267 + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} 268 + engines: {node: '>=18'} 269 + cpu: [x64] 270 + os: [darwin] 271 + 272 + '@esbuild/freebsd-arm64@0.25.11': 273 + resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} 274 + engines: {node: '>=18'} 275 + cpu: [arm64] 276 + os: [freebsd] 277 + 278 + '@esbuild/freebsd-arm64@0.25.12': 279 + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} 280 + engines: {node: '>=18'} 281 + cpu: [arm64] 282 + os: [freebsd] 283 + 284 + '@esbuild/freebsd-x64@0.25.11': 285 + resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} 286 + engines: {node: '>=18'} 287 + cpu: [x64] 288 + os: [freebsd] 289 + 290 + '@esbuild/freebsd-x64@0.25.12': 291 + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} 292 + engines: {node: '>=18'} 293 + cpu: [x64] 294 + os: [freebsd] 295 + 296 + '@esbuild/linux-arm64@0.25.11': 297 + resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} 298 + engines: {node: '>=18'} 299 + cpu: [arm64] 300 + os: [linux] 301 + 302 + '@esbuild/linux-arm64@0.25.12': 303 + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} 304 + engines: {node: '>=18'} 305 + cpu: [arm64] 306 + os: [linux] 307 + 308 + '@esbuild/linux-arm@0.25.11': 309 + resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} 310 + engines: {node: '>=18'} 311 + cpu: [arm] 312 + os: [linux] 313 + 314 + '@esbuild/linux-arm@0.25.12': 315 + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} 316 + engines: {node: '>=18'} 317 + cpu: [arm] 318 + os: [linux] 319 + 320 + '@esbuild/linux-ia32@0.25.11': 321 + resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} 322 + engines: {node: '>=18'} 323 + cpu: [ia32] 324 + os: [linux] 325 + 326 + '@esbuild/linux-ia32@0.25.12': 327 + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} 328 + engines: {node: '>=18'} 329 + cpu: [ia32] 330 + os: [linux] 331 + 332 + '@esbuild/linux-loong64@0.25.11': 333 + resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} 334 + engines: {node: '>=18'} 335 + cpu: [loong64] 336 + os: [linux] 337 + 338 + '@esbuild/linux-loong64@0.25.12': 339 + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} 340 + engines: {node: '>=18'} 341 + cpu: [loong64] 342 + os: [linux] 343 + 344 + '@esbuild/linux-mips64el@0.25.11': 345 + resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} 346 + engines: {node: '>=18'} 347 + cpu: [mips64el] 348 + os: [linux] 349 + 350 + '@esbuild/linux-mips64el@0.25.12': 351 + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} 352 + engines: {node: '>=18'} 353 + cpu: [mips64el] 354 + os: [linux] 355 + 356 + '@esbuild/linux-ppc64@0.25.11': 357 + resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} 358 + engines: {node: '>=18'} 359 + cpu: [ppc64] 360 + os: [linux] 361 + 362 + '@esbuild/linux-ppc64@0.25.12': 363 + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} 364 + engines: {node: '>=18'} 365 + cpu: [ppc64] 366 + os: [linux] 367 + 368 + '@esbuild/linux-riscv64@0.25.11': 369 + resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} 370 + engines: {node: '>=18'} 371 + cpu: [riscv64] 372 + os: [linux] 373 + 374 + '@esbuild/linux-riscv64@0.25.12': 375 + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} 376 + engines: {node: '>=18'} 377 + cpu: [riscv64] 378 + os: [linux] 379 + 380 + '@esbuild/linux-s390x@0.25.11': 381 + resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} 382 + engines: {node: '>=18'} 383 + cpu: [s390x] 384 + os: [linux] 385 + 386 + '@esbuild/linux-s390x@0.25.12': 387 + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} 388 + engines: {node: '>=18'} 389 + cpu: [s390x] 390 + os: [linux] 391 + 392 + '@esbuild/linux-x64@0.25.11': 393 + resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} 394 + engines: {node: '>=18'} 395 + cpu: [x64] 396 + os: [linux] 397 + 398 + '@esbuild/linux-x64@0.25.12': 399 + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} 400 + engines: {node: '>=18'} 401 + cpu: [x64] 402 + os: [linux] 403 + 404 + '@esbuild/netbsd-arm64@0.25.11': 405 + resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} 406 + engines: {node: '>=18'} 407 + cpu: [arm64] 408 + os: [netbsd] 409 + 410 + '@esbuild/netbsd-arm64@0.25.12': 411 + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} 412 + engines: {node: '>=18'} 413 + cpu: [arm64] 414 + os: [netbsd] 415 + 416 + '@esbuild/netbsd-x64@0.25.11': 417 + resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} 418 + engines: {node: '>=18'} 419 + cpu: [x64] 420 + os: [netbsd] 421 + 422 + '@esbuild/netbsd-x64@0.25.12': 423 + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} 424 + engines: {node: '>=18'} 425 + cpu: [x64] 426 + os: [netbsd] 427 + 428 + '@esbuild/openbsd-arm64@0.25.11': 429 + resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} 430 + engines: {node: '>=18'} 431 + cpu: [arm64] 432 + os: [openbsd] 433 + 434 + '@esbuild/openbsd-arm64@0.25.12': 435 + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} 436 + engines: {node: '>=18'} 437 + cpu: [arm64] 438 + os: [openbsd] 439 + 440 + '@esbuild/openbsd-x64@0.25.11': 441 + resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} 442 + engines: {node: '>=18'} 443 + cpu: [x64] 444 + os: [openbsd] 445 + 446 + '@esbuild/openbsd-x64@0.25.12': 447 + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} 448 + engines: {node: '>=18'} 449 + cpu: [x64] 450 + os: [openbsd] 451 + 452 + '@esbuild/openharmony-arm64@0.25.11': 453 + resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} 454 + engines: {node: '>=18'} 455 + cpu: [arm64] 456 + os: [openharmony] 457 + 458 + '@esbuild/openharmony-arm64@0.25.12': 459 + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} 460 + engines: {node: '>=18'} 461 + cpu: [arm64] 462 + os: [openharmony] 463 + 464 + '@esbuild/sunos-x64@0.25.11': 465 + resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} 466 + engines: {node: '>=18'} 467 + cpu: [x64] 468 + os: [sunos] 469 + 470 + '@esbuild/sunos-x64@0.25.12': 471 + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} 472 + engines: {node: '>=18'} 473 + cpu: [x64] 474 + os: [sunos] 475 + 476 + '@esbuild/win32-arm64@0.25.11': 477 + resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} 478 + engines: {node: '>=18'} 479 + cpu: [arm64] 480 + os: [win32] 481 + 482 + '@esbuild/win32-arm64@0.25.12': 483 + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} 484 + engines: {node: '>=18'} 485 + cpu: [arm64] 486 + os: [win32] 487 + 488 + '@esbuild/win32-ia32@0.25.11': 489 + resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} 490 + engines: {node: '>=18'} 491 + cpu: [ia32] 492 + os: [win32] 493 + 494 + '@esbuild/win32-ia32@0.25.12': 495 + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} 496 + engines: {node: '>=18'} 497 + cpu: [ia32] 498 + os: [win32] 499 + 500 + '@esbuild/win32-x64@0.25.11': 501 + resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} 502 + engines: {node: '>=18'} 503 + cpu: [x64] 504 + os: [win32] 505 + 506 + '@esbuild/win32-x64@0.25.12': 507 + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} 508 + engines: {node: '>=18'} 509 + cpu: [x64] 510 + os: [win32] 511 + 512 + '@fastify/accept-negotiator@2.0.1': 513 + resolution: {integrity: sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==} 514 + 515 + '@fastify/busboy@3.2.0': 516 + resolution: {integrity: sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==} 517 + 518 + '@humanwhocodes/momoa@2.0.4': 519 + resolution: {integrity: sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA==} 520 + engines: {node: '>=10.10.0'} 521 + 522 + '@iarna/toml@2.2.5': 523 + resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} 524 + 525 + '@img/colour@1.0.0': 526 + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} 527 + engines: {node: '>=18'} 528 + 529 + '@img/sharp-darwin-arm64@0.34.5': 530 + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} 531 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 532 + cpu: [arm64] 533 + os: [darwin] 534 + 535 + '@img/sharp-darwin-x64@0.34.5': 536 + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} 537 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 538 + cpu: [x64] 539 + os: [darwin] 540 + 541 + '@img/sharp-libvips-darwin-arm64@1.2.4': 542 + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} 543 + cpu: [arm64] 544 + os: [darwin] 545 + 546 + '@img/sharp-libvips-darwin-x64@1.2.4': 547 + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} 548 + cpu: [x64] 549 + os: [darwin] 550 + 551 + '@img/sharp-libvips-linux-arm64@1.2.4': 552 + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} 553 + cpu: [arm64] 554 + os: [linux] 555 + 556 + '@img/sharp-libvips-linux-arm@1.2.4': 557 + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} 558 + cpu: [arm] 559 + os: [linux] 560 + 561 + '@img/sharp-libvips-linux-ppc64@1.2.4': 562 + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} 563 + cpu: [ppc64] 564 + os: [linux] 565 + 566 + '@img/sharp-libvips-linux-riscv64@1.2.4': 567 + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} 568 + cpu: [riscv64] 569 + os: [linux] 570 + 571 + '@img/sharp-libvips-linux-s390x@1.2.4': 572 + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} 573 + cpu: [s390x] 574 + os: [linux] 575 + 576 + '@img/sharp-libvips-linux-x64@1.2.4': 577 + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} 578 + cpu: [x64] 579 + os: [linux] 580 + 581 + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': 582 + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} 583 + cpu: [arm64] 584 + os: [linux] 585 + 586 + '@img/sharp-libvips-linuxmusl-x64@1.2.4': 587 + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} 588 + cpu: [x64] 589 + os: [linux] 590 + 591 + '@img/sharp-linux-arm64@0.34.5': 592 + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} 593 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 594 + cpu: [arm64] 595 + os: [linux] 596 + 597 + '@img/sharp-linux-arm@0.34.5': 598 + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} 599 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 600 + cpu: [arm] 601 + os: [linux] 602 + 603 + '@img/sharp-linux-ppc64@0.34.5': 604 + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} 605 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 606 + cpu: [ppc64] 607 + os: [linux] 608 + 609 + '@img/sharp-linux-riscv64@0.34.5': 610 + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} 611 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 612 + cpu: [riscv64] 613 + os: [linux] 614 + 615 + '@img/sharp-linux-s390x@0.34.5': 616 + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} 617 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 618 + cpu: [s390x] 619 + os: [linux] 620 + 621 + '@img/sharp-linux-x64@0.34.5': 622 + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} 623 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 624 + cpu: [x64] 625 + os: [linux] 626 + 627 + '@img/sharp-linuxmusl-arm64@0.34.5': 628 + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} 629 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 630 + cpu: [arm64] 631 + os: [linux] 632 + 633 + '@img/sharp-linuxmusl-x64@0.34.5': 634 + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} 635 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 636 + cpu: [x64] 637 + os: [linux] 638 + 639 + '@img/sharp-wasm32@0.34.5': 640 + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} 641 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 642 + cpu: [wasm32] 643 + 644 + '@img/sharp-win32-arm64@0.34.5': 645 + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} 646 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 647 + cpu: [arm64] 648 + os: [win32] 649 + 650 + '@img/sharp-win32-ia32@0.34.5': 651 + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} 652 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 653 + cpu: [ia32] 654 + os: [win32] 655 + 656 + '@img/sharp-win32-x64@0.34.5': 657 + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} 658 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 659 + cpu: [x64] 660 + os: [win32] 661 + 662 + '@import-maps/resolve@2.0.0': 663 + resolution: {integrity: sha512-RwzRTpmrrS6Q1ZhQExwuxJGK1Wqhv4stt+OF2JzS+uawewpwNyU7EJL1WpBex7aDiiGLs4FsXGkfUBdYuX7xiQ==} 664 + 665 + '@inquirer/external-editor@1.0.3': 666 + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} 667 + engines: {node: '>=18'} 668 + peerDependencies: 669 + '@types/node': '>=18' 670 + peerDependenciesMeta: 671 + '@types/node': 672 + optional: true 673 + 674 + '@isaacs/cliui@8.0.2': 675 + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 676 + engines: {node: '>=12'} 677 + 678 + '@isaacs/fs-minipass@4.0.1': 679 + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} 680 + engines: {node: '>=18.0.0'} 681 + 682 + '@jridgewell/gen-mapping@0.3.13': 683 + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} 135 684 136 685 '@jridgewell/resolve-uri@3.1.2': 137 686 resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 138 687 engines: {node: '>=6.0.0'} 139 688 140 - '@jridgewell/set-array@1.2.1': 141 - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 142 - engines: {node: '>=6.0.0'} 143 - 144 - '@jridgewell/sourcemap-codec@1.5.0': 145 - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 689 + '@jridgewell/sourcemap-codec@1.5.5': 690 + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 146 691 147 - '@jridgewell/trace-mapping@0.3.25': 148 - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 692 + '@jridgewell/trace-mapping@0.3.31': 693 + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} 149 694 150 695 '@manypkg/find-root@1.1.0': 151 696 resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} ··· 153 698 '@manypkg/get-packages@1.1.3': 154 699 resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} 155 700 701 + '@mapbox/node-pre-gyp@2.0.0': 702 + resolution: {integrity: sha512-llMXd39jtP0HpQLVI37Bf1m2ADlEb35GYSh1SDSLsBhR+5iCxiNGlT31yqbNtVHygHAtMy6dWFERpU2JgufhPg==} 703 + engines: {node: '>=18'} 704 + hasBin: true 705 + 706 + '@netlify/api@14.0.10': 707 + resolution: {integrity: sha512-2zPdZzayOGMff/atHyNE8y060R/PuWfvsFzywe9cW2hLzfJtYy1+hFFrfZS6a1KL5RkqsAFd8OBEO0s+ospDWA==} 708 + engines: {node: '>=18.14.0'} 709 + 710 + '@netlify/binary-info@1.0.0': 711 + resolution: {integrity: sha512-4wMPu9iN3/HL97QblBsBay3E1etIciR84izI3U+4iALY+JHCrI+a2jO0qbAZ/nxKoegypYEaiiqWXylm+/zfrw==} 712 + 713 + '@netlify/blobs@10.1.0': 714 + resolution: {integrity: sha512-dFpqDc6/x5LEu9L7kblCQu00CFEchH8J42jmQoXPuhKoE7avajzeLTbVKA8Olk3S/c2m9ejegrgbhL8NRA2Jyw==} 715 + engines: {node: ^14.16.0 || >=16.0.0} 716 + 717 + '@netlify/blobs@10.3.3': 718 + resolution: {integrity: sha512-yhw0AxB/Felk0KlWtCAqxWcV4xchPumxdlpmdJWlxkVQPoOR7dTPwXsQ6Y4W46oA83QaDD6Rgroi3OKbvg5OBQ==} 719 + engines: {node: ^14.16.0 || >=16.0.0} 720 + 721 + '@netlify/cache@3.3.2': 722 + resolution: {integrity: sha512-huN+315qooeJahkFimqgSt/evYrrS4szwJE66m5TKoAlI0QnrYp7Ct2WlWbMnFf8MdCjgkMvBL02xqRKqQyVBg==} 723 + engines: {node: '>=20.6.1'} 724 + 725 + '@netlify/config@23.2.0': 726 + resolution: {integrity: sha512-zlI792/efPUY1XKtBML2OJBgKMyfNQIeGEYibH8SqeDxPjNuCy0qELE0U9Sc6+Ss34XryPBUPdV60tYhSoe6lw==} 727 + engines: {node: '>=18.14.0'} 728 + hasBin: true 729 + 730 + '@netlify/dev-utils@4.3.0': 731 + resolution: {integrity: sha512-vZAL8pMuj3yPQlmHSgyaA/UQFxc6pZgU0LucFJ1+IPWGJtIzBXHRvuR4acpoP72HtyQPUHJ42s7U9GaaSGVNHg==} 732 + engines: {node: ^18.14.0 || >=20} 733 + 734 + '@netlify/dev-utils@4.3.1': 735 + resolution: {integrity: sha512-ErQgiGOxGlHLuu29+pOPhBNJ+ak9thbhZ9/9zI/hbr732S8CNVDGAU2N0DC59Mrl9/HjLetFoXxsCBDeQzaeqg==} 736 + engines: {node: ^18.14.0 || >=20} 737 + 738 + '@netlify/dev@4.7.1': 739 + resolution: {integrity: sha512-nPOTSDl+ZmeymWguJ81ALhO/WueJM/WCq+XH9ZuSD/KQlxVbhaP6FhQh9+V7nyMpjzx/xAnXHZuI8MbHi+5Caw==} 740 + engines: {node: '>=20.6.1'} 741 + 742 + '@netlify/edge-bundler@14.8.6': 743 + resolution: {integrity: sha512-2Dm6V7BP/p6bt+BP5I5sNUU3+4iweUuEczmoxUWDn2N1slZdDnh9RvdVDWxS3G0zaN0H6SLPOE2X74dS7dslRQ==} 744 + engines: {node: '>=18.14.0'} 745 + 746 + '@netlify/edge-functions-bootstrap@2.16.0': 747 + resolution: {integrity: sha512-v8QQihSbBHj3JxtJsHoepXALpNumD9M7egHoc8z62FYl5it34dWczkaJoFFopEyhiBVKi4K/n0ZYpdzwfujd6g==} 748 + 749 + '@netlify/edge-functions-dev@1.0.4': 750 + resolution: {integrity: sha512-X45vVpOZQGQCCDf9/Y6+4U/iqwc6MBrmRhZtO5rjErbJe+qy1MVQSn7pKxYSshBqhOSfx2ff4XTyuK0rn0qfPA==} 751 + engines: {node: '>=20.6.1'} 752 + 753 + '@netlify/edge-functions@3.0.2': 754 + resolution: {integrity: sha512-1vW3R+Rc2JxL6qITndlT87N94GPjJ6gH2ntXW3IDdLzSABoU9XCHw4lRzDw+bhgSLTm0oyOwQA2+hhFvstznNQ==} 755 + engines: {node: '>=18.0.0'} 756 + 757 + '@netlify/functions-dev@1.1.0': 758 + resolution: {integrity: sha512-dJcYL+g2Ao80q9YJW+HsQI4uG10xDI0ad2meaoE+JRTHep38kW6Nf4cwMzH7SkoSqt4Rovpys3JaW1Dvbbu9Cg==} 759 + engines: {node: '>=20.6.1'} 760 + 761 + '@netlify/functions@4.3.0': 762 + resolution: {integrity: sha512-m00J4hO/AL+1mAD4jCia1kg2jIoO3S9+DXCge58n5tTqPlWt42Vgig5zm0ICJoAyjMKw2bGzfVw9a/s/x6d1+Q==} 763 + engines: {node: '>=18.0.0'} 764 + 765 + '@netlify/functions@5.1.0': 766 + resolution: {integrity: sha512-LZtiQtf/QzPHIeNDZuIBxx04kmU7lCipWqZ26ejX7mYSB3yj2wvpZfF49kD8B8FoKTydSvgFmBpIcCO5FvpEXA==} 767 + engines: {node: '>=18.0.0'} 768 + 769 + '@netlify/headers-parser@9.0.2': 770 + resolution: {integrity: sha512-86YEGPxVemhksY1LeSr8NSOyH11RHvYHq+FuBJnTlPZoRDX+TD+0TAxF6lwzAgVTd1VPkyFEHlNgUGqw7aNzRQ==} 771 + engines: {node: '>=18.14.0'} 772 + 773 + '@netlify/headers@2.1.1': 774 + resolution: {integrity: sha512-FVt59N2g/zCHFQKz4TencQxCse/cvBZ5dTho9Mq45FtGoHXvGpyf48JIlO5+niUTYSgZgELicaVoj7KjG8T4nw==} 775 + engines: {node: '>=20.6.1'} 776 + 777 + '@netlify/images@1.3.1': 778 + resolution: {integrity: sha512-mS5kpRf+Cwmit7SWNww4h52W7ezz2ep7o/lc0Bgs2tRGMVC2lH1iyprxlda0mLNvPpFec/CeFQhkQJ2clDHZIA==} 779 + engines: {node: '>=20.6.1'} 780 + 781 + '@netlify/open-api@2.43.1': 782 + resolution: {integrity: sha512-MPhzLfVVTzQCs9iIjxxgIoXv6/tE2FVHTFT2gi4leChj5o4DQ9an/6gc1q7QPRXeIuPIb+P6AaYi3TGHf8vsBA==} 783 + engines: {node: '>=14.8.0'} 784 + 785 + '@netlify/otel@4.3.2': 786 + resolution: {integrity: sha512-979piAUQd2UINkfy951JFUFWvscXl+t+a57uYX6ViDBlNOhV/UTZGF5THAv1es3qtng8SHFDmOiftO8D/rFEPA==} 787 + engines: {node: ^18.14.0 || >=20.6.1} 788 + 789 + '@netlify/redirect-parser@15.0.3': 790 + resolution: {integrity: sha512-/HB3fcRRNgf6O/pbLn4EYNDHrU2kiadMMnazg8/OjvQK2S9i4y61vQcrICvDxYKUKQdgeEaABUuaCNAJFnfD9w==} 791 + engines: {node: '>=18.14.0'} 792 + 793 + '@netlify/redirects@3.1.2': 794 + resolution: {integrity: sha512-S1ap1CC7HMyaA9imRYRpuY3iZAaAgPEaQ15U9YI6W6273BSUf1jXhaOMv0kAOFX+qtx/yd0LU4Gncko/zpQCSA==} 795 + engines: {node: '>=20.6.1'} 796 + 797 + '@netlify/runtime-utils@2.2.0': 798 + resolution: {integrity: sha512-K3kWIxIMucibzQsATU2xw2JI+OpS9PZfPW/a+81gmeLC8tLv5YAxTVT0NFY/3imk1kcOJb9g7658jPLqDJaiAw==} 799 + engines: {node: ^18.14.0 || >=20} 800 + 801 + '@netlify/runtime-utils@2.2.1': 802 + resolution: {integrity: sha512-dyJeuggzQM8+Dsi0T8Z9UjfLJ6vCmNC36W6WE2aqzfTdTw4wPkh2xlEu4LoD75+TGuYK7jIhEoU2QcCXOzfyAQ==} 803 + engines: {node: ^18.14.0 || >=20} 804 + 805 + '@netlify/runtime@4.1.7': 806 + resolution: {integrity: sha512-VIYQnq275HvYzGKbSCgXWxgfGcB1y0vxWl8qrNHPk0wbXkSIq0PkqID4n7EAwAzxa06K6B4/yFWb1qV9z5RxwA==} 807 + engines: {node: '>=20.6.1'} 808 + 809 + '@netlify/serverless-functions-api@2.7.1': 810 + resolution: {integrity: sha512-NQcLB8BHbIsgSBPk9A/OBR5mGpc6dOAg1iRsYHWK0IoKsvwQ9a7bZc2+E40nE41Mnk24UjfK09vDLxP85O/zwA==} 811 + engines: {node: '>=18.0.0'} 812 + 813 + '@netlify/static@3.1.1': 814 + resolution: {integrity: sha512-zvdsxNOIkL8RyJs6Aqqd0Z2nyzrTmNX9cu8MGIJRuKX6VbF54iS0e5DbAVXMSLae+BDIhPp22XWI64GyJa0EJw==} 815 + engines: {node: '>=20.6.1'} 816 + 817 + '@netlify/types@2.1.0': 818 + resolution: {integrity: sha512-ktUb5d58pt1lQGXO5E9S0F1ljM0g+CoQuGTVII0IxBc0apmPq5RI0o3OWLY7U3ZERRiYTg5UfjiMihBEzuZsuw==} 819 + engines: {node: ^18.14.0 || >=20} 820 + 821 + '@netlify/types@2.2.0': 822 + resolution: {integrity: sha512-XOWlZ2wPpdRKkAOcQbjIf/Qz7L4RjcSVINVNQ9p3F6U8V6KSEOsB3fPrc6Ly8EOeJioHUepRPuzHzJE/7V5EsA==} 823 + engines: {node: ^18.14.0 || >=20} 824 + 825 + '@netlify/vite-plugin@2.7.11': 826 + resolution: {integrity: sha512-0JrP9YDi60qgPGI+OUoTNwIIXqv/EKii0JGxuCC2EqRFDGol02hx9xCBSqm+X71cvZksxIKZdGt7/AIv5dXJbA==} 827 + engines: {node: ^20.6.1 || >=22} 828 + peerDependencies: 829 + vite: ^5 || ^6 || ^7 830 + 831 + '@netlify/zip-it-and-ship-it@14.1.13': 832 + resolution: {integrity: sha512-nemTNQ2HjF5ubGKOMZ0XO9eHayoNJ8F2YahPqHXRQ3VXfwQnXkC8vW1Tvq1OspUsAiFrOyYOYLyw2J4JmpuTtA==} 833 + engines: {node: '>=18.14.0'} 834 + hasBin: true 835 + 156 836 '@nodelib/fs.scandir@2.1.5': 157 837 resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 158 838 engines: {node: '>= 8'} ··· 165 845 resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 166 846 engines: {node: '>= 8'} 167 847 848 + '@opentelemetry/api-logs@0.203.0': 849 + resolution: {integrity: sha512-9B9RU0H7Ya1Dx/Rkyc4stuBZSGVQF27WigitInx2QQoj6KUpEFYPKoWjdFTunJYxmXmh17HeBvbMa1EhGyPmqQ==} 850 + engines: {node: '>=8.0.0'} 851 + 852 + '@opentelemetry/api-logs@0.57.2': 853 + resolution: {integrity: sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==} 854 + engines: {node: '>=14'} 855 + 856 + '@opentelemetry/api@1.9.0': 857 + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} 858 + engines: {node: '>=8.0.0'} 859 + 860 + '@opentelemetry/context-async-hooks@1.30.1': 861 + resolution: {integrity: sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==} 862 + engines: {node: '>=14'} 863 + peerDependencies: 864 + '@opentelemetry/api': '>=1.0.0 <1.10.0' 865 + 866 + '@opentelemetry/core@1.30.1': 867 + resolution: {integrity: sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==} 868 + engines: {node: '>=14'} 869 + peerDependencies: 870 + '@opentelemetry/api': '>=1.0.0 <1.10.0' 871 + 872 + '@opentelemetry/instrumentation@0.203.0': 873 + resolution: {integrity: sha512-ke1qyM+3AK2zPuBPb6Hk/GCsc5ewbLvPNkEuELx/JmANeEp6ZjnZ+wypPAJSucTw0wvCGrUaibDSdcrGFoWxKQ==} 874 + engines: {node: ^18.19.0 || >=20.6.0} 875 + peerDependencies: 876 + '@opentelemetry/api': ^1.3.0 877 + 878 + '@opentelemetry/otlp-transformer@0.57.2': 879 + resolution: {integrity: sha512-48IIRj49gbQVK52jYsw70+Jv+JbahT8BqT2Th7C4H7RCM9d0gZ5sgNPoMpWldmfjvIsSgiGJtjfk9MeZvjhoig==} 880 + engines: {node: '>=14'} 881 + peerDependencies: 882 + '@opentelemetry/api': ^1.3.0 883 + 884 + '@opentelemetry/propagator-b3@1.30.1': 885 + resolution: {integrity: sha512-oATwWWDIJzybAZ4pO76ATN5N6FFbOA1otibAVlS8v90B4S1wClnhRUk7K+2CHAwN1JKYuj4jh/lpCEG5BAqFuQ==} 886 + engines: {node: '>=14'} 887 + peerDependencies: 888 + '@opentelemetry/api': '>=1.0.0 <1.10.0' 889 + 890 + '@opentelemetry/propagator-jaeger@1.30.1': 891 + resolution: {integrity: sha512-Pj/BfnYEKIOImirH76M4hDaBSx6HyZ2CXUqk+Kj02m6BB80c/yo4BdWkn/1gDFfU+YPY+bPR2U0DKBfdxCKwmg==} 892 + engines: {node: '>=14'} 893 + peerDependencies: 894 + '@opentelemetry/api': '>=1.0.0 <1.10.0' 895 + 896 + '@opentelemetry/resources@1.30.1': 897 + resolution: {integrity: sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==} 898 + engines: {node: '>=14'} 899 + peerDependencies: 900 + '@opentelemetry/api': '>=1.0.0 <1.10.0' 901 + 902 + '@opentelemetry/sdk-logs@0.57.2': 903 + resolution: {integrity: sha512-TXFHJ5c+BKggWbdEQ/inpgIzEmS2BGQowLE9UhsMd7YYlUfBQJ4uax0VF/B5NYigdM/75OoJGhAV3upEhK+3gg==} 904 + engines: {node: '>=14'} 905 + peerDependencies: 906 + '@opentelemetry/api': '>=1.4.0 <1.10.0' 907 + 908 + '@opentelemetry/sdk-metrics@1.30.1': 909 + resolution: {integrity: sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==} 910 + engines: {node: '>=14'} 911 + peerDependencies: 912 + '@opentelemetry/api': '>=1.3.0 <1.10.0' 913 + 914 + '@opentelemetry/sdk-trace-base@1.30.1': 915 + resolution: {integrity: sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==} 916 + engines: {node: '>=14'} 917 + peerDependencies: 918 + '@opentelemetry/api': '>=1.0.0 <1.10.0' 919 + 920 + '@opentelemetry/sdk-trace-node@1.30.1': 921 + resolution: {integrity: sha512-cBjYOINt1JxXdpw1e5MlHmFRc5fgj4GW/86vsKFxJCJ8AL4PdVtYH41gWwl4qd4uQjqEL1oJVrXkSy5cnduAnQ==} 922 + engines: {node: '>=14'} 923 + peerDependencies: 924 + '@opentelemetry/api': '>=1.0.0 <1.10.0' 925 + 926 + '@opentelemetry/semantic-conventions@1.28.0': 927 + resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==} 928 + engines: {node: '>=14'} 929 + 930 + '@oslojs/encoding@1.1.0': 931 + resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} 932 + 933 + '@parcel/watcher-android-arm64@2.5.1': 934 + resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} 935 + engines: {node: '>= 10.0.0'} 936 + cpu: [arm64] 937 + os: [android] 938 + 939 + '@parcel/watcher-darwin-arm64@2.5.1': 940 + resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} 941 + engines: {node: '>= 10.0.0'} 942 + cpu: [arm64] 943 + os: [darwin] 944 + 945 + '@parcel/watcher-darwin-x64@2.5.1': 946 + resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} 947 + engines: {node: '>= 10.0.0'} 948 + cpu: [x64] 949 + os: [darwin] 950 + 951 + '@parcel/watcher-freebsd-x64@2.5.1': 952 + resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} 953 + engines: {node: '>= 10.0.0'} 954 + cpu: [x64] 955 + os: [freebsd] 956 + 957 + '@parcel/watcher-linux-arm-glibc@2.5.1': 958 + resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} 959 + engines: {node: '>= 10.0.0'} 960 + cpu: [arm] 961 + os: [linux] 962 + 963 + '@parcel/watcher-linux-arm-musl@2.5.1': 964 + resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} 965 + engines: {node: '>= 10.0.0'} 966 + cpu: [arm] 967 + os: [linux] 968 + 969 + '@parcel/watcher-linux-arm64-glibc@2.5.1': 970 + resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} 971 + engines: {node: '>= 10.0.0'} 972 + cpu: [arm64] 973 + os: [linux] 974 + 975 + '@parcel/watcher-linux-arm64-musl@2.5.1': 976 + resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} 977 + engines: {node: '>= 10.0.0'} 978 + cpu: [arm64] 979 + os: [linux] 980 + 981 + '@parcel/watcher-linux-x64-glibc@2.5.1': 982 + resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} 983 + engines: {node: '>= 10.0.0'} 984 + cpu: [x64] 985 + os: [linux] 986 + 987 + '@parcel/watcher-linux-x64-musl@2.5.1': 988 + resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} 989 + engines: {node: '>= 10.0.0'} 990 + cpu: [x64] 991 + os: [linux] 992 + 993 + '@parcel/watcher-wasm@2.5.1': 994 + resolution: {integrity: sha512-RJxlQQLkaMMIuWRozy+z2vEqbaQlCuaCgVZIUCzQLYggY22LZbP5Y1+ia+FD724Ids9e+XIyOLXLrLgQSHIthw==} 995 + engines: {node: '>= 10.0.0'} 996 + bundledDependencies: 997 + - napi-wasm 998 + 999 + '@parcel/watcher-win32-arm64@2.5.1': 1000 + resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} 1001 + engines: {node: '>= 10.0.0'} 1002 + cpu: [arm64] 1003 + os: [win32] 1004 + 1005 + '@parcel/watcher-win32-ia32@2.5.1': 1006 + resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} 1007 + engines: {node: '>= 10.0.0'} 1008 + cpu: [ia32] 1009 + os: [win32] 1010 + 1011 + '@parcel/watcher-win32-x64@2.5.1': 1012 + resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} 1013 + engines: {node: '>= 10.0.0'} 1014 + cpu: [x64] 1015 + os: [win32] 1016 + 1017 + '@parcel/watcher@2.5.1': 1018 + resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} 1019 + engines: {node: '>= 10.0.0'} 1020 + 1021 + '@pkgjs/parseargs@0.11.0': 1022 + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 1023 + engines: {node: '>=14'} 1024 + 1025 + '@protobufjs/aspromise@1.1.2': 1026 + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} 1027 + 1028 + '@protobufjs/base64@1.1.2': 1029 + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} 1030 + 1031 + '@protobufjs/codegen@2.0.4': 1032 + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} 1033 + 1034 + '@protobufjs/eventemitter@1.1.0': 1035 + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} 1036 + 1037 + '@protobufjs/fetch@1.1.0': 1038 + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} 1039 + 1040 + '@protobufjs/float@1.0.2': 1041 + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} 1042 + 1043 + '@protobufjs/inquire@1.1.0': 1044 + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} 1045 + 1046 + '@protobufjs/path@1.1.2': 1047 + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} 1048 + 1049 + '@protobufjs/pool@1.1.0': 1050 + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} 1051 + 1052 + '@protobufjs/utf8@1.1.0': 1053 + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} 1054 + 1055 + '@rollup/pluginutils@5.3.0': 1056 + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} 1057 + engines: {node: '>=14.0.0'} 1058 + peerDependencies: 1059 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 1060 + peerDependenciesMeta: 1061 + rollup: 1062 + optional: true 1063 + 1064 + '@rollup/rollup-android-arm-eabi@4.53.1': 1065 + resolution: {integrity: sha512-bxZtughE4VNVJlL1RdoSE545kc4JxL7op57KKoi59/gwuU5rV6jLWFXXc8jwgFoT6vtj+ZjO+Z2C5nrY0Cl6wA==} 1066 + cpu: [arm] 1067 + os: [android] 1068 + 1069 + '@rollup/rollup-android-arm64@4.53.1': 1070 + resolution: {integrity: sha512-44a1hreb02cAAfAKmZfXVercPFaDjqXCK+iKeVOlJ9ltvnO6QqsBHgKVPTu+MJHSLLeMEUbeG2qiDYgbFPU48g==} 1071 + cpu: [arm64] 1072 + os: [android] 1073 + 1074 + '@rollup/rollup-darwin-arm64@4.53.1': 1075 + resolution: {integrity: sha512-usmzIgD0rf1syoOZ2WZvy8YpXK5G1V3btm3QZddoGSa6mOgfXWkkv+642bfUUldomgrbiLQGrPryb7DXLovPWQ==} 1076 + cpu: [arm64] 1077 + os: [darwin] 1078 + 1079 + '@rollup/rollup-darwin-x64@4.53.1': 1080 + resolution: {integrity: sha512-is3r/k4vig2Gt8mKtTlzzyaSQ+hd87kDxiN3uDSDwggJLUV56Umli6OoL+/YZa/KvtdrdyNfMKHzL/P4siOOmg==} 1081 + cpu: [x64] 1082 + os: [darwin] 1083 + 1084 + '@rollup/rollup-freebsd-arm64@4.53.1': 1085 + resolution: {integrity: sha512-QJ1ksgp/bDJkZB4daldVmHaEQkG4r8PUXitCOC2WRmRaSaHx5RwPoI3DHVfXKwDkB+Sk6auFI/+JHacTekPRSw==} 1086 + cpu: [arm64] 1087 + os: [freebsd] 1088 + 1089 + '@rollup/rollup-freebsd-x64@4.53.1': 1090 + resolution: {integrity: sha512-J6ma5xgAzvqsnU6a0+jgGX/gvoGokqpkx6zY4cWizRrm0ffhHDpJKQgC8dtDb3+MqfZDIqs64REbfHDMzxLMqQ==} 1091 + cpu: [x64] 1092 + os: [freebsd] 1093 + 1094 + '@rollup/rollup-linux-arm-gnueabihf@4.53.1': 1095 + resolution: {integrity: sha512-JzWRR41o2U3/KMNKRuZNsDUAcAVUYhsPuMlx5RUldw0E4lvSIXFUwejtYz1HJXohUmqs/M6BBJAUBzKXZVddbg==} 1096 + cpu: [arm] 1097 + os: [linux] 1098 + 1099 + '@rollup/rollup-linux-arm-musleabihf@4.53.1': 1100 + resolution: {integrity: sha512-L8kRIrnfMrEoHLHtHn+4uYA52fiLDEDyezgxZtGUTiII/yb04Krq+vk3P2Try+Vya9LeCE9ZHU8CXD6J9EhzHQ==} 1101 + cpu: [arm] 1102 + os: [linux] 1103 + 1104 + '@rollup/rollup-linux-arm64-gnu@4.53.1': 1105 + resolution: {integrity: sha512-ysAc0MFRV+WtQ8li8hi3EoFi7us6d1UzaS/+Dp7FYZfg3NdDljGMoVyiIp6Ucz7uhlYDBZ/zt6XI0YEZbUO11Q==} 1106 + cpu: [arm64] 1107 + os: [linux] 1108 + 1109 + '@rollup/rollup-linux-arm64-musl@4.53.1': 1110 + resolution: {integrity: sha512-UV6l9MJpDbDZZ/fJvqNcvO1PcivGEf1AvKuTcHoLjVZVFeAMygnamCTDikCVMRnA+qJe+B3pSbgX2+lBMqgBhA==} 1111 + cpu: [arm64] 1112 + os: [linux] 1113 + 1114 + '@rollup/rollup-linux-loong64-gnu@4.53.1': 1115 + resolution: {integrity: sha512-UDUtelEprkA85g95Q+nj3Xf0M4hHa4DiJ+3P3h4BuGliY4NReYYqwlc0Y8ICLjN4+uIgCEvaygYlpf0hUj90Yg==} 1116 + cpu: [loong64] 1117 + os: [linux] 1118 + 1119 + '@rollup/rollup-linux-ppc64-gnu@4.53.1': 1120 + resolution: {integrity: sha512-vrRn+BYhEtNOte/zbc2wAUQReJXxEx2URfTol6OEfY2zFEUK92pkFBSXRylDM7aHi+YqEPJt9/ABYzmcrS4SgQ==} 1121 + cpu: [ppc64] 1122 + os: [linux] 1123 + 1124 + '@rollup/rollup-linux-riscv64-gnu@4.53.1': 1125 + resolution: {integrity: sha512-gto/1CxHyi4A7YqZZNznQYrVlPSaodOBPKM+6xcDSCMVZN/Fzb4K+AIkNz/1yAYz9h3Ng+e2fY9H6bgawVq17w==} 1126 + cpu: [riscv64] 1127 + os: [linux] 1128 + 1129 + '@rollup/rollup-linux-riscv64-musl@4.53.1': 1130 + resolution: {integrity: sha512-KZ6Vx7jAw3aLNjFR8eYVcQVdFa/cvBzDNRFM3z7XhNNunWjA03eUrEwJYPk0G8V7Gs08IThFKcAPS4WY/ybIrQ==} 1131 + cpu: [riscv64] 1132 + os: [linux] 1133 + 1134 + '@rollup/rollup-linux-s390x-gnu@4.53.1': 1135 + resolution: {integrity: sha512-HvEixy2s/rWNgpwyKpXJcHmE7om1M89hxBTBi9Fs6zVuLU4gOrEMQNbNsN/tBVIMbLyysz/iwNiGtMOpLAOlvA==} 1136 + cpu: [s390x] 1137 + os: [linux] 1138 + 1139 + '@rollup/rollup-linux-x64-gnu@4.53.1': 1140 + resolution: {integrity: sha512-E/n8x2MSjAQgjj9IixO4UeEUeqXLtiA7pyoXCFYLuXpBA/t2hnbIdxHfA7kK9BFsYAoNU4st1rHYdldl8dTqGA==} 1141 + cpu: [x64] 1142 + os: [linux] 1143 + 1144 + '@rollup/rollup-linux-x64-musl@4.53.1': 1145 + resolution: {integrity: sha512-IhJ087PbLOQXCN6Ui/3FUkI9pWNZe/Z7rEIVOzMsOs1/HSAECCvSZ7PkIbkNqL/AZn6WbZvnoVZw/qwqYMo4/w==} 1146 + cpu: [x64] 1147 + os: [linux] 1148 + 1149 + '@rollup/rollup-openharmony-arm64@4.53.1': 1150 + resolution: {integrity: sha512-0++oPNgLJHBblreu0SFM7b3mAsBJBTY0Ksrmu9N6ZVrPiTkRgda52mWR7TKhHAsUb9noCjFvAw9l6ZO1yzaVbA==} 1151 + cpu: [arm64] 1152 + os: [openharmony] 1153 + 1154 + '@rollup/rollup-win32-arm64-msvc@4.53.1': 1155 + resolution: {integrity: sha512-VJXivz61c5uVdbmitLkDlbcTk9Or43YC2QVLRkqp86QoeFSqI81bNgjhttqhKNMKnQMWnecOCm7lZz4s+WLGpQ==} 1156 + cpu: [arm64] 1157 + os: [win32] 1158 + 1159 + '@rollup/rollup-win32-ia32-msvc@4.53.1': 1160 + resolution: {integrity: sha512-NmZPVTUOitCXUH6erJDzTQ/jotYw4CnkMDjCYRxNHVD9bNyfrGoIse684F9okwzKCV4AIHRbUkeTBc9F2OOH5Q==} 1161 + cpu: [ia32] 1162 + os: [win32] 1163 + 1164 + '@rollup/rollup-win32-x64-gnu@4.53.1': 1165 + resolution: {integrity: sha512-2SNj7COIdAf6yliSpLdLG8BEsp5lgzRehgfkP0Av8zKfQFKku6JcvbobvHASPJu4f3BFxej5g+HuQPvqPhHvpQ==} 1166 + cpu: [x64] 1167 + os: [win32] 1168 + 1169 + '@rollup/rollup-win32-x64-msvc@4.53.1': 1170 + resolution: {integrity: sha512-rLarc1Ofcs3DHtgSzFO31pZsCh8g05R2azN1q3fF+H423Co87My0R+tazOEvYVKXSLh8C4LerMK41/K7wlklcg==} 1171 + cpu: [x64] 1172 + os: [win32] 1173 + 1174 + '@shikijs/core@3.15.0': 1175 + resolution: {integrity: sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg==} 1176 + 1177 + '@shikijs/engine-javascript@3.15.0': 1178 + resolution: {integrity: sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg==} 1179 + 1180 + '@shikijs/engine-oniguruma@3.15.0': 1181 + resolution: {integrity: sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA==} 1182 + 1183 + '@shikijs/langs@3.15.0': 1184 + resolution: {integrity: sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A==} 1185 + 1186 + '@shikijs/themes@3.15.0': 1187 + resolution: {integrity: sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ==} 1188 + 1189 + '@shikijs/types@3.15.0': 1190 + resolution: {integrity: sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw==} 1191 + 1192 + '@shikijs/vscode-textmate@10.0.2': 1193 + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} 1194 + 1195 + '@so-ric/colorspace@1.1.6': 1196 + resolution: {integrity: sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==} 1197 + 1198 + '@swc/helpers@0.5.17': 1199 + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} 1200 + 168 1201 '@trivago/prettier-plugin-sort-imports@5.2.2': 169 1202 resolution: {integrity: sha512-fYDQA9e6yTNmA13TLVSA+WMQRc5Bn/c0EUBditUHNfMMxN7M82c38b1kEggVE3pLpZ0FwkwJkUEKMiOi52JXFA==} 170 1203 engines: {node: '>18.12'} ··· 181 1214 svelte: 182 1215 optional: true 183 1216 1217 + '@types/culori@4.0.1': 1218 + resolution: {integrity: sha512-43M51r/22CjhbOXyGT361GZ9vncSVQ39u62x5eJdBQFviI8zWp2X5jzqg7k4M6PVgDQAClpy2bUe2dtwEgEDVQ==} 1219 + 1220 + '@types/debug@4.1.12': 1221 + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} 1222 + 1223 + '@types/estree@1.0.8': 1224 + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 1225 + 1226 + '@types/fontkit@2.0.8': 1227 + resolution: {integrity: sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==} 1228 + 1229 + '@types/hast@3.0.4': 1230 + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} 1231 + 1232 + '@types/mdast@4.0.4': 1233 + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} 1234 + 1235 + '@types/ms@2.1.0': 1236 + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} 1237 + 1238 + '@types/nlcst@2.0.3': 1239 + resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} 1240 + 184 1241 '@types/node@12.20.55': 185 1242 resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} 186 1243 1244 + '@types/node@20.19.24': 1245 + resolution: {integrity: sha512-FE5u0ezmi6y9OZEzlJfg37mqqf6ZDSF2V/NLjUyGrR9uTZ7Sb9F7bLNZ03S4XVUNRWGA7Ck4c1kK+YnuWjl+DA==} 1246 + 1247 + '@types/normalize-package-data@2.4.4': 1248 + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} 1249 + 1250 + '@types/retry@0.12.2': 1251 + resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} 1252 + 1253 + '@types/triple-beam@1.3.5': 1254 + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} 1255 + 1256 + '@types/unist@3.0.3': 1257 + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} 1258 + 1259 + '@types/yauzl@2.10.3': 1260 + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} 1261 + 1262 + '@typescript-eslint/project-service@8.46.3': 1263 + resolution: {integrity: sha512-Fz8yFXsp2wDFeUElO88S9n4w1I4CWDTXDqDr9gYvZgUpwXQqmZBr9+NTTql5R3J7+hrJZPdpiWaB9VNhAKYLuQ==} 1264 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1265 + peerDependencies: 1266 + typescript: '>=4.8.4 <6.0.0' 1267 + 1268 + '@typescript-eslint/tsconfig-utils@8.46.3': 1269 + resolution: {integrity: sha512-GLupljMniHNIROP0zE7nCcybptolcH8QZfXOpCfhQDAdwJ/ZTlcaBOYebSOZotpti/3HrHSw7D3PZm75gYFsOA==} 1270 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1271 + peerDependencies: 1272 + typescript: '>=4.8.4 <6.0.0' 1273 + 1274 + '@typescript-eslint/types@8.46.3': 1275 + resolution: {integrity: sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA==} 1276 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1277 + 1278 + '@typescript-eslint/typescript-estree@8.46.3': 1279 + resolution: {integrity: sha512-f/NvtRjOm80BtNM5OQtlaBdM5BRFUv7gf381j9wygDNL+qOYSNOgtQ/DCndiYi80iIOv76QqaTmp4fa9hwI0OA==} 1280 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1281 + peerDependencies: 1282 + typescript: '>=4.8.4 <6.0.0' 1283 + 1284 + '@typescript-eslint/visitor-keys@8.46.3': 1285 + resolution: {integrity: sha512-uk574k8IU0rOF/AjniX8qbLSGURJVUCeM5e4MIMKBFFi8weeiLrG1fyQejyLXQpRZbU/1BuQasleV/RfHC3hHg==} 1286 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1287 + 1288 + '@ungap/structured-clone@1.3.0': 1289 + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} 1290 + 1291 + '@vercel/nft@0.29.4': 1292 + resolution: {integrity: sha512-6lLqMNX3TuycBPABycx7A9F1bHQR7kiQln6abjFbPrf5C/05qHM9M5E4PeTE59c7z8g6vHnx1Ioihb2AQl7BTA==} 1293 + engines: {node: '>=18'} 1294 + hasBin: true 1295 + 1296 + '@vercel/nft@0.30.3': 1297 + resolution: {integrity: sha512-UEq+eF0ocEf9WQCV1gktxKhha36KDs7jln5qii6UpPf5clMqDc0p3E7d9l2Smx0i9Pm1qpq4S4lLfNl97bbv6w==} 1298 + engines: {node: '>=18'} 1299 + hasBin: true 1300 + 1301 + '@vue/compiler-core@3.5.24': 1302 + resolution: {integrity: sha512-eDl5H57AOpNakGNAkFDH+y7kTqrQpJkZFXhWZQGyx/5Wh7B1uQYvcWkvZi11BDhscPgj8N7XV3oRwiPnx1Vrig==} 1303 + 1304 + '@vue/compiler-dom@3.5.24': 1305 + resolution: {integrity: sha512-1QHGAvs53gXkWdd3ZMGYuvQFXHW4ksKWPG8HP8/2BscrbZ0brw183q2oNWjMrSWImYLHxHrx1ItBQr50I/q2zw==} 1306 + 1307 + '@vue/compiler-sfc@3.5.24': 1308 + resolution: {integrity: sha512-8EG5YPRgmTB+YxYBM3VXy8zHD9SWHUJLIGPhDovo3Z8VOgvP+O7UP5vl0J4BBPWYD9vxtBabzW1EuEZ+Cqs14g==} 1309 + 1310 + '@vue/compiler-ssr@3.5.24': 1311 + resolution: {integrity: sha512-trOvMWNBMQ/odMRHW7Ae1CdfYx+7MuiQu62Jtu36gMLXcaoqKvAyh+P73sYG9ll+6jLB6QPovqoKGGZROzkFFg==} 1312 + 1313 + '@vue/shared@3.5.24': 1314 + resolution: {integrity: sha512-9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1A==} 1315 + 1316 + '@whatwg-node/disposablestack@0.0.6': 1317 + resolution: {integrity: sha512-LOtTn+JgJvX8WfBVJtF08TGrdjuFzGJc4mkP8EdDI8ADbvO7kiexYep1o8dwnt0okb0jYclCDXF13xU7Ge4zSw==} 1318 + engines: {node: '>=18.0.0'} 1319 + 1320 + '@whatwg-node/fetch@0.10.12': 1321 + resolution: {integrity: sha512-XmsCdDgQxbM8ha7xvIbDQyO/iES2ga0wQcM5sb+mugll1F+IzSshOMPK6n1TuqDDgjTwoU01mMa6oRhHWnpDcw==} 1322 + engines: {node: '>=18.0.0'} 1323 + 1324 + '@whatwg-node/node-fetch@0.8.2': 1325 + resolution: {integrity: sha512-1PihEl0a8hm/AZD/LVRs1lEWCZCo2Q65Xm1goaHeqR314e+/Z7NI7YE10Yser8+2iZFGtv542IYr685o3aaZ/g==} 1326 + engines: {node: '>=18.0.0'} 1327 + 1328 + '@whatwg-node/promise-helpers@1.3.2': 1329 + resolution: {integrity: sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==} 1330 + engines: {node: '>=16.0.0'} 1331 + 1332 + '@whatwg-node/server@0.10.15': 1333 + resolution: {integrity: sha512-/BqffJYRIbX1HfNUZkPvtiSloC3QCvxAYC82g0uo3ruiJ44GOiCGH1q/XWF0/l5tWBvFsgX5VBA8l7IhQkCNfA==} 1334 + engines: {node: '>=18.0.0'} 1335 + 1336 + abbrev@3.0.1: 1337 + resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} 1338 + engines: {node: ^18.17.0 || >=20.5.0} 1339 + 1340 + abort-controller@3.0.0: 1341 + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 1342 + engines: {node: '>=6.5'} 1343 + 1344 + acorn-import-attributes@1.9.5: 1345 + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} 1346 + peerDependencies: 1347 + acorn: ^8 1348 + 1349 + acorn@8.15.0: 1350 + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 1351 + engines: {node: '>=0.4.0'} 1352 + hasBin: true 1353 + 1354 + agent-base@7.1.4: 1355 + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} 1356 + engines: {node: '>= 14'} 1357 + 1358 + ajv-errors@3.0.0: 1359 + resolution: {integrity: sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==} 1360 + peerDependencies: 1361 + ajv: ^8.0.1 1362 + 1363 + ajv@8.17.1: 1364 + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} 1365 + 1366 + ansi-align@3.0.1: 1367 + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} 1368 + 187 1369 ansi-colors@4.1.3: 188 1370 resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 189 1371 engines: {node: '>=6'} ··· 192 1374 resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 193 1375 engines: {node: '>=8'} 194 1376 1377 + ansi-regex@6.2.2: 1378 + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} 1379 + engines: {node: '>=12'} 1380 + 1381 + ansi-styles@4.3.0: 1382 + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 1383 + engines: {node: '>=8'} 1384 + 1385 + ansi-styles@6.2.3: 1386 + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} 1387 + engines: {node: '>=12'} 1388 + 1389 + ansis@4.2.0: 1390 + resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} 1391 + engines: {node: '>=14'} 1392 + 1393 + anymatch@3.1.3: 1394 + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 1395 + engines: {node: '>= 8'} 1396 + 1397 + archiver-utils@5.0.2: 1398 + resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} 1399 + engines: {node: '>= 14'} 1400 + 1401 + archiver@7.0.1: 1402 + resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} 1403 + engines: {node: '>= 14'} 1404 + 195 1405 argparse@1.0.10: 196 1406 resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 197 1407 1408 + argparse@2.0.1: 1409 + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 1410 + 1411 + aria-query@5.3.2: 1412 + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} 1413 + engines: {node: '>= 0.4'} 1414 + 1415 + array-iterate@2.0.1: 1416 + resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} 1417 + 198 1418 array-union@2.1.0: 199 1419 resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 200 1420 engines: {node: '>=8'} 201 1421 1422 + ast-module-types@6.0.1: 1423 + resolution: {integrity: sha512-WHw67kLXYbZuHTmcdbIrVArCq5wxo6NEuj3hiYAWr8mwJeC+C2mMCIBIWCiDoCye/OF/xelc+teJ1ERoWmnEIA==} 1424 + engines: {node: '>=18'} 1425 + 1426 + astro@5.15.4: 1427 + resolution: {integrity: sha512-0g/68hLHEJZF2nYUcZM5O0kOnzCsCIf8eA9+0jfBAxp4ycujrIHRgIOdZCFKL9GoTsn8AypWbziypH5aEIF+aA==} 1428 + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} 1429 + hasBin: true 1430 + 1431 + async-sema@3.1.1: 1432 + resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} 1433 + 1434 + async@3.2.6: 1435 + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} 1436 + 1437 + axobject-query@4.1.0: 1438 + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} 1439 + engines: {node: '>= 0.4'} 1440 + 1441 + b4a@1.7.3: 1442 + resolution: {integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==} 1443 + peerDependencies: 1444 + react-native-b4a: '*' 1445 + peerDependenciesMeta: 1446 + react-native-b4a: 1447 + optional: true 1448 + 1449 + bail@2.0.2: 1450 + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} 1451 + 1452 + balanced-match@1.0.2: 1453 + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1454 + 1455 + bare-events@2.8.2: 1456 + resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} 1457 + peerDependencies: 1458 + bare-abort-controller: '*' 1459 + peerDependenciesMeta: 1460 + bare-abort-controller: 1461 + optional: true 1462 + 1463 + base-64@1.0.0: 1464 + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} 1465 + 1466 + base64-js@1.5.1: 1467 + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 1468 + 1469 + better-ajv-errors@1.2.0: 1470 + resolution: {integrity: sha512-UW+IsFycygIo7bclP9h5ugkNH8EjCSgqyFB/yQ4Hqqa1OEYDtb0uFIkYE0b6+CjkgJYVM5UKI/pJPxjYe9EZlA==} 1471 + engines: {node: '>= 12.13.0'} 1472 + peerDependencies: 1473 + ajv: 4.11.8 - 8 1474 + 202 1475 better-path-resolve@1.0.0: 203 1476 resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 204 1477 engines: {node: '>=4'} 205 1478 1479 + bindings@1.5.0: 1480 + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} 1481 + 1482 + bl@4.1.0: 1483 + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} 1484 + 1485 + boolbase@1.0.0: 1486 + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 1487 + 1488 + boxen@8.0.1: 1489 + resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} 1490 + engines: {node: '>=18'} 1491 + 1492 + brace-expansion@2.0.2: 1493 + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} 1494 + 206 1495 braces@3.0.3: 207 1496 resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 208 1497 engines: {node: '>=8'} 209 1498 210 - chardet@0.7.0: 211 - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} 1499 + brotli@1.3.3: 1500 + resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} 1501 + 1502 + buffer-crc32@0.2.13: 1503 + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} 1504 + 1505 + buffer-crc32@1.0.0: 1506 + resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} 1507 + engines: {node: '>=8.0.0'} 1508 + 1509 + buffer-equal-constant-time@1.0.1: 1510 + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} 1511 + 1512 + buffer-from@1.1.2: 1513 + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 1514 + 1515 + buffer@5.7.1: 1516 + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} 1517 + 1518 + buffer@6.0.3: 1519 + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 1520 + 1521 + callsite@1.0.0: 1522 + resolution: {integrity: sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==} 1523 + 1524 + camelcase@8.0.0: 1525 + resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} 1526 + engines: {node: '>=16'} 1527 + 1528 + canvas@3.2.0: 1529 + resolution: {integrity: sha512-jk0GxrLtUEmW/TmFsk2WghvgHe8B0pxGilqCL21y8lHkPUGa6FTsnCNtHPOzT8O3y+N+m3espawV80bbBlgfTA==} 1530 + engines: {node: ^18.12.0 || >= 20.9.0} 1531 + 1532 + ccount@2.0.1: 1533 + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} 1534 + 1535 + chalk@4.1.2: 1536 + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1537 + engines: {node: '>=10'} 1538 + 1539 + chalk@5.6.2: 1540 + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} 1541 + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 1542 + 1543 + character-entities-html4@2.1.0: 1544 + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} 1545 + 1546 + character-entities-legacy@3.0.0: 1547 + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} 1548 + 1549 + character-entities@2.0.2: 1550 + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} 1551 + 1552 + chardet@2.1.1: 1553 + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} 1554 + 1555 + chokidar@4.0.3: 1556 + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} 1557 + engines: {node: '>= 14.16.0'} 1558 + 1559 + chownr@1.1.4: 1560 + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} 1561 + 1562 + chownr@3.0.0: 1563 + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} 1564 + engines: {node: '>=18'} 212 1565 213 1566 ci-info@3.9.0: 214 1567 resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} 215 1568 engines: {node: '>=8'} 216 1569 1570 + ci-info@4.3.1: 1571 + resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} 1572 + engines: {node: '>=8'} 1573 + 1574 + citty@0.1.6: 1575 + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} 1576 + 1577 + cjs-module-lexer@1.4.3: 1578 + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} 1579 + 1580 + cli-boxes@3.0.0: 1581 + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} 1582 + engines: {node: '>=10'} 1583 + 1584 + clipboardy@4.0.0: 1585 + resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} 1586 + engines: {node: '>=18'} 1587 + 1588 + cliui@8.0.1: 1589 + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 1590 + engines: {node: '>=12'} 1591 + 1592 + clone@2.1.2: 1593 + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} 1594 + engines: {node: '>=0.8'} 1595 + 1596 + clsx@2.1.1: 1597 + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} 1598 + engines: {node: '>=6'} 1599 + 1600 + color-convert@2.0.1: 1601 + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1602 + engines: {node: '>=7.0.0'} 1603 + 1604 + color-convert@3.1.2: 1605 + resolution: {integrity: sha512-UNqkvCDXstVck3kdowtOTWROIJQwafjOfXSmddoDrXo4cewMKmusCeF22Q24zvjR8nwWib/3S/dfyzPItPEiJg==} 1606 + engines: {node: '>=14.6'} 1607 + 1608 + color-name@1.1.4: 1609 + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1610 + 1611 + color-name@2.0.2: 1612 + resolution: {integrity: sha512-9vEt7gE16EW7Eu7pvZnR0abW9z6ufzhXxGXZEVU9IqPdlsUiMwJeJfRtq0zePUmnbHGT9zajca7mX8zgoayo4A==} 1613 + engines: {node: '>=12.20'} 1614 + 1615 + color-string@2.1.2: 1616 + resolution: {integrity: sha512-RxmjYxbWemV9gKu4zPgiZagUxbH3RQpEIO77XoSSX0ivgABDZ+h8Zuash/EMFLTI4N9QgFPOJ6JQpPZKFxa+dA==} 1617 + engines: {node: '>=18'} 1618 + 1619 + color@5.0.2: 1620 + resolution: {integrity: sha512-e2hz5BzbUPcYlIRHo8ieAhYgoajrJr+hWoceg6E345TPsATMUKqDgzt8fSXZJJbxfpiPzkWyphz8yn8At7q3fA==} 1621 + engines: {node: '>=18'} 1622 + 1623 + comma-separated-tokens@2.0.3: 1624 + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} 1625 + 1626 + commander@10.0.1: 1627 + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} 1628 + engines: {node: '>=14'} 1629 + 1630 + commander@11.1.0: 1631 + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} 1632 + engines: {node: '>=16'} 1633 + 1634 + commander@12.1.0: 1635 + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} 1636 + engines: {node: '>=18'} 1637 + 1638 + commander@2.20.3: 1639 + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 1640 + 1641 + common-ancestor-path@1.0.1: 1642 + resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} 1643 + 1644 + common-path-prefix@3.0.0: 1645 + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} 1646 + 1647 + compress-commons@6.0.2: 1648 + resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} 1649 + engines: {node: '>= 14'} 1650 + 1651 + confbox@0.1.8: 1652 + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} 1653 + 1654 + consola@3.4.2: 1655 + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} 1656 + engines: {node: ^14.18.0 || >=16.10.0} 1657 + 1658 + cookie-es@1.2.2: 1659 + resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} 1660 + 1661 + cookie@1.0.2: 1662 + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} 1663 + engines: {node: '>=18'} 1664 + 1665 + copy-file@11.1.0: 1666 + resolution: {integrity: sha512-X8XDzyvYaA6msMyAM575CUoygY5b44QzLcGRKsK3MFmXcOvQa518dNPLsKYwkYsn72g3EiW+LE0ytd/FlqWmyw==} 1667 + engines: {node: '>=18'} 1668 + 1669 + core-util-is@1.0.3: 1670 + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 1671 + 1672 + crc-32@1.2.2: 1673 + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} 1674 + engines: {node: '>=0.8'} 1675 + hasBin: true 1676 + 1677 + crc32-stream@6.0.0: 1678 + resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} 1679 + engines: {node: '>= 14'} 1680 + 1681 + cron-parser@4.9.0: 1682 + resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} 1683 + engines: {node: '>=12.0.0'} 1684 + 217 1685 cross-spawn@7.0.6: 218 1686 resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 219 1687 engines: {node: '>= 8'} 220 1688 1689 + crossws@0.3.5: 1690 + resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} 1691 + 1692 + css-select@5.2.2: 1693 + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} 1694 + 1695 + css-tree@2.2.1: 1696 + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} 1697 + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} 1698 + 1699 + css-tree@3.1.0: 1700 + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} 1701 + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 1702 + 1703 + css-what@6.2.2: 1704 + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} 1705 + engines: {node: '>= 6'} 1706 + 1707 + cssesc@3.0.0: 1708 + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1709 + engines: {node: '>=4'} 1710 + hasBin: true 1711 + 1712 + cssfilter@0.0.10: 1713 + resolution: {integrity: sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==} 1714 + 1715 + csso@5.0.5: 1716 + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} 1717 + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} 1718 + 1719 + culori@4.0.2: 1720 + resolution: {integrity: sha512-1+BhOB8ahCn4O0cep0Sh2l9KCOfOdY+BXJnKMHFFzDEouSr/el18QwXEMRlOj9UY5nCeA8UN3a/82rUWRBeyBw==} 1721 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1722 + 1723 + data-uri-to-buffer@4.0.1: 1724 + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} 1725 + engines: {node: '>= 12'} 1726 + 221 1727 dataloader@1.4.0: 222 1728 resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} 223 1729 224 - debug@4.4.1: 225 - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} 1730 + debug@4.4.3: 1731 + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} 226 1732 engines: {node: '>=6.0'} 227 1733 peerDependencies: 228 1734 supports-color: '*' ··· 230 1736 supports-color: 231 1737 optional: true 232 1738 1739 + decache@4.6.2: 1740 + resolution: {integrity: sha512-2LPqkLeu8XWHU8qNCS3kcF6sCcb5zIzvWaAHYSvPfwhdd7mHuah29NssMzrTYyHN4F5oFy2ko9OBYxegtU0FEw==} 1741 + 1742 + decode-named-character-reference@1.2.0: 1743 + resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} 1744 + 1745 + decompress-response@6.0.0: 1746 + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} 1747 + engines: {node: '>=10'} 1748 + 1749 + dedent@1.7.0: 1750 + resolution: {integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==} 1751 + peerDependencies: 1752 + babel-plugin-macros: ^3.1.0 1753 + peerDependenciesMeta: 1754 + babel-plugin-macros: 1755 + optional: true 1756 + 1757 + deep-extend@0.6.0: 1758 + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 1759 + engines: {node: '>=4.0.0'} 1760 + 1761 + deepmerge@4.3.1: 1762 + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 1763 + engines: {node: '>=0.10.0'} 1764 + 1765 + defu@6.1.4: 1766 + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 1767 + 1768 + dequal@2.0.3: 1769 + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 1770 + engines: {node: '>=6'} 1771 + 1772 + destr@2.0.5: 1773 + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} 1774 + 233 1775 detect-indent@6.1.0: 234 1776 resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 235 1777 engines: {node: '>=8'} 236 1778 1779 + detect-libc@1.0.3: 1780 + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} 1781 + engines: {node: '>=0.10'} 1782 + hasBin: true 1783 + 1784 + detect-libc@2.1.2: 1785 + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} 1786 + engines: {node: '>=8'} 1787 + 1788 + detective-amd@6.0.1: 1789 + resolution: {integrity: sha512-TtyZ3OhwUoEEIhTFoc1C9IyJIud3y+xYkSRjmvCt65+ycQuc3VcBrPRTMWoO/AnuCyOB8T5gky+xf7Igxtjd3g==} 1790 + engines: {node: '>=18'} 1791 + hasBin: true 1792 + 1793 + detective-cjs@6.0.1: 1794 + resolution: {integrity: sha512-tLTQsWvd2WMcmn/60T2inEJNhJoi7a//PQ7DwRKEj1yEeiQs4mrONgsUtEJKnZmrGWBBmE0kJ1vqOG/NAxwaJw==} 1795 + engines: {node: '>=18'} 1796 + 1797 + detective-es6@5.0.1: 1798 + resolution: {integrity: sha512-XusTPuewnSUdoxRSx8OOI6xIA/uld/wMQwYsouvFN2LAg7HgP06NF1lHRV3x6BZxyL2Kkoih4ewcq8hcbGtwew==} 1799 + engines: {node: '>=18'} 1800 + 1801 + detective-postcss@7.0.1: 1802 + resolution: {integrity: sha512-bEOVpHU9picRZux5XnwGsmCN4+8oZo7vSW0O0/Enq/TO5R2pIAP2279NsszpJR7ocnQt4WXU0+nnh/0JuK4KHQ==} 1803 + engines: {node: ^14.0.0 || >=16.0.0} 1804 + peerDependencies: 1805 + postcss: ^8.4.47 1806 + 1807 + detective-sass@6.0.1: 1808 + resolution: {integrity: sha512-jSGPO8QDy7K7pztUmGC6aiHkexBQT4GIH+mBAL9ZyBmnUIOFbkfZnO8wPRRJFP/QP83irObgsZHCoDHZ173tRw==} 1809 + engines: {node: '>=18'} 1810 + 1811 + detective-scss@5.0.1: 1812 + resolution: {integrity: sha512-MAyPYRgS6DCiS6n6AoSBJXLGVOydsr9huwXORUlJ37K3YLyiN0vYHpzs3AdJOgHobBfispokoqrEon9rbmKacg==} 1813 + engines: {node: '>=18'} 1814 + 1815 + detective-stylus@5.0.1: 1816 + resolution: {integrity: sha512-Dgn0bUqdGbE3oZJ+WCKf8Dmu7VWLcmRJGc6RCzBgG31DLIyai9WAoEhYRgIHpt/BCRMrnXLbGWGPQuBUrnF0TA==} 1817 + engines: {node: '>=18'} 1818 + 1819 + detective-typescript@14.0.0: 1820 + resolution: {integrity: sha512-pgN43/80MmWVSEi5LUuiVvO/0a9ss5V7fwVfrJ4QzAQRd3cwqU1SfWGXJFcNKUqoD5cS+uIovhw5t/0rSeC5Mw==} 1821 + engines: {node: '>=18'} 1822 + peerDependencies: 1823 + typescript: ^5.4.4 1824 + 1825 + detective-vue2@2.2.0: 1826 + resolution: {integrity: sha512-sVg/t6O2z1zna8a/UIV6xL5KUa2cMTQbdTIIvqNM0NIPswp52fe43Nwmbahzj3ww4D844u/vC2PYfiGLvD3zFA==} 1827 + engines: {node: '>=18'} 1828 + peerDependencies: 1829 + typescript: ^5.4.4 1830 + 1831 + deterministic-object-hash@2.0.2: 1832 + resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} 1833 + engines: {node: '>=18'} 1834 + 1835 + dettle@1.0.5: 1836 + resolution: {integrity: sha512-ZVyjhAJ7sCe1PNXEGveObOH9AC8QvMga3HJIghHawtG7mE4K5pW9nz/vDGAr/U7a3LWgdOzEE7ac9MURnyfaTA==} 1837 + 1838 + devalue@5.4.2: 1839 + resolution: {integrity: sha512-MwPZTKEPK2k8Qgfmqrd48ZKVvzSQjgW0lXLxiIBA8dQjtf/6mw6pggHNLcyDKyf+fI6eXxlQwPsfaCMTU5U+Bw==} 1840 + 1841 + devlop@1.1.0: 1842 + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} 1843 + 1844 + dfa@1.2.0: 1845 + resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==} 1846 + 1847 + diff@5.2.0: 1848 + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} 1849 + engines: {node: '>=0.3.1'} 1850 + 237 1851 dir-glob@3.0.1: 238 1852 resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 239 1853 engines: {node: '>=8'} 240 1854 1855 + dlv@1.1.3: 1856 + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1857 + 1858 + dom-serializer@2.0.0: 1859 + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} 1860 + 1861 + domelementtype@2.3.0: 1862 + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 1863 + 1864 + domhandler@5.0.3: 1865 + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} 1866 + engines: {node: '>= 4'} 1867 + 1868 + domutils@3.2.2: 1869 + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} 1870 + 1871 + dot-prop@9.0.0: 1872 + resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==} 1873 + engines: {node: '>=18'} 1874 + 1875 + dotenv@16.6.1: 1876 + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} 1877 + engines: {node: '>=12'} 1878 + 241 1879 dotenv@8.6.0: 242 1880 resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} 243 1881 engines: {node: '>=10'} 244 1882 1883 + dset@3.1.4: 1884 + resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} 1885 + engines: {node: '>=4'} 1886 + 1887 + eastasianwidth@0.2.0: 1888 + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 1889 + 1890 + ecdsa-sig-formatter@1.0.11: 1891 + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} 1892 + 1893 + emoji-regex@10.6.0: 1894 + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} 1895 + 1896 + emoji-regex@8.0.0: 1897 + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1898 + 1899 + emoji-regex@9.2.2: 1900 + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1901 + 1902 + empathic@2.0.0: 1903 + resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} 1904 + engines: {node: '>=14'} 1905 + 1906 + enabled@2.0.0: 1907 + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} 1908 + 1909 + end-of-stream@1.4.5: 1910 + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} 1911 + 245 1912 enquirer@2.4.1: 246 1913 resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} 247 1914 engines: {node: '>=8.6'} 248 1915 1916 + entities@4.5.0: 1917 + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 1918 + engines: {node: '>=0.12'} 1919 + 1920 + entities@6.0.1: 1921 + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} 1922 + engines: {node: '>=0.12'} 1923 + 1924 + env-paths@3.0.0: 1925 + resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} 1926 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1927 + 1928 + es-module-lexer@1.7.0: 1929 + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 1930 + 1931 + esbuild@0.25.11: 1932 + resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} 1933 + engines: {node: '>=18'} 1934 + hasBin: true 1935 + 1936 + esbuild@0.25.12: 1937 + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} 1938 + engines: {node: '>=18'} 1939 + hasBin: true 1940 + 1941 + escalade@3.2.0: 1942 + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 1943 + engines: {node: '>=6'} 1944 + 1945 + escape-string-regexp@5.0.0: 1946 + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} 1947 + engines: {node: '>=12'} 1948 + 1949 + escodegen@2.1.0: 1950 + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} 1951 + engines: {node: '>=6.0'} 1952 + hasBin: true 1953 + 1954 + eslint-visitor-keys@4.2.1: 1955 + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} 1956 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1957 + 249 1958 esprima@4.0.1: 250 1959 resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 251 1960 engines: {node: '>=4'} 252 1961 hasBin: true 253 1962 1963 + estraverse@5.3.0: 1964 + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1965 + engines: {node: '>=4.0'} 1966 + 1967 + estree-walker@2.0.2: 1968 + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1969 + 1970 + estree-walker@3.0.3: 1971 + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 1972 + 1973 + esutils@2.0.3: 1974 + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1975 + engines: {node: '>=0.10.0'} 1976 + 1977 + etag@1.8.1: 1978 + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 1979 + engines: {node: '>= 0.6'} 1980 + 1981 + event-target-shim@5.0.1: 1982 + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} 1983 + engines: {node: '>=6'} 1984 + 1985 + eventemitter3@5.0.1: 1986 + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} 1987 + 1988 + events-universal@1.0.1: 1989 + resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} 1990 + 1991 + events@3.3.0: 1992 + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 1993 + engines: {node: '>=0.8.x'} 1994 + 1995 + execa@8.0.1: 1996 + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} 1997 + engines: {node: '>=16.17'} 1998 + 1999 + expand-template@2.0.3: 2000 + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} 2001 + engines: {node: '>=6'} 2002 + 2003 + extend@3.0.2: 2004 + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} 2005 + 254 2006 extendable-error@0.1.7: 255 2007 resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} 256 2008 257 - external-editor@3.1.0: 258 - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} 259 - engines: {node: '>=4'} 2009 + extract-zip@2.0.1: 2010 + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} 2011 + engines: {node: '>= 10.17.0'} 2012 + hasBin: true 2013 + 2014 + fast-deep-equal@3.1.3: 2015 + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 2016 + 2017 + fast-fifo@1.3.2: 2018 + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} 260 2019 261 2020 fast-glob@3.3.3: 262 2021 resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 263 2022 engines: {node: '>=8.6.0'} 264 2023 2024 + fast-safe-stringify@2.1.1: 2025 + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} 2026 + 2027 + fast-uri@3.1.0: 2028 + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} 2029 + 265 2030 fastq@1.19.1: 266 2031 resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 267 2032 2033 + fd-slicer@1.1.0: 2034 + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} 2035 + 2036 + fdir@6.5.0: 2037 + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} 2038 + engines: {node: '>=12.0.0'} 2039 + peerDependencies: 2040 + picomatch: ^3 || ^4 2041 + peerDependenciesMeta: 2042 + picomatch: 2043 + optional: true 2044 + 2045 + fecha@4.2.3: 2046 + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} 2047 + 2048 + fetch-blob@3.2.0: 2049 + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} 2050 + engines: {node: ^12.20 || >= 14.13} 2051 + 2052 + figures@6.1.0: 2053 + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} 2054 + engines: {node: '>=18'} 2055 + 2056 + file-uri-to-path@1.0.0: 2057 + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} 2058 + 268 2059 fill-range@7.1.1: 269 2060 resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 270 2061 engines: {node: '>=8'} 271 2062 2063 + filter-obj@6.1.0: 2064 + resolution: {integrity: sha512-xdMtCAODmPloU9qtmPcdBV9Kd27NtMse+4ayThxqIHUES5Z2S6bGpap5PpdmNM56ub7y3i1eyr+vJJIIgWGKmA==} 2065 + engines: {node: '>=18'} 2066 + 2067 + find-up-simple@1.0.1: 2068 + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} 2069 + engines: {node: '>=18'} 2070 + 272 2071 find-up@4.1.0: 273 2072 resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 274 2073 engines: {node: '>=8'} 275 2074 2075 + find-up@7.0.0: 2076 + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} 2077 + engines: {node: '>=18'} 2078 + 2079 + flattie@1.1.1: 2080 + resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} 2081 + engines: {node: '>=8'} 2082 + 2083 + fn.name@1.1.0: 2084 + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} 2085 + 2086 + fontace@0.3.1: 2087 + resolution: {integrity: sha512-9f5g4feWT1jWT8+SbL85aLIRLIXUaDygaM2xPXRmzPYxrOMNok79Lr3FGJoKVNKibE0WCunNiEVG2mwuE+2qEg==} 2088 + 2089 + fontkit@2.0.4: 2090 + resolution: {integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==} 2091 + 2092 + foreground-child@3.3.1: 2093 + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} 2094 + engines: {node: '>=14'} 2095 + 2096 + formdata-polyfill@4.0.10: 2097 + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} 2098 + engines: {node: '>=12.20.0'} 2099 + 2100 + fs-constants@1.0.0: 2101 + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} 2102 + 276 2103 fs-extra@7.0.1: 277 2104 resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} 278 2105 engines: {node: '>=6 <7 || >=8'} ··· 281 2108 resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} 282 2109 engines: {node: '>=6 <7 || >=8'} 283 2110 2111 + fsevents@2.3.3: 2112 + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 2113 + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 2114 + os: [darwin] 2115 + 2116 + function-bind@1.1.2: 2117 + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 2118 + 2119 + get-amd-module-type@6.0.1: 2120 + resolution: {integrity: sha512-MtjsmYiCXcYDDrGqtNbeIYdAl85n+5mSv2r3FbzER/YV3ZILw4HNNIw34HuV5pyl0jzs6GFYU1VHVEefhgcNHQ==} 2121 + engines: {node: '>=18'} 2122 + 2123 + get-caller-file@2.0.5: 2124 + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 2125 + engines: {node: 6.* || 8.* || >= 10.*} 2126 + 2127 + get-east-asian-width@1.4.0: 2128 + resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} 2129 + engines: {node: '>=18'} 2130 + 2131 + get-port-please@3.2.0: 2132 + resolution: {integrity: sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==} 2133 + 2134 + get-port@7.1.0: 2135 + resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} 2136 + engines: {node: '>=16'} 2137 + 2138 + get-stream@5.2.0: 2139 + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} 2140 + engines: {node: '>=8'} 2141 + 2142 + get-stream@8.0.1: 2143 + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} 2144 + engines: {node: '>=16'} 2145 + 2146 + github-from-package@0.0.0: 2147 + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} 2148 + 2149 + github-slugger@2.0.0: 2150 + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} 2151 + 284 2152 glob-parent@5.1.2: 285 2153 resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 286 2154 engines: {node: '>= 6'} 287 2155 288 - globals@11.12.0: 289 - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 290 - engines: {node: '>=4'} 2156 + glob@10.4.5: 2157 + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 2158 + hasBin: true 291 2159 292 2160 globby@11.1.0: 293 2161 resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 294 2162 engines: {node: '>=10'} 295 2163 2164 + gonzales-pe@4.3.0: 2165 + resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==} 2166 + engines: {node: '>=0.6.0'} 2167 + hasBin: true 2168 + 296 2169 graceful-fs@4.2.11: 297 2170 resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 298 2171 299 - human-id@4.1.1: 300 - resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} 2172 + h3@1.15.4: 2173 + resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==} 2174 + 2175 + has-flag@4.0.0: 2176 + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 2177 + engines: {node: '>=8'} 2178 + 2179 + hasown@2.0.2: 2180 + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 2181 + engines: {node: '>= 0.4'} 2182 + 2183 + hast-util-from-html@2.0.3: 2184 + resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} 2185 + 2186 + hast-util-from-parse5@8.0.3: 2187 + resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} 2188 + 2189 + hast-util-is-element@3.0.0: 2190 + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} 2191 + 2192 + hast-util-parse-selector@4.0.0: 2193 + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} 2194 + 2195 + hast-util-raw@9.1.0: 2196 + resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} 2197 + 2198 + hast-util-to-html@9.0.5: 2199 + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} 2200 + 2201 + hast-util-to-parse5@8.0.0: 2202 + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} 2203 + 2204 + hast-util-to-text@4.0.2: 2205 + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} 2206 + 2207 + hast-util-whitespace@3.0.0: 2208 + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} 2209 + 2210 + hastscript@9.0.1: 2211 + resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} 2212 + 2213 + hosted-git-info@7.0.2: 2214 + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} 2215 + engines: {node: ^16.14.0 || >=18.0.0} 2216 + 2217 + html-escaper@3.0.3: 2218 + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} 2219 + 2220 + html-void-elements@3.0.0: 2221 + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} 2222 + 2223 + http-cache-semantics@4.2.0: 2224 + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} 2225 + 2226 + http-shutdown@1.2.2: 2227 + resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} 2228 + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} 2229 + 2230 + https-proxy-agent@7.0.6: 2231 + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} 2232 + engines: {node: '>= 14'} 2233 + 2234 + human-id@4.1.2: 2235 + resolution: {integrity: sha512-v/J+4Z/1eIJovEBdlV5TYj1IR+ZiohcYGRY+qN/oC9dAfKzVT023N/Bgw37hrKCoVRBvk3bqyzpr2PP5YeTMSg==} 301 2236 hasBin: true 302 2237 303 - iconv-lite@0.4.24: 304 - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 2238 + human-signals@5.0.0: 2239 + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} 2240 + engines: {node: '>=16.17.0'} 2241 + 2242 + iconv-lite@0.7.0: 2243 + resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} 305 2244 engines: {node: '>=0.10.0'} 306 2245 2246 + ieee754@1.2.1: 2247 + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 2248 + 307 2249 ignore@5.3.2: 308 2250 resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 309 2251 engines: {node: '>= 4'} 310 2252 2253 + image-meta@0.2.2: 2254 + resolution: {integrity: sha512-3MOLanc3sb3LNGWQl1RlQlNWURE5g32aUphrDyFeCsxBTk08iE3VNe4CwsUZ0Qs1X+EfX0+r29Sxdpza4B+yRA==} 2255 + 2256 + image-size@2.0.2: 2257 + resolution: {integrity: sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==} 2258 + engines: {node: '>=16.x'} 2259 + hasBin: true 2260 + 2261 + import-in-the-middle@1.15.0: 2262 + resolution: {integrity: sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA==} 2263 + 2264 + import-meta-resolve@4.2.0: 2265 + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} 2266 + 2267 + imurmurhash@0.1.4: 2268 + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 2269 + engines: {node: '>=0.8.19'} 2270 + 2271 + indent-string@5.0.0: 2272 + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} 2273 + engines: {node: '>=12'} 2274 + 2275 + index-to-position@1.2.0: 2276 + resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==} 2277 + engines: {node: '>=18'} 2278 + 2279 + inherits@2.0.4: 2280 + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 2281 + 2282 + ini@1.3.8: 2283 + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 2284 + 2285 + ipx@3.1.1: 2286 + resolution: {integrity: sha512-7Xnt54Dco7uYkfdAw0r2vCly3z0rSaVhEXMzPvl3FndsTVm5p26j+PO+gyinkYmcsEUvX2Rh7OGK7KzYWRu6BA==} 2287 + hasBin: true 2288 + 2289 + iron-webcrypto@1.2.1: 2290 + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} 2291 + 2292 + is-core-module@2.16.1: 2293 + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 2294 + engines: {node: '>= 0.4'} 2295 + 2296 + is-docker@3.0.0: 2297 + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} 2298 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2299 + hasBin: true 2300 + 311 2301 is-extglob@2.1.1: 312 2302 resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 313 2303 engines: {node: '>=0.10.0'} 314 2304 2305 + is-fullwidth-code-point@3.0.0: 2306 + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 2307 + engines: {node: '>=8'} 2308 + 315 2309 is-glob@4.0.3: 316 2310 resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 317 2311 engines: {node: '>=0.10.0'} 318 2312 2313 + is-inside-container@1.0.0: 2314 + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} 2315 + engines: {node: '>=14.16'} 2316 + hasBin: true 2317 + 2318 + is-network-error@1.3.0: 2319 + resolution: {integrity: sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==} 2320 + engines: {node: '>=16'} 2321 + 319 2322 is-number@7.0.0: 320 2323 resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 321 2324 engines: {node: '>=0.12.0'} 322 2325 2326 + is-path-inside@4.0.0: 2327 + resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} 2328 + engines: {node: '>=12'} 2329 + 2330 + is-plain-obj@2.1.0: 2331 + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} 2332 + engines: {node: '>=8'} 2333 + 2334 + is-plain-obj@4.1.0: 2335 + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} 2336 + engines: {node: '>=12'} 2337 + 2338 + is-stream@2.0.1: 2339 + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 2340 + engines: {node: '>=8'} 2341 + 2342 + is-stream@3.0.0: 2343 + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 2344 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2345 + 2346 + is-stream@4.0.1: 2347 + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} 2348 + engines: {node: '>=18'} 2349 + 323 2350 is-subdir@1.2.0: 324 2351 resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} 325 2352 engines: {node: '>=4'} 326 2353 2354 + is-unicode-supported@2.1.0: 2355 + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} 2356 + engines: {node: '>=18'} 2357 + 2358 + is-url-superb@4.0.0: 2359 + resolution: {integrity: sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==} 2360 + engines: {node: '>=10'} 2361 + 2362 + is-url@1.2.4: 2363 + resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} 2364 + 327 2365 is-windows@1.0.2: 328 2366 resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 329 2367 engines: {node: '>=0.10.0'} 330 2368 2369 + is-wsl@3.1.0: 2370 + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} 2371 + engines: {node: '>=16'} 2372 + 2373 + is64bit@2.0.0: 2374 + resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} 2375 + engines: {node: '>=18'} 2376 + 2377 + isarray@1.0.0: 2378 + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} 2379 + 331 2380 isexe@2.0.0: 332 2381 resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 2382 + 2383 + jackspeak@3.4.3: 2384 + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 333 2385 334 2386 javascript-natural-sort@0.7.1: 335 2387 resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} 2388 + 2389 + jiti@2.6.1: 2390 + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} 2391 + hasBin: true 2392 + 2393 + jpeg-js@0.4.4: 2394 + resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==} 2395 + 2396 + js-image-generator@1.0.4: 2397 + resolution: {integrity: sha512-ckb7kyVojGAnArouVR+5lBIuwU1fcrn7E/YYSd0FK7oIngAkMmRvHASLro9Zt5SQdWToaI66NybG+OGxPw/HlQ==} 336 2398 337 2399 js-tokens@4.0.0: 338 2400 resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} ··· 341 2403 resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 342 2404 hasBin: true 343 2405 2406 + js-yaml@4.1.0: 2407 + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2408 + hasBin: true 2409 + 344 2410 jsesc@3.1.0: 345 2411 resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 346 2412 engines: {node: '>=6'} 347 2413 hasBin: true 348 2414 2415 + json-schema-traverse@1.0.0: 2416 + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 2417 + 349 2418 jsonfile@4.0.0: 350 2419 resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 351 2420 2421 + jsonpointer@5.0.1: 2422 + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} 2423 + engines: {node: '>=0.10.0'} 2424 + 2425 + jsonwebtoken@9.0.2: 2426 + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} 2427 + engines: {node: '>=12', npm: '>=6'} 2428 + 2429 + junk@4.0.1: 2430 + resolution: {integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==} 2431 + engines: {node: '>=12.20'} 2432 + 2433 + jwa@1.4.2: 2434 + resolution: {integrity: sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==} 2435 + 2436 + jws@3.2.2: 2437 + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} 2438 + 2439 + jwt-decode@4.0.0: 2440 + resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==} 2441 + engines: {node: '>=18'} 2442 + 2443 + kleur@3.0.3: 2444 + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 2445 + engines: {node: '>=6'} 2446 + 2447 + kuler@2.0.0: 2448 + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} 2449 + 2450 + lambda-local@2.2.0: 2451 + resolution: {integrity: sha512-bPcgpIXbHnVGfI/omZIlgucDqlf4LrsunwoKue5JdZeGybt8L6KyJz2Zu19ffuZwIwLj2NAI2ZyaqNT6/cetcg==} 2452 + engines: {node: '>=8'} 2453 + hasBin: true 2454 + 2455 + lazystream@1.0.1: 2456 + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} 2457 + engines: {node: '>= 0.6.3'} 2458 + 2459 + leven@3.1.0: 2460 + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} 2461 + engines: {node: '>=6'} 2462 + 2463 + listhen@1.9.0: 2464 + resolution: {integrity: sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg==} 2465 + hasBin: true 2466 + 352 2467 locate-path@5.0.0: 353 2468 resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 354 2469 engines: {node: '>=8'} 355 2470 2471 + locate-path@7.2.0: 2472 + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} 2473 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2474 + 2475 + lodash.includes@4.3.0: 2476 + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} 2477 + 2478 + lodash.isboolean@3.0.3: 2479 + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} 2480 + 2481 + lodash.isinteger@4.0.4: 2482 + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} 2483 + 2484 + lodash.isnumber@3.0.3: 2485 + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} 2486 + 2487 + lodash.isplainobject@4.0.6: 2488 + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} 2489 + 2490 + lodash.isstring@4.0.1: 2491 + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} 2492 + 2493 + lodash.once@4.1.1: 2494 + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} 2495 + 356 2496 lodash.startcase@4.4.0: 357 2497 resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} 358 2498 359 2499 lodash@4.17.21: 360 2500 resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 361 2501 2502 + logform@2.7.0: 2503 + resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} 2504 + engines: {node: '>= 12.0.0'} 2505 + 2506 + long@5.3.2: 2507 + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} 2508 + 2509 + longest-streak@3.1.0: 2510 + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} 2511 + 2512 + lru-cache@10.4.3: 2513 + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 2514 + 2515 + luxon@3.7.2: 2516 + resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} 2517 + engines: {node: '>=12'} 2518 + 2519 + magic-string@0.30.21: 2520 + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} 2521 + 2522 + magicast@0.3.5: 2523 + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} 2524 + 2525 + map-obj@5.0.2: 2526 + resolution: {integrity: sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==} 2527 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2528 + 2529 + markdown-table@3.0.4: 2530 + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} 2531 + 2532 + mdast-util-definitions@6.0.0: 2533 + resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} 2534 + 2535 + mdast-util-find-and-replace@3.0.2: 2536 + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} 2537 + 2538 + mdast-util-from-markdown@2.0.2: 2539 + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} 2540 + 2541 + mdast-util-gfm-autolink-literal@2.0.1: 2542 + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} 2543 + 2544 + mdast-util-gfm-footnote@2.1.0: 2545 + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} 2546 + 2547 + mdast-util-gfm-strikethrough@2.0.0: 2548 + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} 2549 + 2550 + mdast-util-gfm-table@2.0.0: 2551 + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} 2552 + 2553 + mdast-util-gfm-task-list-item@2.0.0: 2554 + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} 2555 + 2556 + mdast-util-gfm@3.1.0: 2557 + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} 2558 + 2559 + mdast-util-phrasing@4.1.0: 2560 + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} 2561 + 2562 + mdast-util-to-hast@13.2.0: 2563 + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} 2564 + 2565 + mdast-util-to-markdown@2.1.2: 2566 + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} 2567 + 2568 + mdast-util-to-string@4.0.0: 2569 + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} 2570 + 2571 + mdn-data@2.0.28: 2572 + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} 2573 + 2574 + mdn-data@2.12.2: 2575 + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} 2576 + 2577 + merge-options@3.0.4: 2578 + resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} 2579 + engines: {node: '>=10'} 2580 + 2581 + merge-stream@2.0.0: 2582 + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2583 + 362 2584 merge2@1.4.1: 363 2585 resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 364 2586 engines: {node: '>= 8'} 365 2587 2588 + micromark-core-commonmark@2.0.3: 2589 + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} 2590 + 2591 + micromark-extension-gfm-autolink-literal@2.1.0: 2592 + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} 2593 + 2594 + micromark-extension-gfm-footnote@2.1.0: 2595 + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} 2596 + 2597 + micromark-extension-gfm-strikethrough@2.1.0: 2598 + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} 2599 + 2600 + micromark-extension-gfm-table@2.1.1: 2601 + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} 2602 + 2603 + micromark-extension-gfm-tagfilter@2.0.0: 2604 + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} 2605 + 2606 + micromark-extension-gfm-task-list-item@2.1.0: 2607 + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} 2608 + 2609 + micromark-extension-gfm@3.0.0: 2610 + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} 2611 + 2612 + micromark-factory-destination@2.0.1: 2613 + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} 2614 + 2615 + micromark-factory-label@2.0.1: 2616 + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} 2617 + 2618 + micromark-factory-space@2.0.1: 2619 + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} 2620 + 2621 + micromark-factory-title@2.0.1: 2622 + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} 2623 + 2624 + micromark-factory-whitespace@2.0.1: 2625 + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} 2626 + 2627 + micromark-util-character@2.1.1: 2628 + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} 2629 + 2630 + micromark-util-chunked@2.0.1: 2631 + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} 2632 + 2633 + micromark-util-classify-character@2.0.1: 2634 + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} 2635 + 2636 + micromark-util-combine-extensions@2.0.1: 2637 + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} 2638 + 2639 + micromark-util-decode-numeric-character-reference@2.0.2: 2640 + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} 2641 + 2642 + micromark-util-decode-string@2.0.1: 2643 + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} 2644 + 2645 + micromark-util-encode@2.0.1: 2646 + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} 2647 + 2648 + micromark-util-html-tag-name@2.0.1: 2649 + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} 2650 + 2651 + micromark-util-normalize-identifier@2.0.1: 2652 + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} 2653 + 2654 + micromark-util-resolve-all@2.0.1: 2655 + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} 2656 + 2657 + micromark-util-sanitize-uri@2.0.1: 2658 + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} 2659 + 2660 + micromark-util-subtokenize@2.1.0: 2661 + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} 2662 + 2663 + micromark-util-symbol@2.0.1: 2664 + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} 2665 + 2666 + micromark-util-types@2.0.2: 2667 + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} 2668 + 2669 + micromark@4.0.2: 2670 + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} 2671 + 366 2672 micromatch@4.0.8: 367 2673 resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 368 2674 engines: {node: '>=8.6'} 369 2675 2676 + mime-db@1.54.0: 2677 + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} 2678 + engines: {node: '>= 0.6'} 2679 + 2680 + mime-types@3.0.1: 2681 + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} 2682 + engines: {node: '>= 0.6'} 2683 + 2684 + mimic-fn@4.0.0: 2685 + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 2686 + engines: {node: '>=12'} 2687 + 2688 + mimic-response@3.1.0: 2689 + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} 2690 + engines: {node: '>=10'} 2691 + 2692 + minimatch@5.1.6: 2693 + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} 2694 + engines: {node: '>=10'} 2695 + 2696 + minimatch@9.0.5: 2697 + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 2698 + engines: {node: '>=16 || 14 >=14.17'} 2699 + 2700 + minimist@1.2.8: 2701 + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 2702 + 2703 + minipass@7.1.2: 2704 + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 2705 + engines: {node: '>=16 || 14 >=14.17'} 2706 + 2707 + minizlib@3.1.0: 2708 + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} 2709 + engines: {node: '>= 18'} 2710 + 2711 + mkdirp-classic@0.5.3: 2712 + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} 2713 + 2714 + mlly@1.8.0: 2715 + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} 2716 + 2717 + module-definition@6.0.1: 2718 + resolution: {integrity: sha512-FeVc50FTfVVQnolk/WQT8MX+2WVcDnTGiq6Wo+/+lJ2ET1bRVi3HG3YlJUfqagNMc/kUlFSoR96AJkxGpKz13g==} 2719 + engines: {node: '>=18'} 2720 + hasBin: true 2721 + 2722 + module-details-from-path@1.0.4: 2723 + resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} 2724 + 370 2725 mri@1.2.0: 371 2726 resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 372 2727 engines: {node: '>=4'} 373 2728 2729 + mrmime@2.0.1: 2730 + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} 2731 + engines: {node: '>=10'} 2732 + 374 2733 ms@2.1.3: 375 2734 resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 376 2735 2736 + nanoid@3.3.11: 2737 + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 2738 + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2739 + hasBin: true 2740 + 2741 + napi-build-utils@2.0.0: 2742 + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} 2743 + 2744 + neotraverse@0.6.18: 2745 + resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} 2746 + engines: {node: '>= 10'} 2747 + 2748 + netlify-redirector@0.5.0: 2749 + resolution: {integrity: sha512-4zdzIP+6muqPCuE8avnrgDJ6KW/2+UpHTRcTbMXCIRxiRmyrX+IZ4WSJGZdHPWF3WmQpXpy603XxecZ9iygN7w==} 2750 + 2751 + nlcst-to-string@4.0.0: 2752 + resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} 2753 + 2754 + node-abi@3.80.0: 2755 + resolution: {integrity: sha512-LyPuZJcI9HVwzXK1GPxWNzrr+vr8Hp/3UqlmWxxh8p54U1ZbclOqbSog9lWHaCX+dBaiGi6n/hIX+mKu74GmPA==} 2756 + engines: {node: '>=10'} 2757 + 2758 + node-addon-api@7.1.1: 2759 + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} 2760 + 2761 + node-domexception@1.0.0: 2762 + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} 2763 + engines: {node: '>=10.5.0'} 2764 + deprecated: Use your platform's native DOMException instead 2765 + 2766 + node-fetch-native@1.6.7: 2767 + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} 2768 + 377 2769 node-fetch@2.7.0: 378 2770 resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} 379 2771 engines: {node: 4.x || >=6.0.0} ··· 383 2775 encoding: 384 2776 optional: true 385 2777 386 - os-tmpdir@1.0.2: 387 - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} 2778 + node-fetch@3.3.2: 2779 + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} 2780 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2781 + 2782 + node-forge@1.3.1: 2783 + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} 2784 + engines: {node: '>= 6.13.0'} 2785 + 2786 + node-gyp-build@4.8.4: 2787 + resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} 2788 + hasBin: true 2789 + 2790 + node-mock-http@1.0.3: 2791 + resolution: {integrity: sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==} 2792 + 2793 + node-source-walk@7.0.1: 2794 + resolution: {integrity: sha512-3VW/8JpPqPvnJvseXowjZcirPisssnBuDikk6JIZ8jQzF7KJQX52iPFX4RYYxLycYH7IbMRSPUOga/esVjy5Yg==} 2795 + engines: {node: '>=18'} 2796 + 2797 + node-stream-zip@1.15.0: 2798 + resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} 2799 + engines: {node: '>=0.12.0'} 2800 + 2801 + nopt@8.1.0: 2802 + resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} 2803 + engines: {node: ^18.17.0 || >=20.5.0} 2804 + hasBin: true 2805 + 2806 + normalize-package-data@6.0.2: 2807 + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} 2808 + engines: {node: ^16.14.0 || >=18.0.0} 2809 + 2810 + normalize-path@2.1.1: 2811 + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} 388 2812 engines: {node: '>=0.10.0'} 389 2813 2814 + normalize-path@3.0.0: 2815 + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2816 + engines: {node: '>=0.10.0'} 2817 + 2818 + npm-run-path@5.3.0: 2819 + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} 2820 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2821 + 2822 + nth-check@2.1.1: 2823 + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 2824 + 2825 + ofetch@1.5.1: 2826 + resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} 2827 + 2828 + ohash@2.0.11: 2829 + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} 2830 + 2831 + omit.js@2.0.2: 2832 + resolution: {integrity: sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==} 2833 + 2834 + once@1.4.0: 2835 + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2836 + 2837 + one-time@1.0.0: 2838 + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} 2839 + 2840 + onetime@6.0.0: 2841 + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 2842 + engines: {node: '>=12'} 2843 + 2844 + oniguruma-parser@0.12.1: 2845 + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} 2846 + 2847 + oniguruma-to-es@4.3.3: 2848 + resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} 2849 + 390 2850 outdent@0.5.0: 391 2851 resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} 392 2852 2853 + p-event@6.0.1: 2854 + resolution: {integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==} 2855 + engines: {node: '>=16.17'} 2856 + 393 2857 p-filter@2.1.0: 394 2858 resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} 395 2859 engines: {node: '>=8'} ··· 398 2862 resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 399 2863 engines: {node: '>=6'} 400 2864 2865 + p-limit@4.0.0: 2866 + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} 2867 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2868 + 2869 + p-limit@6.2.0: 2870 + resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} 2871 + engines: {node: '>=18'} 2872 + 401 2873 p-locate@4.1.0: 402 2874 resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 403 2875 engines: {node: '>=8'} 404 2876 2877 + p-locate@6.0.0: 2878 + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} 2879 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2880 + 405 2881 p-map@2.1.0: 406 2882 resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} 407 2883 engines: {node: '>=6'} 408 2884 2885 + p-map@7.0.3: 2886 + resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} 2887 + engines: {node: '>=18'} 2888 + 2889 + p-queue@8.1.1: 2890 + resolution: {integrity: sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==} 2891 + engines: {node: '>=18'} 2892 + 2893 + p-retry@6.2.1: 2894 + resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} 2895 + engines: {node: '>=16.17'} 2896 + 2897 + p-timeout@6.1.4: 2898 + resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} 2899 + engines: {node: '>=14.16'} 2900 + 409 2901 p-try@2.2.0: 410 2902 resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 411 2903 engines: {node: '>=6'} 412 2904 2905 + p-wait-for@5.0.2: 2906 + resolution: {integrity: sha512-lwx6u1CotQYPVju77R+D0vFomni/AqRfqLmqQ8hekklqZ6gAY9rONh7lBQ0uxWMkC2AuX9b2DVAl8To0NyP1JA==} 2907 + engines: {node: '>=12'} 2908 + 2909 + package-json-from-dist@1.0.1: 2910 + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 2911 + 413 2912 package-manager-detector@0.2.11: 414 2913 resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} 415 2914 2915 + package-manager-detector@1.5.0: 2916 + resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==} 2917 + 2918 + pako@0.2.9: 2919 + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} 2920 + 2921 + parse-gitignore@2.0.0: 2922 + resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} 2923 + engines: {node: '>=14'} 2924 + 2925 + parse-imports@2.2.1: 2926 + resolution: {integrity: sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==} 2927 + engines: {node: '>= 18'} 2928 + 2929 + parse-json@8.3.0: 2930 + resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} 2931 + engines: {node: '>=18'} 2932 + 2933 + parse-latin@7.0.0: 2934 + resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} 2935 + 2936 + parse5@7.3.0: 2937 + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} 2938 + 416 2939 path-exists@4.0.0: 417 2940 resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 418 2941 engines: {node: '>=8'} 419 2942 2943 + path-exists@5.0.0: 2944 + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} 2945 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2946 + 420 2947 path-key@3.1.1: 421 2948 resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 422 2949 engines: {node: '>=8'} 423 2950 2951 + path-key@4.0.0: 2952 + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 2953 + engines: {node: '>=12'} 2954 + 2955 + path-parse@1.0.7: 2956 + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2957 + 2958 + path-scurry@1.11.1: 2959 + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 2960 + engines: {node: '>=16 || 14 >=14.18'} 2961 + 424 2962 path-type@4.0.0: 425 2963 resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 426 2964 engines: {node: '>=8'} 427 2965 2966 + path-type@6.0.0: 2967 + resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} 2968 + engines: {node: '>=18'} 2969 + 2970 + pathe@1.1.2: 2971 + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} 2972 + 2973 + pathe@2.0.3: 2974 + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 2975 + 2976 + pend@1.2.0: 2977 + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} 2978 + 428 2979 picocolors@1.1.1: 429 2980 resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 430 2981 ··· 432 2983 resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 433 2984 engines: {node: '>=8.6'} 434 2985 2986 + picomatch@4.0.3: 2987 + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 2988 + engines: {node: '>=12'} 2989 + 2990 + picoquery@2.5.0: 2991 + resolution: {integrity: sha512-j1kgOFxtaCyoFCkpoYG2Oj3OdGakadO7HZ7o5CqyRazlmBekKhbDoUnNnXASE07xSY4nDImWZkrZv7toSxMi/g==} 2992 + 435 2993 pify@4.0.1: 436 2994 resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 437 2995 engines: {node: '>=6'} 438 2996 2997 + pkg-types@1.3.1: 2998 + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} 2999 + 3000 + postcss-values-parser@6.0.2: 3001 + resolution: {integrity: sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==} 3002 + engines: {node: '>=10'} 3003 + peerDependencies: 3004 + postcss: ^8.2.9 3005 + 3006 + postcss@8.5.6: 3007 + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 3008 + engines: {node: ^10 || ^12 || >=14} 3009 + 3010 + prebuild-install@7.1.3: 3011 + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} 3012 + engines: {node: '>=10'} 3013 + hasBin: true 3014 + 3015 + precinct@12.2.0: 3016 + resolution: {integrity: sha512-NFBMuwIfaJ4SocE9YXPU/n4AcNSoFMVFjP72nvl3cx69j/ke61/hPOWFREVxLkFhhEGnA8ZuVfTqJBa+PK3b5w==} 3017 + engines: {node: '>=18'} 3018 + hasBin: true 3019 + 439 3020 prettier-plugin-astro@0.14.1: 440 3021 resolution: {integrity: sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==} 441 3022 engines: {node: ^14.15.0 || >=16.0.0} ··· 450 3031 engines: {node: '>=14'} 451 3032 hasBin: true 452 3033 453 - quansync@0.2.7: 454 - resolution: {integrity: sha512-KZDFlN9/Si3CgKHZsIfLBsrjWKFjqu9KA0zDGJEQoQzPm5HWNDEFc2mkLeYUBBOwEJtxNBSMaNLE/GlvArIEfQ==} 3034 + prismjs@1.30.0: 3035 + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} 3036 + engines: {node: '>=6'} 3037 + 3038 + process-nextick-args@2.0.1: 3039 + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} 3040 + 3041 + process@0.11.10: 3042 + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} 3043 + engines: {node: '>= 0.6.0'} 3044 + 3045 + prompts@2.4.2: 3046 + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} 3047 + engines: {node: '>= 6'} 3048 + 3049 + property-information@6.5.0: 3050 + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} 3051 + 3052 + property-information@7.1.0: 3053 + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} 3054 + 3055 + protobufjs@7.5.4: 3056 + resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} 3057 + engines: {node: '>=12.0.0'} 3058 + 3059 + pump@3.0.3: 3060 + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} 3061 + 3062 + quansync@0.2.11: 3063 + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} 455 3064 456 3065 queue-microtask@1.2.3: 457 3066 resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 458 3067 3068 + quote-unquote@1.0.0: 3069 + resolution: {integrity: sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==} 3070 + 3071 + radix3@1.1.2: 3072 + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} 3073 + 3074 + rc@1.2.8: 3075 + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} 3076 + hasBin: true 3077 + 3078 + read-package-up@11.0.0: 3079 + resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} 3080 + engines: {node: '>=18'} 3081 + 3082 + read-pkg@9.0.1: 3083 + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} 3084 + engines: {node: '>=18'} 3085 + 459 3086 read-yaml-file@1.1.0: 460 3087 resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} 461 3088 engines: {node: '>=6'} 462 3089 463 - regenerator-runtime@0.14.1: 464 - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 3090 + readable-stream@2.3.8: 3091 + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} 3092 + 3093 + readable-stream@3.6.2: 3094 + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} 3095 + engines: {node: '>= 6'} 3096 + 3097 + readable-stream@4.7.0: 3098 + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} 3099 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 3100 + 3101 + readdir-glob@1.1.3: 3102 + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} 3103 + 3104 + readdirp@4.1.2: 3105 + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} 3106 + engines: {node: '>= 14.18.0'} 3107 + 3108 + regex-recursion@6.0.2: 3109 + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} 3110 + 3111 + regex-utilities@2.3.0: 3112 + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} 3113 + 3114 + regex@6.0.1: 3115 + resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} 3116 + 3117 + rehype-parse@9.0.1: 3118 + resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} 3119 + 3120 + rehype-raw@7.0.0: 3121 + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} 3122 + 3123 + rehype-stringify@10.0.1: 3124 + resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} 3125 + 3126 + rehype@13.0.2: 3127 + resolution: {integrity: sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==} 3128 + 3129 + remark-gfm@4.0.1: 3130 + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} 3131 + 3132 + remark-parse@11.0.0: 3133 + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} 3134 + 3135 + remark-rehype@11.1.2: 3136 + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} 3137 + 3138 + remark-smartypants@3.0.2: 3139 + resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} 3140 + engines: {node: '>=16.0.0'} 3141 + 3142 + remark-stringify@11.0.0: 3143 + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} 3144 + 3145 + remove-trailing-separator@1.1.0: 3146 + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} 3147 + 3148 + require-directory@2.1.1: 3149 + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 3150 + engines: {node: '>=0.10.0'} 3151 + 3152 + require-from-string@2.0.2: 3153 + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 3154 + engines: {node: '>=0.10.0'} 3155 + 3156 + require-in-the-middle@7.5.2: 3157 + resolution: {integrity: sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==} 3158 + engines: {node: '>=8.6.0'} 3159 + 3160 + require-package-name@2.0.1: 3161 + resolution: {integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==} 465 3162 466 3163 resolve-from@5.0.0: 467 3164 resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 468 3165 engines: {node: '>=8'} 469 3166 3167 + resolve@1.22.11: 3168 + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} 3169 + engines: {node: '>= 0.4'} 3170 + hasBin: true 3171 + 3172 + resolve@2.0.0-next.5: 3173 + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} 3174 + hasBin: true 3175 + 3176 + restructure@3.0.2: 3177 + resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==} 3178 + 3179 + retext-latin@4.0.0: 3180 + resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} 3181 + 3182 + retext-smartypants@6.2.0: 3183 + resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==} 3184 + 3185 + retext-stringify@4.0.0: 3186 + resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} 3187 + 3188 + retext@9.0.0: 3189 + resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} 3190 + 3191 + retry@0.13.1: 3192 + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} 3193 + engines: {node: '>= 4'} 3194 + 470 3195 reusify@1.1.0: 471 3196 resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 472 3197 engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 3198 + 3199 + rollup@4.53.1: 3200 + resolution: {integrity: sha512-n2I0V0lN3E9cxxMqBCT3opWOiQBzRN7UG60z/WDKqdX2zHUS/39lezBcsckZFsV6fUTSnfqI7kHf60jDAPGKug==} 3201 + engines: {node: '>=18.0.0', npm: '>=8.0.0'} 3202 + hasBin: true 473 3203 474 3204 run-parallel@1.2.0: 475 3205 resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} ··· 477 3207 s.color@0.0.15: 478 3208 resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==} 479 3209 3210 + safe-buffer@5.1.2: 3211 + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 3212 + 3213 + safe-buffer@5.2.1: 3214 + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 3215 + 3216 + safe-stable-stringify@2.5.0: 3217 + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} 3218 + engines: {node: '>=10'} 3219 + 480 3220 safer-buffer@2.1.2: 481 3221 resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 482 3222 483 3223 sass-formatter@0.7.9: 484 3224 resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==} 485 3225 486 - semver@7.7.1: 487 - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} 3226 + sax@1.4.3: 3227 + resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} 3228 + 3229 + semver@7.7.3: 3230 + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} 488 3231 engines: {node: '>=10'} 489 3232 hasBin: true 3233 + 3234 + sharp@0.34.5: 3235 + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} 3236 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 490 3237 491 3238 shebang-command@2.0.0: 492 3239 resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} ··· 496 3243 resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 497 3244 engines: {node: '>=8'} 498 3245 3246 + shiki@3.15.0: 3247 + resolution: {integrity: sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==} 3248 + 499 3249 signal-exit@4.1.0: 500 3250 resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 501 3251 engines: {node: '>=14'} 502 3252 3253 + simple-concat@1.0.1: 3254 + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} 3255 + 3256 + simple-get@4.0.1: 3257 + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} 3258 + 3259 + sisteransi@1.0.5: 3260 + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 3261 + 503 3262 slash@3.0.0: 504 3263 resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 505 3264 engines: {node: '>=8'} 506 3265 3266 + slashes@3.0.12: 3267 + resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} 3268 + 3269 + smol-toml@1.4.2: 3270 + resolution: {integrity: sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==} 3271 + engines: {node: '>= 18'} 3272 + 3273 + source-map-js@1.2.1: 3274 + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 3275 + engines: {node: '>=0.10.0'} 3276 + 3277 + source-map-support@0.5.21: 3278 + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 3279 + 3280 + source-map@0.6.1: 3281 + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 3282 + engines: {node: '>=0.10.0'} 3283 + 3284 + space-separated-tokens@2.0.2: 3285 + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} 3286 + 507 3287 spawndamnit@3.0.1: 508 3288 resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} 509 3289 3290 + spdx-correct@3.2.0: 3291 + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} 3292 + 3293 + spdx-exceptions@2.5.0: 3294 + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} 3295 + 3296 + spdx-expression-parse@3.0.1: 3297 + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 3298 + 3299 + spdx-license-ids@3.0.22: 3300 + resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} 3301 + 510 3302 sprintf-js@1.0.3: 511 3303 resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 512 3304 3305 + stack-trace@0.0.10: 3306 + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} 3307 + 3308 + std-env@3.10.0: 3309 + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} 3310 + 3311 + streamx@2.23.0: 3312 + resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==} 3313 + 3314 + string-width@4.2.3: 3315 + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 3316 + engines: {node: '>=8'} 3317 + 3318 + string-width@5.1.2: 3319 + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 3320 + engines: {node: '>=12'} 3321 + 3322 + string-width@7.2.0: 3323 + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} 3324 + engines: {node: '>=18'} 3325 + 3326 + string_decoder@1.1.1: 3327 + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} 3328 + 3329 + string_decoder@1.3.0: 3330 + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 3331 + 3332 + stringify-entities@4.0.4: 3333 + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} 3334 + 513 3335 strip-ansi@6.0.1: 514 3336 resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 515 3337 engines: {node: '>=8'} 3338 + 3339 + strip-ansi@7.1.2: 3340 + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} 3341 + engines: {node: '>=12'} 516 3342 517 3343 strip-bom@3.0.0: 518 3344 resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 519 3345 engines: {node: '>=4'} 520 3346 3347 + strip-final-newline@3.0.0: 3348 + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 3349 + engines: {node: '>=12'} 3350 + 3351 + strip-json-comments@2.0.1: 3352 + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} 3353 + engines: {node: '>=0.10.0'} 3354 + 521 3355 suf-log@2.5.3: 522 3356 resolution: {integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==} 523 3357 3358 + supports-color@7.2.0: 3359 + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3360 + engines: {node: '>=8'} 3361 + 3362 + supports-preserve-symlinks-flag@1.0.0: 3363 + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 3364 + engines: {node: '>= 0.4'} 3365 + 3366 + svgo@4.0.0: 3367 + resolution: {integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==} 3368 + engines: {node: '>=16'} 3369 + hasBin: true 3370 + 3371 + system-architecture@0.1.0: 3372 + resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} 3373 + engines: {node: '>=18'} 3374 + 3375 + tar-fs@2.1.4: 3376 + resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} 3377 + 3378 + tar-stream@2.2.0: 3379 + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} 3380 + engines: {node: '>=6'} 3381 + 3382 + tar-stream@3.1.7: 3383 + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} 3384 + 3385 + tar@7.5.2: 3386 + resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==} 3387 + engines: {node: '>=18'} 3388 + 524 3389 term-size@2.2.1: 525 3390 resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} 526 3391 engines: {node: '>=8'} 527 3392 528 - tmp@0.0.33: 529 - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} 530 - engines: {node: '>=0.6.0'} 3393 + text-decoder@1.2.3: 3394 + resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} 3395 + 3396 + text-hex@1.0.0: 3397 + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} 3398 + 3399 + tiny-inflate@1.0.3: 3400 + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} 3401 + 3402 + tinyexec@1.0.2: 3403 + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} 3404 + engines: {node: '>=18'} 3405 + 3406 + tinyglobby@0.2.15: 3407 + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} 3408 + engines: {node: '>=12.0.0'} 3409 + 3410 + tmp-promise@3.0.3: 3411 + resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} 3412 + 3413 + tmp@0.2.5: 3414 + resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} 3415 + engines: {node: '>=14.14'} 531 3416 532 3417 to-regex-range@5.0.1: 533 3418 resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 534 3419 engines: {node: '>=8.0'} 535 3420 3421 + toml@3.0.0: 3422 + resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} 3423 + 3424 + tomlify-j0.4@3.0.0: 3425 + resolution: {integrity: sha512-2Ulkc8T7mXJ2l0W476YC/A209PR38Nw8PuaCNtk9uI3t1zzFdGQeWYGQvmj2PZkVvRC/Yoi4xQKMRnWc/N29tQ==} 3426 + 536 3427 tr46@0.0.3: 537 3428 resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 538 3429 3430 + trim-lines@3.0.1: 3431 + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} 3432 + 3433 + triple-beam@1.4.1: 3434 + resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} 3435 + engines: {node: '>= 14.0.0'} 3436 + 3437 + trough@2.2.0: 3438 + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} 3439 + 3440 + ts-api-utils@2.1.0: 3441 + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 3442 + engines: {node: '>=18.12'} 3443 + peerDependencies: 3444 + typescript: '>=4.8.4' 3445 + 3446 + tsconfck@3.1.6: 3447 + resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} 3448 + engines: {node: ^18 || >=20} 3449 + hasBin: true 3450 + peerDependencies: 3451 + typescript: ^5.0.0 3452 + peerDependenciesMeta: 3453 + typescript: 3454 + optional: true 3455 + 3456 + tslib@2.8.1: 3457 + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 3458 + 3459 + tunnel-agent@0.6.0: 3460 + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} 3461 + 3462 + type-fest@4.41.0: 3463 + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} 3464 + engines: {node: '>=16'} 3465 + 3466 + typescript@5.9.3: 3467 + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} 3468 + engines: {node: '>=14.17'} 3469 + hasBin: true 3470 + 3471 + ufo@1.6.1: 3472 + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} 3473 + 3474 + ulid@3.0.1: 3475 + resolution: {integrity: sha512-dPJyqPzx8preQhqq24bBG1YNkvigm87K8kVEHCD+ruZg24t6IFEFv00xMWfxcC4djmFtiTLdFuADn4+DOz6R7Q==} 3476 + hasBin: true 3477 + 3478 + ultrahtml@1.6.0: 3479 + resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} 3480 + 3481 + uncrypto@0.1.3: 3482 + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} 3483 + 3484 + undici-types@6.21.0: 3485 + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} 3486 + 3487 + unicode-properties@1.4.1: 3488 + resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==} 3489 + 3490 + unicode-trie@2.0.0: 3491 + resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} 3492 + 3493 + unicorn-magic@0.1.0: 3494 + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} 3495 + engines: {node: '>=18'} 3496 + 3497 + unified@11.0.5: 3498 + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} 3499 + 3500 + unifont@0.6.0: 3501 + resolution: {integrity: sha512-5Fx50fFQMQL5aeHyWnZX9122sSLckcDvcfFiBf3QYeHa7a1MKJooUy52b67moi2MJYkrfo/TWY+CoLdr/w0tTA==} 3502 + 3503 + unist-util-find-after@5.0.0: 3504 + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} 3505 + 3506 + unist-util-is@6.0.1: 3507 + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} 3508 + 3509 + unist-util-modify-children@4.0.0: 3510 + resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} 3511 + 3512 + unist-util-position@5.0.0: 3513 + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} 3514 + 3515 + unist-util-remove-position@5.0.0: 3516 + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} 3517 + 3518 + unist-util-stringify-position@4.0.0: 3519 + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} 3520 + 3521 + unist-util-visit-children@3.0.0: 3522 + resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} 3523 + 3524 + unist-util-visit-parents@6.0.2: 3525 + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} 3526 + 3527 + unist-util-visit@5.0.0: 3528 + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} 3529 + 539 3530 universalify@0.1.2: 540 3531 resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 541 3532 engines: {node: '>= 4.0.0'} 542 3533 3534 + unixify@1.0.0: 3535 + resolution: {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==} 3536 + engines: {node: '>=0.10.0'} 3537 + 3538 + unstorage@1.17.2: 3539 + resolution: {integrity: sha512-cKEsD6iBWJgOMJ6vW1ID/SYuqNf8oN4yqRk8OYqaVQ3nnkJXOT1PSpaMh2QfzLs78UN5kSNRD2c/mgjT8tX7+w==} 3540 + peerDependencies: 3541 + '@azure/app-configuration': ^1.8.0 3542 + '@azure/cosmos': ^4.2.0 3543 + '@azure/data-tables': ^13.3.0 3544 + '@azure/identity': ^4.6.0 3545 + '@azure/keyvault-secrets': ^4.9.0 3546 + '@azure/storage-blob': ^12.26.0 3547 + '@capacitor/preferences': ^6.0.3 || ^7.0.0 3548 + '@deno/kv': '>=0.9.0' 3549 + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 3550 + '@planetscale/database': ^1.19.0 3551 + '@upstash/redis': ^1.34.3 3552 + '@vercel/blob': '>=0.27.1' 3553 + '@vercel/functions': ^2.2.12 || ^3.0.0 3554 + '@vercel/kv': ^1.0.1 3555 + aws4fetch: ^1.0.20 3556 + db0: '>=0.2.1' 3557 + idb-keyval: ^6.2.1 3558 + ioredis: ^5.4.2 3559 + uploadthing: ^7.4.4 3560 + peerDependenciesMeta: 3561 + '@azure/app-configuration': 3562 + optional: true 3563 + '@azure/cosmos': 3564 + optional: true 3565 + '@azure/data-tables': 3566 + optional: true 3567 + '@azure/identity': 3568 + optional: true 3569 + '@azure/keyvault-secrets': 3570 + optional: true 3571 + '@azure/storage-blob': 3572 + optional: true 3573 + '@capacitor/preferences': 3574 + optional: true 3575 + '@deno/kv': 3576 + optional: true 3577 + '@netlify/blobs': 3578 + optional: true 3579 + '@planetscale/database': 3580 + optional: true 3581 + '@upstash/redis': 3582 + optional: true 3583 + '@vercel/blob': 3584 + optional: true 3585 + '@vercel/functions': 3586 + optional: true 3587 + '@vercel/kv': 3588 + optional: true 3589 + aws4fetch: 3590 + optional: true 3591 + db0: 3592 + optional: true 3593 + idb-keyval: 3594 + optional: true 3595 + ioredis: 3596 + optional: true 3597 + uploadthing: 3598 + optional: true 3599 + 3600 + untun@0.1.3: 3601 + resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} 3602 + hasBin: true 3603 + 3604 + uqr@0.1.2: 3605 + resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} 3606 + 3607 + urlpattern-polyfill@10.1.0: 3608 + resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==} 3609 + 3610 + urlpattern-polyfill@8.0.2: 3611 + resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} 3612 + 3613 + util-deprecate@1.0.2: 3614 + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 3615 + 3616 + uuid@11.1.0: 3617 + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} 3618 + hasBin: true 3619 + 3620 + validate-npm-package-license@3.0.4: 3621 + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 3622 + 3623 + validate-npm-package-name@5.0.1: 3624 + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} 3625 + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 3626 + 3627 + vfile-location@5.0.3: 3628 + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} 3629 + 3630 + vfile-message@4.0.3: 3631 + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} 3632 + 3633 + vfile@6.0.3: 3634 + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} 3635 + 3636 + vite@6.4.1: 3637 + resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} 3638 + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 3639 + hasBin: true 3640 + peerDependencies: 3641 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 3642 + jiti: '>=1.21.0' 3643 + less: '*' 3644 + lightningcss: ^1.21.0 3645 + sass: '*' 3646 + sass-embedded: '*' 3647 + stylus: '*' 3648 + sugarss: '*' 3649 + terser: ^5.16.0 3650 + tsx: ^4.8.1 3651 + yaml: ^2.4.2 3652 + peerDependenciesMeta: 3653 + '@types/node': 3654 + optional: true 3655 + jiti: 3656 + optional: true 3657 + less: 3658 + optional: true 3659 + lightningcss: 3660 + optional: true 3661 + sass: 3662 + optional: true 3663 + sass-embedded: 3664 + optional: true 3665 + stylus: 3666 + optional: true 3667 + sugarss: 3668 + optional: true 3669 + terser: 3670 + optional: true 3671 + tsx: 3672 + optional: true 3673 + yaml: 3674 + optional: true 3675 + 3676 + vitefu@1.1.1: 3677 + resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==} 3678 + peerDependencies: 3679 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 3680 + peerDependenciesMeta: 3681 + vite: 3682 + optional: true 3683 + 3684 + web-namespaces@2.0.1: 3685 + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} 3686 + 3687 + web-streams-polyfill@3.3.3: 3688 + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} 3689 + engines: {node: '>= 8'} 3690 + 543 3691 webidl-conversions@3.0.1: 544 3692 resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 545 3693 546 3694 whatwg-url@5.0.0: 547 3695 resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 548 3696 3697 + which-pm-runs@1.1.0: 3698 + resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} 3699 + engines: {node: '>=4'} 3700 + 549 3701 which@2.0.2: 550 3702 resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 551 3703 engines: {node: '>= 8'} 552 3704 hasBin: true 553 3705 3706 + widest-line@5.0.0: 3707 + resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} 3708 + engines: {node: '>=18'} 3709 + 3710 + winston-transport@4.9.0: 3711 + resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} 3712 + engines: {node: '>= 12.0.0'} 3713 + 3714 + winston@3.18.3: 3715 + resolution: {integrity: sha512-NoBZauFNNWENgsnC9YpgyYwOVrl2m58PpQ8lNHjV3kosGs7KJ7Npk9pCUE+WJlawVSe8mykWDKWFSVfs3QO9ww==} 3716 + engines: {node: '>= 12.0.0'} 3717 + 3718 + wrap-ansi@7.0.0: 3719 + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3720 + engines: {node: '>=10'} 3721 + 3722 + wrap-ansi@8.1.0: 3723 + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 3724 + engines: {node: '>=12'} 3725 + 3726 + wrap-ansi@9.0.2: 3727 + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} 3728 + engines: {node: '>=18'} 3729 + 3730 + wrappy@1.0.2: 3731 + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 3732 + 3733 + write-file-atomic@5.0.1: 3734 + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} 3735 + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 3736 + 3737 + xss@1.0.15: 3738 + resolution: {integrity: sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==} 3739 + engines: {node: '>= 0.10.0'} 3740 + hasBin: true 3741 + 3742 + xxhash-wasm@1.1.0: 3743 + resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} 3744 + 3745 + y18n@5.0.8: 3746 + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 3747 + engines: {node: '>=10'} 3748 + 3749 + yallist@5.0.0: 3750 + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} 3751 + engines: {node: '>=18'} 3752 + 3753 + yaml@2.8.1: 3754 + resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} 3755 + engines: {node: '>= 14.6'} 3756 + hasBin: true 3757 + 3758 + yargs-parser@21.1.1: 3759 + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 3760 + engines: {node: '>=12'} 3761 + 3762 + yargs@17.7.2: 3763 + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 3764 + engines: {node: '>=12'} 3765 + 3766 + yauzl@2.10.0: 3767 + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} 3768 + 3769 + yocto-queue@1.2.1: 3770 + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} 3771 + engines: {node: '>=12.20'} 3772 + 3773 + yocto-spinner@0.2.3: 3774 + resolution: {integrity: sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==} 3775 + engines: {node: '>=18.19'} 3776 + 3777 + yoctocolors@2.1.2: 3778 + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} 3779 + engines: {node: '>=18'} 3780 + 3781 + zip-stream@6.0.1: 3782 + resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} 3783 + engines: {node: '>= 14'} 3784 + 3785 + zod-to-json-schema@3.24.6: 3786 + resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} 3787 + peerDependencies: 3788 + zod: ^3.24.1 3789 + 3790 + zod-to-ts@1.2.0: 3791 + resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} 3792 + peerDependencies: 3793 + typescript: ^4.9.4 || ^5.0.2 3794 + zod: ^3 3795 + 3796 + zod@3.25.76: 3797 + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} 3798 + 3799 + zwitch@2.0.4: 3800 + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} 3801 + 554 3802 snapshots: 555 3803 556 - '@astrojs/compiler@2.12.0': {} 3804 + '@astrojs/compiler@2.13.0': {} 3805 + 3806 + '@astrojs/internal-helpers@0.7.4': {} 3807 + 3808 + '@astrojs/markdown-remark@6.3.8': 3809 + dependencies: 3810 + '@astrojs/internal-helpers': 0.7.4 3811 + '@astrojs/prism': 3.3.0 3812 + github-slugger: 2.0.0 3813 + hast-util-from-html: 2.0.3 3814 + hast-util-to-text: 4.0.2 3815 + import-meta-resolve: 4.2.0 3816 + js-yaml: 4.1.0 3817 + mdast-util-definitions: 6.0.0 3818 + rehype-raw: 7.0.0 3819 + rehype-stringify: 10.0.1 3820 + remark-gfm: 4.0.1 3821 + remark-parse: 11.0.0 3822 + remark-rehype: 11.1.2 3823 + remark-smartypants: 3.0.2 3824 + shiki: 3.15.0 3825 + smol-toml: 1.4.2 3826 + unified: 11.0.5 3827 + unist-util-remove-position: 5.0.0 3828 + unist-util-visit: 5.0.0 3829 + unist-util-visit-parents: 6.0.2 3830 + vfile: 6.0.3 3831 + transitivePeerDependencies: 3832 + - supports-color 3833 + 3834 + '@astrojs/netlify@6.6.0(@types/node@20.19.24)(astro@5.15.4(@netlify/blobs@10.3.3)(@types/node@20.19.24)(jiti@2.6.1)(rollup@4.53.1)(typescript@5.9.3)(yaml@2.8.1))(jiti@2.6.1)(rollup@4.53.1)(yaml@2.8.1)': 3835 + dependencies: 3836 + '@astrojs/internal-helpers': 0.7.4 3837 + '@astrojs/underscore-redirects': 1.0.0 3838 + '@netlify/blobs': 10.3.3 3839 + '@netlify/functions': 4.3.0(rollup@4.53.1) 3840 + '@netlify/vite-plugin': 2.7.11(rollup@4.53.1)(vite@6.4.1(@types/node@20.19.24)(jiti@2.6.1)(yaml@2.8.1)) 3841 + '@vercel/nft': 0.30.3(rollup@4.53.1) 3842 + astro: 5.15.4(@netlify/blobs@10.3.3)(@types/node@20.19.24)(jiti@2.6.1)(rollup@4.53.1)(typescript@5.9.3)(yaml@2.8.1) 3843 + esbuild: 0.25.12 3844 + tinyglobby: 0.2.15 3845 + vite: 6.4.1(@types/node@20.19.24)(jiti@2.6.1)(yaml@2.8.1) 3846 + transitivePeerDependencies: 3847 + - '@azure/app-configuration' 3848 + - '@azure/cosmos' 3849 + - '@azure/data-tables' 3850 + - '@azure/identity' 3851 + - '@azure/keyvault-secrets' 3852 + - '@azure/storage-blob' 3853 + - '@capacitor/preferences' 3854 + - '@deno/kv' 3855 + - '@planetscale/database' 3856 + - '@types/node' 3857 + - '@upstash/redis' 3858 + - '@vercel/blob' 3859 + - '@vercel/functions' 3860 + - '@vercel/kv' 3861 + - aws4fetch 3862 + - babel-plugin-macros 3863 + - bare-abort-controller 3864 + - db0 3865 + - encoding 3866 + - idb-keyval 3867 + - ioredis 3868 + - jiti 3869 + - less 3870 + - lightningcss 3871 + - react-native-b4a 3872 + - rollup 3873 + - sass 3874 + - sass-embedded 3875 + - stylus 3876 + - sugarss 3877 + - supports-color 3878 + - terser 3879 + - tsx 3880 + - uploadthing 3881 + - yaml 3882 + 3883 + '@astrojs/prism@3.3.0': 3884 + dependencies: 3885 + prismjs: 1.30.0 3886 + 3887 + '@astrojs/telemetry@3.3.0': 3888 + dependencies: 3889 + ci-info: 4.3.1 3890 + debug: 4.4.3 3891 + dlv: 1.1.3 3892 + dset: 3.1.4 3893 + is-docker: 3.0.0 3894 + is-wsl: 3.1.0 3895 + which-pm-runs: 1.1.0 3896 + transitivePeerDependencies: 3897 + - supports-color 3898 + 3899 + '@astrojs/underscore-redirects@1.0.0': {} 557 3900 558 3901 '@babel/code-frame@7.27.1': 559 3902 dependencies: 560 - '@babel/helper-validator-identifier': 7.27.1 3903 + '@babel/helper-validator-identifier': 7.28.5 561 3904 js-tokens: 4.0.0 562 3905 picocolors: 1.1.1 563 3906 564 - '@babel/generator@7.27.1': 3907 + '@babel/generator@7.28.5': 565 3908 dependencies: 566 - '@babel/parser': 7.27.2 567 - '@babel/types': 7.27.1 568 - '@jridgewell/gen-mapping': 0.3.8 569 - '@jridgewell/trace-mapping': 0.3.25 3909 + '@babel/parser': 7.28.5 3910 + '@babel/types': 7.28.5 3911 + '@jridgewell/gen-mapping': 0.3.13 3912 + '@jridgewell/trace-mapping': 0.3.31 570 3913 jsesc: 3.1.0 571 3914 3915 + '@babel/helper-globals@7.28.0': {} 3916 + 572 3917 '@babel/helper-string-parser@7.27.1': {} 573 3918 574 - '@babel/helper-validator-identifier@7.27.1': {} 3919 + '@babel/helper-validator-identifier@7.28.5': {} 575 3920 576 - '@babel/parser@7.27.2': 3921 + '@babel/parser@7.28.5': 577 3922 dependencies: 578 - '@babel/types': 7.27.1 3923 + '@babel/types': 7.28.5 579 3924 580 - '@babel/runtime@7.26.9': 581 - dependencies: 582 - regenerator-runtime: 0.14.1 3925 + '@babel/runtime@7.28.4': {} 583 3926 584 3927 '@babel/template@7.27.2': 585 3928 dependencies: 586 3929 '@babel/code-frame': 7.27.1 587 - '@babel/parser': 7.27.2 588 - '@babel/types': 7.27.1 3930 + '@babel/parser': 7.28.5 3931 + '@babel/types': 7.28.5 589 3932 590 - '@babel/traverse@7.27.1': 3933 + '@babel/traverse@7.28.5': 591 3934 dependencies: 592 3935 '@babel/code-frame': 7.27.1 593 - '@babel/generator': 7.27.1 594 - '@babel/parser': 7.27.2 3936 + '@babel/generator': 7.28.5 3937 + '@babel/helper-globals': 7.28.0 3938 + '@babel/parser': 7.28.5 595 3939 '@babel/template': 7.27.2 596 - '@babel/types': 7.27.1 597 - debug: 4.4.1 598 - globals: 11.12.0 3940 + '@babel/types': 7.28.5 3941 + debug: 4.4.3 599 3942 transitivePeerDependencies: 600 3943 - supports-color 601 3944 602 - '@babel/types@7.27.1': 3945 + '@babel/types@7.28.5': 603 3946 dependencies: 604 3947 '@babel/helper-string-parser': 7.27.1 605 - '@babel/helper-validator-identifier': 7.27.1 3948 + '@babel/helper-validator-identifier': 7.28.5 606 3949 607 - '@changesets/apply-release-plan@7.0.10': 3950 + '@capsizecss/unpack@3.0.0': 3951 + dependencies: 3952 + fontkit: 2.0.4 3953 + 3954 + '@changesets/apply-release-plan@7.0.13': 608 3955 dependencies: 609 3956 '@changesets/config': 3.1.1 610 3957 '@changesets/get-version-range-type': 0.4.0 611 - '@changesets/git': 3.0.2 3958 + '@changesets/git': 3.0.4 612 3959 '@changesets/should-skip-package': 0.1.2 613 3960 '@changesets/types': 6.1.0 614 3961 '@manypkg/get-packages': 1.1.3 ··· 618 3965 outdent: 0.5.0 619 3966 prettier: 2.8.8 620 3967 resolve-from: 5.0.0 621 - semver: 7.7.1 3968 + semver: 7.7.3 622 3969 623 - '@changesets/assemble-release-plan@6.0.6': 3970 + '@changesets/assemble-release-plan@6.0.9': 624 3971 dependencies: 625 3972 '@changesets/errors': 0.2.0 626 3973 '@changesets/get-dependents-graph': 2.1.3 627 3974 '@changesets/should-skip-package': 0.1.2 628 3975 '@changesets/types': 6.1.0 629 3976 '@manypkg/get-packages': 1.1.3 630 - semver: 7.7.1 3977 + semver: 7.7.3 631 3978 632 3979 '@changesets/changelog-git@0.2.1': 633 3980 dependencies: ··· 641 3988 transitivePeerDependencies: 642 3989 - encoding 643 3990 644 - '@changesets/cli@2.28.1': 3991 + '@changesets/cli@2.29.7(@types/node@20.19.24)': 645 3992 dependencies: 646 - '@changesets/apply-release-plan': 7.0.10 647 - '@changesets/assemble-release-plan': 6.0.6 3993 + '@changesets/apply-release-plan': 7.0.13 3994 + '@changesets/assemble-release-plan': 6.0.9 648 3995 '@changesets/changelog-git': 0.2.1 649 3996 '@changesets/config': 3.1.1 650 3997 '@changesets/errors': 0.2.0 651 3998 '@changesets/get-dependents-graph': 2.1.3 652 - '@changesets/get-release-plan': 4.0.8 653 - '@changesets/git': 3.0.2 3999 + '@changesets/get-release-plan': 4.0.13 4000 + '@changesets/git': 3.0.4 654 4001 '@changesets/logger': 0.1.1 655 4002 '@changesets/pre': 2.0.2 656 - '@changesets/read': 0.6.3 4003 + '@changesets/read': 0.6.5 657 4004 '@changesets/should-skip-package': 0.1.2 658 4005 '@changesets/types': 6.1.0 659 4006 '@changesets/write': 0.4.0 4007 + '@inquirer/external-editor': 1.0.3(@types/node@20.19.24) 660 4008 '@manypkg/get-packages': 1.1.3 661 4009 ansi-colors: 4.1.3 662 4010 ci-info: 3.9.0 663 4011 enquirer: 2.4.1 664 - external-editor: 3.1.0 665 4012 fs-extra: 7.0.1 666 4013 mri: 1.2.0 667 4014 p-limit: 2.3.0 668 4015 package-manager-detector: 0.2.11 669 4016 picocolors: 1.1.1 670 4017 resolve-from: 5.0.0 671 - semver: 7.7.1 4018 + semver: 7.7.3 672 4019 spawndamnit: 3.0.1 673 4020 term-size: 2.2.1 4021 + transitivePeerDependencies: 4022 + - '@types/node' 674 4023 675 4024 '@changesets/config@3.1.1': 676 4025 dependencies: ··· 691 4040 '@changesets/types': 6.1.0 692 4041 '@manypkg/get-packages': 1.1.3 693 4042 picocolors: 1.1.1 694 - semver: 7.7.1 4043 + semver: 7.7.3 695 4044 696 4045 '@changesets/get-github-info@0.6.0': 697 4046 dependencies: ··· 700 4049 transitivePeerDependencies: 701 4050 - encoding 702 4051 703 - '@changesets/get-release-plan@4.0.8': 4052 + '@changesets/get-release-plan@4.0.13': 704 4053 dependencies: 705 - '@changesets/assemble-release-plan': 6.0.6 4054 + '@changesets/assemble-release-plan': 6.0.9 706 4055 '@changesets/config': 3.1.1 707 4056 '@changesets/pre': 2.0.2 708 - '@changesets/read': 0.6.3 4057 + '@changesets/read': 0.6.5 709 4058 '@changesets/types': 6.1.0 710 4059 '@manypkg/get-packages': 1.1.3 711 4060 712 4061 '@changesets/get-version-range-type@0.4.0': {} 713 4062 714 - '@changesets/git@3.0.2': 4063 + '@changesets/git@3.0.4': 715 4064 dependencies: 716 4065 '@changesets/errors': 0.2.0 717 4066 '@manypkg/get-packages': 1.1.3 ··· 735 4084 '@manypkg/get-packages': 1.1.3 736 4085 fs-extra: 7.0.1 737 4086 738 - '@changesets/read@0.6.3': 4087 + '@changesets/read@0.6.5': 739 4088 dependencies: 740 - '@changesets/git': 3.0.2 4089 + '@changesets/git': 3.0.4 741 4090 '@changesets/logger': 0.1.1 742 4091 '@changesets/parse': 0.4.1 743 4092 '@changesets/types': 6.1.0 ··· 758 4107 dependencies: 759 4108 '@changesets/types': 6.1.0 760 4109 fs-extra: 7.0.1 761 - human-id: 4.1.1 4110 + human-id: 4.1.2 762 4111 prettier: 2.8.8 763 4112 764 - '@jridgewell/gen-mapping@0.3.8': 4113 + '@colors/colors@1.6.0': {} 4114 + 4115 + '@dabh/diagnostics@2.0.8': 4116 + dependencies: 4117 + '@so-ric/colorspace': 1.1.6 4118 + enabled: 2.0.0 4119 + kuler: 2.0.0 4120 + 4121 + '@dependents/detective-less@5.0.1': 4122 + dependencies: 4123 + gonzales-pe: 4.3.0 4124 + node-source-walk: 7.0.1 4125 + 4126 + '@emnapi/runtime@1.7.0': 4127 + dependencies: 4128 + tslib: 2.8.1 4129 + optional: true 4130 + 4131 + '@envelop/instrumentation@1.0.0': 4132 + dependencies: 4133 + '@whatwg-node/promise-helpers': 1.3.2 4134 + tslib: 2.8.1 4135 + 4136 + '@esbuild/aix-ppc64@0.25.11': 4137 + optional: true 4138 + 4139 + '@esbuild/aix-ppc64@0.25.12': 4140 + optional: true 4141 + 4142 + '@esbuild/android-arm64@0.25.11': 4143 + optional: true 4144 + 4145 + '@esbuild/android-arm64@0.25.12': 4146 + optional: true 4147 + 4148 + '@esbuild/android-arm@0.25.11': 4149 + optional: true 4150 + 4151 + '@esbuild/android-arm@0.25.12': 4152 + optional: true 4153 + 4154 + '@esbuild/android-x64@0.25.11': 4155 + optional: true 4156 + 4157 + '@esbuild/android-x64@0.25.12': 4158 + optional: true 4159 + 4160 + '@esbuild/darwin-arm64@0.25.11': 4161 + optional: true 4162 + 4163 + '@esbuild/darwin-arm64@0.25.12': 4164 + optional: true 4165 + 4166 + '@esbuild/darwin-x64@0.25.11': 4167 + optional: true 4168 + 4169 + '@esbuild/darwin-x64@0.25.12': 4170 + optional: true 4171 + 4172 + '@esbuild/freebsd-arm64@0.25.11': 4173 + optional: true 4174 + 4175 + '@esbuild/freebsd-arm64@0.25.12': 4176 + optional: true 4177 + 4178 + '@esbuild/freebsd-x64@0.25.11': 4179 + optional: true 4180 + 4181 + '@esbuild/freebsd-x64@0.25.12': 4182 + optional: true 4183 + 4184 + '@esbuild/linux-arm64@0.25.11': 4185 + optional: true 4186 + 4187 + '@esbuild/linux-arm64@0.25.12': 4188 + optional: true 4189 + 4190 + '@esbuild/linux-arm@0.25.11': 4191 + optional: true 4192 + 4193 + '@esbuild/linux-arm@0.25.12': 4194 + optional: true 4195 + 4196 + '@esbuild/linux-ia32@0.25.11': 4197 + optional: true 4198 + 4199 + '@esbuild/linux-ia32@0.25.12': 4200 + optional: true 4201 + 4202 + '@esbuild/linux-loong64@0.25.11': 4203 + optional: true 4204 + 4205 + '@esbuild/linux-loong64@0.25.12': 4206 + optional: true 4207 + 4208 + '@esbuild/linux-mips64el@0.25.11': 4209 + optional: true 4210 + 4211 + '@esbuild/linux-mips64el@0.25.12': 4212 + optional: true 4213 + 4214 + '@esbuild/linux-ppc64@0.25.11': 4215 + optional: true 4216 + 4217 + '@esbuild/linux-ppc64@0.25.12': 4218 + optional: true 4219 + 4220 + '@esbuild/linux-riscv64@0.25.11': 4221 + optional: true 4222 + 4223 + '@esbuild/linux-riscv64@0.25.12': 4224 + optional: true 4225 + 4226 + '@esbuild/linux-s390x@0.25.11': 4227 + optional: true 4228 + 4229 + '@esbuild/linux-s390x@0.25.12': 4230 + optional: true 4231 + 4232 + '@esbuild/linux-x64@0.25.11': 4233 + optional: true 4234 + 4235 + '@esbuild/linux-x64@0.25.12': 4236 + optional: true 4237 + 4238 + '@esbuild/netbsd-arm64@0.25.11': 4239 + optional: true 4240 + 4241 + '@esbuild/netbsd-arm64@0.25.12': 4242 + optional: true 4243 + 4244 + '@esbuild/netbsd-x64@0.25.11': 4245 + optional: true 4246 + 4247 + '@esbuild/netbsd-x64@0.25.12': 4248 + optional: true 4249 + 4250 + '@esbuild/openbsd-arm64@0.25.11': 4251 + optional: true 4252 + 4253 + '@esbuild/openbsd-arm64@0.25.12': 4254 + optional: true 4255 + 4256 + '@esbuild/openbsd-x64@0.25.11': 4257 + optional: true 4258 + 4259 + '@esbuild/openbsd-x64@0.25.12': 4260 + optional: true 4261 + 4262 + '@esbuild/openharmony-arm64@0.25.11': 4263 + optional: true 4264 + 4265 + '@esbuild/openharmony-arm64@0.25.12': 4266 + optional: true 4267 + 4268 + '@esbuild/sunos-x64@0.25.11': 4269 + optional: true 4270 + 4271 + '@esbuild/sunos-x64@0.25.12': 4272 + optional: true 4273 + 4274 + '@esbuild/win32-arm64@0.25.11': 4275 + optional: true 4276 + 4277 + '@esbuild/win32-arm64@0.25.12': 4278 + optional: true 4279 + 4280 + '@esbuild/win32-ia32@0.25.11': 4281 + optional: true 4282 + 4283 + '@esbuild/win32-ia32@0.25.12': 4284 + optional: true 4285 + 4286 + '@esbuild/win32-x64@0.25.11': 4287 + optional: true 4288 + 4289 + '@esbuild/win32-x64@0.25.12': 4290 + optional: true 4291 + 4292 + '@fastify/accept-negotiator@2.0.1': {} 4293 + 4294 + '@fastify/busboy@3.2.0': {} 4295 + 4296 + '@humanwhocodes/momoa@2.0.4': {} 4297 + 4298 + '@iarna/toml@2.2.5': {} 4299 + 4300 + '@img/colour@1.0.0': {} 4301 + 4302 + '@img/sharp-darwin-arm64@0.34.5': 4303 + optionalDependencies: 4304 + '@img/sharp-libvips-darwin-arm64': 1.2.4 4305 + optional: true 4306 + 4307 + '@img/sharp-darwin-x64@0.34.5': 4308 + optionalDependencies: 4309 + '@img/sharp-libvips-darwin-x64': 1.2.4 4310 + optional: true 4311 + 4312 + '@img/sharp-libvips-darwin-arm64@1.2.4': 4313 + optional: true 4314 + 4315 + '@img/sharp-libvips-darwin-x64@1.2.4': 4316 + optional: true 4317 + 4318 + '@img/sharp-libvips-linux-arm64@1.2.4': 4319 + optional: true 4320 + 4321 + '@img/sharp-libvips-linux-arm@1.2.4': 4322 + optional: true 4323 + 4324 + '@img/sharp-libvips-linux-ppc64@1.2.4': 4325 + optional: true 4326 + 4327 + '@img/sharp-libvips-linux-riscv64@1.2.4': 4328 + optional: true 4329 + 4330 + '@img/sharp-libvips-linux-s390x@1.2.4': 4331 + optional: true 4332 + 4333 + '@img/sharp-libvips-linux-x64@1.2.4': 4334 + optional: true 4335 + 4336 + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': 4337 + optional: true 4338 + 4339 + '@img/sharp-libvips-linuxmusl-x64@1.2.4': 4340 + optional: true 4341 + 4342 + '@img/sharp-linux-arm64@0.34.5': 4343 + optionalDependencies: 4344 + '@img/sharp-libvips-linux-arm64': 1.2.4 4345 + optional: true 4346 + 4347 + '@img/sharp-linux-arm@0.34.5': 4348 + optionalDependencies: 4349 + '@img/sharp-libvips-linux-arm': 1.2.4 4350 + optional: true 4351 + 4352 + '@img/sharp-linux-ppc64@0.34.5': 4353 + optionalDependencies: 4354 + '@img/sharp-libvips-linux-ppc64': 1.2.4 4355 + optional: true 4356 + 4357 + '@img/sharp-linux-riscv64@0.34.5': 4358 + optionalDependencies: 4359 + '@img/sharp-libvips-linux-riscv64': 1.2.4 4360 + optional: true 4361 + 4362 + '@img/sharp-linux-s390x@0.34.5': 4363 + optionalDependencies: 4364 + '@img/sharp-libvips-linux-s390x': 1.2.4 4365 + optional: true 4366 + 4367 + '@img/sharp-linux-x64@0.34.5': 4368 + optionalDependencies: 4369 + '@img/sharp-libvips-linux-x64': 1.2.4 4370 + optional: true 4371 + 4372 + '@img/sharp-linuxmusl-arm64@0.34.5': 4373 + optionalDependencies: 4374 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 4375 + optional: true 4376 + 4377 + '@img/sharp-linuxmusl-x64@0.34.5': 4378 + optionalDependencies: 4379 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 4380 + optional: true 4381 + 4382 + '@img/sharp-wasm32@0.34.5': 765 4383 dependencies: 766 - '@jridgewell/set-array': 1.2.1 767 - '@jridgewell/sourcemap-codec': 1.5.0 768 - '@jridgewell/trace-mapping': 0.3.25 4384 + '@emnapi/runtime': 1.7.0 4385 + optional: true 4386 + 4387 + '@img/sharp-win32-arm64@0.34.5': 4388 + optional: true 4389 + 4390 + '@img/sharp-win32-ia32@0.34.5': 4391 + optional: true 4392 + 4393 + '@img/sharp-win32-x64@0.34.5': 4394 + optional: true 4395 + 4396 + '@import-maps/resolve@2.0.0': {} 4397 + 4398 + '@inquirer/external-editor@1.0.3(@types/node@20.19.24)': 4399 + dependencies: 4400 + chardet: 2.1.1 4401 + iconv-lite: 0.7.0 4402 + optionalDependencies: 4403 + '@types/node': 20.19.24 769 4404 770 - '@jridgewell/resolve-uri@3.1.2': {} 4405 + '@isaacs/cliui@8.0.2': 4406 + dependencies: 4407 + string-width: 5.1.2 4408 + string-width-cjs: string-width@4.2.3 4409 + strip-ansi: 7.1.2 4410 + strip-ansi-cjs: strip-ansi@6.0.1 4411 + wrap-ansi: 8.1.0 4412 + wrap-ansi-cjs: wrap-ansi@7.0.0 771 4413 772 - '@jridgewell/set-array@1.2.1': {} 4414 + '@isaacs/fs-minipass@4.0.1': 4415 + dependencies: 4416 + minipass: 7.1.2 773 4417 774 - '@jridgewell/sourcemap-codec@1.5.0': {} 4418 + '@jridgewell/gen-mapping@0.3.13': 4419 + dependencies: 4420 + '@jridgewell/sourcemap-codec': 1.5.5 4421 + '@jridgewell/trace-mapping': 0.3.31 775 4422 776 - '@jridgewell/trace-mapping@0.3.25': 4423 + '@jridgewell/resolve-uri@3.1.2': {} 4424 + 4425 + '@jridgewell/sourcemap-codec@1.5.5': {} 4426 + 4427 + '@jridgewell/trace-mapping@0.3.31': 777 4428 dependencies: 778 4429 '@jridgewell/resolve-uri': 3.1.2 779 - '@jridgewell/sourcemap-codec': 1.5.0 4430 + '@jridgewell/sourcemap-codec': 1.5.5 780 4431 781 4432 '@manypkg/find-root@1.1.0': 782 4433 dependencies: 783 - '@babel/runtime': 7.26.9 4434 + '@babel/runtime': 7.28.4 784 4435 '@types/node': 12.20.55 785 4436 find-up: 4.1.0 786 4437 fs-extra: 8.1.0 787 4438 788 4439 '@manypkg/get-packages@1.1.3': 789 4440 dependencies: 790 - '@babel/runtime': 7.26.9 4441 + '@babel/runtime': 7.28.4 791 4442 '@changesets/types': 4.1.0 792 4443 '@manypkg/find-root': 1.1.0 793 4444 fs-extra: 8.1.0 794 4445 globby: 11.1.0 795 4446 read-yaml-file: 1.1.0 796 4447 4448 + '@mapbox/node-pre-gyp@2.0.0': 4449 + dependencies: 4450 + consola: 3.4.2 4451 + detect-libc: 2.1.2 4452 + https-proxy-agent: 7.0.6 4453 + node-fetch: 2.7.0 4454 + nopt: 8.1.0 4455 + semver: 7.7.3 4456 + tar: 7.5.2 4457 + transitivePeerDependencies: 4458 + - encoding 4459 + - supports-color 4460 + 4461 + '@netlify/api@14.0.10': 4462 + dependencies: 4463 + '@netlify/open-api': 2.43.1 4464 + node-fetch: 3.3.2 4465 + p-wait-for: 5.0.2 4466 + picoquery: 2.5.0 4467 + 4468 + '@netlify/binary-info@1.0.0': {} 4469 + 4470 + '@netlify/blobs@10.1.0': 4471 + dependencies: 4472 + '@netlify/dev-utils': 4.3.0 4473 + '@netlify/runtime-utils': 2.2.0 4474 + 4475 + '@netlify/blobs@10.3.3': 4476 + dependencies: 4477 + '@netlify/dev-utils': 4.3.1 4478 + '@netlify/otel': 4.3.2 4479 + '@netlify/runtime-utils': 2.2.1 4480 + transitivePeerDependencies: 4481 + - supports-color 4482 + 4483 + '@netlify/cache@3.3.2': 4484 + dependencies: 4485 + '@netlify/runtime-utils': 2.2.1 4486 + 4487 + '@netlify/config@23.2.0': 4488 + dependencies: 4489 + '@iarna/toml': 2.2.5 4490 + '@netlify/api': 14.0.10 4491 + '@netlify/headers-parser': 9.0.2 4492 + '@netlify/redirect-parser': 15.0.3 4493 + chalk: 5.6.2 4494 + cron-parser: 4.9.0 4495 + deepmerge: 4.3.1 4496 + dot-prop: 9.0.0 4497 + execa: 8.0.1 4498 + fast-safe-stringify: 2.1.1 4499 + figures: 6.1.0 4500 + filter-obj: 6.1.0 4501 + find-up: 7.0.0 4502 + indent-string: 5.0.0 4503 + is-plain-obj: 4.1.0 4504 + map-obj: 5.0.2 4505 + omit.js: 2.0.2 4506 + p-locate: 6.0.0 4507 + path-type: 6.0.0 4508 + read-package-up: 11.0.0 4509 + tomlify-j0.4: 3.0.0 4510 + validate-npm-package-name: 5.0.1 4511 + yaml: 2.8.1 4512 + yargs: 17.7.2 4513 + 4514 + '@netlify/dev-utils@4.3.0': 4515 + dependencies: 4516 + '@whatwg-node/server': 0.10.15 4517 + ansis: 4.2.0 4518 + chokidar: 4.0.3 4519 + decache: 4.6.2 4520 + dettle: 1.0.5 4521 + dot-prop: 9.0.0 4522 + empathic: 2.0.0 4523 + env-paths: 3.0.0 4524 + image-size: 2.0.2 4525 + js-image-generator: 1.0.4 4526 + parse-gitignore: 2.0.0 4527 + semver: 7.7.3 4528 + tmp-promise: 3.0.3 4529 + uuid: 11.1.0 4530 + write-file-atomic: 5.0.1 4531 + 4532 + '@netlify/dev-utils@4.3.1': 4533 + dependencies: 4534 + '@whatwg-node/server': 0.10.15 4535 + ansis: 4.2.0 4536 + chokidar: 4.0.3 4537 + decache: 4.6.2 4538 + dettle: 1.0.5 4539 + dot-prop: 9.0.0 4540 + empathic: 2.0.0 4541 + env-paths: 3.0.0 4542 + image-size: 2.0.2 4543 + js-image-generator: 1.0.4 4544 + parse-gitignore: 2.0.0 4545 + semver: 7.7.3 4546 + tmp-promise: 3.0.3 4547 + uuid: 11.1.0 4548 + write-file-atomic: 5.0.1 4549 + 4550 + '@netlify/dev@4.7.1(rollup@4.53.1)': 4551 + dependencies: 4552 + '@netlify/blobs': 10.3.3 4553 + '@netlify/config': 23.2.0 4554 + '@netlify/dev-utils': 4.3.1 4555 + '@netlify/edge-functions-dev': 1.0.4 4556 + '@netlify/functions-dev': 1.1.0(rollup@4.53.1) 4557 + '@netlify/headers': 2.1.1 4558 + '@netlify/images': 1.3.1(@netlify/blobs@10.3.3) 4559 + '@netlify/redirects': 3.1.2 4560 + '@netlify/runtime': 4.1.7 4561 + '@netlify/static': 3.1.1 4562 + ulid: 3.0.1 4563 + transitivePeerDependencies: 4564 + - '@azure/app-configuration' 4565 + - '@azure/cosmos' 4566 + - '@azure/data-tables' 4567 + - '@azure/identity' 4568 + - '@azure/keyvault-secrets' 4569 + - '@azure/storage-blob' 4570 + - '@capacitor/preferences' 4571 + - '@deno/kv' 4572 + - '@planetscale/database' 4573 + - '@upstash/redis' 4574 + - '@vercel/blob' 4575 + - '@vercel/functions' 4576 + - '@vercel/kv' 4577 + - aws4fetch 4578 + - bare-abort-controller 4579 + - db0 4580 + - encoding 4581 + - idb-keyval 4582 + - ioredis 4583 + - react-native-b4a 4584 + - rollup 4585 + - supports-color 4586 + - uploadthing 4587 + 4588 + '@netlify/edge-bundler@14.8.6': 4589 + dependencies: 4590 + '@import-maps/resolve': 2.0.0 4591 + ajv: 8.17.1 4592 + ajv-errors: 3.0.0(ajv@8.17.1) 4593 + better-ajv-errors: 1.2.0(ajv@8.17.1) 4594 + common-path-prefix: 3.0.0 4595 + env-paths: 3.0.0 4596 + esbuild: 0.25.11 4597 + execa: 8.0.1 4598 + find-up: 7.0.0 4599 + get-port: 7.1.0 4600 + node-stream-zip: 1.15.0 4601 + p-retry: 6.2.1 4602 + p-wait-for: 5.0.2 4603 + parse-imports: 2.2.1 4604 + path-key: 4.0.0 4605 + semver: 7.7.3 4606 + tar: 7.5.2 4607 + tmp-promise: 3.0.3 4608 + urlpattern-polyfill: 8.0.2 4609 + uuid: 11.1.0 4610 + 4611 + '@netlify/edge-functions-bootstrap@2.16.0': {} 4612 + 4613 + '@netlify/edge-functions-dev@1.0.4': 4614 + dependencies: 4615 + '@netlify/dev-utils': 4.3.1 4616 + '@netlify/edge-bundler': 14.8.6 4617 + '@netlify/edge-functions': 3.0.2 4618 + '@netlify/edge-functions-bootstrap': 2.16.0 4619 + '@netlify/runtime-utils': 2.2.1 4620 + get-port: 7.1.0 4621 + 4622 + '@netlify/edge-functions@3.0.2': 4623 + dependencies: 4624 + '@netlify/types': 2.2.0 4625 + 4626 + '@netlify/functions-dev@1.1.0(rollup@4.53.1)': 4627 + dependencies: 4628 + '@netlify/blobs': 10.3.3 4629 + '@netlify/dev-utils': 4.3.1 4630 + '@netlify/functions': 5.1.0 4631 + '@netlify/zip-it-and-ship-it': 14.1.13(rollup@4.53.1) 4632 + cron-parser: 4.9.0 4633 + decache: 4.6.2 4634 + extract-zip: 2.0.1 4635 + is-stream: 4.0.1 4636 + jwt-decode: 4.0.0 4637 + lambda-local: 2.2.0 4638 + read-package-up: 11.0.0 4639 + semver: 7.7.3 4640 + source-map-support: 0.5.21 4641 + transitivePeerDependencies: 4642 + - bare-abort-controller 4643 + - encoding 4644 + - react-native-b4a 4645 + - rollup 4646 + - supports-color 4647 + 4648 + '@netlify/functions@4.3.0(rollup@4.53.1)': 4649 + dependencies: 4650 + '@netlify/blobs': 10.1.0 4651 + '@netlify/dev-utils': 4.3.0 4652 + '@netlify/types': 2.1.0 4653 + '@netlify/zip-it-and-ship-it': 14.1.13(rollup@4.53.1) 4654 + cron-parser: 4.9.0 4655 + decache: 4.6.2 4656 + extract-zip: 2.0.1 4657 + is-stream: 4.0.1 4658 + jwt-decode: 4.0.0 4659 + lambda-local: 2.2.0 4660 + read-package-up: 11.0.0 4661 + source-map-support: 0.5.21 4662 + transitivePeerDependencies: 4663 + - bare-abort-controller 4664 + - encoding 4665 + - react-native-b4a 4666 + - rollup 4667 + - supports-color 4668 + 4669 + '@netlify/functions@5.1.0': 4670 + dependencies: 4671 + '@netlify/types': 2.2.0 4672 + 4673 + '@netlify/headers-parser@9.0.2': 4674 + dependencies: 4675 + '@iarna/toml': 2.2.5 4676 + escape-string-regexp: 5.0.0 4677 + fast-safe-stringify: 2.1.1 4678 + is-plain-obj: 4.1.0 4679 + map-obj: 5.0.2 4680 + path-exists: 5.0.0 4681 + 4682 + '@netlify/headers@2.1.1': 4683 + dependencies: 4684 + '@netlify/headers-parser': 9.0.2 4685 + 4686 + '@netlify/images@1.3.1(@netlify/blobs@10.3.3)': 4687 + dependencies: 4688 + ipx: 3.1.1(@netlify/blobs@10.3.3) 4689 + transitivePeerDependencies: 4690 + - '@azure/app-configuration' 4691 + - '@azure/cosmos' 4692 + - '@azure/data-tables' 4693 + - '@azure/identity' 4694 + - '@azure/keyvault-secrets' 4695 + - '@azure/storage-blob' 4696 + - '@capacitor/preferences' 4697 + - '@deno/kv' 4698 + - '@netlify/blobs' 4699 + - '@planetscale/database' 4700 + - '@upstash/redis' 4701 + - '@vercel/blob' 4702 + - '@vercel/functions' 4703 + - '@vercel/kv' 4704 + - aws4fetch 4705 + - db0 4706 + - idb-keyval 4707 + - ioredis 4708 + - uploadthing 4709 + 4710 + '@netlify/open-api@2.43.1': {} 4711 + 4712 + '@netlify/otel@4.3.2': 4713 + dependencies: 4714 + '@opentelemetry/api': 1.9.0 4715 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 4716 + '@opentelemetry/instrumentation': 0.203.0(@opentelemetry/api@1.9.0) 4717 + '@opentelemetry/otlp-transformer': 0.57.2(@opentelemetry/api@1.9.0) 4718 + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) 4719 + '@opentelemetry/sdk-trace-node': 1.30.1(@opentelemetry/api@1.9.0) 4720 + transitivePeerDependencies: 4721 + - supports-color 4722 + 4723 + '@netlify/redirect-parser@15.0.3': 4724 + dependencies: 4725 + '@iarna/toml': 2.2.5 4726 + fast-safe-stringify: 2.1.1 4727 + is-plain-obj: 4.1.0 4728 + path-exists: 5.0.0 4729 + 4730 + '@netlify/redirects@3.1.2': 4731 + dependencies: 4732 + '@netlify/dev-utils': 4.3.1 4733 + '@netlify/redirect-parser': 15.0.3 4734 + cookie: 1.0.2 4735 + jsonwebtoken: 9.0.2 4736 + netlify-redirector: 0.5.0 4737 + 4738 + '@netlify/runtime-utils@2.2.0': {} 4739 + 4740 + '@netlify/runtime-utils@2.2.1': {} 4741 + 4742 + '@netlify/runtime@4.1.7': 4743 + dependencies: 4744 + '@netlify/blobs': 10.3.3 4745 + '@netlify/cache': 3.3.2 4746 + '@netlify/runtime-utils': 2.2.1 4747 + '@netlify/types': 2.2.0 4748 + transitivePeerDependencies: 4749 + - supports-color 4750 + 4751 + '@netlify/serverless-functions-api@2.7.1': {} 4752 + 4753 + '@netlify/static@3.1.1': 4754 + dependencies: 4755 + mime-types: 3.0.1 4756 + 4757 + '@netlify/types@2.1.0': {} 4758 + 4759 + '@netlify/types@2.2.0': {} 4760 + 4761 + '@netlify/vite-plugin@2.7.11(rollup@4.53.1)(vite@6.4.1(@types/node@20.19.24)(jiti@2.6.1)(yaml@2.8.1))': 4762 + dependencies: 4763 + '@netlify/dev': 4.7.1(rollup@4.53.1) 4764 + '@netlify/dev-utils': 4.3.1 4765 + dedent: 1.7.0 4766 + vite: 6.4.1(@types/node@20.19.24)(jiti@2.6.1)(yaml@2.8.1) 4767 + transitivePeerDependencies: 4768 + - '@azure/app-configuration' 4769 + - '@azure/cosmos' 4770 + - '@azure/data-tables' 4771 + - '@azure/identity' 4772 + - '@azure/keyvault-secrets' 4773 + - '@azure/storage-blob' 4774 + - '@capacitor/preferences' 4775 + - '@deno/kv' 4776 + - '@planetscale/database' 4777 + - '@upstash/redis' 4778 + - '@vercel/blob' 4779 + - '@vercel/functions' 4780 + - '@vercel/kv' 4781 + - aws4fetch 4782 + - babel-plugin-macros 4783 + - bare-abort-controller 4784 + - db0 4785 + - encoding 4786 + - idb-keyval 4787 + - ioredis 4788 + - react-native-b4a 4789 + - rollup 4790 + - supports-color 4791 + - uploadthing 4792 + 4793 + '@netlify/zip-it-and-ship-it@14.1.13(rollup@4.53.1)': 4794 + dependencies: 4795 + '@babel/parser': 7.28.5 4796 + '@babel/types': 7.28.5 4797 + '@netlify/binary-info': 1.0.0 4798 + '@netlify/serverless-functions-api': 2.7.1 4799 + '@vercel/nft': 0.29.4(rollup@4.53.1) 4800 + archiver: 7.0.1 4801 + common-path-prefix: 3.0.0 4802 + copy-file: 11.1.0 4803 + es-module-lexer: 1.7.0 4804 + esbuild: 0.25.11 4805 + execa: 8.0.1 4806 + fast-glob: 3.3.3 4807 + filter-obj: 6.1.0 4808 + find-up: 7.0.0 4809 + is-path-inside: 4.0.0 4810 + junk: 4.0.1 4811 + locate-path: 7.2.0 4812 + merge-options: 3.0.4 4813 + minimatch: 9.0.5 4814 + normalize-path: 3.0.0 4815 + p-map: 7.0.3 4816 + path-exists: 5.0.0 4817 + precinct: 12.2.0 4818 + require-package-name: 2.0.1 4819 + resolve: 2.0.0-next.5 4820 + semver: 7.7.3 4821 + tmp-promise: 3.0.3 4822 + toml: 3.0.0 4823 + unixify: 1.0.0 4824 + urlpattern-polyfill: 8.0.2 4825 + yargs: 17.7.2 4826 + zod: 3.25.76 4827 + transitivePeerDependencies: 4828 + - bare-abort-controller 4829 + - encoding 4830 + - react-native-b4a 4831 + - rollup 4832 + - supports-color 4833 + 797 4834 '@nodelib/fs.scandir@2.1.5': 798 4835 dependencies: 799 4836 '@nodelib/fs.stat': 2.0.5 ··· 806 4843 '@nodelib/fs.scandir': 2.1.5 807 4844 fastq: 1.19.1 808 4845 809 - '@trivago/prettier-plugin-sort-imports@5.2.2(prettier@3.5.3)': 4846 + '@opentelemetry/api-logs@0.203.0': 4847 + dependencies: 4848 + '@opentelemetry/api': 1.9.0 4849 + 4850 + '@opentelemetry/api-logs@0.57.2': 4851 + dependencies: 4852 + '@opentelemetry/api': 1.9.0 4853 + 4854 + '@opentelemetry/api@1.9.0': {} 4855 + 4856 + '@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0)': 4857 + dependencies: 4858 + '@opentelemetry/api': 1.9.0 4859 + 4860 + '@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0)': 4861 + dependencies: 4862 + '@opentelemetry/api': 1.9.0 4863 + '@opentelemetry/semantic-conventions': 1.28.0 4864 + 4865 + '@opentelemetry/instrumentation@0.203.0(@opentelemetry/api@1.9.0)': 4866 + dependencies: 4867 + '@opentelemetry/api': 1.9.0 4868 + '@opentelemetry/api-logs': 0.203.0 4869 + import-in-the-middle: 1.15.0 4870 + require-in-the-middle: 7.5.2 4871 + transitivePeerDependencies: 4872 + - supports-color 4873 + 4874 + '@opentelemetry/otlp-transformer@0.57.2(@opentelemetry/api@1.9.0)': 4875 + dependencies: 4876 + '@opentelemetry/api': 1.9.0 4877 + '@opentelemetry/api-logs': 0.57.2 4878 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 4879 + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) 4880 + '@opentelemetry/sdk-logs': 0.57.2(@opentelemetry/api@1.9.0) 4881 + '@opentelemetry/sdk-metrics': 1.30.1(@opentelemetry/api@1.9.0) 4882 + '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) 4883 + protobufjs: 7.5.4 4884 + 4885 + '@opentelemetry/propagator-b3@1.30.1(@opentelemetry/api@1.9.0)': 4886 + dependencies: 4887 + '@opentelemetry/api': 1.9.0 4888 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 4889 + 4890 + '@opentelemetry/propagator-jaeger@1.30.1(@opentelemetry/api@1.9.0)': 4891 + dependencies: 4892 + '@opentelemetry/api': 1.9.0 4893 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 4894 + 4895 + '@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0)': 4896 + dependencies: 4897 + '@opentelemetry/api': 1.9.0 4898 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 4899 + '@opentelemetry/semantic-conventions': 1.28.0 4900 + 4901 + '@opentelemetry/sdk-logs@0.57.2(@opentelemetry/api@1.9.0)': 4902 + dependencies: 4903 + '@opentelemetry/api': 1.9.0 4904 + '@opentelemetry/api-logs': 0.57.2 4905 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 4906 + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) 4907 + 4908 + '@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0)': 4909 + dependencies: 4910 + '@opentelemetry/api': 1.9.0 4911 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 4912 + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) 4913 + 4914 + '@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)': 4915 + dependencies: 4916 + '@opentelemetry/api': 1.9.0 4917 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 4918 + '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) 4919 + '@opentelemetry/semantic-conventions': 1.28.0 4920 + 4921 + '@opentelemetry/sdk-trace-node@1.30.1(@opentelemetry/api@1.9.0)': 4922 + dependencies: 4923 + '@opentelemetry/api': 1.9.0 4924 + '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.0) 4925 + '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) 4926 + '@opentelemetry/propagator-b3': 1.30.1(@opentelemetry/api@1.9.0) 4927 + '@opentelemetry/propagator-jaeger': 1.30.1(@opentelemetry/api@1.9.0) 4928 + '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) 4929 + semver: 7.7.3 4930 + 4931 + '@opentelemetry/semantic-conventions@1.28.0': {} 4932 + 4933 + '@oslojs/encoding@1.1.0': {} 4934 + 4935 + '@parcel/watcher-android-arm64@2.5.1': 4936 + optional: true 4937 + 4938 + '@parcel/watcher-darwin-arm64@2.5.1': 4939 + optional: true 4940 + 4941 + '@parcel/watcher-darwin-x64@2.5.1': 4942 + optional: true 4943 + 4944 + '@parcel/watcher-freebsd-x64@2.5.1': 4945 + optional: true 4946 + 4947 + '@parcel/watcher-linux-arm-glibc@2.5.1': 4948 + optional: true 4949 + 4950 + '@parcel/watcher-linux-arm-musl@2.5.1': 4951 + optional: true 4952 + 4953 + '@parcel/watcher-linux-arm64-glibc@2.5.1': 4954 + optional: true 4955 + 4956 + '@parcel/watcher-linux-arm64-musl@2.5.1': 4957 + optional: true 4958 + 4959 + '@parcel/watcher-linux-x64-glibc@2.5.1': 4960 + optional: true 4961 + 4962 + '@parcel/watcher-linux-x64-musl@2.5.1': 4963 + optional: true 4964 + 4965 + '@parcel/watcher-wasm@2.5.1': 4966 + dependencies: 4967 + is-glob: 4.0.3 4968 + micromatch: 4.0.8 4969 + 4970 + '@parcel/watcher-win32-arm64@2.5.1': 4971 + optional: true 4972 + 4973 + '@parcel/watcher-win32-ia32@2.5.1': 4974 + optional: true 4975 + 4976 + '@parcel/watcher-win32-x64@2.5.1': 4977 + optional: true 4978 + 4979 + '@parcel/watcher@2.5.1': 4980 + dependencies: 4981 + detect-libc: 1.0.3 4982 + is-glob: 4.0.3 4983 + micromatch: 4.0.8 4984 + node-addon-api: 7.1.1 4985 + optionalDependencies: 4986 + '@parcel/watcher-android-arm64': 2.5.1 4987 + '@parcel/watcher-darwin-arm64': 2.5.1 4988 + '@parcel/watcher-darwin-x64': 2.5.1 4989 + '@parcel/watcher-freebsd-x64': 2.5.1 4990 + '@parcel/watcher-linux-arm-glibc': 2.5.1 4991 + '@parcel/watcher-linux-arm-musl': 2.5.1 4992 + '@parcel/watcher-linux-arm64-glibc': 2.5.1 4993 + '@parcel/watcher-linux-arm64-musl': 2.5.1 4994 + '@parcel/watcher-linux-x64-glibc': 2.5.1 4995 + '@parcel/watcher-linux-x64-musl': 2.5.1 4996 + '@parcel/watcher-win32-arm64': 2.5.1 4997 + '@parcel/watcher-win32-ia32': 2.5.1 4998 + '@parcel/watcher-win32-x64': 2.5.1 4999 + 5000 + '@pkgjs/parseargs@0.11.0': 5001 + optional: true 5002 + 5003 + '@protobufjs/aspromise@1.1.2': {} 5004 + 5005 + '@protobufjs/base64@1.1.2': {} 5006 + 5007 + '@protobufjs/codegen@2.0.4': {} 5008 + 5009 + '@protobufjs/eventemitter@1.1.0': {} 5010 + 5011 + '@protobufjs/fetch@1.1.0': 5012 + dependencies: 5013 + '@protobufjs/aspromise': 1.1.2 5014 + '@protobufjs/inquire': 1.1.0 5015 + 5016 + '@protobufjs/float@1.0.2': {} 5017 + 5018 + '@protobufjs/inquire@1.1.0': {} 5019 + 5020 + '@protobufjs/path@1.1.2': {} 5021 + 5022 + '@protobufjs/pool@1.1.0': {} 5023 + 5024 + '@protobufjs/utf8@1.1.0': {} 5025 + 5026 + '@rollup/pluginutils@5.3.0(rollup@4.53.1)': 5027 + dependencies: 5028 + '@types/estree': 1.0.8 5029 + estree-walker: 2.0.2 5030 + picomatch: 4.0.3 5031 + optionalDependencies: 5032 + rollup: 4.53.1 5033 + 5034 + '@rollup/rollup-android-arm-eabi@4.53.1': 5035 + optional: true 5036 + 5037 + '@rollup/rollup-android-arm64@4.53.1': 5038 + optional: true 5039 + 5040 + '@rollup/rollup-darwin-arm64@4.53.1': 5041 + optional: true 5042 + 5043 + '@rollup/rollup-darwin-x64@4.53.1': 5044 + optional: true 5045 + 5046 + '@rollup/rollup-freebsd-arm64@4.53.1': 5047 + optional: true 5048 + 5049 + '@rollup/rollup-freebsd-x64@4.53.1': 5050 + optional: true 5051 + 5052 + '@rollup/rollup-linux-arm-gnueabihf@4.53.1': 5053 + optional: true 5054 + 5055 + '@rollup/rollup-linux-arm-musleabihf@4.53.1': 5056 + optional: true 5057 + 5058 + '@rollup/rollup-linux-arm64-gnu@4.53.1': 5059 + optional: true 5060 + 5061 + '@rollup/rollup-linux-arm64-musl@4.53.1': 5062 + optional: true 5063 + 5064 + '@rollup/rollup-linux-loong64-gnu@4.53.1': 5065 + optional: true 5066 + 5067 + '@rollup/rollup-linux-ppc64-gnu@4.53.1': 5068 + optional: true 5069 + 5070 + '@rollup/rollup-linux-riscv64-gnu@4.53.1': 5071 + optional: true 5072 + 5073 + '@rollup/rollup-linux-riscv64-musl@4.53.1': 5074 + optional: true 5075 + 5076 + '@rollup/rollup-linux-s390x-gnu@4.53.1': 5077 + optional: true 5078 + 5079 + '@rollup/rollup-linux-x64-gnu@4.53.1': 5080 + optional: true 5081 + 5082 + '@rollup/rollup-linux-x64-musl@4.53.1': 5083 + optional: true 5084 + 5085 + '@rollup/rollup-openharmony-arm64@4.53.1': 5086 + optional: true 5087 + 5088 + '@rollup/rollup-win32-arm64-msvc@4.53.1': 5089 + optional: true 5090 + 5091 + '@rollup/rollup-win32-ia32-msvc@4.53.1': 5092 + optional: true 5093 + 5094 + '@rollup/rollup-win32-x64-gnu@4.53.1': 5095 + optional: true 5096 + 5097 + '@rollup/rollup-win32-x64-msvc@4.53.1': 5098 + optional: true 5099 + 5100 + '@shikijs/core@3.15.0': 5101 + dependencies: 5102 + '@shikijs/types': 3.15.0 5103 + '@shikijs/vscode-textmate': 10.0.2 5104 + '@types/hast': 3.0.4 5105 + hast-util-to-html: 9.0.5 5106 + 5107 + '@shikijs/engine-javascript@3.15.0': 5108 + dependencies: 5109 + '@shikijs/types': 3.15.0 5110 + '@shikijs/vscode-textmate': 10.0.2 5111 + oniguruma-to-es: 4.3.3 5112 + 5113 + '@shikijs/engine-oniguruma@3.15.0': 5114 + dependencies: 5115 + '@shikijs/types': 3.15.0 5116 + '@shikijs/vscode-textmate': 10.0.2 5117 + 5118 + '@shikijs/langs@3.15.0': 5119 + dependencies: 5120 + '@shikijs/types': 3.15.0 5121 + 5122 + '@shikijs/themes@3.15.0': 5123 + dependencies: 5124 + '@shikijs/types': 3.15.0 5125 + 5126 + '@shikijs/types@3.15.0': 5127 + dependencies: 5128 + '@shikijs/vscode-textmate': 10.0.2 5129 + '@types/hast': 3.0.4 5130 + 5131 + '@shikijs/vscode-textmate@10.0.2': {} 5132 + 5133 + '@so-ric/colorspace@1.1.6': 5134 + dependencies: 5135 + color: 5.0.2 5136 + text-hex: 1.0.0 5137 + 5138 + '@swc/helpers@0.5.17': 5139 + dependencies: 5140 + tslib: 2.8.1 5141 + 5142 + '@trivago/prettier-plugin-sort-imports@5.2.2(@vue/compiler-sfc@3.5.24)(prettier@3.5.3)': 810 5143 dependencies: 811 - '@babel/generator': 7.27.1 812 - '@babel/parser': 7.27.2 813 - '@babel/traverse': 7.27.1 814 - '@babel/types': 7.27.1 5144 + '@babel/generator': 7.28.5 5145 + '@babel/parser': 7.28.5 5146 + '@babel/traverse': 7.28.5 5147 + '@babel/types': 7.28.5 815 5148 javascript-natural-sort: 0.7.1 816 5149 lodash: 4.17.21 817 5150 prettier: 3.5.3 5151 + optionalDependencies: 5152 + '@vue/compiler-sfc': 3.5.24 818 5153 transitivePeerDependencies: 819 5154 - supports-color 820 5155 5156 + '@types/culori@4.0.1': {} 5157 + 5158 + '@types/debug@4.1.12': 5159 + dependencies: 5160 + '@types/ms': 2.1.0 5161 + 5162 + '@types/estree@1.0.8': {} 5163 + 5164 + '@types/fontkit@2.0.8': 5165 + dependencies: 5166 + '@types/node': 20.19.24 5167 + 5168 + '@types/hast@3.0.4': 5169 + dependencies: 5170 + '@types/unist': 3.0.3 5171 + 5172 + '@types/mdast@4.0.4': 5173 + dependencies: 5174 + '@types/unist': 3.0.3 5175 + 5176 + '@types/ms@2.1.0': {} 5177 + 5178 + '@types/nlcst@2.0.3': 5179 + dependencies: 5180 + '@types/unist': 3.0.3 5181 + 821 5182 '@types/node@12.20.55': {} 822 5183 5184 + '@types/node@20.19.24': 5185 + dependencies: 5186 + undici-types: 6.21.0 5187 + 5188 + '@types/normalize-package-data@2.4.4': {} 5189 + 5190 + '@types/retry@0.12.2': {} 5191 + 5192 + '@types/triple-beam@1.3.5': {} 5193 + 5194 + '@types/unist@3.0.3': {} 5195 + 5196 + '@types/yauzl@2.10.3': 5197 + dependencies: 5198 + '@types/node': 20.19.24 5199 + optional: true 5200 + 5201 + '@typescript-eslint/project-service@8.46.3(typescript@5.9.3)': 5202 + dependencies: 5203 + '@typescript-eslint/tsconfig-utils': 8.46.3(typescript@5.9.3) 5204 + '@typescript-eslint/types': 8.46.3 5205 + debug: 4.4.3 5206 + typescript: 5.9.3 5207 + transitivePeerDependencies: 5208 + - supports-color 5209 + 5210 + '@typescript-eslint/tsconfig-utils@8.46.3(typescript@5.9.3)': 5211 + dependencies: 5212 + typescript: 5.9.3 5213 + 5214 + '@typescript-eslint/types@8.46.3': {} 5215 + 5216 + '@typescript-eslint/typescript-estree@8.46.3(typescript@5.9.3)': 5217 + dependencies: 5218 + '@typescript-eslint/project-service': 8.46.3(typescript@5.9.3) 5219 + '@typescript-eslint/tsconfig-utils': 8.46.3(typescript@5.9.3) 5220 + '@typescript-eslint/types': 8.46.3 5221 + '@typescript-eslint/visitor-keys': 8.46.3 5222 + debug: 4.4.3 5223 + fast-glob: 3.3.3 5224 + is-glob: 4.0.3 5225 + minimatch: 9.0.5 5226 + semver: 7.7.3 5227 + ts-api-utils: 2.1.0(typescript@5.9.3) 5228 + typescript: 5.9.3 5229 + transitivePeerDependencies: 5230 + - supports-color 5231 + 5232 + '@typescript-eslint/visitor-keys@8.46.3': 5233 + dependencies: 5234 + '@typescript-eslint/types': 8.46.3 5235 + eslint-visitor-keys: 4.2.1 5236 + 5237 + '@ungap/structured-clone@1.3.0': {} 5238 + 5239 + '@vercel/nft@0.29.4(rollup@4.53.1)': 5240 + dependencies: 5241 + '@mapbox/node-pre-gyp': 2.0.0 5242 + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) 5243 + acorn: 8.15.0 5244 + acorn-import-attributes: 1.9.5(acorn@8.15.0) 5245 + async-sema: 3.1.1 5246 + bindings: 1.5.0 5247 + estree-walker: 2.0.2 5248 + glob: 10.4.5 5249 + graceful-fs: 4.2.11 5250 + node-gyp-build: 4.8.4 5251 + picomatch: 4.0.3 5252 + resolve-from: 5.0.0 5253 + transitivePeerDependencies: 5254 + - encoding 5255 + - rollup 5256 + - supports-color 5257 + 5258 + '@vercel/nft@0.30.3(rollup@4.53.1)': 5259 + dependencies: 5260 + '@mapbox/node-pre-gyp': 2.0.0 5261 + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) 5262 + acorn: 8.15.0 5263 + acorn-import-attributes: 1.9.5(acorn@8.15.0) 5264 + async-sema: 3.1.1 5265 + bindings: 1.5.0 5266 + estree-walker: 2.0.2 5267 + glob: 10.4.5 5268 + graceful-fs: 4.2.11 5269 + node-gyp-build: 4.8.4 5270 + picomatch: 4.0.3 5271 + resolve-from: 5.0.0 5272 + transitivePeerDependencies: 5273 + - encoding 5274 + - rollup 5275 + - supports-color 5276 + 5277 + '@vue/compiler-core@3.5.24': 5278 + dependencies: 5279 + '@babel/parser': 7.28.5 5280 + '@vue/shared': 3.5.24 5281 + entities: 4.5.0 5282 + estree-walker: 2.0.2 5283 + source-map-js: 1.2.1 5284 + 5285 + '@vue/compiler-dom@3.5.24': 5286 + dependencies: 5287 + '@vue/compiler-core': 3.5.24 5288 + '@vue/shared': 3.5.24 5289 + 5290 + '@vue/compiler-sfc@3.5.24': 5291 + dependencies: 5292 + '@babel/parser': 7.28.5 5293 + '@vue/compiler-core': 3.5.24 5294 + '@vue/compiler-dom': 3.5.24 5295 + '@vue/compiler-ssr': 3.5.24 5296 + '@vue/shared': 3.5.24 5297 + estree-walker: 2.0.2 5298 + magic-string: 0.30.21 5299 + postcss: 8.5.6 5300 + source-map-js: 1.2.1 5301 + 5302 + '@vue/compiler-ssr@3.5.24': 5303 + dependencies: 5304 + '@vue/compiler-dom': 3.5.24 5305 + '@vue/shared': 3.5.24 5306 + 5307 + '@vue/shared@3.5.24': {} 5308 + 5309 + '@whatwg-node/disposablestack@0.0.6': 5310 + dependencies: 5311 + '@whatwg-node/promise-helpers': 1.3.2 5312 + tslib: 2.8.1 5313 + 5314 + '@whatwg-node/fetch@0.10.12': 5315 + dependencies: 5316 + '@whatwg-node/node-fetch': 0.8.2 5317 + urlpattern-polyfill: 10.1.0 5318 + 5319 + '@whatwg-node/node-fetch@0.8.2': 5320 + dependencies: 5321 + '@fastify/busboy': 3.2.0 5322 + '@whatwg-node/disposablestack': 0.0.6 5323 + '@whatwg-node/promise-helpers': 1.3.2 5324 + tslib: 2.8.1 5325 + 5326 + '@whatwg-node/promise-helpers@1.3.2': 5327 + dependencies: 5328 + tslib: 2.8.1 5329 + 5330 + '@whatwg-node/server@0.10.15': 5331 + dependencies: 5332 + '@envelop/instrumentation': 1.0.0 5333 + '@whatwg-node/disposablestack': 0.0.6 5334 + '@whatwg-node/fetch': 0.10.12 5335 + '@whatwg-node/promise-helpers': 1.3.2 5336 + tslib: 2.8.1 5337 + 5338 + abbrev@3.0.1: {} 5339 + 5340 + abort-controller@3.0.0: 5341 + dependencies: 5342 + event-target-shim: 5.0.1 5343 + 5344 + acorn-import-attributes@1.9.5(acorn@8.15.0): 5345 + dependencies: 5346 + acorn: 8.15.0 5347 + 5348 + acorn@8.15.0: {} 5349 + 5350 + agent-base@7.1.4: {} 5351 + 5352 + ajv-errors@3.0.0(ajv@8.17.1): 5353 + dependencies: 5354 + ajv: 8.17.1 5355 + 5356 + ajv@8.17.1: 5357 + dependencies: 5358 + fast-deep-equal: 3.1.3 5359 + fast-uri: 3.1.0 5360 + json-schema-traverse: 1.0.0 5361 + require-from-string: 2.0.2 5362 + 5363 + ansi-align@3.0.1: 5364 + dependencies: 5365 + string-width: 4.2.3 5366 + 823 5367 ansi-colors@4.1.3: {} 824 5368 825 5369 ansi-regex@5.0.1: {} 826 5370 5371 + ansi-regex@6.2.2: {} 5372 + 5373 + ansi-styles@4.3.0: 5374 + dependencies: 5375 + color-convert: 2.0.1 5376 + 5377 + ansi-styles@6.2.3: {} 5378 + 5379 + ansis@4.2.0: {} 5380 + 5381 + anymatch@3.1.3: 5382 + dependencies: 5383 + normalize-path: 3.0.0 5384 + picomatch: 2.3.1 5385 + 5386 + archiver-utils@5.0.2: 5387 + dependencies: 5388 + glob: 10.4.5 5389 + graceful-fs: 4.2.11 5390 + is-stream: 2.0.1 5391 + lazystream: 1.0.1 5392 + lodash: 4.17.21 5393 + normalize-path: 3.0.0 5394 + readable-stream: 4.7.0 5395 + 5396 + archiver@7.0.1: 5397 + dependencies: 5398 + archiver-utils: 5.0.2 5399 + async: 3.2.6 5400 + buffer-crc32: 1.0.0 5401 + readable-stream: 4.7.0 5402 + readdir-glob: 1.1.3 5403 + tar-stream: 3.1.7 5404 + zip-stream: 6.0.1 5405 + transitivePeerDependencies: 5406 + - bare-abort-controller 5407 + - react-native-b4a 5408 + 827 5409 argparse@1.0.10: 828 5410 dependencies: 829 5411 sprintf-js: 1.0.3 830 5412 5413 + argparse@2.0.1: {} 5414 + 5415 + aria-query@5.3.2: {} 5416 + 5417 + array-iterate@2.0.1: {} 5418 + 831 5419 array-union@2.1.0: {} 832 5420 5421 + ast-module-types@6.0.1: {} 5422 + 5423 + astro@5.15.4(@netlify/blobs@10.3.3)(@types/node@20.19.24)(jiti@2.6.1)(rollup@4.53.1)(typescript@5.9.3)(yaml@2.8.1): 5424 + dependencies: 5425 + '@astrojs/compiler': 2.13.0 5426 + '@astrojs/internal-helpers': 0.7.4 5427 + '@astrojs/markdown-remark': 6.3.8 5428 + '@astrojs/telemetry': 3.3.0 5429 + '@capsizecss/unpack': 3.0.0 5430 + '@oslojs/encoding': 1.1.0 5431 + '@rollup/pluginutils': 5.3.0(rollup@4.53.1) 5432 + acorn: 8.15.0 5433 + aria-query: 5.3.2 5434 + axobject-query: 4.1.0 5435 + boxen: 8.0.1 5436 + ci-info: 4.3.1 5437 + clsx: 2.1.1 5438 + common-ancestor-path: 1.0.1 5439 + cookie: 1.0.2 5440 + cssesc: 3.0.0 5441 + debug: 4.4.3 5442 + deterministic-object-hash: 2.0.2 5443 + devalue: 5.4.2 5444 + diff: 5.2.0 5445 + dlv: 1.1.3 5446 + dset: 3.1.4 5447 + es-module-lexer: 1.7.0 5448 + esbuild: 0.25.12 5449 + estree-walker: 3.0.3 5450 + flattie: 1.1.1 5451 + fontace: 0.3.1 5452 + github-slugger: 2.0.0 5453 + html-escaper: 3.0.3 5454 + http-cache-semantics: 4.2.0 5455 + import-meta-resolve: 4.2.0 5456 + js-yaml: 4.1.0 5457 + magic-string: 0.30.21 5458 + magicast: 0.3.5 5459 + mrmime: 2.0.1 5460 + neotraverse: 0.6.18 5461 + p-limit: 6.2.0 5462 + p-queue: 8.1.1 5463 + package-manager-detector: 1.5.0 5464 + picocolors: 1.1.1 5465 + picomatch: 4.0.3 5466 + prompts: 2.4.2 5467 + rehype: 13.0.2 5468 + semver: 7.7.3 5469 + shiki: 3.15.0 5470 + smol-toml: 1.4.2 5471 + tinyexec: 1.0.2 5472 + tinyglobby: 0.2.15 5473 + tsconfck: 3.1.6(typescript@5.9.3) 5474 + ultrahtml: 1.6.0 5475 + unifont: 0.6.0 5476 + unist-util-visit: 5.0.0 5477 + unstorage: 1.17.2(@netlify/blobs@10.3.3) 5478 + vfile: 6.0.3 5479 + vite: 6.4.1(@types/node@20.19.24)(jiti@2.6.1)(yaml@2.8.1) 5480 + vitefu: 1.1.1(vite@6.4.1(@types/node@20.19.24)(jiti@2.6.1)(yaml@2.8.1)) 5481 + xxhash-wasm: 1.1.0 5482 + yargs-parser: 21.1.1 5483 + yocto-spinner: 0.2.3 5484 + zod: 3.25.76 5485 + zod-to-json-schema: 3.24.6(zod@3.25.76) 5486 + zod-to-ts: 1.2.0(typescript@5.9.3)(zod@3.25.76) 5487 + optionalDependencies: 5488 + sharp: 0.34.5 5489 + transitivePeerDependencies: 5490 + - '@azure/app-configuration' 5491 + - '@azure/cosmos' 5492 + - '@azure/data-tables' 5493 + - '@azure/identity' 5494 + - '@azure/keyvault-secrets' 5495 + - '@azure/storage-blob' 5496 + - '@capacitor/preferences' 5497 + - '@deno/kv' 5498 + - '@netlify/blobs' 5499 + - '@planetscale/database' 5500 + - '@types/node' 5501 + - '@upstash/redis' 5502 + - '@vercel/blob' 5503 + - '@vercel/functions' 5504 + - '@vercel/kv' 5505 + - aws4fetch 5506 + - db0 5507 + - idb-keyval 5508 + - ioredis 5509 + - jiti 5510 + - less 5511 + - lightningcss 5512 + - rollup 5513 + - sass 5514 + - sass-embedded 5515 + - stylus 5516 + - sugarss 5517 + - supports-color 5518 + - terser 5519 + - tsx 5520 + - typescript 5521 + - uploadthing 5522 + - yaml 5523 + 5524 + async-sema@3.1.1: {} 5525 + 5526 + async@3.2.6: {} 5527 + 5528 + axobject-query@4.1.0: {} 5529 + 5530 + b4a@1.7.3: {} 5531 + 5532 + bail@2.0.2: {} 5533 + 5534 + balanced-match@1.0.2: {} 5535 + 5536 + bare-events@2.8.2: {} 5537 + 5538 + base-64@1.0.0: {} 5539 + 5540 + base64-js@1.5.1: {} 5541 + 5542 + better-ajv-errors@1.2.0(ajv@8.17.1): 5543 + dependencies: 5544 + '@babel/code-frame': 7.27.1 5545 + '@humanwhocodes/momoa': 2.0.4 5546 + ajv: 8.17.1 5547 + chalk: 4.1.2 5548 + jsonpointer: 5.0.1 5549 + leven: 3.1.0 5550 + 833 5551 better-path-resolve@1.0.0: 834 5552 dependencies: 835 5553 is-windows: 1.0.2 836 5554 5555 + bindings@1.5.0: 5556 + dependencies: 5557 + file-uri-to-path: 1.0.0 5558 + 5559 + bl@4.1.0: 5560 + dependencies: 5561 + buffer: 5.7.1 5562 + inherits: 2.0.4 5563 + readable-stream: 3.6.2 5564 + 5565 + boolbase@1.0.0: {} 5566 + 5567 + boxen@8.0.1: 5568 + dependencies: 5569 + ansi-align: 3.0.1 5570 + camelcase: 8.0.0 5571 + chalk: 5.6.2 5572 + cli-boxes: 3.0.0 5573 + string-width: 7.2.0 5574 + type-fest: 4.41.0 5575 + widest-line: 5.0.0 5576 + wrap-ansi: 9.0.2 5577 + 5578 + brace-expansion@2.0.2: 5579 + dependencies: 5580 + balanced-match: 1.0.2 5581 + 837 5582 braces@3.0.3: 838 5583 dependencies: 839 5584 fill-range: 7.1.1 840 5585 841 - chardet@0.7.0: {} 5586 + brotli@1.3.3: 5587 + dependencies: 5588 + base64-js: 1.5.1 5589 + 5590 + buffer-crc32@0.2.13: {} 5591 + 5592 + buffer-crc32@1.0.0: {} 5593 + 5594 + buffer-equal-constant-time@1.0.1: {} 5595 + 5596 + buffer-from@1.1.2: {} 5597 + 5598 + buffer@5.7.1: 5599 + dependencies: 5600 + base64-js: 1.5.1 5601 + ieee754: 1.2.1 5602 + 5603 + buffer@6.0.3: 5604 + dependencies: 5605 + base64-js: 1.5.1 5606 + ieee754: 1.2.1 5607 + 5608 + callsite@1.0.0: {} 5609 + 5610 + camelcase@8.0.0: {} 5611 + 5612 + canvas@3.2.0: 5613 + dependencies: 5614 + node-addon-api: 7.1.1 5615 + prebuild-install: 7.1.3 5616 + 5617 + ccount@2.0.1: {} 5618 + 5619 + chalk@4.1.2: 5620 + dependencies: 5621 + ansi-styles: 4.3.0 5622 + supports-color: 7.2.0 5623 + 5624 + chalk@5.6.2: {} 5625 + 5626 + character-entities-html4@2.1.0: {} 5627 + 5628 + character-entities-legacy@3.0.0: {} 5629 + 5630 + character-entities@2.0.2: {} 5631 + 5632 + chardet@2.1.1: {} 5633 + 5634 + chokidar@4.0.3: 5635 + dependencies: 5636 + readdirp: 4.1.2 5637 + 5638 + chownr@1.1.4: {} 5639 + 5640 + chownr@3.0.0: {} 842 5641 843 5642 ci-info@3.9.0: {} 5643 + 5644 + ci-info@4.3.1: {} 5645 + 5646 + citty@0.1.6: 5647 + dependencies: 5648 + consola: 3.4.2 5649 + 5650 + cjs-module-lexer@1.4.3: {} 5651 + 5652 + cli-boxes@3.0.0: {} 5653 + 5654 + clipboardy@4.0.0: 5655 + dependencies: 5656 + execa: 8.0.1 5657 + is-wsl: 3.1.0 5658 + is64bit: 2.0.0 5659 + 5660 + cliui@8.0.1: 5661 + dependencies: 5662 + string-width: 4.2.3 5663 + strip-ansi: 6.0.1 5664 + wrap-ansi: 7.0.0 5665 + 5666 + clone@2.1.2: {} 5667 + 5668 + clsx@2.1.1: {} 5669 + 5670 + color-convert@2.0.1: 5671 + dependencies: 5672 + color-name: 1.1.4 5673 + 5674 + color-convert@3.1.2: 5675 + dependencies: 5676 + color-name: 2.0.2 5677 + 5678 + color-name@1.1.4: {} 5679 + 5680 + color-name@2.0.2: {} 5681 + 5682 + color-string@2.1.2: 5683 + dependencies: 5684 + color-name: 2.0.2 5685 + 5686 + color@5.0.2: 5687 + dependencies: 5688 + color-convert: 3.1.2 5689 + color-string: 2.1.2 5690 + 5691 + comma-separated-tokens@2.0.3: {} 5692 + 5693 + commander@10.0.1: {} 5694 + 5695 + commander@11.1.0: {} 5696 + 5697 + commander@12.1.0: {} 5698 + 5699 + commander@2.20.3: {} 5700 + 5701 + common-ancestor-path@1.0.1: {} 5702 + 5703 + common-path-prefix@3.0.0: {} 5704 + 5705 + compress-commons@6.0.2: 5706 + dependencies: 5707 + crc-32: 1.2.2 5708 + crc32-stream: 6.0.0 5709 + is-stream: 2.0.1 5710 + normalize-path: 3.0.0 5711 + readable-stream: 4.7.0 5712 + 5713 + confbox@0.1.8: {} 5714 + 5715 + consola@3.4.2: {} 5716 + 5717 + cookie-es@1.2.2: {} 5718 + 5719 + cookie@1.0.2: {} 5720 + 5721 + copy-file@11.1.0: 5722 + dependencies: 5723 + graceful-fs: 4.2.11 5724 + p-event: 6.0.1 5725 + 5726 + core-util-is@1.0.3: {} 5727 + 5728 + crc-32@1.2.2: {} 5729 + 5730 + crc32-stream@6.0.0: 5731 + dependencies: 5732 + crc-32: 1.2.2 5733 + readable-stream: 4.7.0 5734 + 5735 + cron-parser@4.9.0: 5736 + dependencies: 5737 + luxon: 3.7.2 844 5738 845 5739 cross-spawn@7.0.6: 846 5740 dependencies: ··· 848 5742 shebang-command: 2.0.0 849 5743 which: 2.0.2 850 5744 5745 + crossws@0.3.5: 5746 + dependencies: 5747 + uncrypto: 0.1.3 5748 + 5749 + css-select@5.2.2: 5750 + dependencies: 5751 + boolbase: 1.0.0 5752 + css-what: 6.2.2 5753 + domhandler: 5.0.3 5754 + domutils: 3.2.2 5755 + nth-check: 2.1.1 5756 + 5757 + css-tree@2.2.1: 5758 + dependencies: 5759 + mdn-data: 2.0.28 5760 + source-map-js: 1.2.1 5761 + 5762 + css-tree@3.1.0: 5763 + dependencies: 5764 + mdn-data: 2.12.2 5765 + source-map-js: 1.2.1 5766 + 5767 + css-what@6.2.2: {} 5768 + 5769 + cssesc@3.0.0: {} 5770 + 5771 + cssfilter@0.0.10: {} 5772 + 5773 + csso@5.0.5: 5774 + dependencies: 5775 + css-tree: 2.2.1 5776 + 5777 + culori@4.0.2: {} 5778 + 5779 + data-uri-to-buffer@4.0.1: {} 5780 + 851 5781 dataloader@1.4.0: {} 852 5782 853 - debug@4.4.1: 5783 + debug@4.4.3: 854 5784 dependencies: 855 5785 ms: 2.1.3 856 5786 5787 + decache@4.6.2: 5788 + dependencies: 5789 + callsite: 1.0.0 5790 + 5791 + decode-named-character-reference@1.2.0: 5792 + dependencies: 5793 + character-entities: 2.0.2 5794 + 5795 + decompress-response@6.0.0: 5796 + dependencies: 5797 + mimic-response: 3.1.0 5798 + 5799 + dedent@1.7.0: {} 5800 + 5801 + deep-extend@0.6.0: {} 5802 + 5803 + deepmerge@4.3.1: {} 5804 + 5805 + defu@6.1.4: {} 5806 + 5807 + dequal@2.0.3: {} 5808 + 5809 + destr@2.0.5: {} 5810 + 857 5811 detect-indent@6.1.0: {} 858 5812 5813 + detect-libc@1.0.3: {} 5814 + 5815 + detect-libc@2.1.2: {} 5816 + 5817 + detective-amd@6.0.1: 5818 + dependencies: 5819 + ast-module-types: 6.0.1 5820 + escodegen: 2.1.0 5821 + get-amd-module-type: 6.0.1 5822 + node-source-walk: 7.0.1 5823 + 5824 + detective-cjs@6.0.1: 5825 + dependencies: 5826 + ast-module-types: 6.0.1 5827 + node-source-walk: 7.0.1 5828 + 5829 + detective-es6@5.0.1: 5830 + dependencies: 5831 + node-source-walk: 7.0.1 5832 + 5833 + detective-postcss@7.0.1(postcss@8.5.6): 5834 + dependencies: 5835 + is-url: 1.2.4 5836 + postcss: 8.5.6 5837 + postcss-values-parser: 6.0.2(postcss@8.5.6) 5838 + 5839 + detective-sass@6.0.1: 5840 + dependencies: 5841 + gonzales-pe: 4.3.0 5842 + node-source-walk: 7.0.1 5843 + 5844 + detective-scss@5.0.1: 5845 + dependencies: 5846 + gonzales-pe: 4.3.0 5847 + node-source-walk: 7.0.1 5848 + 5849 + detective-stylus@5.0.1: {} 5850 + 5851 + detective-typescript@14.0.0(typescript@5.9.3): 5852 + dependencies: 5853 + '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3) 5854 + ast-module-types: 6.0.1 5855 + node-source-walk: 7.0.1 5856 + typescript: 5.9.3 5857 + transitivePeerDependencies: 5858 + - supports-color 5859 + 5860 + detective-vue2@2.2.0(typescript@5.9.3): 5861 + dependencies: 5862 + '@dependents/detective-less': 5.0.1 5863 + '@vue/compiler-sfc': 3.5.24 5864 + detective-es6: 5.0.1 5865 + detective-sass: 6.0.1 5866 + detective-scss: 5.0.1 5867 + detective-stylus: 5.0.1 5868 + detective-typescript: 14.0.0(typescript@5.9.3) 5869 + typescript: 5.9.3 5870 + transitivePeerDependencies: 5871 + - supports-color 5872 + 5873 + deterministic-object-hash@2.0.2: 5874 + dependencies: 5875 + base-64: 1.0.0 5876 + 5877 + dettle@1.0.5: {} 5878 + 5879 + devalue@5.4.2: {} 5880 + 5881 + devlop@1.1.0: 5882 + dependencies: 5883 + dequal: 2.0.3 5884 + 5885 + dfa@1.2.0: {} 5886 + 5887 + diff@5.2.0: {} 5888 + 859 5889 dir-glob@3.0.1: 860 5890 dependencies: 861 5891 path-type: 4.0.0 862 5892 5893 + dlv@1.1.3: {} 5894 + 5895 + dom-serializer@2.0.0: 5896 + dependencies: 5897 + domelementtype: 2.3.0 5898 + domhandler: 5.0.3 5899 + entities: 4.5.0 5900 + 5901 + domelementtype@2.3.0: {} 5902 + 5903 + domhandler@5.0.3: 5904 + dependencies: 5905 + domelementtype: 2.3.0 5906 + 5907 + domutils@3.2.2: 5908 + dependencies: 5909 + dom-serializer: 2.0.0 5910 + domelementtype: 2.3.0 5911 + domhandler: 5.0.3 5912 + 5913 + dot-prop@9.0.0: 5914 + dependencies: 5915 + type-fest: 4.41.0 5916 + 5917 + dotenv@16.6.1: {} 5918 + 863 5919 dotenv@8.6.0: {} 864 5920 5921 + dset@3.1.4: {} 5922 + 5923 + eastasianwidth@0.2.0: {} 5924 + 5925 + ecdsa-sig-formatter@1.0.11: 5926 + dependencies: 5927 + safe-buffer: 5.2.1 5928 + 5929 + emoji-regex@10.6.0: {} 5930 + 5931 + emoji-regex@8.0.0: {} 5932 + 5933 + emoji-regex@9.2.2: {} 5934 + 5935 + empathic@2.0.0: {} 5936 + 5937 + enabled@2.0.0: {} 5938 + 5939 + end-of-stream@1.4.5: 5940 + dependencies: 5941 + once: 1.4.0 5942 + 865 5943 enquirer@2.4.1: 866 5944 dependencies: 867 5945 ansi-colors: 4.1.3 868 5946 strip-ansi: 6.0.1 869 5947 5948 + entities@4.5.0: {} 5949 + 5950 + entities@6.0.1: {} 5951 + 5952 + env-paths@3.0.0: {} 5953 + 5954 + es-module-lexer@1.7.0: {} 5955 + 5956 + esbuild@0.25.11: 5957 + optionalDependencies: 5958 + '@esbuild/aix-ppc64': 0.25.11 5959 + '@esbuild/android-arm': 0.25.11 5960 + '@esbuild/android-arm64': 0.25.11 5961 + '@esbuild/android-x64': 0.25.11 5962 + '@esbuild/darwin-arm64': 0.25.11 5963 + '@esbuild/darwin-x64': 0.25.11 5964 + '@esbuild/freebsd-arm64': 0.25.11 5965 + '@esbuild/freebsd-x64': 0.25.11 5966 + '@esbuild/linux-arm': 0.25.11 5967 + '@esbuild/linux-arm64': 0.25.11 5968 + '@esbuild/linux-ia32': 0.25.11 5969 + '@esbuild/linux-loong64': 0.25.11 5970 + '@esbuild/linux-mips64el': 0.25.11 5971 + '@esbuild/linux-ppc64': 0.25.11 5972 + '@esbuild/linux-riscv64': 0.25.11 5973 + '@esbuild/linux-s390x': 0.25.11 5974 + '@esbuild/linux-x64': 0.25.11 5975 + '@esbuild/netbsd-arm64': 0.25.11 5976 + '@esbuild/netbsd-x64': 0.25.11 5977 + '@esbuild/openbsd-arm64': 0.25.11 5978 + '@esbuild/openbsd-x64': 0.25.11 5979 + '@esbuild/openharmony-arm64': 0.25.11 5980 + '@esbuild/sunos-x64': 0.25.11 5981 + '@esbuild/win32-arm64': 0.25.11 5982 + '@esbuild/win32-ia32': 0.25.11 5983 + '@esbuild/win32-x64': 0.25.11 5984 + 5985 + esbuild@0.25.12: 5986 + optionalDependencies: 5987 + '@esbuild/aix-ppc64': 0.25.12 5988 + '@esbuild/android-arm': 0.25.12 5989 + '@esbuild/android-arm64': 0.25.12 5990 + '@esbuild/android-x64': 0.25.12 5991 + '@esbuild/darwin-arm64': 0.25.12 5992 + '@esbuild/darwin-x64': 0.25.12 5993 + '@esbuild/freebsd-arm64': 0.25.12 5994 + '@esbuild/freebsd-x64': 0.25.12 5995 + '@esbuild/linux-arm': 0.25.12 5996 + '@esbuild/linux-arm64': 0.25.12 5997 + '@esbuild/linux-ia32': 0.25.12 5998 + '@esbuild/linux-loong64': 0.25.12 5999 + '@esbuild/linux-mips64el': 0.25.12 6000 + '@esbuild/linux-ppc64': 0.25.12 6001 + '@esbuild/linux-riscv64': 0.25.12 6002 + '@esbuild/linux-s390x': 0.25.12 6003 + '@esbuild/linux-x64': 0.25.12 6004 + '@esbuild/netbsd-arm64': 0.25.12 6005 + '@esbuild/netbsd-x64': 0.25.12 6006 + '@esbuild/openbsd-arm64': 0.25.12 6007 + '@esbuild/openbsd-x64': 0.25.12 6008 + '@esbuild/openharmony-arm64': 0.25.12 6009 + '@esbuild/sunos-x64': 0.25.12 6010 + '@esbuild/win32-arm64': 0.25.12 6011 + '@esbuild/win32-ia32': 0.25.12 6012 + '@esbuild/win32-x64': 0.25.12 6013 + 6014 + escalade@3.2.0: {} 6015 + 6016 + escape-string-regexp@5.0.0: {} 6017 + 6018 + escodegen@2.1.0: 6019 + dependencies: 6020 + esprima: 4.0.1 6021 + estraverse: 5.3.0 6022 + esutils: 2.0.3 6023 + optionalDependencies: 6024 + source-map: 0.6.1 6025 + 6026 + eslint-visitor-keys@4.2.1: {} 6027 + 870 6028 esprima@4.0.1: {} 871 6029 6030 + estraverse@5.3.0: {} 6031 + 6032 + estree-walker@2.0.2: {} 6033 + 6034 + estree-walker@3.0.3: 6035 + dependencies: 6036 + '@types/estree': 1.0.8 6037 + 6038 + esutils@2.0.3: {} 6039 + 6040 + etag@1.8.1: {} 6041 + 6042 + event-target-shim@5.0.1: {} 6043 + 6044 + eventemitter3@5.0.1: {} 6045 + 6046 + events-universal@1.0.1: 6047 + dependencies: 6048 + bare-events: 2.8.2 6049 + transitivePeerDependencies: 6050 + - bare-abort-controller 6051 + 6052 + events@3.3.0: {} 6053 + 6054 + execa@8.0.1: 6055 + dependencies: 6056 + cross-spawn: 7.0.6 6057 + get-stream: 8.0.1 6058 + human-signals: 5.0.0 6059 + is-stream: 3.0.0 6060 + merge-stream: 2.0.0 6061 + npm-run-path: 5.3.0 6062 + onetime: 6.0.0 6063 + signal-exit: 4.1.0 6064 + strip-final-newline: 3.0.0 6065 + 6066 + expand-template@2.0.3: {} 6067 + 6068 + extend@3.0.2: {} 6069 + 872 6070 extendable-error@0.1.7: {} 873 6071 874 - external-editor@3.1.0: 6072 + extract-zip@2.0.1: 875 6073 dependencies: 876 - chardet: 0.7.0 877 - iconv-lite: 0.4.24 878 - tmp: 0.0.33 6074 + debug: 4.4.3 6075 + get-stream: 5.2.0 6076 + yauzl: 2.10.0 6077 + optionalDependencies: 6078 + '@types/yauzl': 2.10.3 6079 + transitivePeerDependencies: 6080 + - supports-color 6081 + 6082 + fast-deep-equal@3.1.3: {} 6083 + 6084 + fast-fifo@1.3.2: {} 879 6085 880 6086 fast-glob@3.3.3: 881 6087 dependencies: ··· 885 6091 merge2: 1.4.1 886 6092 micromatch: 4.0.8 887 6093 6094 + fast-safe-stringify@2.1.1: {} 6095 + 6096 + fast-uri@3.1.0: {} 6097 + 888 6098 fastq@1.19.1: 889 6099 dependencies: 890 6100 reusify: 1.1.0 891 6101 6102 + fd-slicer@1.1.0: 6103 + dependencies: 6104 + pend: 1.2.0 6105 + 6106 + fdir@6.5.0(picomatch@4.0.3): 6107 + optionalDependencies: 6108 + picomatch: 4.0.3 6109 + 6110 + fecha@4.2.3: {} 6111 + 6112 + fetch-blob@3.2.0: 6113 + dependencies: 6114 + node-domexception: 1.0.0 6115 + web-streams-polyfill: 3.3.3 6116 + 6117 + figures@6.1.0: 6118 + dependencies: 6119 + is-unicode-supported: 2.1.0 6120 + 6121 + file-uri-to-path@1.0.0: {} 6122 + 892 6123 fill-range@7.1.1: 893 6124 dependencies: 894 6125 to-regex-range: 5.0.1 895 6126 6127 + filter-obj@6.1.0: {} 6128 + 6129 + find-up-simple@1.0.1: {} 6130 + 896 6131 find-up@4.1.0: 897 6132 dependencies: 898 6133 locate-path: 5.0.0 899 6134 path-exists: 4.0.0 900 6135 6136 + find-up@7.0.0: 6137 + dependencies: 6138 + locate-path: 7.2.0 6139 + path-exists: 5.0.0 6140 + unicorn-magic: 0.1.0 6141 + 6142 + flattie@1.1.1: {} 6143 + 6144 + fn.name@1.1.0: {} 6145 + 6146 + fontace@0.3.1: 6147 + dependencies: 6148 + '@types/fontkit': 2.0.8 6149 + fontkit: 2.0.4 6150 + 6151 + fontkit@2.0.4: 6152 + dependencies: 6153 + '@swc/helpers': 0.5.17 6154 + brotli: 1.3.3 6155 + clone: 2.1.2 6156 + dfa: 1.2.0 6157 + fast-deep-equal: 3.1.3 6158 + restructure: 3.0.2 6159 + tiny-inflate: 1.0.3 6160 + unicode-properties: 1.4.1 6161 + unicode-trie: 2.0.0 6162 + 6163 + foreground-child@3.3.1: 6164 + dependencies: 6165 + cross-spawn: 7.0.6 6166 + signal-exit: 4.1.0 6167 + 6168 + formdata-polyfill@4.0.10: 6169 + dependencies: 6170 + fetch-blob: 3.2.0 6171 + 6172 + fs-constants@1.0.0: {} 6173 + 901 6174 fs-extra@7.0.1: 902 6175 dependencies: 903 6176 graceful-fs: 4.2.11 ··· 910 6183 jsonfile: 4.0.0 911 6184 universalify: 0.1.2 912 6185 6186 + fsevents@2.3.3: 6187 + optional: true 6188 + 6189 + function-bind@1.1.2: {} 6190 + 6191 + get-amd-module-type@6.0.1: 6192 + dependencies: 6193 + ast-module-types: 6.0.1 6194 + node-source-walk: 7.0.1 6195 + 6196 + get-caller-file@2.0.5: {} 6197 + 6198 + get-east-asian-width@1.4.0: {} 6199 + 6200 + get-port-please@3.2.0: {} 6201 + 6202 + get-port@7.1.0: {} 6203 + 6204 + get-stream@5.2.0: 6205 + dependencies: 6206 + pump: 3.0.3 6207 + 6208 + get-stream@8.0.1: {} 6209 + 6210 + github-from-package@0.0.0: {} 6211 + 6212 + github-slugger@2.0.0: {} 6213 + 913 6214 glob-parent@5.1.2: 914 6215 dependencies: 915 6216 is-glob: 4.0.3 916 6217 917 - globals@11.12.0: {} 6218 + glob@10.4.5: 6219 + dependencies: 6220 + foreground-child: 3.3.1 6221 + jackspeak: 3.4.3 6222 + minimatch: 9.0.5 6223 + minipass: 7.1.2 6224 + package-json-from-dist: 1.0.1 6225 + path-scurry: 1.11.1 918 6226 919 6227 globby@11.1.0: 920 6228 dependencies: ··· 925 6233 merge2: 1.4.1 926 6234 slash: 3.0.0 927 6235 6236 + gonzales-pe@4.3.0: 6237 + dependencies: 6238 + minimist: 1.2.8 6239 + 928 6240 graceful-fs@4.2.11: {} 929 6241 930 - human-id@4.1.1: {} 6242 + h3@1.15.4: 6243 + dependencies: 6244 + cookie-es: 1.2.2 6245 + crossws: 0.3.5 6246 + defu: 6.1.4 6247 + destr: 2.0.5 6248 + iron-webcrypto: 1.2.1 6249 + node-mock-http: 1.0.3 6250 + radix3: 1.1.2 6251 + ufo: 1.6.1 6252 + uncrypto: 0.1.3 6253 + 6254 + has-flag@4.0.0: {} 6255 + 6256 + hasown@2.0.2: 6257 + dependencies: 6258 + function-bind: 1.1.2 6259 + 6260 + hast-util-from-html@2.0.3: 6261 + dependencies: 6262 + '@types/hast': 3.0.4 6263 + devlop: 1.1.0 6264 + hast-util-from-parse5: 8.0.3 6265 + parse5: 7.3.0 6266 + vfile: 6.0.3 6267 + vfile-message: 4.0.3 6268 + 6269 + hast-util-from-parse5@8.0.3: 6270 + dependencies: 6271 + '@types/hast': 3.0.4 6272 + '@types/unist': 3.0.3 6273 + devlop: 1.1.0 6274 + hastscript: 9.0.1 6275 + property-information: 7.1.0 6276 + vfile: 6.0.3 6277 + vfile-location: 5.0.3 6278 + web-namespaces: 2.0.1 6279 + 6280 + hast-util-is-element@3.0.0: 6281 + dependencies: 6282 + '@types/hast': 3.0.4 6283 + 6284 + hast-util-parse-selector@4.0.0: 6285 + dependencies: 6286 + '@types/hast': 3.0.4 6287 + 6288 + hast-util-raw@9.1.0: 6289 + dependencies: 6290 + '@types/hast': 3.0.4 6291 + '@types/unist': 3.0.3 6292 + '@ungap/structured-clone': 1.3.0 6293 + hast-util-from-parse5: 8.0.3 6294 + hast-util-to-parse5: 8.0.0 6295 + html-void-elements: 3.0.0 6296 + mdast-util-to-hast: 13.2.0 6297 + parse5: 7.3.0 6298 + unist-util-position: 5.0.0 6299 + unist-util-visit: 5.0.0 6300 + vfile: 6.0.3 6301 + web-namespaces: 2.0.1 6302 + zwitch: 2.0.4 931 6303 932 - iconv-lite@0.4.24: 6304 + hast-util-to-html@9.0.5: 6305 + dependencies: 6306 + '@types/hast': 3.0.4 6307 + '@types/unist': 3.0.3 6308 + ccount: 2.0.1 6309 + comma-separated-tokens: 2.0.3 6310 + hast-util-whitespace: 3.0.0 6311 + html-void-elements: 3.0.0 6312 + mdast-util-to-hast: 13.2.0 6313 + property-information: 7.1.0 6314 + space-separated-tokens: 2.0.2 6315 + stringify-entities: 4.0.4 6316 + zwitch: 2.0.4 6317 + 6318 + hast-util-to-parse5@8.0.0: 6319 + dependencies: 6320 + '@types/hast': 3.0.4 6321 + comma-separated-tokens: 2.0.3 6322 + devlop: 1.1.0 6323 + property-information: 6.5.0 6324 + space-separated-tokens: 2.0.2 6325 + web-namespaces: 2.0.1 6326 + zwitch: 2.0.4 6327 + 6328 + hast-util-to-text@4.0.2: 6329 + dependencies: 6330 + '@types/hast': 3.0.4 6331 + '@types/unist': 3.0.3 6332 + hast-util-is-element: 3.0.0 6333 + unist-util-find-after: 5.0.0 6334 + 6335 + hast-util-whitespace@3.0.0: 6336 + dependencies: 6337 + '@types/hast': 3.0.4 6338 + 6339 + hastscript@9.0.1: 6340 + dependencies: 6341 + '@types/hast': 3.0.4 6342 + comma-separated-tokens: 2.0.3 6343 + hast-util-parse-selector: 4.0.0 6344 + property-information: 7.1.0 6345 + space-separated-tokens: 2.0.2 6346 + 6347 + hosted-git-info@7.0.2: 6348 + dependencies: 6349 + lru-cache: 10.4.3 6350 + 6351 + html-escaper@3.0.3: {} 6352 + 6353 + html-void-elements@3.0.0: {} 6354 + 6355 + http-cache-semantics@4.2.0: {} 6356 + 6357 + http-shutdown@1.2.2: {} 6358 + 6359 + https-proxy-agent@7.0.6: 6360 + dependencies: 6361 + agent-base: 7.1.4 6362 + debug: 4.4.3 6363 + transitivePeerDependencies: 6364 + - supports-color 6365 + 6366 + human-id@4.1.2: {} 6367 + 6368 + human-signals@5.0.0: {} 6369 + 6370 + iconv-lite@0.7.0: 933 6371 dependencies: 934 6372 safer-buffer: 2.1.2 935 6373 6374 + ieee754@1.2.1: {} 6375 + 936 6376 ignore@5.3.2: {} 937 6377 6378 + image-meta@0.2.2: {} 6379 + 6380 + image-size@2.0.2: {} 6381 + 6382 + import-in-the-middle@1.15.0: 6383 + dependencies: 6384 + acorn: 8.15.0 6385 + acorn-import-attributes: 1.9.5(acorn@8.15.0) 6386 + cjs-module-lexer: 1.4.3 6387 + module-details-from-path: 1.0.4 6388 + 6389 + import-meta-resolve@4.2.0: {} 6390 + 6391 + imurmurhash@0.1.4: {} 6392 + 6393 + indent-string@5.0.0: {} 6394 + 6395 + index-to-position@1.2.0: {} 6396 + 6397 + inherits@2.0.4: {} 6398 + 6399 + ini@1.3.8: {} 6400 + 6401 + ipx@3.1.1(@netlify/blobs@10.3.3): 6402 + dependencies: 6403 + '@fastify/accept-negotiator': 2.0.1 6404 + citty: 0.1.6 6405 + consola: 3.4.2 6406 + defu: 6.1.4 6407 + destr: 2.0.5 6408 + etag: 1.8.1 6409 + h3: 1.15.4 6410 + image-meta: 0.2.2 6411 + listhen: 1.9.0 6412 + ofetch: 1.5.1 6413 + pathe: 2.0.3 6414 + sharp: 0.34.5 6415 + svgo: 4.0.0 6416 + ufo: 1.6.1 6417 + unstorage: 1.17.2(@netlify/blobs@10.3.3) 6418 + xss: 1.0.15 6419 + transitivePeerDependencies: 6420 + - '@azure/app-configuration' 6421 + - '@azure/cosmos' 6422 + - '@azure/data-tables' 6423 + - '@azure/identity' 6424 + - '@azure/keyvault-secrets' 6425 + - '@azure/storage-blob' 6426 + - '@capacitor/preferences' 6427 + - '@deno/kv' 6428 + - '@netlify/blobs' 6429 + - '@planetscale/database' 6430 + - '@upstash/redis' 6431 + - '@vercel/blob' 6432 + - '@vercel/functions' 6433 + - '@vercel/kv' 6434 + - aws4fetch 6435 + - db0 6436 + - idb-keyval 6437 + - ioredis 6438 + - uploadthing 6439 + 6440 + iron-webcrypto@1.2.1: {} 6441 + 6442 + is-core-module@2.16.1: 6443 + dependencies: 6444 + hasown: 2.0.2 6445 + 6446 + is-docker@3.0.0: {} 6447 + 938 6448 is-extglob@2.1.1: {} 939 6449 6450 + is-fullwidth-code-point@3.0.0: {} 6451 + 940 6452 is-glob@4.0.3: 941 6453 dependencies: 942 6454 is-extglob: 2.1.1 943 6455 6456 + is-inside-container@1.0.0: 6457 + dependencies: 6458 + is-docker: 3.0.0 6459 + 6460 + is-network-error@1.3.0: {} 6461 + 944 6462 is-number@7.0.0: {} 945 6463 6464 + is-path-inside@4.0.0: {} 6465 + 6466 + is-plain-obj@2.1.0: {} 6467 + 6468 + is-plain-obj@4.1.0: {} 6469 + 6470 + is-stream@2.0.1: {} 6471 + 6472 + is-stream@3.0.0: {} 6473 + 6474 + is-stream@4.0.1: {} 6475 + 946 6476 is-subdir@1.2.0: 947 6477 dependencies: 948 6478 better-path-resolve: 1.0.0 6479 + 6480 + is-unicode-supported@2.1.0: {} 6481 + 6482 + is-url-superb@4.0.0: {} 6483 + 6484 + is-url@1.2.4: {} 949 6485 950 6486 is-windows@1.0.2: {} 951 6487 6488 + is-wsl@3.1.0: 6489 + dependencies: 6490 + is-inside-container: 1.0.0 6491 + 6492 + is64bit@2.0.0: 6493 + dependencies: 6494 + system-architecture: 0.1.0 6495 + 6496 + isarray@1.0.0: {} 6497 + 952 6498 isexe@2.0.0: {} 953 6499 6500 + jackspeak@3.4.3: 6501 + dependencies: 6502 + '@isaacs/cliui': 8.0.2 6503 + optionalDependencies: 6504 + '@pkgjs/parseargs': 0.11.0 6505 + 954 6506 javascript-natural-sort@0.7.1: {} 955 6507 6508 + jiti@2.6.1: {} 6509 + 6510 + jpeg-js@0.4.4: {} 6511 + 6512 + js-image-generator@1.0.4: 6513 + dependencies: 6514 + jpeg-js: 0.4.4 6515 + 956 6516 js-tokens@4.0.0: {} 957 6517 958 6518 js-yaml@3.14.1: 959 6519 dependencies: 960 6520 argparse: 1.0.10 961 6521 esprima: 4.0.1 6522 + 6523 + js-yaml@4.1.0: 6524 + dependencies: 6525 + argparse: 2.0.1 962 6526 963 6527 jsesc@3.1.0: {} 964 6528 6529 + json-schema-traverse@1.0.0: {} 6530 + 965 6531 jsonfile@4.0.0: 966 6532 optionalDependencies: 967 6533 graceful-fs: 4.2.11 968 6534 6535 + jsonpointer@5.0.1: {} 6536 + 6537 + jsonwebtoken@9.0.2: 6538 + dependencies: 6539 + jws: 3.2.2 6540 + lodash.includes: 4.3.0 6541 + lodash.isboolean: 3.0.3 6542 + lodash.isinteger: 4.0.4 6543 + lodash.isnumber: 3.0.3 6544 + lodash.isplainobject: 4.0.6 6545 + lodash.isstring: 4.0.1 6546 + lodash.once: 4.1.1 6547 + ms: 2.1.3 6548 + semver: 7.7.3 6549 + 6550 + junk@4.0.1: {} 6551 + 6552 + jwa@1.4.2: 6553 + dependencies: 6554 + buffer-equal-constant-time: 1.0.1 6555 + ecdsa-sig-formatter: 1.0.11 6556 + safe-buffer: 5.2.1 6557 + 6558 + jws@3.2.2: 6559 + dependencies: 6560 + jwa: 1.4.2 6561 + safe-buffer: 5.2.1 6562 + 6563 + jwt-decode@4.0.0: {} 6564 + 6565 + kleur@3.0.3: {} 6566 + 6567 + kuler@2.0.0: {} 6568 + 6569 + lambda-local@2.2.0: 6570 + dependencies: 6571 + commander: 10.0.1 6572 + dotenv: 16.6.1 6573 + winston: 3.18.3 6574 + 6575 + lazystream@1.0.1: 6576 + dependencies: 6577 + readable-stream: 2.3.8 6578 + 6579 + leven@3.1.0: {} 6580 + 6581 + listhen@1.9.0: 6582 + dependencies: 6583 + '@parcel/watcher': 2.5.1 6584 + '@parcel/watcher-wasm': 2.5.1 6585 + citty: 0.1.6 6586 + clipboardy: 4.0.0 6587 + consola: 3.4.2 6588 + crossws: 0.3.5 6589 + defu: 6.1.4 6590 + get-port-please: 3.2.0 6591 + h3: 1.15.4 6592 + http-shutdown: 1.2.2 6593 + jiti: 2.6.1 6594 + mlly: 1.8.0 6595 + node-forge: 1.3.1 6596 + pathe: 1.1.2 6597 + std-env: 3.10.0 6598 + ufo: 1.6.1 6599 + untun: 0.1.3 6600 + uqr: 0.1.2 6601 + 969 6602 locate-path@5.0.0: 970 6603 dependencies: 971 6604 p-locate: 4.1.0 972 6605 6606 + locate-path@7.2.0: 6607 + dependencies: 6608 + p-locate: 6.0.0 6609 + 6610 + lodash.includes@4.3.0: {} 6611 + 6612 + lodash.isboolean@3.0.3: {} 6613 + 6614 + lodash.isinteger@4.0.4: {} 6615 + 6616 + lodash.isnumber@3.0.3: {} 6617 + 6618 + lodash.isplainobject@4.0.6: {} 6619 + 6620 + lodash.isstring@4.0.1: {} 6621 + 6622 + lodash.once@4.1.1: {} 6623 + 973 6624 lodash.startcase@4.4.0: {} 974 6625 975 6626 lodash@4.17.21: {} 976 6627 6628 + logform@2.7.0: 6629 + dependencies: 6630 + '@colors/colors': 1.6.0 6631 + '@types/triple-beam': 1.3.5 6632 + fecha: 4.2.3 6633 + ms: 2.1.3 6634 + safe-stable-stringify: 2.5.0 6635 + triple-beam: 1.4.1 6636 + 6637 + long@5.3.2: {} 6638 + 6639 + longest-streak@3.1.0: {} 6640 + 6641 + lru-cache@10.4.3: {} 6642 + 6643 + luxon@3.7.2: {} 6644 + 6645 + magic-string@0.30.21: 6646 + dependencies: 6647 + '@jridgewell/sourcemap-codec': 1.5.5 6648 + 6649 + magicast@0.3.5: 6650 + dependencies: 6651 + '@babel/parser': 7.28.5 6652 + '@babel/types': 7.28.5 6653 + source-map-js: 1.2.1 6654 + 6655 + map-obj@5.0.2: {} 6656 + 6657 + markdown-table@3.0.4: {} 6658 + 6659 + mdast-util-definitions@6.0.0: 6660 + dependencies: 6661 + '@types/mdast': 4.0.4 6662 + '@types/unist': 3.0.3 6663 + unist-util-visit: 5.0.0 6664 + 6665 + mdast-util-find-and-replace@3.0.2: 6666 + dependencies: 6667 + '@types/mdast': 4.0.4 6668 + escape-string-regexp: 5.0.0 6669 + unist-util-is: 6.0.1 6670 + unist-util-visit-parents: 6.0.2 6671 + 6672 + mdast-util-from-markdown@2.0.2: 6673 + dependencies: 6674 + '@types/mdast': 4.0.4 6675 + '@types/unist': 3.0.3 6676 + decode-named-character-reference: 1.2.0 6677 + devlop: 1.1.0 6678 + mdast-util-to-string: 4.0.0 6679 + micromark: 4.0.2 6680 + micromark-util-decode-numeric-character-reference: 2.0.2 6681 + micromark-util-decode-string: 2.0.1 6682 + micromark-util-normalize-identifier: 2.0.1 6683 + micromark-util-symbol: 2.0.1 6684 + micromark-util-types: 2.0.2 6685 + unist-util-stringify-position: 4.0.0 6686 + transitivePeerDependencies: 6687 + - supports-color 6688 + 6689 + mdast-util-gfm-autolink-literal@2.0.1: 6690 + dependencies: 6691 + '@types/mdast': 4.0.4 6692 + ccount: 2.0.1 6693 + devlop: 1.1.0 6694 + mdast-util-find-and-replace: 3.0.2 6695 + micromark-util-character: 2.1.1 6696 + 6697 + mdast-util-gfm-footnote@2.1.0: 6698 + dependencies: 6699 + '@types/mdast': 4.0.4 6700 + devlop: 1.1.0 6701 + mdast-util-from-markdown: 2.0.2 6702 + mdast-util-to-markdown: 2.1.2 6703 + micromark-util-normalize-identifier: 2.0.1 6704 + transitivePeerDependencies: 6705 + - supports-color 6706 + 6707 + mdast-util-gfm-strikethrough@2.0.0: 6708 + dependencies: 6709 + '@types/mdast': 4.0.4 6710 + mdast-util-from-markdown: 2.0.2 6711 + mdast-util-to-markdown: 2.1.2 6712 + transitivePeerDependencies: 6713 + - supports-color 6714 + 6715 + mdast-util-gfm-table@2.0.0: 6716 + dependencies: 6717 + '@types/mdast': 4.0.4 6718 + devlop: 1.1.0 6719 + markdown-table: 3.0.4 6720 + mdast-util-from-markdown: 2.0.2 6721 + mdast-util-to-markdown: 2.1.2 6722 + transitivePeerDependencies: 6723 + - supports-color 6724 + 6725 + mdast-util-gfm-task-list-item@2.0.0: 6726 + dependencies: 6727 + '@types/mdast': 4.0.4 6728 + devlop: 1.1.0 6729 + mdast-util-from-markdown: 2.0.2 6730 + mdast-util-to-markdown: 2.1.2 6731 + transitivePeerDependencies: 6732 + - supports-color 6733 + 6734 + mdast-util-gfm@3.1.0: 6735 + dependencies: 6736 + mdast-util-from-markdown: 2.0.2 6737 + mdast-util-gfm-autolink-literal: 2.0.1 6738 + mdast-util-gfm-footnote: 2.1.0 6739 + mdast-util-gfm-strikethrough: 2.0.0 6740 + mdast-util-gfm-table: 2.0.0 6741 + mdast-util-gfm-task-list-item: 2.0.0 6742 + mdast-util-to-markdown: 2.1.2 6743 + transitivePeerDependencies: 6744 + - supports-color 6745 + 6746 + mdast-util-phrasing@4.1.0: 6747 + dependencies: 6748 + '@types/mdast': 4.0.4 6749 + unist-util-is: 6.0.1 6750 + 6751 + mdast-util-to-hast@13.2.0: 6752 + dependencies: 6753 + '@types/hast': 3.0.4 6754 + '@types/mdast': 4.0.4 6755 + '@ungap/structured-clone': 1.3.0 6756 + devlop: 1.1.0 6757 + micromark-util-sanitize-uri: 2.0.1 6758 + trim-lines: 3.0.1 6759 + unist-util-position: 5.0.0 6760 + unist-util-visit: 5.0.0 6761 + vfile: 6.0.3 6762 + 6763 + mdast-util-to-markdown@2.1.2: 6764 + dependencies: 6765 + '@types/mdast': 4.0.4 6766 + '@types/unist': 3.0.3 6767 + longest-streak: 3.1.0 6768 + mdast-util-phrasing: 4.1.0 6769 + mdast-util-to-string: 4.0.0 6770 + micromark-util-classify-character: 2.0.1 6771 + micromark-util-decode-string: 2.0.1 6772 + unist-util-visit: 5.0.0 6773 + zwitch: 2.0.4 6774 + 6775 + mdast-util-to-string@4.0.0: 6776 + dependencies: 6777 + '@types/mdast': 4.0.4 6778 + 6779 + mdn-data@2.0.28: {} 6780 + 6781 + mdn-data@2.12.2: {} 6782 + 6783 + merge-options@3.0.4: 6784 + dependencies: 6785 + is-plain-obj: 2.1.0 6786 + 6787 + merge-stream@2.0.0: {} 6788 + 977 6789 merge2@1.4.1: {} 978 6790 6791 + micromark-core-commonmark@2.0.3: 6792 + dependencies: 6793 + decode-named-character-reference: 1.2.0 6794 + devlop: 1.1.0 6795 + micromark-factory-destination: 2.0.1 6796 + micromark-factory-label: 2.0.1 6797 + micromark-factory-space: 2.0.1 6798 + micromark-factory-title: 2.0.1 6799 + micromark-factory-whitespace: 2.0.1 6800 + micromark-util-character: 2.1.1 6801 + micromark-util-chunked: 2.0.1 6802 + micromark-util-classify-character: 2.0.1 6803 + micromark-util-html-tag-name: 2.0.1 6804 + micromark-util-normalize-identifier: 2.0.1 6805 + micromark-util-resolve-all: 2.0.1 6806 + micromark-util-subtokenize: 2.1.0 6807 + micromark-util-symbol: 2.0.1 6808 + micromark-util-types: 2.0.2 6809 + 6810 + micromark-extension-gfm-autolink-literal@2.1.0: 6811 + dependencies: 6812 + micromark-util-character: 2.1.1 6813 + micromark-util-sanitize-uri: 2.0.1 6814 + micromark-util-symbol: 2.0.1 6815 + micromark-util-types: 2.0.2 6816 + 6817 + micromark-extension-gfm-footnote@2.1.0: 6818 + dependencies: 6819 + devlop: 1.1.0 6820 + micromark-core-commonmark: 2.0.3 6821 + micromark-factory-space: 2.0.1 6822 + micromark-util-character: 2.1.1 6823 + micromark-util-normalize-identifier: 2.0.1 6824 + micromark-util-sanitize-uri: 2.0.1 6825 + micromark-util-symbol: 2.0.1 6826 + micromark-util-types: 2.0.2 6827 + 6828 + micromark-extension-gfm-strikethrough@2.1.0: 6829 + dependencies: 6830 + devlop: 1.1.0 6831 + micromark-util-chunked: 2.0.1 6832 + micromark-util-classify-character: 2.0.1 6833 + micromark-util-resolve-all: 2.0.1 6834 + micromark-util-symbol: 2.0.1 6835 + micromark-util-types: 2.0.2 6836 + 6837 + micromark-extension-gfm-table@2.1.1: 6838 + dependencies: 6839 + devlop: 1.1.0 6840 + micromark-factory-space: 2.0.1 6841 + micromark-util-character: 2.1.1 6842 + micromark-util-symbol: 2.0.1 6843 + micromark-util-types: 2.0.2 6844 + 6845 + micromark-extension-gfm-tagfilter@2.0.0: 6846 + dependencies: 6847 + micromark-util-types: 2.0.2 6848 + 6849 + micromark-extension-gfm-task-list-item@2.1.0: 6850 + dependencies: 6851 + devlop: 1.1.0 6852 + micromark-factory-space: 2.0.1 6853 + micromark-util-character: 2.1.1 6854 + micromark-util-symbol: 2.0.1 6855 + micromark-util-types: 2.0.2 6856 + 6857 + micromark-extension-gfm@3.0.0: 6858 + dependencies: 6859 + micromark-extension-gfm-autolink-literal: 2.1.0 6860 + micromark-extension-gfm-footnote: 2.1.0 6861 + micromark-extension-gfm-strikethrough: 2.1.0 6862 + micromark-extension-gfm-table: 2.1.1 6863 + micromark-extension-gfm-tagfilter: 2.0.0 6864 + micromark-extension-gfm-task-list-item: 2.1.0 6865 + micromark-util-combine-extensions: 2.0.1 6866 + micromark-util-types: 2.0.2 6867 + 6868 + micromark-factory-destination@2.0.1: 6869 + dependencies: 6870 + micromark-util-character: 2.1.1 6871 + micromark-util-symbol: 2.0.1 6872 + micromark-util-types: 2.0.2 6873 + 6874 + micromark-factory-label@2.0.1: 6875 + dependencies: 6876 + devlop: 1.1.0 6877 + micromark-util-character: 2.1.1 6878 + micromark-util-symbol: 2.0.1 6879 + micromark-util-types: 2.0.2 6880 + 6881 + micromark-factory-space@2.0.1: 6882 + dependencies: 6883 + micromark-util-character: 2.1.1 6884 + micromark-util-types: 2.0.2 6885 + 6886 + micromark-factory-title@2.0.1: 6887 + dependencies: 6888 + micromark-factory-space: 2.0.1 6889 + micromark-util-character: 2.1.1 6890 + micromark-util-symbol: 2.0.1 6891 + micromark-util-types: 2.0.2 6892 + 6893 + micromark-factory-whitespace@2.0.1: 6894 + dependencies: 6895 + micromark-factory-space: 2.0.1 6896 + micromark-util-character: 2.1.1 6897 + micromark-util-symbol: 2.0.1 6898 + micromark-util-types: 2.0.2 6899 + 6900 + micromark-util-character@2.1.1: 6901 + dependencies: 6902 + micromark-util-symbol: 2.0.1 6903 + micromark-util-types: 2.0.2 6904 + 6905 + micromark-util-chunked@2.0.1: 6906 + dependencies: 6907 + micromark-util-symbol: 2.0.1 6908 + 6909 + micromark-util-classify-character@2.0.1: 6910 + dependencies: 6911 + micromark-util-character: 2.1.1 6912 + micromark-util-symbol: 2.0.1 6913 + micromark-util-types: 2.0.2 6914 + 6915 + micromark-util-combine-extensions@2.0.1: 6916 + dependencies: 6917 + micromark-util-chunked: 2.0.1 6918 + micromark-util-types: 2.0.2 6919 + 6920 + micromark-util-decode-numeric-character-reference@2.0.2: 6921 + dependencies: 6922 + micromark-util-symbol: 2.0.1 6923 + 6924 + micromark-util-decode-string@2.0.1: 6925 + dependencies: 6926 + decode-named-character-reference: 1.2.0 6927 + micromark-util-character: 2.1.1 6928 + micromark-util-decode-numeric-character-reference: 2.0.2 6929 + micromark-util-symbol: 2.0.1 6930 + 6931 + micromark-util-encode@2.0.1: {} 6932 + 6933 + micromark-util-html-tag-name@2.0.1: {} 6934 + 6935 + micromark-util-normalize-identifier@2.0.1: 6936 + dependencies: 6937 + micromark-util-symbol: 2.0.1 6938 + 6939 + micromark-util-resolve-all@2.0.1: 6940 + dependencies: 6941 + micromark-util-types: 2.0.2 6942 + 6943 + micromark-util-sanitize-uri@2.0.1: 6944 + dependencies: 6945 + micromark-util-character: 2.1.1 6946 + micromark-util-encode: 2.0.1 6947 + micromark-util-symbol: 2.0.1 6948 + 6949 + micromark-util-subtokenize@2.1.0: 6950 + dependencies: 6951 + devlop: 1.1.0 6952 + micromark-util-chunked: 2.0.1 6953 + micromark-util-symbol: 2.0.1 6954 + micromark-util-types: 2.0.2 6955 + 6956 + micromark-util-symbol@2.0.1: {} 6957 + 6958 + micromark-util-types@2.0.2: {} 6959 + 6960 + micromark@4.0.2: 6961 + dependencies: 6962 + '@types/debug': 4.1.12 6963 + debug: 4.4.3 6964 + decode-named-character-reference: 1.2.0 6965 + devlop: 1.1.0 6966 + micromark-core-commonmark: 2.0.3 6967 + micromark-factory-space: 2.0.1 6968 + micromark-util-character: 2.1.1 6969 + micromark-util-chunked: 2.0.1 6970 + micromark-util-combine-extensions: 2.0.1 6971 + micromark-util-decode-numeric-character-reference: 2.0.2 6972 + micromark-util-encode: 2.0.1 6973 + micromark-util-normalize-identifier: 2.0.1 6974 + micromark-util-resolve-all: 2.0.1 6975 + micromark-util-sanitize-uri: 2.0.1 6976 + micromark-util-subtokenize: 2.1.0 6977 + micromark-util-symbol: 2.0.1 6978 + micromark-util-types: 2.0.2 6979 + transitivePeerDependencies: 6980 + - supports-color 6981 + 979 6982 micromatch@4.0.8: 980 6983 dependencies: 981 6984 braces: 3.0.3 982 6985 picomatch: 2.3.1 983 6986 6987 + mime-db@1.54.0: {} 6988 + 6989 + mime-types@3.0.1: 6990 + dependencies: 6991 + mime-db: 1.54.0 6992 + 6993 + mimic-fn@4.0.0: {} 6994 + 6995 + mimic-response@3.1.0: {} 6996 + 6997 + minimatch@5.1.6: 6998 + dependencies: 6999 + brace-expansion: 2.0.2 7000 + 7001 + minimatch@9.0.5: 7002 + dependencies: 7003 + brace-expansion: 2.0.2 7004 + 7005 + minimist@1.2.8: {} 7006 + 7007 + minipass@7.1.2: {} 7008 + 7009 + minizlib@3.1.0: 7010 + dependencies: 7011 + minipass: 7.1.2 7012 + 7013 + mkdirp-classic@0.5.3: {} 7014 + 7015 + mlly@1.8.0: 7016 + dependencies: 7017 + acorn: 8.15.0 7018 + pathe: 2.0.3 7019 + pkg-types: 1.3.1 7020 + ufo: 1.6.1 7021 + 7022 + module-definition@6.0.1: 7023 + dependencies: 7024 + ast-module-types: 6.0.1 7025 + node-source-walk: 7.0.1 7026 + 7027 + module-details-from-path@1.0.4: {} 7028 + 984 7029 mri@1.2.0: {} 985 7030 7031 + mrmime@2.0.1: {} 7032 + 986 7033 ms@2.1.3: {} 987 7034 7035 + nanoid@3.3.11: {} 7036 + 7037 + napi-build-utils@2.0.0: {} 7038 + 7039 + neotraverse@0.6.18: {} 7040 + 7041 + netlify-redirector@0.5.0: {} 7042 + 7043 + nlcst-to-string@4.0.0: 7044 + dependencies: 7045 + '@types/nlcst': 2.0.3 7046 + 7047 + node-abi@3.80.0: 7048 + dependencies: 7049 + semver: 7.7.3 7050 + 7051 + node-addon-api@7.1.1: {} 7052 + 7053 + node-domexception@1.0.0: {} 7054 + 7055 + node-fetch-native@1.6.7: {} 7056 + 988 7057 node-fetch@2.7.0: 989 7058 dependencies: 990 7059 whatwg-url: 5.0.0 991 7060 992 - os-tmpdir@1.0.2: {} 7061 + node-fetch@3.3.2: 7062 + dependencies: 7063 + data-uri-to-buffer: 4.0.1 7064 + fetch-blob: 3.2.0 7065 + formdata-polyfill: 4.0.10 7066 + 7067 + node-forge@1.3.1: {} 7068 + 7069 + node-gyp-build@4.8.4: {} 7070 + 7071 + node-mock-http@1.0.3: {} 7072 + 7073 + node-source-walk@7.0.1: 7074 + dependencies: 7075 + '@babel/parser': 7.28.5 7076 + 7077 + node-stream-zip@1.15.0: {} 7078 + 7079 + nopt@8.1.0: 7080 + dependencies: 7081 + abbrev: 3.0.1 7082 + 7083 + normalize-package-data@6.0.2: 7084 + dependencies: 7085 + hosted-git-info: 7.0.2 7086 + semver: 7.7.3 7087 + validate-npm-package-license: 3.0.4 7088 + 7089 + normalize-path@2.1.1: 7090 + dependencies: 7091 + remove-trailing-separator: 1.1.0 7092 + 7093 + normalize-path@3.0.0: {} 7094 + 7095 + npm-run-path@5.3.0: 7096 + dependencies: 7097 + path-key: 4.0.0 7098 + 7099 + nth-check@2.1.1: 7100 + dependencies: 7101 + boolbase: 1.0.0 7102 + 7103 + ofetch@1.5.1: 7104 + dependencies: 7105 + destr: 2.0.5 7106 + node-fetch-native: 1.6.7 7107 + ufo: 1.6.1 7108 + 7109 + ohash@2.0.11: {} 7110 + 7111 + omit.js@2.0.2: {} 7112 + 7113 + once@1.4.0: 7114 + dependencies: 7115 + wrappy: 1.0.2 7116 + 7117 + one-time@1.0.0: 7118 + dependencies: 7119 + fn.name: 1.1.0 7120 + 7121 + onetime@6.0.0: 7122 + dependencies: 7123 + mimic-fn: 4.0.0 7124 + 7125 + oniguruma-parser@0.12.1: {} 7126 + 7127 + oniguruma-to-es@4.3.3: 7128 + dependencies: 7129 + oniguruma-parser: 0.12.1 7130 + regex: 6.0.1 7131 + regex-recursion: 6.0.2 993 7132 994 7133 outdent@0.5.0: {} 995 7134 7135 + p-event@6.0.1: 7136 + dependencies: 7137 + p-timeout: 6.1.4 7138 + 996 7139 p-filter@2.1.0: 997 7140 dependencies: 998 7141 p-map: 2.1.0 ··· 1001 7144 dependencies: 1002 7145 p-try: 2.2.0 1003 7146 7147 + p-limit@4.0.0: 7148 + dependencies: 7149 + yocto-queue: 1.2.1 7150 + 7151 + p-limit@6.2.0: 7152 + dependencies: 7153 + yocto-queue: 1.2.1 7154 + 1004 7155 p-locate@4.1.0: 1005 7156 dependencies: 1006 7157 p-limit: 2.3.0 1007 7158 7159 + p-locate@6.0.0: 7160 + dependencies: 7161 + p-limit: 4.0.0 7162 + 1008 7163 p-map@2.1.0: {} 1009 7164 7165 + p-map@7.0.3: {} 7166 + 7167 + p-queue@8.1.1: 7168 + dependencies: 7169 + eventemitter3: 5.0.1 7170 + p-timeout: 6.1.4 7171 + 7172 + p-retry@6.2.1: 7173 + dependencies: 7174 + '@types/retry': 0.12.2 7175 + is-network-error: 1.3.0 7176 + retry: 0.13.1 7177 + 7178 + p-timeout@6.1.4: {} 7179 + 1010 7180 p-try@2.2.0: {} 1011 7181 7182 + p-wait-for@5.0.2: 7183 + dependencies: 7184 + p-timeout: 6.1.4 7185 + 7186 + package-json-from-dist@1.0.1: {} 7187 + 1012 7188 package-manager-detector@0.2.11: 1013 7189 dependencies: 1014 - quansync: 0.2.7 7190 + quansync: 0.2.11 7191 + 7192 + package-manager-detector@1.5.0: {} 7193 + 7194 + pako@0.2.9: {} 7195 + 7196 + parse-gitignore@2.0.0: {} 7197 + 7198 + parse-imports@2.2.1: 7199 + dependencies: 7200 + es-module-lexer: 1.7.0 7201 + slashes: 3.0.12 7202 + 7203 + parse-json@8.3.0: 7204 + dependencies: 7205 + '@babel/code-frame': 7.27.1 7206 + index-to-position: 1.2.0 7207 + type-fest: 4.41.0 7208 + 7209 + parse-latin@7.0.0: 7210 + dependencies: 7211 + '@types/nlcst': 2.0.3 7212 + '@types/unist': 3.0.3 7213 + nlcst-to-string: 4.0.0 7214 + unist-util-modify-children: 4.0.0 7215 + unist-util-visit-children: 3.0.0 7216 + vfile: 6.0.3 7217 + 7218 + parse5@7.3.0: 7219 + dependencies: 7220 + entities: 6.0.1 1015 7221 1016 7222 path-exists@4.0.0: {} 1017 7223 7224 + path-exists@5.0.0: {} 7225 + 1018 7226 path-key@3.1.1: {} 1019 7227 7228 + path-key@4.0.0: {} 7229 + 7230 + path-parse@1.0.7: {} 7231 + 7232 + path-scurry@1.11.1: 7233 + dependencies: 7234 + lru-cache: 10.4.3 7235 + minipass: 7.1.2 7236 + 1020 7237 path-type@4.0.0: {} 1021 7238 7239 + path-type@6.0.0: {} 7240 + 7241 + pathe@1.1.2: {} 7242 + 7243 + pathe@2.0.3: {} 7244 + 7245 + pend@1.2.0: {} 7246 + 1022 7247 picocolors@1.1.1: {} 1023 7248 1024 7249 picomatch@2.3.1: {} 1025 7250 7251 + picomatch@4.0.3: {} 7252 + 7253 + picoquery@2.5.0: {} 7254 + 1026 7255 pify@4.0.1: {} 1027 7256 7257 + pkg-types@1.3.1: 7258 + dependencies: 7259 + confbox: 0.1.8 7260 + mlly: 1.8.0 7261 + pathe: 2.0.3 7262 + 7263 + postcss-values-parser@6.0.2(postcss@8.5.6): 7264 + dependencies: 7265 + color-name: 1.1.4 7266 + is-url-superb: 4.0.0 7267 + postcss: 8.5.6 7268 + quote-unquote: 1.0.0 7269 + 7270 + postcss@8.5.6: 7271 + dependencies: 7272 + nanoid: 3.3.11 7273 + picocolors: 1.1.1 7274 + source-map-js: 1.2.1 7275 + 7276 + prebuild-install@7.1.3: 7277 + dependencies: 7278 + detect-libc: 2.1.2 7279 + expand-template: 2.0.3 7280 + github-from-package: 0.0.0 7281 + minimist: 1.2.8 7282 + mkdirp-classic: 0.5.3 7283 + napi-build-utils: 2.0.0 7284 + node-abi: 3.80.0 7285 + pump: 3.0.3 7286 + rc: 1.2.8 7287 + simple-get: 4.0.1 7288 + tar-fs: 2.1.4 7289 + tunnel-agent: 0.6.0 7290 + 7291 + precinct@12.2.0: 7292 + dependencies: 7293 + '@dependents/detective-less': 5.0.1 7294 + commander: 12.1.0 7295 + detective-amd: 6.0.1 7296 + detective-cjs: 6.0.1 7297 + detective-es6: 5.0.1 7298 + detective-postcss: 7.0.1(postcss@8.5.6) 7299 + detective-sass: 6.0.1 7300 + detective-scss: 5.0.1 7301 + detective-stylus: 5.0.1 7302 + detective-typescript: 14.0.0(typescript@5.9.3) 7303 + detective-vue2: 2.2.0(typescript@5.9.3) 7304 + module-definition: 6.0.1 7305 + node-source-walk: 7.0.1 7306 + postcss: 8.5.6 7307 + typescript: 5.9.3 7308 + transitivePeerDependencies: 7309 + - supports-color 7310 + 1028 7311 prettier-plugin-astro@0.14.1: 1029 7312 dependencies: 1030 - '@astrojs/compiler': 2.12.0 7313 + '@astrojs/compiler': 2.13.0 1031 7314 prettier: 3.5.3 1032 7315 sass-formatter: 0.7.9 1033 7316 ··· 1035 7318 1036 7319 prettier@3.5.3: {} 1037 7320 1038 - quansync@0.2.7: {} 7321 + prismjs@1.30.0: {} 7322 + 7323 + process-nextick-args@2.0.1: {} 7324 + 7325 + process@0.11.10: {} 7326 + 7327 + prompts@2.4.2: 7328 + dependencies: 7329 + kleur: 3.0.3 7330 + sisteransi: 1.0.5 7331 + 7332 + property-information@6.5.0: {} 7333 + 7334 + property-information@7.1.0: {} 7335 + 7336 + protobufjs@7.5.4: 7337 + dependencies: 7338 + '@protobufjs/aspromise': 1.1.2 7339 + '@protobufjs/base64': 1.1.2 7340 + '@protobufjs/codegen': 2.0.4 7341 + '@protobufjs/eventemitter': 1.1.0 7342 + '@protobufjs/fetch': 1.1.0 7343 + '@protobufjs/float': 1.0.2 7344 + '@protobufjs/inquire': 1.1.0 7345 + '@protobufjs/path': 1.1.2 7346 + '@protobufjs/pool': 1.1.0 7347 + '@protobufjs/utf8': 1.1.0 7348 + '@types/node': 20.19.24 7349 + long: 5.3.2 7350 + 7351 + pump@3.0.3: 7352 + dependencies: 7353 + end-of-stream: 1.4.5 7354 + once: 1.4.0 7355 + 7356 + quansync@0.2.11: {} 1039 7357 1040 7358 queue-microtask@1.2.3: {} 1041 7359 7360 + quote-unquote@1.0.0: {} 7361 + 7362 + radix3@1.1.2: {} 7363 + 7364 + rc@1.2.8: 7365 + dependencies: 7366 + deep-extend: 0.6.0 7367 + ini: 1.3.8 7368 + minimist: 1.2.8 7369 + strip-json-comments: 2.0.1 7370 + 7371 + read-package-up@11.0.0: 7372 + dependencies: 7373 + find-up-simple: 1.0.1 7374 + read-pkg: 9.0.1 7375 + type-fest: 4.41.0 7376 + 7377 + read-pkg@9.0.1: 7378 + dependencies: 7379 + '@types/normalize-package-data': 2.4.4 7380 + normalize-package-data: 6.0.2 7381 + parse-json: 8.3.0 7382 + type-fest: 4.41.0 7383 + unicorn-magic: 0.1.0 7384 + 1042 7385 read-yaml-file@1.1.0: 1043 7386 dependencies: 1044 7387 graceful-fs: 4.2.11 ··· 1046 7389 pify: 4.0.1 1047 7390 strip-bom: 3.0.0 1048 7391 1049 - regenerator-runtime@0.14.1: {} 7392 + readable-stream@2.3.8: 7393 + dependencies: 7394 + core-util-is: 1.0.3 7395 + inherits: 2.0.4 7396 + isarray: 1.0.0 7397 + process-nextick-args: 2.0.1 7398 + safe-buffer: 5.1.2 7399 + string_decoder: 1.1.1 7400 + util-deprecate: 1.0.2 7401 + 7402 + readable-stream@3.6.2: 7403 + dependencies: 7404 + inherits: 2.0.4 7405 + string_decoder: 1.3.0 7406 + util-deprecate: 1.0.2 7407 + 7408 + readable-stream@4.7.0: 7409 + dependencies: 7410 + abort-controller: 3.0.0 7411 + buffer: 6.0.3 7412 + events: 3.3.0 7413 + process: 0.11.10 7414 + string_decoder: 1.3.0 7415 + 7416 + readdir-glob@1.1.3: 7417 + dependencies: 7418 + minimatch: 5.1.6 7419 + 7420 + readdirp@4.1.2: {} 7421 + 7422 + regex-recursion@6.0.2: 7423 + dependencies: 7424 + regex-utilities: 2.3.0 7425 + 7426 + regex-utilities@2.3.0: {} 7427 + 7428 + regex@6.0.1: 7429 + dependencies: 7430 + regex-utilities: 2.3.0 7431 + 7432 + rehype-parse@9.0.1: 7433 + dependencies: 7434 + '@types/hast': 3.0.4 7435 + hast-util-from-html: 2.0.3 7436 + unified: 11.0.5 7437 + 7438 + rehype-raw@7.0.0: 7439 + dependencies: 7440 + '@types/hast': 3.0.4 7441 + hast-util-raw: 9.1.0 7442 + vfile: 6.0.3 7443 + 7444 + rehype-stringify@10.0.1: 7445 + dependencies: 7446 + '@types/hast': 3.0.4 7447 + hast-util-to-html: 9.0.5 7448 + unified: 11.0.5 7449 + 7450 + rehype@13.0.2: 7451 + dependencies: 7452 + '@types/hast': 3.0.4 7453 + rehype-parse: 9.0.1 7454 + rehype-stringify: 10.0.1 7455 + unified: 11.0.5 7456 + 7457 + remark-gfm@4.0.1: 7458 + dependencies: 7459 + '@types/mdast': 4.0.4 7460 + mdast-util-gfm: 3.1.0 7461 + micromark-extension-gfm: 3.0.0 7462 + remark-parse: 11.0.0 7463 + remark-stringify: 11.0.0 7464 + unified: 11.0.5 7465 + transitivePeerDependencies: 7466 + - supports-color 7467 + 7468 + remark-parse@11.0.0: 7469 + dependencies: 7470 + '@types/mdast': 4.0.4 7471 + mdast-util-from-markdown: 2.0.2 7472 + micromark-util-types: 2.0.2 7473 + unified: 11.0.5 7474 + transitivePeerDependencies: 7475 + - supports-color 7476 + 7477 + remark-rehype@11.1.2: 7478 + dependencies: 7479 + '@types/hast': 3.0.4 7480 + '@types/mdast': 4.0.4 7481 + mdast-util-to-hast: 13.2.0 7482 + unified: 11.0.5 7483 + vfile: 6.0.3 7484 + 7485 + remark-smartypants@3.0.2: 7486 + dependencies: 7487 + retext: 9.0.0 7488 + retext-smartypants: 6.2.0 7489 + unified: 11.0.5 7490 + unist-util-visit: 5.0.0 7491 + 7492 + remark-stringify@11.0.0: 7493 + dependencies: 7494 + '@types/mdast': 4.0.4 7495 + mdast-util-to-markdown: 2.1.2 7496 + unified: 11.0.5 7497 + 7498 + remove-trailing-separator@1.1.0: {} 7499 + 7500 + require-directory@2.1.1: {} 7501 + 7502 + require-from-string@2.0.2: {} 7503 + 7504 + require-in-the-middle@7.5.2: 7505 + dependencies: 7506 + debug: 4.4.3 7507 + module-details-from-path: 1.0.4 7508 + resolve: 1.22.11 7509 + transitivePeerDependencies: 7510 + - supports-color 7511 + 7512 + require-package-name@2.0.1: {} 1050 7513 1051 7514 resolve-from@5.0.0: {} 1052 7515 7516 + resolve@1.22.11: 7517 + dependencies: 7518 + is-core-module: 2.16.1 7519 + path-parse: 1.0.7 7520 + supports-preserve-symlinks-flag: 1.0.0 7521 + 7522 + resolve@2.0.0-next.5: 7523 + dependencies: 7524 + is-core-module: 2.16.1 7525 + path-parse: 1.0.7 7526 + supports-preserve-symlinks-flag: 1.0.0 7527 + 7528 + restructure@3.0.2: {} 7529 + 7530 + retext-latin@4.0.0: 7531 + dependencies: 7532 + '@types/nlcst': 2.0.3 7533 + parse-latin: 7.0.0 7534 + unified: 11.0.5 7535 + 7536 + retext-smartypants@6.2.0: 7537 + dependencies: 7538 + '@types/nlcst': 2.0.3 7539 + nlcst-to-string: 4.0.0 7540 + unist-util-visit: 5.0.0 7541 + 7542 + retext-stringify@4.0.0: 7543 + dependencies: 7544 + '@types/nlcst': 2.0.3 7545 + nlcst-to-string: 4.0.0 7546 + unified: 11.0.5 7547 + 7548 + retext@9.0.0: 7549 + dependencies: 7550 + '@types/nlcst': 2.0.3 7551 + retext-latin: 4.0.0 7552 + retext-stringify: 4.0.0 7553 + unified: 11.0.5 7554 + 7555 + retry@0.13.1: {} 7556 + 1053 7557 reusify@1.1.0: {} 1054 7558 7559 + rollup@4.53.1: 7560 + dependencies: 7561 + '@types/estree': 1.0.8 7562 + optionalDependencies: 7563 + '@rollup/rollup-android-arm-eabi': 4.53.1 7564 + '@rollup/rollup-android-arm64': 4.53.1 7565 + '@rollup/rollup-darwin-arm64': 4.53.1 7566 + '@rollup/rollup-darwin-x64': 4.53.1 7567 + '@rollup/rollup-freebsd-arm64': 4.53.1 7568 + '@rollup/rollup-freebsd-x64': 4.53.1 7569 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.1 7570 + '@rollup/rollup-linux-arm-musleabihf': 4.53.1 7571 + '@rollup/rollup-linux-arm64-gnu': 4.53.1 7572 + '@rollup/rollup-linux-arm64-musl': 4.53.1 7573 + '@rollup/rollup-linux-loong64-gnu': 4.53.1 7574 + '@rollup/rollup-linux-ppc64-gnu': 4.53.1 7575 + '@rollup/rollup-linux-riscv64-gnu': 4.53.1 7576 + '@rollup/rollup-linux-riscv64-musl': 4.53.1 7577 + '@rollup/rollup-linux-s390x-gnu': 4.53.1 7578 + '@rollup/rollup-linux-x64-gnu': 4.53.1 7579 + '@rollup/rollup-linux-x64-musl': 4.53.1 7580 + '@rollup/rollup-openharmony-arm64': 4.53.1 7581 + '@rollup/rollup-win32-arm64-msvc': 4.53.1 7582 + '@rollup/rollup-win32-ia32-msvc': 4.53.1 7583 + '@rollup/rollup-win32-x64-gnu': 4.53.1 7584 + '@rollup/rollup-win32-x64-msvc': 4.53.1 7585 + fsevents: 2.3.3 7586 + 1055 7587 run-parallel@1.2.0: 1056 7588 dependencies: 1057 7589 queue-microtask: 1.2.3 1058 7590 1059 7591 s.color@0.0.15: {} 1060 7592 7593 + safe-buffer@5.1.2: {} 7594 + 7595 + safe-buffer@5.2.1: {} 7596 + 7597 + safe-stable-stringify@2.5.0: {} 7598 + 1061 7599 safer-buffer@2.1.2: {} 1062 7600 1063 7601 sass-formatter@0.7.9: 1064 7602 dependencies: 1065 7603 suf-log: 2.5.3 1066 7604 1067 - semver@7.7.1: {} 7605 + sax@1.4.3: {} 7606 + 7607 + semver@7.7.3: {} 7608 + 7609 + sharp@0.34.5: 7610 + dependencies: 7611 + '@img/colour': 1.0.0 7612 + detect-libc: 2.1.2 7613 + semver: 7.7.3 7614 + optionalDependencies: 7615 + '@img/sharp-darwin-arm64': 0.34.5 7616 + '@img/sharp-darwin-x64': 0.34.5 7617 + '@img/sharp-libvips-darwin-arm64': 1.2.4 7618 + '@img/sharp-libvips-darwin-x64': 1.2.4 7619 + '@img/sharp-libvips-linux-arm': 1.2.4 7620 + '@img/sharp-libvips-linux-arm64': 1.2.4 7621 + '@img/sharp-libvips-linux-ppc64': 1.2.4 7622 + '@img/sharp-libvips-linux-riscv64': 1.2.4 7623 + '@img/sharp-libvips-linux-s390x': 1.2.4 7624 + '@img/sharp-libvips-linux-x64': 1.2.4 7625 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 7626 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 7627 + '@img/sharp-linux-arm': 0.34.5 7628 + '@img/sharp-linux-arm64': 0.34.5 7629 + '@img/sharp-linux-ppc64': 0.34.5 7630 + '@img/sharp-linux-riscv64': 0.34.5 7631 + '@img/sharp-linux-s390x': 0.34.5 7632 + '@img/sharp-linux-x64': 0.34.5 7633 + '@img/sharp-linuxmusl-arm64': 0.34.5 7634 + '@img/sharp-linuxmusl-x64': 0.34.5 7635 + '@img/sharp-wasm32': 0.34.5 7636 + '@img/sharp-win32-arm64': 0.34.5 7637 + '@img/sharp-win32-ia32': 0.34.5 7638 + '@img/sharp-win32-x64': 0.34.5 1068 7639 1069 7640 shebang-command@2.0.0: 1070 7641 dependencies: 1071 7642 shebang-regex: 3.0.0 1072 7643 1073 7644 shebang-regex@3.0.0: {} 7645 + 7646 + shiki@3.15.0: 7647 + dependencies: 7648 + '@shikijs/core': 3.15.0 7649 + '@shikijs/engine-javascript': 3.15.0 7650 + '@shikijs/engine-oniguruma': 3.15.0 7651 + '@shikijs/langs': 3.15.0 7652 + '@shikijs/themes': 3.15.0 7653 + '@shikijs/types': 3.15.0 7654 + '@shikijs/vscode-textmate': 10.0.2 7655 + '@types/hast': 3.0.4 1074 7656 1075 7657 signal-exit@4.1.0: {} 1076 7658 7659 + simple-concat@1.0.1: {} 7660 + 7661 + simple-get@4.0.1: 7662 + dependencies: 7663 + decompress-response: 6.0.0 7664 + once: 1.4.0 7665 + simple-concat: 1.0.1 7666 + 7667 + sisteransi@1.0.5: {} 7668 + 1077 7669 slash@3.0.0: {} 1078 7670 7671 + slashes@3.0.12: {} 7672 + 7673 + smol-toml@1.4.2: {} 7674 + 7675 + source-map-js@1.2.1: {} 7676 + 7677 + source-map-support@0.5.21: 7678 + dependencies: 7679 + buffer-from: 1.1.2 7680 + source-map: 0.6.1 7681 + 7682 + source-map@0.6.1: {} 7683 + 7684 + space-separated-tokens@2.0.2: {} 7685 + 1079 7686 spawndamnit@3.0.1: 1080 7687 dependencies: 1081 7688 cross-spawn: 7.0.6 1082 7689 signal-exit: 4.1.0 1083 7690 7691 + spdx-correct@3.2.0: 7692 + dependencies: 7693 + spdx-expression-parse: 3.0.1 7694 + spdx-license-ids: 3.0.22 7695 + 7696 + spdx-exceptions@2.5.0: {} 7697 + 7698 + spdx-expression-parse@3.0.1: 7699 + dependencies: 7700 + spdx-exceptions: 2.5.0 7701 + spdx-license-ids: 3.0.22 7702 + 7703 + spdx-license-ids@3.0.22: {} 7704 + 1084 7705 sprintf-js@1.0.3: {} 1085 7706 7707 + stack-trace@0.0.10: {} 7708 + 7709 + std-env@3.10.0: {} 7710 + 7711 + streamx@2.23.0: 7712 + dependencies: 7713 + events-universal: 1.0.1 7714 + fast-fifo: 1.3.2 7715 + text-decoder: 1.2.3 7716 + transitivePeerDependencies: 7717 + - bare-abort-controller 7718 + - react-native-b4a 7719 + 7720 + string-width@4.2.3: 7721 + dependencies: 7722 + emoji-regex: 8.0.0 7723 + is-fullwidth-code-point: 3.0.0 7724 + strip-ansi: 6.0.1 7725 + 7726 + string-width@5.1.2: 7727 + dependencies: 7728 + eastasianwidth: 0.2.0 7729 + emoji-regex: 9.2.2 7730 + strip-ansi: 7.1.2 7731 + 7732 + string-width@7.2.0: 7733 + dependencies: 7734 + emoji-regex: 10.6.0 7735 + get-east-asian-width: 1.4.0 7736 + strip-ansi: 7.1.2 7737 + 7738 + string_decoder@1.1.1: 7739 + dependencies: 7740 + safe-buffer: 5.1.2 7741 + 7742 + string_decoder@1.3.0: 7743 + dependencies: 7744 + safe-buffer: 5.2.1 7745 + 7746 + stringify-entities@4.0.4: 7747 + dependencies: 7748 + character-entities-html4: 2.1.0 7749 + character-entities-legacy: 3.0.0 7750 + 1086 7751 strip-ansi@6.0.1: 1087 7752 dependencies: 1088 7753 ansi-regex: 5.0.1 7754 + 7755 + strip-ansi@7.1.2: 7756 + dependencies: 7757 + ansi-regex: 6.2.2 1089 7758 1090 7759 strip-bom@3.0.0: {} 1091 7760 7761 + strip-final-newline@3.0.0: {} 7762 + 7763 + strip-json-comments@2.0.1: {} 7764 + 1092 7765 suf-log@2.5.3: 1093 7766 dependencies: 1094 7767 s.color: 0.0.15 1095 7768 7769 + supports-color@7.2.0: 7770 + dependencies: 7771 + has-flag: 4.0.0 7772 + 7773 + supports-preserve-symlinks-flag@1.0.0: {} 7774 + 7775 + svgo@4.0.0: 7776 + dependencies: 7777 + commander: 11.1.0 7778 + css-select: 5.2.2 7779 + css-tree: 3.1.0 7780 + css-what: 6.2.2 7781 + csso: 5.0.5 7782 + picocolors: 1.1.1 7783 + sax: 1.4.3 7784 + 7785 + system-architecture@0.1.0: {} 7786 + 7787 + tar-fs@2.1.4: 7788 + dependencies: 7789 + chownr: 1.1.4 7790 + mkdirp-classic: 0.5.3 7791 + pump: 3.0.3 7792 + tar-stream: 2.2.0 7793 + 7794 + tar-stream@2.2.0: 7795 + dependencies: 7796 + bl: 4.1.0 7797 + end-of-stream: 1.4.5 7798 + fs-constants: 1.0.0 7799 + inherits: 2.0.4 7800 + readable-stream: 3.6.2 7801 + 7802 + tar-stream@3.1.7: 7803 + dependencies: 7804 + b4a: 1.7.3 7805 + fast-fifo: 1.3.2 7806 + streamx: 2.23.0 7807 + transitivePeerDependencies: 7808 + - bare-abort-controller 7809 + - react-native-b4a 7810 + 7811 + tar@7.5.2: 7812 + dependencies: 7813 + '@isaacs/fs-minipass': 4.0.1 7814 + chownr: 3.0.0 7815 + minipass: 7.1.2 7816 + minizlib: 3.1.0 7817 + yallist: 5.0.0 7818 + 1096 7819 term-size@2.2.1: {} 1097 7820 1098 - tmp@0.0.33: 7821 + text-decoder@1.2.3: 7822 + dependencies: 7823 + b4a: 1.7.3 7824 + transitivePeerDependencies: 7825 + - react-native-b4a 7826 + 7827 + text-hex@1.0.0: {} 7828 + 7829 + tiny-inflate@1.0.3: {} 7830 + 7831 + tinyexec@1.0.2: {} 7832 + 7833 + tinyglobby@0.2.15: 1099 7834 dependencies: 1100 - os-tmpdir: 1.0.2 7835 + fdir: 6.5.0(picomatch@4.0.3) 7836 + picomatch: 4.0.3 7837 + 7838 + tmp-promise@3.0.3: 7839 + dependencies: 7840 + tmp: 0.2.5 7841 + 7842 + tmp@0.2.5: {} 1101 7843 1102 7844 to-regex-range@5.0.1: 1103 7845 dependencies: 1104 7846 is-number: 7.0.0 1105 7847 7848 + toml@3.0.0: {} 7849 + 7850 + tomlify-j0.4@3.0.0: {} 7851 + 1106 7852 tr46@0.0.3: {} 1107 7853 7854 + trim-lines@3.0.1: {} 7855 + 7856 + triple-beam@1.4.1: {} 7857 + 7858 + trough@2.2.0: {} 7859 + 7860 + ts-api-utils@2.1.0(typescript@5.9.3): 7861 + dependencies: 7862 + typescript: 5.9.3 7863 + 7864 + tsconfck@3.1.6(typescript@5.9.3): 7865 + optionalDependencies: 7866 + typescript: 5.9.3 7867 + 7868 + tslib@2.8.1: {} 7869 + 7870 + tunnel-agent@0.6.0: 7871 + dependencies: 7872 + safe-buffer: 5.2.1 7873 + 7874 + type-fest@4.41.0: {} 7875 + 7876 + typescript@5.9.3: {} 7877 + 7878 + ufo@1.6.1: {} 7879 + 7880 + ulid@3.0.1: {} 7881 + 7882 + ultrahtml@1.6.0: {} 7883 + 7884 + uncrypto@0.1.3: {} 7885 + 7886 + undici-types@6.21.0: {} 7887 + 7888 + unicode-properties@1.4.1: 7889 + dependencies: 7890 + base64-js: 1.5.1 7891 + unicode-trie: 2.0.0 7892 + 7893 + unicode-trie@2.0.0: 7894 + dependencies: 7895 + pako: 0.2.9 7896 + tiny-inflate: 1.0.3 7897 + 7898 + unicorn-magic@0.1.0: {} 7899 + 7900 + unified@11.0.5: 7901 + dependencies: 7902 + '@types/unist': 3.0.3 7903 + bail: 2.0.2 7904 + devlop: 1.1.0 7905 + extend: 3.0.2 7906 + is-plain-obj: 4.1.0 7907 + trough: 2.2.0 7908 + vfile: 6.0.3 7909 + 7910 + unifont@0.6.0: 7911 + dependencies: 7912 + css-tree: 3.1.0 7913 + ofetch: 1.5.1 7914 + ohash: 2.0.11 7915 + 7916 + unist-util-find-after@5.0.0: 7917 + dependencies: 7918 + '@types/unist': 3.0.3 7919 + unist-util-is: 6.0.1 7920 + 7921 + unist-util-is@6.0.1: 7922 + dependencies: 7923 + '@types/unist': 3.0.3 7924 + 7925 + unist-util-modify-children@4.0.0: 7926 + dependencies: 7927 + '@types/unist': 3.0.3 7928 + array-iterate: 2.0.1 7929 + 7930 + unist-util-position@5.0.0: 7931 + dependencies: 7932 + '@types/unist': 3.0.3 7933 + 7934 + unist-util-remove-position@5.0.0: 7935 + dependencies: 7936 + '@types/unist': 3.0.3 7937 + unist-util-visit: 5.0.0 7938 + 7939 + unist-util-stringify-position@4.0.0: 7940 + dependencies: 7941 + '@types/unist': 3.0.3 7942 + 7943 + unist-util-visit-children@3.0.0: 7944 + dependencies: 7945 + '@types/unist': 3.0.3 7946 + 7947 + unist-util-visit-parents@6.0.2: 7948 + dependencies: 7949 + '@types/unist': 3.0.3 7950 + unist-util-is: 6.0.1 7951 + 7952 + unist-util-visit@5.0.0: 7953 + dependencies: 7954 + '@types/unist': 3.0.3 7955 + unist-util-is: 6.0.1 7956 + unist-util-visit-parents: 6.0.2 7957 + 1108 7958 universalify@0.1.2: {} 1109 7959 7960 + unixify@1.0.0: 7961 + dependencies: 7962 + normalize-path: 2.1.1 7963 + 7964 + unstorage@1.17.2(@netlify/blobs@10.3.3): 7965 + dependencies: 7966 + anymatch: 3.1.3 7967 + chokidar: 4.0.3 7968 + destr: 2.0.5 7969 + h3: 1.15.4 7970 + lru-cache: 10.4.3 7971 + node-fetch-native: 1.6.7 7972 + ofetch: 1.5.1 7973 + ufo: 1.6.1 7974 + optionalDependencies: 7975 + '@netlify/blobs': 10.3.3 7976 + 7977 + untun@0.1.3: 7978 + dependencies: 7979 + citty: 0.1.6 7980 + consola: 3.4.2 7981 + pathe: 1.1.2 7982 + 7983 + uqr@0.1.2: {} 7984 + 7985 + urlpattern-polyfill@10.1.0: {} 7986 + 7987 + urlpattern-polyfill@8.0.2: {} 7988 + 7989 + util-deprecate@1.0.2: {} 7990 + 7991 + uuid@11.1.0: {} 7992 + 7993 + validate-npm-package-license@3.0.4: 7994 + dependencies: 7995 + spdx-correct: 3.2.0 7996 + spdx-expression-parse: 3.0.1 7997 + 7998 + validate-npm-package-name@5.0.1: {} 7999 + 8000 + vfile-location@5.0.3: 8001 + dependencies: 8002 + '@types/unist': 3.0.3 8003 + vfile: 6.0.3 8004 + 8005 + vfile-message@4.0.3: 8006 + dependencies: 8007 + '@types/unist': 3.0.3 8008 + unist-util-stringify-position: 4.0.0 8009 + 8010 + vfile@6.0.3: 8011 + dependencies: 8012 + '@types/unist': 3.0.3 8013 + vfile-message: 4.0.3 8014 + 8015 + vite@6.4.1(@types/node@20.19.24)(jiti@2.6.1)(yaml@2.8.1): 8016 + dependencies: 8017 + esbuild: 0.25.12 8018 + fdir: 6.5.0(picomatch@4.0.3) 8019 + picomatch: 4.0.3 8020 + postcss: 8.5.6 8021 + rollup: 4.53.1 8022 + tinyglobby: 0.2.15 8023 + optionalDependencies: 8024 + '@types/node': 20.19.24 8025 + fsevents: 2.3.3 8026 + jiti: 2.6.1 8027 + yaml: 2.8.1 8028 + 8029 + vitefu@1.1.1(vite@6.4.1(@types/node@20.19.24)(jiti@2.6.1)(yaml@2.8.1)): 8030 + optionalDependencies: 8031 + vite: 6.4.1(@types/node@20.19.24)(jiti@2.6.1)(yaml@2.8.1) 8032 + 8033 + web-namespaces@2.0.1: {} 8034 + 8035 + web-streams-polyfill@3.3.3: {} 8036 + 1110 8037 webidl-conversions@3.0.1: {} 1111 8038 1112 8039 whatwg-url@5.0.0: 1113 8040 dependencies: 1114 8041 tr46: 0.0.3 1115 8042 webidl-conversions: 3.0.1 8043 + 8044 + which-pm-runs@1.1.0: {} 1116 8045 1117 8046 which@2.0.2: 1118 8047 dependencies: 1119 8048 isexe: 2.0.0 8049 + 8050 + widest-line@5.0.0: 8051 + dependencies: 8052 + string-width: 7.2.0 8053 + 8054 + winston-transport@4.9.0: 8055 + dependencies: 8056 + logform: 2.7.0 8057 + readable-stream: 3.6.2 8058 + triple-beam: 1.4.1 8059 + 8060 + winston@3.18.3: 8061 + dependencies: 8062 + '@colors/colors': 1.6.0 8063 + '@dabh/diagnostics': 2.0.8 8064 + async: 3.2.6 8065 + is-stream: 2.0.1 8066 + logform: 2.7.0 8067 + one-time: 1.0.0 8068 + readable-stream: 3.6.2 8069 + safe-stable-stringify: 2.5.0 8070 + stack-trace: 0.0.10 8071 + triple-beam: 1.4.1 8072 + winston-transport: 4.9.0 8073 + 8074 + wrap-ansi@7.0.0: 8075 + dependencies: 8076 + ansi-styles: 4.3.0 8077 + string-width: 4.2.3 8078 + strip-ansi: 6.0.1 8079 + 8080 + wrap-ansi@8.1.0: 8081 + dependencies: 8082 + ansi-styles: 6.2.3 8083 + string-width: 5.1.2 8084 + strip-ansi: 7.1.2 8085 + 8086 + wrap-ansi@9.0.2: 8087 + dependencies: 8088 + ansi-styles: 6.2.3 8089 + string-width: 7.2.0 8090 + strip-ansi: 7.1.2 8091 + 8092 + wrappy@1.0.2: {} 8093 + 8094 + write-file-atomic@5.0.1: 8095 + dependencies: 8096 + imurmurhash: 0.1.4 8097 + signal-exit: 4.1.0 8098 + 8099 + xss@1.0.15: 8100 + dependencies: 8101 + commander: 2.20.3 8102 + cssfilter: 0.0.10 8103 + 8104 + xxhash-wasm@1.1.0: {} 8105 + 8106 + y18n@5.0.8: {} 8107 + 8108 + yallist@5.0.0: {} 8109 + 8110 + yaml@2.8.1: {} 8111 + 8112 + yargs-parser@21.1.1: {} 8113 + 8114 + yargs@17.7.2: 8115 + dependencies: 8116 + cliui: 8.0.1 8117 + escalade: 3.2.0 8118 + get-caller-file: 2.0.5 8119 + require-directory: 2.1.1 8120 + string-width: 4.2.3 8121 + y18n: 5.0.8 8122 + yargs-parser: 21.1.1 8123 + 8124 + yauzl@2.10.0: 8125 + dependencies: 8126 + buffer-crc32: 0.2.13 8127 + fd-slicer: 1.1.0 8128 + 8129 + yocto-queue@1.2.1: {} 8130 + 8131 + yocto-spinner@0.2.3: 8132 + dependencies: 8133 + yoctocolors: 2.1.2 8134 + 8135 + yoctocolors@2.1.2: {} 8136 + 8137 + zip-stream@6.0.1: 8138 + dependencies: 8139 + archiver-utils: 5.0.2 8140 + compress-commons: 6.0.2 8141 + readable-stream: 4.7.0 8142 + 8143 + zod-to-json-schema@3.24.6(zod@3.25.76): 8144 + dependencies: 8145 + zod: 3.25.76 8146 + 8147 + zod-to-ts@1.2.0(typescript@5.9.3)(zod@3.25.76): 8148 + dependencies: 8149 + typescript: 5.9.3 8150 + zod: 3.25.76 8151 + 8152 + zod@3.25.76: {} 8153 + 8154 + zwitch@2.0.4: {}
-2
pnpm-workspace.yaml
··· 1 - packages: 2 - - "app/"
public/favicon.png

This is a binary file and will not be displayed.

+92
src/lib/BackgroundGenerator.ts
··· 1 + import type { CanvasRenderingContext2D } from "canvas"; 2 + 3 + import { ColorGenerator } from "./ColorGenerator"; 4 + import type { Color } from "./types"; 5 + 6 + export class BackgroundGenerator { 7 + static generateBackground( 8 + ctx: CanvasRenderingContext2D, 9 + width: number, 10 + height: number, 11 + random: () => number, 12 + primaryColor: Color 13 + ): void { 14 + // Generate new random colors each time (not using primaryColor palette) 15 + const colorPalette = Array.from({ length: 8 }, () => 16 + ColorGenerator.getRandomColor(random) 17 + ).map((c) => ColorGenerator.colorToRgbString(c)); 18 + 19 + // Random corner-to-corner gradient 20 + const corners = [ 21 + { x1: 0, y1: 0, x2: width, y2: height }, // top-left to bottom-right 22 + { x1: width, y1: 0, x2: 0, y2: height }, // top-right to bottom-left 23 + { x1: 0, y1: height, x2: width, y2: 0 }, // bottom-left to top-right 24 + { x1: width, y1: height, x2: 0, y2: 0 }, // bottom-right to top-left 25 + ]; 26 + 27 + const corner1 = corners[Math.floor(random() * corners.length)]; 28 + 29 + // First gradient 30 + const gradient1 = ctx.createLinearGradient( 31 + corner1.x1, 32 + corner1.y1, 33 + corner1.x2, 34 + corner1.y2 35 + ); 36 + 37 + colorPalette.forEach((color, i) => { 38 + gradient1.addColorStop(i / (colorPalette.length - 1), color); 39 + }); 40 + 41 + ctx.fillStyle = gradient1; 42 + ctx.fillRect(0, 0, width, height); 43 + 44 + // Second gradient with more harmonic colors 45 + const colorPalette2 = ColorGenerator.getRandomPalette( 46 + primaryColor, 47 + 6, 48 + 30, 49 + 0.3 50 + ).map((c) => ColorGenerator.colorToRgbString(c)); 51 + 52 + const corner2 = corners[Math.floor(random() * corners.length)]; 53 + 54 + const gradient2 = ctx.createLinearGradient( 55 + corner2.x1, 56 + corner2.y1, 57 + corner2.x2, 58 + corner2.y2 59 + ); 60 + 61 + colorPalette2.forEach((color, i) => { 62 + gradient2.addColorStop(i / (colorPalette2.length - 1), color); 63 + }); 64 + 65 + ctx.fillStyle = gradient2; 66 + ctx.fillRect(0, 0, width, height); 67 + 68 + // Third gradient (still using palette for harmony) 69 + const colorPalette3 = ColorGenerator.getRandomPalette( 70 + primaryColor, 71 + 3, 72 + 40, 73 + 0.2 74 + ).map((c) => ColorGenerator.colorToRgbString(c)); 75 + 76 + const corner3 = corners[Math.floor(random() * corners.length)]; 77 + 78 + const gradient3 = ctx.createLinearGradient( 79 + corner3.x1, 80 + corner3.y1, 81 + corner3.x2, 82 + corner3.y2 83 + ); 84 + 85 + colorPalette3.forEach((color, i) => { 86 + gradient3.addColorStop(i / (colorPalette3.length - 1), color); 87 + }); 88 + 89 + ctx.fillStyle = gradient3; 90 + ctx.fillRect(0, 0, width, height); 91 + } 92 + }
+133
src/lib/ColorGenerator.ts
··· 1 + import { converter, oklch, parse } from "culori"; 2 + 3 + import type { Color, OklchColor, RgbColor } from "./types"; 4 + 5 + export enum ColorLimitation { 6 + ALL = "ALL", 7 + LIGHTER = "LIGHTER", 8 + NEUTRAL_LIGHTNESS = "NEUTRAL_LIGHTNESS", 9 + DARKER = "DARKER", 10 + SATURATED = "SATURATED", 11 + NEUTRAL_SATURATION = "NEUTRAL_SATURATION", 12 + DESATURATED = "DESATURATED", 13 + } 14 + 15 + export class ColorGenerator { 16 + static getRandomColor( 17 + random: () => number, 18 + ...limitations: ColorLimitation[] 19 + ): Color { 20 + let saturationRange = { min: 0, max: 0.4 }; 21 + let lightnessRange = { min: 0, max: 1 }; 22 + 23 + limitations.forEach((limitation) => { 24 + switch (limitation) { 25 + case ColorLimitation.NEUTRAL_SATURATION: 26 + saturationRange = { min: 0.1, max: 0.3 }; 27 + break; 28 + case ColorLimitation.SATURATED: 29 + saturationRange = { min: 0.2, max: 0.4 }; 30 + break; 31 + case ColorLimitation.DESATURATED: 32 + saturationRange = { min: 0, max: 0.2 }; 33 + break; 34 + case ColorLimitation.NEUTRAL_LIGHTNESS: 35 + lightnessRange = { min: 0.25, max: 0.75 }; 36 + break; 37 + case ColorLimitation.LIGHTER: 38 + lightnessRange = { min: 0.5, max: 1 }; 39 + break; 40 + case ColorLimitation.DARKER: 41 + lightnessRange = { min: 0, max: 0.5 }; 42 + break; 43 + default: 44 + // Unknown limitation, no additional constraints applied 45 + break; 46 + } 47 + }); 48 + 49 + const l = 50 + lightnessRange.min + random() * (lightnessRange.max - lightnessRange.min); 51 + const c = 52 + saturationRange.min + 53 + random() * (saturationRange.max - saturationRange.min); 54 + const h = random() * 360; 55 + 56 + return this.createColor(l, c, h, 1); 57 + } 58 + 59 + static createColor( 60 + l: number, 61 + c: number, 62 + h: number, 63 + alpha: number = 1 64 + ): Color { 65 + const oklch = { l, c, h }; 66 + const rgb = this.oklchToRgb(oklch); 67 + 68 + return { oklch, rgb, alpha }; 69 + } 70 + 71 + static parseColor(random: () => number, colorString: string): Color { 72 + const parsed = parse(colorString); 73 + if (!parsed) { 74 + return this.getRandomColor( 75 + random, 76 + ColorLimitation.NEUTRAL_LIGHTNESS, 77 + ColorLimitation.NEUTRAL_SATURATION 78 + ); 79 + } 80 + 81 + const oklchClr = oklch(parsed); 82 + return this.createColor( 83 + oklchClr.l || 0.5, 84 + oklchClr.c || 0.1, 85 + oklchClr.h || 0, 86 + oklchClr.alpha ?? 1 87 + ); 88 + } 89 + 90 + static getRandomPalette( 91 + primaryColor: Color, 92 + numberOfColors: number = 5, 93 + spread: number = 20, 94 + alpha: number = 1 95 + ): Color[] { 96 + const halfPaletteSize = Math.floor(numberOfColors / 2); 97 + const colors: Color[] = []; 98 + 99 + for (let i = -halfPaletteSize; i <= halfPaletteSize; i++) { 100 + const shiftedHue = (primaryColor.oklch.h + i * spread + 360) % 360; 101 + colors.push( 102 + this.createColor( 103 + primaryColor.oklch.l, 104 + primaryColor.oklch.c, 105 + shiftedHue, 106 + alpha 107 + ) 108 + ); 109 + } 110 + 111 + return colors; 112 + } 113 + 114 + static oklchToRgb(oklchClr: OklchColor): RgbColor { 115 + const toRgb = converter("rgb"); 116 + const oklchString = `oklch(${oklchClr.l} ${oklchClr.c} ${oklchClr.h})`; 117 + const rgbClr = toRgb(oklchString); 118 + 119 + return { 120 + r: Math.max(0, Math.min(1, rgbClr?.r ?? 0)), 121 + g: Math.max(0, Math.min(1, rgbClr?.g ?? 0)), 122 + b: Math.max(0, Math.min(1, rgbClr?.b ?? 0)), 123 + }; 124 + } 125 + 126 + static colorToRgbaString(color: Color): string { 127 + return `rgba(${Math.round(color.rgb.r * 255)}, ${Math.round(color.rgb.g * 255)}, ${Math.round(color.rgb.b * 255)}, ${color.alpha})`; 128 + } 129 + 130 + static colorToRgbString(color: Color): string { 131 + return `rgb(${Math.round(color.rgb.r * 255)}, ${Math.round(color.rgb.g * 255)}, ${Math.round(color.rgb.b * 255)})`; 132 + } 133 + }
+95
src/lib/ImageGenerator.ts
··· 1 + import { createCanvas } from "canvas"; 2 + 3 + import { BackgroundGenerator } from "./BackgroundGenerator"; 4 + import { ColorGenerator, ColorLimitation } from "./ColorGenerator"; 5 + import { NoiseGenerator } from "./NoiseGenerator"; 6 + import { PatternGenerator } from "./PatternGenerator"; 7 + import { TextGenerator } from "./TextGenerator"; 8 + import type { ImageGeneratorOptions } from "./types"; 9 + import { SupportedImageFormat } from "./types"; 10 + 11 + export class ImageGenerator { 12 + private options: ImageGeneratorOptions; 13 + private randomSeed: number; 14 + 15 + constructor(options: ImageGeneratorOptions) { 16 + this.options = options; 17 + this.randomSeed = Math.abs(options.seed ?? Date.now()); 18 + } 19 + 20 + // Seeded random number generator for consistent randomization 21 + private random = (): number => { 22 + this.randomSeed = (this.randomSeed * 9301 + 49297) % 233280; 23 + return this.randomSeed / 233280; 24 + }; 25 + 26 + generateImage(): Buffer { 27 + const { 28 + width, 29 + height, 30 + text, 31 + fontFamily, 32 + fontWeight, 33 + primaryColor, 34 + imageFormat, 35 + patternType, 36 + noiseLevel, 37 + } = this.options; 38 + 39 + // Create canvas 40 + const canvas = createCanvas(width, height); 41 + const ctx = canvas.getContext("2d"); 42 + 43 + // Get or generate primary color 44 + const color = primaryColor 45 + ? ColorGenerator.parseColor(this.random, primaryColor) 46 + : ColorGenerator.getRandomColor( 47 + this.random, 48 + ColorLimitation.NEUTRAL_LIGHTNESS, 49 + ColorLimitation.NEUTRAL_SATURATION 50 + ); 51 + 52 + // Generate layers 53 + BackgroundGenerator.generateBackground( 54 + ctx, 55 + width, 56 + height, 57 + this.random, 58 + color 59 + ); 60 + PatternGenerator.generatePattern( 61 + ctx, 62 + width, 63 + height, 64 + this.random, 65 + color, 66 + patternType 67 + ); 68 + NoiseGenerator.generateNoise(ctx, width, height, noiseLevel, this.random); 69 + 70 + if (text) { 71 + TextGenerator.generateText( 72 + ctx, 73 + text, 74 + width, 75 + height, 76 + fontFamily, 77 + fontWeight, 78 + color 79 + ); 80 + } 81 + 82 + // Encode to buffer 83 + let mimeType: string; 84 + switch (imageFormat) { 85 + case SupportedImageFormat.jpeg: 86 + case SupportedImageFormat.jpg: 87 + mimeType = "image/jpeg"; 88 + break; 89 + default: 90 + mimeType = "image/png"; 91 + } 92 + 93 + return canvas.toBuffer(mimeType as any, { quality: 1.0 }); 94 + } 95 + }
+77
src/lib/NoiseGenerator.ts
··· 1 + import { createCanvas } from "canvas"; 2 + import type { CanvasRenderingContext2D } from "canvas"; 3 + 4 + import { NoiseLevel } from "./types"; 5 + 6 + export class NoiseGenerator { 7 + static generateNoise( 8 + ctx: CanvasRenderingContext2D, 9 + width: number, 10 + height: number, 11 + noiseLevel: NoiseLevel, 12 + random: () => number 13 + ): void { 14 + const noiseWidth = Math.max( 15 + 1, 16 + Math.floor(width / (Math.floor(random() * 5) + 7)) 17 + ); 18 + const noiseHeight = Math.max( 19 + 1, 20 + Math.floor(height / (Math.floor(random() * 5) + 7)) 21 + ); 22 + 23 + const noiseCanvas = createCanvas(noiseWidth, noiseHeight); 24 + const noiseCtx = noiseCanvas.getContext("2d"); 25 + const imageData = noiseCtx.createImageData(noiseWidth, noiseHeight); 26 + 27 + // Adjust noise intensity based on level 28 + let intensityMultiplier: number; 29 + let alpha: number; 30 + 31 + switch (noiseLevel) { 32 + case NoiseLevel.low: 33 + intensityMultiplier = 0.5; 34 + alpha = 15; 35 + break; 36 + case NoiseLevel.high: 37 + intensityMultiplier = 2; 38 + alpha = 40; 39 + break; 40 + case NoiseLevel.medium: 41 + default: 42 + intensityMultiplier = 1; 43 + alpha = 30; 44 + break; 45 + } 46 + 47 + for (let y = 0; y < noiseHeight; y++) { 48 + for (let x = 0; x < noiseWidth; x++) { 49 + const i = (y * noiseWidth + x) * 4; 50 + const noise = Math.floor( 51 + random() * 52 + Math.min( 53 + 256, 54 + (width / 100) * 55 + (height / 100) * 56 + Math.floor(random() * 3 + 1) * 57 + intensityMultiplier 58 + ) 59 + ); 60 + 61 + imageData.data[i] = noise; // R 62 + imageData.data[i + 1] = noise; // G 63 + imageData.data[i + 2] = noise; // B 64 + imageData.data[i + 3] = alpha; // A 65 + } 66 + } 67 + 68 + noiseCtx.putImageData(imageData, 0, 0); 69 + 70 + // Create pattern and fill 71 + const pattern = ctx.createPattern(noiseCanvas, "repeat"); 72 + if (pattern) { 73 + ctx.fillStyle = pattern; 74 + ctx.fillRect(0, 0, width, height); 75 + } 76 + } 77 + }
+602
src/lib/PatternGenerator.ts
··· 1 + import type { Canvas, CanvasRenderingContext2D } from "canvas"; 2 + 3 + import type { Color } from "./types"; 4 + import { SupportedPatternType } from "./types"; 5 + 6 + export class PatternGenerator { 7 + static generatePattern( 8 + ctx: CanvasRenderingContext2D, 9 + width: number, 10 + height: number, 11 + random: () => number, 12 + primaryColor: Color, 13 + patternType?: SupportedPatternType 14 + ): void { 15 + const lightness = primaryColor.oklch.l + random() * 2.5; 16 + 17 + // Choose random pattern if not specified 18 + const patterns = Object.values(SupportedPatternType); 19 + const patternsExcludingGeometry = patterns.filter( 20 + (p) => p !== SupportedPatternType.geometry 21 + ); 22 + const selectedPattern = 23 + patternType ?? 24 + patternsExcludingGeometry[ 25 + Math.floor(random() * patternsExcludingGeometry.length) 26 + ]; 27 + 28 + switch (selectedPattern) { 29 + case SupportedPatternType.grid: 30 + this.drawGridPattern(ctx, width, height, random, lightness); 31 + break; 32 + case SupportedPatternType.dots: 33 + this.drawDottedPattern(ctx, width, height, random, lightness); 34 + break; 35 + case SupportedPatternType.waves: 36 + this.drawWavyPattern(ctx, width, height, random, lightness); 37 + break; 38 + case SupportedPatternType.geometry: 39 + this.drawGeometricPattern(ctx, width, height, random, lightness); 40 + break; 41 + case SupportedPatternType.triangles: 42 + this.drawTrianglesPattern(ctx, width, height, random, lightness); 43 + break; 44 + case SupportedPatternType.hexagons: 45 + this.drawHexagonalPattern(ctx, width, height, random, lightness); 46 + break; 47 + case SupportedPatternType.concentric: 48 + this.drawConcentricPattern(ctx, width, height, random, lightness); 49 + break; 50 + case SupportedPatternType.circuitry: 51 + this.drawCircuitPattern(ctx, width, height, random, lightness); 52 + break; 53 + case SupportedPatternType.maze: 54 + this.drawMazePattern(ctx, width, height, random, lightness); 55 + break; 56 + case SupportedPatternType.steps: 57 + this.drawStepsPattern(ctx, width, height, random, lightness); 58 + break; 59 + } 60 + } 61 + 62 + private static drawGridPattern( 63 + ctx: CanvasRenderingContext2D, 64 + width: number, 65 + height: number, 66 + random: () => number, 67 + lightness: number 68 + ): void { 69 + const alpha = (Math.floor(random() * 3) + lightness * 10 + 7) / 255; 70 + ctx.strokeStyle = `rgba(255, 255, 255, ${alpha})`; 71 + ctx.lineWidth = 1; 72 + 73 + const spacing = Math.max( 74 + 10, 75 + Math.floor( 76 + random() * 77 + (((width / 100) * (height / 100)) / 3 - 78 + ((width / 100) * (height / 100)) / 7) 79 + ) + 80 + ((width / 100) * (height / 100)) / 7 81 + ); 82 + 83 + ctx.beginPath(); 84 + for (let x = 0; x < width; x += spacing) { 85 + ctx.moveTo(x, 0); 86 + ctx.lineTo(x, height); 87 + } 88 + for (let y = 0; y < height; y += spacing) { 89 + ctx.moveTo(0, y); 90 + ctx.lineTo(width, y); 91 + } 92 + ctx.stroke(); 93 + } 94 + 95 + private static drawDottedPattern( 96 + ctx: CanvasRenderingContext2D, 97 + width: number, 98 + height: number, 99 + random: () => number, 100 + lightness: number 101 + ): void { 102 + const alpha = (Math.floor(random() * 3) + lightness * 11 + 12) / 255; 103 + ctx.fillStyle = `rgba(255, 255, 255, ${alpha})`; 104 + 105 + const spacing = Math.max( 106 + 10, 107 + Math.floor( 108 + random() * 109 + (((width / 100) * (height / 100)) / 5 - 110 + ((width / 100) * (height / 100)) / 8) 111 + ) + 112 + ((width / 100) * (height / 100)) / 8 113 + ); 114 + const dotSize = Math.max( 115 + 1, 116 + Math.floor( 117 + random() * 118 + (((width / 140) * (height / 140)) / 40 - 119 + ((width / 140) * (height / 140)) / 100) 120 + ) + 121 + ((width / 140) * (height / 140)) / 100 122 + ); 123 + 124 + for (let x = 0; x < width; x += spacing) { 125 + for (let y = 0; y < height; y += spacing) { 126 + const randomOffset = Math.max( 127 + 0, 128 + Math.floor( 129 + random() * 130 + (((width / 150) * (height / 150)) / 25 - 131 + ((width / 150) * (height / 150)) / 50) 132 + ) + 133 + ((width / 150) * (height / 150)) / 50 134 + ); 135 + const offsetX = random() * randomOffset * 2 - randomOffset; 136 + const offsetY = random() * randomOffset * 2 - randomOffset; 137 + 138 + ctx.beginPath(); 139 + ctx.arc(x + offsetX, y + offsetY, dotSize, 0, Math.PI * 2); 140 + ctx.fill(); 141 + } 142 + } 143 + } 144 + 145 + private static drawWavyPattern( 146 + ctx: CanvasRenderingContext2D, 147 + width: number, 148 + height: number, 149 + random: () => number, 150 + lightness: number 151 + ): void { 152 + const alpha = (Math.floor(random() * 3) + lightness * 9 + 8) / 255; 153 + ctx.strokeStyle = `rgba(255, 255, 255, ${alpha})`; 154 + ctx.lineWidth = 1; 155 + 156 + const spacing = Math.max( 157 + 10, 158 + Math.floor( 159 + random() * 160 + (((width / 100) * (height / 100)) / 3 - 161 + ((width / 100) * (height / 100)) / 7) 162 + ) + 163 + ((width / 100) * (height / 100)) / 7 164 + ); 165 + const amplitude = Math.max( 166 + 5, 167 + Math.floor( 168 + random() * 169 + (((width / 100) * (height / 100)) / 8 - 170 + ((width / 100) * (height / 100)) / 14) 171 + ) + 172 + ((width / 100) * (height / 100)) / 14 173 + ); 174 + let frequency = Math.max( 175 + 2, 176 + Math.floor( 177 + random() * 178 + (((width / 100) * (height / 100)) / 15 - 179 + ((width / 100) * (height / 100)) / 30) 180 + ) + 181 + ((width / 100) * (height / 100)) / 30 182 + ); 183 + 184 + // Horizontal wavy lines 185 + for (let y = 0; y < height; y += spacing) { 186 + ctx.beginPath(); 187 + ctx.moveTo(0, y); 188 + for (let x = 0; x < width; x += 2) { 189 + const yOffset = 190 + Math.sin(((x * frequency) / width) * Math.PI * 2) * amplitude; 191 + ctx.lineTo(x, y + yOffset); 192 + } 193 + ctx.stroke(); 194 + } 195 + 196 + // Vertical wavy lines 197 + frequency = Math.floor(random() * 3) + 2; 198 + for (let x = 0; x < width; x += spacing) { 199 + ctx.beginPath(); 200 + ctx.moveTo(x, 0); 201 + for (let y = 0; y < height; y += 2) { 202 + const xOffset = 203 + Math.sin(((y * frequency) / height) * Math.PI * 2) * amplitude; 204 + ctx.lineTo(x + xOffset, y); 205 + } 206 + ctx.stroke(); 207 + } 208 + } 209 + 210 + private static drawGeometricPattern( 211 + ctx: CanvasRenderingContext2D, 212 + width: number, 213 + height: number, 214 + random: () => number, 215 + lightness: number 216 + ): void { 217 + const alpha = (Math.floor(random() * 4) + lightness * 17 + 18) / 255; 218 + ctx.strokeStyle = `rgba(255, 255, 255, ${alpha})`; 219 + ctx.lineWidth = 1; 220 + 221 + const shapeCount = Math.max( 222 + 10, 223 + Math.floor( 224 + random() * 225 + (((width / 140) * (height / 140)) / 50 - 226 + ((width / 140) * (height / 140)) / 100) 227 + ) + 228 + ((width / 140) * (height / 140)) / 100 229 + ); 230 + const spacing = width / shapeCount; 231 + 232 + for (let x = spacing / 4; x < width; x += spacing) { 233 + for (let y = spacing / 4; y < height; y += spacing) { 234 + const shapeType = Math.floor(random() * 3); 235 + const size = Math.max( 236 + 10, 237 + Math.floor( 238 + random() * 239 + (Math.max(width, height) / 40 - Math.max(width, height) / 100) 240 + ) + 241 + Math.max(width, height) / 100 242 + ); 243 + 244 + const randomOffset = Math.max( 245 + 0, 246 + Math.floor( 247 + random() * 248 + (Math.max(width, height) / 50 - Math.max(width, height) / 100) 249 + ) + 250 + Math.max(width, height) / 100 251 + ); 252 + const offsetX = random() * randomOffset * 2 - randomOffset; 253 + const offsetY = random() * randomOffset * 2 - randomOffset; 254 + 255 + ctx.beginPath(); 256 + switch (shapeType) { 257 + case 0: // Squares 258 + ctx.rect( 259 + x - size / 2 + offsetX, 260 + y - size / 2 + offsetY, 261 + size, 262 + size 263 + ); 264 + break; 265 + case 1: // Circles 266 + ctx.arc(x + offsetX, y + offsetY, size / 2, 0, Math.PI * 2); 267 + break; 268 + case 2: // Triangles 269 + ctx.moveTo(x + offsetX, y - size / 2 + offsetY); 270 + ctx.lineTo(x - size / 2 + offsetX, y + size / 2 + offsetY); 271 + ctx.lineTo(x + size / 2 + offsetX, y + size / 2 + offsetY); 272 + ctx.closePath(); 273 + break; 274 + } 275 + ctx.stroke(); 276 + } 277 + } 278 + } 279 + 280 + private static drawTrianglesPattern( 281 + ctx: CanvasRenderingContext2D, 282 + width: number, 283 + height: number, 284 + random: () => number, 285 + lightness: number 286 + ): void { 287 + const alpha = (Math.floor(random() * 3) + lightness * 11 + 8) / 255; 288 + ctx.strokeStyle = `rgba(255, 255, 255, ${alpha})`; 289 + ctx.lineWidth = 1; 290 + 291 + const size = Math.max( 292 + 10, 293 + Math.floor( 294 + random() * 295 + (((width / 100) * (height / 100)) / 2 - 296 + ((width / 100) * (height / 100)) / 3) 297 + ) + 298 + ((width / 100) * (height / 100)) / 3 299 + ); 300 + const h = (size * Math.sqrt(3)) / 2; 301 + 302 + for (let row = -1; row < height / h + 1; row++) { 303 + for (let col = -1; col < width / size + 1; col++) { 304 + const centerX = col * size + (row % 2 === 0 ? 0 : size / 2); 305 + const centerY = row * h; 306 + 307 + ctx.beginPath(); 308 + for (let i = 0; i < 6; i++) { 309 + const angle = (Math.PI / 3) * i; 310 + const x = centerX + (size / 2) * Math.cos(angle); 311 + const y = centerY + (size / 2) * Math.sin(angle); 312 + 313 + if (i === 0) ctx.moveTo(x, y); 314 + else ctx.lineTo(x, y); 315 + } 316 + ctx.closePath(); 317 + ctx.stroke(); 318 + } 319 + } 320 + } 321 + 322 + private static drawHexagonalPattern( 323 + ctx: CanvasRenderingContext2D, 324 + width: number, 325 + height: number, 326 + random: () => number, 327 + lightness: number 328 + ): void { 329 + const alpha = (Math.floor(random() * 3) + lightness * 11 + 8) / 255; 330 + ctx.strokeStyle = `rgba(255, 255, 255, ${alpha})`; 331 + ctx.lineWidth = 1; 332 + 333 + // Honeycomb hexagon pattern (no gaps) 334 + const size = Math.max( 335 + 15, 336 + Math.floor( 337 + random() * 338 + (((width / 80) * (height / 80)) / 2 - 339 + ((width / 80) * (height / 80)) / 4) 340 + ) + 341 + ((width / 80) * (height / 80)) / 4 342 + ); 343 + const h = size * Math.sqrt(3); 344 + const randomSpacingFactor = random() / 5 + 0.9; 345 + const vertSpacing = h * randomSpacingFactor; 346 + const horizSpacing = size * 2 * randomSpacingFactor; 347 + 348 + for (let row = -1; row <= Math.ceil(height / vertSpacing) + 1; row++) { 349 + for (let col = -1; col <= Math.ceil(width / horizSpacing) + 1; col++) { 350 + const offsetX = row % 2 === 0 ? 0 : horizSpacing / 2; 351 + const centerX = col * horizSpacing + offsetX; 352 + const centerY = row * vertSpacing; 353 + 354 + ctx.beginPath(); 355 + for (let i = 0; i < 6; i++) { 356 + const angle = (Math.PI / 3) * i - Math.PI / 6; // Rotate by 30 degrees for flat-top 357 + const x = centerX + size * Math.cos(angle); 358 + const y = centerY + size * Math.sin(angle); 359 + 360 + if (i === 0) ctx.moveTo(x, y); 361 + else ctx.lineTo(x, y); 362 + } 363 + ctx.closePath(); 364 + ctx.stroke(); 365 + } 366 + } 367 + } 368 + 369 + private static drawConcentricPattern( 370 + ctx: CanvasRenderingContext2D, 371 + width: number, 372 + height: number, 373 + random: () => number, 374 + lightness: number 375 + ): void { 376 + const alpha = (Math.floor(random() * 3) + lightness * 8 + 10) / 255; 377 + ctx.strokeStyle = `rgba(255, 255, 255, ${alpha})`; 378 + ctx.lineWidth = 1; 379 + 380 + const numCenters = Math.floor(random() * 2) + 1; 381 + const maxRadius = Math.max(width, height); 382 + 383 + for (let i = 0; i < numCenters; i++) { 384 + const centerX = random() * width; 385 + const centerY = random() * height; 386 + 387 + const numCircles = Math.max( 388 + 2, 389 + Math.floor( 390 + random() * 391 + (((width / 100) * (height / 100)) / 8 - 392 + ((width / 100) * (height / 100)) / 30) 393 + ) + 394 + ((width / 100) * (height / 100)) / 30 395 + ); 396 + const radiusStep = maxRadius / numCircles; 397 + 398 + for (let j = 1; j <= numCircles; j++) { 399 + const radius = j * radiusStep; 400 + ctx.beginPath(); 401 + ctx.arc(centerX, centerY, radius, 0, Math.PI * 2); 402 + ctx.stroke(); 403 + } 404 + } 405 + } 406 + 407 + private static drawCircuitPattern( 408 + ctx: CanvasRenderingContext2D, 409 + width: number, 410 + height: number, 411 + random: () => number, 412 + lightness: number 413 + ): void { 414 + const alpha = (Math.floor(random() * 5) + lightness * 14 + 12) / 255; 415 + ctx.strokeStyle = `rgba(255, 255, 255, ${alpha})`; 416 + ctx.fillStyle = `rgba(255, 255, 255, ${alpha})`; 417 + ctx.lineWidth = 1; 418 + 419 + const gridSize = Math.max( 420 + 10, 421 + Math.floor( 422 + random() * 423 + ((width / 100) * (height / 100) - 424 + ((width / 100) * (height / 100)) / 5) 425 + ) + 426 + ((width / 100) * (height / 100)) / 5 427 + ); 428 + const lineChance = Math.floor(random() * 40) + 50; 429 + 430 + const margin = gridSize * 3.5; 431 + for (let x = -margin; x < width + margin; x += gridSize) { 432 + for (let y = -margin; y < height + margin; y += gridSize) { 433 + if (random() * 100 < 60) { 434 + const nodeSize = Math.max( 435 + 1, 436 + Math.floor( 437 + random() * 438 + (((width / 140) * (height / 140)) / 20 - 439 + ((width / 140) * (height / 140)) / 50) 440 + ) + 441 + ((width / 140) * (height / 140)) / 50 442 + ); 443 + 444 + ctx.beginPath(); 445 + ctx.arc(x, y, nodeSize, 0, Math.PI * 2); 446 + ctx.fill(); 447 + 448 + // Horizontal line 449 + if (x + gridSize < width && random() * 100 < lineChance) { 450 + if (random() * 100 < 80) { 451 + ctx.beginPath(); 452 + ctx.moveTo(x, y); 453 + ctx.lineTo(x + gridSize, y); 454 + ctx.stroke(); 455 + } else { 456 + const midX = x + gridSize / 2; 457 + const midY = 458 + y + 459 + (Math.floor(random() * 2) === 0 ? gridSize / 2 : -gridSize / 2); 460 + 461 + ctx.beginPath(); 462 + ctx.moveTo(x, y); 463 + ctx.lineTo(midX, y); 464 + ctx.lineTo(midX, midY); 465 + ctx.lineTo(x + gridSize, midY); 466 + ctx.lineTo(x + gridSize, y); 467 + ctx.stroke(); 468 + } 469 + } 470 + 471 + // Vertical line 472 + if (y + gridSize < height && random() * 100 < lineChance) { 473 + if (random() * 100 < 80) { 474 + ctx.beginPath(); 475 + ctx.moveTo(x, y); 476 + ctx.lineTo(x, y + gridSize); 477 + ctx.stroke(); 478 + } else { 479 + const midY = y + gridSize / 2; 480 + const midX = 481 + x + 482 + (Math.floor(random() * 2) === 0 ? gridSize / 2 : -gridSize / 2); 483 + 484 + ctx.beginPath(); 485 + ctx.moveTo(x, y); 486 + ctx.lineTo(x, midY); 487 + ctx.lineTo(midX, midY); 488 + ctx.lineTo(midX, y + gridSize); 489 + ctx.lineTo(x, y + gridSize); 490 + ctx.stroke(); 491 + } 492 + } 493 + } 494 + } 495 + } 496 + } 497 + 498 + private static drawMazePattern( 499 + ctx: CanvasRenderingContext2D, 500 + width: number, 501 + height: number, 502 + random: () => number, 503 + lightness: number 504 + ): void { 505 + const alpha = (Math.floor(random() * 3) + lightness * 11 + 11) / 255; 506 + ctx.strokeStyle = `rgba(255, 255, 255, ${alpha})`; 507 + ctx.lineWidth = 2; 508 + 509 + const gridSize = Math.max( 510 + 10, 511 + Math.floor( 512 + random() * 513 + (((width / 100) * (height / 100)) / 3 - 514 + ((width / 100) * (height / 100)) / 6) 515 + ) + 516 + ((width / 100) * (height / 100)) / 6 517 + ); 518 + const horizontalCells = Math.floor(width / Math.max(gridSize, 1)) + 1; 519 + const verticalCells = Math.floor(height / Math.max(gridSize, 1)) + 1; 520 + 521 + for (let i = 0; i < horizontalCells + verticalCells - 1; i++) { 522 + for (let x = 0; x <= i; x++) { 523 + const y = i - x; 524 + 525 + if (x < horizontalCells && y < verticalCells) { 526 + const x1 = x * gridSize; 527 + const y1 = y * gridSize; 528 + const x2 = (x + 1) * gridSize; 529 + const y2 = (y + 1) * gridSize; 530 + 531 + if ((x + y) % 2 === 0) { 532 + const goUp = Math.floor(random() * 2) === 0; 533 + 534 + ctx.beginPath(); 535 + if (goUp) { 536 + ctx.moveTo(x1, y1); 537 + ctx.lineTo(x2, y1); 538 + ctx.lineTo(x2, y2); 539 + } else { 540 + ctx.moveTo(x1, y2); 541 + ctx.lineTo(x2, y2); 542 + ctx.lineTo(x2, y1); 543 + } 544 + ctx.stroke(); 545 + } 546 + } 547 + } 548 + } 549 + } 550 + 551 + private static drawStepsPattern( 552 + ctx: CanvasRenderingContext2D, 553 + width: number, 554 + height: number, 555 + random: () => number, 556 + lightness: number 557 + ): void { 558 + const alpha = (Math.floor(random() * 3) + lightness * 7 + 9) / 255; 559 + ctx.strokeStyle = `rgba(255, 255, 255, ${alpha})`; 560 + ctx.lineWidth = 2; 561 + 562 + const gridSize = Math.max( 563 + 10, 564 + Math.floor( 565 + random() * 566 + (((width / 100) * (height / 100)) / 3 - 567 + ((width / 100) * (height / 100)) / 8) 568 + ) + 569 + ((width / 100) * (height / 100)) / 8 570 + ); 571 + const horizontalCells = Math.floor(width / Math.max(gridSize, 1)) + 1; 572 + const verticalCells = Math.floor(height / Math.max(gridSize, 1)) + 1; 573 + const goUp = Math.floor(random() * 2) === 0; 574 + 575 + for (let i = 0; i < horizontalCells + verticalCells - 1; i++) { 576 + for (let x = 0; x <= i; x++) { 577 + const y = i - x; 578 + 579 + if (x < horizontalCells && y < verticalCells) { 580 + const x1 = x * gridSize; 581 + const y1 = y * gridSize; 582 + const x2 = (x + 1) * gridSize; 583 + const y2 = (y + 1) * gridSize; 584 + 585 + if ((x + y) % 2 === 0) { 586 + ctx.beginPath(); 587 + if (goUp) { 588 + ctx.moveTo(x1, y1); 589 + ctx.lineTo(x2, y1); 590 + ctx.lineTo(x2, y2); 591 + } else { 592 + ctx.moveTo(x1, y2); 593 + ctx.lineTo(x2, y2); 594 + ctx.lineTo(x2, y1); 595 + } 596 + ctx.stroke(); 597 + } 598 + } 599 + } 600 + } 601 + } 602 + }
+190
src/lib/TextGenerator.ts
··· 1 + import type { CanvasRenderingContext2D } from "canvas"; 2 + import { registerFont } from "canvas"; 3 + import path from "path"; 4 + 5 + import { ColorGenerator } from "./ColorGenerator"; 6 + import type { Color } from "./types"; 7 + import { SupportedFontFamily, SupportedFontWeight } from "./types"; 8 + 9 + export class TextGenerator { 10 + private static loadedFonts = new Set<string>(); 11 + private static readonly TEXT_SCALE_FACTOR = 0.95; 12 + 13 + static generateText( 14 + ctx: CanvasRenderingContext2D, 15 + text: string, 16 + width: number, 17 + height: number, 18 + fontFamily: SupportedFontFamily, 19 + fontWeight: SupportedFontWeight, 20 + primaryColor: Color 21 + ): void { 22 + // Register font 23 + this.loadFont(fontFamily, fontWeight); 24 + 25 + // Calculate font size 26 + const fontSize = this.getMaxFontSize( 27 + ctx, 28 + text, 29 + width - width / 3, 30 + width > height ? height / 3 : width / 3, 31 + fontFamily, 32 + fontWeight 33 + ); 34 + 35 + // Set font 36 + ctx.font = `${fontSize}px "${fontFamily}"`; 37 + ctx.textAlign = "center"; 38 + ctx.textBaseline = "middle"; 39 + 40 + // Measure text 41 + const metrics = ctx.measureText(text); 42 + const textWidth = metrics.width * this.TEXT_SCALE_FACTOR; 43 + const textHeight = 44 + metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent; 45 + 46 + const textX = width / 2; 47 + const textY = height / 2; 48 + 49 + // Draw text shadow 50 + ctx.save(); 51 + ctx.shadowColor = "rgba(0, 0, 0, 0.31)"; 52 + ctx.shadowBlur = 5; 53 + ctx.shadowOffsetX = fontSize / 100; 54 + ctx.shadowOffsetY = fontSize / 100; 55 + ctx.fillStyle = "transparent"; 56 + ctx.fillText(text, textX, textY); 57 + ctx.restore(); 58 + 59 + // Draw glassmorphism background 60 + const paddingX = fontSize / 2; 61 + const paddingY = fontSize / 3; 62 + const rectX = textX - textWidth / 2 - paddingX; 63 + const rectY = textY - textHeight / 2 - paddingY; 64 + const rectWidth = textWidth + paddingX * 2; 65 + const rectHeight = textHeight + paddingY * 2; 66 + const borderRadius = fontSize / 4; 67 + 68 + // Shadow 69 + ctx.save(); 70 + ctx.shadowColor = "rgba(0, 0, 0, 0.2)"; 71 + ctx.shadowBlur = 10; 72 + ctx.shadowOffsetX = fontSize / 50; 73 + ctx.shadowOffsetY = fontSize / 50; 74 + ctx.fillStyle = "rgba(255, 255, 255, 0.16)"; 75 + this.roundRect(ctx, rectX, rectY, rectWidth, rectHeight, borderRadius); 76 + ctx.fill(); 77 + ctx.restore(); 78 + 79 + // Background 80 + ctx.fillStyle = "rgba(255, 255, 255, 0.16)"; 81 + this.roundRect(ctx, rectX, rectY, rectWidth, rectHeight, borderRadius); 82 + ctx.fill(); 83 + 84 + // Border 85 + ctx.strokeStyle = "rgba(255, 255, 255, 0.31)"; 86 + ctx.lineWidth = 4; 87 + this.roundRect(ctx, rectX, rectY, rectWidth, rectHeight, borderRadius); 88 + ctx.stroke(); 89 + 90 + // Create gradient for text 91 + const gradient = ctx.createLinearGradient( 92 + rectX, 93 + rectY, 94 + rectX + rectWidth, 95 + rectY + rectHeight 96 + ); 97 + 98 + gradient.addColorStop(0, "rgb(255, 255, 255)"); 99 + 100 + const lightColor = ColorGenerator.createColor( 101 + Math.min(1, 0.8 + Math.max(0, (primaryColor.oklch.l - 0.8) * 0.5)), 102 + 0, 103 + 0, 104 + 1 105 + ); 106 + gradient.addColorStop(1, ColorGenerator.colorToRgbString(lightColor)); 107 + 108 + // Draw text with gradient 109 + ctx.fillStyle = gradient; 110 + ctx.fillText(text, textX, textY); 111 + } 112 + 113 + private static loadFont( 114 + fontFamily: SupportedFontFamily, 115 + fontWeight: SupportedFontWeight 116 + ): void { 117 + const fontKey = `${fontFamily}-${fontWeight}`; 118 + if (this.loadedFonts.has(fontKey)) { 119 + return; 120 + } 121 + 122 + try { 123 + const fontPath = path.join( 124 + process.cwd(), 125 + "public", 126 + "fonts", 127 + `${fontKey}.ttf` 128 + ); 129 + registerFont(fontPath, { family: fontFamily, weight: fontWeight }); 130 + this.loadedFonts.add(fontKey); 131 + } catch (error) { 132 + // Fallback to default font if loading fails 133 + console.warn( 134 + `Failed to load font ${fontFamily}-${fontWeight}, using default` 135 + ); 136 + } 137 + } 138 + 139 + private static getMaxFontSize( 140 + ctx: CanvasRenderingContext2D, 141 + text: string, 142 + maxWidth: number, 143 + maxHeight: number, 144 + fontFamily: SupportedFontFamily, 145 + fontWeight: SupportedFontWeight 146 + ): number { 147 + let min = 0; 148 + let max = maxHeight; 149 + let current = max; 150 + let last = -1; 151 + 152 + while (Math.abs(last - current) > 1) { 153 + ctx.font = `${current}px "${fontFamily}"`; 154 + const metrics = ctx.measureText(text); 155 + const width = metrics.width * this.TEXT_SCALE_FACTOR; 156 + 157 + if (width > maxWidth) { 158 + max = current; 159 + } else { 160 + min = current; 161 + last = current; 162 + } 163 + 164 + current = (min + max) / 2; 165 + } 166 + 167 + return Math.floor(Math.max(10, last)); 168 + } 169 + 170 + private static roundRect( 171 + ctx: CanvasRenderingContext2D, 172 + x: number, 173 + y: number, 174 + width: number, 175 + height: number, 176 + radius: number 177 + ): void { 178 + ctx.beginPath(); 179 + ctx.moveTo(x + radius, y); 180 + ctx.lineTo(x + width - radius, y); 181 + ctx.arcTo(x + width, y, x + width, y + radius, radius); 182 + ctx.lineTo(x + width, y + height - radius); 183 + ctx.arcTo(x + width, y + height, x + width - radius, y + height, radius); 184 + ctx.lineTo(x + radius, y + height); 185 + ctx.arcTo(x, y + height, x, y + height - radius, radius); 186 + ctx.lineTo(x, y + radius); 187 + ctx.arcTo(x, y, x + radius, y, radius); 188 + ctx.closePath(); 189 + } 190 + }
+77
src/lib/types.ts
··· 1 + export enum SupportedFontFamily { 2 + bigshoulders = "bigshoulders", 3 + inter = "inter", 4 + jetbrainsmono = "jetbrainsmono", 5 + lato = "lato", 6 + opensans = "opensans", 7 + poppins = "poppins", 8 + quicksand = "quicksand", 9 + raleway = "raleway", 10 + readexpro = "readexpro", 11 + roboto = "roboto", 12 + robotomono = "robotomono", 13 + rubik = "rubik", 14 + sourcecodepro = "sourcecodepro", 15 + } 16 + 17 + export enum SupportedFontWeight { 18 + bold = "bold", 19 + medium = "medium", 20 + light = "light", 21 + } 22 + 23 + export enum SupportedImageFormat { 24 + jpeg = "jpeg", 25 + jpg = "jpg", 26 + png = "png", 27 + } 28 + 29 + export enum SupportedPatternType { 30 + grid = "grid", 31 + dots = "dots", 32 + waves = "waves", 33 + triangles = "triangles", 34 + hexagons = "hexagons", 35 + concentric = "concentric", 36 + circuitry = "circuitry", 37 + maze = "maze", 38 + steps = "steps", 39 + geometry = "geometry", 40 + } 41 + 42 + export enum NoiseLevel { 43 + low = "low", 44 + medium = "medium", 45 + high = "high", 46 + } 47 + 48 + export interface ImageGeneratorOptions { 49 + text?: string; 50 + width: number; 51 + height: number; 52 + fontFamily: SupportedFontFamily; 53 + fontWeight: SupportedFontWeight; 54 + primaryColor?: string; 55 + imageFormat: SupportedImageFormat; 56 + patternType?: SupportedPatternType; 57 + noiseLevel: NoiseLevel; 58 + seed?: number; 59 + } 60 + 61 + export interface OklchColor { 62 + l: number; // lightness 63 + c: number; // chroma 64 + h: number; // hue 65 + } 66 + 67 + export interface RgbColor { 68 + r: number; 69 + g: number; 70 + b: number; 71 + } 72 + 73 + export interface Color { 74 + oklch: OklchColor; 75 + rgb: RgbColor; 76 + alpha: number; 77 + }
+110
src/pages/api/generateImage.ts
··· 1 + import type { APIRoute } from "astro"; 2 + 3 + import { ImageGenerator } from "../../lib/ImageGenerator"; 4 + import { 5 + type ImageGeneratorOptions, 6 + NoiseLevel, 7 + SupportedFontFamily, 8 + SupportedFontWeight, 9 + SupportedImageFormat, 10 + SupportedPatternType, 11 + } from "../../lib/types"; 12 + 13 + export const prerender = false; 14 + 15 + // Validation helpers 16 + const isValidFontFamily = (value: string): value is SupportedFontFamily => 17 + Object.values(SupportedFontFamily).includes(value as any); 18 + 19 + const isValidFontWeight = (value: string): value is SupportedFontWeight => 20 + Object.values(SupportedFontWeight).includes(value as any); 21 + 22 + const isValidImageFormat = (value: string): value is SupportedImageFormat => 23 + Object.values(SupportedImageFormat).includes(value as any); 24 + 25 + const isValidPatternType = ( 26 + value: string | undefined 27 + ): value is SupportedPatternType | undefined => 28 + Object.values(SupportedPatternType).includes(value as any) || 29 + value === undefined; 30 + 31 + const isValidNoiseLevel = (value: string): value is NoiseLevel => 32 + Object.values(NoiseLevel).includes(value as any); 33 + 34 + export const GET: APIRoute = async ({ url }) => { 35 + const params = url.searchParams; 36 + 37 + const fontFamily = params.get("fontFamily") || "readexpro"; 38 + const fontWeight = params.get("fontWeight") || "bold"; 39 + const imageFormat = params.get("imageFormat") || "png"; 40 + const noiseLevel = params.get("noiseLevel") || "medium"; 41 + const patternType = params.get("patternType") || undefined; 42 + 43 + // Validate enums 44 + if (!isValidFontFamily(fontFamily)) { 45 + return new Response("Invalid fontFamily", { status: 400 }); 46 + } 47 + if (!isValidFontWeight(fontWeight)) { 48 + return new Response("Invalid fontWeight", { status: 400 }); 49 + } 50 + if (!isValidImageFormat(imageFormat)) { 51 + return new Response("Invalid imageFormat", { status: 400 }); 52 + } 53 + if (!isValidNoiseLevel(noiseLevel)) { 54 + return new Response("Invalid noiseLevel", { status: 400 }); 55 + } 56 + if (!isValidPatternType(patternType)) { 57 + return new Response("Invalid patternType", { status: 400 }); 58 + } 59 + 60 + const parsedSeed = 61 + params.get("seed") != null ? parseInt(params.get("seed")!, 10) : undefined; 62 + const seed = Number.isFinite(parsedSeed) 63 + ? Math.max(0, Math.min(9007199254740990, parsedSeed!)) 64 + : undefined; 65 + 66 + // Parse query parameters with defaults 67 + const options: ImageGeneratorOptions = { 68 + text: params.get("text") ?? undefined, 69 + width: Math.max( 70 + 100, 71 + Math.min(4000, parseInt(params.get("width") || "1920") || 1920) 72 + ), 73 + height: Math.max( 74 + 100, 75 + Math.min(4000, parseInt(params.get("height") || "1080") || 1080) 76 + ), 77 + fontFamily, 78 + fontWeight, 79 + primaryColor: params.get("primaryColor") || undefined, 80 + imageFormat, 81 + patternType, 82 + noiseLevel, 83 + seed: seed, 84 + }; 85 + 86 + try { 87 + const generator = new ImageGenerator(options); 88 + const imageBuffer = generator.generateImage(); 89 + 90 + // Determine content type 91 + const contentType = 92 + options.imageFormat === "jpeg" || options.imageFormat === "jpg" 93 + ? "image/jpeg" 94 + : "image/png"; 95 + 96 + const cacheControl = options.seed 97 + ? "public, max-age=86400, immutable" 98 + : "public, max-age=0"; 99 + 100 + return new Response(imageBuffer, { 101 + headers: { 102 + "Content-Type": contentType, 103 + "Cache-Control": cacheControl, 104 + }, 105 + }); 106 + } catch (error) { 107 + console.error("Image generation error:", error); 108 + return new Response("Error generating image", { status: 500 }); 109 + } 110 + };
+384
src/pages/index.astro
··· 1 + --- 2 + 3 + --- 4 + 5 + <html lang="en"> 6 + <head> 7 + <meta charset="UTF-8" /> 8 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 9 + <link rel="icon" type="image/png" href="/favicon.png" /> 10 + <title>Release Image Generator</title> 11 + <style> 12 + * { 13 + margin: 0; 14 + padding: 0; 15 + box-sizing: border-box; 16 + } 17 + 18 + body { 19 + font-family: 20 + -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, 21 + Cantarell, sans-serif; 22 + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); 23 + min-height: 100vh; 24 + display: flex; 25 + align-items: center; 26 + justify-content: center; 27 + padding: 2rem; 28 + } 29 + 30 + .container { 31 + background: rgba(255, 255, 255, 0.95); 32 + backdrop-filter: blur(10px); 33 + border-radius: 24px; 34 + padding: 3rem; 35 + margin: 5rem; 36 + max-width: 800px; 37 + width: 100%; 38 + box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3); 39 + } 40 + 41 + h1 { 42 + font-size: 2.5rem; 43 + font-weight: 700; 44 + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); 45 + -webkit-background-clip: text; 46 + -webkit-text-fill-color: transparent; 47 + background-clip: text; 48 + margin-bottom: 0.5rem; 49 + } 50 + 51 + .subtitle { 52 + color: #64748b; 53 + margin-bottom: 2rem; 54 + font-size: 1.1rem; 55 + } 56 + 57 + .form-grid { 58 + display: grid; 59 + gap: 1.5rem; 60 + } 61 + 62 + .form-group { 63 + display: flex; 64 + flex-direction: column; 65 + gap: 0.5rem; 66 + } 67 + 68 + label { 69 + font-weight: 600; 70 + color: #334155; 71 + font-size: 0.95rem; 72 + } 73 + 74 + input[type="text"], 75 + input[type="number"], 76 + select { 77 + padding: 0.75rem 1rem; 78 + border: 2px solid #e2e8f0; 79 + border-radius: 12px; 80 + font-size: 1rem; 81 + transition: all 0.2s; 82 + background: white; 83 + } 84 + 85 + input[type="text"]:focus, 86 + input[type="number"]:focus, 87 + select:focus { 88 + outline: none; 89 + border-color: #667eea; 90 + box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); 91 + } 92 + 93 + input[type="color"] { 94 + height: 50px; 95 + border: 2px solid #e2e8f0; 96 + border-radius: 12px; 97 + cursor: pointer; 98 + padding: 0.25rem; 99 + } 100 + 101 + .row { 102 + display: grid; 103 + grid-template-columns: 1fr 1fr; 104 + gap: 1.5rem; 105 + } 106 + 107 + .color-group { 108 + display: flex; 109 + gap: 1rem; 110 + align-items: flex-end; 111 + } 112 + 113 + .color-input-wrapper { 114 + flex: 1; 115 + } 116 + 117 + .random-btn { 118 + padding: 0.75rem 1.5rem; 119 + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); 120 + border: 2px solid #e2e8f0; 121 + border-radius: 12px; 122 + cursor: pointer; 123 + font-weight: 600; 124 + color: #fff; 125 + transition: all 0.2s; 126 + } 127 + 128 + .random-btn:hover { 129 + border-color: #cbd5e1; 130 + } 131 + 132 + .generate-btn { 133 + width: 100%; 134 + padding: 1rem; 135 + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); 136 + color: white; 137 + border: none; 138 + border-radius: 12px; 139 + font-size: 1.1rem; 140 + font-weight: 600; 141 + cursor: pointer; 142 + transition: all 0.2s; 143 + margin-top: 1rem; 144 + } 145 + 146 + .generate-btn:hover { 147 + transform: translateY(-2px); 148 + box-shadow: 0 10px 30px rgba(102, 126, 234, 0.4); 149 + } 150 + 151 + .generate-btn:active { 152 + transform: translateY(0); 153 + } 154 + 155 + .hint { 156 + font-size: 0.85rem; 157 + color: #94a3b8; 158 + margin-top: 0.25rem; 159 + } 160 + 161 + @media (max-width: 640px) { 162 + .row { 163 + grid-template-columns: 1fr; 164 + } 165 + 166 + .container { 167 + padding: 2rem; 168 + } 169 + 170 + h1 { 171 + font-size: 2rem; 172 + } 173 + } 174 + </style> 175 + </head> 176 + <body> 177 + <div class="container"> 178 + <h1>🎨 Release Image Generator</h1> 179 + <p class="subtitle"> 180 + Create beautiful, customizable images with patterns and text 181 + </p> 182 + 183 + <form id="generatorForm"> 184 + <div class="form-grid"> 185 + <div class="form-group"> 186 + <label for="text">Text</label> 187 + <input 188 + type="text" 189 + id="text" 190 + name="text" 191 + placeholder="Enter your text (optional)" 192 + /> 193 + </div> 194 + 195 + <div class="row"> 196 + <div class="form-group"> 197 + <label for="width">Width</label> 198 + <input 199 + type="number" 200 + id="width" 201 + name="width" 202 + value="1920" 203 + min="100" 204 + max="4000" 205 + /> 206 + </div> 207 + <div class="form-group"> 208 + <label for="height">Height</label> 209 + <input 210 + type="number" 211 + id="height" 212 + name="height" 213 + value="1080" 214 + min="100" 215 + max="4000" 216 + /> 217 + </div> 218 + </div> 219 + 220 + <div class="form-group"> 221 + <label for="fontFamily">Font Family</label> 222 + <select id="fontFamily" name="fontFamily"> 223 + <option value="bigshoulders">Big Shoulders</option> 224 + <option value="inter">Inter</option> 225 + <option value="jetbrainsmono">JetBrains Mono</option> 226 + <option value="lato">Lato</option> 227 + <option value="opensans">Open Sans</option> 228 + <option value="poppins">Poppins</option> 229 + <option value="quicksand">Quicksand</option> 230 + <option value="raleway">Raleway</option> 231 + <option value="readexpro" selected>Readex Pro</option> 232 + <option value="roboto">Roboto</option> 233 + <option value="robotomono">Roboto Mono</option> 234 + <option value="rubik">Rubik</option> 235 + <option value="sourcecodepro">Source Code Pro</option> 236 + </select> 237 + </div> 238 + 239 + <div class="form-group"> 240 + <label for="fontWeight">Font Weight</label> 241 + <select id="fontWeight" name="fontWeight"> 242 + <option value="light">Light</option> 243 + <option value="medium">Medium</option> 244 + <option value="bold" selected>Bold</option> 245 + </select> 246 + </div> 247 + 248 + <div class="form-group"> 249 + <label for="patternType">Pattern Type</label> 250 + <select id="patternType" name="patternType"> 251 + <option value="">Random</option> 252 + <option value="grid">Grid</option> 253 + <option value="dots">Dots</option> 254 + <option value="waves">Waves</option> 255 + <option value="triangles">Triangles</option> 256 + <option value="hexagons">Hexagons</option> 257 + <option value="concentric">Concentric</option> 258 + <option value="circuitry">Circuitry</option> 259 + <option value="maze">Maze</option> 260 + <option value="steps">Steps</option> 261 + <option value="geometry">Geometry</option> 262 + </select> 263 + </div> 264 + 265 + <div class="color-group"> 266 + <div class="color-input-wrapper form-group"> 267 + <label for="primaryColor">Primary Color</label> 268 + <input 269 + type="color" 270 + id="primaryColor" 271 + name="primaryColor" 272 + value="#e9e9ed" 273 + /> 274 + </div> 275 + <button 276 + type="button" 277 + class="random-btn" 278 + id="randomColorBtn" 279 + aria-pressed="false" 280 + aria-label="Use random color">Random</button 281 + > 282 + </div> 283 + 284 + <div class="form-group"> 285 + <label for="noiseLevel">Noise Level</label> 286 + <select id="noiseLevel" name="noiseLevel"> 287 + <option value="low">Low</option> 288 + <option value="medium" selected>Medium</option> 289 + <option value="high">High</option> 290 + </select> 291 + </div> 292 + 293 + <div class="form-group"> 294 + <label for="seed">Seed</label> 295 + <input 296 + type="number" 297 + id="seed" 298 + name="seed" 299 + min="0" 300 + max="9007199254740990" 301 + /> 302 + </div> 303 + 304 + <div class="form-group"> 305 + <label for="imageFormat">Image Format</label> 306 + <select id="imageFormat" name="imageFormat"> 307 + <option value="png" selected>PNG</option> 308 + <option value="jpg">JPG</option> 309 + </select> 310 + </div> 311 + </div> 312 + 313 + <button type="submit" class="generate-btn">Generate Image 🚀</button> 314 + </form> 315 + </div> 316 + 317 + <input type="hidden" id="useRandomColor" value="true" /> 318 + 319 + <script> 320 + // @ts-nocheck 321 + const form = document.getElementById("generatorForm"); 322 + const randomColorBtn = document.getElementById("randomColorBtn"); 323 + const colorInput = document.getElementById("primaryColor"); 324 + 325 + const useRandomColor = document.getElementById("useRandomColor"); 326 + 327 + randomColorBtn.addEventListener("click", () => { 328 + useRandomColor.value = "true"; 329 + randomColorBtn.setAttribute("aria-pressed", "true"); 330 + colorInput.value = "#e9e9ed"; 331 + randomColorBtn.style.color = "#fff"; 332 + randomColorBtn.style.background = 333 + "linear-gradient(135deg, #667eea 0%, #764ba2 100%)"; 334 + }); 335 + 336 + colorInput.addEventListener("change", () => { 337 + useRandomColor.value = "false"; 338 + randomColorBtn.setAttribute("aria-pressed", "false"); 339 + randomColorBtn.style.color = "#475569"; 340 + randomColorBtn.style.background = "#f1f5f9"; 341 + }); 342 + 343 + form.addEventListener("submit", async (e) => { 344 + e.preventDefault(); 345 + 346 + const generateBtn = form.querySelector(".generate-btn"); 347 + const originalText = generateBtn.textContent; 348 + generateBtn.disabled = true; 349 + generateBtn.textContent = "Generating... ⏳"; 350 + 351 + try { 352 + const formData = new FormData(form); 353 + const params = new URLSearchParams(); 354 + 355 + for (const [key, value] of formData.entries()) { 356 + if (value && key !== "primaryColor" && key !== "useRandomColor") { 357 + params.append(key, value); 358 + } else if ( 359 + key === "primaryColor" && 360 + useRandomColor.value === "false" 361 + ) { 362 + params.append(key, colorInput.value); 363 + } 364 + } 365 + 366 + const url = `/api/generateImage?${params.toString()}`; 367 + 368 + // Test the endpoint first 369 + const response = await fetch(url, { method: "HEAD" }); 370 + if (response.ok) { 371 + window.open(url, "_blank"); 372 + } else { 373 + throw new Error(`API returned ${response.status}`); 374 + } 375 + } catch (error) { 376 + alert(`Failed to generate image: ${error.message}`); 377 + } finally { 378 + generateBtn.disabled = false; 379 + generateBtn.textContent = originalText; 380 + } 381 + }); 382 + </script> 383 + </body> 384 + </html>
+16
tsconfig.json
··· 1 + { 2 + "extends": "astro/tsconfigs/strict", 3 + "compilerOptions": { 4 + "target": "ES2022", 5 + "module": "ES2022", 6 + "moduleResolution": "bundler", 7 + "lib": ["ES2022"], 8 + "types": ["node"], 9 + "baseUrl": ".", 10 + "paths": { 11 + "@/*": ["src/*"] 12 + } 13 + }, 14 + "include": ["src/**/*"], 15 + "exclude": ["node_modules", "dist"] 16 + }