2019-06-02 17:12:11 +00:00
( function webpackUniversalModuleDefinition ( root , factory ) {
if ( typeof exports === 'object' && typeof module === 'object' )
module . exports = factory ( ) ;
else if ( typeof define === 'function' && define . amd )
define ( [ ] , factory ) ;
else if ( typeof exports === 'object' )
exports = factory ( ) ;
else
root [ "rpc" ] = factory ( ) ;
} ) ( typeof self !== 'undefined' ? self : this , function ( ) {
return /******/ ( function ( modules ) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = { } ;
/******/
/******/ // The require function
/******/ function _ _webpack _require _ _ ( moduleId ) {
/******/
/******/ // Check if module is in cache
/******/ if ( installedModules [ moduleId ] ) {
/******/ return installedModules [ moduleId ] . exports ;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules [ moduleId ] = {
/******/ i : moduleId ,
/******/ l : false ,
/******/ exports : { }
/******/ } ;
/******/
/******/ // Execute the module function
/******/ modules [ moduleId ] . call ( module . exports , module , module . exports , _ _webpack _require _ _ ) ;
/******/
/******/ // Flag the module as loaded
/******/ module . l = true ;
/******/
/******/ // Return the exports of the module
/******/ return module . exports ;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ _ _webpack _require _ _ . m = modules ;
/******/
/******/ // expose the module cache
/******/ _ _webpack _require _ _ . c = installedModules ;
/******/
/******/ // define getter function for harmony exports
/******/ _ _webpack _require _ _ . d = function ( exports , name , getter ) {
/******/ if ( ! _ _webpack _require _ _ . o ( exports , name ) ) {
/******/ Object . defineProperty ( exports , name , { enumerable : true , get : getter } ) ;
/******/ }
/******/ } ;
/******/
/******/ // define __esModule on exports
/******/ _ _webpack _require _ _ . r = function ( exports ) {
/******/ if ( typeof Symbol !== 'undefined' && Symbol . toStringTag ) {
/******/ Object . defineProperty ( exports , Symbol . toStringTag , { value : 'Module' } ) ;
/******/ }
/******/ Object . defineProperty ( exports , '__esModule' , { value : true } ) ;
/******/ } ;
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ _ _webpack _require _ _ . t = function ( value , mode ) {
/******/ if ( mode & 1 ) value = _ _webpack _require _ _ ( value ) ;
/******/ if ( mode & 8 ) return value ;
/******/ if ( ( mode & 4 ) && typeof value === 'object' && value && value . _ _esModule ) return value ;
/******/ var ns = Object . create ( null ) ;
/******/ _ _webpack _require _ _ . r ( ns ) ;
/******/ Object . defineProperty ( ns , 'default' , { enumerable : true , value : value } ) ;
/******/ if ( mode & 2 && typeof value != 'string' ) for ( var key in value ) _ _webpack _require _ _ . d ( ns , key , function ( key ) { return value [ key ] ; } . bind ( null , key ) ) ;
/******/ return ns ;
/******/ } ;
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ _ _webpack _require _ _ . n = function ( module ) {
/******/ var getter = module && module . _ _esModule ?
/******/ function getDefault ( ) { return module [ 'default' ] ; } :
/******/ function getModuleExports ( ) { return module ; } ;
/******/ _ _webpack _require _ _ . d ( getter , 'a' , getter ) ;
/******/ return getter ;
/******/ } ;
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ _ _webpack _require _ _ . o = function ( object , property ) { return Object . prototype . hasOwnProperty . call ( object , property ) ; } ;
/******/
/******/ // __webpack_public_path__
/******/ _ _webpack _require _ _ . p = "" ;
/******/
/******/
/******/ // Load entry module and return exports
/******/ return _ _webpack _require _ _ ( _ _webpack _require _ _ . s = "./src/index.ts" ) ;
/******/ } )
/************************************************************************/
/******/ ( {
/***/ "./node_modules/webpack/buildin/global.js" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * ( webpack ) / buildin / global . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/*! no static exports found */
/***/ ( function ( module , exports ) {
eval ( "var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n//# sourceURL=webpack://rpc/(webpack)/buildin/global.js?" ) ;
/***/ } ) ,
/***/ "./src/index.ts" :
/ * ! * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . / src / index . ts * * * !
\ * * * * * * * * * * * * * * * * * * * * * * /
/*! exports provided: register, unregister, call, callServer, callClient, callBrowsers, callBrowser, default */
/***/ ( function ( module , _ _webpack _exports _ _ , _ _webpack _require _ _ ) {
"use strict" ;
eval ( "__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"register\", function() { return register; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unregister\", function() { return unregister; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"call\", function() { return call; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"callServer\", function() { return callServer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"callClient\", function() { return callClient; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"callBrowsers\", function() { return callBrowsers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"callBrowser\", function() { return callBrowser; });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./src/util.ts\");\n\nconst environment = _util__WEBPACK_IMPORTED_MODULE_0__[\"getEnvironment\"]();\nif (!environment) throw 'Unknown RAGE environment';\nconst ERR_NOT_FOUND = 'PROCEDURE_NOT_FOUND';\nconst IDENTIFIER = '__rpc:id';\nconst PROCESS_EVENT = '__rpc:process';\nconst BROWSER_REGISTER = '__rpc:browserRegister';\nconst BROWSER_UNREGISTER = '__rpc:browserUnregister';\nconst glob = environment === \"cef\" ? window : global;\n\nif (!glob[PROCESS_EVENT]) {\n glob.__rpcListeners = {};\n glob.__rpcPending = {};\n\n glob[PROCESS_EVENT] = (player, rawData) => {\n if (environment !== \"server\") rawData = player;\n const data = _util__WEBPACK_IMPORTED_MODULE_0__[\"parseData\"](rawData);\n\n if (data.req) {\n // someone is trying to remotely call a procedure\n const info = {\n id: data.id,\n environment: data.fenv || data.env\n };\n if (environment === \"server\") info.player = player;\n const part = {\n ret: 1,\n id: data.id,\n env: environment\n };\n let ret;\n\n switch (environment) {\n case \"server\":\n ret = ev => info.player.call(PROCESS_EVENT, [_util__WEBPACK_IMPORTED_MODULE_0__[\"stringifyData\"](ev)]);\n\n break;\n\n case \"client\":\n {\n if (data.env === \"server\") {\n ret = ev => mp.events.callRemote(PROCESS_EVENT, _util__WEBPACK_IMPORTED_MODULE_0__[\"stringifyData\"](ev));\n } else if (data.env === \"cef\") {\n const browser = data.b && glob.__rpcBrowsers[data.b];\n info.browser = browser;\n\n ret = ev => browser && _util__WEBPACK_IMPORTED_MODULE_0__[\"isBrowserValid\"](browser) && passEventToBrowser(browser, ev, true);\n }\n\n break;\n }\n\n case \"cef\":\n {\n ret = ev => mp.trigger(PROCESS_EVENT, _util__WEBPACK_IMPORTED_MODULE_0__[\"stringifyData\"](ev));\n }\n }\n\n if (ret) {\n const promise = callProcedure(data.name, data.args, info);\n if (!data.noRet) promise.then(res => ret({ ...part,\n res\n })).catch(err => ret({ ...part,\n err\n }));\n }\n } else if (data.ret) {\n // a previously called remote procedure has returned\n const info = glob.__rpcPending[data.id];\n if (environment === \"server\" && info.player !== player) return;\n\n if (info) {\n info.resolve(data.err ? _util__WEBPACK_IMPORTED_MODULE_0__[\"promiseReject\"](data.err) : _util__WEBPACK_IMPORTED_MODULE_0__[\"promiseResolve\"](data.res));\n delete glob.__rpcPending[data.id];\n }\n }\n };\n\n if (environment !== \"cef\") {\n mp.events.add(PROCESS_EVENT, glob[PROCESS_EVENT]);\n\n if (environment === \"client\" ) { \ n // set up internal pass-through events\n register('__rpc:callServer', ([name, args, noRet], info) => _callServer(name, args, {\n fenv: info.environment,\n noRet\n }));\n
/***/ } ) ,
/***/ "./src/util.ts" :
/ * ! * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . / src / util . ts * * * !
\ * * * * * * * * * * * * * * * * * * * * * /
/*! exports provided: uid, getEnvironment, stringifyData, parseData, promiseResolve, promiseReject, promiseTimeout, isBrowserValid */
/***/ ( function ( module , _ _webpack _exports _ _ , _ _webpack _require _ _ ) {
"use strict" ;
eval ( "__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"uid\", function() { return uid; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEnvironment\", function() { return getEnvironment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stringifyData\", function() { return stringifyData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseData\", function() { return parseData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promiseResolve\", function() { return promiseResolve; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promiseReject\", function() { return promiseReject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promiseTimeout\", function() { return promiseTimeout; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBrowserValid\", function() { return isBrowserValid; });\nvar MpTypes;\n\n(function (MpTypes) {\n MpTypes[\"Blip\"] = \"b\";\n MpTypes[\"Checkpoint\"] = \"cp\";\n MpTypes[\"Colshape\"] = \"c\";\n MpTypes[\"Label\"] = \"l\";\n MpTypes[\"Marker\"] = \"m\";\n MpTypes[\"Object\"] = \"o\";\n MpTypes[\"Pickup\"] = \"p\";\n MpTypes[\"Player\"] = \"pl\";\n MpTypes[\"Vehicle\"] = \"v\" ; \ n } ) ( MpTypes || ( MpTypes = { } ) ) ; \ n \ nfunction isObjectMpType ( obj , type ) { \ n const client = getEnvironment ( ) === 'client' ; \ n \ n if ( obj && typeof obj === 'object' && typeof obj . id !== 'undefined' ) { \ n const test = ( type , collection , mpType ) => client ? obj . type === type && collection . at ( obj . id ) === obj : obj instanceof mpType ; \ n \ n switch ( type ) { \ n case MpTypes . Blip : \ n return test ( 'blip' , mp . blips , mp . Blip ) ; \ n \ n case MpTypes . Checkpoint : \ n return test ( 'checkpoint' , mp . checkpoints , mp . Checkpoint ) ; \ n \ n case MpTypes . Colshape : \ n return test ( 'colshape' , mp . colshapes , mp . Colshape ) ; \ n \ n case MpTypes . Label : \ n return test ( 'textlabel' , mp . labels , mp . TextLabel ) ; \ n \ n case MpTypes . Marker : \ n return test ( 'marker' , mp . markers , mp . Marker ) ; \ n \ n case MpTypes . Object : \ n return test ( 'object' , mp . objects , mp . Object ) ; \ n \ n case MpTypes . Pickup : \ n return test ( 'pickup' , mp . pickups , mp . Pickup ) ; \ n \ n case MpTypes . Player : \ n return test ( 'player' , mp . players , mp . Player ) ; \ n \ n case MpTypes . Vehicle : \ n return test ( 'vehicle' , mp . vehicles , mp . Vehicle ) ; \ n } \ n } \ n \ n return false ; \ n } \ n \ nfunction uid ( ) { \ n const first = Math . random ( ) * 46656 | 0 ; \ n const second = Math . random ( ) * 46656 | 0 ; \ n const firstPart = ( '000' + first . toString ( 36 ) ) . slice ( - 3 ) ; \ n const secondPart = ( '000' + second . toString ( 36 ) ) . slice ( - 3 ) ; \ n return firstPart + secondPart ; \ n } \ nfunction getEnvironment ( ) { \ n if ( mp . joaat ) return 'server' ; else if ( mp . game && mp . game . joaat ) return 'client' ; else if ( mp . trigger ) return 'cef' ; \ n } \ nfunction stringifyData ( data ) { \ n const env = getEnvironment ( ) ; \ n return JSON . stringify ( data , ( _ , value ) => { \ n if ( env === 'client' || env === 'server' && value && typeof value === 'object' ) { \ n let type ; \ n if ( isObjectMpType ( value , MpTypes . Blip ) ) type = MpTypes . Blip ; else if ( isObjectMpType ( value , MpTypes . Checkpoint ) ) type = MpTypes . Checkpoint ; else if ( isObjectMpType ( value , MpTypes . Colshape ) ) type = MpTypes . Colshape ; else if ( isObjectMpType ( value , MpTypes . Marker ) ) type = MpTypes . Marker ; else if ( isObjectMpType ( value , MpTypes . Object ) ) type = MpTypes . Object ; else if ( isObjectMpType ( value , MpTypes . Pickup ) ) type = MpTypes . Pickup ; else if ( isObjectMpType ( value , MpTypes . Player ) ) type = MpTypes . Player ; else if ( isObjectMpType ( value , MpTypes . Vehicle ) ) type = MpTypes . Vehicle ; \ n if ( type ) return { \ n _ _t : type , \ n i : typeof value . remoteId === 'number' ? value . remoteId : value . id \ n } ; \ n } \ n \ n return value ; \ n } ) ; \ n } \ nfunction parseData ( data ) { \ n const env = getEnvironment ( ) ; \ n return JSON . parse ( data , ( _ , value ) => { \ n if ( ( e
/***/ } )
/******/ } ) ;
} ) ;