adds start for console
This commit is contained in:
parent
3902da1747
commit
4ae4e87468
@ -1,3 +1,23 @@
|
|||||||
|
import { useContext } from 'react';
|
||||||
|
import { SettingsContext } from '../../utils/settings_context';
|
||||||
|
|
||||||
export const Home = () => {
|
export const Home = () => {
|
||||||
return <div>I am the home page</div>;
|
const [, dispatch] = useContext(SettingsContext);
|
||||||
|
const logout = async () => {
|
||||||
|
const res = await fetch('/sessions', {
|
||||||
|
method: 'DELETE',
|
||||||
|
});
|
||||||
|
if (res.status === 200) {
|
||||||
|
dispatch({ type: 'update', payload: { jwt: undefined } });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>Welcome</h1>
|
||||||
|
<button type="button" onClick={logout}>
|
||||||
|
Logout
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
@ -7,12 +7,12 @@ import { SignUp } from './sign_up/_sign_up';
|
|||||||
|
|
||||||
export const Router = () => {
|
export const Router = () => {
|
||||||
const [settings] = useContext(SettingsContext);
|
const [settings] = useContext(SettingsContext);
|
||||||
const { JWT } = settings;
|
const { jwt } = settings;
|
||||||
return (
|
return (
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route
|
<Route
|
||||||
path="/"
|
path="/"
|
||||||
element={JWT ? <Home /> : <Navigate replace to="signin" />} // no JWT means not logged in
|
element={jwt ? <Home /> : <Navigate replace to="signin" />} // no jwt means not logged in
|
||||||
/>
|
/>
|
||||||
<Route path="signin" element={<SignIn />} />
|
<Route path="signin" element={<SignIn />} />
|
||||||
<Route path="signup" element={<SignUp />} />
|
<Route path="signup" element={<SignUp />} />
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
import { useState } from 'react';
|
import { useContext, useState } from 'react';
|
||||||
import { useNavigate } from 'react-router';
|
import { useNavigate } from 'react-router';
|
||||||
|
import { SettingsContext } from '../../utils/settings_context';
|
||||||
|
|
||||||
export const SignIn = () => {
|
export const SignIn = () => {
|
||||||
|
const [, dispatch] = useContext(SettingsContext);
|
||||||
const [email, setEmail] = useState('');
|
const [email, setEmail] = useState('');
|
||||||
const [password, setPassword] = useState('');
|
const [password, setPassword] = useState('');
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
@ -10,6 +12,26 @@ export const SignIn = () => {
|
|||||||
navigate('/signup');
|
navigate('/signup');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const signIn = async () => {
|
||||||
|
const res = await fetch('/sessions', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
email,
|
||||||
|
password,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
if (res.status === 201) {
|
||||||
|
const result = await res.json();
|
||||||
|
dispatch({ type: 'update', payload: { jwt: result.token } });
|
||||||
|
navigate('/');
|
||||||
|
} else {
|
||||||
|
console.error('An issue occurred when logging in.');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div>Email</div>
|
<div>Email</div>
|
||||||
@ -25,7 +47,9 @@ export const SignIn = () => {
|
|||||||
onChange={(e) => setPassword(e.target.value)}
|
onChange={(e) => setPassword(e.target.value)}
|
||||||
/>
|
/>
|
||||||
<div>
|
<div>
|
||||||
<button type="button">Sign in</button>
|
<button type="button" onClick={signIn}>
|
||||||
|
Sign in
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<button type="button" onClick={goToSignUp}>
|
<button type="button" onClick={goToSignUp}>
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
import { useState } from 'react';
|
import { useContext, useState } from 'react';
|
||||||
|
import { useNavigate } from 'react-router';
|
||||||
|
import { SettingsContext } from '../../utils/settings_context';
|
||||||
|
|
||||||
export const SignUp = () => {
|
export const SignUp = () => {
|
||||||
|
const [, dispatch] = useContext(SettingsContext);
|
||||||
|
const navigate = useNavigate();
|
||||||
const [name, setName] = useState('');
|
const [name, setName] = useState('');
|
||||||
const [email, setEmail] = useState('');
|
const [email, setEmail] = useState('');
|
||||||
const [emailConfirmation, setEmailConfirmation] = useState('');
|
const [emailConfirmation, setEmailConfirmation] = useState('');
|
||||||
@ -29,8 +33,7 @@ export const SignUp = () => {
|
|||||||
setErrorMessage('Name cannot be blank.');
|
setErrorMessage('Name cannot be blank.');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
const res = await fetch('/users', {
|
||||||
await fetch('/users', {
|
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
@ -41,8 +44,10 @@ export const SignUp = () => {
|
|||||||
password,
|
password,
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
} catch (e) {
|
if (res.status === 201) {
|
||||||
console.log(e.message);
|
const result = await res.json();
|
||||||
|
dispatch({ type: 'update', payload: { jwt: result.token } });
|
||||||
|
navigate('/');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
"prebuild": "rimraf dist",
|
"prebuild": "rimraf dist",
|
||||||
"build": "nest build && yarn client:build",
|
"build": "nest build && yarn client:build",
|
||||||
"format": "prettier --write \"server/**/*.ts\" \"test/**/*.ts\"",
|
"format": "prettier --write \"server/**/*.ts\" \"test/**/*.ts\"",
|
||||||
|
"console": "ts-node -r tsconfig-paths/register server/console.ts",
|
||||||
"start": "nest start",
|
"start": "nest start",
|
||||||
"start:dev": "yarn db:start && nest start --watch",
|
"start:dev": "yarn db:start && nest start --watch",
|
||||||
"start:debug": "yarn db:start && nest start --debug --watch",
|
"start:debug": "yarn db:start && nest start --debug --watch",
|
||||||
@ -56,12 +57,15 @@
|
|||||||
"@types/supertest": "^2.0.11",
|
"@types/supertest": "^2.0.11",
|
||||||
"@typescript-eslint/eslint-plugin": "^4.28.2",
|
"@typescript-eslint/eslint-plugin": "^4.28.2",
|
||||||
"@typescript-eslint/parser": "^4.28.2",
|
"@typescript-eslint/parser": "^4.28.2",
|
||||||
|
"await-outside": "^3.0.0",
|
||||||
"eslint": "^7.30.0",
|
"eslint": "^7.30.0",
|
||||||
"eslint-config-prettier": "^8.3.0",
|
"eslint-config-prettier": "^8.3.0",
|
||||||
"eslint-plugin-prettier": "^3.4.0",
|
"eslint-plugin-prettier": "^3.4.0",
|
||||||
"jest": "^27.0.6",
|
"jest": "^27.0.6",
|
||||||
"parcel": "^2.0.1",
|
"parcel": "^2.0.1",
|
||||||
"prettier": "^2.4.1",
|
"prettier": "^2.4.1",
|
||||||
|
"purdy": "^3.5.1",
|
||||||
|
"repl": "^0.1.3",
|
||||||
"supertest": "^6.1.3",
|
"supertest": "^6.1.3",
|
||||||
"ts-jest": "^27.0.3",
|
"ts-jest": "^27.0.3",
|
||||||
"ts-node": "^10.0.0",
|
"ts-node": "^10.0.0",
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
import { Controller, Get, Render } from '@nestjs/common';
|
import { Controller, Get, Render, Req } from '@nestjs/common';
|
||||||
|
import { Request } from 'express';
|
||||||
|
|
||||||
@Controller()
|
@Controller()
|
||||||
export class AppController {
|
export class AppController {
|
||||||
@Get()
|
@Get()
|
||||||
@Render('index')
|
@Render('index')
|
||||||
index() {}
|
index(@Req() req: Request) {
|
||||||
|
const jwt = req.cookies['_token'];
|
||||||
|
return { jwt };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
39
server/console.ts
Normal file
39
server/console.ts
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
import 'dotenv/config';
|
||||||
|
import { NestFactory } from '@nestjs/core';
|
||||||
|
import * as repl from 'repl';
|
||||||
|
import * as Logger from 'purdy';
|
||||||
|
|
||||||
|
const LOGGER_OPTIONS = {
|
||||||
|
indent: 2,
|
||||||
|
depth: 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
class InteractiveNestJS {
|
||||||
|
async run() {
|
||||||
|
// create the application context
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
const targetModule = require(`${__dirname}/app.module`);
|
||||||
|
const applicationContext = await NestFactory.createApplicationContext(
|
||||||
|
// tslint:disable-next-line: no-string-literal
|
||||||
|
targetModule['AppModule'],
|
||||||
|
);
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
const awaitOutside = require('await-outside');
|
||||||
|
// start node repl
|
||||||
|
const server = repl.start({
|
||||||
|
useColors: true,
|
||||||
|
prompt: '> ',
|
||||||
|
writer: replWriter,
|
||||||
|
ignoreUndefined: true,
|
||||||
|
});
|
||||||
|
server.context.app = applicationContext;
|
||||||
|
awaitOutside.addAwaitOutsideToReplServer(server);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function replWriter(value: any): string {
|
||||||
|
return Logger.stringify(value, LOGGER_OPTIONS);
|
||||||
|
}
|
||||||
|
|
||||||
|
const session = new InteractiveNestJS();
|
||||||
|
session.run();
|
@ -1,9 +1,11 @@
|
|||||||
import {
|
import {
|
||||||
Body,
|
Body,
|
||||||
Controller,
|
Controller,
|
||||||
|
Delete,
|
||||||
HttpException,
|
HttpException,
|
||||||
HttpStatus,
|
HttpStatus,
|
||||||
Post,
|
Post,
|
||||||
|
Redirect,
|
||||||
Res,
|
Res,
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
import { Response } from 'express';
|
import { Response } from 'express';
|
||||||
@ -18,13 +20,13 @@ import { SignInDto } from 'server/dto/sign_in.dto';
|
|||||||
export class SessionsController {
|
export class SessionsController {
|
||||||
constructor(private usersService: UsersService) {}
|
constructor(private usersService: UsersService) {}
|
||||||
|
|
||||||
@Post('/sign_in')
|
@Post('/sessions')
|
||||||
async signIn(
|
async create(
|
||||||
@Body() body: SignInDto,
|
@Body() body: SignInDto,
|
||||||
@Res({ passthrough: true }) res: Response,
|
@Res({ passthrough: true }) res: Response,
|
||||||
) {
|
) {
|
||||||
const { verified, user } = await this.usersService.verify(
|
const { verified, user } = await this.usersService.verify(
|
||||||
body.username,
|
body.email,
|
||||||
body.password,
|
body.password,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -45,4 +47,10 @@ export class SessionsController {
|
|||||||
res.cookie('_token', token);
|
res.cookie('_token', token);
|
||||||
return { token };
|
return { token };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Delete('/sessions')
|
||||||
|
async destroy(@Res({ passthrough: true }) res: Response) {
|
||||||
|
res.clearCookie('_token');
|
||||||
|
return { success: true };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
export class SignInDto {
|
export class SignInDto {
|
||||||
username: string;
|
email: string;
|
||||||
password: string;
|
password: string;
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,6 @@ export class UsersService {
|
|||||||
password,
|
password,
|
||||||
user.password_hash,
|
user.password_hash,
|
||||||
);
|
);
|
||||||
return { verified, user };
|
return { verified, user: verified ? user : null };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
window.SETTINGS = {};
|
window.SETTINGS = {
|
||||||
|
jwt: '{{jwt}}'
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
110
yarn.lock
110
yarn.lock
@ -2195,6 +2195,14 @@ async-limiter@~1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
|
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
|
||||||
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
|
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
|
||||||
|
|
||||||
|
async-to-gen@~1.3.2:
|
||||||
|
version "1.3.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/async-to-gen/-/async-to-gen-1.3.3.tgz#d52c9fb4801f0df44abc4d2de1870b48b60e20bb"
|
||||||
|
integrity sha1-1SyftIAfDfRKvE0t4YcLSLYOILs=
|
||||||
|
dependencies:
|
||||||
|
babylon "^6.14.0"
|
||||||
|
magic-string "^0.19.0"
|
||||||
|
|
||||||
async@0.9.x:
|
async@0.9.x:
|
||||||
version "0.9.2"
|
version "0.9.2"
|
||||||
resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
|
resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
|
||||||
@ -2215,6 +2223,13 @@ available-typed-arrays@^1.0.5:
|
|||||||
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
|
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
|
||||||
integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
|
integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
|
||||||
|
|
||||||
|
await-outside@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/await-outside/-/await-outside-3.0.0.tgz#cf97dff66dbb6fe635935e541f40d676464f0a6d"
|
||||||
|
integrity sha512-ZIxAOB+YJvmzUR4VKVX+SWtdlXfNUAv0fkZWZvtz12A5lexesibQDeiK+XhPanA6DMCscuT+9tZ3OBIPGTmZ7A==
|
||||||
|
dependencies:
|
||||||
|
async-to-gen "~1.3.2"
|
||||||
|
|
||||||
aws-sign2@~0.7.0:
|
aws-sign2@~0.7.0:
|
||||||
version "0.7.0"
|
version "0.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
|
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
|
||||||
@ -2293,6 +2308,11 @@ babel-preset-jest@^27.2.0:
|
|||||||
babel-plugin-jest-hoist "^27.2.0"
|
babel-plugin-jest-hoist "^27.2.0"
|
||||||
babel-preset-current-node-syntax "^1.0.0"
|
babel-preset-current-node-syntax "^1.0.0"
|
||||||
|
|
||||||
|
babylon@^6.14.0:
|
||||||
|
version "6.18.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
|
||||||
|
integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==
|
||||||
|
|
||||||
balanced-match@^1.0.0:
|
balanced-match@^1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
||||||
@ -2375,6 +2395,14 @@ boolbase@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
|
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
|
||||||
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
|
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
|
||||||
|
|
||||||
|
bossy@^3.0.4:
|
||||||
|
version "3.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/bossy/-/bossy-3.0.4.tgz#f9ae9f26e81b41a318f4ee0d83686e4a5c2507b9"
|
||||||
|
integrity sha1-+a6fJugbQaMY9O4Ng2huSlwlB7k=
|
||||||
|
dependencies:
|
||||||
|
hoek "4.x.x"
|
||||||
|
joi "10.x.x"
|
||||||
|
|
||||||
brace-expansion@^1.1.7:
|
brace-expansion@^1.1.7:
|
||||||
version "1.1.11"
|
version "1.1.11"
|
||||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
||||||
@ -4426,6 +4454,11 @@ hmac-drbg@^1.0.1:
|
|||||||
minimalistic-assert "^1.0.0"
|
minimalistic-assert "^1.0.0"
|
||||||
minimalistic-crypto-utils "^1.0.1"
|
minimalistic-crypto-utils "^1.0.1"
|
||||||
|
|
||||||
|
hoek@4.x.x:
|
||||||
|
version "4.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb"
|
||||||
|
integrity sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==
|
||||||
|
|
||||||
html-encoding-sniffer@^1.0.2:
|
html-encoding-sniffer@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
|
resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
|
||||||
@ -4933,6 +4966,18 @@ isarray@~1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
||||||
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
|
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
|
||||||
|
|
||||||
|
isemail@2.x.x:
|
||||||
|
version "2.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/isemail/-/isemail-2.2.1.tgz#0353d3d9a62951080c262c2aa0a42b8ea8e9e2a6"
|
||||||
|
integrity sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY=
|
||||||
|
|
||||||
|
isemail@3.x.x:
|
||||||
|
version "3.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.2.0.tgz#59310a021931a9fb06bbb51e155ce0b3f236832c"
|
||||||
|
integrity sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==
|
||||||
|
dependencies:
|
||||||
|
punycode "2.x.x"
|
||||||
|
|
||||||
isexe@^2.0.0:
|
isexe@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
||||||
@ -4995,6 +5040,11 @@ istanbul-reports@^3.0.2:
|
|||||||
html-escaper "^2.0.0"
|
html-escaper "^2.0.0"
|
||||||
istanbul-lib-report "^3.0.0"
|
istanbul-lib-report "^3.0.0"
|
||||||
|
|
||||||
|
items@2.x.x:
|
||||||
|
version "2.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/items/-/items-2.1.2.tgz#0849354595805d586dac98e7e6e85556ea838558"
|
||||||
|
integrity sha512-kezcEqgB97BGeZZYtX/MA8AG410ptURstvnz5RAgyFZ8wQFPMxHY8GpTq+/ZHKT3frSlIthUq7EvLt9xn3TvXg==
|
||||||
|
|
||||||
iterare@1.2.1:
|
iterare@1.2.1:
|
||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/iterare/-/iterare-1.2.1.tgz#139c400ff7363690e33abffa33cbba8920f00042"
|
resolved "https://registry.yarnpkg.com/iterare/-/iterare-1.2.1.tgz#139c400ff7363690e33abffa33cbba8920f00042"
|
||||||
@ -5420,6 +5470,25 @@ jest@^27.0.6:
|
|||||||
import-local "^3.0.2"
|
import-local "^3.0.2"
|
||||||
jest-cli "^27.3.1"
|
jest-cli "^27.3.1"
|
||||||
|
|
||||||
|
joi@10.x.x:
|
||||||
|
version "10.6.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/joi/-/joi-10.6.0.tgz#52587f02d52b8b75cdb0c74f0b164a191a0e1fc2"
|
||||||
|
integrity sha512-hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==
|
||||||
|
dependencies:
|
||||||
|
hoek "4.x.x"
|
||||||
|
isemail "2.x.x"
|
||||||
|
items "2.x.x"
|
||||||
|
topo "2.x.x"
|
||||||
|
|
||||||
|
joi@^12.0.0:
|
||||||
|
version "12.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/joi/-/joi-12.0.0.tgz#46f55e68f4d9628f01bbb695902c8b307ad8d33a"
|
||||||
|
integrity sha512-z0FNlV4NGgjQN1fdtHYXf5kmgludM65fG/JlXzU6+rwkt9U5UWuXVYnXa2FpK0u6+qBuCmrm5byPNuiiddAHvQ==
|
||||||
|
dependencies:
|
||||||
|
hoek "4.x.x"
|
||||||
|
isemail "3.x.x"
|
||||||
|
topo "2.x.x"
|
||||||
|
|
||||||
js-tokens@^4.0.0:
|
js-tokens@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
||||||
@ -5810,6 +5879,13 @@ magic-string@0.25.7:
|
|||||||
dependencies:
|
dependencies:
|
||||||
sourcemap-codec "^1.4.4"
|
sourcemap-codec "^1.4.4"
|
||||||
|
|
||||||
|
magic-string@^0.19.0:
|
||||||
|
version "0.19.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.19.1.tgz#14d768013caf2ec8fdea16a49af82fc377e75201"
|
||||||
|
integrity sha1-FNdoATyvLsj96hakmvgvw3fnUgE=
|
||||||
|
dependencies:
|
||||||
|
vlq "^0.2.1"
|
||||||
|
|
||||||
make-dir@^3.0.0, make-dir@^3.1.0:
|
make-dir@^3.0.0, make-dir@^3.1.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
|
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
|
||||||
@ -7084,15 +7160,24 @@ punycode@1.3.2:
|
|||||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
|
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
|
||||||
integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
|
integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
|
||||||
|
|
||||||
|
punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1:
|
||||||
|
version "2.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
|
||||||
|
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
|
||||||
|
|
||||||
punycode@^1.3.2, punycode@^1.4.1:
|
punycode@^1.3.2, punycode@^1.4.1:
|
||||||
version "1.4.1"
|
version "1.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
|
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
|
||||||
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
|
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
|
||||||
|
|
||||||
punycode@^2.1.0, punycode@^2.1.1:
|
purdy@^3.5.1:
|
||||||
version "2.1.1"
|
version "3.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
|
resolved "https://registry.yarnpkg.com/purdy/-/purdy-3.5.1.tgz#addb87ca765d7b4a04c7b250c8c6f504d1827a2e"
|
||||||
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
|
integrity sha512-2v+aHv71zgOES8odUqnlbxLq+p2TeM51CtKLaUKuedsKWI4atGHO7IlQyUJuVCUJ7gECJ936ugOiA3gtAxSNzQ==
|
||||||
|
dependencies:
|
||||||
|
bossy "^3.0.4"
|
||||||
|
chalk "^2.4.1"
|
||||||
|
joi "^12.0.0"
|
||||||
|
|
||||||
purgecss@^4.0.0:
|
purgecss@^4.0.0:
|
||||||
version "4.0.3"
|
version "4.0.3"
|
||||||
@ -7247,6 +7332,11 @@ relateurl@^0.2.7:
|
|||||||
resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
|
resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
|
||||||
integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
|
integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
|
||||||
|
|
||||||
|
repl@^0.1.3:
|
||||||
|
version "0.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/repl/-/repl-0.1.3.tgz#2f05d42b0c88b43d05ccbda10ed14aeff5699b60"
|
||||||
|
integrity sha1-LwXUKwyItD0FzL2hDtFK7/Vpm2A=
|
||||||
|
|
||||||
request-promise-core@1.1.4:
|
request-promise-core@1.1.4:
|
||||||
version "1.1.4"
|
version "1.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f"
|
resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f"
|
||||||
@ -8050,6 +8140,13 @@ toidentifier@1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
|
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
|
||||||
integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
|
integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
|
||||||
|
|
||||||
|
topo@2.x.x:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182"
|
||||||
|
integrity sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=
|
||||||
|
dependencies:
|
||||||
|
hoek "4.x.x"
|
||||||
|
|
||||||
tough-cookie@^2.3.3, tough-cookie@^2.5.0, tough-cookie@~2.5.0:
|
tough-cookie@^2.3.3, tough-cookie@^2.5.0, tough-cookie@~2.5.0:
|
||||||
version "2.5.0"
|
version "2.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
|
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
|
||||||
@ -8393,6 +8490,11 @@ verror@1.10.0:
|
|||||||
core-util-is "1.0.2"
|
core-util-is "1.0.2"
|
||||||
extsprintf "^1.2.0"
|
extsprintf "^1.2.0"
|
||||||
|
|
||||||
|
vlq@^0.2.1:
|
||||||
|
version "0.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26"
|
||||||
|
integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==
|
||||||
|
|
||||||
vm-browserify@^1.1.2:
|
vm-browserify@^1.1.2:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
|
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
|
||||||
|
Loading…
Reference in New Issue
Block a user