in sdk/webpubsub-socketio-extension/src/SIO/components/web-pubsub-adapter.ts [365:393]
private _buildODataFilter(rooms: Set<string>, excepts?: Set<string> | undefined): string {
debug("_buildODataFilter");
let allowFilter = "";
let room_idx = 0,
except_idx = 0;
if (rooms.size === 0) rooms = new Set([""]);
for (const room of rooms) {
const groupName = this._getGroupName(this.nsp.name, room);
allowFilter += `'${groupName}' in groups` + (room_idx === rooms.size - 1 ? "" : " or ");
room_idx++;
}
let denyFilter = "";
if (excepts) {
for (const except of excepts) {
const exceptGroupName = this._getGroupName(this.nsp.name, except);
denyFilter += `not ('${exceptGroupName}' in groups)` + (except_idx === excepts.size - 1 ? "" : " and ");
except_idx++;
}
}
let result = "";
if (allowFilter.length > 0) {
result = allowFilter + (denyFilter.length > 0 ? " and " + denyFilter : "");
} else result = denyFilter.length > 0 ? `${denyFilter}` : "";
debug(`_buildODataFilter result = ${result}`);
return result;
}