You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.2 KiB
45 lines
1.2 KiB
// fakejson.ts |
|
function getHex64(json, field) { |
|
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); |
|
} |
|
function getInt(json, field) { |
|
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); |
|
} |
|
function getSubscriptionId(json) { |
|
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); |
|
} |
|
function matchEventId(json, id) { |
|
return id === getHex64(json, "id"); |
|
} |
|
function matchEventPubkey(json, pubkey) { |
|
return pubkey === getHex64(json, "pubkey"); |
|
} |
|
function matchEventKind(json, kind) { |
|
return kind === getInt(json, "kind"); |
|
} |
|
export { |
|
getHex64, |
|
getInt, |
|
getSubscriptionId, |
|
matchEventId, |
|
matchEventKind, |
|
matchEventPubkey |
|
};
|
|
|