move @snort/nostr code into System

This commit is contained in:
2023-05-30 14:48:38 +01:00
parent baec8d6904
commit f86053c14f
119 changed files with 1071 additions and 163 deletions

View File

@ -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;
}