11import { expand , select , cache } from "./nodes" ;
22import { VALUE_INDEX , KEY_INDEX , PARENT_INDEX , POINTER_INDEX } from "./keys" ;
33import { QueryResult , Input , JSONPointer } from "../types" ;
4+ import { IToken } from "ebnf" ;
45
56type WorkingSet = Array < QueryResult > ;
67
78
8- function collect ( func , input : WorkingSet , node , pointer : JSONPointer ) {
9+ function collect ( func , input : WorkingSet , node : IToken , pointer : JSONPointer ) : WorkingSet {
910 const result = [ ] ;
1011 for ( let i = 0 , l = input . length ; i < l ; i += 1 ) {
1112 result . push ( ...func ( node , input [ i ] , node , pointer ) ) ;
@@ -14,7 +15,7 @@ function collect(func, input: WorkingSet, node, pointer: JSONPointer) {
1415}
1516
1617
17- function reduce ( func , input , node , pointer : JSONPointer ) {
18+ function reduce ( func , input : WorkingSet , node : IToken , pointer : JSONPointer ) : WorkingSet {
1819 const result = [ ] ;
1920 for ( let i = 0 , l = input . length ; i < l ; i += 1 ) {
2021 const output = func ( node , input [ i ] , pointer ) ;
@@ -26,7 +27,7 @@ function reduce(func, input, node, pointer: JSONPointer) {
2627}
2728
2829
29- function query ( data : WorkingSet , ast , pointer : JSONPointer ) : WorkingSet {
30+ function query ( data : WorkingSet , ast : IToken , pointer : JSONPointer ) : WorkingSet {
3031 let result = data ;
3132 ast . children . forEach ( node => {
3233 if ( expand [ node . type ] ) {
@@ -43,7 +44,7 @@ function query(data: WorkingSet, ast, pointer: JSONPointer): WorkingSet {
4344}
4445
4546
46- function runPatternOnce ( inputSet : WorkingSet , ast , pointer : JSONPointer ) : WorkingSet {
47+ function runPatternOnce ( inputSet : WorkingSet , ast : IToken , pointer : JSONPointer ) : WorkingSet {
4748 const resultingSet = [ ] ;
4849 let workingSet = inputSet ;
4950 ast . children . forEach ( node => {
@@ -58,7 +59,7 @@ function runPatternOnce(inputSet: WorkingSet, ast, pointer: JSONPointer): Workin
5859 return resultingSet ;
5960}
6061
61- function getIterationCount ( quantifier ?: string ) {
62+ function getIterationCount ( quantifier ?: string ) : number {
6263 if ( quantifier == null ) {
6364 return 1 ; // default, simple group
6465 }
@@ -70,7 +71,7 @@ function getIterationCount(quantifier?: string) {
7071}
7172
7273
73- function pattern ( data , ast , pointer : JSONPointer ) {
74+ function pattern ( data : WorkingSet , ast : IToken , pointer : JSONPointer ) : WorkingSet {
7475 const result = [ ] ;
7576 const quantifier = ast . children . find ( node => node . type === "quantifier" ) ;
7677 const iterationCount = getIterationCount ( quantifier && quantifier . text ) ;
@@ -88,14 +89,14 @@ function pattern(data, ast, pointer: JSONPointer) {
8889}
8990
9091
91- function skip ( data : WorkingSet , ast , pointer : JSONPointer ) {
92+ function skip ( data : WorkingSet , ast : IToken , pointer : JSONPointer ) : WorkingSet {
9293 let result = data ;
9394 ast . children . forEach ( n => ( result = runNode ( result , n , pointer ) ) ) ;
9495 return result ;
9596}
9697
9798
98- function runNode ( data : WorkingSet , ast , pointer ?: JSONPointer ) : WorkingSet {
99+ function runNode ( data : WorkingSet , ast : IToken , pointer ?: JSONPointer ) : WorkingSet {
99100 let result ;
100101 if ( ast . type === "query" ) {
101102 result = query ( data , ast , pointer ) ;
@@ -111,7 +112,7 @@ function runNode(data: WorkingSet, ast, pointer?: JSONPointer): WorkingSet {
111112}
112113
113114
114- export default function run ( data : Input , ast ) : Array < QueryResult > {
115+ export default function run ( data : Input , ast : IToken ) : Array < QueryResult > {
115116 cache . reset ( ) ;
116117 cache . mem . push ( data ) ;
117118 return runNode ( [ [ data , null , null , "#" ] ] , ast ) ;
0 commit comments