@vrpjs0.5/client
Version:
A FiveM package to use vRP in javascript
62 lines (61 loc) • 2.32 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.addInterface = exports.getInterface = void 0;
function getInterface(name) {
let Proxyrdata = [];
function proxy_callback(rvalues) {
Proxyrdata = rvalues;
}
function generateHandler(memberName) {
return (...args) => {
emit(`${name}:proxy`, memberName, args, proxy_callback);
if (Proxyrdata.length <= 1) {
return Proxyrdata[0];
}
else {
return Proxyrdata;
}
};
}
return new Proxy({}, {
get(target, member) {
const memberName = member.toString();
if (!target[memberName]) {
target[memberName] = generateHandler(memberName);
}
return target[memberName];
},
set() {
throw new Error('cannot set values on proxy access interface');
},
});
}
exports.getInterface = getInterface;
function addInterface(name, handlers) {
on(`${name}:proxy`, (member, args, callback) => __awaiter(this, void 0, void 0, function* () {
const handler = handlers[member];
let payload;
if (handler) {
try {
payload = yield handler(...args);
}
catch (err) {
console.error(err);
}
}
else {
console.log(`error: proxy call ${name}:${member} not found`);
}
callback(payload);
}));
}
exports.addInterface = addInterface;