Compare commits
23
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8972fee22e | ||
|
|
828d74dad9 | ||
|
|
e1450397ab | ||
|
|
3f48215eb1 | ||
|
|
5205a9e245 | ||
|
|
4695f5dbd1 | ||
|
|
fa4c218a7a | ||
|
|
454fc12d2e | ||
|
|
2da34bd382 | ||
|
|
2113b5ae29 | ||
|
|
ff37d353bd | ||
|
|
3958fd458a | ||
|
|
44602be670 | ||
|
|
aed9bf2091 | ||
|
|
512b37cdbd | ||
|
|
c163ef6585 | ||
|
|
2775b42f59 | ||
|
|
19fdebd986 | ||
|
|
1923cb7a04 | ||
|
|
b336f1e1fe | ||
|
|
e649b46351 | ||
|
|
6d0ae3191f | ||
|
|
47ce0a6b16 |
@@ -0,0 +1,31 @@
|
|||||||
|
env:
|
||||||
|
node: true
|
||||||
|
es6: true
|
||||||
|
es2019: true
|
||||||
|
extends:
|
||||||
|
- 'eslint:recommended'
|
||||||
|
- 'plugin:@typescript-eslint/recommended'
|
||||||
|
# - 'prettier'
|
||||||
|
parser: '@typescript-eslint/parser'
|
||||||
|
parserOptions:
|
||||||
|
ecmaVersion: '2019'
|
||||||
|
sourceType: 'script'
|
||||||
|
plugins:
|
||||||
|
- '@typescript-eslint'
|
||||||
|
ignorePatterns:
|
||||||
|
- 'node_modules'
|
||||||
|
rules: {
|
||||||
|
'@typescript-eslint/no-explicit-any': 'off',
|
||||||
|
'@typescript-eslint/no-unused-vars': [
|
||||||
|
'warn',
|
||||||
|
{
|
||||||
|
"argsIgnorePattern": '^_',
|
||||||
|
"varsIgnorePattern": '^_',
|
||||||
|
"caughtErrorsIgnorePattern": '^_'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'@typescript-eslint/ban-ts-comment': 'off',
|
||||||
|
'@typescript-eslint/ban-types': 'off',
|
||||||
|
'consistent-return': 'warn',
|
||||||
|
'no-empty': 'off',
|
||||||
|
}
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
import { build } from 'esbuild'
|
|
||||||
import { umdWrapper } from 'esbuild-plugin-umd-wrapper'
|
|
||||||
build({
|
|
||||||
entryPoints: ['./src/index.ts'],
|
|
||||||
bundle: true,
|
|
||||||
format: 'umd',
|
|
||||||
platform: 'node',
|
|
||||||
outdir: './dist',
|
|
||||||
plugins: [
|
|
||||||
umdWrapper({
|
|
||||||
libraryName: 'fw',
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
}).then(() => {
|
|
||||||
console.log('Successfully build. Executing types build...')
|
|
||||||
})
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"compilationOptions": {
|
|
||||||
"followSymlinks": true,
|
|
||||||
"preferredConfigPath": "../tsconfig.json"
|
|
||||||
},
|
|
||||||
"entries": [
|
|
||||||
{
|
|
||||||
"filePath": "./src/index.ts",
|
|
||||||
"outFile": "./dist/index.d.ts"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
+3
-4
@@ -1,14 +1,13 @@
|
|||||||
{
|
{
|
||||||
"name": "rage-fw-client",
|
"name": "rage-fw-client",
|
||||||
"version": "0.0.6-alpha.0",
|
"version": "0.0.14-alpha.0",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"type": "module",
|
"types": "dist/index.d.ts",
|
||||||
"files": [
|
"files": [
|
||||||
"dist/**/*"
|
"dist/**/*"
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "node --es-module-specifier-resolution=node build.js && pnpm types",
|
"build": "tsup"
|
||||||
"types": "dts-bundle-generator --config dts.config.json"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ragempcommunity/types-client": "^2.1.8",
|
"@ragempcommunity/types-client": "^2.1.8",
|
||||||
|
|||||||
+17
-13
@@ -1,33 +1,37 @@
|
|||||||
import rpc from 'rage-rpc'
|
import rpc from 'rage-rpc'
|
||||||
import {
|
|
||||||
RageFW_ClientEventReturn,
|
import type {
|
||||||
|
RageFW_ClientEventCallback,
|
||||||
RageFW_ClientEvent,
|
RageFW_ClientEvent,
|
||||||
RageFW_ClientEventArguments,
|
|
||||||
RageFW_ClientServerCallback,
|
|
||||||
RageFW_ClientServerEvent,
|
RageFW_ClientServerEvent,
|
||||||
|
RageFW_ClientServerEventArguments,
|
||||||
|
RageFW_ClientServerEventReturn,
|
||||||
} from './types'
|
} from './types'
|
||||||
|
|
||||||
class Client {
|
class Client {
|
||||||
public register<EventName extends RageFW_ClientServerEvent>(
|
public register<EventName extends RageFW_ClientEvent>(
|
||||||
eventName: EventName,
|
eventName: EventName,
|
||||||
callback: RageFW_ClientServerCallback<EventName>,
|
callback: RageFW_ClientEventCallback<EventName>,
|
||||||
): void {
|
): void {
|
||||||
rpc.register(eventName, callback as rpc.ProcedureListener)
|
rpc.register(eventName, data => {
|
||||||
|
return callback(data)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Player {
|
class Player {
|
||||||
public triggerServer<EventName extends RageFW_ClientEvent>(
|
public triggerServer<EventName extends RageFW_ClientServerEvent>(
|
||||||
eventName: EventName,
|
eventName: EventName,
|
||||||
...args: RageFW_ClientEventArguments<EventName>
|
args: RageFW_ClientServerEventArguments<EventName>,
|
||||||
): Promise<RageFW_ClientEventReturn<EventName>> {
|
): Promise<RageFW_ClientServerEventReturn<EventName>> {
|
||||||
return rpc.callServer(eventName, ...args)
|
return rpc.callServer(eventName, args)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const fw = {
|
export const fw = {
|
||||||
event: new Client(),
|
event: new Client(),
|
||||||
player: new Player(),
|
player: new Player(),
|
||||||
}
|
}
|
||||||
|
|
||||||
export default fw
|
fw.player.triggerServer('customServerEvent', ['wer'])
|
||||||
|
fw.event.register('customClientEvent', ([arg1]) => true)
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
/// <reference types="@ragempcommunity/types-client" />
|
|
||||||
|
|
||||||
import type {
|
|
||||||
RageFW_ICustomClientEvent,
|
|
||||||
RageFW_ICustomServerEvent,
|
|
||||||
} from 'rage-fw-shared-types'
|
|
||||||
|
|
||||||
export type RageFW_ClientEvent =
|
|
||||||
| keyof RageFW_ICustomClientEvent
|
|
||||||
| keyof IClientEvents
|
|
||||||
|
|
||||||
export type RageFW_ClientEventArguments<K extends RageFW_ClientEvent> =
|
|
||||||
K extends keyof RageFW_ICustomClientEvent
|
|
||||||
? Parameters<RageFW_ICustomClientEvent[K]>
|
|
||||||
: (K extends keyof IClientEvents ? IClientEvents[K] : never)[]
|
|
||||||
|
|
||||||
export type RageFW_ClientEventReturn<K extends RageFW_ClientEvent> =
|
|
||||||
K extends keyof RageFW_ICustomClientEvent
|
|
||||||
? ReturnType<RageFW_ICustomClientEvent[K]>
|
|
||||||
: never
|
|
||||||
|
|
||||||
export type RageFW_ClientServerEvent = keyof RageFW_ICustomServerEvent
|
|
||||||
|
|
||||||
export type RageFW_ClientServerCallback<K extends RageFW_ClientServerEvent> = (
|
|
||||||
args: Parameters<RageFW_ICustomServerEvent[K]>,
|
|
||||||
) => ReturnType<RageFW_ICustomServerEvent[K]>
|
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/// <reference types="@ragempcommunity/types-client" />
|
||||||
|
|
||||||
|
import type { RageFW_ICustomClientEvent } from 'rage-fw-shared-types'
|
||||||
|
|
||||||
|
export type RageFW_ClientEvent = keyof RageFW_ICustomClientEvent
|
||||||
|
|
||||||
|
export type RageFW_ClientEventCallback<K extends RageFW_ClientEvent> = (
|
||||||
|
args: Parameters<RageFW_ICustomClientEvent[K]>,
|
||||||
|
) => RageFW_ClientEventReturn<K>
|
||||||
|
|
||||||
|
export type RageFW_ClientEventReturn<K extends RageFW_ClientEvent> =
|
||||||
|
K extends keyof RageFW_ICustomClientEvent
|
||||||
|
? ReturnType<RageFW_ICustomClientEvent[K]>
|
||||||
|
: never
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
export * from './client'
|
||||||
|
export * from './server'
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
/// <reference types="@ragempcommunity/types-client" />
|
||||||
|
|
||||||
|
import type { RageFW_ICustomServerEvent } from 'rage-fw-shared-types'
|
||||||
|
|
||||||
|
export type RageFW_ClientServerEvent = keyof RageFW_ICustomServerEvent
|
||||||
|
|
||||||
|
export type RageFW_ClientServerEventArguments<
|
||||||
|
K extends RageFW_ClientServerEvent,
|
||||||
|
> = K extends keyof RageFW_ICustomServerEvent
|
||||||
|
? Parameters<RageFW_ICustomServerEvent[K]>
|
||||||
|
: never
|
||||||
|
|
||||||
|
export type RageFW_ClientServerEventReturn<K extends RageFW_ClientServerEvent> =
|
||||||
|
K extends keyof RageFW_ICustomServerEvent
|
||||||
|
? ReturnType<RageFW_ICustomServerEvent[K]>
|
||||||
|
: never
|
||||||
+22
-5
@@ -1,9 +1,26 @@
|
|||||||
{
|
{
|
||||||
"extends": "../tsconfig.json",
|
"$schema": "https://json.schemastore.org/tsconfig",
|
||||||
"compilerOptions": {
|
"display": "Base",
|
||||||
"typeRoots": [
|
"exclude": [
|
||||||
"@ragempcommunity/types-client"
|
"node_modules"
|
||||||
],
|
],
|
||||||
"baseUrl": "./src"
|
"compilerOptions": {
|
||||||
|
"incremental": false,
|
||||||
|
"composite": false,
|
||||||
|
"target": "ES2022",
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"emitDecoratorMetadata": true,
|
||||||
|
"moduleDetection": "auto",
|
||||||
|
"module": "CommonJS",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"declaration": false,
|
||||||
|
"declarationMap": false,
|
||||||
|
"sourceMap": false,
|
||||||
|
"downlevelIteration": false,
|
||||||
|
"inlineSourceMap": false,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"strict": true,
|
||||||
|
"skipLibCheck": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import { defineConfig } from 'tsup'
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
entry: ['src/index.ts'],
|
||||||
|
outDir: './dist',
|
||||||
|
format: ['cjs'],
|
||||||
|
noExternal: ['rage-rpc'],
|
||||||
|
dts: true,
|
||||||
|
splitting: false,
|
||||||
|
sourcemap: false,
|
||||||
|
clean: true,
|
||||||
|
})
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
|
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
|
||||||
"version": "0.0.6-alpha.0",
|
"version": "0.0.14-alpha.0",
|
||||||
"npmClient": "pnpm"
|
"npmClient": "pnpm"
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-4
@@ -1,16 +1,26 @@
|
|||||||
{
|
{
|
||||||
"private": true,
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"publish": "pnpm build && lerna publish --force-publish",
|
||||||
|
"build": "lerna run build",
|
||||||
|
"lint": "eslint --c .eslintrc.yaml --ext .ts client/ server/ shared-types/"
|
||||||
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@microsoft/api-extractor": "^7.47.0",
|
||||||
"@ragempcommunity/types-cef": "^2.1.8",
|
"@ragempcommunity/types-cef": "^2.1.8",
|
||||||
"@ragempcommunity/types-client": "^2.1.8",
|
"@ragempcommunity/types-client": "^2.1.8",
|
||||||
"@ragempcommunity/types-server": "^2.1.8",
|
"@ragempcommunity/types-server": "^2.1.8",
|
||||||
"dts-bundle-generator": "^9.5.1",
|
"@typescript-eslint/eslint-plugin": "^7.13.0",
|
||||||
"esbuild": "^0.21.5",
|
"@typescript-eslint/parser": "^7.13.0",
|
||||||
"esbuild-plugin-umd-wrapper": "^2.0.0",
|
"eslint": "^8.56.0",
|
||||||
"lerna": "^8.1.3",
|
"lerna": "^8.1.3",
|
||||||
"prettier": "^3.3.1",
|
"prettier": "^3.3.1",
|
||||||
"rage-rpc": "^0.4.0",
|
"rage-rpc": "^0.4.0",
|
||||||
|
"tsup": "^8.1.0",
|
||||||
"typescript": "^5.4.5"
|
"typescript": "^5.4.5"
|
||||||
},
|
},
|
||||||
"type": "module"
|
"type": "module",
|
||||||
|
"devDependencies": {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+1737
-36
File diff suppressed because it is too large
Load Diff
@@ -1,10 +0,0 @@
|
|||||||
import { build } from 'esbuild'
|
|
||||||
|
|
||||||
build({
|
|
||||||
entryPoints: ['./src/index.ts'],
|
|
||||||
bundle: true,
|
|
||||||
format: 'cjs',
|
|
||||||
platform: 'node',
|
|
||||||
target: 'node10.4',
|
|
||||||
outdir: './dist',
|
|
||||||
}).then(r => console.log('Successfully build.'))
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"compilationOptions": {
|
|
||||||
"followSymlinks": true,
|
|
||||||
"preferredConfigPath": "../tsconfig.json"
|
|
||||||
},
|
|
||||||
"entries": [
|
|
||||||
{
|
|
||||||
"filePath": "./src/index.ts",
|
|
||||||
"outFile": "./dist/index.d.ts"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
+3
-5
@@ -1,15 +1,13 @@
|
|||||||
{
|
{
|
||||||
"name": "rage-fw-server",
|
"name": "rage-fw-server",
|
||||||
"version": "0.0.6-alpha.0",
|
"version": "0.0.14-alpha.0",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"types": "dist/index.d.ts",
|
"types": "dist/src/index.d.ts",
|
||||||
"type": "module",
|
|
||||||
"files": [
|
"files": [
|
||||||
"dist/**/*"
|
"dist/**/*"
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "node --es-module-specifier-resolution=node build.js && pnpm types",
|
"build": "tsup"
|
||||||
"types": "dts-bundle-generator --config dts.config.json"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ragempcommunity/types-server": "^2.1.8",
|
"@ragempcommunity/types-server": "^2.1.8",
|
||||||
|
|||||||
+61
-17
@@ -1,42 +1,79 @@
|
|||||||
import rpc from 'rage-rpc'
|
import rpc from 'rage-rpc'
|
||||||
import {
|
|
||||||
|
import type {
|
||||||
RageFW_ClientEvent,
|
RageFW_ClientEvent,
|
||||||
RageFW_ClientEventArguments,
|
RageFW_ClientEventArguments,
|
||||||
RageFW_ClientEventReturn,
|
RageFW_ClientEventReturn,
|
||||||
|
RageFW_ICustomServerEvent,
|
||||||
RageFW_ServerEvent,
|
RageFW_ServerEvent,
|
||||||
RageFW_ServerEventCallback,
|
RageFW_ServerEventCallback,
|
||||||
} from './types.js'
|
RageFW_ServerEventCallbackCustom,
|
||||||
|
RageFW_ServerEventCallbackNative,
|
||||||
|
} from './types'
|
||||||
import { nativeEvents } from './native.events'
|
import { nativeEvents } from './native.events'
|
||||||
|
|
||||||
class Server {
|
class Server {
|
||||||
|
private isNativeEvent(eventName: string): eventName is keyof IServerEvents {
|
||||||
|
return nativeEvents.includes(eventName)
|
||||||
|
}
|
||||||
|
|
||||||
|
private registerCustom<EventName extends keyof RageFW_ICustomServerEvent>(
|
||||||
|
eventName: EventName,
|
||||||
|
callback: RageFW_ServerEventCallbackCustom<EventName>,
|
||||||
|
): void {
|
||||||
|
rpc.register(
|
||||||
|
eventName,
|
||||||
|
async (
|
||||||
|
args: Parameters<RageFW_ICustomServerEvent[EventName]>,
|
||||||
|
info,
|
||||||
|
) => {
|
||||||
|
callback(info.player as PlayerMp, args)
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private registerNative<EventName extends keyof IServerEvents>(
|
||||||
|
eventName: EventName,
|
||||||
|
callback: RageFW_ServerEventCallbackNative<EventName>,
|
||||||
|
): void {
|
||||||
|
mp.events.add(eventName, callback)
|
||||||
|
}
|
||||||
|
|
||||||
public register<EventName extends RageFW_ServerEvent>(
|
public register<EventName extends RageFW_ServerEvent>(
|
||||||
eventName: EventName,
|
eventName: EventName,
|
||||||
callback: RageFW_ServerEventCallback<EventName>,
|
callback: RageFW_ServerEventCallback<EventName>,
|
||||||
): void {
|
): void {
|
||||||
if (nativeEvents.includes(eventName)) {
|
if (this.isNativeEvent(eventName)) {
|
||||||
mp.events.add(eventName, callback)
|
this.registerNative(
|
||||||
|
eventName,
|
||||||
|
callback as RageFW_ServerEventCallbackNative,
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
rpc.register(eventName, callback as rpc.ProcedureListener)
|
this.registerCustom(
|
||||||
|
eventName,
|
||||||
|
callback as RageFW_ServerEventCallbackCustom,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public registerMany<EventName extends RageFW_ServerEvent>(events: {
|
public registerMany<EventName extends RageFW_ServerEvent>(events: {
|
||||||
[event in EventName]: RageFW_ServerEventCallback<event>
|
[event in EventName]: RageFW_ServerEventCallback<event>
|
||||||
}): void {
|
}): void {
|
||||||
Object.entries(events).map(([eventName, callback]) => {
|
Object.entries<RageFW_ServerEventCallback<EventName>>(events).map(
|
||||||
if (nativeEvents.includes(eventName)) {
|
([eventName, callback]) => {
|
||||||
mp.events.add(
|
if (this.isNativeEvent(eventName)) {
|
||||||
eventName as keyof IServerEvents,
|
this.registerNative(
|
||||||
callback as (...arg: unknown[]) => void,
|
eventName,
|
||||||
|
callback as RageFW_ServerEventCallbackNative,
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
rpc.register(eventName, (args: unknown[]) => {
|
this.registerCustom(
|
||||||
return Array.isArray(args)
|
eventName as keyof RageFW_ICustomServerEvent,
|
||||||
? (callback as (...arg: typeof args) => void)(...args)
|
callback as RageFW_ServerEventCallbackCustom,
|
||||||
: (callback as (arg: typeof args) => void)(args)
|
)
|
||||||
})
|
|
||||||
}
|
}
|
||||||
})
|
},
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,7 +81,7 @@ class Player {
|
|||||||
public triggerClient<EventName extends RageFW_ClientEvent>(
|
public triggerClient<EventName extends RageFW_ClientEvent>(
|
||||||
player: PlayerMp,
|
player: PlayerMp,
|
||||||
eventName: EventName,
|
eventName: EventName,
|
||||||
...args: RageFW_ClientEventArguments<EventName>
|
args: RageFW_ClientEventArguments<EventName>,
|
||||||
): Promise<RageFW_ClientEventReturn<EventName>> {
|
): Promise<RageFW_ClientEventReturn<EventName>> {
|
||||||
return rpc.callClient(player, eventName, args)
|
return rpc.callClient(player, eventName, args)
|
||||||
}
|
}
|
||||||
@@ -54,3 +91,10 @@ export const fw = {
|
|||||||
event: new Server(),
|
event: new Server(),
|
||||||
player: new Player(),
|
player: new Player(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fw.event.register('customServerEvent', (player, args) => true)
|
||||||
|
fw.event.register('playerDeath', (player, args, killer) => {})
|
||||||
|
|
||||||
|
fw.event.registerMany({
|
||||||
|
trailerAttached: (vehicle, trailer) => undefined,
|
||||||
|
})
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
/// <reference types="@ragempcommunity/types-server" />
|
|
||||||
|
|
||||||
import type {
|
|
||||||
RageFW_ICustomServerEvent,
|
|
||||||
RageFW_ICustomClientEvent,
|
|
||||||
} from 'rage-fw-shared-types'
|
|
||||||
|
|
||||||
export type RageFW_ServerEvent =
|
|
||||||
| keyof RageFW_ICustomServerEvent
|
|
||||||
| keyof IServerEvents
|
|
||||||
|
|
||||||
export type RageFW_ServerEventCallback<
|
|
||||||
K extends keyof RageFW_ICustomServerEvent | keyof IServerEvents,
|
|
||||||
> = K extends keyof RageFW_ICustomServerEvent
|
|
||||||
? (
|
|
||||||
player: PlayerMp,
|
|
||||||
...args: Parameters<RageFW_ICustomServerEvent[K]>
|
|
||||||
) => ReturnType<RageFW_ICustomServerEvent[K]>
|
|
||||||
: K extends keyof IServerEvents
|
|
||||||
? ThisifyServerEvents[K]
|
|
||||||
: never
|
|
||||||
|
|
||||||
export type RageFW_ClientEvent = keyof RageFW_ICustomClientEvent
|
|
||||||
|
|
||||||
export type RageFW_ClientEventArguments<K extends RageFW_ClientEvent> =
|
|
||||||
K extends RageFW_ClientEvent
|
|
||||||
? Parameters<RageFW_ICustomClientEvent[K]>
|
|
||||||
: never
|
|
||||||
|
|
||||||
export type RageFW_ClientEventReturn<K extends RageFW_ClientEvent> =
|
|
||||||
K extends RageFW_ClientEvent
|
|
||||||
? ReturnType<RageFW_ICustomClientEvent[K]>
|
|
||||||
: never
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
/// <reference types="@ragempcommunity/types-server" />
|
||||||
|
|
||||||
|
import type { RageFW_ICustomClientEvent } from 'rage-fw-shared-types'
|
||||||
|
|
||||||
|
export type RageFW_ClientEvent = keyof RageFW_ICustomClientEvent
|
||||||
|
|
||||||
|
export type RageFW_ClientEventArguments<K extends RageFW_ClientEvent> =
|
||||||
|
K extends RageFW_ClientEvent
|
||||||
|
? Parameters<RageFW_ICustomClientEvent[K]>
|
||||||
|
: never
|
||||||
|
|
||||||
|
export type RageFW_ClientEventReturn<K extends RageFW_ClientEvent> =
|
||||||
|
K extends RageFW_ClientEvent
|
||||||
|
? ReturnType<RageFW_ICustomClientEvent[K]>
|
||||||
|
: never
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
export * from './client'
|
||||||
|
export * from './server'
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
/// <reference types="@ragempcommunity/types-server" />
|
||||||
|
|
||||||
|
import type { RageFW_ICustomServerEvent } from 'rage-fw-shared-types'
|
||||||
|
export type { RageFW_ICustomServerEvent } from 'rage-fw-shared-types'
|
||||||
|
|
||||||
|
export type RageFW_ServerEvent =
|
||||||
|
| keyof RageFW_ICustomServerEvent
|
||||||
|
| keyof IServerEvents
|
||||||
|
|
||||||
|
export type RageFW_ServerEventCallbackCustom<
|
||||||
|
K extends keyof RageFW_ICustomServerEvent = keyof RageFW_ICustomServerEvent,
|
||||||
|
> = (
|
||||||
|
player: PlayerMp,
|
||||||
|
args: Parameters<RageFW_ICustomServerEvent[K]>,
|
||||||
|
) => ReturnType<RageFW_ICustomServerEvent[K]>
|
||||||
|
|
||||||
|
export type RageFW_ServerEventCallbackNative<
|
||||||
|
K extends keyof IServerEvents = keyof IServerEvents,
|
||||||
|
> = IServerEvents[K]
|
||||||
|
|
||||||
|
export type RageFW_ServerEventCallback<K extends RageFW_ServerEvent> =
|
||||||
|
K extends keyof RageFW_ICustomServerEvent
|
||||||
|
? RageFW_ServerEventCallbackCustom<K>
|
||||||
|
: K extends keyof IServerEvents
|
||||||
|
? RageFW_ServerEventCallbackNative<K>
|
||||||
|
: never
|
||||||
+21
-5
@@ -1,9 +1,25 @@
|
|||||||
{
|
{
|
||||||
"extends": "../tsconfig.json",
|
"$schema": "https://json.schemastore.org/tsconfig",
|
||||||
"compilerOptions": {
|
"display": "Base",
|
||||||
"typeRoots": [
|
"exclude": [
|
||||||
"@ragempcommunity/types-server"
|
"node_modules"
|
||||||
],
|
],
|
||||||
"baseUrl": "./src"
|
"compilerOptions": {
|
||||||
|
"incremental": false,
|
||||||
|
"composite": false,
|
||||||
|
"target": "ES2022",
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"moduleDetection": "auto",
|
||||||
|
"module": "CommonJS",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"declaration": true,
|
||||||
|
"declarationMap": false,
|
||||||
|
"sourceMap": false,
|
||||||
|
"downlevelIteration": false,
|
||||||
|
"inlineSourceMap": false,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"strict": true,
|
||||||
|
"skipLibCheck": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import { defineConfig } from 'tsup'
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
entry: ['src/index.ts'],
|
||||||
|
outDir: './dist',
|
||||||
|
format: ['cjs'],
|
||||||
|
noExternal: ['rage-rpc'],
|
||||||
|
experimentalDts: true,
|
||||||
|
splitting: false,
|
||||||
|
sourcemap: false,
|
||||||
|
clean: true,
|
||||||
|
})
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "rage-fw-shared-types",
|
"name": "rage-fw-shared-types",
|
||||||
"version": "0.0.5-alpha.0",
|
"version": "0.0.14-alpha.0",
|
||||||
"types": "types/types/index.d.ts",
|
"types": "types/types/index.d.ts",
|
||||||
"files": [
|
"files": [
|
||||||
"types/**/*"
|
"types/**/*"
|
||||||
|
|||||||
Vendored
+7
-2
@@ -1,5 +1,10 @@
|
|||||||
declare module 'rage-fw-shared-types' {
|
declare module 'rage-fw-shared-types' {
|
||||||
export interface RageFW_ICustomServerEvent {}
|
export interface RageFW_ICustomServerEvent {
|
||||||
|
customServerEvent(customArgs: string): boolean
|
||||||
|
customServerEvent2(...customArgs2: number[]): void
|
||||||
|
}
|
||||||
|
|
||||||
export interface RageFW_ICustomClientEvent {}
|
export interface RageFW_ICustomClientEvent {
|
||||||
|
customClientEvent(clientArgs: string): boolean
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "rage-fw-shared",
|
"name": "rage-fw-shared",
|
||||||
"version": "0.0.5-alpha.0",
|
"version": "0.0.14-alpha.0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "index.d.ts",
|
"main": "index.d.ts",
|
||||||
"files": [
|
"files": [
|
||||||
|
|||||||
Reference in New Issue
Block a user