0.0.8 • Published 5 years ago
jqts
A TypeScript implementation of jq query language for JSON
Install
npm install jqts
Usage
For TypeScript:
import jq from 'jqts';
const pattern = jq.compile('[.[].x]');
pattern.evaluate([{ x: 1, x: 2 }]); // [1, 2]
For JavaScript:
const jq = require('jqts').default;
const pattern = jq.compile('[.[].x]');
pattern.evaluate([{ x: 1, x: 2 }]); // [1, 2]
Supported Filters
| Filter | Notation | Status |
|---|
| Identity | . | :heavy_check_mark: |
| Object Identifier-Index | .foo .foo.bar | :heavy_check_mark: |
| Optional Object Identifier-Index | .foo? | :heavy_check_mark: |
| Generic Object Index | .[<string>] | :heavy_check_mark: |
| Array Index | .[2] | :heavy_check_mark: |
| Array/String Slice | .[10:15] | :heavy_check_mark: |
| Array/Object Value Iterator | .[] .[]? | :heavy_check_mark: |
| Comma | .foo, .bar | :heavy_check_mark: |
| Pipe | .[] \| .foo | :heavy_check_mark: |
| Parenthesis | (. + 2) * 5 | :heavy_check_mark: |
| JSON datatypes | | :heavy_check_mark: |
| Array Construction | [.foo, .bar] | :heavy_check_mark: |
| Object Construction | {foo:.bar} {baz} | :heavy_check_mark: |
| Recursive Descent | .. | |
| Addition | + | :heavy_check_mark: |
| Subtraction | - | :heavy_check_mark: |
| Multiplication,Division,Modulo | * / % | :heavy_check_mark: |
length | length | :heavy_check_mark: |
utf8bytelength | utf8bytelength | :heavy_check_mark: |
keys, keys_unsorted | keys keys_unsorted | :heavy_check_mark: |
has(key) | has("foo") | :heavy_check_mark: |
in | in([0, 1]) | :heavy_check_mark: |
map | map | :heavy_check_mark: |
map_values | map_value | |
path(path_expression) | | |
del(path_expression) | | |
getpath(PATHS) | | |
setpath(PATHS; VALUE) | | |
delpaths(PATHS) | | |
to_entries, from_entries | | :heavy_check_mark: |
with_entries | | |
select(boolean_expression) | | :heavy_check_mark: |
arrays, objects, iterables, booleans, numbers, normals, finites, strings, nulls, values, scalars | | :heavy_check_mark: |
empty | | :heavy_check_mark: |
error(message) | | :heavy_check_mark: |
halt | | |
halt_error, halt_error(exit_code) | | |
$__loc__ |
paths, paths(node_filter), leaf_paths | | |
add | | :heavy_check_mark: |
any | | :heavy_check_mark: |
any(condition), any(generator; condition) | | |
all | | :heavy_check_mark: |
all(condition), all(generator; condition) | | |
flatten, flatten(depth) | | :heavy_check_mark: |
range(upto), range(from;upto), range(from;upto;by) | | :heavy_check_mark: |
floor | | :heavy_check_mark: |
sqrt | | :heavy_check_mark: |
tonumber | | :heavy_check_mark: |
tostring | | :heavy_check_mark: |
type | | :heavy_check_mark: |
infinite, nan, isinfinite, isnan, isfinite, isnormal | | :heavy_check_mark: |
sort, sort_by(path_expression) | | :heavy_check_mark: |
group_by(path_expression) | | :heavy_check_mark: |
min, max, min_by(path_exp), max_by(path_exp) | | :heavy_check_mark: |
unique, unique_by(path_exp) | | :heavy_check_mark: |
reverse | | :heavy_check_mark: |
contains(element) | | :heavy_check_mark: |
indices(s) | | :heavy_check_mark: |
index(s), rindex(s) | | :heavy_check_mark: |
inside | | :heavy_check_mark: |
startswith(str) | | :heavy_check_mark: |
endswith(str) | | :heavy_check_mark: |
combinations, combinations(n) | | :heavy_check_mark: |
ltrimstr(str) | | |
rtrimstr(str) | | |
explode | | |
implode | | |
split(str) | | |
join(str) | | |
ascii_downcase, ascii_upcase | | |
while(cond; update) | | |
until(cond; next) | | |
recurse(f), recurse, recurse(f; condition), recurse_down | | |
walk(f) | | |
$ENV, env | | |
transpose | | |
bsearch(x) | | |
String interpolation - \(foo) | | |
| Convert to/from JSON | | |
| Format strings and escaping | | |
| Dates | | |
| SQL-Style Operators | | |
| builtins | | |
==, != | | |
| if-then-else | | |
>, >=, <=, < | | |
| and/or/not | and, or, not | |
| Alternative operator | // | :heavy_check_mark: |
| try-catch | | |
| Breaking out of control structures | | |
| Error Suppression / Optional Operator | ? | |
| Regular expressions (PCRE) | | |
| Variable / Symbolic Binding Operator | | |
| Destructuring Alternative Operator | | |
| Defining Functions | | |
| Scoping | | |
| Reduce | | |
| Recursion | | |
| Generators and Iterators | | |
| Math | | |
| I/O | | |
| Streaming | | |
| Assignment | | |
| Modules | | |
| Colors | | |
License
MIT