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