Merge pull request #64 from kayteh/modernize-deps

chore: modernize deps
This commit is contained in:
41666 2019-11-20 01:04:28 -05:00 committed by GitHub
commit 3ee2e01d0d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
28 changed files with 20598 additions and 15468 deletions

View file

@ -1,18 +1,32 @@
FROM node:10 AS builder
# ENV NODE_ENV production
COPY ./UI /src/UI
RUN cd /src/UI && yarn && yarn build
FROM node:12-alpine AS base
COPY ./Server /src/Server
RUN cd /src/Server && yarn
FROM base AS uibase
WORKDIR /src/UI
RUN cp -r /src/UI/build /src/Server/public
FROM base AS serverbase
WORKDIR /src/Server
RUN apk add --no-cache git python build-base
FROM uibase AS uideps
COPY ./UI/package-lock.json ./UI/package.json ./
RUN npm ci
FROM mhart/alpine-node:10
FROM serverbase AS serverdeps
COPY ./Server/package-lock.json ./Server/package.json ./
RUN npm ci
FROM uideps AS uibuild
COPY ./UI .
RUN npm run build
FROM scratch AS combined
COPY ./Server/ /src/Server
COPY --from=serverdeps /src/Server/node_modules /src/Server/node_modules
COPY --from=uibuild /src/UI/build /src/Server/public
FROM base
ENV NODE_ENV production
WORKDIR /dist
EXPOSE 6769
RUN npm i -g pm2
COPY --from=builder /src/Server /dist
CMD pm2-docker index.js
COPY --from=combined /src/Server /dist
CMD node index.js

5062
Server/package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -10,32 +10,33 @@
"pm2": "pm2"
},
"dependencies": {
"@discordjs/uws": "^11.149.1",
"@discordjs/uws": "^10.149.0",
"@roleypoly/rpc": "^3.0.0-alpha.12",
"chalk": "^2.4.2",
"discord.js": "^11.4.2",
"dotenv": "^7.0.0",
"discord.js": "^11.5.1",
"dotenv": "^8.2.0",
"erlpack": "github:discordapp/erlpack",
"eslint": "^5.16.0",
"eslint-config-standard": "^12.0.0",
"glob": "^7.1.3",
"eslint": "^6.6.0",
"eslint-config-standard": "^14.1.0",
"glob": "^7.1.6",
"immutable": "^4.0.0-rc.12",
"koa": "^2.7.0",
"koa": "^2.11.0",
"koa-better-router": "^2.1.1",
"koa-bodyparser": "^4.2.1",
"koa-compress": "^3.0.0",
"koa-send": "5.0.0",
"koa-session": "^5.10.1",
"koa-session": "^5.12.3",
"koa-static": "^5.0.0",
"ksuid": "^1.2.0",
"lru-cache": "^5.1.1",
"pg": "^7.9.0",
"pg-hstore": "^2.3.2",
"pg": "^7.13.0",
"pg-hstore": "^2.3.3",
"pm2": "^3.5.0",
"sequelize": "^5.21.1",
"socket.io": "^2.2.0",
"superagent": "^5.0.2",
"uuid": "^3.3.2"
"sequelize": "^5.21.2",
"socket.io": "^2.3.0",
"superagent": "^5.1.0",
"uuid": "^3.3.3",
"zucc": "^0.1.2"
},
"devDependencies": {
"prettier": "^1.19.1"

File diff suppressed because it is too large Load diff

1
UI/.prettierignore Normal file
View file

@ -0,0 +1 @@
build

View file

@ -1,2 +0,0 @@
const { override, addDecoratorsLegacy } = require("customize-cra");
module.exports = override(addDecoratorsLegacy());

15401
UI/package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -3,35 +3,34 @@
"version": "0.1.0",
"private": true,
"dependencies": {
"color": "^3.1.0",
"history": "^4.7.2",
"color": "^3.1.2",
"history": "^4.10.1",
"immutable": "^3.8.2",
"moment": "^2.22.2",
"prop-types": "^15.6.2",
"react": "^16.6.3",
"moment": "^2.24.0",
"prop-types": "^15.7.2",
"react": "^16.12.0",
"react-custom-scrollbars": "^4.2.1",
"react-dnd": "^7.0.0",
"react-dnd-html5-backend": "^7.0.0",
"react-dom": "^16.6.3",
"react-dom": "^16.12.0",
"react-immutable-proptypes": "^2.1.0",
"react-redux": "^5.1.1",
"react-redux": "^7.1.3",
"react-router": "^4.3.1",
"react-router-dom": "^4.3.1",
"react-router-redux": "^5.0.0-alpha.8",
"react-scripts": "2.1.8",
"react-typist": "^2.0.4",
"react-scripts": "3.2.0",
"react-typist": "^2.0.5",
"react-typist-cycle": "^0.1.2",
"redux": "^4.0.1",
"redux": "^4.0.4",
"redux-logger": "^3.0.6",
"redux-thunk": "^2.3.0",
"superagent": "^5.0.2",
"uuid": "^3.3.2"
"superagent": "^5.1.0",
"uuid": "^3.3.3"
},
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-app-rewired eject",
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"lint:prettier": "prettier -c '**/*.{ts,tsx,css,yml,yaml,md,json,js,jsx}'"
},
"eslintConfig": {
@ -45,20 +44,14 @@
],
"proxy": "http://localhost:6769",
"devDependencies": {
"@babel/plugin-proposal-decorators": "^7.4.0",
"customize-cra": "^0.2.12",
"eslint-config-standard": "^12.0.0",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-node": "^8.0.0",
"eslint-plugin-promise": "^4.0.1",
"eslint-plugin-react": "^7.11.1",
"eslint-plugin-standard": "^4.0.0",
"node-sass-chokidar": "^1.3.4",
"prettier": "^1.19.1",
"react-app-rewire-scss": "^1.0.2",
"react-app-rewired": "^2.1.1",
"redux-devtools": "^3.4.1",
"redux-devtools-dock-monitor": "^1.1.3",
"redux-devtools-log-monitor": "^1.4.0"
"@babel/plugin-proposal-decorators": "^7.7.0",
"eslint-config-standard": "^14.1.0",
"eslint-plugin-import": "^2.18.2",
"eslint-plugin-node": "^10.0.0",
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-react": "^7.16.0",
"eslint-plugin-standard": "^4.0.1",
"node-sass-chokidar": "^1.4.0",
"prettier": "^1.19.1"
}
}

