// Type definitions for jsonquery 0.1 // Project: https://github.com/eugeneware/jsonquery // Definitions by: Jim Buck // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.1 /// declare function jsonquery(query: jsonquery.Query): NodeJS.ReadWriteStream; declare namespace jsonquery { function match(haystack: T, predicate: Query): boolean; type Query = BinaryQueryCondition | QueryValue | PathQuery; interface OrQueryCondition { $or: ReadonlyArray>; } interface AndQueryCondition { $and: ReadonlyArray>; } type BinaryQueryCondition = OrQueryCondition | AndQueryCondition; interface BaseCondition

{ $lt: P; $lte: P; $gt: P; $gte: P; $mod: [number, number]; $ne: P; $in: ReadonlyArray

; $nin: ReadonlyArray

; $all: ReadonlyArray

; $elemMatch: Partial

; } interface PathQuery { [path: string]: any; } type QueryValue = { [P in keyof T]?: T[P] | BaseCondition; }; } export = jsonquery;