v1.0
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,4 +1,5 @@
|
|||||||
node_modules
|
node_modules
|
||||||
dist
|
dist
|
||||||
.vscode
|
.vscode
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
|
yarn-error.log
|
||||||
3
dist/index.html
vendored
3
dist/index.html
vendored
@@ -1,4 +1,3 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
@@ -11,6 +10,6 @@
|
|||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.2.0/umd/react.production.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.2.0/umd/react.production.min.js"></script>
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.2.0/umd/react-dom.production.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.2.0/umd/react-dom.production.min.js"></script>
|
||||||
<!-- Main -->
|
<!-- Main -->
|
||||||
<script src="./bundle.js"></script>
|
<script src="/bundle.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1",
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
"serve": "webpack-dev-server --output-public-path=dist --history-api-fallback",
|
"serve": "webpack-dev-server --output-public-path=dist --history-api-fallback",
|
||||||
"build": "webpack"
|
"build": "webpack --optimize-minimize"
|
||||||
},
|
},
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
@@ -20,6 +20,7 @@
|
|||||||
"re-base": "^3.2.1",
|
"re-base": "^3.2.1",
|
||||||
"react": "^16.2.0",
|
"react": "^16.2.0",
|
||||||
"react-dom": "^16.2.0",
|
"react-dom": "^16.2.0",
|
||||||
|
"react-markdown": "^3.1.3",
|
||||||
"react-redux": "^5.0.6",
|
"react-redux": "^5.0.6",
|
||||||
"react-router": "^4.2.0",
|
"react-router": "^4.2.0",
|
||||||
"react-router-dom": "^4.2.2",
|
"react-router-dom": "^4.2.2",
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import * as React from "react";
|
|||||||
|
|
||||||
export class Conditional extends React.Component<{render:boolean}, any>{
|
export class Conditional extends React.Component<{render:boolean}, any>{
|
||||||
render(){
|
render(){
|
||||||
var toRender = this.props.render? this.props.children : null;
|
let toRender = this.props.render? this.props.children : null;
|
||||||
return <span>{toRender}</span>
|
return <span>{toRender}</span>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
import * as React from "react";
|
|
||||||
require('../styles/main.css');
|
|
||||||
export interface HelloProps { compiler: string; framework: string; }
|
|
||||||
|
|
||||||
// 'HelloProps' describes the shape of props.
|
|
||||||
// State is never set so we use the '{}' type.
|
|
||||||
export class Hello extends React.Component<HelloProps, {}> {
|
|
||||||
render() {
|
|
||||||
return (
|
|
||||||
<div className="main">
|
|
||||||
<p>Hello from {this.props.compiler} and {this.props.framework}!</p>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
9
src/components/Home.tsx
Normal file
9
src/components/Home.tsx
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import { LoginState } from '../models/LoginState';
|
||||||
|
import * as React from 'react';
|
||||||
|
|
||||||
|
export class Home extends React.Component<any,any>{
|
||||||
|
|
||||||
|
render(){
|
||||||
|
return <h4> Hi, welcome to minbin a simple pastebin. Please login to get started!</h4>
|
||||||
|
}
|
||||||
|
}
|
||||||
15
src/components/ListItem.tsx
Normal file
15
src/components/ListItem.tsx
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import { Viewer } from './Viewer';
|
||||||
|
import { getLanguage } from '../util/doc';
|
||||||
|
import * as React from 'react';
|
||||||
|
import {Document} from "../models/Document"
|
||||||
|
import { Link } from "react-router-dom";
|
||||||
|
export class ListItem extends React.PureComponent<{doc: Document, uid: string, docId: string}>{
|
||||||
|
render(){
|
||||||
|
return <div key={`li_div_${this.props.docId}`}>
|
||||||
|
<h4>
|
||||||
|
<Link to={`/d/${this.props.uid}/${this.props.docId}/edit`}>{this.props.doc.Title || 'Untitled'}</Link>
|
||||||
|
</h4>
|
||||||
|
<Viewer doc={this.props.doc.Body} language={getLanguage(this.props.doc.Title)} maxHeight={"200px"} />
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,20 +1,30 @@
|
|||||||
import * as React from "react";
|
import { LoginState } from '../models/LoginState';
|
||||||
|
import * as React from 'react';
|
||||||
import { TabContent, TabPane, Nav, NavItem, NavLink, Card, Button, CardTitle, CardText, Row, Col, NavbarBrand, Navbar } from 'reactstrap';
|
import { TabContent, TabPane, Nav, NavItem, NavLink, Card, Button, CardTitle, CardText, Row, Col, NavbarBrand, Navbar } from 'reactstrap';
|
||||||
|
import { LoginContainer } from '../containers/Login';
|
||||||
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
export class NavBar extends React.Component<any, any> {
|
export class NavBar extends React.Component<{loginState: LoginState}, any> {
|
||||||
constructor(props: any) {
|
constructor(props: any) {
|
||||||
super(props);
|
super(props);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
let newButton = this.props.loginState.isLoggedIn ? (
|
||||||
|
<NavItem>
|
||||||
|
<Link to="/d/new" className="btn btn-sm btn-outline-success" >+ New</Link>
|
||||||
|
</NavItem>
|
||||||
|
) : null;
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<Navbar color="faded" light expand="md">
|
<Navbar color="faded" light expand="md">
|
||||||
<NavbarBrand href="/">minbin</NavbarBrand>
|
<NavbarBrand href="/">minbin</NavbarBrand>
|
||||||
|
|
||||||
<Nav navbar className="ml-auto">
|
<Nav navbar className="ml-auto">
|
||||||
|
{newButton}
|
||||||
<NavItem>
|
<NavItem>
|
||||||
{this.props.children}
|
<LoginContainer />
|
||||||
</NavItem>
|
</NavItem>
|
||||||
</Nav>
|
</Nav>
|
||||||
</Navbar>
|
</Navbar>
|
||||||
|
|||||||
@@ -1,35 +1,21 @@
|
|||||||
/// <reference path="../redux-styles.d.ts" />
|
/// <reference path="../react-syntax-highlighter.d.ts" />
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import { Row, Col, Card, CardText } from "reactstrap";
|
import { Row, Col, Card, CardText } from "reactstrap";
|
||||||
import SyntaxHighlighter from 'react-syntax-highlighter';
|
import SyntaxHighlighter from 'react-syntax-highlighter';
|
||||||
import googlecode from "react-syntax-highlighter/styles/hljs/googlecode";
|
import googlecode from "react-syntax-highlighter/styles/hljs/googlecode";
|
||||||
let exampleText = `
|
|
||||||
void Main()
|
export interface ViewerProps {doc?: string, language?: string, maxHeight?: string}
|
||||||
{
|
|
||||||
let next5Friday13 = DateTime.Today
|
|
||||||
.Recurse(a=>a.AddDays(1))
|
|
||||||
.Where(a=>a.Day == 13 && a.DayOfWeek == DayOfWeek.Friday).Take(5);
|
|
||||||
|
|
||||||
}
|
|
||||||
public static class Extension
|
|
||||||
{
|
|
||||||
public static IEnumerable<T> Recurse<T>(this T obj, Func<T,T> action)
|
|
||||||
{
|
|
||||||
let local = obj;
|
|
||||||
while(true)
|
|
||||||
{
|
|
||||||
local = action(local);
|
|
||||||
yield return local;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`
|
|
||||||
export interface ViewerProps {doc?: string, language?: string}
|
|
||||||
export class Viewer extends React.Component<ViewerProps, any>{
|
export class Viewer extends React.Component<ViewerProps, any>{
|
||||||
render(){
|
render(){
|
||||||
|
let style : React.CSSProperties = { paddingTop: "10px" };
|
||||||
|
if(this.props.maxHeight){
|
||||||
|
style.maxHeight = this.props.maxHeight
|
||||||
|
}
|
||||||
return(
|
return(
|
||||||
<Card style={{ paddingTop: "10px" }}>
|
|
||||||
<SyntaxHighlighter showLineNumbers={true} language={this.props.language || 'cs'} style={googlecode} >{this.props.doc || ''}</SyntaxHighlighter>
|
<Card style={style}>
|
||||||
</Card>);
|
<SyntaxHighlighter showLineNumbers={true} language={this.props.language || null} style={googlecode} >{this.props.doc || ''}</SyntaxHighlighter>
|
||||||
|
</Card>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { HomeContainer } from './HomeContainer';
|
||||||
import { LoginState } from '../models/LoginState';
|
import { LoginState } from '../models/LoginState';
|
||||||
import { Edit } from './Edit';
|
import { Edit } from './Edit';
|
||||||
import { LoginContainer } from './Login';
|
import { LoginContainer } from './Login';
|
||||||
@@ -18,15 +19,13 @@ const mapStateToProps = (state : AppState) : AppState =>
|
|||||||
class appContainer extends React.Component<AppState, any>{
|
class appContainer extends React.Component<AppState, any>{
|
||||||
render(){
|
render(){
|
||||||
return <BrowserRouter><div className="app container-fluid">
|
return <BrowserRouter><div className="app container-fluid">
|
||||||
<NavBar>
|
<NavBar loginState={this.props.login} />
|
||||||
<LoginContainer/>
|
|
||||||
</NavBar>
|
|
||||||
<Switch>
|
<Switch>
|
||||||
<Route path="/d/new" render={()=>{
|
<Route path="/d/new" render={()=>{
|
||||||
return <Redirect to={`/d/${this.props.login.uid}/${generateDocId()}`} />
|
return <Redirect to={`/d/${this.props.login.uid}/${generateDocId()}`} />
|
||||||
}} />
|
}} />
|
||||||
<Route path="/d/:uid/:docId/:edit" render={(routeProps: RouteComponentProps<{docId?: string, uid?: string, login: LoginState, edit: string}>)=>{
|
<Route path="/d/:uid/:docId/:edit" render={(routeProps: RouteComponentProps<{docId?: string, uid?: string, login: LoginState, edit: string}>)=>{
|
||||||
var showEdit;
|
let showEdit;
|
||||||
if(routeProps.match.params.edit === "edit"){
|
if(routeProps.match.params.edit === "edit"){
|
||||||
showEdit = true;
|
showEdit = true;
|
||||||
}
|
}
|
||||||
@@ -39,6 +38,9 @@ class appContainer extends React.Component<AppState, any>{
|
|||||||
|
|
||||||
return <Redirect to={`/d/${routeProps.match.params.uid}/${routeProps.match.params.docId}/view`} />
|
return <Redirect to={`/d/${routeProps.match.params.uid}/${routeProps.match.params.docId}/view`} />
|
||||||
}} />
|
}} />
|
||||||
|
<Route path="/" strict={true}>
|
||||||
|
<HomeContainer login={this.props.login} />
|
||||||
|
</Route>
|
||||||
<Route component={ForOhFour} />
|
<Route component={ForOhFour} />
|
||||||
</Switch>
|
</Switch>
|
||||||
</div></BrowserRouter>
|
</div></BrowserRouter>
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { generateDocId } from '../util/doc';
|
import { generateDocId, getLanguage } from '../util/doc';
|
||||||
import { LoginState } from '../models/LoginState';
|
import { LoginState } from '../models/LoginState';
|
||||||
import { Editor } from '../components/Editor';
|
import { Editor } from '../components/Editor';
|
||||||
import { Viewer } from '../components/Viewer';
|
import { Viewer } from '../components/Viewer';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import fbData from '../startup/firebase'
|
import fbData from '../startup/firebase'
|
||||||
import {Document} from '../models/Document'
|
import {Document} from '../models/Document'
|
||||||
import { TabContent, TabPane, Nav, NavItem, NavLink, Card, Button, CardTitle, CardText, Row, Col, NavbarBrand } from 'reactstrap';
|
import { TabContent, TabPane, Nav, NavItem, NavLink, Card, Button, CardTitle, CardText, Row, Col, NavbarBrand, FormText, Input } from 'reactstrap';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import { Conditional } from '../components/Conditional';
|
import { Conditional } from '../components/Conditional';
|
||||||
import { ChangeEventHandler } from 'react';
|
import { ChangeEventHandler } from 'react';
|
||||||
@@ -48,9 +48,10 @@ export class Edit extends React.Component<EditProps, EditState> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
var tabNumber = this.props.showEdit ? '2': '1'
|
let tabNumber = this.props.showEdit ? '2': '1'
|
||||||
var displayEdit = this.props.login.isLoggedIn && this.props.login.uid === this.props.uid;
|
let displayEdit = this.props.login.isLoggedIn && this.props.login.uid === this.props.uid;
|
||||||
var displayViewer = tabNumber === '1';
|
let displayViewer = tabNumber === '1';
|
||||||
|
|
||||||
// : null;
|
// : null;
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
@@ -79,25 +80,24 @@ export class Edit extends React.Component<EditProps, EditState> {
|
|||||||
<Conditional render={displayViewer}>
|
<Conditional render={displayViewer}>
|
||||||
<br />
|
<br />
|
||||||
<h4>{this.state.document.Title}</h4><br />
|
<h4>{this.state.document.Title}</h4><br />
|
||||||
<Viewer doc={this.state.document.Body} />
|
<Viewer doc={this.state.document.Body} language={getLanguage(this.state.document.Title)} />
|
||||||
</Conditional>
|
</Conditional>
|
||||||
</Col >
|
</Col >
|
||||||
</Row>
|
</Row>
|
||||||
</TabPane>
|
</TabPane>
|
||||||
<TabPane tabId="2">
|
<TabPane tabId="2">
|
||||||
|
|
||||||
|
|
||||||
<Conditional render={displayEdit}>
|
<Conditional render={displayEdit}>
|
||||||
<Row style={{height: '80vh'}}>
|
<Row style={{height: '60vh'}}>
|
||||||
<Col sm="12" style={{height: '100%'}}>
|
<Col sm="12" style={{height: '100%'}}>
|
||||||
<textarea className="form-control" style={{height: "100%"}} value={this.state.document.Body || ""} onChange={(event)=>this.updateDocument(event.target.value)}></textarea>
|
<div>Permalink: <Input readOnly type="text" value={`https://minbin.co/d/${this.props.login.uid}/${this.props.docId}`} /></div><br />
|
||||||
|
<textarea className="form-control" style={{height: "40vh"}} value={this.state.document.Body || ""} onChange={(event)=>this.updateDocument(event.target.value)}></textarea>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
<Row style={{height: '20vh'}} >
|
<Row style={{height: '20vh'}} >
|
||||||
<Col sm="12">
|
<Col sm="12">
|
||||||
<form style={{paddingLeft: "10px"}} className={'form-inline'}>
|
<form style={{paddingLeft: "10px"}} className={'form-inline'}>
|
||||||
<label htmlFor="title-input">Title: </label>
|
<label htmlFor="title-input">Title: </label>
|
||||||
<input type="text" onChange={(event)=>this.updateTitle(event.target.value)} value={this.state.document.Title} className="form-control" id="title-input" placeholder="Title" />
|
<input placeholder={"KittensAttack.cpp"} type="text" onChange={(event)=>this.updateTitle(event.target.value)} value={this.state.document.Title} className="form-control" id="title-input" />
|
||||||
</form>
|
</form>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
|
|||||||
17
src/containers/HomeContainer.tsx
Normal file
17
src/containers/HomeContainer.tsx
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import { Home } from '../components/Home';
|
||||||
|
import { LoginState } from '../models/LoginState';
|
||||||
|
import * as React from 'react';
|
||||||
|
import { ListContainer } from './ListContainer';
|
||||||
|
|
||||||
|
export class HomeContainer extends React.Component<{login: LoginState},any>{
|
||||||
|
|
||||||
|
render(){
|
||||||
|
let render = this.props.login.isLoggedIn ? <ListContainer login={this.props.login} /> : <Home />
|
||||||
|
return(
|
||||||
|
<div>
|
||||||
|
{render}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
50
src/containers/ListContainer.tsx
Normal file
50
src/containers/ListContainer.tsx
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
import { ListItem } from '../components/ListItem';
|
||||||
|
import { Viewer } from '../components/Viewer';
|
||||||
|
import { LoginState } from '../models/LoginState';
|
||||||
|
import * as React from 'react';
|
||||||
|
import fbData from '../startup/firebase';
|
||||||
|
import Progress from 'reactstrap/lib/Progress';
|
||||||
|
import { DocumentPlusKey } from '../models/Document'
|
||||||
|
import { getLanguage } from '../util/doc';
|
||||||
|
|
||||||
|
export class ListContainer extends React.Component<{login: LoginState}, {inProgress: Boolean, docs: Array<DocumentPlusKey>, error : Boolean }>{
|
||||||
|
inProgress: Boolean = true;
|
||||||
|
getPastes(){
|
||||||
|
fbData.rebase.fetch(`/docs/${this.props.login.uid}`,
|
||||||
|
{
|
||||||
|
context: this,
|
||||||
|
asArray: true
|
||||||
|
})
|
||||||
|
.then((data: Array<DocumentPlusKey>)=>
|
||||||
|
{
|
||||||
|
this.setState({docs: data, inProgress: false});
|
||||||
|
})
|
||||||
|
.catch((err: any)=>{
|
||||||
|
console.error(err);
|
||||||
|
this.setState({error: true, inProgress: false});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
constructor(login: {login: LoginState}){
|
||||||
|
super(login)
|
||||||
|
this.state = {inProgress: true, docs: new Array<DocumentPlusKey>(), error: false}
|
||||||
|
}
|
||||||
|
componentDidMount(){
|
||||||
|
this.getPastes()
|
||||||
|
}
|
||||||
|
render(){
|
||||||
|
if(this.state.inProgress){
|
||||||
|
return <div><Progress striped={true} animated={true} max={100} value={100} /></div>
|
||||||
|
}
|
||||||
|
if(this.state.error){
|
||||||
|
return <h4>Oh No! An error occured</h4>
|
||||||
|
}
|
||||||
|
if(this.state.docs.length < 1){
|
||||||
|
return <h4>No pastes found <small>Press new in the upper right to make a paste!</small></h4>
|
||||||
|
}
|
||||||
|
let elems =this.state.docs.map(doc => {
|
||||||
|
return <ListItem key={`${doc.key}_li`} docId={doc.key} doc={doc} uid={this.props.login.uid} />
|
||||||
|
});
|
||||||
|
return <div>{elems}</div>
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -50,11 +50,11 @@ class loginContainer extends React.Component<ILoginProps,{}>{
|
|||||||
firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION)
|
firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION)
|
||||||
.then(()=>firebase.auth().signInWithPopup(provider).then(result => {}));
|
.then(()=>firebase.auth().signInWithPopup(provider).then(result => {}));
|
||||||
}
|
}
|
||||||
|
//todo I should seperate the UI layer from the login business logic, redux posting
|
||||||
render(){
|
render(){
|
||||||
|
|
||||||
|
|
||||||
if(this.props && this.props.loginState && this.props.loginState.isLoggedIn){
|
if(this.props && this.props.loginState && this.props.loginState.isLoggedIn){
|
||||||
return <span> <Link to="/d/new" className="btn btn-outline-success" >+ New</Link> Hi, {this.props.loginState.displayName} <a href="#" onClick={()=>this.logout()}>Log Out</a> </span>;
|
return <span style={{verticalAlign: 'middle'}}> Hi, {this.props.loginState.displayName} <a href="#" onClick={()=>this.logout()}>Log Out</a> </span>;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
return <LoginButton onClick={this.login} />;
|
return <LoginButton onClick={this.login} />;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import * as ReactDOM from "react-dom";
|
import * as ReactDOM from "react-dom";
|
||||||
import { Hello } from "./components/Hello";
|
|
||||||
import 'bootstrap/dist/css/bootstrap.css';
|
import 'bootstrap/dist/css/bootstrap.css';
|
||||||
import { NavBar } from './components/NavBar'
|
import { NavBar } from './components/NavBar'
|
||||||
import rebase from './startup/firebase'
|
import rebase from './startup/firebase'
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
|
export enum Theme {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
export interface Document {
|
export interface Document {
|
||||||
Title?: string,
|
Title?: string,
|
||||||
Body?: string
|
Body?: string,
|
||||||
}
|
Theme?: Theme
|
||||||
|
}
|
||||||
|
export interface DocumentPlusKey extends Document{key: string}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
.main {
|
.main {
|
||||||
background-color: lightgray;
|
background-color: lightgray;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100;
|
height: 100%;
|
||||||
}
|
}
|
||||||
@@ -5,4 +5,15 @@ export function generateDocId(){
|
|||||||
result += str.charAt(Math.floor(Math.random()*str.length))
|
result += str.charAt(Math.floor(Math.random()*str.length))
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getLanguage(title?: string){
|
||||||
|
let language = null;
|
||||||
|
if(title){
|
||||||
|
let split = title.split('.');
|
||||||
|
if(split.length == 2){
|
||||||
|
language = split[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return language;
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
|
var webpack = require('webpack');
|
||||||
module.exports = {
|
module.exports = {
|
||||||
entry: "./src/index.tsx",
|
entry: "./src/index.tsx",
|
||||||
output: {
|
output: {
|
||||||
filename: "bundle.js",
|
filename: "bundle.js",
|
||||||
path: __dirname + "./dist",
|
path: __dirname + "/dist",
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -12,7 +13,13 @@ module.exports = {
|
|||||||
// Add '.ts' and '.tsx' as resolvable extensions.
|
// Add '.ts' and '.tsx' as resolvable extensions.
|
||||||
extensions: [".ts", ".tsx", ".js", ".json"]
|
extensions: [".ts", ".tsx", ".js", ".json"]
|
||||||
},
|
},
|
||||||
|
plugins: [
|
||||||
|
new webpack.DefinePlugin({
|
||||||
|
'process.env': {
|
||||||
|
NODE_ENV: '"production"'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
],
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
// All files with a '.ts' or '.tsx' extension will be handled by 'awesome-typescript-loader'.
|
// All files with a '.ts' or '.tsx' extension will be handled by 'awesome-typescript-loader'.
|
||||||
|
|||||||
184
yarn.lock
184
yarn.lock
@@ -450,6 +450,10 @@ babel-runtime@^6.18.0:
|
|||||||
core-js "^2.4.0"
|
core-js "^2.4.0"
|
||||||
regenerator-runtime "^0.11.0"
|
regenerator-runtime "^0.11.0"
|
||||||
|
|
||||||
|
bail@^1.0.0:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.2.tgz#f7d6c1731630a9f9f0d4d35ed1f962e2074a1764"
|
||||||
|
|
||||||
balanced-match@^0.4.2:
|
balanced-match@^0.4.2:
|
||||||
version "0.4.2"
|
version "0.4.2"
|
||||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
|
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
|
||||||
@@ -749,6 +753,18 @@ chalk@^2.3.0:
|
|||||||
escape-string-regexp "^1.0.5"
|
escape-string-regexp "^1.0.5"
|
||||||
supports-color "^4.0.0"
|
supports-color "^4.0.0"
|
||||||
|
|
||||||
|
character-entities-legacy@^1.0.0:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.1.tgz#f40779df1a101872bb510a3d295e1fccf147202f"
|
||||||
|
|
||||||
|
character-entities@^1.0.0:
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.1.tgz#f76871be5ef66ddb7f8f8e3478ecc374c27d6dca"
|
||||||
|
|
||||||
|
character-reference-invalid@^1.0.0:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.1.tgz#942835f750e4ec61a308e60c2ef8cc1011202efc"
|
||||||
|
|
||||||
chokidar@^1.6.0, chokidar@^1.7.0:
|
chokidar@^1.6.0, chokidar@^1.7.0:
|
||||||
version "1.7.0"
|
version "1.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
|
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
|
||||||
@@ -833,6 +849,10 @@ code-point-at@^1.0.0:
|
|||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
|
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
|
||||||
|
|
||||||
|
collapse-white-space@^1.0.2:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.3.tgz#4b906f670e5a963a87b76b0e1689643341b6023c"
|
||||||
|
|
||||||
collection-visit@^1.0.0:
|
collection-visit@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
|
resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
|
||||||
@@ -1551,7 +1571,7 @@ extend-shallow@^3.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-extendable "^1.0.1"
|
is-extendable "^1.0.1"
|
||||||
|
|
||||||
extend@~3.0.0:
|
extend@^3.0.0, extend@~3.0.0:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
|
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
|
||||||
|
|
||||||
@@ -2160,6 +2180,17 @@ is-accessor-descriptor@^0.1.6:
|
|||||||
dependencies:
|
dependencies:
|
||||||
kind-of "^3.0.2"
|
kind-of "^3.0.2"
|
||||||
|
|
||||||
|
is-alphabetical@^1.0.0:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.1.tgz#c77079cc91d4efac775be1034bf2d243f95e6f08"
|
||||||
|
|
||||||
|
is-alphanumerical@^1.0.0:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.1.tgz#dfb4aa4d1085e33bdb61c2dee9c80e9c6c19f53b"
|
||||||
|
dependencies:
|
||||||
|
is-alphabetical "^1.0.0"
|
||||||
|
is-decimal "^1.0.0"
|
||||||
|
|
||||||
is-arrayish@^0.2.1:
|
is-arrayish@^0.2.1:
|
||||||
version "0.2.1"
|
version "0.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
|
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
|
||||||
@@ -2170,7 +2201,7 @@ is-binary-path@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
binary-extensions "^1.0.0"
|
binary-extensions "^1.0.0"
|
||||||
|
|
||||||
is-buffer@^1.1.5:
|
is-buffer@^1.1.4, is-buffer@^1.1.5:
|
||||||
version "1.1.6"
|
version "1.1.6"
|
||||||
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
|
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
|
||||||
|
|
||||||
@@ -2194,6 +2225,10 @@ is-date-object@^1.0.1:
|
|||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
|
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
|
||||||
|
|
||||||
|
is-decimal@^1.0.0:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.1.tgz#f5fb6a94996ad9e8e3761fbfbd091f1fca8c4e82"
|
||||||
|
|
||||||
is-descriptor@^0.1.0:
|
is-descriptor@^0.1.0:
|
||||||
version "0.1.6"
|
version "0.1.6"
|
||||||
resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
|
resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
|
||||||
@@ -2266,6 +2301,10 @@ is-glob@^3.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-extglob "^2.1.0"
|
is-extglob "^2.1.0"
|
||||||
|
|
||||||
|
is-hexadecimal@^1.0.0:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.1.tgz#6e084bbc92061fbb0971ec58b6ce6d404e24da69"
|
||||||
|
|
||||||
is-number@^2.1.0:
|
is-number@^2.1.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
|
resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
|
||||||
@@ -2300,7 +2339,7 @@ is-path-inside@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
path-is-inside "^1.0.1"
|
path-is-inside "^1.0.1"
|
||||||
|
|
||||||
is-plain-obj@^1.0.0:
|
is-plain-obj@^1.0.0, is-plain-obj@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
|
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
|
||||||
|
|
||||||
@@ -2346,6 +2385,14 @@ is-utf8@^0.2.0:
|
|||||||
version "0.2.1"
|
version "0.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
|
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
|
||||||
|
|
||||||
|
is-whitespace-character@^1.0.0:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.1.tgz#9ae0176f3282b65457a1992cdb084f8a5f833e3b"
|
||||||
|
|
||||||
|
is-word-character@^1.0.0:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.1.tgz#5a03fa1ea91ace8a6eb0c7cd770eb86d65c8befb"
|
||||||
|
|
||||||
is-wsl@^1.1.0:
|
is-wsl@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
|
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
|
||||||
@@ -2624,6 +2671,10 @@ map-visit@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
object-visit "^1.0.0"
|
object-visit "^1.0.0"
|
||||||
|
|
||||||
|
markdown-escapes@^1.0.0:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.1.tgz#1994df2d3af4811de59a6714934c2b2292734518"
|
||||||
|
|
||||||
math-expression-evaluator@^1.2.14:
|
math-expression-evaluator@^1.2.14:
|
||||||
version "1.2.17"
|
version "1.2.17"
|
||||||
resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
|
resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
|
||||||
@@ -3071,6 +3122,17 @@ parse-asn1@^5.0.0:
|
|||||||
evp_bytestokey "^1.0.0"
|
evp_bytestokey "^1.0.0"
|
||||||
pbkdf2 "^3.0.3"
|
pbkdf2 "^3.0.3"
|
||||||
|
|
||||||
|
parse-entities@^1.0.2:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.1.1.tgz#8112d88471319f27abae4d64964b122fe4e1b890"
|
||||||
|
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-glob@^3.0.4:
|
parse-glob@^3.0.4:
|
||||||
version "3.0.4"
|
version "3.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
|
resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
|
||||||
@@ -3626,6 +3688,16 @@ react-dom@^16.2.0:
|
|||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
prop-types "^15.6.0"
|
prop-types "^15.6.0"
|
||||||
|
|
||||||
|
react-markdown@^3.1.3:
|
||||||
|
version "3.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-3.1.3.tgz#5ac1f20cb5a3e8c47b6ae3c8522e813b08f58c34"
|
||||||
|
dependencies:
|
||||||
|
prop-types "^15.6.0"
|
||||||
|
remark-parse "^4.0.0"
|
||||||
|
unified "^6.1.5"
|
||||||
|
unist-util-visit "^1.1.3"
|
||||||
|
xtend "^4.0.1"
|
||||||
|
|
||||||
react-popper@^0.7.2:
|
react-popper@^0.7.2:
|
||||||
version "0.7.4"
|
version "0.7.4"
|
||||||
resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-0.7.4.tgz#8649d539837e7c6f47bc9b24c9cf57a404e199a1"
|
resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-0.7.4.tgz#8649d539837e7c6f47bc9b24c9cf57a404e199a1"
|
||||||
@@ -3835,6 +3907,26 @@ regjsparser@^0.1.4:
|
|||||||
dependencies:
|
dependencies:
|
||||||
jsesc "~0.5.0"
|
jsesc "~0.5.0"
|
||||||
|
|
||||||
|
remark-parse@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-4.0.0.tgz#99f1f049afac80382366e2e0d0bd55429dd45d8b"
|
||||||
|
dependencies:
|
||||||
|
collapse-white-space "^1.0.2"
|
||||||
|
is-alphabetical "^1.0.0"
|
||||||
|
is-decimal "^1.0.0"
|
||||||
|
is-whitespace-character "^1.0.0"
|
||||||
|
is-word-character "^1.0.0"
|
||||||
|
markdown-escapes "^1.0.0"
|
||||||
|
parse-entities "^1.0.2"
|
||||||
|
repeat-string "^1.5.4"
|
||||||
|
state-toggle "^1.0.0"
|
||||||
|
trim "0.0.1"
|
||||||
|
trim-trailing-lines "^1.0.0"
|
||||||
|
unherit "^1.0.4"
|
||||||
|
unist-util-remove-position "^1.0.0"
|
||||||
|
vfile-location "^2.0.0"
|
||||||
|
xtend "^4.0.1"
|
||||||
|
|
||||||
remove-trailing-separator@^1.0.1:
|
remove-trailing-separator@^1.0.1:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
|
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
|
||||||
@@ -3843,7 +3935,7 @@ repeat-element@^1.1.2:
|
|||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
|
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
|
||||||
|
|
||||||
repeat-string@^1.5.2, repeat-string@^1.6.1:
|
repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1:
|
||||||
version "1.6.1"
|
version "1.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
|
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
|
||||||
|
|
||||||
@@ -3853,6 +3945,10 @@ repeating@^2.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-finite "^1.0.0"
|
is-finite "^1.0.0"
|
||||||
|
|
||||||
|
replace-ext@1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
|
||||||
|
|
||||||
request@2.81.0:
|
request@2.81.0:
|
||||||
version "2.81.0"
|
version "2.81.0"
|
||||||
resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
|
resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
|
||||||
@@ -4229,6 +4325,10 @@ sshpk@^1.7.0:
|
|||||||
jsbn "~0.1.0"
|
jsbn "~0.1.0"
|
||||||
tweetnacl "~0.14.0"
|
tweetnacl "~0.14.0"
|
||||||
|
|
||||||
|
state-toggle@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.0.tgz#d20f9a616bb4f0c3b98b91922d25b640aa2bc425"
|
||||||
|
|
||||||
static-extend@^0.1.1:
|
static-extend@^0.1.1:
|
||||||
version "0.1.2"
|
version "0.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
|
resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
|
||||||
@@ -4443,10 +4543,18 @@ trim-newlines@^1.0.0:
|
|||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
|
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
|
||||||
|
|
||||||
|
trim-trailing-lines@^1.0.0:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.0.tgz#7aefbb7808df9d669f6da2e438cac8c46ada7684"
|
||||||
|
|
||||||
trim@0.0.1:
|
trim@0.0.1:
|
||||||
version "0.0.1"
|
version "0.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd"
|
resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd"
|
||||||
|
|
||||||
|
trough@^1.0.0:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.1.tgz#a9fd8b0394b0ae8fff82e0633a0a36ccad5b5f86"
|
||||||
|
|
||||||
tty-browserify@0.0.0:
|
tty-browserify@0.0.0:
|
||||||
version "0.0.0"
|
version "0.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
|
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
|
||||||
@@ -4505,6 +4613,25 @@ underscore@^1.8.3:
|
|||||||
version "1.8.3"
|
version "1.8.3"
|
||||||
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022"
|
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022"
|
||||||
|
|
||||||
|
unherit@^1.0.4:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.0.tgz#6b9aaedfbf73df1756ad9e316dd981885840cd7d"
|
||||||
|
dependencies:
|
||||||
|
inherits "^2.0.1"
|
||||||
|
xtend "^4.0.1"
|
||||||
|
|
||||||
|
unified@^6.1.5:
|
||||||
|
version "6.1.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/unified/-/unified-6.1.6.tgz#5ea7f807a0898f1f8acdeefe5f25faa010cc42b1"
|
||||||
|
dependencies:
|
||||||
|
bail "^1.0.0"
|
||||||
|
extend "^3.0.0"
|
||||||
|
is-plain-obj "^1.1.0"
|
||||||
|
trough "^1.0.0"
|
||||||
|
vfile "^2.0.0"
|
||||||
|
x-is-function "^1.0.4"
|
||||||
|
x-is-string "^0.1.0"
|
||||||
|
|
||||||
union-value@^1.0.0:
|
union-value@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
|
resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
|
||||||
@@ -4528,6 +4655,26 @@ uniqs@^2.0.0:
|
|||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
|
resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
|
||||||
|
|
||||||
|
unist-util-is@^2.1.1:
|
||||||
|
version "2.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.1.tgz#0c312629e3f960c66e931e812d3d80e77010947b"
|
||||||
|
|
||||||
|
unist-util-remove-position@^1.0.0:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.1.tgz#5a85c1555fc1ba0c101b86707d15e50fa4c871bb"
|
||||||
|
dependencies:
|
||||||
|
unist-util-visit "^1.1.0"
|
||||||
|
|
||||||
|
unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.1.tgz#3ccbdc53679eed6ecf3777dd7f5e3229c1b6aa3c"
|
||||||
|
|
||||||
|
unist-util-visit@^1.1.0, unist-util-visit@^1.1.3:
|
||||||
|
version "1.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.3.0.tgz#41ca7c82981fd1ce6c762aac397fc24e35711444"
|
||||||
|
dependencies:
|
||||||
|
unist-util-is "^2.1.1"
|
||||||
|
|
||||||
unpipe@1.0.0, unpipe@~1.0.0:
|
unpipe@1.0.0, unpipe@~1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
|
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
|
||||||
@@ -4621,6 +4768,25 @@ verror@1.10.0:
|
|||||||
core-util-is "1.0.2"
|
core-util-is "1.0.2"
|
||||||
extsprintf "^1.2.0"
|
extsprintf "^1.2.0"
|
||||||
|
|
||||||
|
vfile-location@^2.0.0:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.2.tgz#d3675c59c877498e492b4756ff65e4af1a752255"
|
||||||
|
|
||||||
|
vfile-message@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.0.0.tgz#a6adb0474ea400fa25d929f1d673abea6a17e359"
|
||||||
|
dependencies:
|
||||||
|
unist-util-stringify-position "^1.1.1"
|
||||||
|
|
||||||
|
vfile@^2.0.0:
|
||||||
|
version "2.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a"
|
||||||
|
dependencies:
|
||||||
|
is-buffer "^1.1.4"
|
||||||
|
replace-ext "1.0.0"
|
||||||
|
unist-util-stringify-position "^1.0.0"
|
||||||
|
vfile-message "^1.0.0"
|
||||||
|
|
||||||
vm-browserify@0.0.4:
|
vm-browserify@0.0.4:
|
||||||
version "0.0.4"
|
version "0.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
|
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
|
||||||
@@ -4785,11 +4951,19 @@ wrappy@1:
|
|||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||||
|
|
||||||
|
x-is-function@^1.0.4:
|
||||||
|
version "1.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/x-is-function/-/x-is-function-1.0.4.tgz#5d294dc3d268cbdd062580e0c5df77a391d1fa1e"
|
||||||
|
|
||||||
|
x-is-string@^0.1.0:
|
||||||
|
version "0.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82"
|
||||||
|
|
||||||
xmlhttprequest@^1.8.0:
|
xmlhttprequest@^1.8.0:
|
||||||
version "1.8.0"
|
version "1.8.0"
|
||||||
resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc"
|
resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc"
|
||||||
|
|
||||||
xtend@^4.0.0:
|
xtend@^4.0.0, xtend@^4.0.1:
|
||||||
version "4.0.1"
|
version "4.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
|
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user