Browse Source

fysh

master
Jørgen Sverre Lien Sellæg 4 years ago
parent
commit
240fd4e092
  1. 8
      EULA
  2. 7
      README.md
  3. 22
      lay/LICENSE
  4. 23
      lay/bin/server.js
  5. 64
      lay/package.json
  6. 19
      lay/src/App/index.js
  7. 65
      lay/src/WebSocket/index.js
  8. 40
      lay/src/WebSocket/reducer.js
  9. 18
      lay/src/WebSocket/style.css
  10. 25
      lay/src/index.js
  11. 11
      lay/src/reducer.js
  12. 14
      lay/src/root.js
  13. 24
      lay/src/store.js
  14. 0
      lay/tests/.gitkeep
  15. 12
      lay/web/index.html
  16. 34
      lay/webpack.config.js
  17. 3993
      lay/yarn.lock

8
EULA

@ -1,8 +0,0 @@
# EULA
* Projects are subdirectories in the `projects`-root.
* Projects posted without a license, will default to `Åndsverksloven`.
Agreed:
@zalox
@HxxxxxS

7
README.md

@ -1,7 +0,0 @@
# projects
##### a social experiment.
# Introduction
Commit what you want, whenever you want, but you must sign the EULA to contribute.

22
lay/LICENSE

@ -1,22 +0,0 @@
The MIT License (MIT)
Copyright (c) 2017 zalox
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

23
lay/bin/server.js

@ -1,23 +0,0 @@
const Webpack = require('webpack');
const WebpackDevServer = require('webpack-dev-server');
const webpack_config = require('../webpack.config');
const compiler = Webpack(webpack_config);
const server = new WebpackDevServer(compiler, {
contentBase: webpack_config.output.path,
publicPath: webpack_config.output.publicPath,
disableHostCheck: true,
stats: {
colors: true
},
headers: {},
hot: true,
});
const listen_interface = "0.0.0.0";
const listen_port = 2000;
server.listen(listen_port, listen_interface, () => {
console.log("Starting server on " + listen_interface + ":" + listen_port);
});

64
lay/package.json

@ -1,64 +0,0 @@
{
"name": "lay",
"version": "0.0.1",
"description": "Client for toREST bittorrent server",
"main": "run.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"webpack": "webpack",
"pack": "webpack",
"dev": "node ./bin/server.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/n/A.git"
},
"keywords": [
"bittorrent",
"torrent",
"rest",
"react",
"redux"
],
"author": "zalox - Jørgen Lien Sellæg",
"license": "MIT",
"dependencies": {
"react": "^15.5.4",
"react-dom": "^15.5.4",
"react-redux": "^5.0.5",
"redux": "^3.6.0",
"redux-thunk": "^2.2.0"
},
"devDependencies": {
"babel-core": "^6.24.1",
"babel-loader": "^7.0.0",
"babel-preset-env": "^1.5.1",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
"css-loader": "^0.28.2",
"react-hot-loader": "^3.0.0-beta.7",
"style-loader": "^0.18.1",
"webpack": "^2.6.0",
"webpack-dev-server": "^2.4.5"
},
"babel": {
"presets": [
[
"env",
{
"targets": {
"chrome": 52,
"firefox": 53
},
"modules": false
}
],
"stage-0",
"react"
],
"plugins": [
"react-hot-loader/babel"
]
}
}

19
lay/src/App/index.js

@ -1,19 +0,0 @@
import React from 'react';
import { component as Ws } from '../WebSocket';
export class component extends React.Component {
render(props){
return <div>
<h1> lay - toREST </h1>
<Ws />
</div>
}
};
export const reducer = state => {
return {
message: "Hello, World",
title: "LayToRest"
};
};

65
lay/src/WebSocket/index.js

@ -1,65 +0,0 @@
import React from 'react';
import { connect } from 'react-redux';
import style from './style.css';
let openConnection = () => {
return dispatch => {
dispatch(() => connectionOpened(new WebSocket("ws://localhost:3000")));
return {
type: 'WS_OPEN_CONNECTION'
}
}
};
let connectionOpened = ws => {
return {
type: 'WS_CONNECTION_OPENED',
ws
}
};
let closenOpened = () => {
return {
type: 'WS_CLOSE_CONNECTION',
}
};
class component_ extends React.Component {
componentDidMount(){
const { dispatch } = this.props;
dispatch(openConnection);
}
componentWillUnmount(){
const dispatch = this.props;
dispatch(closeConnection);
}
render() {
const { state, attempts } = this.props;
const connection_style = (() => {
switch(state) {
case "Connecting":
return style.status + " " + style.pending;
case "Connected":
return style.status + " " + style.success;
case "Disconnected":
return style.status + " " + style.error;
default:
return "";
}
})();
return (
<div>
<p>Status: <span className={connection_style} >{ state }</span></p>
<p>Connection attempts: <span className={style.status} >{ attempts }</span></p>
</div>
);
}
};
export const component = connect(state => state.websocket)(component_);

