diff --git a/.devcontainer/.zshrc b/.devcontainer/.zshrc index ce51ecd..72a0a2c 100644 --- a/.devcontainer/.zshrc +++ b/.devcontainer/.zshrc @@ -1,10 +1,7 @@ # Path to your oh-my-zsh installation. export ZSH="/root/.oh-my-zsh" -# Set name of the theme to load --- if set to "random", it will -# load a random theme each time oh-my-zsh is loaded, in which case, -# to know which specific one was loaded, run: echo $RANDOM_THEME -# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes +# https://typewritten.dev/#/git_status_indicators ZSH_THEME="typewritten" # Which plugins would you like to load? diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index fad6989..e44e52c 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -3,15 +3,11 @@ ARG VARIANT="14-buster" FROM mcr.microsoft.com/vscode/devcontainers/typescript-node:0-${VARIANT} -# [Optional] Uncomment this section to install additional OS packages. -# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ -# && apt-get -y install --no-install-recommends +RUN apt update && export DEBIAN_FRONTEND=noninteractive \ + && apt -y install --no-install-recommends git-lfs \ + && rm -rf /var/lib/apt/lists/* -# [Optional] Uncomment if you want to install an additional version of node using nvm -# ARG EXTRA_NODE_VERSION=10 -# RUN su node -c "source /usr/local/share/nvm/nvm.sh && nvm install ${EXTRA_NODE_VERSION}" - -# [Optional] Uncomment if you want to install more global node packages +RUN git lfs install RUN npm install -g lerna ENV ZSH_CUSTOM /root/.oh-my-zsh/ diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index dd51256..75f69a1 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -4,7 +4,6 @@ "name": "Node.js & TypeScript", "build": { "dockerfile": "Dockerfile", - // Update 'VARIANT' to pick a Node version: 10, 12, 14 "args": { "VARIANT": "14" } @@ -12,14 +11,24 @@ // Set *default* container specific settings.json values on container create. "settings": { "terminal.integrated.shell.linux": "/bin/zsh", - "workbench.sideBar.location": "right" + "workbench.sideBar.location": "right", + "files.exclude": { + "**/node_modules": true, + "**/package-lock.json": true + } }, // Add the IDs of extensions you want installed when the container is created. "extensions": [ "dbaeumer.vscode-eslint", "ms-vscode.vscode-typescript-tslint-plugin" ], - // Use 'forwardPorts' to make a list of ports inside the container available locally. + "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=cached", + "mounts": [ + "source=decla-red-root-node_modules,target=/workspace/node_modules,type=volume", + "source=decla-red-frontend-node_modules,target=/workspace/frontend/node_modules,type=volume", + "source=decla-red-backend-node_modules,target=/workspace/backend/node_modules,type=volume", + "source=decla-red-shared-node_modules,target=/workspace/shared/node_modules,type=volume", + ], "forwardPorts": [ 3000, 8080 diff --git a/backend/.eslintignore b/.eslintignore similarity index 100% rename from backend/.eslintignore rename to .eslintignore diff --git a/backend/.eslintrc.json b/.eslintrc.json similarity index 100% rename from backend/.eslintrc.json rename to .eslintrc.json diff --git a/.gitattributes b/.gitattributes index ea544b2..1b186de 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,2 @@ *.psd filter=lfs diff=lfs merge=lfs -text +* text=auto diff --git a/backend/.prettierrc b/.prettierrc similarity index 100% rename from backend/.prettierrc rename to .prettierrc diff --git a/backend/package.json b/backend/package.json index 08b0a60..7d5cbc3 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,52 +1,33 @@ { "name": "decla.red-server", - "version": "0.0.0", "description": "Game server for decla.red", "private": true, "main": "index.js", "scripts": { - "start": "concurrently --kill-others \"webpack --mode development -w\" \"npx nodemon dist/main.js\"", - "lint": "npx eslint --fix \"src/**/*.ts\" && npx prettier --write \"src/**/*.ts\"", + "start": "concurrently --kill-others \"webpack --mode development -w\" \"nodemon --legacy-watch dist/main.js\"", + "lint": "eslint --fix \"src/**/*.ts\" && prettier --write \"src/**/*.ts\"", "build": "webpack --mode production" }, "keywords": [], "author": "AndrĂ¡s Schmelczer (https://schmelczer.dev/)", "devDependencies": { - "@types/express": "^4.17.8", - "@types/gl-matrix": "^2.4.5", - "@types/node": "^14.11.2", - "@typescript-eslint/eslint-plugin": "^3.9.1", - "@typescript-eslint/parser": "^3.9.1", - "clean-webpack-plugin": "^3.0.0", - "concurrently": "^5.3.0", - "eslint": "^7.2.0", - "eslint-config-prettier": "^6.11.0", - "eslint-plugin-import": "^2.21.2", - "eslint-plugin-prettier": "^3.1.4", - "eslint-plugin-unused-imports": "^0.1.3", - "firebase": "^7.22.0", - "gl-matrix": "^3.3.0", "nodemon": "^2.0.4", - "prettier": "^2.0.5", - "terser-webpack-plugin": "^2.3.5", - "ts-loader": "^8.0.1", - "typescript": "^3.8.3", - "@types/uuid": "^8.0.0", - "uuid": "^8.2.0", + "concurrently": "^5.3.0", "webpack": "^4.43.0", "webpack-cli": "^3.3.11", + "terser-webpack-plugin": "^2.3.5", "webpack-dev-server": "^3.10.3", - "file-loader": "^6.1.0", - "@types/cors": "^2.8.7", - "@types/socket.io": "^2.1.11", - "webpack-node-externals": "^2.5.2", - "shared": "file:../shared" + "clean-webpack-plugin": "^3.0.0", + "raw-loader": "^4.0.1", + "resolve-url-loader": "^3.1.1", + "ts-loader": "^8.0.1" }, "dependencies": { "cors": "^2.8.5", "express": "^4.17.1", "http": "0.0.1-security", "socket.io": "^2.3.0", - "uws": "^10.148.1" + "uws": "^10.148.1", + "webpack-node-externals": "^2.5.2" } } diff --git a/backend/src/index.html b/backend/src/index.html index a06fb07..17aef93 100644 --- a/backend/src/index.html +++ b/backend/src/index.html @@ -1,29 +1,31 @@ - - - - - Server info - - - + Server info - socket.emit('join', 'insights'); + - socket.on('insights', (message) => { - document.body.innerText += message; - }); - - + + + + \ No newline at end of file diff --git a/backend/src/physics/containers/physical-container.ts b/backend/src/physics/containers/physical-container.ts index 61b7a56..440b3a0 100644 --- a/backend/src/physics/containers/physical-container.ts +++ b/backend/src/physics/containers/physical-container.ts @@ -71,7 +71,6 @@ export class PhysicalContainer { private createGroupForCommand(commandType: string) { const objectsReactingToCommand = []; - console.log(commandType); this.objects.forEach((o, _) => { if (o.reactsToCommand(commandType)) { objectsReactingToCommand.push(o); diff --git a/backend/webpack.config.js b/backend/webpack.config.js index 9aa03bb..a66ad35 100644 --- a/backend/webpack.config.js +++ b/backend/webpack.config.js @@ -23,8 +23,7 @@ module.exports = { }, devtool: 'source-map', watchOptions: { - aggregateTimeout: 600, - ignored: /node_modules/, + poll: true }, optimization: { minimize: true, diff --git a/frontend/.eslintignore b/frontend/.eslintignore deleted file mode 100644 index 2cb7d2a..0000000 --- a/frontend/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -**/*.js diff --git a/frontend/.eslintrc.json b/frontend/.eslintrc.json deleted file mode 100644 index 8275ed8..0000000 --- a/frontend/.eslintrc.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "root": true, - "env": { - "browser": true, - "es2020": true - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended", - "prettier", - "prettier/@typescript-eslint" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 11, - "sourceType": "module" - }, - "plugins": ["unused-imports", "@typescript-eslint", "prettier"], - "rules": { - "prettier/prettier": "error", - "no-unused-vars": "off", - "unused-imports/no-unused-imports-ts": "error", - "@typescript-eslint/no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }], - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/explicit-module-boundary-types": "off", - "@typescript-eslint/no-non-null-assertion": "off" - } -} diff --git a/frontend/.prettierrc b/frontend/.prettierrc deleted file mode 100644 index 5aae580..0000000 --- a/frontend/.prettierrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "trailingComma": "es5", - "printWidth": 90, - "tabWidth": 2, - "singleQuote": true, - "endOfLine": "lf" -} diff --git a/frontend/package.json b/frontend/package.json index 780f266..78820ab 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,5 @@ { - "name": "decla.red", - "version": "0.0.0", + "name": "decla.red-frontend", "description": "![logo](media/declared.png)", "private": true, "main": "index.js", @@ -16,54 +15,29 @@ "autoprefixer": {} } }, - "browserslist": [ - "defaults" - ], - "sideEffects": [ - "*.scss" - ], "devDependencies": { - "@types/gl-matrix": "^2.4.5", - "@types/uuid": "^8.0.0", - "@typescript-eslint/eslint-plugin": "^3.9.1", - "@typescript-eslint/parser": "^3.9.1", - "autoprefixer": "^9.8.5", + "webpack": "^4.43.0", + "webpack-cli": "^3.3.11", + "terser-webpack-plugin": "^2.3.5", + "webpack-dev-server": "^3.10.3", "clean-webpack-plugin": "^3.0.0", - "css-loader": "^3.5.2", - "cssnano": "^4.1.10", - "eslint": "^7.2.0", - "sdf-2d": "^0.4.0", - "eslint-config-prettier": "^6.11.0", - "eslint-plugin-import": "^2.21.2", - "eslint-plugin-prettier": "^3.1.4", - "eslint-plugin-unused-imports": "^0.1.3", - "gl-matrix": "^3.3.0", "html-webpack-inline-source-plugin": "0.0.10", "html-webpack-plugin": "^3.2.0", "image-webpack-loader": "^6.0.0", "mini-css-extract-plugin": "^0.9.0", "optimize-css-assets-webpack-plugin": "^5.0.3", "postcss-loader": "^3.0.0", - "prettier": "^2.0.5", "raw-loader": "^4.0.1", "resolve-url-loader": "^3.1.1", - "responsive-loader": "^1.2.0", "sass": "^1.26.3", "sass-loader": "^9.0.2", - "sharp": "^0.25.4", - "style-loader": "^1.1.4", "svg-url-loader": "^6.0.0", - "terser-webpack-plugin": "^2.3.5", - "ts-loader": "^8.0.1", - "typescript": "^3.8.3", - "uuid": "^8.2.0", - "file-loader": "^6.1.0", - "webpack": "^4.43.0", - "webpack-cli": "^3.3.11", - "webpack-dev-server": "^3.10.3", - "firebase": "^7.22.0", - "@types/socket.io-client": "^1.4.34", - "socket.io-client": "^2.3.1", - "shared": "file:../shared" - } + "ts-loader": "^8.0.1" + }, + "browserslist": [ + "defaults" + ], + "sideEffects": [ + "*.scss" + ] } diff --git a/frontend/src/index.html b/frontend/src/index.html index cb79086..c63c46c 100644 --- a/frontend/src/index.html +++ b/frontend/src/index.html @@ -1,22 +1,21 @@ - - - - + + + + - - + + - decla.red - - - -
- - - + decla.red + + + + +
+ + + + \ No newline at end of file diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index 696d45b..ebbeb23 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -21,13 +21,14 @@ module.exports = { filename: '[name].[contenthash].js', path: PATHS.bundles, }, + devtool: 'source-map', - watchOptions: { - ignored: /node_modules/, - }, devServer: { host: '0.0.0.0', disableHostCheck: true, + watchOptions: { + poll: true + }, }, optimization: { minimize: true, diff --git a/lerna.json b/lerna.json new file mode 100644 index 0000000..e3d3386 --- /dev/null +++ b/lerna.json @@ -0,0 +1,8 @@ +{ + "packages": [ + "frontend", + "shared", + "backend" + ], + "version": "0.0.0" +} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..b904c1c --- /dev/null +++ b/package.json @@ -0,0 +1,39 @@ +{ + "name": "root", + "private": true, + "scripts": { + "start": "lerna run --parallel start" + }, + "devDependencies": { + "@types/cors": "^2.8.7", + "@types/express": "^4.17.8", + "@types/node": "^14.11.2", + "@types/socket.io": "^2.1.11", + "@types/socket.io-client": "^1.4.34", + "@types/uuid": "^8.0.0", + "@typescript-eslint/eslint-plugin": "^3.9.1", + "@typescript-eslint/parser": "^3.9.1", + "autoprefixer": "^9.8.5", + "lerna": "^3.22.1", + "css-loader": "^3.5.2", + "cssnano": "^4.1.10", + "eslint": "^7.2.0", + "eslint-config-prettier": "^6.11.0", + "eslint-plugin-import": "^2.21.2", + "eslint-plugin-prettier": "^3.1.4", + "eslint-plugin-unused-imports": "^0.1.3", + "file-loader": "^6.1.0", + "firebase": "^7.22.0", + "gl-matrix": "^3.3.0", + "prettier": "^2.0.5", + "sdf-2d": "^0.4.0", + "socket.io-client": "^2.3.1", + "typescript": "^3.8.3", + "uuid": "^8.2.0" + }, + "dependencies": { + "decla.red-frontend": "file:frontend", + "decla.red-server": "file:backend", + "shared": "file:shared" + } +} diff --git a/shared/.eslintignore b/shared/.eslintignore deleted file mode 100644 index 2cb7d2a..0000000 --- a/shared/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -**/*.js diff --git a/shared/.eslintrc.json b/shared/.eslintrc.json deleted file mode 100644 index 8275ed8..0000000 --- a/shared/.eslintrc.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "root": true, - "env": { - "browser": true, - "es2020": true - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended", - "prettier", - "prettier/@typescript-eslint" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 11, - "sourceType": "module" - }, - "plugins": ["unused-imports", "@typescript-eslint", "prettier"], - "rules": { - "prettier/prettier": "error", - "no-unused-vars": "off", - "unused-imports/no-unused-imports-ts": "error", - "@typescript-eslint/no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }], - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/explicit-module-boundary-types": "off", - "@typescript-eslint/no-non-null-assertion": "off" - } -} diff --git a/shared/.prettierrc b/shared/.prettierrc deleted file mode 100644 index 5aae580..0000000 --- a/shared/.prettierrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "trailingComma": "es5", - "printWidth": 90, - "tabWidth": 2, - "singleQuote": true, - "endOfLine": "lf" -} diff --git a/shared/package.json b/shared/package.json index 9e28138..af908e4 100644 --- a/shared/package.json +++ b/shared/package.json @@ -1,17 +1,9 @@ { "name": "shared", - "version": "0.0.0", + "private": true, "description": "Shared library between backend and frontend", "main": "src/main.ts", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC", - "devDependencies": { - "@types/gl-matrix": "^3.2.0", - "@types/uuid": "^8.0.0", - "gl-matrix": "^3.3.0", - "uuid": "^8.2.0" } -} +} \ No newline at end of file