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 FROM node:12-alpine AS base
# ENV NODE_ENV production
COPY ./UI /src/UI
RUN cd /src/UI && yarn && yarn build
COPY ./Server /src/Server FROM base AS uibase
RUN cd /src/Server && yarn 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 ENV NODE_ENV production
WORKDIR /dist WORKDIR /dist
EXPOSE 6769 EXPOSE 6769
RUN npm i -g pm2 COPY --from=combined /src/Server /dist
COPY --from=builder /src/Server /dist CMD node index.js
CMD pm2-docker 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" "pm2": "pm2"
}, },
"dependencies": { "dependencies": {
"@discordjs/uws": "^11.149.1", "@discordjs/uws": "^10.149.0",
"@roleypoly/rpc": "^3.0.0-alpha.12", "@roleypoly/rpc": "^3.0.0-alpha.12",
"chalk": "^2.4.2", "chalk": "^2.4.2",
"discord.js": "^11.4.2", "discord.js": "^11.5.1",
"dotenv": "^7.0.0", "dotenv": "^8.2.0",
"erlpack": "github:discordapp/erlpack", "erlpack": "github:discordapp/erlpack",
"eslint": "^5.16.0", "eslint": "^6.6.0",
"eslint-config-standard": "^12.0.0", "eslint-config-standard": "^14.1.0",
"glob": "^7.1.3", "glob": "^7.1.6",
"immutable": "^4.0.0-rc.12", "immutable": "^4.0.0-rc.12",
"koa": "^2.7.0", "koa": "^2.11.0",
"koa-better-router": "^2.1.1", "koa-better-router": "^2.1.1",
"koa-bodyparser": "^4.2.1", "koa-bodyparser": "^4.2.1",
"koa-compress": "^3.0.0", "koa-compress": "^3.0.0",
"koa-send": "5.0.0", "koa-send": "5.0.0",
"koa-session": "^5.10.1", "koa-session": "^5.12.3",
"koa-static": "^5.0.0", "koa-static": "^5.0.0",
"ksuid": "^1.2.0", "ksuid": "^1.2.0",
"lru-cache": "^5.1.1", "lru-cache": "^5.1.1",
"pg": "^7.9.0", "pg": "^7.13.0",
"pg-hstore": "^2.3.2", "pg-hstore": "^2.3.3",
"pm2": "^3.5.0", "pm2": "^3.5.0",
"sequelize": "^5.21.1", "sequelize": "^5.21.2",
"socket.io": "^2.2.0", "socket.io": "^2.3.0",
"superagent": "^5.0.2", "superagent": "^5.1.0",
"uuid": "^3.3.2" "uuid": "^3.3.3",
"zucc": "^0.1.2"
}, },
"devDependencies": { "devDependencies": {
"prettier": "^1.19.1" "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", "version": "0.1.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"color": "^3.1.0", "color": "^3.1.2",
"history": "^4.7.2", "history": "^4.10.1",
"immutable": "^3.8.2", "immutable": "^3.8.2",
"moment": "^2.22.2", "moment": "^2.24.0",
"prop-types": "^15.6.2", "prop-types": "^15.7.2",
"react": "^16.6.3", "react": "^16.12.0",
"react-custom-scrollbars": "^4.2.1", "react-custom-scrollbars": "^4.2.1",
"react-dnd": "^7.0.0", "react-dnd": "^7.0.0",
"react-dnd-html5-backend": "^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-immutable-proptypes": "^2.1.0",
"react-redux": "^5.1.1", "react-redux": "^7.1.3",
"react-router": "^4.3.1", "react-router": "^4.3.1",
"react-router-dom": "^4.3.1", "react-router-dom": "^4.3.1",
"react-router-redux": "^5.0.0-alpha.8", "react-scripts": "3.2.0",
"react-scripts": "2.1.8", "react-typist": "^2.0.5",
"react-typist": "^2.0.4",
"react-typist-cycle": "^0.1.2", "react-typist-cycle": "^0.1.2",
"redux": "^4.0.1", "redux": "^4.0.4",
"redux-logger": "^3.0.6", "redux-logger": "^3.0.6",
"redux-thunk": "^2.3.0", "redux-thunk": "^2.3.0",
"superagent": "^5.0.2", "superagent": "^5.1.0",
"uuid": "^3.3.2" "uuid": "^3.3.3"
}, },
"scripts": { "scripts": {
"start": "react-app-rewired start", "start": "react-scripts start",
"build": "react-app-rewired build", "build": "react-scripts build",
"test": "react-app-rewired test", "test": "react-scripts test",
"eject": "react-app-rewired eject", "eject": "react-scripts eject",
"lint:prettier": "prettier -c '**/*.{ts,tsx,css,yml,yaml,md,json,js,jsx}'" "lint:prettier": "prettier -c '**/*.{ts,tsx,css,yml,yaml,md,json,js,jsx}'"
}, },
"eslintConfig": { "eslintConfig": {
@ -45,20 +44,14 @@
], ],
"proxy": "http://localhost:6769", "proxy": "http://localhost:6769",
"devDependencies": { "devDependencies": {
"@babel/plugin-proposal-decorators": "^7.4.0", "@babel/plugin-proposal-decorators": "^7.7.0",
"customize-cra": "^0.2.12", "eslint-config-standard": "^14.1.0",
"eslint-config-standard": "^12.0.0", "eslint-plugin-import": "^2.18.2",
"eslint-plugin-import": "^2.14.0", "eslint-plugin-node": "^10.0.0",
"eslint-plugin-node": "^8.0.0", "eslint-plugin-promise": "^4.2.1",
"eslint-plugin-promise": "^4.0.1", "eslint-plugin-react": "^7.16.0",
"eslint-plugin-react": "^7.11.1", "eslint-plugin-standard": "^4.0.1",
"eslint-plugin-standard": "^4.0.0", "node-sass-chokidar": "^1.4.0",
"node-sass-chokidar": "^1.3.4", "prettier": "^1.19.1"
"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"
} }
} }

