feat(build): add com and cn site build targets
- Rename the package and deployment domains to opensource.onixbyte.com and opensource.onixbyte.cn - Extract a createConfig(target) factory in rspress.config.ts, with a thin rspress.cn.config.ts wrapper and build:com / build:cn scripts - Make the cn build lead with zh-hans, add a Douyin social link, and omit international links such as X - Emit canonical, hreflang alternate and Open Graph tags, plus a sitemap with per-route priorities and a generated robots.txt - Remove the Gitea and GitLab CI pipelines and point the Vercel redirect at opensource.onixbyte.cn - Drop the resolved Microsoft email delivery notice from the notifications pages
This commit is contained in:
11 files changed
+427
-289
No files matched your search
@@ -1,68 +0,0 @@
|
||||
name: Deploy
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 24
|
||||
|
||||
- name: Setup pnpm
|
||||
run: corepack enable pnpm
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Build
|
||||
run: pnpm build
|
||||
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: doc-build
|
||||
path: doc_build/
|
||||
|
||||
deploy-vercel:
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: doc-build
|
||||
path: doc_build/
|
||||
|
||||
- name: Deploy to Vercel
|
||||
run: npx vercel deploy --prod --yes --token ${{ secrets.VERCEL_TOKEN }}
|
||||
env:
|
||||
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
|
||||
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
|
||||
|
||||
deploy-onixbyte:
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: doc-build
|
||||
path: doc_build/
|
||||
|
||||
- name: Deploy to OnixByte.cn
|
||||
env:
|
||||
DEPLOY_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
|
||||
run: |
|
||||
apt-get update -qq && apt-get install -y -qq rsync
|
||||
mkdir -p ~/.ssh
|
||||
printf '%s\n' "$DEPLOY_KEY" > ~/.ssh/id_ed25519
|
||||
chmod 600 ~/.ssh/id_ed25519
|
||||
ssh-keyscan onixbyte.cn >> ~/.ssh/known_hosts
|
||||
rsync -avz --delete doc_build/ root@onixbyte.cn:${{ vars.DEPLOY_PATH }}
|
||||
@@ -1,38 +0,0 @@
|
||||
workflow:
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == "main"
|
||||
|
||||
stages:
|
||||
- build
|
||||
- deploy
|
||||
|
||||
build:
|
||||
stage: build
|
||||
image: node:24.15-trixie-slim
|
||||
before_script:
|
||||
- corepack enable
|
||||
- corepack prepare pnpm@latest --activate
|
||||
- pnpm config set store-dir .pnpm-store
|
||||
script:
|
||||
- pnpm install --frozen-lockfile
|
||||
- pnpm build
|
||||
artifacts:
|
||||
paths:
|
||||
- doc_build/
|
||||
|
||||
deploy:
|
||||
stage: deploy
|
||||
image: alpine:latest
|
||||
needs:
|
||||
- build
|
||||
before_script:
|
||||
- apk add --no-cache openssh-client rsync
|
||||
- mkdir -p ~/.ssh
|
||||
- echo "$SSH_PRIVATE_KEY_BASE64" | base64 -d > ~/.ssh/id_ed25519
|
||||
- chmod 600 ~/.ssh/id_ed25519
|
||||
- ssh-keyscan -H onixbyte.cn >> ~/.ssh/known_hosts
|
||||
script:
|
||||
- rsync -avz --delete doc_build/ ${SSH_USER}@onixbyte.cn:${DEPLOY_PATH}
|
||||
- ssh ${SSH_USER}@onixbyte.cn "chown -R caddy:caddy ${DEPLOY_PATH} && chmod -R 755 ${DEPLOY_PATH}"
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == "main"
|
||||
@@ -8,10 +8,10 @@ A static documentation site built with [Rspress](https://rspress.dev/), supporti
|
||||
|
||||
## URLs
|
||||
|
||||
| Domain | Recommended For |
|
||||
|--------------------------------------------------|--------------------------------|
|
||||
| [onixbyte.cn](https://onixbyte.cn) | Users in China mainland |
|
||||
| [onixbyte.com](https://onixbyte.com) | Users outside China mainland |
|
||||
| Domain | Recommended For |
|
||||
|------------------------------------------------------------|------------------------------|
|
||||
| [opensource.onixbyte.cn](https://opensource.onixbyte.cn) | Users in China mainland |
|
||||
| [opensource.onixbyte.com](https://opensource.onixbyte.com) | Users outside China mainland |
|
||||
|
||||
## Local Development
|
||||
|
||||
|
||||
@@ -2,18 +2,3 @@
|
||||
title: Notifications
|
||||
---
|
||||
|
||||
## Microsoft Email Delivery Issues (@outlook, @hotmail, @live, @msn and custom domain emails hosted on Microsoft)
|
||||
|
||||
> Updated at *19 May 2026*.
|
||||
|
||||
**Urgent Action Required for Users with Microsoft-Hosted Emails.**
|
||||
|
||||
Please be advised that our automated email service is currently experiencing severe delivery issues to all email addresses hosted by Microsoft. Due to recent aggressive filtering policies by their Exchange Online Protection (EOP), our mail delivery server has been blocked by Microsoft. As a consequence, our system is **unable to send any notifications, password resets, or activation emails** to accounts ending in **@outlook.com**, **@hotmail.com**, **@live.com**, **@msn.com**, or **indeed any custom domains hosted by Microsoft**.
|
||||
|
||||
To ensure uninterrupted service, please follow the guidance below based on your account status:
|
||||
|
||||
- For Prospective Users (Before Registration): Please **do not** use a Microsoft-hosted email address to register your account. You will not receive the essential activation link. Kindly use an alternative email service provider, such as your corporate email, Gmail, etc. to complete your registration.
|
||||
- For Existing Registered Users: If your profile is currently linked to an Outlook or Hotmail address, please log in immediately and update your primary email address. You can change this by navigating to your **[User Settings -> Preferences -> Emails](https://git.onixbyte.cn/-/profile/emails)** page. Failing to do so will result in missing critical repository updates, CI/CD pipeline failure logs, and Merge Request notifications.
|
||||
|
||||
We are actively working to appeal this block with the Microsoft Postmaster Centre. We sincerely apologise for any inconvenience caused and appreciate your prompt cooperation in updating your contact details.
|
||||
|
||||
@@ -2,18 +2,3 @@
|
||||
title: 通知
|
||||
---
|
||||
|
||||
## Microsoft 邮件投递问题(@outlook、@hotmail、@live、@msn 以及托管在 Microsoft 的自定义域名邮箱)
|
||||
|
||||
> 更新于 *2026 年 5 月 19 日*
|
||||
|
||||
**使用 Microsoft 托管邮箱的用户需立即采取行动。**
|
||||
|
||||
特此通知,我们的自动邮件服务目前向所有由 Microsoft 托管的邮箱地址投递时遇到严重问题。由于 Microsoft Exchange Online Protection (EOP) 近期采取了激进的过滤策略,我们的邮件投递服务器已被 Microsoft 屏蔽。因此,我们的系统**无法向以下邮箱地址发送任何通知、密码重置或激活邮件**:**@outlook.com**、**@hotmail.com**、**@live.com**、**@msn.com**,以及**任何由 Microsoft 托管自定义域名的邮箱**。
|
||||
|
||||
为确保服务不受影响,请根据您的账户状态参考以下指引:
|
||||
|
||||
- **新用户(注册前)**:请**不要**使用 Microsoft 托管的邮箱地址注册账户。您将无法收到必要的激活链接。请使用其他邮件服务商,例如您的企业邮箱、QQ 邮箱或网易 163 邮箱完成注册。
|
||||
- **已注册用户**:如果您的账户当前绑定了 Outlook 或 Hotmail 邮箱地址,请立即登录并更新您的主邮箱。您可以通过 **[用户设置 -> 偏好设置 -> 邮箱](https://git.onixbyte.cn/-/profile/emails)** 页面进行更改。未能及时更新将导致您无法收到重要的仓库更新、CI/CD 流水线失败日志以及合并请求通知。
|
||||
|
||||
我们正在积极与 Microsoft Postmaster Centre 沟通,以申请解除此屏蔽。对于由此带来的任何不便,我们深表歉意,并感谢您及时配合更新联系信息。
|
||||
|
||||
+6
-1
@@ -1,10 +1,12 @@
|
||||
{
|
||||
"name": "blog.onixbyte.com",
|
||||
"name": "opensource.onixbyte.com",
|
||||
"version": "1.0.0",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "rspress build",
|
||||
"build:com": "rspress build --config rspress.config.ts",
|
||||
"build:cn": "rspress build --config rspress.cn.config.ts",
|
||||
"dev": "rspress dev",
|
||||
"format": "prettier --write .",
|
||||
"lint": "eslint .",
|
||||
@@ -15,6 +17,8 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.39.4",
|
||||
"@mdx-js/react": "3.1.1",
|
||||
"@rspress/plugin-sitemap": "2.0.11",
|
||||
"@tailwindcss/postcss": "^4.3.0",
|
||||
"@types/node": "^22.8.1",
|
||||
"@types/react": "^19.2.14",
|
||||
@@ -25,6 +29,7 @@
|
||||
"react": "^19.2.6",
|
||||
"react-dom": "^19.2.6",
|
||||
"tailwindcss": "^4.3.0",
|
||||
"typescript": "6.0.3",
|
||||
"typescript-eslint": "^8.58.1"
|
||||
}
|
||||
}
|
||||
Generated
+135
-113
@@ -10,11 +10,17 @@ importers:
|
||||
dependencies:
|
||||
'@rspress/core':
|
||||
specifier: ^2.0.10
|
||||
version: 2.0.11(@rspack/core@2.0.3(@swc/helpers@0.5.21))(@types/mdast@4.0.4)(@types/react@19.2.14)(micromark-util-types@2.0.2)(micromark@4.0.2)
|
||||
version: 2.0.11(@rspack/core@2.0.3(@swc/helpers@0.5.21))(@types/mdast@4.0.4)(@types/react@19.2.14)(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0))(supports-color@7.2.0)
|
||||
devDependencies:
|
||||
'@eslint/js':
|
||||
specifier: ^9.39.4
|
||||
version: 9.39.4
|
||||
'@mdx-js/react':
|
||||
specifier: 3.1.1
|
||||
version: 3.1.1(@types/react@19.2.14)(react@19.2.6)
|
||||
'@rspress/plugin-sitemap':
|
||||
specifier: 2.0.11
|
||||
version: 2.0.11(@rspress/core@2.0.11(@rspack/core@2.0.3(@swc/helpers@0.5.21))(@types/mdast@4.0.4)(@types/react@19.2.14)(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0))(supports-color@7.2.0))
|
||||
'@tailwindcss/postcss':
|
||||
specifier: ^4.3.0
|
||||
version: 4.3.0
|
||||
@@ -29,7 +35,7 @@ importers:
|
||||
version: 19.2.3(@types/react@19.2.14)
|
||||
eslint:
|
||||
specifier: ^9.39.4
|
||||
version: 9.39.4(jiti@2.7.0)
|
||||
version: 9.39.4(jiti@2.7.0)(supports-color@7.2.0)
|
||||
globals:
|
||||
specifier: ^17.5.0
|
||||
version: 17.6.0
|
||||
@@ -45,9 +51,12 @@ importers:
|
||||
tailwindcss:
|
||||
specifier: ^4.3.0
|
||||
version: 4.3.0
|
||||
typescript:
|
||||
specifier: 6.0.3
|
||||
version: 6.0.3
|
||||
typescript-eslint:
|
||||
specifier: ^8.58.1
|
||||
version: 8.59.4(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)
|
||||
version: 8.59.4(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
|
||||
|
||||
packages:
|
||||
|
||||
@@ -253,6 +262,12 @@ packages:
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
hasBin: true
|
||||
|
||||
'@rspress/plugin-sitemap@2.0.11':
|
||||
resolution: {integrity: sha512-046LCHgbJXdaPipWB2SWMjZcAtIrOjXGZOD92xlTjhZ74D7Mk1Nod1MQdtOEoISWedcHdgpUVXMDbB1doKBpPQ==}
|
||||
engines: {node: ^20.19.0 || >=22.12.0}
|
||||
peerDependencies:
|
||||
'@rspress/core': ^2.0.10
|
||||
|
||||
'@rspress/shared@2.0.11':
|
||||
resolution: {integrity: sha512-7l5Pso4s597utJyisVEnd7n/40h053nfE8DwGQMeS8RLGtSwVgxFwNHsSrvQEGtFlLrg2aWWSITqnAVO1wfTew==}
|
||||
|
||||
@@ -668,6 +683,7 @@ packages:
|
||||
eslint@9.39.4:
|
||||
resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==}
|
||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||
deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
jiti: '*'
|
||||
@@ -1555,17 +1571,17 @@ snapshots:
|
||||
tslib: 2.8.1
|
||||
optional: true
|
||||
|
||||
'@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@2.7.0))':
|
||||
'@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))':
|
||||
dependencies:
|
||||
eslint: 9.39.4(jiti@2.7.0)
|
||||
eslint: 9.39.4(jiti@2.7.0)(supports-color@7.2.0)
|
||||
eslint-visitor-keys: 3.4.3
|
||||
|
||||
'@eslint-community/regexpp@4.12.2': {}
|
||||
|
||||
'@eslint/config-array@0.21.2':
|
||||
'@eslint/config-array@0.21.2(supports-color@7.2.0)':
|
||||
dependencies:
|
||||
'@eslint/object-schema': 2.1.7
|
||||
debug: 4.4.3
|
||||
debug: 4.4.3(supports-color@7.2.0)
|
||||
minimatch: 3.1.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
@@ -1578,10 +1594,10 @@ snapshots:
|
||||
dependencies:
|
||||
'@types/json-schema': 7.0.15
|
||||
|
||||
'@eslint/eslintrc@3.3.5':
|
||||
'@eslint/eslintrc@3.3.5(supports-color@7.2.0)':
|
||||
dependencies:
|
||||
ajv: 6.15.0
|
||||
debug: 4.4.3
|
||||
debug: 4.4.3(supports-color@7.2.0)
|
||||
espree: 10.4.0
|
||||
globals: 14.0.0
|
||||
ignore: 5.3.2
|
||||
@@ -1636,7 +1652,7 @@ snapshots:
|
||||
'@jridgewell/resolve-uri': 3.1.2
|
||||
'@jridgewell/sourcemap-codec': 1.5.5
|
||||
|
||||
'@mdx-js/mdx@3.1.1':
|
||||
'@mdx-js/mdx@3.1.1(supports-color@7.2.0)':
|
||||
dependencies:
|
||||
'@types/estree': 1.0.9
|
||||
'@types/estree-jsx': 1.0.5
|
||||
@@ -1648,14 +1664,14 @@ snapshots:
|
||||
estree-util-is-identifier-name: 3.0.0
|
||||
estree-util-scope: 1.0.0
|
||||
estree-walker: 3.0.3
|
||||
hast-util-to-jsx-runtime: 2.3.6
|
||||
hast-util-to-jsx-runtime: 2.3.6(supports-color@7.2.0)
|
||||
markdown-extensions: 2.0.0
|
||||
recma-build-jsx: 1.0.0
|
||||
recma-jsx: 1.0.1(acorn@8.16.0)
|
||||
recma-stringify: 1.0.0
|
||||
rehype-recma: 1.0.0
|
||||
remark-mdx: 3.1.1
|
||||
remark-parse: 11.0.0
|
||||
rehype-recma: 1.0.0(supports-color@7.2.0)
|
||||
remark-mdx: 3.1.1(supports-color@7.2.0)
|
||||
remark-parse: 11.0.0(supports-color@7.2.0)
|
||||
remark-rehype: 11.1.2
|
||||
source-map: 0.7.6
|
||||
unified: 11.0.5
|
||||
@@ -1754,9 +1770,9 @@ snapshots:
|
||||
optionalDependencies:
|
||||
'@rspack/core': 2.0.3(@swc/helpers@0.5.21)
|
||||
|
||||
'@rspress/core@2.0.11(@rspack/core@2.0.3(@swc/helpers@0.5.21))(@types/mdast@4.0.4)(@types/react@19.2.14)(micromark-util-types@2.0.2)(micromark@4.0.2)':
|
||||
'@rspress/core@2.0.11(@rspack/core@2.0.3(@swc/helpers@0.5.21))(@types/mdast@4.0.4)(@types/react@19.2.14)(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0))(supports-color@7.2.0)':
|
||||
dependencies:
|
||||
'@mdx-js/mdx': 3.1.1
|
||||
'@mdx-js/mdx': 3.1.1(supports-color@7.2.0)
|
||||
'@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.6)
|
||||
'@rsbuild/core': 2.0.6
|
||||
'@rsbuild/plugin-react': 2.0.0(@rsbuild/core@2.0.6)(@rspack/core@2.0.3(@swc/helpers@0.5.21))
|
||||
@@ -1769,9 +1785,9 @@ snapshots:
|
||||
copy-to-clipboard: 3.3.3
|
||||
flexsearch: 0.8.212
|
||||
hast-util-heading-rank: 3.0.0
|
||||
hast-util-to-jsx-runtime: 2.3.6
|
||||
mdast-util-mdx: 3.0.0
|
||||
mdast-util-mdxjs-esm: 2.0.1
|
||||
hast-util-to-jsx-runtime: 2.3.6(supports-color@7.2.0)
|
||||
mdast-util-mdx: 3.0.0(supports-color@7.2.0)
|
||||
mdast-util-mdxjs-esm: 2.0.1(supports-color@7.2.0)
|
||||
medium-zoom: 1.1.0
|
||||
nprogress: 0.2.0
|
||||
react: 19.2.6
|
||||
@@ -1782,11 +1798,11 @@ snapshots:
|
||||
react-router-dom: 7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
|
||||
rehype-external-links: 3.0.0
|
||||
rehype-raw: 7.0.0
|
||||
remark-cjk-friendly: 2.0.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(unified@11.0.5)
|
||||
remark-cjk-friendly-gfm-strikethrough: 2.0.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(unified@11.0.5)
|
||||
remark-gfm: 4.0.1
|
||||
remark-mdx: 3.1.1
|
||||
remark-parse: 11.0.0
|
||||
remark-cjk-friendly: 2.0.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0))(unified@11.0.5)
|
||||
remark-cjk-friendly-gfm-strikethrough: 2.0.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0))(unified@11.0.5)
|
||||
remark-gfm: 4.0.1(supports-color@7.2.0)
|
||||
remark-mdx: 3.1.1(supports-color@7.2.0)
|
||||
remark-parse: 11.0.0(supports-color@7.2.0)
|
||||
remark-stringify: 11.0.0
|
||||
scroll-into-view-if-needed: 3.1.0
|
||||
shiki: 4.0.2
|
||||
@@ -1804,6 +1820,10 @@ snapshots:
|
||||
- micromark-util-types
|
||||
- supports-color
|
||||
|
||||
'@rspress/plugin-sitemap@2.0.11(@rspress/core@2.0.11(@rspack/core@2.0.3(@swc/helpers@0.5.21))(@types/mdast@4.0.4)(@types/react@19.2.14)(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0))(supports-color@7.2.0))':
|
||||
dependencies:
|
||||
'@rspress/core': 2.0.11(@rspack/core@2.0.3(@swc/helpers@0.5.21))(@types/mdast@4.0.4)(@types/react@19.2.14)(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0))(supports-color@7.2.0)
|
||||
|
||||
'@rspress/shared@2.0.11':
|
||||
dependencies:
|
||||
'@rsbuild/core': 2.0.6
|
||||
@@ -1980,15 +2000,15 @@ snapshots:
|
||||
|
||||
'@types/unist@3.0.3': {}
|
||||
|
||||
'@typescript-eslint/eslint-plugin@8.59.4(@typescript-eslint/parser@8.59.4(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)':
|
||||
'@typescript-eslint/eslint-plugin@8.59.4(@typescript-eslint/parser@8.59.4(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)':
|
||||
dependencies:
|
||||
'@eslint-community/regexpp': 4.12.2
|
||||
'@typescript-eslint/parser': 8.59.4(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)
|
||||
'@typescript-eslint/parser': 8.59.4(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
|
||||
'@typescript-eslint/scope-manager': 8.59.4
|
||||
'@typescript-eslint/type-utils': 8.59.4(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)
|
||||
'@typescript-eslint/utils': 8.59.4(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)
|
||||
'@typescript-eslint/type-utils': 8.59.4(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
|
||||
'@typescript-eslint/utils': 8.59.4(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
|
||||
'@typescript-eslint/visitor-keys': 8.59.4
|
||||
eslint: 9.39.4(jiti@2.7.0)
|
||||
eslint: 9.39.4(jiti@2.7.0)(supports-color@7.2.0)
|
||||
ignore: 7.0.5
|
||||
natural-compare: 1.4.0
|
||||
ts-api-utils: 2.5.0(typescript@6.0.3)
|
||||
@@ -1996,23 +2016,23 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/parser@8.59.4(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)':
|
||||
'@typescript-eslint/parser@8.59.4(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/scope-manager': 8.59.4
|
||||
'@typescript-eslint/types': 8.59.4
|
||||
'@typescript-eslint/typescript-estree': 8.59.4(typescript@6.0.3)
|
||||
'@typescript-eslint/typescript-estree': 8.59.4(supports-color@7.2.0)(typescript@6.0.3)
|
||||
'@typescript-eslint/visitor-keys': 8.59.4
|
||||
debug: 4.4.3
|
||||
eslint: 9.39.4(jiti@2.7.0)
|
||||
debug: 4.4.3(supports-color@7.2.0)
|
||||
eslint: 9.39.4(jiti@2.7.0)(supports-color@7.2.0)
|
||||
typescript: 6.0.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/project-service@8.59.4(typescript@6.0.3)':
|
||||
'@typescript-eslint/project-service@8.59.4(supports-color@7.2.0)(typescript@6.0.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/tsconfig-utils': 8.59.4(typescript@6.0.3)
|
||||
'@typescript-eslint/types': 8.59.4
|
||||
debug: 4.4.3
|
||||
debug: 4.4.3(supports-color@7.2.0)
|
||||
typescript: 6.0.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
@@ -2026,13 +2046,13 @@ snapshots:
|
||||
dependencies:
|
||||
typescript: 6.0.3
|
||||
|
||||
'@typescript-eslint/type-utils@8.59.4(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)':
|
||||
'@typescript-eslint/type-utils@8.59.4(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.59.4
|
||||
'@typescript-eslint/typescript-estree': 8.59.4(typescript@6.0.3)
|
||||
'@typescript-eslint/utils': 8.59.4(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)
|
||||
debug: 4.4.3
|
||||
eslint: 9.39.4(jiti@2.7.0)
|
||||
'@typescript-eslint/typescript-estree': 8.59.4(supports-color@7.2.0)(typescript@6.0.3)
|
||||
'@typescript-eslint/utils': 8.59.4(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
|
||||
debug: 4.4.3(supports-color@7.2.0)
|
||||
eslint: 9.39.4(jiti@2.7.0)(supports-color@7.2.0)
|
||||
ts-api-utils: 2.5.0(typescript@6.0.3)
|
||||
typescript: 6.0.3
|
||||
transitivePeerDependencies:
|
||||
@@ -2040,13 +2060,13 @@ snapshots:
|
||||
|
||||
'@typescript-eslint/types@8.59.4': {}
|
||||
|
||||
'@typescript-eslint/typescript-estree@8.59.4(typescript@6.0.3)':
|
||||
'@typescript-eslint/typescript-estree@8.59.4(supports-color@7.2.0)(typescript@6.0.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/project-service': 8.59.4(typescript@6.0.3)
|
||||
'@typescript-eslint/project-service': 8.59.4(supports-color@7.2.0)(typescript@6.0.3)
|
||||
'@typescript-eslint/tsconfig-utils': 8.59.4(typescript@6.0.3)
|
||||
'@typescript-eslint/types': 8.59.4
|
||||
'@typescript-eslint/visitor-keys': 8.59.4
|
||||
debug: 4.4.3
|
||||
debug: 4.4.3(supports-color@7.2.0)
|
||||
minimatch: 10.2.5
|
||||
semver: 7.8.0
|
||||
tinyglobby: 0.2.16
|
||||
@@ -2055,13 +2075,13 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/utils@8.59.4(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)':
|
||||
'@typescript-eslint/utils@8.59.4(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0))
|
||||
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))
|
||||
'@typescript-eslint/scope-manager': 8.59.4
|
||||
'@typescript-eslint/types': 8.59.4
|
||||
'@typescript-eslint/typescript-estree': 8.59.4(typescript@6.0.3)
|
||||
eslint: 9.39.4(jiti@2.7.0)
|
||||
'@typescript-eslint/typescript-estree': 8.59.4(supports-color@7.2.0)(typescript@6.0.3)
|
||||
eslint: 9.39.4(jiti@2.7.0)(supports-color@7.2.0)
|
||||
typescript: 6.0.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
@@ -2163,9 +2183,11 @@ snapshots:
|
||||
|
||||
csstype@3.2.3: {}
|
||||
|
||||
debug@4.4.3:
|
||||
debug@4.4.3(supports-color@7.2.0):
|
||||
dependencies:
|
||||
ms: 2.1.3
|
||||
optionalDependencies:
|
||||
supports-color: 7.2.0
|
||||
|
||||
decode-named-character-reference@1.3.0:
|
||||
dependencies:
|
||||
@@ -2217,14 +2239,14 @@ snapshots:
|
||||
|
||||
eslint-visitor-keys@5.0.1: {}
|
||||
|
||||
eslint@9.39.4(jiti@2.7.0):
|
||||
eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0):
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0))
|
||||
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))
|
||||
'@eslint-community/regexpp': 4.12.2
|
||||
'@eslint/config-array': 0.21.2
|
||||
'@eslint/config-array': 0.21.2(supports-color@7.2.0)
|
||||
'@eslint/config-helpers': 0.4.2
|
||||
'@eslint/core': 0.17.0
|
||||
'@eslint/eslintrc': 3.3.5
|
||||
'@eslint/eslintrc': 3.3.5(supports-color@7.2.0)
|
||||
'@eslint/js': 9.39.4
|
||||
'@eslint/plugin-kit': 0.4.1
|
||||
'@humanfs/node': 0.16.8
|
||||
@@ -2234,7 +2256,7 @@ snapshots:
|
||||
ajv: 6.15.0
|
||||
chalk: 4.1.2
|
||||
cross-spawn: 7.0.6
|
||||
debug: 4.4.3
|
||||
debug: 4.4.3(supports-color@7.2.0)
|
||||
escape-string-regexp: 4.0.0
|
||||
eslint-scope: 8.4.0
|
||||
eslint-visitor-keys: 4.2.1
|
||||
@@ -2392,7 +2414,7 @@ snapshots:
|
||||
web-namespaces: 2.0.1
|
||||
zwitch: 2.0.4
|
||||
|
||||
hast-util-to-estree@3.1.3:
|
||||
hast-util-to-estree@3.1.3(supports-color@7.2.0):
|
||||
dependencies:
|
||||
'@types/estree': 1.0.9
|
||||
'@types/estree-jsx': 1.0.5
|
||||
@@ -2402,9 +2424,9 @@ snapshots:
|
||||
estree-util-attach-comments: 3.0.0
|
||||
estree-util-is-identifier-name: 3.0.0
|
||||
hast-util-whitespace: 3.0.0
|
||||
mdast-util-mdx-expression: 2.0.1
|
||||
mdast-util-mdx-jsx: 3.2.0
|
||||
mdast-util-mdxjs-esm: 2.0.1
|
||||
mdast-util-mdx-expression: 2.0.1(supports-color@7.2.0)
|
||||
mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0)
|
||||
mdast-util-mdxjs-esm: 2.0.1(supports-color@7.2.0)
|
||||
property-information: 7.1.0
|
||||
space-separated-tokens: 2.0.2
|
||||
style-to-js: 1.1.21
|
||||
@@ -2427,7 +2449,7 @@ snapshots:
|
||||
stringify-entities: 4.0.4
|
||||
zwitch: 2.0.4
|
||||
|
||||
hast-util-to-jsx-runtime@2.3.6:
|
||||
hast-util-to-jsx-runtime@2.3.6(supports-color@7.2.0):
|
||||
dependencies:
|
||||
'@types/estree': 1.0.9
|
||||
'@types/hast': 3.0.4
|
||||
@@ -2436,9 +2458,9 @@ snapshots:
|
||||
devlop: 1.1.0
|
||||
estree-util-is-identifier-name: 3.0.0
|
||||
hast-util-whitespace: 3.0.0
|
||||
mdast-util-mdx-expression: 2.0.1
|
||||
mdast-util-mdx-jsx: 3.2.0
|
||||
mdast-util-mdxjs-esm: 2.0.1
|
||||
mdast-util-mdx-expression: 2.0.1(supports-color@7.2.0)
|
||||
mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0)
|
||||
mdast-util-mdxjs-esm: 2.0.1(supports-color@7.2.0)
|
||||
property-information: 7.1.0
|
||||
space-separated-tokens: 2.0.2
|
||||
style-to-js: 1.1.21
|
||||
@@ -2606,14 +2628,14 @@ snapshots:
|
||||
unist-util-is: 6.0.1
|
||||
unist-util-visit-parents: 6.0.2
|
||||
|
||||
mdast-util-from-markdown@2.0.3:
|
||||
mdast-util-from-markdown@2.0.3(supports-color@7.2.0):
|
||||
dependencies:
|
||||
'@types/mdast': 4.0.4
|
||||
'@types/unist': 3.0.3
|
||||
decode-named-character-reference: 1.3.0
|
||||
devlop: 1.1.0
|
||||
mdast-util-to-string: 4.0.0
|
||||
micromark: 4.0.2
|
||||
micromark: 4.0.2(supports-color@7.2.0)
|
||||
micromark-util-decode-numeric-character-reference: 2.0.2
|
||||
micromark-util-decode-string: 2.0.1
|
||||
micromark-util-normalize-identifier: 2.0.1
|
||||
@@ -2631,67 +2653,67 @@ snapshots:
|
||||
mdast-util-find-and-replace: 3.0.2
|
||||
micromark-util-character: 2.1.1
|
||||
|
||||
mdast-util-gfm-footnote@2.1.0:
|
||||
mdast-util-gfm-footnote@2.1.0(supports-color@7.2.0):
|
||||
dependencies:
|
||||
'@types/mdast': 4.0.4
|
||||
devlop: 1.1.0
|
||||
mdast-util-from-markdown: 2.0.3
|
||||
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||
mdast-util-to-markdown: 2.1.2
|
||||
micromark-util-normalize-identifier: 2.0.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-gfm-strikethrough@2.0.0:
|
||||
mdast-util-gfm-strikethrough@2.0.0(supports-color@7.2.0):
|
||||
dependencies:
|
||||
'@types/mdast': 4.0.4
|
||||
mdast-util-from-markdown: 2.0.3
|
||||
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||
mdast-util-to-markdown: 2.1.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-gfm-table@2.0.0:
|
||||
mdast-util-gfm-table@2.0.0(supports-color@7.2.0):
|
||||
dependencies:
|
||||
'@types/mdast': 4.0.4
|
||||
devlop: 1.1.0
|
||||
markdown-table: 3.0.4
|
||||
mdast-util-from-markdown: 2.0.3
|
||||
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||
mdast-util-to-markdown: 2.1.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-gfm-task-list-item@2.0.0:
|
||||
mdast-util-gfm-task-list-item@2.0.0(supports-color@7.2.0):
|
||||
dependencies:
|
||||
'@types/mdast': 4.0.4
|
||||
devlop: 1.1.0
|
||||
mdast-util-from-markdown: 2.0.3
|
||||
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||
mdast-util-to-markdown: 2.1.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-gfm@3.1.0:
|
||||
mdast-util-gfm@3.1.0(supports-color@7.2.0):
|
||||
dependencies:
|
||||
mdast-util-from-markdown: 2.0.3
|
||||
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||
mdast-util-gfm-autolink-literal: 2.0.1
|
||||
mdast-util-gfm-footnote: 2.1.0
|
||||
mdast-util-gfm-strikethrough: 2.0.0
|
||||
mdast-util-gfm-table: 2.0.0
|
||||
mdast-util-gfm-task-list-item: 2.0.0
|
||||
mdast-util-gfm-footnote: 2.1.0(supports-color@7.2.0)
|
||||
mdast-util-gfm-strikethrough: 2.0.0(supports-color@7.2.0)
|
||||
mdast-util-gfm-table: 2.0.0(supports-color@7.2.0)
|
||||
mdast-util-gfm-task-list-item: 2.0.0(supports-color@7.2.0)
|
||||
mdast-util-to-markdown: 2.1.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-mdx-expression@2.0.1:
|
||||
mdast-util-mdx-expression@2.0.1(supports-color@7.2.0):
|
||||
dependencies:
|
||||
'@types/estree-jsx': 1.0.5
|
||||
'@types/hast': 3.0.4
|
||||
'@types/mdast': 4.0.4
|
||||
devlop: 1.1.0
|
||||
mdast-util-from-markdown: 2.0.3
|
||||
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||
mdast-util-to-markdown: 2.1.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-mdx-jsx@3.2.0:
|
||||
mdast-util-mdx-jsx@3.2.0(supports-color@7.2.0):
|
||||
dependencies:
|
||||
'@types/estree-jsx': 1.0.5
|
||||
'@types/hast': 3.0.4
|
||||
@@ -2699,7 +2721,7 @@ snapshots:
|
||||
'@types/unist': 3.0.3
|
||||
ccount: 2.0.1
|
||||
devlop: 1.1.0
|
||||
mdast-util-from-markdown: 2.0.3
|
||||
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||
mdast-util-to-markdown: 2.1.2
|
||||
parse-entities: 4.0.2
|
||||
stringify-entities: 4.0.4
|
||||
@@ -2708,23 +2730,23 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-mdx@3.0.0:
|
||||
mdast-util-mdx@3.0.0(supports-color@7.2.0):
|
||||
dependencies:
|
||||
mdast-util-from-markdown: 2.0.3
|
||||
mdast-util-mdx-expression: 2.0.1
|
||||
mdast-util-mdx-jsx: 3.2.0
|
||||
mdast-util-mdxjs-esm: 2.0.1
|
||||
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||
mdast-util-mdx-expression: 2.0.1(supports-color@7.2.0)
|
||||
mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0)
|
||||
mdast-util-mdxjs-esm: 2.0.1(supports-color@7.2.0)
|
||||
mdast-util-to-markdown: 2.1.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-mdxjs-esm@2.0.1:
|
||||
mdast-util-mdxjs-esm@2.0.1(supports-color@7.2.0):
|
||||
dependencies:
|
||||
'@types/estree-jsx': 1.0.5
|
||||
'@types/hast': 3.0.4
|
||||
'@types/mdast': 4.0.4
|
||||
devlop: 1.1.0
|
||||
mdast-util-from-markdown: 2.0.3
|
||||
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||
mdast-util-to-markdown: 2.1.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
@@ -2783,11 +2805,11 @@ snapshots:
|
||||
micromark-util-symbol: 2.0.1
|
||||
micromark-util-types: 2.0.2
|
||||
|
||||
micromark-extension-cjk-friendly-gfm-strikethrough@2.0.1(micromark-util-types@2.0.2)(micromark@4.0.2):
|
||||
micromark-extension-cjk-friendly-gfm-strikethrough@2.0.1(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0)):
|
||||
dependencies:
|
||||
devlop: 1.1.0
|
||||
get-east-asian-width: 1.6.0
|
||||
micromark: 4.0.2
|
||||
micromark: 4.0.2(supports-color@7.2.0)
|
||||
micromark-extension-cjk-friendly-util: 3.0.1(micromark-util-types@2.0.2)
|
||||
micromark-util-character: 2.1.1
|
||||
micromark-util-chunked: 2.0.1
|
||||
@@ -2804,10 +2826,10 @@ snapshots:
|
||||
optionalDependencies:
|
||||
micromark-util-types: 2.0.2
|
||||
|
||||
micromark-extension-cjk-friendly@2.0.1(micromark-util-types@2.0.2)(micromark@4.0.2):
|
||||
micromark-extension-cjk-friendly@2.0.1(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0)):
|
||||
dependencies:
|
||||
devlop: 1.1.0
|
||||
micromark: 4.0.2
|
||||
micromark: 4.0.2(supports-color@7.2.0)
|
||||
micromark-extension-cjk-friendly-util: 3.0.1(micromark-util-types@2.0.2)
|
||||
micromark-util-chunked: 2.0.1
|
||||
micromark-util-resolve-all: 2.0.1
|
||||
@@ -3038,10 +3060,10 @@ snapshots:
|
||||
|
||||
micromark-util-types@2.0.2: {}
|
||||
|
||||
micromark@4.0.2:
|
||||
micromark@4.0.2(supports-color@7.2.0):
|
||||
dependencies:
|
||||
'@types/debug': 4.1.13
|
||||
debug: 4.4.3
|
||||
debug: 4.4.3(supports-color@7.2.0)
|
||||
decode-named-character-reference: 1.3.0
|
||||
devlop: 1.1.0
|
||||
micromark-core-commonmark: 2.0.3
|
||||
@@ -3230,17 +3252,17 @@ snapshots:
|
||||
hast-util-raw: 9.1.0
|
||||
vfile: 6.0.3
|
||||
|
||||
rehype-recma@1.0.0:
|
||||
rehype-recma@1.0.0(supports-color@7.2.0):
|
||||
dependencies:
|
||||
'@types/estree': 1.0.9
|
||||
'@types/hast': 3.0.4
|
||||
hast-util-to-estree: 3.1.3
|
||||
hast-util-to-estree: 3.1.3(supports-color@7.2.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
remark-cjk-friendly-gfm-strikethrough@2.0.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(unified@11.0.5):
|
||||
remark-cjk-friendly-gfm-strikethrough@2.0.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0))(unified@11.0.5):
|
||||
dependencies:
|
||||
micromark-extension-cjk-friendly-gfm-strikethrough: 2.0.1(micromark-util-types@2.0.2)(micromark@4.0.2)
|
||||
micromark-extension-cjk-friendly-gfm-strikethrough: 2.0.1(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0))
|
||||
unified: 11.0.5
|
||||
optionalDependencies:
|
||||
'@types/mdast': 4.0.4
|
||||
@@ -3248,9 +3270,9 @@ snapshots:
|
||||
- micromark
|
||||
- micromark-util-types
|
||||
|
||||
remark-cjk-friendly@2.0.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(unified@11.0.5):
|
||||
remark-cjk-friendly@2.0.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0))(unified@11.0.5):
|
||||
dependencies:
|
||||
micromark-extension-cjk-friendly: 2.0.1(micromark-util-types@2.0.2)(micromark@4.0.2)
|
||||
micromark-extension-cjk-friendly: 2.0.1(micromark-util-types@2.0.2)(micromark@4.0.2(supports-color@7.2.0))
|
||||
unified: 11.0.5
|
||||
optionalDependencies:
|
||||
'@types/mdast': 4.0.4
|
||||
@@ -3258,28 +3280,28 @@ snapshots:
|
||||
- micromark
|
||||
- micromark-util-types
|
||||
|
||||
remark-gfm@4.0.1:
|
||||
remark-gfm@4.0.1(supports-color@7.2.0):
|
||||
dependencies:
|
||||
'@types/mdast': 4.0.4
|
||||
mdast-util-gfm: 3.1.0
|
||||
mdast-util-gfm: 3.1.0(supports-color@7.2.0)
|
||||
micromark-extension-gfm: 3.0.0
|
||||
remark-parse: 11.0.0
|
||||
remark-parse: 11.0.0(supports-color@7.2.0)
|
||||
remark-stringify: 11.0.0
|
||||
unified: 11.0.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
remark-mdx@3.1.1:
|
||||
remark-mdx@3.1.1(supports-color@7.2.0):
|
||||
dependencies:
|
||||
mdast-util-mdx: 3.0.0
|
||||
mdast-util-mdx: 3.0.0(supports-color@7.2.0)
|
||||
micromark-extension-mdxjs: 3.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
remark-parse@11.0.0:
|
||||
remark-parse@11.0.0(supports-color@7.2.0):
|
||||
dependencies:
|
||||
'@types/mdast': 4.0.4
|
||||
mdast-util-from-markdown: 2.0.3
|
||||
mdast-util-from-markdown: 2.0.3(supports-color@7.2.0)
|
||||
micromark-util-types: 2.0.2
|
||||
unified: 11.0.5
|
||||
transitivePeerDependencies:
|
||||
@@ -3378,13 +3400,13 @@ snapshots:
|
||||
dependencies:
|
||||
prelude-ls: 1.2.1
|
||||
|
||||
typescript-eslint@8.59.4(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3):
|
||||
typescript-eslint@8.59.4(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3):
|
||||
dependencies:
|
||||
'@typescript-eslint/eslint-plugin': 8.59.4(@typescript-eslint/parser@8.59.4(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)
|
||||
'@typescript-eslint/parser': 8.59.4(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)
|
||||
'@typescript-eslint/typescript-estree': 8.59.4(typescript@6.0.3)
|
||||
'@typescript-eslint/utils': 8.59.4(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)
|
||||
eslint: 9.39.4(jiti@2.7.0)
|
||||
'@typescript-eslint/eslint-plugin': 8.59.4(@typescript-eslint/parser@8.59.4(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
|
||||
'@typescript-eslint/parser': 8.59.4(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
|
||||
'@typescript-eslint/typescript-estree': 8.59.4(supports-color@7.2.0)(typescript@6.0.3)
|
||||
'@typescript-eslint/utils': 8.59.4(eslint@9.39.4(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)
|
||||
eslint: 9.39.4(jiti@2.7.0)(supports-color@7.2.0)
|
||||
typescript: 6.0.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* Build configuration for `onixbyte.cn`.
|
||||
*
|
||||
* Thin wrapper over the shared factory — see `rspress.config.ts` for what the
|
||||
* `cn` target changes. Invoke it with `pnpm build:cn`, which passes this file
|
||||
* via `rspress build --config`.
|
||||
*/
|
||||
import { createConfig } from "./rspress.config"
|
||||
|
||||
export default createConfig("cn")
|
||||
+239
-34
@@ -1,44 +1,249 @@
|
||||
import * as path from "node:path"
|
||||
import { writeFile } from "node:fs/promises"
|
||||
import { defineConfig } from "@rspress/core"
|
||||
import type { RspressPlugin, SocialLink, UserConfig } from "@rspress/core"
|
||||
import { pluginSitemap } from "@rspress/plugin-sitemap"
|
||||
import { DOUYIN_ICON } from "./theme/lib/social-icons"
|
||||
|
||||
export default defineConfig({
|
||||
root: path.join(__dirname, "docs"),
|
||||
title: "OnixByte",
|
||||
icon: "/onixbyte-icon.svg",
|
||||
logo: {
|
||||
light: "/onixbyte-light-logo.svg",
|
||||
dark: "/onixbyte-dark-logo.svg",
|
||||
/**
|
||||
* Which deployment this build targets.
|
||||
*
|
||||
* The two builds differ in more than colour: `onixbyte.cn` is hosted in
|
||||
* mainland China, so its build points every absolute URL at the `.cn` origin
|
||||
* and omits links to sites that are not reliably reachable from there.
|
||||
*
|
||||
* Build with `pnpm build:com` / `pnpm build:cn` — see `package.json`. Both
|
||||
* write to `doc_build`, so run and deploy them one at a time.
|
||||
*/
|
||||
export type SiteTarget = "com" | "cn"
|
||||
|
||||
const ORIGINS: Record<SiteTarget, string> = {
|
||||
com: "https://opensource.onixbyte.com",
|
||||
cn: "https://opensource.onixbyte.cn",
|
||||
}
|
||||
|
||||
/** Every locale the site is published in, default first for each target. */
|
||||
const LANGS = ["en-gb", "zh-hans"] as const
|
||||
|
||||
/**
|
||||
* Locale served from the unprefixed routes.
|
||||
*
|
||||
* `.com` leads with English; `.cn` leads with Chinese, so a visitor landing on
|
||||
* the bare domain gets the language that site exists for. The other locale then
|
||||
* moves to a prefix — on `.cn`, English lives at `/en-gb/`.
|
||||
*/
|
||||
const DEFAULT_LANG: Record<SiteTarget, string> = {
|
||||
com: "en-gb",
|
||||
cn: "zh-hans",
|
||||
}
|
||||
|
||||
/** hreflang and Open Graph locale codes, keyed by Rspress lang. */
|
||||
const HREFLANG: Record<string, string> = { "en-gb": "en-GB", "zh-hans": "zh-Hans" }
|
||||
const OG_LOCALE: Record<string, string> = { "en-gb": "en_GB", "zh-hans": "zh_CN" }
|
||||
|
||||
/** Language-switcher labels, keyed by Rspress lang. */
|
||||
const LOCALE_LABELS: Record<string, string> = {
|
||||
"en-gb": "English (Great Britain)",
|
||||
"zh-hans": "简体中文",
|
||||
}
|
||||
|
||||
/** Site title and description, keyed by Rspress lang. */
|
||||
const LOCALE_META: Record<string, { title: string; description: string }> = {
|
||||
"en-gb": {
|
||||
title: "OnixByte",
|
||||
description:
|
||||
"OnixByte builds self-developed SaaS products and delivers custom software engineering services.",
|
||||
},
|
||||
themeConfig: {
|
||||
socialLinks: [
|
||||
{
|
||||
icon: "github",
|
||||
mode: "link",
|
||||
content: "https://git.onixbyte.com/onixbyte/homepage",
|
||||
},
|
||||
{
|
||||
icon: "x",
|
||||
mode: "link",
|
||||
content: "https://x.com/onixbyte",
|
||||
},
|
||||
],
|
||||
"zh-hans": {
|
||||
title: "OnixByte",
|
||||
description: "曜珀科技自主研发 SaaS 产品,并提供定制化软件开发服务。",
|
||||
},
|
||||
markdown: {
|
||||
showLineNumbers: true,
|
||||
},
|
||||
lang: "en-gb",
|
||||
locales: [
|
||||
}
|
||||
|
||||
/**
|
||||
* Social links, split by whether they are reliably reachable from mainland
|
||||
* China. The `.cn` build renders only the `domestic` set.
|
||||
*
|
||||
* To move a link between builds, move it between these two arrays — nothing
|
||||
* else needs to change.
|
||||
*/
|
||||
const SOCIAL_LINKS: Record<"domestic" | "international", SocialLink[]> = {
|
||||
domestic: [
|
||||
{
|
||||
lang: "en-gb",
|
||||
label: "English (Great Britain)",
|
||||
title: "OnixByte",
|
||||
description: "OnixByte Official",
|
||||
icon: "github",
|
||||
mode: "link",
|
||||
content: "https://github.com/onixbyte-opensource",
|
||||
},
|
||||
{
|
||||
lang: "zh-hans",
|
||||
label: "简体中文",
|
||||
title: "OnixByte",
|
||||
description: "OnixByte 官方站点",
|
||||
// Rspress has no preset Douyin icon, so the artwork is supplied inline —
|
||||
// see `theme/lib/social-icons.ts` for the expected markup.
|
||||
icon: { svg: DOUYIN_ICON },
|
||||
mode: "link",
|
||||
content: "https://v.douyin.com/8PlxMzXors0/",
|
||||
},
|
||||
],
|
||||
})
|
||||
international: [
|
||||
{
|
||||
icon: "x",
|
||||
mode: "link",
|
||||
content: "https://x.com/onixbyte",
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
/**
|
||||
* Per-route sitemap priorities.
|
||||
*
|
||||
* `loc` is deliberately absent. The plugin builds a full entry (including `loc`)
|
||||
* and then spreads `customMaps[routePath]` over it, so `loc` is genuinely
|
||||
* optional — its own documentation shows entries without one. The published
|
||||
* type nonetheless marks `loc` as required, so the assertion at the call site
|
||||
* bridges that mismatch. `SitemapOverrides` is what keeps the priority values
|
||||
* themselves checked.
|
||||
*/
|
||||
type CustomMapsOption = NonNullable<Parameters<typeof pluginSitemap>[0]["customMaps"]>
|
||||
type SitemapOverrides = Record<string, Omit<CustomMapsOption[string], "loc">>
|
||||
|
||||
const PRIORITISED_ROUTES = [
|
||||
["/products/", "1.0"],
|
||||
["/services/", "1.0"],
|
||||
] as const
|
||||
|
||||
/**
|
||||
* Builds the override map for a target.
|
||||
*
|
||||
* The keys are full route paths, so they depend on which locale is unprefixed —
|
||||
* `/products/` means English on `.com` and Chinese on `.cn`.
|
||||
*/
|
||||
function sitemapPriorities(localePrefix: (lang: string) => string): SitemapOverrides {
|
||||
return Object.fromEntries(
|
||||
LANGS.flatMap((lang) =>
|
||||
PRIORITISED_ROUTES.map(([routePath, priority]) => [
|
||||
`${localePrefix(lang)}${routePath}`,
|
||||
{ priority },
|
||||
])
|
||||
)
|
||||
) satisfies SitemapOverrides
|
||||
}
|
||||
|
||||
/** Strips the language prefix, always returning a leading slash. */
|
||||
function bareRoutePath(localePrefix: (lang: string) => string, routePath: string, lang: string) {
|
||||
const prefix = localePrefix(lang)
|
||||
const rest = prefix && routePath.startsWith(prefix) ? routePath.slice(prefix.length) : routePath
|
||||
return rest.startsWith("/") ? rest : `/${rest}`
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes `robots.txt` at build time.
|
||||
*
|
||||
* It cannot live in `docs/public/`, because a single static file would have to
|
||||
* carry the wrong origin for one of the two targets.
|
||||
*/
|
||||
function pluginRobots(origin: string): RspressPlugin {
|
||||
return {
|
||||
name: "plugin-onixbyte-robots",
|
||||
async afterBuild(config: UserConfig) {
|
||||
const outDir = path.resolve(process.cwd(), config.outDir ?? "doc_build")
|
||||
const body = ["User-agent: *", "Allow: /", "", `Sitemap: ${origin}/sitemap.xml`, ""].join(
|
||||
"\n"
|
||||
)
|
||||
await writeFile(path.join(outDir, "robots.txt"), body, "utf8")
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export function createConfig(target: SiteTarget): UserConfig {
|
||||
const origin = ORIGINS[target]
|
||||
const defaultLang = DEFAULT_LANG[target]
|
||||
const socialLinks = [
|
||||
...SOCIAL_LINKS.domestic,
|
||||
...(target === "cn" ? [] : SOCIAL_LINKS.international),
|
||||
]
|
||||
|
||||
/** Rspress drops the prefix from the default locale's routes. */
|
||||
const localePrefix = (lang: string) => (lang === defaultLang ? "" : `/${lang}`)
|
||||
|
||||
return defineConfig({
|
||||
root: path.join(__dirname, "docs"),
|
||||
title: LOCALE_META[defaultLang].title,
|
||||
description: LOCALE_META[defaultLang].description,
|
||||
icon: "/onixbyte-icon.svg",
|
||||
logo: {
|
||||
light: "/onixbyte-light-logo.svg",
|
||||
dark: "/onixbyte-dark-logo.svg",
|
||||
},
|
||||
/**
|
||||
* Per-route `<head>` additions.
|
||||
*
|
||||
* `og:title`, `og:description`, `description` and `og:type` are
|
||||
* deliberately absent: the theme's `HeadTags` already emits them from the
|
||||
* page title and site description, and site-level `head` entries do not
|
||||
* take part in its de-duplication — adding them here would produce
|
||||
* duplicate tags.
|
||||
*/
|
||||
head: [
|
||||
(route) => {
|
||||
const canonical = `${origin}${route.routePath}`
|
||||
const bare = bareRoutePath(localePrefix, route.routePath, route.lang)
|
||||
const otherLang = LANGS.find((lang) => lang !== route.lang) ?? route.lang
|
||||
const alternate = `${origin}${localePrefix(otherLang)}${bare === "/" ? "/" : bare}`
|
||||
const defaultUrl = `${origin}${bare === "/" ? "/" : bare}`
|
||||
|
||||
return [
|
||||
`<link rel="canonical" href="${canonical}">`,
|
||||
`<link rel="alternate" hreflang="${HREFLANG[route.lang]}" href="${canonical}">`,
|
||||
`<link rel="alternate" hreflang="${HREFLANG[otherLang]}" href="${alternate}">`,
|
||||
`<link rel="alternate" hreflang="x-default" href="${defaultUrl}">`,
|
||||
`<meta property="og:url" content="${canonical}">`,
|
||||
`<meta property="og:site_name" content="OnixByte">`,
|
||||
`<meta property="og:locale" content="${OG_LOCALE[route.lang]}">`,
|
||||
`<meta property="og:image" content="${origin}/og-image.png">`,
|
||||
`<meta name="twitter:card" content="summary_large_image">`,
|
||||
].join("")
|
||||
},
|
||||
],
|
||||
themeConfig: {
|
||||
// NOTE: `footer` is intentionally not set — the site footer is the
|
||||
// `SiteFooter` component wired through the Layout `bottom` slot. Setting
|
||||
// `footer.message` here would render the built-in `HomeFooter` on top of
|
||||
// it on the home page only.
|
||||
//
|
||||
// `nav` and `sidebar` are also intentionally not set: supplying either
|
||||
// switches off auto-generation and would make every `_nav.json` and
|
||||
// `_meta.json` inert.
|
||||
socialLinks,
|
||||
lastUpdated: true,
|
||||
},
|
||||
markdown: {
|
||||
showLineNumbers: true,
|
||||
},
|
||||
lang: defaultLang,
|
||||
// The default locale is listed first so the language switcher leads with it.
|
||||
locales: [defaultLang, ...LANGS.filter((lang) => lang !== defaultLang)].map((lang) => ({
|
||||
lang,
|
||||
label: LOCALE_LABELS[lang],
|
||||
...LOCALE_META[lang],
|
||||
})),
|
||||
// Local full-text search. This is already the Rspress v2 default; stated
|
||||
// explicitly so the intent is visible. The index is emitted per locale to
|
||||
// `static/search_index.<lang>.<hash>.json` at build time.
|
||||
search: {
|
||||
mode: "local",
|
||||
codeBlocks: true,
|
||||
},
|
||||
plugins: [
|
||||
pluginSitemap({
|
||||
siteUrl: origin,
|
||||
defaultChangeFreq: "weekly",
|
||||
defaultPriority: "0.5",
|
||||
// Double assertion rather than a plain cast: the plugin's `Sitemap` type
|
||||
// requires `loc`, so the two types do not overlap enough for a single
|
||||
// assertion. See `sitemapPriorities` above for why omitting it is right.
|
||||
customMaps: sitemapPriorities(localePrefix) as unknown as CustomMapsOption,
|
||||
}),
|
||||
pluginRobots(origin),
|
||||
],
|
||||
})
|
||||
}
|
||||
|
||||
export default createConfig("com")
|
||||
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Inline SVG markup for social links that Rspress ships no preset icon for.
|
||||
*
|
||||
* Values are injected verbatim as innerHTML by the theme's `SocialLink`
|
||||
* component, so each must be a complete `<svg>` element. Match the shape
|
||||
* Rspress uses for its presets so the icons sit consistently in the nav bar:
|
||||
*
|
||||
* <svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 24 24">
|
||||
* <path fill="currentColor" d="…" />
|
||||
* </svg>
|
||||
*
|
||||
* `width="100%"` lets the nav bar size the glyph; the viewBox carries the
|
||||
* aspect ratio, so keep whatever coordinate system the source artwork uses.
|
||||
* `fill="currentColor"` is essential — the presets all set it, and without it
|
||||
* a path defaults to solid black and disappears in dark mode.
|
||||
*
|
||||
* Rspress's built-in set covers Weibo, Bilibili, Zhihu, Juejin, QQ and WeChat,
|
||||
* but not Douyin. Adding such an icon to the preset registry is not possible
|
||||
* from userland — `getSocialIcons` throws on any name it does not recognise —
|
||||
* so a literal SVG string is the supported route.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Official Douyin mark.
|
||||
*
|
||||
* The source artwork is authored on a 1024×1024 grid and fills it exactly
|
||||
* (the glyph runs from y=0 to y=1024), so the viewBox is carried through
|
||||
* unchanged. Editor attributes from the export (`t`, `class`, `version`,
|
||||
* `p-id`, the fixed pixel `width`/`height`) have been dropped; `width="100%"`
|
||||
* and `fill="currentColor"` are set here instead.
|
||||
*/
|
||||
export const DOUYIN_ICON = `<svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 1024 1024"><path fill="currentColor" d="M937.4 423.9c-84 0-165.7-27.3-232.9-77.8v352.3c0 179.9-138.6 325.6-309.6 325.6S85.3 878.3 85.3 698.4c0-179.9 138.6-325.6 309.6-325.6 17.1 0 33.7 1.5 49.9 4.3v186.6c-15.5-6.1-32-9.2-48.6-9.2-76.3 0-138.2 65-138.2 145.3 0 80.2 61.9 145.3 138.2 145.3 76.2 0 138.1-65.1 138.1-145.3V0H707c0 134.5 103.7 243.5 231.6 243.5v180.3l-1.2 0.1"/></svg>`
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
"value": "CN"
|
||||
}
|
||||
],
|
||||
"destination": "https://onixbyte.cn/:path*",
|
||||
"destination": "https://opensource.onixbyte.cn/:path*",
|
||||
"permanent": false
|
||||
}
|
||||
]
|
||||
|
||||
Reference in new issue
Block a user