move @snort/nostr code into System
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
import { RawReqFilter } from "@snort/nostr";
|
||||
import { RawReqFilter } from "System";
|
||||
|
||||
export function mergeSimilar(filters: Array<RawReqFilter>): Array<RawReqFilter> {
|
||||
const hasCriticalKeySet = (a: RawReqFilter) => {
|
||||
@ -28,3 +28,31 @@ function simpleMerge(filters: Array<RawReqFilter>) {
|
||||
|
||||
return result as RawReqFilter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a filter includes another filter, as in the bigger filter will include the same results as the samller filter
|
||||
* @param bigger
|
||||
* @param smaller
|
||||
* @returns
|
||||
*/
|
||||
export function filterIncludes(bigger: RawReqFilter, smaller: RawReqFilter) {
|
||||
const outside = bigger as Record<string, Array<string | number> | number>;
|
||||
for (const [k, v] of Object.entries(smaller)) {
|
||||
if (outside[k] === undefined) {
|
||||
return false;
|
||||
}
|
||||
if (Array.isArray(v) && v.some(a => !(outside[k] as Array<string | number>).includes(a))) {
|
||||
return false;
|
||||
}
|
||||
if (typeof v === "number") {
|
||||
if (k === "since" && (outside[k] as number) > v) {
|
||||
return false;
|
||||
}
|
||||
if (k === "until" && (outside[k] as number) < v) {
|
||||
return false;
|
||||
}
|
||||
// limit cannot be checked and is ignored
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
Reference in New Issue
Block a user