From b40f86b310f801f2cd2c9bf5cbea19a020cf1fe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=87=AA=E5=B8=A6=E5=A4=A7=E4=BD=AC=E6=B0=94=E5=9C=BA?= <188633308@qq.com> Date: Fri, 9 Jul 2021 17:41:27 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E5=BC=80=E5=8F=91=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web-react/package.json | 1 + web-react/public/doc-code/api/setting.js | 14 ++ web-react/public/doc-code/api/usage.js | 25 +++ web-react/public/doc-code/auth/index.js | 43 ++++ .../system/doc/back-end/database/index.jsx | 7 + .../doc/back-end/database/migrations.jsx | 83 +++++++ .../src/pages/system/doc/back-end/index.jsx | 126 +++++++++++ .../pages/system/doc/front-end/api/index.jsx | 14 ++ .../system/doc/front-end/api/setting.jsx | 26 +++ .../pages/system/doc/front-end/api/usage.jsx | 17 ++ .../pages/system/doc/front-end/auth/index.jsx | 27 +++ .../src/pages/system/doc/front-end/index.jsx | 205 ++++++++++++++++++ .../system/doc/front-end/window/close.jsx | 21 ++ .../system/doc/front-end/window/index.jsx | 28 +++ .../system/doc/front-end/window/open.jsx | 80 +++++++ .../system/doc/front-end/window/reload.jsx | 21 ++ .../src/pages/system/doc/highlighter.jsx | 74 +++++++ web-react/src/pages/system/doc/index.jsx | 80 +++++++ web-react/yarn.lock | 147 ++++++++++++- 19 files changed, 1038 insertions(+), 1 deletion(-) create mode 100644 web-react/public/doc-code/api/setting.js create mode 100644 web-react/public/doc-code/api/usage.js create mode 100644 web-react/public/doc-code/auth/index.js create mode 100644 web-react/src/pages/system/doc/back-end/database/index.jsx create mode 100644 web-react/src/pages/system/doc/back-end/database/migrations.jsx create mode 100644 web-react/src/pages/system/doc/back-end/index.jsx create mode 100644 web-react/src/pages/system/doc/front-end/api/index.jsx create mode 100644 web-react/src/pages/system/doc/front-end/api/setting.jsx create mode 100644 web-react/src/pages/system/doc/front-end/api/usage.jsx create mode 100644 web-react/src/pages/system/doc/front-end/auth/index.jsx create mode 100644 web-react/src/pages/system/doc/front-end/index.jsx create mode 100644 web-react/src/pages/system/doc/front-end/window/close.jsx create mode 100644 web-react/src/pages/system/doc/front-end/window/index.jsx create mode 100644 web-react/src/pages/system/doc/front-end/window/open.jsx create mode 100644 web-react/src/pages/system/doc/front-end/window/reload.jsx create mode 100644 web-react/src/pages/system/doc/highlighter.jsx create mode 100644 web-react/src/pages/system/doc/index.jsx diff --git a/web-react/package.json b/web-react/package.json index e486365..73a3d85 100644 --- a/web-react/package.json +++ b/web-react/package.json @@ -29,6 +29,7 @@ "react-router": "^5.2.0", "react-router-dom": "^5.2.0", "react-scripts": "4.0.3", + "react-syntax-highlighter": "^15.4.3", "redux": "^4.1.0", "swiper": "^6.7.0", "web-vitals": "^1.0.1" diff --git a/web-react/public/doc-code/api/setting.js b/web-react/public/doc-code/api/setting.js new file mode 100644 index 0000000..5b2740e --- /dev/null +++ b/web-react/public/doc-code/api/setting.js @@ -0,0 +1,14 @@ +export default { + /* 自定义的接口名称 */ + apiName: [ + /* 接口地址 */ + url, + /* 请求类型 [get | post] */ + 'get', + /* axios所需的设置参数 */ + options, + ], + + /* 默认为get接口 */ + apiPostName: getUrl +} \ No newline at end of file diff --git a/web-react/public/doc-code/api/usage.js b/web-react/public/doc-code/api/usage.js new file mode 100644 index 0000000..f2bc671 --- /dev/null +++ b/web-react/public/doc-code/api/usage.js @@ -0,0 +1,25 @@ +import { api } from 'common/api' + +api.apiName(params) + .then(res => { + /* ... */ + }) + .catch(error => { + /* catch */ + }) + .finally(() => { + /* finally */ + }) + + +// 或者采用异步 +async function foo() { + try { + const res = await api.apiName(params) + /* ... */ + } catch (error) { + /* catch */ + } finally { + /* finally */ + } +} \ No newline at end of file diff --git a/web-react/public/doc-code/auth/index.js b/web-react/public/doc-code/auth/index.js new file mode 100644 index 0000000..a418d08 --- /dev/null +++ b/web-react/public/doc-code/auth/index.js @@ -0,0 +1,43 @@ +import { Auth } from 'components' +import auth from 'components/authorized/handler' + +/** + * 简单的权限标识 + */ +function foo1() { + return + 连接 + +} + +/** + * 多个并且关系的权限标识 + */ +function foo2() { + return + 连接 + +} + +/** + * 多个或者关系的权限标识 + */ +function foo3() { + return + 连接 + +} + +/** + * 前缀简化 + */ +function foo4() { + return + 连接 + +} + +/** + * 纯js + */ +const flag = auth('permissions:name') // => Boolean \ No newline at end of file diff --git a/web-react/src/pages/system/doc/back-end/database/index.jsx b/web-react/src/pages/system/doc/back-end/database/index.jsx new file mode 100644 index 0000000..5d095ca --- /dev/null +++ b/web-react/src/pages/system/doc/back-end/database/index.jsx @@ -0,0 +1,7 @@ +import React, { Component } from 'react' + +export default class index extends Component { + render() { + return
+ } +} diff --git a/web-react/src/pages/system/doc/back-end/database/migrations.jsx b/web-react/src/pages/system/doc/back-end/database/migrations.jsx new file mode 100644 index 0000000..56e55bc --- /dev/null +++ b/web-react/src/pages/system/doc/back-end/database/migrations.jsx @@ -0,0 +1,83 @@ +import React, { Component } from 'react' +import { Breadcrumb, Space, Tag, Typography } from 'antd' +import Highlighter from 'pages/system/doc/highlighter' + +const { Title, Text } = Typography + +export default class migrations extends Component { + render() { + return ( + + 在建立或修改了实体类之后,可以将实体类更新到数据库。 + + 在Visual Studio中选择 + + 工具 + NuGet 包管理器 + 程序包管理控制台 + + 之后在打开的程序包管理控制台中,默认项目选择 + + Ewide.Database.Migrations + + ,并在控制台中输入命令。 + + 生成迁移文件 + + 其中 + +

更新迁移到数据库

+ + 在确保 + + Ewide.Database.Migrations + + 中已经生成迁移文件之后,可以运行更新命令。 + + + 其中 +
    +
  • +

    + update-database是固定的命令。 +

    +
  • +
  • +

    + -context是固定的参数。 +

    +
  • +
  • +

    + 'DefaultDbContext'是对应的DbContext。 +

    +
  • +
+
+ ) + } +} diff --git a/web-react/src/pages/system/doc/back-end/index.jsx b/web-react/src/pages/system/doc/back-end/index.jsx new file mode 100644 index 0000000..f8a493e --- /dev/null +++ b/web-react/src/pages/system/doc/back-end/index.jsx @@ -0,0 +1,126 @@ +import React, { Component } from 'react' +import { Anchor, Card, Col, Row, Typography } from 'antd' +import { Container } from 'components' +import Database from './database' +import DatabaseMigrations from './database/migrations' + +const docs = [ + { + title: '数据库', + component: Database, + children: [ + { + title: '实体(N)', + }, + { + title: '迁移', + component: DatabaseMigrations, + }, + ], + }, +] + +export default class index extends Component { + container = window + + setContainer = container => { + this.container = (container || { parentNode: window }).parentNode + } + + render() { + return ( +
+ + + + + + + + + + + + + + +
+ + + {docs.map((item, i) => ( + + +
+ + {item.title} + + {item.component && ( + + )} + {item.children && + item.children.map((citem, ci) => ( + +
+ + {citem.title} + + {citem.component && ( + + )} +
+
+
+ ))} +
+
+
+
+ ))} + + + this.container} + offsetTop={24} + onClick={e => e.preventDefault()} + > + {docs.map((item, i) => ( + + {item.children && + item.children.map((citem, ci) => ( + + ))} + + ))} + + +
+
+
+
+ ) + } +} diff --git a/web-react/src/pages/system/doc/front-end/api/index.jsx b/web-react/src/pages/system/doc/front-end/api/index.jsx new file mode 100644 index 0000000..98d40ae --- /dev/null +++ b/web-react/src/pages/system/doc/front-end/api/index.jsx @@ -0,0 +1,14 @@ +import React, { Component } from 'react' +import { Space, Typography } from 'antd' + +const { Text } = Typography + +export default class index extends Component { + render() { + return ( + + 在本框架中,只需要进行简单的接口配置,就可以实现调用。 + + ) + } +} diff --git a/web-react/src/pages/system/doc/front-end/api/setting.jsx b/web-react/src/pages/system/doc/front-end/api/setting.jsx new file mode 100644 index 0000000..7b7f179 --- /dev/null +++ b/web-react/src/pages/system/doc/front-end/api/setting.jsx @@ -0,0 +1,26 @@ +import React, { Component } from 'react' +import { Space, Tag, Typography } from 'antd' +import Highlighter from 'pages/system/doc/highlighter' + +const { Text } = Typography + +export default class setting extends Component { + render() { + return ( + + + 维护接口地址在 + + /src/common/api/requests + + 中,通过每个子目录的 + + index.js + + 引入 + + + + ) + } +} diff --git a/web-react/src/pages/system/doc/front-end/api/usage.jsx b/web-react/src/pages/system/doc/front-end/api/usage.jsx new file mode 100644 index 0000000..3f5cb04 --- /dev/null +++ b/web-react/src/pages/system/doc/front-end/api/usage.jsx @@ -0,0 +1,17 @@ +import React, { Component } from 'react' +import { Space, Typography } from 'antd' +import Highlighter from 'pages/system/doc/highlighter' + +const { Text } = Typography + +export default class usage extends Component { + render() { + return ( + + 调用时需先引入。 + 接口的函数名对应到上面配置的接口名称即可。 + + + ) + } +} diff --git a/web-react/src/pages/system/doc/front-end/auth/index.jsx b/web-react/src/pages/system/doc/front-end/auth/index.jsx new file mode 100644 index 0000000..55cd071 --- /dev/null +++ b/web-react/src/pages/system/doc/front-end/auth/index.jsx @@ -0,0 +1,27 @@ +import React, { Component } from 'react' +import { Space, Tag, Typography } from 'antd' +import Highlighter from 'pages/system/doc/highlighter' + +const { Text } = Typography + +export default class index extends Component { + render() { + return ( + + + 在不少业务组件中,时常需要做到权限控制一些按钮的显示隐藏。如果只使用样式来隐藏按钮,是不安全的。 + + 所以在本框架中,推荐将按钮用全局的权限组件包裹来控制是否渲染。 + + + 权限标识会读取全局用户信息中的 + + permissions + + 进行比对。 + + 权限组件插槽内的可以是任何元素,只要不符合条件,将不会渲染。 + + ) + } +} diff --git a/web-react/src/pages/system/doc/front-end/index.jsx b/web-react/src/pages/system/doc/front-end/index.jsx new file mode 100644 index 0000000..52c373e --- /dev/null +++ b/web-react/src/pages/system/doc/front-end/index.jsx @@ -0,0 +1,205 @@ +import React, { Component } from 'react' +import { Anchor, Card, Col, Row, Typography } from 'antd' +import { Container } from 'components' + +import Window from './window' +import WindowOpen from './window/open' +import WindowClose from './window/close' +import WindowReload from './window/reload' + +import Api from './api' +import ApiSetting from './api/setting' +import ApiUsage from './api/usage' + +import Auth from './auth/index.jsx' + +const docs = [ + { + title: '窗口', + component: Window, + children: [ + { + title: '打开窗口', + component: WindowOpen, + }, + { + title: '关闭窗口', + component: WindowClose, + }, + { + title: '重新加载窗口', + component: WindowReload, + }, + ], + }, + { + title: '接口', + component: Api, + children: [ + { + title: '配置', + component: ApiSetting, + }, + { + title: '调用', + component: ApiUsage, + }, + ], + }, + { + title: '权限渲染', + component: Auth, + }, + { + title: '工具', + }, +] + +export default class index extends Component { + container = window + + setContainer = container => { + this.container = (container || { parentNode: window }).parentNode + } + + render() { + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + {docs.map((item, i) => ( + + +
+ + {item.title} + + {item.component && ( + + )} + {item.children && + item.children.map((citem, ci) => ( + +
+ + {citem.title} + + {citem.component && ( + + )} +
+
+
+ ))} +
+
+
+
+ ))} + + + this.container} + offsetTop={24} + onClick={e => e.preventDefault()} + > + {docs.map((item, i) => ( + + {item.children && + item.children.map((citem, ci) => ( + + ))} + + ))} + + +
+
+
+
+ ) + } +} diff --git a/web-react/src/pages/system/doc/front-end/window/close.jsx b/web-react/src/pages/system/doc/front-end/window/close.jsx new file mode 100644 index 0000000..ff865d2 --- /dev/null +++ b/web-react/src/pages/system/doc/front-end/window/close.jsx @@ -0,0 +1,21 @@ +import React, { Component } from 'react' +import { Space, Tag, Typography } from 'antd' +import Highlighter from 'pages/system/doc/highlighter' + +const { Title, Text } = Typography + +export default class close extends Component { + render() { + return ( + + 可调用全局方法关闭窗口 + + + + String | Number + 非必传参数。指定关闭窗口的键。如果未指定键,则关闭当前选中的窗口。 + + + ) + } +} diff --git a/web-react/src/pages/system/doc/front-end/window/index.jsx b/web-react/src/pages/system/doc/front-end/window/index.jsx new file mode 100644 index 0000000..ebc80db --- /dev/null +++ b/web-react/src/pages/system/doc/front-end/window/index.jsx @@ -0,0 +1,28 @@ +import React, { Component } from 'react' +import { Space, Tag, Typography } from 'antd' + +const { Text } = Typography + +export default class index extends Component { + render() { + return ( + + + 本框架是以 + 页签 + 形式打开业务组件(一般意义上的页面)。当然其中也有使用到路由,但只用于登录与主页的跳转。 + + + 所有业务组件都放置于 + + /src/pages + + 目录下,打开窗口时默认只读取该目录下的组件。 + + + 目前已对打开和关闭窗口的方法进行了全局化处理,可以在任何组件内轻松地使用。 + + + ) + } +} diff --git a/web-react/src/pages/system/doc/front-end/window/open.jsx b/web-react/src/pages/system/doc/front-end/window/open.jsx new file mode 100644 index 0000000..43b9651 --- /dev/null +++ b/web-react/src/pages/system/doc/front-end/window/open.jsx @@ -0,0 +1,80 @@ +import React, { Component } from 'react' +import { Space, Tag, Typography } from 'antd' +import Highlighter from 'pages/system/doc/highlighter' + +const { Title, Text } = Typography + +export default class open extends Component { + render() { + return ( + + 可调用全局方法打开窗口 + + 配置 + + 通过菜单名打开窗口 + + + ) + } +} diff --git a/web-react/src/pages/system/doc/front-end/window/reload.jsx b/web-react/src/pages/system/doc/front-end/window/reload.jsx new file mode 100644 index 0000000..add4e72 --- /dev/null +++ b/web-react/src/pages/system/doc/front-end/window/reload.jsx @@ -0,0 +1,21 @@ +import React, { Component } from 'react' +import { Space, Tag, Typography } from 'antd' +import Highlighter from 'pages/system/doc/highlighter' + +const { Title, Text } = Typography + +export default class reload extends Component { + render() { + return ( + + 可调用全局方法刷新窗口 + + + + String | Number + 非必传参数。指定刷新窗口的键。如果未指定键,则刷新当前选中的窗口。 + + + ) + } +} diff --git a/web-react/src/pages/system/doc/highlighter.jsx b/web-react/src/pages/system/doc/highlighter.jsx new file mode 100644 index 0000000..5c58387 --- /dev/null +++ b/web-react/src/pages/system/doc/highlighter.jsx @@ -0,0 +1,74 @@ +import React, { Component } from 'react' +import { Button, message as Message, Space } from 'antd' +import SyntaxHighlighter from 'react-syntax-highlighter' +import { tomorrowNightEighties } from 'react-syntax-highlighter/dist/esm/styles/hljs' + +const baseCopy = content => { + try { + const $textarea = document.createElement('textarea') + $textarea.style = 'opacity: 0;position: fixed;top: -10000;left: -10000' + document.body.append($textarea) + $textarea.value = content + $textarea.select() + document.execCommand('copy') + $textarea.remove() + Message.success('已复制到剪贴板') + } catch { + Message.error('复制失败') + } +} + +const copy = code => { + baseCopy(code) +} + +const copyTemplate = code => { + code = + '"' + + code + // 转义双引号 => \" + .replace(/"/g, '\\"') + // 转义$ => $$ + .replace(/\$/g, '$$$$') + // 替换行首 => " + .replace(/\n/g, '"') + // 替换行末 = ", + .replace(/\r/g, '",\r') + + '"' + let flag = true + while (flag) { + const p = code.match(/\$\${.*?}/) + if (p && p[0]) { + code = code.replace(p[0], `$\{${p[0].slice(1)}}`) + } else { + flag = false + } + } + baseCopy(code) +} + +export default class highlighter extends Component { + render() { + const { code, copyTemplate } = this.props + + return ( +
+ + {code} + +
+ + {copyTemplate && ( + + )} + + +
+
+ ) + } +} diff --git a/web-react/src/pages/system/doc/index.jsx b/web-react/src/pages/system/doc/index.jsx new file mode 100644 index 0000000..4616007 --- /dev/null +++ b/web-react/src/pages/system/doc/index.jsx @@ -0,0 +1,80 @@ +import React, { Component } from 'react' +import { Tabs } from 'antd' +import BackEnd from './back-end' +import FrontEnd from './front-end' + +const tabs = [ + { + title: '后端', + component: BackEnd, + }, + { + title: '前端', + component: FrontEnd, + }, +] + +export default class index extends Component { + state = { + activeKey: '0', + } + + codes = {} + + constructor(props) { + super(props) + + // 读取doc-code下所有文件内容 + const files = require.context( + '../../../../public/doc-code', + true, + /\.(js|jsx|html|vue|css|less|json|cs)(\?.*)?$/ + ) + const codes = {} + files.keys().forEach(p => { + const filepath = p.slice(2) + const xhr = new XMLHttpRequest() + xhr.open('GET', `./doc-code/${filepath}`, false) + xhr.overrideMimeType('text/plain;charset=utf-8') + xhr.send(null) + codes[filepath] = xhr.responseText + }) + + console.log(codes) + + this.codes = codes + } + + render() { + const { activeKey } = this.state + + return ( +
+
+
+ this.setState({ activeKey })} centered> + {tabs.map((item, i) => ( + + ))} + +
+ {tabs.map((item, i) => ( +
+ +
+ ))} +
+
+
+
+ ) + } +} diff --git a/web-react/yarn.lock b/web-react/yarn.lock index a636c28..62a4ffc 100644 --- a/web-react/yarn.lock +++ b/web-react/yarn.lock @@ -1191,7 +1191,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.3.1": version "7.14.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.6.tgz#535203bc0892efc7dec60bdc27b2ecf6e409062d" integrity sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg== @@ -1827,6 +1827,13 @@ dependencies: "@types/node" "*" +"@types/hast@^2.0.0": + version "2.3.2" + resolved "https://registry.nlark.com/@types/hast/download/@types/hast-2.3.2.tgz#236201acca9e2695e42f713d7dd4f151dc2982e4" + integrity sha1-I2IBrMqeJpXkL3E9fdTxUdwpguQ= + dependencies: + "@types/unist" "*" + "@types/html-minifier-terser@^5.0.0": version "5.1.1" resolved "https://registry.nlark.com/@types/html-minifier-terser/download/@types/html-minifier-terser-5.1.1.tgz?cache=0&sync_timestamp=1621241343144&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fhtml-minifier-terser%2Fdownload%2F%40types%2Fhtml-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" @@ -1935,6 +1942,11 @@ dependencies: source-map "^0.6.1" +"@types/unist@*": + version "2.0.5" + resolved "https://registry.nlark.com/@types/unist/download/@types/unist-2.0.5.tgz#fdd299f23205c3455af88ce618dd65c14cb73e22" + integrity sha1-/dKZ8jIFw0Va+IzmGN1lwUy3PiI= + "@types/webpack-sources@*": version "2.1.0" resolved "https://registry.nlark.com/@types/webpack-sources/download/@types/webpack-sources-2.1.0.tgz?cache=0&sync_timestamp=1621243863278&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fwebpack-sources%2Fdownload%2F%40types%2Fwebpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" @@ -3345,6 +3357,21 @@ char-regex@^1.0.2: resolved "https://registry.nlark.com/char-regex/download/char-regex-1.0.2.tgz?cache=0&sync_timestamp=1622809103243&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchar-regex%2Fdownload%2Fchar-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha1-10Q1giYhf5ge1Y9Hmx1rzClUXc8= +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.npm.taobao.org/character-entities-legacy/download/character-entities-legacy-1.1.4.tgz?cache=0&sync_timestamp=1615373299115&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcharacter-entities-legacy%2Fdownload%2Fcharacter-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + integrity sha1-lLwYRdznClu50uzHSHJWYSk9j8E= + +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.nlark.com/character-entities/download/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + integrity sha1-4Sw5Obfq9OWxXnrUxeKOHUjFsWs= + +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.npm.taobao.org/character-reference-invalid/download/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + integrity sha1-CDMpzaDq4nKrPbvzfpo4LBOvFWA= + check-types@^11.1.1: version "11.1.2" resolved "https://registry.npm.taobao.org/check-types/download/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f" @@ -3546,6 +3573,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +comma-separated-tokens@^1.0.0: + version "1.0.8" + resolved "https://registry.nlark.com/comma-separated-tokens/download/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" + integrity sha1-YyuAthF4Z6FY8QgK1Jiy++fj9eo= + commander@^2.20.0: version "2.20.3" resolved "https://registry.nlark.com/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1622954303803&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -5176,6 +5208,13 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +fault@^1.0.0: + version "1.0.4" + resolved "https://registry.npm.taobao.org/fault/download/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" + integrity sha1-6vz8Cm0hT8lGAeFw3ymVSk+ELxM= + dependencies: + format "^0.2.0" + faye-websocket@^0.11.3: version "0.11.4" resolved "https://registry.nlark.com/faye-websocket/download/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" @@ -5394,6 +5433,11 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +format@^0.2.0: + version "0.2.2" + resolved "https://registry.npm.taobao.org/format/download/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" + integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= + forwarded@0.2.0: version "0.2.0" resolved "https://registry.nlark.com/forwarded/download/forwarded-0.2.0.tgz?cache=0&sync_timestamp=1622503508967&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fforwarded%2Fdownload%2Fforwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -5733,6 +5777,22 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hast-util-parse-selector@^2.0.0: + version "2.2.5" + resolved "https://registry.nlark.com/hast-util-parse-selector/download/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" + integrity sha1-1Xwj9NoWrjxjs7bKRhZoMxNJnDo= + +hastscript@^6.0.0: + version "6.0.0" + resolved "https://registry.nlark.com/hastscript/download/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" + integrity sha1-6HaNfqxWw/3qyKkoMNWOgR5b9kA= + dependencies: + "@types/hast" "^2.0.0" + comma-separated-tokens "^1.0.0" + hast-util-parse-selector "^2.0.0" + property-information "^5.0.0" + space-separated-tokens "^1.0.0" + he@^1.2.0: version "1.2.0" resolved "https://registry.nlark.com/he/download/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -5743,6 +5803,11 @@ hex-color-regex@^1.1.0: resolved "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4= +highlight.js@^10.4.1, highlight.js@~10.7.0: + version "10.7.3" + resolved "https://registry.nlark.com/highlight.js/download/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" + integrity sha1-aXJy45kTVuQMPKxWanTu9oF1ZTE= + history@^4.9.0: version "4.10.1" resolved "https://registry.nlark.com/history/download/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" @@ -6169,6 +6234,19 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.npm.taobao.org/is-alphabetical/download/is-alphabetical-1.0.4.tgz?cache=0&sync_timestamp=1615453703061&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-alphabetical%2Fdownload%2Fis-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + integrity sha1-nn1rlJFr4iFTdF0YTCmMv5hqaG0= + +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.nlark.com/is-alphanumerical/download/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + integrity sha1-frmiQx+FX2se8aeOMm31FWlsTb8= + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-arguments@^1.0.4: version "1.1.0" resolved "https://registry.npm.taobao.org/is-arguments/download/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" @@ -6267,6 +6345,11 @@ is-date-object@^1.0.1: resolved "https://registry.nlark.com/is-date-object/download/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" integrity sha1-VQz8wDr62gXuo90wmBx7CVUfc+U= +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.npm.taobao.org/is-decimal/download/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + integrity sha1-ZaOllYocW2OnBuGzM9fNn2MNP6U= + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.nlark.com/is-descriptor/download/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -6341,6 +6424,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.npm.taobao.org/is-hexadecimal/download/is-hexadecimal-1.0.4.tgz?cache=0&sync_timestamp=1615464641587&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-hexadecimal%2Fdownload%2Fis-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + integrity sha1-zDXJdYjaS9Saju3WvECC1E3LI6c= + is-module@^1.0.0: version "1.0.0" resolved "https://registry.npm.taobao.org/is-module/download/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" @@ -7398,6 +7486,14 @@ lower-case@^2.0.2: dependencies: tslib "^2.0.3" +lowlight@^1.17.0: + version "1.20.0" + resolved "https://registry.nlark.com/lowlight/download/lowlight-1.20.0.tgz#ddb197d33462ad0d93bf19d17b6c301aa3941888" + integrity sha1-3bGX0zRirQ2TvxnRe2wwGqOUGIg= + dependencies: + fault "^1.0.0" + highlight.js "~10.7.0" + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -8304,6 +8400,18 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/parse-entities/download/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + integrity sha1-U8brW5MUofTsmfoP33zgHs2gy+g= + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.nlark.com/parse-json/download/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -9235,6 +9343,11 @@ pretty-format@^26.0.0, pretty-format@^26.6.0, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" +prismjs@^1.22.0, prismjs@~1.24.0: + version "1.24.1" + resolved "https://registry.nlark.com/prismjs/download/prismjs-1.24.1.tgz#c4d7895c4d6500289482fa8936d9cdd192684036" + integrity sha1-xNeJXE1lACiUgvqJNtnN0ZJoQDY= + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -9294,6 +9407,13 @@ prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" +property-information@^5.0.0: + version "5.6.0" + resolved "https://registry.nlark.com/property-information/download/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" + integrity sha1-YWdVRfsjAC8kXGVA7EYHfU2j7Wk= + dependencies: + xtend "^4.0.0" + proxy-addr@~2.0.5: version "2.0.7" resolved "https://registry.nlark.com/proxy-addr/download/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -10017,6 +10137,17 @@ react-scripts@4.0.3: optionalDependencies: fsevents "^2.1.3" +react-syntax-highlighter@^15.4.3: + version "15.4.3" + resolved "https://registry.npm.taobao.org/react-syntax-highlighter/download/react-syntax-highlighter-15.4.3.tgz#fffe3286677ac470b963b364916d16374996f3a6" + integrity sha1-//4yhmd6xHC5Y7NkkW0WN0mW86Y= + dependencies: + "@babel/runtime" "^7.3.1" + highlight.js "^10.4.1" + lowlight "^1.17.0" + prismjs "^1.22.0" + refractor "^3.2.0" + react-textarea-autosize@^8.3.2: version "8.3.3" resolved "https://registry.nlark.com/react-textarea-autosize/download/react-textarea-autosize-8.3.3.tgz?cache=0&sync_timestamp=1622628433420&other_urls=https%3A%2F%2Fregistry.nlark.com%2Freact-textarea-autosize%2Fdownload%2Freact-textarea-autosize-8.3.3.tgz#f70913945369da453fd554c168f6baacd1fa04d8" @@ -10137,6 +10268,15 @@ redux@^4.1.0: dependencies: "@babel/runtime" "^7.9.2" +refractor@^3.2.0: + version "3.4.0" + resolved "https://registry.nlark.com/refractor/download/refractor-3.4.0.tgz#62bd274b06c942041f390c371b676eb67cb0a678" + integrity sha1-Yr0nSwbJQgQfOQw3G2dutnywpng= + dependencies: + hastscript "^6.0.0" + parse-entities "^2.0.0" + prismjs "~1.24.0" + regenerate-unicode-properties@^8.2.0: version "8.2.0" resolved "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" @@ -10904,6 +11044,11 @@ sourcemap-codec@^1.4.4: resolved "https://registry.npm.taobao.org/sourcemap-codec/download/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha1-6oBL2UhXQC5pktBaOO8a41qatMQ= +space-separated-tokens@^1.0.0: + version "1.1.5" + resolved "https://registry.nlark.com/space-separated-tokens/download/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" + integrity sha1-hfMsPRDZaCAH6RdBTdxcJtGqaJk= + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"