42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
export function getHex64(json: string, field: string): string {
|
|
let len = field.length + 3
|
|
let idx = json.indexOf(`"${field}":`) + len
|
|
let s = json.slice(idx).indexOf(`"`) + idx + 1
|
|
return json.slice(s, s + 64)
|
|
}
|
|
|
|
export function getInt(json: string, field: string): number {
|
|
let len = field.length
|
|
let idx = json.indexOf(`"${field}":`) + len + 3
|
|
let sliced = json.slice(idx)
|
|
let end = Math.min(sliced.indexOf(','), sliced.indexOf('}'))
|
|
return parseInt(sliced.slice(0, end), 10)
|
|
}
|
|
|
|
export function getSubscriptionId(json: string): string | null {
|
|
let idx = json.slice(0, 22).indexOf(`"EVENT"`)
|
|
if (idx === -1) return null
|
|
|
|
let pstart = json.slice(idx + 7 + 1).indexOf(`"`)
|
|
if (pstart === -1) return null
|
|
let start = idx + 7 + 1 + pstart
|
|
|
|
let pend = json.slice(start + 1, 80).indexOf(`"`)
|
|
if (pend === -1) return null
|
|
let end = start + 1 + pend
|
|
|
|
return json.slice(start + 1, end)
|
|
}
|
|
|
|
export function matchEventId(json: string, id: string): boolean {
|
|
return id === getHex64(json, 'id')
|
|
}
|
|
|
|
export function matchEventPubkey(json: string, pubkey: string): boolean {
|
|
return pubkey === getHex64(json, 'pubkey')
|
|
}
|
|
|
|
export function matchEventKind(json: string, kind: number): boolean {
|
|
return kind === getInt(json, 'kind')
|
|
}
|