From 113677baf968da20eadb5ed1d18980c44fc0c1eb Mon Sep 17 00:00:00 2001 From: SmallMain Date: Fri, 20 May 2022 16:41:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=20docs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 51 +++-- docs/docs/intro.md | 51 +++-- docs/docusaurus.config.js | 141 +++++++----- docs/package-lock.json | 444 ++++++++++++++++++++++++++++++++++++ docs/package.json | 1 + docs/src/css/custom.css | 42 ++-- docs/src/pages/index.tsx | 4 +- docs/static/img/favicon.ico | Bin 3626 -> 95518 bytes docs/static/img/logo.png | Bin 0 -> 10505 bytes docs/static/img/logo.svg | 1 - 10 files changed, 607 insertions(+), 128 deletions(-) create mode 100644 docs/static/img/logo.png delete mode 100644 docs/static/img/logo.svg diff --git a/README.md b/README.md index 90ea10bc..d5512309 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,37 @@ # Cocos Creator Service Pack -Cocos Creator Service Pack 是一个开源的 Cocos Creator 引擎**非官方服务包**,提供开箱即用的符合引擎设计的增强特性、问题修复与优化。 +这是一个对 Cocos Creator 引擎进行特性新增、修复与优化的**开源非官方服务包**。 + +我们的发展方向是尽量以最符合引擎架构设计的方式加入新的特性、修复引擎已知问题以及性能优化。 + +> 项目的起源 +> +> 2021 年 2 月,Cocos 发布 Cocos Creator 3.0,并在 3.x 发布之后不会再继续开发 2.x 版本的新特性。 +> +> 问题修复等所有维护工作也会在 2023 年完全停止。而 2.x 以及 3.x 在一些方面都并不完善,所以我们发布了这个非官方的引擎“魔改”集合。 +> +> 相似的事情发生在 2014 年 4 月,官方停止了对 Windows XP 的维护,之后 Harkaz 发布了一个非官方服务包 Service Pack 4 (SP4)。 +> +> 所以我们将这个“魔改”集合取名为 Service Pack。 +> +> 我们暂时只专注于 Cocos Creator 2.x 版本的适配,虽然当前服务包新增的一些特性在 Cocos Creator 3.5 版本中甚至依然还大部分缺失,但因为它还在蒸蒸日上中(还有希望),并且其引擎架构还在不断地迭代(不稳定),对其进行修改的维护工作会很大。 + -- [Cocos Creator Service Pack](#cocos-creator-service-pack) - - [简介](#简介) - - [改动内容](#改动内容) - - [如何使用](#如何使用) - - [实现原理](#实现原理) - - [更新日志](#更新日志) - - [贡献指南](#贡献指南) +- [重要改进](#重要改进) +- [如何使用](#如何使用) +- [实现原理](#实现原理) +- [更新日志](#更新日志) +- [贡献指南](#贡献指南) -## 简介 +## 重要改进 -Windows XP 于 2014 年 4 月停止官方维护,之后 Harkaz 发布了一个非官方服务包 Service Pack 4(SP4)。[Link](https://www.softpedia.com/get/Others/Signatures-Updates/Windows-XP-SP4-Unofficial.shtml) - -如此地相似,Cocos 于 2021 年 2 月预告将于 2023 年停止 2.x 版本的维护更新,遂也取名为 Service Pack(SP)。[Link](https://forum.cocos.org/t/topic/106026) - -我们主要收集在论坛中呼声最高的特性并尝试将其以适合引擎的方式实现,以及修复已知问题和优化。 - -虽然服务包新增的一些特性在 Cocos Creator 3.5 版本中甚至依然还大部分缺失,但因为它的开发并未停滞(还有希望),并且 3.x 的引擎架构还不断在迭代(不稳定),我们暂时只维护 2.x 版本的服务包。 - -## 改动内容 - -以下是服务包对引擎的改动: - -- 阿斯顿 +- 待补充。 ## 如何使用 @@ -38,7 +39,7 @@ Windows XP 于 2014 年 4 月停止官方维护,之后 Harkaz 发布了一个 ## 实现原理 -每个修复与新增特性的原理都会进行公示,我们没做过完善的测试,但是尽量保持改动的透明。 +每个改动的原理都会进行公示,我们没做过官方那样完善的测试,但是尽量保持改动的透明。 ## 更新日志 @@ -48,8 +49,8 @@ Windows XP 于 2014 年 4 月停止官方维护,之后 Harkaz 发布了一个 非常欢迎您能和我们一起来完善,所有的一切都通过 Github 进行: -- 如果您有问题或者好的想法,欢迎创建 `Issues` 。 -- 如果您有新的代码提交,欢迎创建 `Pull requests`。 +- 如果您有问题或者好的想法,请使用 `Issues` 或 `Discussions` 。 +- 如果您有新的代码提交,请使用 `Pull requests`。 原则上我们接受任何新增与修改,但是**任何修改都必须兼容引擎原有的特性**,并且**不允许删除引擎原有的特性**。 diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 50026023..64f3020b 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -2,46 +2,47 @@ sidebar_position: 1 --- -# Tutorial Intro +# 介绍 -Let's discover **Docusaurus in less than 5 minutes**. +这是一个对 Cocos Creator 引擎进行特性新增、修复与优化的**开源非官方服务包**。 -## Getting Started +我们的发展方向是尽量以最符合引擎架构设计的方式加入新的特性、修复引擎已知问题以及性能优化。 -Get started by **creating a new site**. +:::info 项目的起源 +2021 年 2 月,Cocos 发布 Cocos Creator 3.0,并在 3.x 发布之后不会再继续开发 2.x 版本的新特性。 -Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**. +问题修复等所有维护工作也会在 2023 年完全停止。而 2.x 以及 3.x 在一些方面都并不完善,所以我们发布了这个非官方的引擎“魔改”集合。 -### What you'll need +相似的事情发生在 2014 年 4 月,官方停止了对 Windows XP 的维护,之后 Harkaz 发布了一个非官方服务包 Service Pack 4 (SP4)。 -- [Node.js](https://nodejs.org/en/download/) version 14 or above: - - When installing Node.js, you are recommended to check all checkboxes related to dependencies. +所以我们将这个“魔改”集合取名为 Service Pack。 -## Generate a new site +我们暂时只专注于 Cocos Creator 2.x 版本的适配,虽然当前服务包新增的一些特性在 Cocos Creator 3.5 版本中甚至依然还大部分缺失,但因为它还在蒸蒸日上中(还有希望),并且其引擎架构还在不断地迭代(不稳定),对其进行修改的维护工作会很大。 +::: -Generate a new Docusaurus site using the **classic template**. +## 重要改进 -The classic template will automatically be added to your project after you run the command: +- 待补充。 -```bash -npm init docusaurus@latest my-website classic -``` +## 如何使用 -You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor. +待补充。 -The command also installs all necessary dependencies you need to run Docusaurus. +## 实现原理 -## Start your site +每个改动的原理都会进行公示,我们没做过官方那样完善的测试,但是尽量保持改动的透明。 -Run the development server: +## 更新日志 -```bash -cd my-website -npm run start -``` +待补充。 -The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there. +## 贡献指南 -The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/. +非常欢迎您能和我们一起来完善,所有的一切都通过 Github 进行: -Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes. +- 如果您有问题或者好的想法,请使用 `Issues` 或 `Discussions` 。 +- 如果您有新的代码提交,请使用 `Pull requests`。 + +原则上我们接受任何新增与修改,但是**任何修改都必须兼容引擎原有的特性**,并且**不允许删除引擎原有的特性**。 + +在开发新特性时,请站在引擎的角度思考该如何设计。 diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 7dd7c9a5..ce2ea285 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -6,10 +6,10 @@ const darkCodeTheme = require('prism-react-renderer/themes/dracula'); /** @type {import('@docusaurus/types').Config} */ const config = { - title: 'My Site', - tagline: 'Dinosaurs are cool', + title: 'Cocos Service Pack', + tagline: '对 Cocos Creator 引擎进行特性新增、修复与优化的开源非官方服务包', url: 'https://smallmain.github.io/cocos-service-pack/', - baseUrl: '/', + baseUrl: '/cocos-service-pack/', onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', favicon: 'img/favicon.ico', @@ -24,8 +24,8 @@ const config = { // metadata like html lang. For example, if your site is Chinese, you may want // to replace "en" with "zh-Hans". i18n: { - defaultLocale: 'en', - locales: ['en'], + defaultLocale: 'zh', + locales: ['zh'], }, presets: [ @@ -35,17 +35,9 @@ const config = { ({ docs: { sidebarPath: require.resolve('./sidebars.js'), - // Please change this to your repo. - // Remove this to remove the "edit this page" links. - editUrl: - 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', }, blog: { showReadingTime: true, - // Please change this to your repo. - // Remove this to remove the "edit this page" links. - editUrl: - 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', }, theme: { customCss: require.resolve('./src/css/custom.css'), @@ -58,76 +50,105 @@ const config = { /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ ({ navbar: { - title: 'My Site', + title: 'Cocos Service Pack', + // style: 'primary', logo: { - alt: 'My Site Logo', - src: 'img/logo.svg', + alt: 'Cocos Service Pack', + src: 'img/logo.png', }, items: [ + { + to: '/', + label: '首页', + activeBaseRegex: '/$', + position: 'right', + }, { type: 'doc', docId: 'intro', - position: 'left', - label: 'Tutorial', + position: 'right', + label: '文档', }, - { to: '/blog', label: 'Blog', position: 'left' }, { - href: 'https://github.com/facebook/docusaurus', + type: 'docsVersionDropdown', + position: 'right', + dropdownItemsAfter: [{ to: '/versions', label: 'All versions' }], + dropdownActiveClassDisabled: true, + }, + // { to: '/blog', label: 'Blog', position: 'left' }, + { + href: 'https://github.com/smallmain/cocos-service-pack', label: 'GitHub', position: 'right', }, + { + type: 'search', + position: 'right', + }, ], }, footer: { style: 'dark', links: [ - { - title: 'Docs', - items: [ - { - label: 'Tutorial', - to: '/docs/intro', - }, - ], - }, - { - title: 'Community', - items: [ - { - label: 'Stack Overflow', - href: 'https://stackoverflow.com/questions/tagged/docusaurus', - }, - { - label: 'Discord', - href: 'https://discordapp.com/invite/docusaurus', - }, - { - label: 'Twitter', - href: 'https://twitter.com/docusaurus', - }, - ], - }, - { - title: 'More', - items: [ - { - label: 'Blog', - to: '/blog', - }, - { - label: 'GitHub', - href: 'https://github.com/facebook/docusaurus', - }, - ], - }, + // { + // title: 'Docs', + // items: [ + // { + // label: 'Tutorial', + // to: '/docs/intro', + // }, + // ], + // }, + // { + // title: 'Community', + // items: [ + // { + // label: 'Stack Overflow', + // href: 'https://stackoverflow.com/questions/tagged/docusaurus', + // }, + // { + // label: 'Discord', + // href: 'https://discordapp.com/invite/docusaurus', + // }, + // { + // label: 'Twitter', + // href: 'https://twitter.com/docusaurus', + // }, + // ], + // }, + // { + // title: 'More', + // items: [ + // // { + // // label: 'Blog', + // // to: '/blog', + // // }, + // { + // label: 'GitHub', + // href: 'https://github.com/facebook/docusaurus', + // }, + // ], + // }, ], - copyright: `Copyright © ${new Date().getFullYear()} My Project, Inc. Built with Docusaurus.`, + copyright: `Copyright © ${new Date().getFullYear()} Cocos Service Pack.`, }, prism: { theme: lightCodeTheme, darkTheme: darkCodeTheme, }, }), + themes: [ + [ + require.resolve("@easyops-cn/docusaurus-search-local"), + { + hashed: true, + indexPages: true, + language: ['en', 'zh'], + removeDefaultStemmer: true, + searchResultLimits: 10, + }, + ], + ], }; module.exports = config; diff --git a/docs/package-lock.json b/docs/package-lock.json index 87df561a..93b89f97 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "@docusaurus/core": "2.0.0-beta.20", "@docusaurus/preset-classic": "2.0.0-beta.20", + "@easyops-cn/docusaurus-search-local": "^0.25.0", "@mdx-js/react": "^1.6.22", "clsx": "^1.1.1", "prism-react-renderer": "^1.3.1", @@ -2478,6 +2479,41 @@ "node": ">=14" } }, + "node_modules/@easyops-cn/autocomplete.js": { + "version": "0.38.1", + "resolved": "https://registry.npmjs.org/@easyops-cn/autocomplete.js/-/autocomplete.js-0.38.1.tgz", + "integrity": "sha512-drg76jS6syilOUmVNkyo1c7ZEBPcPuK+aJA7AksM5ZIIbV57DMHCywiCr+uHyv8BE5jUTU98j/H7gVrkHrWW3Q==", + "dependencies": { + "cssesc": "^3.0.0", + "immediate": "^3.2.3" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@easyops-cn/docusaurus-search-local/-/docusaurus-search-local-0.25.0.tgz", + "integrity": "sha512-UO63j2HJeHyPViZKFFhRjbIFUFfW16jiBOjUl7kbOswMDj0nLIcoKfgzcKZ+/KhUDNmwnUruSf/lW+eX31mLtg==", + "dependencies": { + "@docusaurus/theme-common": "^2.0.0-beta.20", + "@docusaurus/theme-translations": "^2.0.0-beta.20", + "@docusaurus/utils": "^2.0.0-beta.20", + "@docusaurus/utils-common": "^2.0.0-beta.20", + "@docusaurus/utils-validation": "^2.0.0-beta.20", + "@easyops-cn/autocomplete.js": "^0.38.1", + "@node-rs/jieba": "^1.6.0", + "cheerio": "^1.0.0-rc.3", + "clsx": "^1.1.1", + "debug": "^4.2.0", + "fs-extra": "^10.0.0", + "klaw-sync": "^6.0.0", + "lunr": "^2.3.9", + "lunr-languages": "^1.4.0", + "mark.js": "^8.11.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", @@ -2646,6 +2682,228 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/@node-rs/jieba": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba/-/jieba-1.6.1.tgz", + "integrity": "sha512-pISKu8NIYKRvZp7mhYZYA8VCjJMqTsCe+mQcFFnAi3GNJsijGjef2peMFeDcvP72X8MsnNeYeg3rHkAybtefyQ==", + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@node-rs/jieba-android-arm-eabi": "1.6.1", + "@node-rs/jieba-android-arm64": "1.6.1", + "@node-rs/jieba-darwin-arm64": "1.6.1", + "@node-rs/jieba-darwin-x64": "1.6.1", + "@node-rs/jieba-freebsd-x64": "1.6.1", + "@node-rs/jieba-linux-arm-gnueabihf": "1.6.1", + "@node-rs/jieba-linux-arm64-gnu": "1.6.1", + "@node-rs/jieba-linux-arm64-musl": "1.6.1", + "@node-rs/jieba-linux-x64-gnu": "1.6.1", + "@node-rs/jieba-linux-x64-musl": "1.6.1", + "@node-rs/jieba-win32-arm64-msvc": "1.6.1", + "@node-rs/jieba-win32-ia32-msvc": "1.6.1", + "@node-rs/jieba-win32-x64-msvc": "1.6.1" + } + }, + "node_modules/@node-rs/jieba-android-arm-eabi": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-android-arm-eabi/-/jieba-android-arm-eabi-1.6.1.tgz", + "integrity": "sha512-R1YQfsPr7sK3Tq1sM0//6lNAGJK9RnMT0ShITT+7EJYr5OufUBb38lf/mRhrLxR0NF1pycEsMjdCAwrWrHd8rA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-android-arm64": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-android-arm64/-/jieba-android-arm64-1.6.1.tgz", + "integrity": "sha512-hBRbj2uLmRFYDw2lWppTAPoyjeXkBKUT84h4fHUQj7CMU94Gc1IWkE4ocCqhvUhbaUXlCpocS9mB0/fc2641bw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-darwin-arm64": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-darwin-arm64/-/jieba-darwin-arm64-1.6.1.tgz", + "integrity": "sha512-GeoDe7XVTF6z8JUtD98QvwudsMaHV5EBXs5uO43SobeIkShH3Nujq5gLMD5kWoJXTxDrTgJe4wT42EwUaBEH2Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-darwin-x64": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-darwin-x64/-/jieba-darwin-x64-1.6.1.tgz", + "integrity": "sha512-ENHYIS8b8JdMaUXEm0f8Y3+sHXu2UdukG1D/XGUNx+q5cn07HbwIg6L0tlGhE8dw4AhqoWHsExVaZ241Igh4iA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-freebsd-x64": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-freebsd-x64/-/jieba-freebsd-x64-1.6.1.tgz", + "integrity": "sha512-chwB/9edtxqS8Jm3j4RMaJjH9AlXmijUgKv02oMw36e77HKpko+tENUN25Vrn/9GKsKGqIPeXpmCjeXCN1HVQA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm-gnueabihf": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm-gnueabihf/-/jieba-linux-arm-gnueabihf-1.6.1.tgz", + "integrity": "sha512-tsb5fMGj4p8bHGfkf7bJ+HE2jxaixLTp3YnGg5D+kp8+HQRq8cp3ScG5cn8cq0phnJS/zfAp8rVfWInDagzKKQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm64-gnu": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm64-gnu/-/jieba-linux-arm64-gnu-1.6.1.tgz", + "integrity": "sha512-bSInORkJFfeZNR+i4rFoSZGbwkQtQlnZ0XfT/noTK9JUBDYErqQZPFjoaYAU45NWTk7p6Zkg30SuV1NTdWLaPw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm64-musl": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm64-musl/-/jieba-linux-arm64-musl-1.6.1.tgz", + "integrity": "sha512-qphL6xM7owfU8Hsh7GX73SDr/iApbnc+35mSLxbibAfCQnY89+WcBeWUUOSGM/Ov3VFaq4pyVlDFj0YjR01W2w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-x64-gnu": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-x64-gnu/-/jieba-linux-x64-gnu-1.6.1.tgz", + "integrity": "sha512-f6hhlrbi2wel0xZG7m3Wvksimt9MSu1f3aYO2Kwavf4qjMRZqJzLz9HlCJAal6AXB9Qgg+685P+gftsWve47qw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-x64-musl": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-x64-musl/-/jieba-linux-x64-musl-1.6.1.tgz", + "integrity": "sha512-cTVcdR6zWqpnmdEUyWEII9zfE5lTeWN53TbiOPx8TCA+291/31Vqd7GA8YEPndUO8qgCx5uShSDFStBAEIhYNQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-win32-arm64-msvc": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-arm64-msvc/-/jieba-win32-arm64-msvc-1.6.1.tgz", + "integrity": "sha512-YuOTrjHazDraXcGXRHgPQ53nyJuH8QtTCngYKjAzxsdt8uN+txb1AY69OLMLBBZqLTOwY9dgcW70vGiLQMCTeg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-win32-ia32-msvc": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-ia32-msvc/-/jieba-win32-ia32-msvc-1.6.1.tgz", + "integrity": "sha512-4+E843ImGpVlZ+LlT9E/13NHmmUg3UHQx419D6fFMorJUUQuK4cZJfE1z4tCgcrbV8S5Wew5LIFywlJeJLu0LQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-win32-x64-msvc": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-x64-msvc/-/jieba-win32-x64-msvc-1.6.1.tgz", + "integrity": "sha512-veXNwm2VlseOzl7vaC7A/nZ4okp5/6edN7/Atj6mXnUbze/m/my5Rv5zUcW3U1D9VElnQ3srCHCa5vXljJuk6g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -7010,6 +7268,11 @@ "node": ">=12.0.0" } }, + "node_modules/immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" + }, "node_modules/immer": { "version": "9.0.14", "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.14.tgz", @@ -7551,6 +7814,14 @@ "node": ">=0.10.0" } }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -7764,6 +8035,16 @@ "node": ">=10" } }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" + }, + "node_modules/lunr-languages": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.9.0.tgz", + "integrity": "sha512-Be5vFuc8NAheOIjviCRms3ZqFFBlzns3u9DXpPSZvALetgnydAN0poV71pVLFn0keYy/s4VblMMkqewTLe+KPg==" + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -7786,6 +8067,11 @@ "semver": "bin/semver.js" } }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha1-GA8fnr74sOY45BZq1S24eb6y/8U=" + }, "node_modules/markdown-escapes": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", @@ -14522,6 +14808,38 @@ "tslib": "^2.4.0" } }, + "@easyops-cn/autocomplete.js": { + "version": "0.38.1", + "resolved": "https://registry.npmjs.org/@easyops-cn/autocomplete.js/-/autocomplete.js-0.38.1.tgz", + "integrity": "sha512-drg76jS6syilOUmVNkyo1c7ZEBPcPuK+aJA7AksM5ZIIbV57DMHCywiCr+uHyv8BE5jUTU98j/H7gVrkHrWW3Q==", + "requires": { + "cssesc": "^3.0.0", + "immediate": "^3.2.3" + } + }, + "@easyops-cn/docusaurus-search-local": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@easyops-cn/docusaurus-search-local/-/docusaurus-search-local-0.25.0.tgz", + "integrity": "sha512-UO63j2HJeHyPViZKFFhRjbIFUFfW16jiBOjUl7kbOswMDj0nLIcoKfgzcKZ+/KhUDNmwnUruSf/lW+eX31mLtg==", + "requires": { + "@docusaurus/theme-common": "^2.0.0-beta.20", + "@docusaurus/theme-translations": "^2.0.0-beta.20", + "@docusaurus/utils": "^2.0.0-beta.20", + "@docusaurus/utils-common": "^2.0.0-beta.20", + "@docusaurus/utils-validation": "^2.0.0-beta.20", + "@easyops-cn/autocomplete.js": "^0.38.1", + "@node-rs/jieba": "^1.6.0", + "cheerio": "^1.0.0-rc.3", + "clsx": "^1.1.1", + "debug": "^4.2.0", + "fs-extra": "^10.0.0", + "klaw-sync": "^6.0.0", + "lunr": "^2.3.9", + "lunr-languages": "^1.4.0", + "mark.js": "^8.11.1", + "tslib": "^2.4.0" + } + }, "@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", @@ -14653,6 +14971,104 @@ "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==" }, + "@node-rs/jieba": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba/-/jieba-1.6.1.tgz", + "integrity": "sha512-pISKu8NIYKRvZp7mhYZYA8VCjJMqTsCe+mQcFFnAi3GNJsijGjef2peMFeDcvP72X8MsnNeYeg3rHkAybtefyQ==", + "requires": { + "@node-rs/jieba-android-arm-eabi": "1.6.1", + "@node-rs/jieba-android-arm64": "1.6.1", + "@node-rs/jieba-darwin-arm64": "1.6.1", + "@node-rs/jieba-darwin-x64": "1.6.1", + "@node-rs/jieba-freebsd-x64": "1.6.1", + "@node-rs/jieba-linux-arm-gnueabihf": "1.6.1", + "@node-rs/jieba-linux-arm64-gnu": "1.6.1", + "@node-rs/jieba-linux-arm64-musl": "1.6.1", + "@node-rs/jieba-linux-x64-gnu": "1.6.1", + "@node-rs/jieba-linux-x64-musl": "1.6.1", + "@node-rs/jieba-win32-arm64-msvc": "1.6.1", + "@node-rs/jieba-win32-ia32-msvc": "1.6.1", + "@node-rs/jieba-win32-x64-msvc": "1.6.1" + } + }, + "@node-rs/jieba-android-arm-eabi": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-android-arm-eabi/-/jieba-android-arm-eabi-1.6.1.tgz", + "integrity": "sha512-R1YQfsPr7sK3Tq1sM0//6lNAGJK9RnMT0ShITT+7EJYr5OufUBb38lf/mRhrLxR0NF1pycEsMjdCAwrWrHd8rA==", + "optional": true + }, + "@node-rs/jieba-android-arm64": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-android-arm64/-/jieba-android-arm64-1.6.1.tgz", + "integrity": "sha512-hBRbj2uLmRFYDw2lWppTAPoyjeXkBKUT84h4fHUQj7CMU94Gc1IWkE4ocCqhvUhbaUXlCpocS9mB0/fc2641bw==", + "optional": true + }, + "@node-rs/jieba-darwin-arm64": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-darwin-arm64/-/jieba-darwin-arm64-1.6.1.tgz", + "integrity": "sha512-GeoDe7XVTF6z8JUtD98QvwudsMaHV5EBXs5uO43SobeIkShH3Nujq5gLMD5kWoJXTxDrTgJe4wT42EwUaBEH2Q==", + "optional": true + }, + "@node-rs/jieba-darwin-x64": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-darwin-x64/-/jieba-darwin-x64-1.6.1.tgz", + "integrity": "sha512-ENHYIS8b8JdMaUXEm0f8Y3+sHXu2UdukG1D/XGUNx+q5cn07HbwIg6L0tlGhE8dw4AhqoWHsExVaZ241Igh4iA==", + "optional": true + }, + "@node-rs/jieba-freebsd-x64": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-freebsd-x64/-/jieba-freebsd-x64-1.6.1.tgz", + "integrity": "sha512-chwB/9edtxqS8Jm3j4RMaJjH9AlXmijUgKv02oMw36e77HKpko+tENUN25Vrn/9GKsKGqIPeXpmCjeXCN1HVQA==", + "optional": true + }, + "@node-rs/jieba-linux-arm-gnueabihf": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm-gnueabihf/-/jieba-linux-arm-gnueabihf-1.6.1.tgz", + "integrity": "sha512-tsb5fMGj4p8bHGfkf7bJ+HE2jxaixLTp3YnGg5D+kp8+HQRq8cp3ScG5cn8cq0phnJS/zfAp8rVfWInDagzKKQ==", + "optional": true + }, + "@node-rs/jieba-linux-arm64-gnu": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm64-gnu/-/jieba-linux-arm64-gnu-1.6.1.tgz", + "integrity": "sha512-bSInORkJFfeZNR+i4rFoSZGbwkQtQlnZ0XfT/noTK9JUBDYErqQZPFjoaYAU45NWTk7p6Zkg30SuV1NTdWLaPw==", + "optional": true + }, + "@node-rs/jieba-linux-arm64-musl": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm64-musl/-/jieba-linux-arm64-musl-1.6.1.tgz", + "integrity": "sha512-qphL6xM7owfU8Hsh7GX73SDr/iApbnc+35mSLxbibAfCQnY89+WcBeWUUOSGM/Ov3VFaq4pyVlDFj0YjR01W2w==", + "optional": true + }, + "@node-rs/jieba-linux-x64-gnu": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-x64-gnu/-/jieba-linux-x64-gnu-1.6.1.tgz", + "integrity": "sha512-f6hhlrbi2wel0xZG7m3Wvksimt9MSu1f3aYO2Kwavf4qjMRZqJzLz9HlCJAal6AXB9Qgg+685P+gftsWve47qw==", + "optional": true + }, + "@node-rs/jieba-linux-x64-musl": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-x64-musl/-/jieba-linux-x64-musl-1.6.1.tgz", + "integrity": "sha512-cTVcdR6zWqpnmdEUyWEII9zfE5lTeWN53TbiOPx8TCA+291/31Vqd7GA8YEPndUO8qgCx5uShSDFStBAEIhYNQ==", + "optional": true + }, + "@node-rs/jieba-win32-arm64-msvc": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-arm64-msvc/-/jieba-win32-arm64-msvc-1.6.1.tgz", + "integrity": "sha512-YuOTrjHazDraXcGXRHgPQ53nyJuH8QtTCngYKjAzxsdt8uN+txb1AY69OLMLBBZqLTOwY9dgcW70vGiLQMCTeg==", + "optional": true + }, + "@node-rs/jieba-win32-ia32-msvc": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-ia32-msvc/-/jieba-win32-ia32-msvc-1.6.1.tgz", + "integrity": "sha512-4+E843ImGpVlZ+LlT9E/13NHmmUg3UHQx419D6fFMorJUUQuK4cZJfE1z4tCgcrbV8S5Wew5LIFywlJeJLu0LQ==", + "optional": true + }, + "@node-rs/jieba-win32-x64-msvc": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-x64-msvc/-/jieba-win32-x64-msvc-1.6.1.tgz", + "integrity": "sha512-veXNwm2VlseOzl7vaC7A/nZ4okp5/6edN7/Atj6mXnUbze/m/my5Rv5zUcW3U1D9VElnQ3srCHCa5vXljJuk6g==", + "optional": true + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -17904,6 +18320,11 @@ "queue": "6.0.2" } }, + "immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" + }, "immer": { "version": "9.0.14", "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.14.tgz", @@ -18268,6 +18689,14 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, + "klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "requires": { + "graceful-fs": "^4.1.11" + } + }, "kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -18448,6 +18877,16 @@ "yallist": "^4.0.0" } }, + "lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" + }, + "lunr-languages": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.9.0.tgz", + "integrity": "sha512-Be5vFuc8NAheOIjviCRms3ZqFFBlzns3u9DXpPSZvALetgnydAN0poV71pVLFn0keYy/s4VblMMkqewTLe+KPg==" + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -18463,6 +18902,11 @@ } } }, + "mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha1-GA8fnr74sOY45BZq1S24eb6y/8U=" + }, "markdown-escapes": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", diff --git a/docs/package.json b/docs/package.json index 2c31316a..76d16bff 100644 --- a/docs/package.json +++ b/docs/package.json @@ -17,6 +17,7 @@ "dependencies": { "@docusaurus/core": "2.0.0-beta.20", "@docusaurus/preset-classic": "2.0.0-beta.20", + "@easyops-cn/docusaurus-search-local": "^0.25.0", "@mdx-js/react": "^1.6.22", "clsx": "^1.1.1", "prism-react-renderer": "^1.3.1", diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css index 2bc6a4cf..6215cd04 100644 --- a/docs/src/css/custom.css +++ b/docs/src/css/custom.css @@ -6,25 +6,37 @@ /* You can override the default Infima variables here. */ :root { - --ifm-color-primary: #2e8555; - --ifm-color-primary-dark: #29784c; - --ifm-color-primary-darker: #277148; - --ifm-color-primary-darkest: #205d3b; - --ifm-color-primary-light: #33925d; - --ifm-color-primary-lighter: #359962; - --ifm-color-primary-lightest: #3cad6e; - --ifm-code-font-size: 95%; + --ifm-color-primary: #5b3aa1; + --ifm-color-primary-dark: #523491; + --ifm-color-primary-darker: #4d3189; + --ifm-color-primary-darkest: #402971; + --ifm-color-primary-light: #6440b1; + --ifm-color-primary-lighter: #6943b9; + --ifm-color-primary-lightest: #7b59c3; + --ifm-code-font-size: 90%; --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); } /* For readability concerns, you should choose a lighter palette in dark mode. */ [data-theme='dark'] { - --ifm-color-primary: #25c2a0; - --ifm-color-primary-dark: #21af90; - --ifm-color-primary-darker: #1fa588; - --ifm-color-primary-darkest: #1a8870; - --ifm-color-primary-light: #29d5b0; - --ifm-color-primary-lighter: #32d8b4; - --ifm-color-primary-lightest: #4fddbf; + --ifm-color-primary: #c0a3ff; + --ifm-color-primary-dark: #a379ff; + --ifm-color-primary-darker: #9564ff; + --ifm-color-primary-darkest: #6a26ff; + --ifm-color-primary-light: #ddcdff; + --ifm-color-primary-lighter: #ebe2ff; + --ifm-color-primary-lightest: #ffffff; --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); } + +@media screen and (max-width: 996px) { + :root { + --ifm-font-size-base: 15px; + } +} + +@media screen and (min-width: 997px) { + :root { + --ifm-font-size-base: 15px; + } +} diff --git a/docs/src/pages/index.tsx b/docs/src/pages/index.tsx index 3408a41e..afed24b6 100644 --- a/docs/src/pages/index.tsx +++ b/docs/src/pages/index.tsx @@ -9,7 +9,7 @@ import HomepageFeatures from '@site/src/components/HomepageFeatures'; function HomepageHeader() { const {siteConfig} = useDocusaurusContext(); return ( -
+

{siteConfig.title}

{siteConfig.tagline}

@@ -29,7 +29,7 @@ export default function Home(): JSX.Element { const {siteConfig} = useDocusaurusContext(); return (
diff --git a/docs/static/img/favicon.ico b/docs/static/img/favicon.ico index c01d54bcd39a5f853428f3cd5aa0f383d963c484..0e2cfe00ab5322930a69b0110e578e8908c4c16f 100644 GIT binary patch literal 95518 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 \ No newline at end of file