sdg-rpc
Version:
pomelo ts rpc
39 lines • 4.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.create = void 0;
const getProperties = function (o) {
if (o.__proto__ === null)
return [];
return [...Object.getOwnPropertyNames(o), ...getProperties(o.__proto__)];
};
const genObjectProxy = function (serviceName, origin, attach, proxyCb) {
const res = {};
for (const fn of getProperties(origin)) {
if (fn !== 'constructor') {
res[fn] = genFunctionProxy(serviceName, fn, attach, proxyCb);
}
}
return res;
};
const genFunctionProxy = function (serviceName, method, attach, proxyCb) {
const proxy = (...args) => proxyCb(serviceName, method, args, attach);
proxy.route = (routeParam) => (...args) => proxyCb(serviceName, method, [routeParam, ...args], attach);
proxy.to = (sid) => (...args) => proxyCb(serviceName, method, [sid, ...args], attach);
proxy.broadcast = (...args) => proxyCb(serviceName, method, ['*', ...args], attach);
proxy.defaultRoute = (...args) => proxyCb(serviceName, method, [null, ...args], attach);
proxy.toServer = (...args) => proxyCb(serviceName, method, args, attach);
return proxy;
};
const create = function (opts) {
if (!opts || !opts.origin) {
console.warn('opts and opts.origin should not be empty.');
return {};
}
if (!opts.proxyCb || typeof opts.proxyCb !== 'function') {
console.warn('opts.proxyCB is not a function, return the origin module directly.');
return opts.origin;
}
return genObjectProxy(opts.serviceName, opts.origin, opts.attach, opts.proxyCb);
};
exports.create = create;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9wcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQU07SUFDcEMsSUFBSSxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUk7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUVwQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDM0UsQ0FBQyxDQUFDO0FBRUYsTUFBTSxjQUFjLEdBQUcsVUFBVSxXQUFtQixFQUFFLE1BQVcsRUFBRSxNQUFhLEVBQUUsT0FBaUI7SUFDakcsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBRWYsS0FBSyxNQUFNLEVBQUUsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdEMsSUFBSSxFQUFFLEtBQUssYUFBYSxFQUFFO1lBQ3hCLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM5RDtLQUNGO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLFVBQVUsV0FBbUIsRUFBRSxNQUFjLEVBQUUsTUFBYSxFQUFFLE9BQWlCO0lBQ3RHLE1BQU0sS0FBSyxHQUFRLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVsRixLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsVUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25ILEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckcsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNGLEtBQUssQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRixLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVoRixPQUFPLEtBQWUsQ0FBQztBQUN6QixDQUFDLENBQUM7QUFTSyxNQUFNLE1BQU0sR0FBRyxVQUFVLElBQWlCO0lBQy9DLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkNBQTJDLENBQUMsQ0FBQztRQUMxRCxPQUFPLEVBQUUsQ0FBQztLQUNYO0lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRTtRQUN2RCxPQUFPLENBQUMsSUFBSSxDQUFDLG9FQUFvRSxDQUFDLENBQUM7UUFDbkYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0tBQ3BCO0lBRUQsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2xGLENBQUMsQ0FBQztBQVpXLFFBQUEsTUFBTSxVQVlqQiJ9