View file

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

View file

@ -1,5 +1,5 @@
import superagent from 'superagent' import superagent from 'superagent'
import { push } from 'react-router-redux' import { history } from '../router/history'
export const fetchServers = async dispatch => { export const fetchServers = async dispatch => {
const rsp = await superagent.get('/api/servers') const rsp = await superagent.get('/api/servers')
@ -79,7 +79,7 @@ const poll = (dispatch, getState) => {
const upd = newServers.keySeq().toSet() const upd = newServers.keySeq().toSet()
const newSrv = upd.subtract(old) const newSrv = upd.subtract(old)
stopPolling() 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 { connect } from 'react-redux'
import superagent from 'superagent' import superagent from 'superagent'
@connect()
class OauthCallback extends Component { class OauthCallback extends Component {
state = { state = {
notReady: true, notReady: true,
message: 'chotto matte kudasai...', message: 'giving discord the good news...',
url: null, 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 { connect } from 'react-redux'
import { fetchServers } from '../../actions' import { fetchServers } from '../../actions'
@connect()
class OauthCallback extends Component { class OauthCallback extends Component {
state = { state = {
notReady: true, notReady: true,
message: 'chotto matte kudasai...', message: 'shaking hands with discord...',
redirect: '/s', 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 uuidv4 from 'uuid/v4'
import { fetchServers } from '../../actions' import { fetchServers } from '../../actions'
@connect()
class OauthCallback extends Component { class OauthCallback extends Component {
state = { state = {
notReady: true, notReady: true,
message: 'chotto matte kudasai...', message: 'sending you to discord...',
redirect: '/s', redirect: '/s',
url: null, 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 React, { Component } from 'react'
import { DropTarget } from 'react-dnd' import { DropTarget } from 'react-dnd'
import Role from '../role/draggable' import Role from '../role/draggable'
import CategoryEditor from './CategoryEditor' 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 { class Category extends Component {
render() { render() {
const { 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), server: servers.get(ownProps.match.params.server),
}) })
@connect(mapState) const dropTarget = DropTarget(
@DropTarget(
Symbol.for('dnd: role'), Symbol.for('dnd: role'),
{ {
drop(props, monitor, element) { drop(props, monitor, element) {
@ -36,7 +35,7 @@ const mapState = ({ rolePicker, roleEditor, servers }, ownProps) => ({
}) })
) )
class RoleEditor extends Component { class RoleEditor extends Component {
componentWillMount() { componentDidMount() {
const { const {
dispatch, dispatch,
match: { 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 { class RolePicker extends Component {
componentWillMount() { componentDidMount() {
const { const {
dispatch, dispatch,
match: { 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 React, { Component } from 'react'
import { DragSource } from 'react-dnd' import { DragSource } from 'react-dnd'
import Role from './index' import Role from './index'
// @DragSource(Symbol.for('dnd: role'), { const dragSource = DragSource(
// beginDrag ({ role, categoryId }) {
// return { role, category: categoryId }
// }
// },
// (connect, monitor) => ({
// connectDragSource: connect.dragSource(),
// isDragging: monitor.isDragging()
// }))
export default
@DragSource(
Symbol.for('dnd: role'), Symbol.for('dnd: role'),
{ {
beginDrag({ role, categoryId }) { beginDrag({ role, categoryId }) {
@ -25,8 +14,11 @@ export default
isDragging: monitor.isDragging(), isDragging: monitor.isDragging(),
}) })
) )
class DraggableRole extends Component { class DraggableRole extends Component {
render() { render() {
return <Role {...this.props} type="drag" /> return <Role {...this.props} type="drag" />
} }
} }
export default dragSource(DraggableRole)

View file

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

View file

@ -1,11 +1,10 @@
import React, { Component } from 'react' import React, { Component } from 'react'
import ImmutablePropTypes from 'react-immutable-proptypes' import ImmutablePropTypes from 'react-immutable-proptypes'
import { NavLink } from 'react-router-dom'
import { connect } from 'react-redux' import { connect } from 'react-redux'
import { NavLink } from 'react-router-dom'
import * as Actions from '../../actions' import * as Actions from '../../actions'
import './UserCard.sass' import './UserCard.sass'
@connect()
class UserCard extends Component { class UserCard extends Component {
static propTypes = { static propTypes = {
user: ImmutablePropTypes.map, 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 { class Servers extends Component {
get defaultPath() { get defaultPath() {
console.log(this.props.servers.toJS()) 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 { combineReducers } from 'redux'
import servers from './servers' import servers from './servers'
import user from './user' import user from './user'
import rolePicker from './role-picker' import rolePicker from './role-picker'
import roleEditor from './role-editor' import roleEditor from './role-editor'
import { routerMiddleware } from 'react-router-redux'
// import roles from './roles' // import roles from './roles'
const initialState = { const initialState = {
@ -36,7 +34,6 @@ const rootReducer = combineReducers({
appState, appState,
servers, servers,
user, user,
router: routerMiddleware,
// roles, // roles,
rolePicker, rolePicker,
roleEditor, 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 ServerLanding from '../components/servers/ServerLanding'
import Pages, { Error404, Landing } from '../pages' import Pages, { Error404, Landing } from '../pages'
export default class _AppRouter extends Component {
@withRouter
@connect(({ appState, user }) => ({ ready: appState.ready, user }))
class AppRouter extends Component {
render() { render() {
const isLoggedIn = this.props.user.get('isLoggedIn') const isLoggedIn = this.props.user.get('isLoggedIn')
@ -24,7 +21,7 @@ class AppRouter extends Component {
<Switch> <Switch>
{isLoggedIn === true ? ( {isLoggedIn === true ? (
// YES LOGGED IN // YES LOGGED IN
<Route path="/s" component={Servers} /> <Route path="/s" component={() => <Servers />} />
) : ( ) : (
// NOT LOGGED IN // 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 { applyMiddleware, compose, createStore } from 'redux'
import { createLogger } from 'redux-logger' import { createLogger } from 'redux-logger'
import thunk from 'redux-thunk' import thunk from 'redux-thunk'
import rootReducer from '../reducers' import rootReducer from '../reducers'
const configureStore = (preloadedState, history) => { const configureStore = preloadedState => {
const store = createStore( const store = createStore(
rootReducer, rootReducer,
preloadedState, preloadedState,
compose( compose(applyMiddleware(thunk, createLogger()))
applyMiddleware(thunk, routerMiddleware(history), createLogger())
)
) )
if (module.hot) { if (module.hot) {

View file

@ -1,15 +1,10 @@
import { createStore, applyMiddleware } from 'redux' import { createStore, applyMiddleware } from 'redux'
import { routerMiddleware } from 'react-router-redux'
import thunk from 'redux-thunk' import thunk from 'redux-thunk'
// import api from '../middleware/api' // import api from '../middleware/api'
import rootReducer from '../reducers' import rootReducer from '../reducers'
const configureStore = (preloadedState, history) => const configureStore = preloadedState =>
createStore( createStore(rootReducer, preloadedState, applyMiddleware(thunk))
rootReducer,
preloadedState,
applyMiddleware(thunk, routerMiddleware(history))
)
export default configureStore 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 docker-compose up -d
pushd Server pushd Server
yarn npm i
yarn dev npm run dev
popd popd
pushd UI pushd UI
yarn npm i
yarn start npm start
popd popd