commit 9ab27a83dd1869946086e0c5323c6b4894a50e22 Author: Oleksandr Honcharov <0976053529@ukr.net> Date: Thu Jun 13 01:59:21 2024 +0300 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2458761 --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +# Editor +.vscode +.idea + +# Server Files +server/bin +server/client_packages +server/packages +server/dotnet +server/maps +server/package.json +server/plugins +server/BugTrap-x64.dll +server/ragemp-server.exe + +# Development +node_modules +pnpm-lock.yaml \ No newline at end of file diff --git a/apps/cef/.eslintrc.cjs b/apps/cef/.eslintrc.cjs new file mode 100644 index 0000000..d6c9537 --- /dev/null +++ b/apps/cef/.eslintrc.cjs @@ -0,0 +1,18 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parser: '@typescript-eslint/parser', + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/apps/cef/index.html b/apps/cef/index.html new file mode 100644 index 0000000..e4b78ea --- /dev/null +++ b/apps/cef/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/apps/cef/package.json b/apps/cef/package.json new file mode 100644 index 0000000..e16d3d4 --- /dev/null +++ b/apps/cef/package.json @@ -0,0 +1,31 @@ +{ + "name": "rage-fw-example-cef", + "version": "0.0.0", + "type": "module", + "author": "Entity Seven Group", + "license": "CC BY-ND", + "description": "CEF side of rage-fw example", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0", + "rage-fw-cef": "latest" + }, + "devDependencies": { + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@typescript-eslint/eslint-plugin": "^7.2.0", + "@typescript-eslint/parser": "^7.2.0", + "@vitejs/plugin-react": "^4.2.1", + "eslint": "^8.57.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.6", + "typescript": "^5.2.2", + "vite": "^5.2.0" + } +} diff --git a/apps/cef/public/vite.svg b/apps/cef/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/apps/cef/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/cef/src/App.tsx b/apps/cef/src/App.tsx new file mode 100644 index 0000000..7b17250 --- /dev/null +++ b/apps/cef/src/App.tsx @@ -0,0 +1,8 @@ +function App() { + return ( + <> + + ) +} + +export default App diff --git a/apps/cef/src/assets/react.svg b/apps/cef/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/apps/cef/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/cef/src/index.css b/apps/cef/src/index.css new file mode 100644 index 0000000..293d3b1 --- /dev/null +++ b/apps/cef/src/index.css @@ -0,0 +1,3 @@ +body { + margin: 0; +} diff --git a/apps/cef/src/main.tsx b/apps/cef/src/main.tsx new file mode 100644 index 0000000..964aeb4 --- /dev/null +++ b/apps/cef/src/main.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/apps/cef/src/vite-env.d.ts b/apps/cef/src/vite-env.d.ts new file mode 100644 index 0000000..0928eac --- /dev/null +++ b/apps/cef/src/vite-env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/apps/cef/tsconfig.json b/apps/cef/tsconfig.json new file mode 100644 index 0000000..3c73139 --- /dev/null +++ b/apps/cef/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "types": [ + "../../node_modules/@ragempcommunity/types-cef", + "../shared/declarations/rage-fw-shared-types/" + ] + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/apps/cef/tsconfig.node.json b/apps/cef/tsconfig.node.json new file mode 100644 index 0000000..97ede7e --- /dev/null +++ b/apps/cef/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.ts"] +} diff --git a/apps/cef/vite.config.ts b/apps/cef/vite.config.ts new file mode 100644 index 0000000..e84ee6e --- /dev/null +++ b/apps/cef/vite.config.ts @@ -0,0 +1,11 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + build: { + outDir: '../../server/client_packages/cef', + emptyOutDir: true + } +}) diff --git a/apps/client/package.json b/apps/client/package.json new file mode 100644 index 0000000..0dada23 --- /dev/null +++ b/apps/client/package.json @@ -0,0 +1,13 @@ +{ + "name": "rage-fw-example-client", + "version": "0.1.0", + "author": "Entity Seven Group", + "license": "CC BY-ND", + "description": "Client side of rage-fw example", + "scripts": { + "build": "esbuild src/index.ts --bundle --platform=node --outfile=../../server/client_packages/index.js --format=esm" + }, + "dependencies": { + "rage-fw-client": "latest" + } +} diff --git a/apps/client/src/index.ts b/apps/client/src/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/apps/client/tsconfig.json b/apps/client/tsconfig.json new file mode 100644 index 0000000..f53a59f --- /dev/null +++ b/apps/client/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "resolveJsonModule": true, + "baseUrl": "./src", + "types": [ + "../../node_modules/@ragempcommunity/types-client", + "../shared/declarations/rage-fw-shared-types/" + ] + } +} diff --git a/apps/server/package.json b/apps/server/package.json new file mode 100644 index 0000000..5c2b8b6 --- /dev/null +++ b/apps/server/package.json @@ -0,0 +1,13 @@ +{ + "name": "rage-fw-example-server", + "version": "0.1.0", + "author": "Entity Seven Group", + "license": "CC BY-ND", + "description": "Server side of rage-fw example", + "scripts": { + "build": "esbuild src/index.ts --bundle --platform=node --target=node10.4 --outfile=../../server/packages/server/index.js" + }, + "dependencies": { + "rage-fw-server": "latest" + } +} diff --git a/apps/server/src/index.ts b/apps/server/src/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/apps/server/tsconfig.json b/apps/server/tsconfig.json new file mode 100644 index 0000000..7f70b26 --- /dev/null +++ b/apps/server/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "resolveJsonModule": true, + "baseUrl": "./src", + "types": [ + "../../node_modules/@ragempcommunity/types-server", + "../shared/declarations/rage-fw-shared-types/" + ] + } +} diff --git a/apps/shared/declarations/rage-fw-shared-types/index.d.ts b/apps/shared/declarations/rage-fw-shared-types/index.d.ts new file mode 100644 index 0000000..d71f480 --- /dev/null +++ b/apps/shared/declarations/rage-fw-shared-types/index.d.ts @@ -0,0 +1,7 @@ +declare module 'rage-fw-shared-types' { + export interface RageFW_ICustomClientEvent {} + + export interface RageFW_ICustomServerEvent {} + + export interface RageFW_ICustomCefEvent {} +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..301954c --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "framework-example", + "version": "0.1.0", + "author": "Entity Seven Group", + "license": "CC BY-ND", + "description": "This project is example of RAGE FW usage.", + "scripts": { + "server:update": "cd server && rage-win64.exe", + + "install:client": "cd apps/client && pnpm i", + "install:server": "cd apps/server && pnpm i", + "install:cef": "cd apps/cef && pnpm i", + "install:all": "pnpm install:client && pnpm install:server && pnpm install:cef", + + "build:client": "cd apps/client && pnpm build", + "build:server": "cd apps/server && pnpm build", + "build:cef": "cd apps/cef && pnpm build", + "build:all": "pnpm build:client && pnpm build:server && pnpm build:cef" + }, + "devDependencies": { + "@ragempcommunity/types-client": "^2.1.8", + "@ragempcommunity/types-server": "^2.1.8", + "@ragempcommunity/types-cef": "^2.1.8", + "rage-fw-shared-types": "latest", + "esbuild": "^0.21.5", + "typescript": "^5.4.5" + } +} diff --git a/server/conf.json b/server/conf.json new file mode 100644 index 0000000..5ced364 --- /dev/null +++ b/server/conf.json @@ -0,0 +1,9 @@ +{ + "maxplayers" : 100, + "name" : "RAGE FW Server powered by Entity Seven Group", + "gamemode" : "freeroam", + "stream-distance" : 300.0, + "announce" : false, + "csharp" : "disabled", + "port": 22005 +} \ No newline at end of file diff --git a/server/rage-win64.exe b/server/rage-win64.exe new file mode 100644 index 0000000..d63c027 Binary files /dev/null and b/server/rage-win64.exe differ diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..7d3f5fc --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "ESNext", + "lib": ["ESNext", "ES2019"], + "moduleResolution": "node", + "module": "ESNext", + "resolveJsonModule": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true + } +} \ No newline at end of file