40
lay/src/WebSocket/reducer.js

@ -1,40 +0,0 @@
const init = {
ws: null,
attempts: 0,
state: "Disconnected",
onopen: event => console.log(event),
onclose: event => console.log(event),
onmessage: event => console.log(event),
onerror: event => console.log(event),
};
export const reducer = (state = init, action) => {
switch(action.type) {
case 'WS_OPEN_CONNECTION':
action.ws.onmessage = state.onmessage;
action.ws.close = state.onclose;
action.ws.onopen = state.onopen;
action.ws.onerror = state.onerror;
return {
state: "Connecting",
attempts: attempts + 1,
ws: action.ws,
...state
};
case 'WS_CONNECTION_OPENED':
return {
state: "Connected",
...state
}
case 'WS_CLOSE_CONNECTION':
return {
ws: null,
state: "Disconnected",
attempts: 0,
...state
};
default:
return state;
};
return state;
};

18
lay/src/WebSocket/style.css

@ -1,18 +0,0 @@
.error {
color: red;
}
.success {
color: green;
}
.pending {
color: yellow;
}
.status {
font-style: italic;
}

25
lay/src/index.js

@ -1,25 +0,0 @@
import React from 'react';
import ReactDOM from 'react-dom';
import { AppContainer } from 'react-hot-loader';
import store from './store';
import Root from './root';
const render = Component => {
ReactDOM.render(
<AppContainer>
<Component store={store} />
</AppContainer>
, document.getElementById(document_node)
);
}
const document_node = 'lay';
render(Root);
if(module.hot){
module.hot.accept('./root', () => {
render(Root);
});
}

11
lay/src/reducer.js

@ -1,11 +0,0 @@
import { combineReducers } from 'redux';
import { reducer as app } from './App';
import { reducer as websocket } from './WebSocket/reducer';
const rootReducer = combineReducers({
websocket,
app
});
export default rootReducer;

14
lay/src/root.js

@ -1,14 +0,0 @@
import React, { Component } from 'react';
import { Provider } from 'react-redux';
import { component as App } from './App';
export default class Root extends Component {
render() {
const { store } = this.props;
return (
<Provider store={store()}>
<App />
</Provider>
);
}
}

24
lay/src/store.js

@ -1,24 +0,0 @@
import { createStore, applyMiddleware, compose } from 'redux';
import thunk from 'redux-thunk';
import rootReducer from './reducer';
export default initialState => {
const store = createStore(
rootReducer,
initialState,
// compose(
// window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__(),
applyMiddleware(thunk)
// )
);
if(module.hot){
module.hot.accept('./', () => {
store.replaceReducer(require('./reducer').default)
});
}
return store;
};

0
lay/tests/.gitkeep

12
lay/web/index.html

@ -1,12 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>layToREST</title>
</head>
<body>
<div id="lay"></div>
<script src="public/js/index.js"></script>
</body>
</html>

34
lay/webpack.config.js

@ -1,34 +0,0 @@
const webpack = require('webpack');
const path = require('path');
module.exports = {
devtool: 'cheap-module-inline-source-map',
entry: {
'index': [
'react-hot-loader/patch',
'webpack-dev-server/client?http://10.0.0.117:2000',
'webpack/hot/only-dev-server',
'./src',
]
},
output: {
path: path.resolve(__dirname,'web'),
publicPath: '/public/',
filename: 'js/[name].js'
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin()
],
module: {
rules: [
{ test: /\.jsx?$/, use: [ 'babel-loader', ], exclude: /node_modules/ },
{ test: /\.css$/, use: [ 'style-loader', 'css-loader?modules', ], },
],
},
resolve: {
extensions: [".js","jsx",".json"],
mainFiles: ["index"]
}
}

3993
lay/yarn.lock

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save