Архівований
rpc test
Цей коміт міститься в:
1 джерело
30373960e5
коміт
092693acb5
16 files changed
+487
-4
No files matched your search
@@ -0,0 +1,73 @@
|
||||
export enum Environment {
|
||||
BROWSER = 'BROWSER',
|
||||
CLIENT = 'CLIENT',
|
||||
SERVER = 'SERVER',
|
||||
UNKNOWN = 'UNKNOWN',
|
||||
}
|
||||
|
||||
export enum Events {
|
||||
EVENT_LISTENER = '__rpc:listener',
|
||||
EVENT_RESPONSE = '__rpc:response',
|
||||
}
|
||||
|
||||
export enum Errors {
|
||||
EVENT_NOT_REGISTERED = 'Event not registered',
|
||||
UNKNOWN_ENVIRONMENT = 'Unknown environment',
|
||||
NO_DATA = 'No data',
|
||||
NO_BROWSER = 'You need to initialize browser first',
|
||||
}
|
||||
|
||||
export type RPCState = {
|
||||
eventName: string
|
||||
uuid: string
|
||||
knownError?: string
|
||||
data?: any
|
||||
calledFrom: Environment
|
||||
calledTo: Environment
|
||||
}
|
||||
|
||||
export class Utils {
|
||||
public static getEnvironment(): Environment {
|
||||
if ('joaat' in mp) return Environment.SERVER
|
||||
if ('game' in mp && 'joaat' in (mp.game as { joaat?: unknown }))
|
||||
return Environment.CLIENT
|
||||
if ('mp' in window) return Environment.BROWSER
|
||||
return Environment.UNKNOWN
|
||||
}
|
||||
|
||||
public static prepareExecution(data: string): RPCState {
|
||||
return JSON.parse(data)
|
||||
}
|
||||
|
||||
public static prepareTransfer(data: RPCState): string {
|
||||
return JSON.stringify(data)
|
||||
}
|
||||
|
||||
public static generateUUID(): string {
|
||||
let uuid = '',
|
||||
random
|
||||
|
||||
for (let i = 0; i < 32; i++) {
|
||||
random = (Math.random() * 16) | 0
|
||||
|
||||
if (i === 8 || i === 12 || i === 16 || i === 20) {
|
||||
uuid += '-'
|
||||
}
|
||||
|
||||
uuid += (
|
||||
i === 12 ? 4 : i === 16 ? (random & 3) | 8 : random
|
||||
).toString(16)
|
||||
}
|
||||
|
||||
return uuid
|
||||
}
|
||||
|
||||
public static generateResponseEventName(uuid: string): string {
|
||||
return `${Events.EVENT_RESPONSE}_${uuid}`
|
||||
}
|
||||
|
||||
public static errorUnknownEnvironment(environment: Environment) {
|
||||
if (environment === Environment.UNKNOWN)
|
||||
throw new Error(Errors.UNKNOWN_ENVIRONMENT)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Заблокувати користувача