View file

@ -1,39 +1,36 @@
import React, { Component } from 'react'
import { Provider } from 'react-redux'
import { ConnectedRouter } from 'react-router-redux'
import { DragDropContext } from 'react-dnd'
import HTML5Backend from 'react-dnd-html5-backend'
import createHistory from 'history/createBrowserHistory'
import configureStore from './store/configureStore'
import './App.css'
import './generic.sass'
import { Router } from 'react-router-dom'
import Wrapper from './components/wrapper'
import AppRouter from './router'
import { userInit } from './actions'
import { history } from './router/history'
const history = createHistory()
const store = configureStore(undefined, history)
const store = configureStore(undefined)
window.__APP_STORE__ = store
@DragDropContext(HTML5Backend)
class App extends Component {
componentWillMount() {
class _App extends Component {
componentDidMount() {
store.dispatch(userInit)
}
render() {
return (
<Provider store={store}>
<ConnectedRouter history={history}>
<Router history={history}>
<Wrapper>
<AppRouter />
</Wrapper>
</ConnectedRouter>
</Router>
</Provider>
)
}
}
export default App
export default DragDropContext(HTML5Backend)(_App)

View file

@ -1,5 +1,5 @@
import superagent from 'superagent'
import { push } from 'react-router-redux'
import { history } from '../router/history'
export const fetchServers = async dispatch => {
const rsp = await superagent.get('/api/servers')
@ -79,7 +79,7 @@ const poll = (dispatch, getState) => {
const upd = newServers.keySeq().toSet()
const newSrv = upd.subtract(old)
stopPolling()
dispatch(push(`/s/${newSrv.toJS()[0]}/edit`))
history.push(`/s/${newSrv.toJS()[0]}/edit`)
}
}

View file

@ -2,11 +2,10 @@ import React, { Component } from 'react'
import { connect } from 'react-redux'
import superagent from 'superagent'
@connect()
class OauthCallback extends Component {
state = {
notReady: true,
message: 'chotto matte kudasai...',
message: 'giving discord the good news...',
url: null,
}
@ -29,4 +28,4 @@ class OauthCallback extends Component {
}
}
export default OauthCallback
export default connect()(OauthCallback)

View file

@ -4,11 +4,10 @@ import superagent from 'superagent'
import { connect } from 'react-redux'
import { fetchServers } from '../../actions'
@connect()
class OauthCallback extends Component {
state = {
notReady: true,
message: 'chotto matte kudasai...',
message: 'shaking hands with discord...',
redirect: '/s',
}
@ -84,4 +83,4 @@ class OauthCallback extends Component {
}
}
export default OauthCallback
export default connect()(OauthCallback)

View file

@ -5,11 +5,10 @@ import { connect } from 'react-redux'
import uuidv4 from 'uuid/v4'
import { fetchServers } from '../../actions'
@connect()
class OauthCallback extends Component {
state = {
notReady: true,
message: 'chotto matte kudasai...',
message: 'sending you to discord...',
redirect: '/s',
url: null,
}
@ -83,4 +82,4 @@ class OauthCallback extends Component {
}
}
export default OauthCallback
export default connect()(OauthCallback)

View file

@ -1,29 +1,8 @@
import React, { Component } from 'react'
import { DropTarget } from 'react-dnd'
import Role from '../role/draggable'
import CategoryEditor from './CategoryEditor'
@DropTarget(
Symbol.for('dnd: role'),
{
drop(props, monitor, element) {
props.onDrop(monitor.getItem())
},
canDrop(props, monitor) {
return (
props.mode !== Symbol.for('edit') && monitor.getItem().category !== props.name
)
},
},
(connect, monitor) => ({
connectDropTarget: connect.dropTarget(),
isOver: monitor.isOver(),
isOverCurrent: monitor.isOver({ shallow: true }),
canDrop: monitor.canDrop(),
itemType: monitor.getItemType(),
})
)
class Category extends Component {
render() {
const {
@ -66,4 +45,26 @@ class Category extends Component {
)
}
}
export default Category
const dropTarget = DropTarget(
Symbol.for('dnd: role'),
{
drop(props, monitor, element) {
props.onDrop(monitor.getItem())
},
canDrop(props, monitor) {
return (
props.mode !== Symbol.for('edit') && monitor.getItem().category !== props.name
)
},
},
(connect, monitor) => ({
connectDropTarget: connect.dropTarget(),
isOver: monitor.isOver(),
isOverCurrent: monitor.isOver({ shallow: true }),
canDrop: monitor.canDrop(),
itemType: monitor.getItemType(),
})
)
export default dropTarget(Category)

View file

@ -16,8 +16,7 @@ const mapState = ({ rolePicker, roleEditor, servers }, ownProps) => ({
server: servers.get(ownProps.match.params.server),
})
@connect(mapState)
@DropTarget(
const dropTarget = DropTarget(
Symbol.for('dnd: role'),
{
drop(props, monitor, element) {
@ -36,7 +35,7 @@ const mapState = ({ rolePicker, roleEditor, servers }, ownProps) => ({
})
)
class RoleEditor extends Component {
componentWillMount() {
componentDidMount() {
const {
dispatch,
match: {
@ -232,4 +231,4 @@ class RoleEditor extends Component {
}
}
export default RoleEditor
export default connect(mapState)(dropTarget(RoleEditor))

View file

@ -14,9 +14,8 @@ const mapState = ({ rolePicker, servers }, ownProps) => {
}
}
@connect(mapState)
class RolePicker extends Component {
componentWillMount() {
componentDidMount() {
const {
dispatch,
match: {
@ -207,4 +206,4 @@ class RolePicker extends Component {
}
}
export default RolePicker
export default connect(mapState)(RolePicker)

View file

@ -1,19 +1,8 @@
import React, { Component } from 'react'
import { DragSource } from 'react-dnd'
import Role from './index'
// @DragSource(Symbol.for('dnd: role'), {
// beginDrag ({ role, categoryId }) {
// return { role, category: categoryId }
// }
// },
// (connect, monitor) => ({
// connectDragSource: connect.dragSource(),
// isDragging: monitor.isDragging()
// }))
export default
@DragSource(
const dragSource = DragSource(
Symbol.for('dnd: role'),
{
beginDrag({ role, categoryId }) {
@ -25,8 +14,11 @@ export default
isDragging: monitor.isDragging(),
})
)
class DraggableRole extends Component {
render() {
return <Role {...this.props} type="drag" />
}
}
export default dragSource(DraggableRole)

View file

@ -9,7 +9,7 @@ export default class ServerLanding extends Component {
exit: false,
}
async componentWillMount() {
async componentDidMount() {
console.log(this.props)
try {

View file

@ -1,11 +1,10 @@
import React, { Component } from 'react'
import ImmutablePropTypes from 'react-immutable-proptypes'
import { NavLink } from 'react-router-dom'
import { connect } from 'react-redux'
import { NavLink } from 'react-router-dom'
import * as Actions from '../../actions'
import './UserCard.sass'
@connect()
class UserCard extends Component {
static propTypes = {
user: ImmutablePropTypes.map,
@ -67,4 +66,4 @@ class UserCard extends Component {
}
}
export default UserCard
export default connect()(UserCard)

View file

@ -20,7 +20,6 @@ const mapState = ({ servers, user, appState }) => {
}
}
@connect(mapState)
class Servers extends Component {
get defaultPath() {
console.log(this.props.servers.toJS())
@ -65,4 +64,4 @@ class Servers extends Component {
}
}
export default Servers
export default connect(mapState)(Servers)

View file

@ -1,10 +1,8 @@
import { combineReducers } from 'redux'
import servers from './servers'
import user from './user'
import rolePicker from './role-picker'
import roleEditor from './role-editor'
import { routerMiddleware } from 'react-router-redux'
// import roles from './roles'
const initialState = {
@ -36,7 +34,6 @@ const rootReducer = combineReducers({
appState,
servers,
user,
router: routerMiddleware,
// roles,
rolePicker,
roleEditor,

3
UI/src/router/history.js Normal file
View file

@ -0,0 +1,3 @@
import createHistory from 'history/createBrowserHistory'
export const history = createHistory()

View file

@ -9,10 +9,7 @@ import Servers from '../components/servers'
import ServerLanding from '../components/servers/ServerLanding'
import Pages, { Error404, Landing } from '../pages'
export default
@withRouter
@connect(({ appState, user }) => ({ ready: appState.ready, user }))
class AppRouter extends Component {
class _AppRouter extends Component {
render() {
const isLoggedIn = this.props.user.get('isLoggedIn')
@ -24,7 +21,7 @@ class AppRouter extends Component {
<Switch>
{isLoggedIn === true ? (
// YES LOGGED IN
<Route path="/s" component={Servers} />
<Route path="/s" component={() => <Servers />} />
) : (
// NOT LOGGED IN
[
@ -52,3 +49,7 @@ class AppRouter extends Component {
)
}
}
export default withRouter(
connect(({ appState, user }) => ({ ready: appState.ready, user }))(_AppRouter)
)

View file

@ -1,16 +1,13 @@
import { routerMiddleware } from 'react-router-redux'
import { applyMiddleware, compose, createStore } from 'redux'
import { createLogger } from 'redux-logger'
import thunk from 'redux-thunk'
import rootReducer from '../reducers'
const configureStore = (preloadedState, history) => {
const configureStore = preloadedState => {
const store = createStore(
rootReducer,
preloadedState,
compose(
applyMiddleware(thunk, routerMiddleware(history), createLogger())
)
compose(applyMiddleware(thunk, createLogger()))
)
if (module.hot) {

View file

@ -1,15 +1,10 @@
import { createStore, applyMiddleware } from 'redux'
import { routerMiddleware } from 'react-router-redux'
import thunk from 'redux-thunk'
// import api from '../middleware/api'
import rootReducer from '../reducers'
const configureStore = (preloadedState, history) =>
createStore(
rootReducer,
preloadedState,
applyMiddleware(thunk, routerMiddleware(history))
)
const configureStore = preloadedState =>
createStore(rootReducer, preloadedState, applyMiddleware(thunk))
export default configureStore

11461
UI/yarn.lock

File diff suppressed because it is too large Load diff

View file

@ -3,12 +3,12 @@
docker-compose up -d
pushd Server
yarn
yarn dev
npm i
npm run dev
popd
pushd UI
yarn
yarn start
npm i
npm start
popd