feat: login
This commit is contained in:
parent
24b8b4c91d
commit
6dcc4753ae
|
@ -9,7 +9,7 @@ function App() {
|
||||||
return (
|
return (
|
||||||
<AntDesignConfigProvider locale={zhCN}>
|
<AntDesignConfigProvider locale={zhCN}>
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route key={"login"} path={"/login"} element={<Login />} />
|
<Route index key={"login"} path={"/"} element={<Login />} />
|
||||||
<Route key={"dash"} path={"/*"} element={<Layout />} />
|
<Route key={"dash"} path={"/*"} element={<Layout />} />
|
||||||
<Route path="*" element={<span>404</span>} />
|
<Route path="*" element={<span>404</span>} />
|
||||||
</Routes>
|
</Routes>
|
||||||
|
|
|
@ -18,3 +18,8 @@ export interface ICreateCourseRequest extends ICourseBasic {
|
||||||
course_chapterList: [];
|
course_chapterList: [];
|
||||||
course_guide: {};
|
course_guide: {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface IAdminLogin {
|
||||||
|
username: string;
|
||||||
|
password: string;
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import R from "./request";
|
import R from "./request";
|
||||||
import P from "./process";
|
import P from "./process";
|
||||||
import { ICreateCourseRequest, IgetVodRequest } from "./dto";
|
import { IAdminLogin, ICreateCourseRequest, IgetVodRequest } from "./dto";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 腾讯vod媒资
|
* 腾讯vod媒资
|
||||||
|
@ -10,3 +10,6 @@ export const getVod = (p: IgetVodRequest) =>
|
||||||
|
|
||||||
export const createCourse = (p: ICreateCourseRequest) =>
|
export const createCourse = (p: ICreateCourseRequest) =>
|
||||||
R.post("/api/course/create", { ...p });
|
R.post("/api/course/create", { ...p });
|
||||||
|
|
||||||
|
export const adminLogin = (p: IAdminLogin) =>
|
||||||
|
R.post("/api/admin/user/auth", { ...p });
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import React, { useEffect } from "react";
|
import React, { useEffect } from "react";
|
||||||
import { useLocation } from "react-router-dom";
|
import { useLocation, useNavigate } from "react-router-dom";
|
||||||
|
import Cookie from "js-cookie";
|
||||||
|
|
||||||
interface IGuardProps {
|
interface IGuardProps {
|
||||||
children: JSX.Element;
|
children: JSX.Element;
|
||||||
|
@ -7,9 +8,11 @@ interface IGuardProps {
|
||||||
|
|
||||||
export const Guard = (props: IGuardProps) => {
|
export const Guard = (props: IGuardProps) => {
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
|
const navigate = useNavigate();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
console.log("location.pathname changed 拦截", location.pathname);
|
const sign = Cookie.get("_sign_admin");
|
||||||
|
if (!sign) navigate("/");
|
||||||
}, [location.pathname]);
|
}, [location.pathname]);
|
||||||
|
|
||||||
return props.children;
|
return props.children;
|
||||||
|
|
|
@ -11,7 +11,7 @@ interface IRoute extends IRouteMenuItem {
|
||||||
|
|
||||||
export const navRoutes: IRoute[] = [
|
export const navRoutes: IRoute[] = [
|
||||||
{
|
{
|
||||||
path: "/",
|
path: "/overview",
|
||||||
element: lazy(() => import("../view/Overview")),
|
element: lazy(() => import("../view/Overview")),
|
||||||
name: "总览",
|
name: "总览",
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,12 +1,5 @@
|
||||||
#root {
|
#root {
|
||||||
background-image: linear-gradient(
|
background: #f5f5f5;
|
||||||
to right,
|
|
||||||
#e95659,
|
|
||||||
#e15084,
|
|
||||||
#c55aaa,
|
|
||||||
#976bc4,
|
|
||||||
#5678ce
|
|
||||||
);
|
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,21 @@
|
||||||
import { Button, Checkbox, Form, Input } from "antd";
|
import { Button, Checkbox, Form, Input, message } from "antd";
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
|
import { adminLogin } from "../../api";
|
||||||
import "./index.less";
|
import "./index.less";
|
||||||
|
|
||||||
const Login = () => {
|
const Login = () => {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
const onFinish = (values: any) => {
|
const onFinish = (values: any) => {
|
||||||
console.log("Success:", values);
|
adminLogin(values).then((res: any) => {
|
||||||
navigate("/");
|
const { code } = res;
|
||||||
|
if (code == 10000) {
|
||||||
|
message.success("登录成功");
|
||||||
|
navigate("/overview");
|
||||||
|
} else {
|
||||||
|
message.error(res.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -51,10 +59,6 @@ const Login = () => {
|
||||||
<Input.Password placeholder="密码" />
|
<Input.Password placeholder="密码" />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
||||||
<Form.Item name="remember" valuePropName="checked">
|
|
||||||
<Checkbox>记住我</Checkbox>
|
|
||||||
</Form.Item>
|
|
||||||
|
|
||||||
<Form.Item wrapperCol={{ span: 24 }}>
|
<Form.Item wrapperCol={{ span: 24 }}>
|
||||||
<Button type="primary" htmlType="submit" block>
|
<Button type="primary" htmlType="submit" block>
|
||||||
登录
|
登录
|
||||||
|
|
|
@ -4,4 +4,5 @@
|
||||||
export enum BizCode {
|
export enum BizCode {
|
||||||
OK = 10000,
|
OK = 10000,
|
||||||
ERROR = 20000,
|
ERROR = 20000,
|
||||||
|
AUTH = 40000,
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ import { join } from 'path';
|
||||||
import { DefaultErrorFilter } from './filter/default.filter';
|
import { DefaultErrorFilter } from './filter/default.filter';
|
||||||
import { NotFoundFilter } from './filter/notfound.filter';
|
import { NotFoundFilter } from './filter/notfound.filter';
|
||||||
import { ReportMiddleware } from './middleware/report.middleware';
|
import { ReportMiddleware } from './middleware/report.middleware';
|
||||||
import { LocalMiddleware } from './middleware/local.middleware';
|
import { AuthMiddleware } from './middleware/auth.middleware';
|
||||||
|
|
||||||
dotenv.config();
|
dotenv.config();
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ export class ContainerLifeCycle {
|
||||||
|
|
||||||
async onReady() {
|
async onReady() {
|
||||||
// add middleware
|
// add middleware
|
||||||
this.app.useMiddleware([ReportMiddleware, LocalMiddleware]);
|
this.app.useMiddleware([ReportMiddleware, AuthMiddleware]);
|
||||||
// add filter
|
// add filter
|
||||||
this.app.useFilter([NotFoundFilter, DefaultErrorFilter]);
|
this.app.useFilter([NotFoundFilter, DefaultErrorFilter]);
|
||||||
}
|
}
|
||||||
|
|
25
apps/server/src/controller/admin.controller.ts
Normal file
25
apps/server/src/controller/admin.controller.ts
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
import { Body, Controller, Inject, Post } from '@midwayjs/core';
|
||||||
|
import { Context } from '@midwayjs/koa';
|
||||||
|
import { BizCode } from '../biz/code';
|
||||||
|
import { createToken } from '../util/encrypt';
|
||||||
|
|
||||||
|
@Controller('/admin')
|
||||||
|
export class AdminController {
|
||||||
|
@Inject()
|
||||||
|
ctx: Context;
|
||||||
|
|
||||||
|
@Post('/user/auth')
|
||||||
|
async AdminAuth(@Body() params) {
|
||||||
|
const { username, password } = params as any;
|
||||||
|
const token = createToken({ login: true });
|
||||||
|
if (username === 'admin' && password === '123123') {
|
||||||
|
this.ctx.cookies.set('_sign_admin', token, {
|
||||||
|
expires: new Date(Date.now() + 10 * 60 * 1000),
|
||||||
|
httpOnly: false,
|
||||||
|
});
|
||||||
|
this.ctx.body = { code: BizCode.OK };
|
||||||
|
} else {
|
||||||
|
this.ctx.body = { code: BizCode.ERROR, msg: '用户名密码错误' };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
25
apps/server/src/middleware/auth.middleware.ts
Normal file
25
apps/server/src/middleware/auth.middleware.ts
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
import { Middleware, IMiddleware } from '@midwayjs/core';
|
||||||
|
import { NextFunction, Context } from '@midwayjs/koa';
|
||||||
|
// import { BizCode } from '../biz/code';
|
||||||
|
// import { decodeToken } from '../util/encrypt';
|
||||||
|
|
||||||
|
@Middleware()
|
||||||
|
export class AuthMiddleware implements IMiddleware<Context, NextFunction> {
|
||||||
|
resolve() {
|
||||||
|
return async (ctx: Context, next: NextFunction) => {
|
||||||
|
// const isAdminUrl = ctx.url;
|
||||||
|
// console.log('isAdminUrl', isAdminUrl);
|
||||||
|
// if (isAdminUrl) {
|
||||||
|
// const signToken = ctx.cookies.get('_sign_admin');
|
||||||
|
// const { login } = decodeToken(signToken);
|
||||||
|
// if (!login) return { code: BizCode.AUTH };
|
||||||
|
// }
|
||||||
|
|
||||||
|
await next();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
static getName(): string {
|
||||||
|
return 'auth';
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,21 +0,0 @@
|
||||||
import { Middleware, IMiddleware } from '@midwayjs/core';
|
|
||||||
import { NextFunction, Context } from '@midwayjs/koa';
|
|
||||||
|
|
||||||
const locals = {
|
|
||||||
assets: 'public/',
|
|
||||||
version: Date.now(),
|
|
||||||
};
|
|
||||||
|
|
||||||
@Middleware()
|
|
||||||
export class LocalMiddleware implements IMiddleware<Context, NextFunction> {
|
|
||||||
resolve() {
|
|
||||||
return async (ctx: Context, next: NextFunction) => {
|
|
||||||
ctx.locals = locals;
|
|
||||||
await next();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
static getName(): string {
|
|
||||||
return 'local';
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -17,8 +17,7 @@
|
||||||
"@ricons/fluent": "0.12.0",
|
"@ricons/fluent": "0.12.0",
|
||||||
"@ricons/utils": "0.1.6",
|
"@ricons/utils": "0.1.6",
|
||||||
"dplayer": "1.27.1",
|
"dplayer": "1.27.1",
|
||||||
"highlight.js": "11.7.0",
|
"highlight.js": "11.7.0"
|
||||||
"js-cookie": "3.0.1"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/react": "^18.0.27",
|
"@types/react": "^18.0.27",
|
||||||
|
@ -28,7 +27,6 @@
|
||||||
"vite-tsconfig-paths": "4.0.5",
|
"vite-tsconfig-paths": "4.0.5",
|
||||||
"typescript": "^4.9.3",
|
"typescript": "^4.9.3",
|
||||||
"vite": "^4.1.0",
|
"vite": "^4.1.0",
|
||||||
"@types/dplayer": "1.25.2",
|
"@types/dplayer": "1.25.2"
|
||||||
"@types/js-cookie": "3.0.3"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -49,11 +49,13 @@
|
||||||
"@babel/core": "7.21.0",
|
"@babel/core": "7.21.0",
|
||||||
"rollup-plugin-dts": "5.2.0",
|
"rollup-plugin-dts": "5.2.0",
|
||||||
"axios": "1.3.4",
|
"axios": "1.3.4",
|
||||||
"dayjs": "1.11.7"
|
"dayjs": "1.11.7",
|
||||||
|
"@types/js-cookie": "3.0.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"object-hash": "^3.0.0",
|
"object-hash": "^3.0.0",
|
||||||
"vditor": "3.9.0",
|
"vditor": "3.9.0",
|
||||||
"zustand": "4.3.6"
|
"zustand": "4.3.6",
|
||||||
|
"js-cookie": "3.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
111
pnpm-lock.yaml
111
pnpm-lock.yaml
|
@ -11,6 +11,7 @@ importers:
|
||||||
'@rollup/plugin-node-resolve': 15.0.1
|
'@rollup/plugin-node-resolve': 15.0.1
|
||||||
'@rollup/plugin-terser': 0.4.0
|
'@rollup/plugin-terser': 0.4.0
|
||||||
'@rollup/plugin-typescript': 11.0.0
|
'@rollup/plugin-typescript': 11.0.0
|
||||||
|
'@types/js-cookie': 3.0.3
|
||||||
'@types/node': ^18.13.0
|
'@types/node': ^18.13.0
|
||||||
autoprefixer: 10.4.13
|
autoprefixer: 10.4.13
|
||||||
axios: 1.3.4
|
axios: 1.3.4
|
||||||
|
@ -21,6 +22,7 @@ importers:
|
||||||
css-loader: 6.7.3
|
css-loader: 6.7.3
|
||||||
dayjs: 1.11.7
|
dayjs: 1.11.7
|
||||||
inquirer: 8.0.0
|
inquirer: 8.0.0
|
||||||
|
js-cookie: 3.0.1
|
||||||
less: 3.8.0
|
less: 3.8.0
|
||||||
less-loader: 4.1.0
|
less-loader: 4.1.0
|
||||||
mini-css-extract-plugin: 2.7.2
|
mini-css-extract-plugin: 2.7.2
|
||||||
|
@ -46,6 +48,7 @@ importers:
|
||||||
webpack-cli: ^5.0.1
|
webpack-cli: ^5.0.1
|
||||||
zustand: 4.3.6
|
zustand: 4.3.6
|
||||||
dependencies:
|
dependencies:
|
||||||
|
js-cookie: 3.0.1
|
||||||
object-hash: registry.npmmirror.com/object-hash/3.0.0
|
object-hash: registry.npmmirror.com/object-hash/3.0.0
|
||||||
vditor: registry.npmmirror.com/vditor/3.9.0
|
vditor: registry.npmmirror.com/vditor/3.9.0
|
||||||
zustand: registry.npmmirror.com/zustand/4.3.6
|
zustand: registry.npmmirror.com/zustand/4.3.6
|
||||||
|
@ -57,6 +60,7 @@ importers:
|
||||||
'@rollup/plugin-node-resolve': registry.npmmirror.com/@rollup/plugin-node-resolve/15.0.1_rollup@3.17.2
|
'@rollup/plugin-node-resolve': registry.npmmirror.com/@rollup/plugin-node-resolve/15.0.1_rollup@3.17.2
|
||||||
'@rollup/plugin-terser': registry.npmmirror.com/@rollup/plugin-terser/0.4.0_rollup@3.17.2
|
'@rollup/plugin-terser': registry.npmmirror.com/@rollup/plugin-terser/0.4.0_rollup@3.17.2
|
||||||
'@rollup/plugin-typescript': registry.npmmirror.com/@rollup/plugin-typescript/11.0.0_vi3xdhr63abcxdtwtptol35g5u
|
'@rollup/plugin-typescript': registry.npmmirror.com/@rollup/plugin-typescript/11.0.0_vi3xdhr63abcxdtwtptol35g5u
|
||||||
|
'@types/js-cookie': 3.0.3
|
||||||
'@types/node': registry.npmmirror.com/@types/node/18.13.0
|
'@types/node': registry.npmmirror.com/@types/node/18.13.0
|
||||||
autoprefixer: registry.npmmirror.com/autoprefixer/10.4.13_postcss@8.4.21
|
autoprefixer: registry.npmmirror.com/autoprefixer/10.4.13_postcss@8.4.21
|
||||||
axios: 1.3.4
|
axios: 1.3.4
|
||||||
|
@ -199,14 +203,12 @@ importers:
|
||||||
'@ricons/fluent': 0.12.0
|
'@ricons/fluent': 0.12.0
|
||||||
'@ricons/utils': 0.1.6
|
'@ricons/utils': 0.1.6
|
||||||
'@types/dplayer': 1.25.2
|
'@types/dplayer': 1.25.2
|
||||||
'@types/js-cookie': 3.0.3
|
|
||||||
'@types/react': ^18.0.27
|
'@types/react': ^18.0.27
|
||||||
'@types/react-dom': ^18.0.10
|
'@types/react-dom': ^18.0.10
|
||||||
'@types/react-router-dom': 5.3.3
|
'@types/react-router-dom': 5.3.3
|
||||||
'@vitejs/plugin-react': ^3.1.0
|
'@vitejs/plugin-react': ^3.1.0
|
||||||
dplayer: 1.27.1
|
dplayer: 1.27.1
|
||||||
highlight.js: 11.7.0
|
highlight.js: 11.7.0
|
||||||
js-cookie: 3.0.1
|
|
||||||
less: ^4.1.3
|
less: ^4.1.3
|
||||||
react: ^18.2.0
|
react: ^18.2.0
|
||||||
react-dom: ^18.2.0
|
react-dom: ^18.2.0
|
||||||
|
@ -220,14 +222,12 @@ importers:
|
||||||
'@ricons/utils': 0.1.6_biqbaboplfbrettd7655fr4n2y
|
'@ricons/utils': 0.1.6_biqbaboplfbrettd7655fr4n2y
|
||||||
dplayer: 1.27.1
|
dplayer: 1.27.1
|
||||||
highlight.js: 11.7.0
|
highlight.js: 11.7.0
|
||||||
js-cookie: 3.0.1
|
|
||||||
less: 4.1.3
|
less: 4.1.3
|
||||||
react: 18.2.0
|
react: 18.2.0
|
||||||
react-dom: 18.2.0_react@18.2.0
|
react-dom: 18.2.0_react@18.2.0
|
||||||
react-router-dom: 6.8.0_biqbaboplfbrettd7655fr4n2y
|
react-router-dom: 6.8.0_biqbaboplfbrettd7655fr4n2y
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/dplayer': 1.25.2
|
'@types/dplayer': 1.25.2
|
||||||
'@types/js-cookie': 3.0.3
|
|
||||||
'@types/react': 18.0.27
|
'@types/react': 18.0.27
|
||||||
'@types/react-dom': 18.0.10
|
'@types/react-dom': 18.0.10
|
||||||
'@types/react-router-dom': 5.3.3
|
'@types/react-router-dom': 5.3.3
|
||||||
|
@ -2323,6 +2323,14 @@ packages:
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/mkdirp/0.5.6:
|
||||||
|
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
|
||||||
|
hasBin: true
|
||||||
|
dependencies:
|
||||||
|
minimist: registry.npmmirror.com/minimist/1.2.8
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/nanoid/3.3.4:
|
/nanoid/3.3.4:
|
||||||
resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
|
resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
|
||||||
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
||||||
|
@ -2411,6 +2419,14 @@ packages:
|
||||||
resolution: {integrity: sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==}
|
resolution: {integrity: sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/promise/7.3.1:
|
||||||
|
resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==}
|
||||||
|
requiresBuild: true
|
||||||
|
dependencies:
|
||||||
|
asap: registry.npmmirror.com/asap/2.0.6
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/prop-types/15.8.1:
|
/prop-types/15.8.1:
|
||||||
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
|
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -2549,6 +2565,35 @@ packages:
|
||||||
jsesc: 0.5.0
|
jsesc: 0.5.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/request/2.88.2:
|
||||||
|
resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==}
|
||||||
|
engines: {node: '>= 6'}
|
||||||
|
deprecated: request has been deprecated, see https://github.com/request/request/issues/3142
|
||||||
|
requiresBuild: true
|
||||||
|
dependencies:
|
||||||
|
aws-sign2: registry.npmmirror.com/aws-sign2/0.7.0
|
||||||
|
aws4: registry.npmmirror.com/aws4/1.12.0
|
||||||
|
caseless: registry.npmmirror.com/caseless/0.12.0
|
||||||
|
combined-stream: registry.npmmirror.com/combined-stream/1.0.8
|
||||||
|
extend: registry.npmmirror.com/extend/3.0.2
|
||||||
|
forever-agent: registry.npmmirror.com/forever-agent/0.6.1
|
||||||
|
form-data: registry.npmmirror.com/form-data/2.3.3
|
||||||
|
har-validator: registry.npmmirror.com/har-validator/5.1.5
|
||||||
|
http-signature: registry.npmmirror.com/http-signature/1.2.0
|
||||||
|
is-typedarray: registry.npmmirror.com/is-typedarray/1.0.0
|
||||||
|
isstream: registry.npmmirror.com/isstream/0.1.2
|
||||||
|
json-stringify-safe: registry.npmmirror.com/json-stringify-safe/5.0.1
|
||||||
|
mime-types: registry.npmmirror.com/mime-types/2.1.35
|
||||||
|
oauth-sign: registry.npmmirror.com/oauth-sign/0.9.0
|
||||||
|
performance-now: registry.npmmirror.com/performance-now/2.1.0
|
||||||
|
qs: registry.npmmirror.com/qs/6.5.3
|
||||||
|
safe-buffer: registry.npmmirror.com/safe-buffer/5.2.1
|
||||||
|
tough-cookie: registry.npmmirror.com/tough-cookie/2.5.0
|
||||||
|
tunnel-agent: registry.npmmirror.com/tunnel-agent/0.6.0
|
||||||
|
uuid: registry.npmmirror.com/uuid/3.4.0
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
/resize-observer-polyfill/1.5.1:
|
/resize-observer-polyfill/1.5.1:
|
||||||
resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==}
|
resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==}
|
||||||
dev: false
|
dev: false
|
||||||
|
@ -7522,17 +7567,6 @@ packages:
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
registry.npmmirror.com/errno/0.1.8:
|
|
||||||
resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz}
|
|
||||||
name: errno
|
|
||||||
version: 0.1.8
|
|
||||||
hasBin: true
|
|
||||||
requiresBuild: true
|
|
||||||
dependencies:
|
|
||||||
prr: 1.0.1
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
registry.npmmirror.com/error-ex/1.3.2:
|
registry.npmmirror.com/error-ex/1.3.2:
|
||||||
resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz}
|
resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz}
|
||||||
name: error-ex
|
name: error-ex
|
||||||
|
@ -8663,16 +8697,6 @@ packages:
|
||||||
engines: {node: '>= 4'}
|
engines: {node: '>= 4'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
registry.npmmirror.com/image-size/0.5.5:
|
|
||||||
resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz}
|
|
||||||
name: image-size
|
|
||||||
version: 0.5.5
|
|
||||||
engines: {node: '>=0.10.0'}
|
|
||||||
hasBin: true
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
registry.npmmirror.com/immutable/4.2.4:
|
registry.npmmirror.com/immutable/4.2.4:
|
||||||
resolution: {integrity: sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/immutable/-/immutable-4.2.4.tgz}
|
resolution: {integrity: sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/immutable/-/immutable-4.2.4.tgz}
|
||||||
name: immutable
|
name: immutable
|
||||||
|
@ -9410,14 +9434,14 @@ packages:
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
errno: registry.npmmirror.com/errno/0.1.8
|
errno: 0.1.8
|
||||||
graceful-fs: registry.npmmirror.com/graceful-fs/4.2.10
|
graceful-fs: 4.2.10
|
||||||
image-size: registry.npmmirror.com/image-size/0.5.5
|
image-size: 0.5.5
|
||||||
mime: registry.npmmirror.com/mime/1.6.0
|
mime: 1.6.0
|
||||||
mkdirp: registry.npmmirror.com/mkdirp/0.5.6
|
mkdirp: 0.5.6
|
||||||
promise: registry.npmmirror.com/promise/7.3.1
|
promise: 7.3.1
|
||||||
request: registry.npmmirror.com/request/2.88.2
|
request: 2.88.2
|
||||||
source-map: registry.npmmirror.com/source-map/0.6.1
|
source-map: 0.6.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
registry.npmmirror.com/less/4.1.3:
|
registry.npmmirror.com/less/4.1.3:
|
||||||
|
@ -9790,16 +9814,6 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
mime-db: registry.npmmirror.com/mime-db/1.52.0
|
mime-db: registry.npmmirror.com/mime-db/1.52.0
|
||||||
|
|
||||||
registry.npmmirror.com/mime/1.6.0:
|
|
||||||
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz}
|
|
||||||
name: mime
|
|
||||||
version: 1.6.0
|
|
||||||
engines: {node: '>=4'}
|
|
||||||
hasBin: true
|
|
||||||
requiresBuild: true
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
registry.npmmirror.com/mime/2.6.0:
|
registry.npmmirror.com/mime/2.6.0:
|
||||||
resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz}
|
resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz}
|
||||||
name: mime
|
name: mime
|
||||||
|
@ -11129,16 +11143,6 @@ packages:
|
||||||
engines: {node: '>=0.12'}
|
engines: {node: '>=0.12'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
registry.npmmirror.com/promise/7.3.1:
|
|
||||||
resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/promise/-/promise-7.3.1.tgz}
|
|
||||||
name: promise
|
|
||||||
version: 7.3.1
|
|
||||||
requiresBuild: true
|
|
||||||
dependencies:
|
|
||||||
asap: registry.npmmirror.com/asap/2.0.6
|
|
||||||
dev: true
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
registry.npmmirror.com/psl/1.9.0:
|
registry.npmmirror.com/psl/1.9.0:
|
||||||
resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz}
|
resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz}
|
||||||
name: psl
|
name: psl
|
||||||
|
@ -12125,6 +12129,7 @@ packages:
|
||||||
tough-cookie: registry.npmmirror.com/tough-cookie/2.5.0
|
tough-cookie: registry.npmmirror.com/tough-cookie/2.5.0
|
||||||
tunnel-agent: registry.npmmirror.com/tunnel-agent/0.6.0
|
tunnel-agent: registry.npmmirror.com/tunnel-agent/0.6.0
|
||||||
uuid: registry.npmmirror.com/uuid/3.4.0
|
uuid: registry.npmmirror.com/uuid/3.4.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
registry.npmmirror.com/require-directory/2.1.1:
|
registry.npmmirror.com/require-directory/2.1.1:
|
||||||
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz}
|
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user