tsdk-server-adapters
Version:
[](https://www.npmjs.com/package/tsdk-server-adapters) [](https://packagephobia.com/result?p=tsdk-server-adapters) ); } 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.socketIOAdapterFactory = void 0;
const gen_route_factory_1 = require("./gen-route-factory");
/**
* The `methods` sort order should same with
* `packages/tsdk/fe-sdk-template/src/utils.ts`
*/
const methods = ['get', 'post', 'delete', 'put', 'patch', 'head', 'options'];
const methodsMap = {};
methods.forEach((i, idx) => {
methodsMap[idx] = i;
});
function socketIOAdapterFactory({ routeBus, getReqInfo, getData, protocolType, getType, }) {
return function socketIOAdapter(socket) {
return __awaiter(this, void 0, void 0, function* () {
const reqInfo = yield getReqInfo(socket);
const onRequest = (data) => __awaiter(this, void 0, void 0, function* () {
if (!socket.connected)
return;
if (data && data._id) {
const type = getType(reqInfo, socket);
const [methodIdx, path] = data._id.split(':');
const method = methodsMap[methodIdx] || methodIdx || 'get';
const eventName = (0, gen_route_factory_1.getRouteEventName)({ protocol: 'socket.io', type, method, path });
if (routeBus._events[eventName]) {
routeBus.emit(eventName, reqInfo, socket, getData ? yield getData(data) : data);
}
}
});
socket.on(protocolType.request, onRequest);
return () => socket.off(protocolType.request, onRequest);
});
};
}
exports.socketIOAdapterFactory = socketIOAdapterFactory;