full-json-extractor
Version:
Brute-forces all possible highest-level json candidates with pruning to keep performance fast with reasonable payload < 1MB
38 lines (32 loc) • 1.06 kB
text/typescript
export type Interval = [number, number];
interface IntervalTreeNode {
mid: number;
left: IntervalTreeNode | null;
right: IntervalTreeNode | null;
leftPoints: Interval[];
rightPoints: Interval[];
count: number;
intervals(result?: Interval[]): Interval[];
insert(interval: Interval): void;
remove(interval: Interval): number;
queryPoint(x: number, cb: (interval: Interval) => any): any;
queryInterval(lo: number, hi: number, cb: (interval: Interval) => any): any;
}
export interface IntervalTreeType {
root: IntervalTreeNode | null;
insert(interval: Interval): void;
remove(interval: Interval): boolean;
queryPoint(x: number, cb: (interval: Interval) => any): any;
queryInterval(lo: number, hi: number, cb: (interval: Interval) => any): any;
readonly count: number;
readonly intervals: Interval[];
}
export interface MemoPosition {
readonly left: number;
readonly right: number;
}
export interface BraceLocationInfo {
readonly prefix: number[];
readonly suffix: number[];
}
export type Limit = "log2" | "none";