Rpc integration + type fixes #3
@ -1,7 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "ragefw-rpc",
 | 
			
		||||
    "description": "RageFW RPC",
 | 
			
		||||
    "version": "0.2.0",
 | 
			
		||||
    "version": "0.2.1",
 | 
			
		||||
    "scripts": {
 | 
			
		||||
        "build": "tsup",
 | 
			
		||||
        "start": "npx ./dist create"
 | 
			
		||||
 | 
			
		||||
@ -8,6 +8,9 @@ import {
 | 
			
		||||
    Utils,
 | 
			
		||||
} from './utils'
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * NOT INTENDED FOR OUT-OF-CONTEXT USE
 | 
			
		||||
 */
 | 
			
		||||
export class Browser extends Wrapper {
 | 
			
		||||
    constructor(
 | 
			
		||||
        options: RpcWrapperConfig = {
 | 
			
		||||
@ -17,6 +20,9 @@ export class Browser extends Wrapper {
 | 
			
		||||
        super(options)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * NOT INTENDED FOR OUT-OF-CONTEXT USE
 | 
			
		||||
     */
 | 
			
		||||
    public _resolveEmitDestination(dataRaw: string) {
 | 
			
		||||
        let state = Utils.prepareExecution(dataRaw)
 | 
			
		||||
 | 
			
		||||
@ -35,15 +41,18 @@ export class Browser extends Wrapper {
 | 
			
		||||
        mp.trigger(Events.LOCAL_EVENT_LISTENER, dataRaw)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // called to browser
 | 
			
		||||
    private async emit(dataRaw: string) {
 | 
			
		||||
        let state = Utils.prepareExecution(dataRaw)
 | 
			
		||||
        const responseEventName = Utils.generateResponseEventName(state.uuid)
 | 
			
		||||
 | 
			
		||||
        // check availability
 | 
			
		||||
        state = this.verifyEvent_(state)
 | 
			
		||||
        if (state.knownError) {
 | 
			
		||||
            this.triggerError_(state, state.knownError)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // execute + generate response
 | 
			
		||||
        const response = await this.state_[state.eventName](
 | 
			
		||||
            ...(Array.isArray(state.data) ? state.data : []),
 | 
			
		||||
        )
 | 
			
		||||
@ -58,6 +67,7 @@ export class Browser extends Wrapper {
 | 
			
		||||
        }
 | 
			
		||||
        const responseDataRaw = Utils.prepareTransfer(responseState)
 | 
			
		||||
 | 
			
		||||
        // send response
 | 
			
		||||
        switch (state.calledFrom) {
 | 
			
		||||
            case Environment.BROWSER:
 | 
			
		||||
                try {
 | 
			
		||||
 | 
			
		||||
@ -9,6 +9,9 @@ import {
 | 
			
		||||
    Utils,
 | 
			
		||||
} from './utils'
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * NOT INTENDED FOR OUT-OF-CONTEXT USE
 | 
			
		||||
 */
 | 
			
		||||
export class Client extends Wrapper {
 | 
			
		||||
    private _browser: any = null
 | 
			
		||||
 | 
			
		||||
@ -24,6 +27,9 @@ export class Client extends Wrapper {
 | 
			
		||||
        this._browser = browser
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * NOT INTENDED FOR OUT-OF-CONTEXT USE
 | 
			
		||||
     */
 | 
			
		||||
    public _resolveEmitDestination(dataRaw: string) {
 | 
			
		||||
        const state = Utils.prepareExecution(dataRaw)
 | 
			
		||||
 | 
			
		||||
@ -46,14 +52,17 @@ export class Client extends Wrapper {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // called to client
 | 
			
		||||
    private async emit(state: RPCState) {
 | 
			
		||||
        this.errorNoBrowser()
 | 
			
		||||
 | 
			
		||||
        // check availability
 | 
			
		||||
        state = this.verifyEvent_(state)
 | 
			
		||||
        if (state.knownError) {
 | 
			
		||||
            this.triggerError_(state, state.knownError)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // execute + generate response
 | 
			
		||||
        const responseEventName = Utils.generateResponseEventName(state.uuid)
 | 
			
		||||
        const response = await this.state_[state.eventName](
 | 
			
		||||
            ...(Array.isArray(state.data) ? state.data : []),
 | 
			
		||||
@ -68,6 +77,7 @@ export class Client extends Wrapper {
 | 
			
		||||
            type: RPCEventType.RESPONSE,
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // send response
 | 
			
		||||
        switch (state.calledFrom) {
 | 
			
		||||
            case Environment.CLIENT:
 | 
			
		||||
                try {
 | 
			
		||||
@ -103,11 +113,13 @@ export class Client extends Wrapper {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // called to server
 | 
			
		||||
    private emitServer(dataRaw: string) {
 | 
			
		||||
        this.errorNoBrowser()
 | 
			
		||||
 | 
			
		||||
        const state = Utils.prepareExecution(dataRaw)
 | 
			
		||||
 | 
			
		||||
        // if event is called from browser we will forward response through client via this
 | 
			
		||||
        if (state.calledFrom === Environment.BROWSER) {
 | 
			
		||||
            const responseEventName = Utils.generateResponseEventName(
 | 
			
		||||
                state.uuid,
 | 
			
		||||
@ -129,11 +141,13 @@ export class Client extends Wrapper {
 | 
			
		||||
        mp.events.callRemote(Events.SERVER_EVENT_LISTENER, dataRaw)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // called to browser
 | 
			
		||||
    private emitBrowser(dataRaw: string) {
 | 
			
		||||
        this.errorNoBrowser()
 | 
			
		||||
 | 
			
		||||
        const state = Utils.prepareExecution(dataRaw)
 | 
			
		||||
 | 
			
		||||
        // if event is called from server we will forward response through client via this
 | 
			
		||||
        if (state.calledFrom === Environment.SERVER) {
 | 
			
		||||
            const responseEventName = Utils.generateResponseEventName(
 | 
			
		||||
                state.uuid,
 | 
			
		||||
 | 
			
		||||
@ -9,6 +9,9 @@ import {
 | 
			
		||||
    Utils,
 | 
			
		||||
} from './utils'
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * NOT INTENDED FOR OUT-OF-CONTEXT USE
 | 
			
		||||
 */
 | 
			
		||||
export class Server extends Wrapper {
 | 
			
		||||
    constructor(
 | 
			
		||||
        options: RpcWrapperConfig = {
 | 
			
		||||
@ -19,6 +22,7 @@ export class Server extends Wrapper {
 | 
			
		||||
 | 
			
		||||
        if (!!options.forceBrowserDevMode) return
 | 
			
		||||
 | 
			
		||||
        // specific event to save player in context as it is not available on server -> server calls
 | 
			
		||||
        mp.events.add(
 | 
			
		||||
            Events.SERVER_EVENT_LISTENER,
 | 
			
		||||
            async (player: PlayerMp, dataRaw: string) => {
 | 
			
		||||
@ -27,6 +31,9 @@ export class Server extends Wrapper {
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * NOT INTENDED FOR OUT-OF-CONTEXT USE
 | 
			
		||||
     */
 | 
			
		||||
    public _resolveEmitDestination(player: PlayerMp, dataRaw: string) {
 | 
			
		||||
        let state = Utils.prepareExecution(dataRaw)
 | 
			
		||||
 | 
			
		||||
@ -45,15 +52,18 @@ export class Server extends Wrapper {
 | 
			
		||||
        player.call(Events.LOCAL_EVENT_LISTENER, [dataRaw])
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // called to server
 | 
			
		||||
    private async emit(player: PlayerMp, dataRaw: string) {
 | 
			
		||||
        let state = Utils.prepareExecution(dataRaw)
 | 
			
		||||
        const responseEventName = Utils.generateResponseEventName(state.uuid)
 | 
			
		||||
 | 
			
		||||
        // check availability
 | 
			
		||||
        state = this.verifyEvent_(state)
 | 
			
		||||
        if (state.knownError) {
 | 
			
		||||
            this.triggerError_(state, state.knownError)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // execute + generate response
 | 
			
		||||
        const response = await this.state_[state.eventName](
 | 
			
		||||
            player,
 | 
			
		||||
            ...(Array.isArray(state.data) ? state.data : []),
 | 
			
		||||
@ -68,6 +78,7 @@ export class Server extends Wrapper {
 | 
			
		||||
            type: RPCEventType.RESPONSE,
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // send response
 | 
			
		||||
        switch (state.calledFrom) {
 | 
			
		||||
            case Environment.SERVER:
 | 
			
		||||
                try {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user