diff --git a/.github/CODE-OF-CONDUCT.md b/.github/CODE-OF-CONDUCT.md index 025e0928..23090f0c 100644 --- a/.github/CODE-OF-CONDUCT.md +++ b/.github/CODE-OF-CONDUCT.md @@ -17,23 +17,23 @@ diverse, inclusive, and healthy community. Examples of behavior that contributes to a positive environment for our community include: -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience -* Focusing on what is best not just for us as individuals, but for the overall +- Focusing on what is best not just for us as individuals, but for the overall community Examples of unacceptable behavior include: -* The use of sexualized language or imagery, and sexual attention or advances of +- The use of sexualized language or imagery, and sexual attention or advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email address, +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Enforcement Responsibilities @@ -130,4 +130,3 @@ For answers to common questions about this code of conduct, see the FAQ at [Mozilla CoC]: https://github.com/mozilla/diversity [FAQ]: https://www.contributor-covenant.org/faq [translations]: https://www.contributor-covenant.org/translations - diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 923bb989..0098c92f 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -10,7 +10,7 @@ permissions: {} jobs: lint-code: - name: Lint Code [biomejs] + name: Lint Code [oxc] runs-on: ubuntu-latest permissions: contents: read @@ -27,8 +27,8 @@ jobs: - name: Setup Node uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: - node-version-file: ".nvmrc" - cache: "pnpm" + node-version-file: '.nvmrc' + cache: 'pnpm' - run: pnpm install - run: pnpm lint:check diff --git a/.github/workflows/zizmor.yml b/.github/workflows/zizmor.yml index e89f4900..f3d3ef42 100644 --- a/.github/workflows/zizmor.yml +++ b/.github/workflows/zizmor.yml @@ -1,28 +1,28 @@ name: GitHub Actions Security Analysis on: - push: - branches: - - main - pull_request: - branches: - - "**" + push: + branches: + - main + pull_request: + branches: + - '**' permissions: {} jobs: - zizmor: - name: Run zizmor 🌈 - runs-on: ubuntu-latest - permissions: - security-events: write # Required for upload-sarif (used by zizmor-action) to upload SARIF files. - contents: read # Only needed for private repos. Needed to clone the repo. - actions: read # Only needed for private repos. Needed for upload-sarif to read workflow run info. - steps: - - name: Checkout repository - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false + zizmor: + name: Run zizmor 🌈 + runs-on: ubuntu-latest + permissions: + security-events: write # Required for upload-sarif (used by zizmor-action) to upload SARIF files. + contents: read # Only needed for private repos. Needed to clone the repo. + actions: read # Only needed for private repos. Needed for upload-sarif to read workflow run info. + steps: + - name: Checkout repository + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false - - name: Run zizmor 🌈 - uses: zizmorcore/zizmor-action@6fc4b006235f201fdab3722e17240ab420d580e5 # v0.6.1 + - name: Run zizmor 🌈 + uses: zizmorcore/zizmor-action@6fc4b006235f201fdab3722e17240ab420d580e5 # v0.6.1 diff --git a/.oxfmtrc.json b/.oxfmtrc.json new file mode 100644 index 00000000..f10e134b --- /dev/null +++ b/.oxfmtrc.json @@ -0,0 +1,15 @@ +{ + "$schema": "./node_modules/oxfmt/configuration_schema.json", + "useTabs": false, + "tabWidth": 2, + "printWidth": 80, + "singleQuote": true, + "jsxSingleQuote": false, + "quoteProps": "as-needed", + "trailingComma": "all", + "semi": true, + "arrowParens": "always", + "bracketSameLine": false, + "bracketSpacing": true, + "ignorePatterns": [] +} diff --git a/.oxlintrc.json b/.oxlintrc.json new file mode 100644 index 00000000..85e5873b --- /dev/null +++ b/.oxlintrc.json @@ -0,0 +1,30 @@ +{ + "$schema": "./node_modules/oxlint/configuration_schema.json", + "plugins": ["typescript", "unicorn", "oxc"], + "categories": { + "correctness": "error", + "suspicious": "warn" + }, + "rules": { + "default-param-last": "error", + "no-else-return": "error", + "no-param-reassign": "error", + "typescript/no-inferrable-types": "error", + "typescript/prefer-as-const": "error", + "unicorn/prefer-number-properties": "error" + }, + "overrides": [ + { + "files": ["**/*.astro"], + "rules": { + "no-unused-vars": "off" + } + }, + { + "files": ["src/env.d.ts"], + "rules": { + "typescript/triple-slash-reference": "off" + } + } + ] +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 0f0c6ea2..73562c54 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,7 +1,7 @@ { "recommendations": [ "astro-build.astro-vscode", - "biomejs.biome", + "oxc.oxc-vscode", "bradlc.vscode-tailwindcss", "zizmor.zizmor-vscode" ] diff --git a/.vscode/settings.json b/.vscode/settings.json index 095cea1b..9c4e0a3d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,19 +1,13 @@ { "editor.codeActionsOnSave": { - "source.fixAll.biome": "explicit" + "source.fixAll.oxc": "explicit" }, - "editor.defaultFormatter": "biomejs.biome", + "editor.defaultFormatter": "oxc.oxc-vscode", "files.associations": { "*.css": "tailwindcss" }, "[astro]": { "editor.defaultFormatter": "astro-build.astro-vscode" }, - "[json]": { - "editor.defaultFormatter": "biomejs.biome" - }, - "[typescript]": { - "editor.defaultFormatter": "biomejs.biome" - }, "cSpell.words": ["Gitify"] } diff --git a/README.md b/README.md index ce925b2c..64e1263f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# gitify.io +# gitify.io -[![Netlify Status][netlify-badge]][netlify-deploys] [![Renovate enabled][renovate-badge]][renovate] [![Contributors][contributors-badge]][github] [![OSS License][license-badge]][license] +[![Netlify Status][netlify-badge]][netlify-deploys] [![Renovate enabled][renovate-badge]][renovate] [![Contributors][contributors-badge]][github] [![OSS License][license-badge]][license] > The source code for our gitify.io website @@ -44,6 +44,7 @@ All commands are run from the root of the project, from a terminal: | `pnpm astro --help` | Get help using the Astro CLI | + [github]: https://github.com/gitify-app/website [contributors-badge]: https://img.shields.io/github/contributors/gitify-app/website?logo=github [netlify-badge]: https://img.shields.io/netlify/a060080d-e0bd-46bf-a2b5-0290a18ead9d?logo=netlify&logoColor=white diff --git a/biome.json b/biome.json deleted file mode 100644 index e4ad9a02..00000000 --- a/biome.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "$schema": "https://biomejs.dev/schemas/2.5.5/schema.json", - "assist": { - "actions": { - "source": { - "organizeImports": { - "level": "on", - "options": { - "groups": [ - ["astro:*", "*astro-*", "astro*/*"], - ":BLANK_LINE:", - ":PACKAGE:", - ":BLANK_LINE:", - ["~/constants"], - ":BLANK_LINE:", - ":ALIAS:", - ":BLANK_LINE:", - "**" - ] - } - } - } - } - }, - "linter": { - "enabled": true, - "rules": { - "preset": "recommended", - "a11y": { - "noSvgWithoutTitle": "warn" - }, - "style": { - "noInferrableTypes": "error", - "noParameterAssign": "error", - "noUnusedTemplateLiteral": "error", - "noUselessElse": "error", - "useAsConstAssertion": "error", - "useDefaultParameterLast": "error", - "useEnumInitializers": "error", - "useNumberNamespace": "error", - "useSelfClosingElements": "error", - "useSingleVarDeclarator": "error" - } - } - }, - "formatter": { - "enabled": true, - "indentStyle": "space", - "indentWidth": 2 - }, - "overrides": [ - { - "includes": ["**/*.astro"], - "linter": { - "rules": { - "correctness": { - "noUnusedImports": "off", - "noUnusedVariables": "off" - } - } - } - } - ], - "css": { - "formatter": { - "enabled": true - }, - "parser": { - "tailwindDirectives": true - } - }, - "html": { - "formatter": { - "enabled": true - }, - "experimentalFullSupportEnabled": true - }, - "javascript": { - "formatter": { - "quoteStyle": "single" - } - }, - "json": { - "parser": { - "allowComments": true - } - }, - "vcs": { - "enabled": true, - "clientKind": "git", - "useIgnoreFile": true - } -} diff --git a/netlify.toml b/netlify.toml index c8386a63..04d5a021 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,3 +1,3 @@ [build] - publish = "dist" - command = "pnpm build" \ No newline at end of file +publish = "dist" +command = "pnpm build" diff --git a/package.json b/package.json index 4517c27c..b6d0c65c 100644 --- a/package.json +++ b/package.json @@ -3,32 +3,19 @@ "version": "latest", "private": true, "description": "The source code of gitify.io", - "type": "module", - "scripts": { - "dev": "astro dev", - "start": "astro dev", - "build": "astro build", - "preview": "astro preview", - "prepare": "husky", - "astro": "astro", - "lint:check": "biome check", - "lint": "biome check --fix" - }, - "engines": { - "node": ">=24" - }, - "repository": { - "type": "git", - "url": "https://github.com/gitify-app/website" - }, "keywords": [ - "gitify", + "astro", "github", - "notifier", + "gitify", "notifications", - "website", - "astro" + "notifier", + "website" ], + "homepage": "https://gitify.io", + "bugs": { + "url": "https://github.com/gitify-app/website/issues" + }, + "license": "MIT", "author": { "name": "Emmanouil Konstantinidis", "email": "hello@manos.im" @@ -43,14 +30,25 @@ "url": "https://github.com/setchy" } ], - "license": "MIT", - "bugs": { - "url": "https://github.com/gitify-app/website/issues" + "repository": { + "type": "git", + "url": "https://github.com/gitify-app/website" + }, + "type": "module", + "scripts": { + "dev": "astro dev", + "start": "astro dev", + "build": "astro build", + "preview": "astro preview", + "prepare": "husky", + "astro": "astro", + "lint:check": "oxlint && oxfmt --check && prettier --check \"src/**/*.astro\"", + "lint": "oxlint --fix && oxfmt && prettier --write \"src/**/*.astro\"" }, - "homepage": "https://gitify.io", "dependencies": { "@iconify-json/line-md": "1.2.16", "@iconify-json/mdi": "1.2.3", + "@iconify-json/simple-icons": "1.2.91", "@octokit/openapi-types": "27.0.0", "@tailwindcss/vite": "4.3.3", "accessible-astro-components": "5.4.0", @@ -65,11 +63,33 @@ "tailwindcss-motion": "1.1.1" }, "devDependencies": { - "@biomejs/biome": "2.5.5", - "husky": "9.1.7" + "@astrojs/compiler": "4.0.0", + "husky": "9.1.7", + "oxfmt": "0.60.0", + "oxlint": "1.75.0", + "prettier": "3.9.6", + "prettier-plugin-astro": "0.14.1" }, - "packageManager": "pnpm@11.17.0", "lint-staged": { - "*.{js,ts,cjs,mjs,astro}": "biome format --fix" - } + "*.{js,ts,cjs,mjs,json,css,md}": "oxfmt", + "*.astro": "prettier --write" + }, + "prettier": { + "overrides": [ + { + "files": "*.astro", + "options": { + "parser": "astro" + } + } + ], + "plugins": [ + "prettier-plugin-astro" + ], + "singleQuote": true + }, + "engines": { + "node": ">=24" + }, + "packageManager": "pnpm@11.17.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9964ac44..6d421f0f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,18 +14,21 @@ importers: '@iconify-json/mdi': specifier: 1.2.3 version: 1.2.3 + '@iconify-json/simple-icons': + specifier: 1.2.91 + version: 1.2.91 '@octokit/openapi-types': specifier: 27.0.0 version: 27.0.0 '@tailwindcss/vite': specifier: 4.3.3 - version: 4.3.3(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)) + version: 4.3.3(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)) accessible-astro-components: specifier: 5.4.0 version: 5.4.0 astro: specifier: 7.1.3 - version: 7.1.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@26.1.1)(jiti@2.7.0) + version: 7.1.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@26.1.1)(jiti@2.7.0) astro-icon: specifier: 1.1.5 version: 1.1.5 @@ -51,12 +54,24 @@ importers: specifier: 1.1.1 version: 1.1.1(tailwindcss@4.3.3) devDependencies: - '@biomejs/biome': - specifier: 2.5.5 - version: 2.5.5 + '@astrojs/compiler': + specifier: 4.0.0 + version: 4.0.0 husky: specifier: 9.1.7 version: 9.1.7 + oxfmt: + specifier: 0.60.0 + version: 0.60.0 + oxlint: + specifier: 1.75.0 + version: 1.75.0 + prettier: + specifier: 3.9.6 + version: 3.9.6 + prettier-plugin-astro: + specifier: 0.14.1 + version: 0.14.1 packages: @@ -131,6 +146,12 @@ packages: resolution: {integrity: sha512-aT7xkgsbNoS6nriY5qKpbihK43slFHO41iqgHCTdOvn1ifaQxLCc5yXy+6GzAtiafoaC1zA7OwVXCXMsvUZOkg==} engines: {node: '>=22.12.0'} + '@astrojs/compiler@2.13.1': + resolution: {integrity: sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==} + + '@astrojs/compiler@4.0.0': + resolution: {integrity: sha512-eouss7G8ygdZqHuke033VMcVw5HTZUu+PXd/h06DGDUg/jt5btPYPqh66ENWw/mU78rBrf/oeC4oqoBwMtDMNA==} + '@astrojs/internal-helpers@0.10.1': resolution: {integrity: sha512-5phcroT/vmOOrYuuAxtkbPixy5hePtlz9i8K4OeDv3dNK6/UQRuXPOSRTxIOBbUY5Sonw2UaxjbuVc43Mcir6Q==} @@ -162,63 +183,6 @@ packages: resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} engines: {node: '>=6.9.0'} - '@biomejs/biome@2.5.5': - resolution: {integrity: sha512-r1S8nFsAG1MY+vJFZALzIvwXAJv6ejDQ0mxP21Tgr9YK3ZFtjrvbBwDdNhx1rUqvccEIeNg20cYCNzl6Cr69pQ==} - engines: {node: '>=14.21.3'} - hasBin: true - - '@biomejs/cli-darwin-arm64@2.5.5': - resolution: {integrity: sha512-kUrAhXVWUrwmAUnV2iXSK7umxKFysTwvqK+Ty6ptUcLY/7T3SnCAjUowE4uvwaEej6nXZ7hu/dTtbokKdsPeag==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [darwin] - - '@biomejs/cli-darwin-x64@2.5.5': - resolution: {integrity: sha512-DamiYc5bUYZ2uxlfc+RLEPtz1Abb6PO5eTbOkufLpSGwd/7AMQAdxhFYiXmwwkJL8IsT8S7GvdgwDHqaMFAvKw==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [darwin] - - '@biomejs/cli-linux-arm64-musl@2.5.5': - resolution: {integrity: sha512-U4WMl/sy/E/Q73vf15VspakLRRs2LDFcCeBxJnQfXzssb88zpV6PJPaQ3ezhQ7H6Ht2/8bvuZeHgJWzmoxllZg==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@biomejs/cli-linux-arm64@2.5.5': - resolution: {integrity: sha512-lRKF/pH/1RiYiBKExi3TCZVAtvzEm77aifrvcNiDFrR9WxeAnDUjDnseb6y2XV85mjitLs6SILGm2XG77cHtSQ==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@biomejs/cli-linux-x64-musl@2.5.5': - resolution: {integrity: sha512-m7wC7tjX5Lrmo69dc4md8FeKpPU1NTCY1v7xUoQQ2vadWwNnBS0KZOG8471otFPHrTHihQJAjQPgMObpLvDe6A==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@biomejs/cli-linux-x64@2.5.5': - resolution: {integrity: sha512-H/O39nJEw/2Zm/fm7hrmxxoF8kK/aU1uCoPp70ruXVbomaAdLpJJnCmL11Q2JotT8QVHH06So04Oq53lCSwSwQ==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@biomejs/cli-win32-arm64@2.5.5': - resolution: {integrity: sha512-7BryINPuYypLUAH3o/o5ZdgomJ4zn3EDR0ChZJst7n32S6ZhKbgHXuYydLu+YAnx59ehGFR0z/MG6qnzQi3Yyw==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [win32] - - '@biomejs/cli-win32-x64@2.5.5': - resolution: {integrity: sha512-bIBFo+n6MIxdNcVFy5CrurbKiZQiUciK3bt8+O9I4wjFZNTfXLpi+giq47522eXqW5NBc9ulx7dR1SlZKi2J5g==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [win32] - '@bruits/satteri-darwin-arm64@0.9.5': resolution: {integrity: sha512-iw4nZgx9v30lWo/MTngQqi1pI78KI0DnkSm+lVJGYdmPLgAyDNJigVhpG42/Iq55A6c1Ll8q66ljyyRiQUxwow==} cpu: [arm64] @@ -286,8 +250,8 @@ packages: '@emnapi/runtime@1.11.1': resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} - '@emnapi/runtime@1.11.3': - resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} + '@emnapi/runtime@1.11.2': + resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} '@emnapi/wasi-threads@1.2.2': resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} @@ -454,6 +418,9 @@ packages: '@iconify-json/mdi@1.2.3': resolution: {integrity: sha512-O3cLwbDOK7NNDf2ihaQOH5F9JglnulNDFV7WprU2dSoZu3h3cWH//h74uQAB87brHmvFVxIOkuBX2sZSzYhScg==} + '@iconify-json/simple-icons@1.2.91': + resolution: {integrity: sha512-plQJHZxzpkIXaeYjJF0Sc9nkzYF32EDX9olx7j1hcKYFaiTrQXbcngZmvzuV0pG6uZPU3ZuA/GIsgxSHOm6jrQ==} + '@iconify/tools@4.2.0': resolution: {integrity: sha512-WRxPva/ipxYkqZd1+CkEAQmd86dQmrwH0vwK89gmp2Kh2WyyVw57XbPng0NehP3x4V1LzLsXUneP1uMfTMZmUA==} @@ -764,6 +731,250 @@ packages: '@oxc-project/types@0.139.0': resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} + '@oxfmt/binding-android-arm-eabi@0.60.0': + resolution: {integrity: sha512-1q4q4Jc8FlOMVojEisyFAVyl8h1yawNv6phjgmhGVEDeyeOdsSnSr9x0+D4mOnEKvpO5L4mxKZ/DP9X6U3A/Mw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxfmt/binding-android-arm64@0.60.0': + resolution: {integrity: sha512-tD41I6nCt9k8SQXft0CSjjU9jg6SwG7uMu7PxodSEHXl+GDW0868oy6tTtoJkyUze8YKFgTpz/k5LuPUnFiGLw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxfmt/binding-darwin-arm64@0.60.0': + resolution: {integrity: sha512-TTpzPug96Zxdyb46KvTyIUQDdsqbumXh2TKG9C23PCT0kF7JkW56Z/quPuG9rqOFKQIi1gpRNZ7DX18LwxXPnw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxfmt/binding-darwin-x64@0.60.0': + resolution: {integrity: sha512-CnOoWgQ7L+JL/YQaRJ+NyATciSfcftncm7y3kqyte1cGtFEGnStaCd1TAyrinkfQ7nRBfHrTs1/vTwUJr3WF2Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxfmt/binding-freebsd-x64@0.60.0': + resolution: {integrity: sha512-ychJo7S3hZxdO6eDZ9zM6F2lM9fpJS3EKS5CAUSWyprdLYxTu4gbaUKV/VBPTcMJwQa2Bpo+643y3OJ537pihA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxfmt/binding-linux-arm-gnueabihf@0.60.0': + resolution: {integrity: sha512-36IH5o55T2Fx7E0feDttt+mifxN6yk9pWv4KfhAIsP0dFnUq27331OwbpOsZdoXF9soOLWm7mQUz5+UUmyec4g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm-musleabihf@0.60.0': + resolution: {integrity: sha512-G1Ve7lAa6sFBolVI2LWHfEAqy0YKh4vnioH8uYO9kAEdgM7mR40IksIx9/Zk4+vbYew/sGa4J9Q4tZ3n9gXDHA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm64-gnu@0.60.0': + resolution: {integrity: sha512-LTQdRBf6uzj/h7Xk6lKzbGD2hrF/fK4YI9LIN1c0509tPUn8wRa3mCmrFQpEWJPLYGFrLFFMTYW1Ljj6VqW2Hw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-arm64-musl@0.60.0': + resolution: {integrity: sha512-2JMo3XPxMPx3hiqddSZYyaH+fKJm6cz0u8n1naYjP/CdOQOZW34i8lKBUfmbWiuFvd6KoYXLmhAyBuvojsYS7Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-linux-ppc64-gnu@0.60.0': + resolution: {integrity: sha512-L3C+nBD13lr306tr/PjM3RMll+BVqgFrIgUyoeHuai5oueJrRLgO3j+GO5/Cbhtkf5PSlHYTI1JY7iqBd1qa6A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-gnu@0.60.0': + resolution: {integrity: sha512-M4MsmvqlxFiPtSRGyBYQSZxchEf463AOyd+Dh4/9xDpjWBsRtDUTDMFN5EdHinjVK1/eDJQ8MLpcYjpYayaCnA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-musl@0.60.0': + resolution: {integrity: sha512-OH+9UskYuxRB+GxqdGkVN8f5UpwhqG8YscNo1wl8+KJ62cd7wZdGga6iGLJIf8kibF1WBwvlfDUx3cez/VXwFg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-linux-s390x-gnu@0.60.0': + resolution: {integrity: sha512-y7AAFutt9wFWBFOAn6+BHaV39usZmcr3YYH2385f+NHgPNpIF9HpqKp0jgUxPaUOCyG3oaX5VhJduL1Nw164rw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-x64-gnu@0.60.0': + resolution: {integrity: sha512-yKZ9+CXAI+1RO5nH/4Z/9M6DAsfOzd5bw/gtWk81KB4mpalMaRRSXfouc5/tHxazDmBek55HNPepNYBgaCew0Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-x64-musl@0.60.0': + resolution: {integrity: sha512-bCUGaF6hJOYnQzLJdHLZbvGsOd5oSvGAyJhPAKum2uyLYUuXmP8vqg690DWi2hqcnIoYpqSqCrjzE5aiUAgwQg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-openharmony-arm64@0.60.0': + resolution: {integrity: sha512-GrUeZOvzP30ExxfCuQiyofuUGI+OmvAgFwOO5w5p9mGPlxcyuqI+6Sy9fAKFFfLQrqKYWFgc5sYA2Unj/29nPg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxfmt/binding-win32-arm64-msvc@0.60.0': + resolution: {integrity: sha512-WD4Q954kUl2TDJV/6q7UnE2rlKk047kXLJsr4bJ2mXRaAqNXcmV3nwKUsGCc3mz/jYDBnXtJEaBErJEybK8iQQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxfmt/binding-win32-ia32-msvc@0.60.0': + resolution: {integrity: sha512-HqDekjr8JXzVDUP1YthDZ1Y3CBEcuZT4WX3B+1kaxj8CvZA8Y2YhcEsXqoSop3tVsgjACxjnFQFDkBo0r/jq1Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxfmt/binding-win32-x64-msvc@0.60.0': + resolution: {integrity: sha512-tz78yhmGPKboTMHCHSaUqXK8JrmoSejgDcWeqAtg2s07ZGKQ3rH5Jn8NuXPGNG33CDbY2e9NoQWXIVEmKO21Rw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@oxlint/binding-android-arm-eabi@1.75.0': + resolution: {integrity: sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxlint/binding-android-arm64@1.75.0': + resolution: {integrity: sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxlint/binding-darwin-arm64@1.75.0': + resolution: {integrity: sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxlint/binding-darwin-x64@1.75.0': + resolution: {integrity: sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxlint/binding-freebsd-x64@1.75.0': + resolution: {integrity: sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxlint/binding-linux-arm-gnueabihf@1.75.0': + resolution: {integrity: sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm-musleabihf@1.75.0': + resolution: {integrity: sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm64-gnu@1.75.0': + resolution: {integrity: sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-arm64-musl@1.75.0': + resolution: {integrity: sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxlint/binding-linux-ppc64-gnu@1.75.0': + resolution: {integrity: sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-riscv64-gnu@1.75.0': + resolution: {integrity: sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-riscv64-musl@1.75.0': + resolution: {integrity: sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxlint/binding-linux-s390x-gnu@1.75.0': + resolution: {integrity: sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-x64-gnu@1.75.0': + resolution: {integrity: sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-x64-musl@1.75.0': + resolution: {integrity: sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxlint/binding-openharmony-arm64@1.75.0': + resolution: {integrity: sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxlint/binding-win32-arm64-msvc@1.75.0': + resolution: {integrity: sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxlint/binding-win32-ia32-msvc@1.75.0': + resolution: {integrity: sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxlint/binding-win32-x64-msvc@1.75.0': + resolution: {integrity: sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@rolldown/binding-android-arm64@1.1.5': resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -967,13 +1178,6 @@ packages: resolution: {integrity: sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] - bundledDependencies: - - '@napi-rs/wasm-runtime' - - '@emnapi/core' - - '@emnapi/runtime' - - '@tybys/wasm-util' - - '@emnapi/wasi-threads' - - tslib '@tailwindcss/oxide-win32-arm64-msvc@4.3.3': resolution: {integrity: sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==} @@ -1200,8 +1404,8 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - devalue@5.8.2: - resolution: {integrity: sha512-DObPPAfdtFbXjxLqK8s2Xk9ZuWz5+ZoFEhC7J76es4GU/rEiXwHTmbImoCdyoCOcBH1UF3+Cz6Z2sYD4hyl5TA==} + devalue@5.8.1: + resolution: {integrity: sha512-4CXDYRBGqN+57wVJkuXBYmpAVUSg3L6JAQa/DFqm238G73E1wuyc/JhGQJzN7vUf/CMphYau2zXbfWzDR5aTEw==} devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -1406,60 +1610,30 @@ packages: cpu: [arm64] os: [android] - lightningcss-android-arm64@1.33.0: - resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [android] - lightningcss-darwin-arm64@1.32.0: resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-arm64@1.33.0: - resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] - lightningcss-darwin-x64@1.32.0: resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-darwin-x64@1.33.0: - resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] - lightningcss-freebsd-x64@1.32.0: resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-freebsd-x64@1.33.0: - resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.32.0: resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm-gnueabihf@1.33.0: - resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] - lightningcss-linux-arm64-gnu@1.32.0: resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} engines: {node: '>= 12.0.0'} @@ -1467,13 +1641,6 @@ packages: os: [linux] libc: [glibc] - lightningcss-linux-arm64-gnu@1.33.0: - resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - libc: [glibc] - lightningcss-linux-arm64-musl@1.32.0: resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} engines: {node: '>= 12.0.0'} @@ -1481,13 +1648,6 @@ packages: os: [linux] libc: [musl] - lightningcss-linux-arm64-musl@1.33.0: - resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - libc: [musl] - lightningcss-linux-x64-gnu@1.32.0: resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} engines: {node: '>= 12.0.0'} @@ -1495,13 +1655,6 @@ packages: os: [linux] libc: [glibc] - lightningcss-linux-x64-gnu@1.33.0: - resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - libc: [glibc] - lightningcss-linux-x64-musl@1.32.0: resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} engines: {node: '>= 12.0.0'} @@ -1509,45 +1662,22 @@ packages: os: [linux] libc: [musl] - lightningcss-linux-x64-musl@1.33.0: - resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - libc: [musl] - lightningcss-win32-arm64-msvc@1.32.0: resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-arm64-msvc@1.33.0: - resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [win32] - lightningcss-win32-x64-msvc@1.32.0: resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss-win32-x64-msvc@1.33.0: - resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] - lightningcss@1.32.0: resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} engines: {node: '>= 12.0.0'} - lightningcss@1.33.0: - resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} - engines: {node: '>= 12.0.0'} - local-pkg@1.2.1: resolution: {integrity: sha512-++gUqRDEvcnN6Zhqrr+y/CkVEHhlrR96vZn3nZZPYzMcBUyBtTKzB9NadClFIsIVSsu+3i9tfk/erqy9kAmt7Q==} engines: {node: '>=14'} @@ -1637,8 +1767,8 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - obug@2.1.4: - resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} + obug@2.1.3: + resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} engines: {node: '>=12.20.0'} octokit@5.0.5: @@ -1660,20 +1790,46 @@ packages: oniguruma-to-es@4.3.6: resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==} - p-limit@7.3.1: - resolution: {integrity: sha512-0trZaiG7Y7kN/Egy9a8j47t9osC0Tch4PaIWd9yGF6bvmlk7muExRvGNYb8sXBwEKMoNKsbNN9P8EefuQekE4Q==} + oxfmt@0.60.0: + resolution: {integrity: sha512-fViX6i+gJuZWY+jI/fnR6WRbRj70GZ9RlCd30MygJrHTUNc4DxvKHWw8vBjMjffv3PgU5qWDR0AzmojQByqaZA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + svelte: ^5.0.0 + vite-plus: '*' + peerDependenciesMeta: + svelte: + optional: true + vite-plus: + optional: true + + oxlint@1.75.0: + resolution: {integrity: sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + oxlint-tsgolint: '>=7.0.2001' + vite-plus: '*' + peerDependenciesMeta: + oxlint-tsgolint: + optional: true + vite-plus: + optional: true + + p-limit@7.3.0: + resolution: {integrity: sha512-7cIXg/Z0M5WZRblrsOla88S4wAK+zOQQWeBYfV3qJuJXMr+LnbYjaadrFaS0JILfEDPVqHyKnZ1Z/1d6J9VVUw==} engines: {node: '>=20'} - p-queue@9.3.3: - resolution: {integrity: sha512-NXAOdnEe5FsZJfT4oK84lE1Y5cFFdWlRuOo5tww8DyNMxyRXwn39fIkUtNLKppcPC+UYU/bXujNCUGDv01y7CA==} + p-queue@9.3.1: + resolution: {integrity: sha512-POWdiIPmsUPGwb4FeQ4OBg46aqmcInSWe45CKDsGHiOBiVQM9chqfQTuqhuTzcg2Vz9faTI65at0KkVyVEiCHw==} engines: {node: '>=20'} p-timeout@7.0.1: resolution: {integrity: sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==} engines: {node: '>=20'} - package-manager-detector@1.8.0: - resolution: {integrity: sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==} + package-manager-detector@1.7.0: + resolution: {integrity: sha512-xg1eHpwYL/D/HEdWw2goFZP6vV0FH7W+PZ5rFkGjdIDLtxq7EkzBUeT3m+lndYCt8wKbmofUu1MUdMCXkCk9ZQ==} parse5-htmlparser2-tree-adapter@7.1.0: resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} @@ -1710,10 +1866,19 @@ packages: pkg-types@2.3.1: resolution: {integrity: sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==} - postcss@8.5.23: - resolution: {integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==} + postcss@8.5.19: + resolution: {integrity: sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ==} engines: {node: ^10 || ^12 || >=14} + prettier-plugin-astro@0.14.1: + resolution: {integrity: sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==} + engines: {node: ^14.15.0 || >=16.0.0} + + prettier@3.9.6: + resolution: {integrity: sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==} + engines: {node: '>=14'} + hasBin: true + prismjs@1.30.0: resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} engines: {node: '>=6'} @@ -1758,14 +1923,20 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + s.color@0.0.15: + resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sass-formatter@0.7.9: + resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==} + satteri@0.9.5: resolution: {integrity: sha512-ZuWVl+vnM64y+/TtX8Kosv2c00W+hLQiiwnEL6H0UKVVrxFqMw4D2CJHHQaouVd89OAhtBBfjWLqhKi3TVUV4w==} - sax@1.6.1: - resolution: {integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==} + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} engines: {node: '>=11.0.0'} semver@7.8.5: @@ -1803,6 +1974,9 @@ packages: stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + suf-log@2.5.3: + resolution: {integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==} + svgo@3.3.4: resolution: {integrity: sha512-GsNRis4e8jxn2Y9ENz/8lbJ93CstG8svtMnuRaHbiF2LTJ5tK0/q3t/URPq9Zc7zVWBJnNnJMIp6bevK7bSmNg==} engines: {node: '>=14.0.0'} @@ -1828,8 +2002,8 @@ packages: resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} - tar@7.5.22: - resolution: {integrity: sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==} + tar@7.5.20: + resolution: {integrity: sha512-9FcyK4PA6+WbzlTM9WhQm6vB5W7cP7dUiPsv1g7YDwEQnQ1CGpK3MGlKk/ITVWMk05kHZuBhmVhiv8LZoy/PFQ==} engines: {node: '>=18'} tiny-inflate@1.0.3: @@ -1847,6 +2021,10 @@ packages: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} + tinypool@2.1.0: + resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} + engines: {node: ^20.0.0 || >=22.0.0} + toad-cache@3.7.4: resolution: {integrity: sha512-m1TdR/rvT7kgGJZhspNtXdsdYk0fddFpJJFlG5s+UkPFo6lkLoZ3YLOaovPYjq1R75NP5JfeTlSHaOsE09peCg==} engines: {node: '>=20'} @@ -1872,8 +2050,8 @@ packages: undici-types@8.3.0: resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} - undici@7.29.0: - resolution: {integrity: sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==} + undici@7.28.0: + resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==} engines: {node: '>=20.18.1'} unified@11.0.5: @@ -1974,8 +2152,8 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite@8.1.5: - resolution: {integrity: sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==} + vite@8.1.4: + resolution: {integrity: sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -2068,7 +2246,7 @@ snapshots: '@antfu/install-pkg@1.1.0': dependencies: - package-manager-detector: 1.8.0 + package-manager-detector: 1.7.0 tinyexec: 1.2.4 '@antfu/utils@8.1.1': {} @@ -2091,12 +2269,9 @@ snapshots: '@astrojs/compiler-binding-linux-x64-musl@0.3.1': optional: true - '@astrojs/compiler-binding-wasm32-wasi@0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': + '@astrojs/compiler-binding-wasm32-wasi@0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optional: true '@astrojs/compiler-binding-win32-arm64-msvc@0.3.1': @@ -2105,7 +2280,7 @@ snapshots: '@astrojs/compiler-binding-win32-x64-msvc@0.3.1': optional: true - '@astrojs/compiler-binding@0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': + '@astrojs/compiler-binding@0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': optionalDependencies: '@astrojs/compiler-binding-darwin-arm64': 0.3.1 '@astrojs/compiler-binding-darwin-x64': 0.3.1 @@ -2113,19 +2288,17 @@ snapshots: '@astrojs/compiler-binding-linux-arm64-musl': 0.3.1 '@astrojs/compiler-binding-linux-x64-gnu': 0.3.1 '@astrojs/compiler-binding-linux-x64-musl': 0.3.1 - '@astrojs/compiler-binding-wasm32-wasi': 0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) + '@astrojs/compiler-binding-wasm32-wasi': 0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) '@astrojs/compiler-binding-win32-arm64-msvc': 0.3.1 '@astrojs/compiler-binding-win32-x64-msvc': 0.3.1 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - '@astrojs/compiler-rs@0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': + '@astrojs/compiler-rs@0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: - '@astrojs/compiler-binding': 0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' + '@astrojs/compiler-binding': 0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + + '@astrojs/compiler@2.13.1': {} + + '@astrojs/compiler@4.0.0': {} '@astrojs/internal-helpers@0.10.1': dependencies: @@ -2155,7 +2328,7 @@ snapshots: ci-info: 4.4.0 dset: 3.1.4 is-docker: 4.0.0 - package-manager-detector: 1.8.0 + package-manager-detector: 1.7.0 '@babel/helper-string-parser@7.29.7': {} @@ -2170,41 +2343,6 @@ snapshots: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@biomejs/biome@2.5.5': - optionalDependencies: - '@biomejs/cli-darwin-arm64': 2.5.5 - '@biomejs/cli-darwin-x64': 2.5.5 - '@biomejs/cli-linux-arm64': 2.5.5 - '@biomejs/cli-linux-arm64-musl': 2.5.5 - '@biomejs/cli-linux-x64': 2.5.5 - '@biomejs/cli-linux-x64-musl': 2.5.5 - '@biomejs/cli-win32-arm64': 2.5.5 - '@biomejs/cli-win32-x64': 2.5.5 - - '@biomejs/cli-darwin-arm64@2.5.5': - optional: true - - '@biomejs/cli-darwin-x64@2.5.5': - optional: true - - '@biomejs/cli-linux-arm64-musl@2.5.5': - optional: true - - '@biomejs/cli-linux-arm64@2.5.5': - optional: true - - '@biomejs/cli-linux-x64-musl@2.5.5': - optional: true - - '@biomejs/cli-linux-x64@2.5.5': - optional: true - - '@biomejs/cli-win32-arm64@2.5.5': - optional: true - - '@biomejs/cli-win32-x64@2.5.5': - optional: true - '@bruits/satteri-darwin-arm64@0.9.5': optional: true @@ -2263,7 +2401,7 @@ snapshots: tslib: 2.8.1 optional: true - '@emnapi/runtime@1.11.3': + '@emnapi/runtime@1.11.2': dependencies: tslib: 2.8.1 optional: true @@ -2359,6 +2497,10 @@ snapshots: dependencies: '@iconify/types': 2.0.0 + '@iconify-json/simple-icons@1.2.91': + dependencies: + '@iconify/types': 2.0.0 + '@iconify/tools@4.2.0': dependencies: '@iconify/types': 2.0.0 @@ -2369,7 +2511,7 @@ snapshots: local-pkg: 1.2.1 pathe: 2.0.3 svgo: 3.3.4 - tar: 7.5.22 + tar: 7.5.20 transitivePeerDependencies: - supports-color @@ -2477,7 +2619,7 @@ snapshots: '@img/sharp-wasm32@0.35.3': dependencies: - '@emnapi/runtime': 1.11.3 + '@emnapi/runtime': 1.11.2 optional: true '@img/sharp-webcontainers-wasm32@0.35.3': @@ -2524,13 +2666,6 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': - dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.3 - '@tybys/wasm-util': 0.10.3 - optional: true - '@octokit/app@16.1.2': dependencies: '@octokit/auth-app': 8.2.0 @@ -2683,6 +2818,120 @@ snapshots: '@oxc-project/types@0.139.0': {} + '@oxfmt/binding-android-arm-eabi@0.60.0': + optional: true + + '@oxfmt/binding-android-arm64@0.60.0': + optional: true + + '@oxfmt/binding-darwin-arm64@0.60.0': + optional: true + + '@oxfmt/binding-darwin-x64@0.60.0': + optional: true + + '@oxfmt/binding-freebsd-x64@0.60.0': + optional: true + + '@oxfmt/binding-linux-arm-gnueabihf@0.60.0': + optional: true + + '@oxfmt/binding-linux-arm-musleabihf@0.60.0': + optional: true + + '@oxfmt/binding-linux-arm64-gnu@0.60.0': + optional: true + + '@oxfmt/binding-linux-arm64-musl@0.60.0': + optional: true + + '@oxfmt/binding-linux-ppc64-gnu@0.60.0': + optional: true + + '@oxfmt/binding-linux-riscv64-gnu@0.60.0': + optional: true + + '@oxfmt/binding-linux-riscv64-musl@0.60.0': + optional: true + + '@oxfmt/binding-linux-s390x-gnu@0.60.0': + optional: true + + '@oxfmt/binding-linux-x64-gnu@0.60.0': + optional: true + + '@oxfmt/binding-linux-x64-musl@0.60.0': + optional: true + + '@oxfmt/binding-openharmony-arm64@0.60.0': + optional: true + + '@oxfmt/binding-win32-arm64-msvc@0.60.0': + optional: true + + '@oxfmt/binding-win32-ia32-msvc@0.60.0': + optional: true + + '@oxfmt/binding-win32-x64-msvc@0.60.0': + optional: true + + '@oxlint/binding-android-arm-eabi@1.75.0': + optional: true + + '@oxlint/binding-android-arm64@1.75.0': + optional: true + + '@oxlint/binding-darwin-arm64@1.75.0': + optional: true + + '@oxlint/binding-darwin-x64@1.75.0': + optional: true + + '@oxlint/binding-freebsd-x64@1.75.0': + optional: true + + '@oxlint/binding-linux-arm-gnueabihf@1.75.0': + optional: true + + '@oxlint/binding-linux-arm-musleabihf@1.75.0': + optional: true + + '@oxlint/binding-linux-arm64-gnu@1.75.0': + optional: true + + '@oxlint/binding-linux-arm64-musl@1.75.0': + optional: true + + '@oxlint/binding-linux-ppc64-gnu@1.75.0': + optional: true + + '@oxlint/binding-linux-riscv64-gnu@1.75.0': + optional: true + + '@oxlint/binding-linux-riscv64-musl@1.75.0': + optional: true + + '@oxlint/binding-linux-s390x-gnu@1.75.0': + optional: true + + '@oxlint/binding-linux-x64-gnu@1.75.0': + optional: true + + '@oxlint/binding-linux-x64-musl@1.75.0': + optional: true + + '@oxlint/binding-openharmony-arm64@1.75.0': + optional: true + + '@oxlint/binding-win32-arm64-msvc@1.75.0': + optional: true + + '@oxlint/binding-win32-ia32-msvc@1.75.0': + optional: true + + '@oxlint/binding-win32-x64-msvc@1.75.0': + optional: true + '@rolldown/binding-android-arm64@1.1.5': optional: true @@ -2841,12 +3090,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.3.3 '@tailwindcss/oxide-win32-x64-msvc': 4.3.3 - '@tailwindcss/vite@4.3.3(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0))': + '@tailwindcss/vite@4.3.3(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0))': dependencies: '@tailwindcss/node': 4.3.3 '@tailwindcss/oxide': 4.3.3 tailwindcss: 4.3.3 - vite: 8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0) + vite: 8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0) '@tybys/wasm-util@0.10.3': dependencies: @@ -2912,9 +3161,9 @@ snapshots: transitivePeerDependencies: - supports-color - astro@7.1.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@26.1.1)(jiti@2.7.0): + astro@7.1.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)(@types/node@26.1.1)(jiti@2.7.0): dependencies: - '@astrojs/compiler-rs': 0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) + '@astrojs/compiler-rs': 0.3.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) '@astrojs/internal-helpers': 0.10.1 '@astrojs/markdown-satteri': 0.3.4 '@astrojs/telemetry': 3.3.3 @@ -2929,7 +3178,7 @@ snapshots: clsx: 2.1.1 common-ancestor-path: 2.0.0 cookie: 2.0.1 - devalue: 5.8.2 + devalue: 5.8.1 diff: 8.0.4 dset: 3.1.4 es-module-lexer: 2.3.1 @@ -2946,10 +3195,10 @@ snapshots: magicast: 0.5.3 mrmime: 2.0.1 neotraverse: 1.0.1 - obug: 2.1.4 - p-limit: 7.3.1 - p-queue: 9.3.3 - package-manager-detector: 1.8.0 + obug: 2.1.3 + p-limit: 7.3.0 + p-queue: 9.3.1 + package-manager-detector: 1.7.0 piccolore: 0.1.3 picomatch: 4.0.5 semver: 7.8.5 @@ -2962,8 +3211,8 @@ snapshots: ultrahtml: 1.7.0 unifont: 0.7.4 unstorage: 1.17.5 - vite: 8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0) - vitefu: 1.1.3(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)) + vite: 8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0) + vitefu: 1.1.3(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)) xxhash-wasm: 1.1.0 yargs-parser: 22.0.0 zod: 4.4.3 @@ -2978,11 +3227,8 @@ snapshots: - '@azure/storage-blob' - '@capacitor/preferences' - '@deno/kv' - - '@emnapi/core' - - '@emnapi/runtime' - '@netlify/blobs' - '@planetscale/database' - - '@types/node' - '@upstash/redis' - '@vercel/blob' - '@vercel/functions' @@ -2992,7 +3238,6 @@ snapshots: - db0 - idb-keyval - ioredis - - jiti - less - rollup - sass @@ -3042,7 +3287,7 @@ snapshots: parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 7.1.0 parse5-parser-stream: 7.1.2 - undici: 7.29.0 + undici: 7.28.0 whatwg-mimetype: 4.0.0 chokidar@5.0.0: @@ -3120,7 +3365,7 @@ snapshots: detect-libc@2.1.2: {} - devalue@5.8.2: {} + devalue@5.8.1: {} devlop@1.1.0: dependencies: @@ -3364,69 +3609,36 @@ snapshots: lightningcss-android-arm64@1.32.0: optional: true - lightningcss-android-arm64@1.33.0: - optional: true - lightningcss-darwin-arm64@1.32.0: optional: true - lightningcss-darwin-arm64@1.33.0: - optional: true - lightningcss-darwin-x64@1.32.0: optional: true - lightningcss-darwin-x64@1.33.0: - optional: true - lightningcss-freebsd-x64@1.32.0: optional: true - lightningcss-freebsd-x64@1.33.0: - optional: true - lightningcss-linux-arm-gnueabihf@1.32.0: optional: true - lightningcss-linux-arm-gnueabihf@1.33.0: - optional: true - lightningcss-linux-arm64-gnu@1.32.0: optional: true - lightningcss-linux-arm64-gnu@1.33.0: - optional: true - lightningcss-linux-arm64-musl@1.32.0: optional: true - lightningcss-linux-arm64-musl@1.33.0: - optional: true - lightningcss-linux-x64-gnu@1.32.0: optional: true - lightningcss-linux-x64-gnu@1.33.0: - optional: true - lightningcss-linux-x64-musl@1.32.0: optional: true - lightningcss-linux-x64-musl@1.33.0: - optional: true - lightningcss-win32-arm64-msvc@1.32.0: optional: true - lightningcss-win32-arm64-msvc@1.33.0: - optional: true - lightningcss-win32-x64-msvc@1.32.0: optional: true - lightningcss-win32-x64-msvc@1.33.0: - optional: true - lightningcss@1.32.0: dependencies: detect-libc: 2.1.2 @@ -3443,22 +3655,6 @@ snapshots: lightningcss-win32-arm64-msvc: 1.32.0 lightningcss-win32-x64-msvc: 1.32.0 - lightningcss@1.33.0: - dependencies: - detect-libc: 2.1.2 - optionalDependencies: - lightningcss-android-arm64: 1.33.0 - lightningcss-darwin-arm64: 1.33.0 - lightningcss-darwin-x64: 1.33.0 - lightningcss-freebsd-x64: 1.33.0 - lightningcss-linux-arm-gnueabihf: 1.33.0 - lightningcss-linux-arm64-gnu: 1.33.0 - lightningcss-linux-arm64-musl: 1.33.0 - lightningcss-linux-x64-gnu: 1.33.0 - lightningcss-linux-x64-musl: 1.33.0 - lightningcss-win32-arm64-msvc: 1.33.0 - lightningcss-win32-x64-msvc: 1.33.0 - local-pkg@1.2.1: dependencies: mlly: 1.8.2 @@ -3549,7 +3745,7 @@ snapshots: dependencies: boolbase: 1.0.0 - obug@2.1.4: {} + obug@2.1.3: {} octokit@5.0.5: dependencies: @@ -3585,18 +3781,64 @@ snapshots: regex: 6.1.0 regex-recursion: 6.0.2 - p-limit@7.3.1: + oxfmt@0.60.0: + dependencies: + tinypool: 2.1.0 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.60.0 + '@oxfmt/binding-android-arm64': 0.60.0 + '@oxfmt/binding-darwin-arm64': 0.60.0 + '@oxfmt/binding-darwin-x64': 0.60.0 + '@oxfmt/binding-freebsd-x64': 0.60.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.60.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.60.0 + '@oxfmt/binding-linux-arm64-gnu': 0.60.0 + '@oxfmt/binding-linux-arm64-musl': 0.60.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.60.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.60.0 + '@oxfmt/binding-linux-riscv64-musl': 0.60.0 + '@oxfmt/binding-linux-s390x-gnu': 0.60.0 + '@oxfmt/binding-linux-x64-gnu': 0.60.0 + '@oxfmt/binding-linux-x64-musl': 0.60.0 + '@oxfmt/binding-openharmony-arm64': 0.60.0 + '@oxfmt/binding-win32-arm64-msvc': 0.60.0 + '@oxfmt/binding-win32-ia32-msvc': 0.60.0 + '@oxfmt/binding-win32-x64-msvc': 0.60.0 + + oxlint@1.75.0: + optionalDependencies: + '@oxlint/binding-android-arm-eabi': 1.75.0 + '@oxlint/binding-android-arm64': 1.75.0 + '@oxlint/binding-darwin-arm64': 1.75.0 + '@oxlint/binding-darwin-x64': 1.75.0 + '@oxlint/binding-freebsd-x64': 1.75.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.75.0 + '@oxlint/binding-linux-arm-musleabihf': 1.75.0 + '@oxlint/binding-linux-arm64-gnu': 1.75.0 + '@oxlint/binding-linux-arm64-musl': 1.75.0 + '@oxlint/binding-linux-ppc64-gnu': 1.75.0 + '@oxlint/binding-linux-riscv64-gnu': 1.75.0 + '@oxlint/binding-linux-riscv64-musl': 1.75.0 + '@oxlint/binding-linux-s390x-gnu': 1.75.0 + '@oxlint/binding-linux-x64-gnu': 1.75.0 + '@oxlint/binding-linux-x64-musl': 1.75.0 + '@oxlint/binding-openharmony-arm64': 1.75.0 + '@oxlint/binding-win32-arm64-msvc': 1.75.0 + '@oxlint/binding-win32-ia32-msvc': 1.75.0 + '@oxlint/binding-win32-x64-msvc': 1.75.0 + + p-limit@7.3.0: dependencies: yocto-queue: 1.2.2 - p-queue@9.3.3: + p-queue@9.3.1: dependencies: eventemitter3: 5.0.4 p-timeout: 7.0.1 p-timeout@7.0.1: {} - package-manager-detector@1.8.0: {} + package-manager-detector@1.7.0: {} parse5-htmlparser2-tree-adapter@7.1.0: dependencies: @@ -3635,12 +3877,20 @@ snapshots: exsolve: 1.1.0 pathe: 2.0.3 - postcss@8.5.23: + postcss@8.5.19: dependencies: nanoid: 3.3.16 picocolors: 1.1.1 source-map-js: 1.2.1 + prettier-plugin-astro@0.14.1: + dependencies: + '@astrojs/compiler': 2.13.1 + prettier: 3.9.6 + sass-formatter: 0.7.9 + + prettier@3.9.6: {} + prismjs@1.30.0: {} process-ancestry@0.1.0: {} @@ -3697,8 +3947,14 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.1.5 '@rolldown/binding-win32-x64-msvc': 1.1.5 + s.color@0.0.15: {} + safer-buffer@2.1.2: {} + sass-formatter@0.7.9: + dependencies: + suf-log: 2.5.3 + satteri@0.9.5: dependencies: '@types/estree-jsx': 1.0.5 @@ -3716,7 +3972,7 @@ snapshots: '@bruits/satteri-win32-arm64-msvc': 0.9.5 '@bruits/satteri-win32-x64-msvc': 0.9.5 - sax@1.6.1: {} + sax@1.6.0: {} semver@7.8.5: {} @@ -3777,6 +4033,10 @@ snapshots: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 + suf-log@2.5.3: + dependencies: + s.color: 0.0.15 + svgo@3.3.4: dependencies: commander: 7.2.0 @@ -3785,7 +4045,7 @@ snapshots: css-what: 6.2.2 csso: 5.0.5 picocolors: 1.1.1 - sax: 1.6.1 + sax: 1.6.0 svgo@4.0.2: dependencies: @@ -3795,7 +4055,7 @@ snapshots: css-what: 6.2.2 csso: 5.0.5 picocolors: 1.1.1 - sax: 1.6.1 + sax: 1.6.0 tailwind-merge@3.6.0: {} @@ -3807,7 +4067,7 @@ snapshots: tapable@2.3.3: {} - tar@7.5.22: + tar@7.5.20: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 @@ -3826,6 +4086,8 @@ snapshots: fdir: 6.5.0(picomatch@4.0.5) picomatch: 4.0.5 + tinypool@2.1.0: {} + toad-cache@3.7.4: {} trim-lines@3.0.1: {} @@ -3844,7 +4106,7 @@ snapshots: undici-types@8.3.0: optional: true - undici@7.29.0: {} + undici@7.28.0: {} unified@11.0.5: dependencies: @@ -3915,11 +4177,11 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0): + vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0): dependencies: - lightningcss: 1.33.0 + lightningcss: 1.32.0 picomatch: 4.0.5 - postcss: 8.5.23 + postcss: 8.5.19 rolldown: 1.1.5 tinyglobby: 0.2.17 optionalDependencies: @@ -3928,9 +4190,9 @@ snapshots: fsevents: 2.3.3 jiti: 2.7.0 - vitefu@1.1.3(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)): + vitefu@1.1.3(vite@8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)): optionalDependencies: - vite: 8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0) + vite: 8.1.4(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0) web-namespaces@2.0.1: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 5843b90a..a077858f 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -3,7 +3,48 @@ allowBuilds: sharp: true onlyBuiltDependencies: - - "@biomejs/biome" - - "@tailwindcss/oxide" + - '@tailwindcss/oxide' - esbuild - sharp +minimumReleaseAgeExclude: + - oxfmt@0.60.0 + - oxlint@1.75.0 + - '@oxfmt/binding-android-arm-eabi@0.60.0' + - '@oxfmt/binding-android-arm64@0.60.0' + - '@oxfmt/binding-darwin-arm64@0.60.0' + - '@oxfmt/binding-darwin-x64@0.60.0' + - '@oxfmt/binding-freebsd-x64@0.60.0' + - '@oxfmt/binding-linux-arm-gnueabihf@0.60.0' + - '@oxfmt/binding-linux-arm-musleabihf@0.60.0' + - '@oxfmt/binding-linux-arm64-gnu@0.60.0' + - '@oxfmt/binding-linux-arm64-musl@0.60.0' + - '@oxfmt/binding-linux-ppc64-gnu@0.60.0' + - '@oxfmt/binding-linux-riscv64-gnu@0.60.0' + - '@oxfmt/binding-linux-riscv64-musl@0.60.0' + - '@oxfmt/binding-linux-s390x-gnu@0.60.0' + - '@oxfmt/binding-linux-x64-gnu@0.60.0' + - '@oxfmt/binding-linux-x64-musl@0.60.0' + - '@oxfmt/binding-openharmony-arm64@0.60.0' + - '@oxfmt/binding-win32-arm64-msvc@0.60.0' + - '@oxfmt/binding-win32-ia32-msvc@0.60.0' + - '@oxfmt/binding-win32-x64-msvc@0.60.0' + - '@oxlint/binding-android-arm-eabi@1.75.0' + - '@oxlint/binding-android-arm64@1.75.0' + - '@oxlint/binding-darwin-arm64@1.75.0' + - '@oxlint/binding-darwin-x64@1.75.0' + - '@oxlint/binding-freebsd-x64@1.75.0' + - '@oxlint/binding-linux-arm-gnueabihf@1.75.0' + - '@oxlint/binding-linux-arm-musleabihf@1.75.0' + - '@oxlint/binding-linux-arm64-gnu@1.75.0' + - '@oxlint/binding-linux-arm64-musl@1.75.0' + - '@oxlint/binding-linux-ppc64-gnu@1.75.0' + - '@oxlint/binding-linux-riscv64-gnu@1.75.0' + - '@oxlint/binding-linux-riscv64-musl@1.75.0' + - '@oxlint/binding-linux-s390x-gnu@1.75.0' + - '@oxlint/binding-linux-x64-gnu@1.75.0' + - '@oxlint/binding-linux-x64-musl@1.75.0' + - '@oxlint/binding-openharmony-arm64@1.75.0' + - '@oxlint/binding-win32-arm64-msvc@1.75.0' + - '@oxlint/binding-win32-ia32-msvc@1.75.0' + - '@oxlint/binding-win32-x64-msvc@1.75.0' + - prettier@3.9.6 diff --git a/src/components/DownloadButton.astro b/src/components/DownloadButton.astro index 2c0c8ffe..58ec6a3b 100644 --- a/src/components/DownloadButton.astro +++ b/src/components/DownloadButton.astro @@ -5,23 +5,23 @@ export interface Props { item: { url: string; name: string; + icon?: string; }; + variant?: 'primary' | 'ghost'; } -const { item } = Astro.props; +const { item, variant = 'ghost' } = Astro.props; --- -
- - {item.name} -
+ + {item.name}
diff --git a/src/components/Footer.astro b/src/components/Footer.astro index 30463307..265af300 100644 --- a/src/components/Footer.astro +++ b/src/components/Footer.astro @@ -3,32 +3,71 @@ import { Icon } from 'astro-icon/components'; import { siteMetadata, URLs } from '~/constants'; -const { currentPathname } = Astro.props; -const isHomepage = currentPathname === '/'; +import Logo from '~/components/Logo.astro'; + +const links = [ + { name: 'FAQ', path: '/faq/' }, + { name: 'Releases', path: URLs.GITHUB.LATEST_RELEASE }, + { name: 'Issues', path: URLs.GITHUB.ISSUES }, + { name: 'GitHub', path: URLs.GITHUB.REPO }, +]; --- -
-
- +
+
- - +
+ +
+
{siteMetadata.title}
+
+ {siteMetadata.description}. +
+
+
+ + +
-
- Copyright Β©{' '} - {siteMetadata.author.name} - {' '} - {new Date().getFullYear()} +
+ + Β© {new Date().getFullYear()}{' '} + + {siteMetadata.author.name} + + + MIT Licensed Β· Free forever
-
+ diff --git a/src/components/GitHubRepo.astro b/src/components/GitHubRepo.astro index 00af2be6..884a340f 100644 --- a/src/components/GitHubRepo.astro +++ b/src/components/GitHubRepo.astro @@ -1,14 +1,11 @@ --- import { Icon } from 'astro-icon/components'; -import { Octokit } from 'octokit'; - import { siteMetadata, URLs } from '~/constants'; +import { octokit } from '~/octokit'; import type { RepoStats } from '~/types'; -const octokit = new Octokit(); - const formatCount = (count: number) => { return new Intl.NumberFormat('en', { notation: 'compact', @@ -51,28 +48,37 @@ const { forks, stars, latestReleaseName } = await loadRepoStats(); target="_blank" rel="noopener noreferrer" aria-label="GitHub Repository" - class="gitify-repo hover:text-gitify-repo-hover" + class="group flex items-center gap-2.5 rounded-full border border-gitify-line bg-gitify-surface/60 py-1.5 pl-2.5 pr-3.5 transition-colors hover:border-gitify-accent/50 hover:bg-gitify-raised" > -
- -
-
{siteMetadata.repo.fullName}
-
-
- - {latestReleaseName} -
-
+ +
+ { + stars && ( +
-
+ + ) + } + { + forks && ( +
-
-
-
+ + ) + } + { + latestReleaseName && ( + + ) + } +
diff --git a/src/components/GoogleAnalytics.astro b/src/components/GoogleAnalytics.astro index 51474357..bf110470 100644 --- a/src/components/GoogleAnalytics.astro +++ b/src/components/GoogleAnalytics.astro @@ -8,14 +8,14 @@ const GTAG_SRC = `https://www.googletagmanager.com/gtag/js?id=${GTAG_IDS[0]}`; diff --git a/src/components/Hero.astro b/src/components/Hero.astro index dcc782f9..43908b85 100644 --- a/src/components/Hero.astro +++ b/src/components/Hero.astro @@ -1,37 +1,65 @@ --- import { Image } from 'astro:assets'; -import { siteMetadata } from '~/constants'; - import notifications from '~/assets/notifications.png'; import LatestRelease from '~/components/LatestRelease.astro'; -import Logo from '~/components/Logo.astro'; --- -
+
+
+
-
- +
-

{siteMetadata.title}

+
+
+

+ Git notifications, right on your{' '} + menu bar. +

-

- {siteMetadata.description}. -

+

+ Gitify pulls every mention, review request and failing check out of your + inbox and into one quiet, always-visible tray. Inbox zero, without the + tab hoarding. +

+ +
+ + ${' '} + brew install --cask gitify + +
-
- Gitify - Notifications +
+
+
+
+ Gitify - Notifications +
-
+
diff --git a/src/components/LatestRelease.astro b/src/components/LatestRelease.astro index d64f6245..ebae4a2d 100644 --- a/src/components/LatestRelease.astro +++ b/src/components/LatestRelease.astro @@ -1,22 +1,18 @@ --- -import { Icon } from 'astro-icon/components'; - import { format } from 'date-fns'; -import { Octokit } from 'octokit'; import { siteMetadata, URLs } from '~/constants'; import DownloadButton from '~/components/DownloadButton.astro'; -import type { - DownloadLink, - DownloadLinks, - HeroData, - ReleaseAsset, -} from '~/types'; +import { octokit } from '~/octokit'; +import type { DownloadLink, DownloadLinks, HeroData } from '~/types'; -const octokit = new Octokit(); +interface AssetInfo { + name: string; + browser_download_url: string; +} -const getDownloadLinks = (assets: ReleaseAsset[]): DownloadLinks => { +const getDownloadLinks = (assets: AssetInfo[]): DownloadLinks => { const getAssetLink = (filenameRegex: RegExp): string => { const asset = assets.find((item) => item.name.match(filenameRegex)); return asset ? asset.browser_download_url : URLs.GITHUB.LATEST_RELEASE; @@ -25,7 +21,7 @@ const getDownloadLinks = (assets: ReleaseAsset[]): DownloadLinks => { const supportedOSs: DownloadLink[] = [ { os: 'macOS', - name: 'macOS (Universal)', + name: 'macOS', url: getAssetLink(/Gitify-\d+.\d+.\d+-universal.dmg/g), isPrimary: true, }, @@ -69,6 +65,71 @@ const getDownloadLinks = (assets: ReleaseAsset[]): DownloadLinks => { }; }; +const osIcons: Record = { + macOS: 'mdi:apple', + Windows: 'mdi:microsoft-windows', + Linux: 'mdi:linux', +}; + +/** + * electron-builder publishes `latest-*.yml` manifests alongside every + * release. They are static assets served from `releases/latest/download/`, + * so unlike the GitHub API they are not rate-limited, and they contain the + * exact versioned asset names we need for direct download links. + */ +const LATEST_DOWNLOAD_BASE = `${URLs.GITHUB.REPO}/releases/latest/download`; + +const parseElectronBuilderManifest = (manifest: string) => { + const version = manifest.match(/^version:\s*(\S+)/m)?.[1] ?? ''; + const releaseDate = + manifest.match(/^releaseDate:\s*'?([^'\n]+)'?/m)?.[1] ?? ''; + const files = [...manifest.matchAll(/^\s+-\s+url:\s*(\S+)$/gm)].map( + (match) => match[1], + ); + return { version, releaseDate, files }; +}; + +const loadFromElectronBuilderManifests = async (): Promise => { + try { + const manifests = await Promise.all( + ['latest-mac.yml', 'latest.yml', 'latest-linux.yml'].map(async (file) => { + const response = await fetch(`${LATEST_DOWNLOAD_BASE}/${file}`, { + signal: AbortSignal.timeout(8000), + }); + if (!response.ok) { + throw new Error(`Failed to fetch ${file}: ${response.status}`); + } + return parseElectronBuilderManifest(await response.text()); + }), + ); + + const assets: AssetInfo[] = manifests + .flatMap((manifest) => manifest.files) + .map((name) => ({ + name, + browser_download_url: `${LATEST_DOWNLOAD_BASE}/${name}`, + })); + + const { version, releaseDate } = manifests[0]; + + return { + downloadLinks: getDownloadLinks(assets), + version: version ? `v${version}` : '', + releaseDate: releaseDate ? format(releaseDate, 'dd/MM/yyyy') : '', + }; + } catch (error) { + console.error('Failed to load release manifests', error); + return { + downloadLinks: { + alt: [], + primary: [], + }, + version: '', + releaseDate: '', + }; + } +}; + const loadInitialData = async (): Promise => { try { const latestRelease = await octokit.rest.repos.getLatestRelease({ @@ -86,63 +147,57 @@ const loadInitialData = async (): Promise => { : '', }; } catch (error) { - return { - downloadLinks: { - alt: [], - primary: [], - }, - version: '', - releaseDate: '', - }; + console.warn( + 'GitHub API unavailable, falling back to release manifests', + error, + ); + return loadFromElectronBuilderManifests(); } }; -const { downloadLinks, version, releaseDate } = await loadInitialData(); +const { downloadLinks, version } = await loadInitialData(); --- -
- {version ? ( +
+ { + version ? ( <> -
- {downloadLinks.primary.map((item) => ( - +
+ {downloadLinks.primary.map((item, index) => ( + ))}
-
-
- Latest version:{" "} - - {version} - + + {downloadLinks.alt.length > 0 && ( +
+ also on + {downloadLinks.alt.map((platform, index) => ( + <> + {index > 0 && } + + {platform.name} + + + ))}
-
Released on: {releaseDate}
- {downloadLinks.alt.length > 0 && ( -
- Also available on: - -
- )} -
+ )} ) : (
- )} + ) + }
diff --git a/src/components/Logo.astro b/src/components/Logo.astro index 5a9cb530..11ba4b17 100644 --- a/src/components/Logo.astro +++ b/src/components/Logo.astro @@ -27,23 +27,21 @@ const { isDark = false, className = '' } = Astro.props; y1="80.0676288%" x2="-1.30249747%" y2="32.7108237%" - id={isDark ? "linearGradient-dark" : "linearGradient-light"} + id={isDark ? 'linearGradient-dark' : 'linearGradient-light'} > + offset="0%"> + offset="100%">