diff --git a/client/package.json b/client/package.json
new file mode 100644
index 0000000..a3f5287
--- /dev/null
+++ b/client/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "rage-fw-client",
+ "version": "0.0.1",
+ "main": "dist/index.js",
+ "type": "module",
+ "files": ["dist/**/*"],
+ "scripts": {
+ "build": "tsup"
+ },
+ "keywords": [],
+ "author": "SashaGoncharov19",
+ "license": "MIT",
+ "description": "Client side of rage-fw"
+}
diff --git a/client/src/index.ts b/client/src/index.ts
new file mode 100644
index 0000000..8d3037e
--- /dev/null
+++ b/client/src/index.ts
@@ -0,0 +1,23 @@
+///
+import rpc from 'rage-rpc'
+
+class Player implements RageFW_Player {
+ public triggerClient(
+ player: PlayerMp,
+ eventName: EventName,
+ ...args: RageFW_ClientEventArguments
+ ): Promise> {
+ return rpc.callClient(player, eventName, ...args)
+ }
+}
+
+export const rage = {
+ player: new Player(),
+}
+
+const bool = rage.player.triggerClient(
+ {} as PlayerMp,
+ 'customClientEvent',
+ 'arg1',
+ 2,
+)
diff --git a/client/tsconfig.json b/client/tsconfig.json
new file mode 100644
index 0000000..22718db
--- /dev/null
+++ b/client/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "lib": ["ESNext", "ES5"],
+ "module": "ESNext",
+ "moduleResolution": "NodeNext",
+ "esModuleInterop": true,
+ "forceConsistentCasingInFileNames": true,
+ "strict": true,
+ "skipLibCheck": true,
+ "types": ["../node_modules/@ragempcommunity/types-server", "../../shared/client"]
+ }
+}
diff --git a/server/package.json b/server/package.json
index c9561a4..4ed7016 100644
--- a/server/package.json
+++ b/server/package.json
@@ -1,5 +1,5 @@
{
- "name": "rage-f-server",
+ "name": "rage-fw-server",
"version": "0.0.1",
"main": "dist/index.js",
"type": "module",
@@ -8,7 +8,7 @@
"build": "tsup"
},
"keywords": [],
- "author": "SashaGonncharov19",
+ "author": "SashaGoncharov19",
"license": "MIT",
- "description": "Server side of rage-f"
+ "description": "Server side for rage-fw"
}
diff --git a/server/src/index.ts b/server/src/index.ts
index d2dd2d1..228cda9 100644
--- a/server/src/index.ts
+++ b/server/src/index.ts
@@ -1,93 +1,31 @@
-///
+///
import rpc from 'rage-rpc'
-type RageFW_ServerEvent = K extends keyof RageFW_ICustomServerEvent
- ? K
- : K extends keyof IServerEvents
- ? K
- : never
-
-type RageFW_ServerEventCallback = K extends keyof RageFW_ICustomServerEvent
- ? (
- player: PlayerMp,
- ...args: Parameters
- ) => ReturnType
- : K extends keyof IServerEvents
- ? ThisifyServerEvents[K]
- : never
-
-type RageFW_ClientEvent = K extends keyof RageFW_ICustomClientEvent
- ? K
- : K extends keyof IServerEvents
- ? K
- : never
-
-type RageFW_ClientEventArguments = K extends keyof RageFW_ICustomClientEvent
- ? Parameters
- : (K extends keyof IServerEvents ? ThisifyServerEvents[K] : never)[]
-
-type RageFW_ClientEventReturn = K extends keyof RageFW_ICustomClientEvent
- ? ReturnType
- : never
-
-interface RageFW_ICustomServerEvent {
- customEvent(arg1: number, arg2: boolean): void
-}
-
-interface RageFW_ICustomClientEvent {
- customClientEvent(arg1: number, arg2: boolean): boolean
-}
-
-class Server {
- register(
- eventName: RageFW_ServerEvent,
+class Server implements RageFW_Server {
+ public register(
+ eventName: EventName,
callback: RageFW_ServerEventCallback,
- ): void
-
- public register(
- eventName: string,
- callback: (...args: unknown[]) => unknown,
- ) {
- rpc.register(eventName, callback)
- }
-
- // public registerMultiple(events: {
- // [name: string]: (player: PlayerMp, ...args: any[]) => any
- // }): void
- //
- // registerMultiple(events: { [name: string]: (...args: any[]) => any }) {
- // Object.entries(events).forEach(([name, callback]) =>
- // rpc.register(name, (data: any[]) => {
- // return Array.isArray(data) ? callback(...data) : callback(data)
- // }),
- // )
- // }
- //
- // register() {}
-}
-
-class Player {
- triggerClient(
- player: PlayerMp,
- eventName: RageFW_ClientEvent,
- ...args: RageFW_ClientEventArguments
- ): RageFW_ClientEventReturn
- public triggerClient(
- player: PlayerMp,
- eventName: string,
- ...args: unknown[]
- ) {
- return rpc.callClient(player, eventName, ...args)
+ ): void {
+ rpc.register(eventName, callback as rpc.ProcedureListener)
}
}
export const rage = {
event: new Server(),
- player: new Player(),
}
-rage.event.register('customEvent', (player, arg1, arg2) => {
- rage.player.triggerClient(player, 'customClientEvent', arg1, arg2)
+rage.event.register('customServerEvent', (player, arg1, arg2) => {
+ return true
})
-function test() {}
+// public registerMultiple(events: {
+// [name: string]: (player: PlayerMp, ...args: any[]) => any
+// }): void
+//
+// registerMultiple(events: { [name: string]: (...args: any[]) => any }) {
+// Object.entries(events).forEach(([name, callback]) =>
+// rpc.register(name, (data: any[]) => {
+// return Array.isArray(data) ? callback(...data) : callback(data)
+// }),
+// )
+// }
diff --git a/server/tsconfig.json b/server/tsconfig.json
index adf1a0d..a456bed 100644
--- a/server/tsconfig.json
+++ b/server/tsconfig.json
@@ -8,6 +8,6 @@
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true,
- "types": ["../node_modules/@ragempcommunity/types-server"]
+ "types": ["../node_modules/@ragempcommunity/types-server", "../../shared/server"]
}
}
diff --git a/shared/client/index.d.ts b/shared/client/index.d.ts
new file mode 100644
index 0000000..1096d1a
--- /dev/null
+++ b/shared/client/index.d.ts
@@ -0,0 +1,25 @@
+///
+
+interface RageFW_ICustomClientEvent {
+ customClientEvent(arg1: string, arg2: number): boolean
+}
+
+type RageFW_ClientEvent = keyof RageFW_ICustomClientEvent | keyof IClientEvents
+
+type RageFW_ClientEventArguments =
+ K extends keyof RageFW_ICustomClientEvent
+ ? Parameters
+ : (K extends keyof IClientEvents ? ThisifyClientEvents[K] : never)[]
+
+type RageFW_ClientEventReturn =
+ K extends keyof RageFW_ICustomClientEvent
+ ? ReturnType
+ : never
+
+declare class RageFW_Player {
+ declare triggerClient(
+ player: PlayerMp,
+ eventName: EventName,
+ ...args: RageFW_ClientEventArguments
+ ): Promise>
+}
\ No newline at end of file
diff --git a/shared/client/package.json b/shared/client/package.json
new file mode 100644
index 0000000..67dab3d
--- /dev/null
+++ b/shared/client/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "rage-fw-shared-client",
+ "version": "0.0.1",
+ "type": "module",
+ "main": "index.d.ts",
+ "files": [
+ "index.d.ts"
+ ],
+ "scripts": {
+ "test": "tsup"
+ },
+ "keywords": [],
+ "author": "SashaGoncharov19",
+ "license": "MIT",
+ "description": "Shared client types for rage-fw"
+}
diff --git a/shared/tsconfig.json b/shared/client/tsconfig.json
similarity index 100%
rename from shared/tsconfig.json
rename to shared/client/tsconfig.json
diff --git a/shared/package.json b/shared/package.json
deleted file mode 100644
index 14bf002..0000000
--- a/shared/package.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "name": "rage-f-shared",
- "version": "0.0.1",
- "main": "dist/index.js",
- "type": "module",
- "scripts": {
- "test": "tsup"
- },
- "keywords": [],
- "author": "SashaGonncharov19",
- "license": "MIT",
- "description": "Server side of rage-f"
-}
diff --git a/shared/server/index.d.ts b/shared/server/index.d.ts
new file mode 100644
index 0000000..d75272d
--- /dev/null
+++ b/shared/server/index.d.ts
@@ -0,0 +1,26 @@
+///
+declare interface RageFW_ICustomServerEvent {
+ customServerEvent(arg1: string, arg2: number): boolean
+}
+
+type RageFW_ServerEvent =
+ | keyof RageFW_ICustomServerEvent
+ | keyof IServerEvents
+
+type RageFW_ServerEventCallback<
+ K extends keyof RageFW_ICustomServerEvent | keyof IServerEvents,
+> = K extends keyof RageFW_ICustomServerEvent
+ ? (
+ player: PlayerMp,
+ ...args: Parameters
+ ) => ReturnType
+ : K extends keyof IServerEvents
+ ? ThisifyServerEvents[K]
+ : never
+
+declare class RageFW_Server {
+ declare register(
+ eventName: EventName,
+ callback: RageFW_ServerEventCallback,
+ ): void
+}
diff --git a/shared/server/package.json b/shared/server/package.json
new file mode 100644
index 0000000..3ed02d1
--- /dev/null
+++ b/shared/server/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "rage-fw-shared-server",
+ "version": "0.0.1",
+ "type": "module",
+ "main": "index.d.ts",
+ "files": [
+ "index.d.ts"
+ ],
+ "scripts": {
+ "test": "tsup"
+ },
+ "keywords": [],
+ "author": "SashaGoncharov19",
+ "license": "MIT",
+ "description": "Shared server types for rage-fw"
+}
diff --git a/shared/server/tsconfig.json b/shared/server/tsconfig.json
new file mode 100644
index 0000000..3ffa57b
--- /dev/null
+++ b/shared/server/tsconfig.json
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+ "target": "es2016",
+ "module": "commonjs",
+ "esModuleInterop": true,
+ "forceConsistentCasingInFileNames": true,
+ "strict": true,
+ "skipLibCheck": true
+ }
+}
diff --git a/shared/src/index.ts b/shared/src/index.ts
deleted file mode 100644
index e69de29..0000000