a2r
Version:
A2R Framework
61 lines (60 loc) • 2.17 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable @typescript-eslint/no-explicit-any */
const shortid_1 = __importDefault(require("shortid"));
const isClient_1 = __importDefault(require("../../tools/isClient"));
const getSocket_1 = __importDefault(require("./getSocket"));
const roles_1 = __importDefault(require("./roles"));
const methodWrapper = (method, ...args) => {
if (!(0, isClient_1.default)()) {
const [email, ...userRoles] = args;
if (method === 'add') {
return roles_1.default.addRolesToUser(email, ...userRoles);
}
if (method === 'remove') {
return roles_1.default.removeRolesFromUser(email, ...userRoles);
}
if (method === 'check') {
return roles_1.default.isUserInRole(email, ...userRoles);
}
throw new Error(`Unknown method: ${method}`);
}
return new Promise((resolve, reject) => {
(0, getSocket_1.default)()
.then((socket) => {
if (socket) {
if (socket.disconnected) {
socket.connect();
}
const id = (0, shortid_1.default)();
socket.on(id, (res) => {
socket.off(id);
if (res.o) {
resolve(res.d);
}
else {
const error = new Error(res.e);
error.stack = res.s;
reject(error);
}
});
const call = {
id,
params: args,
};
socket.emit(method, call);
}
else {
console.error('No client socket available!');
reject(new Error('No client socket available!'));
}
})
.catch((ex) => {
reject(ex);
});
});
};
exports.default = methodWrapper;