{ "type": "File", "start": 0, "end": 86, "loc": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 86 } }, "program": { "type": "Program", "start": 0, "end": 86, "loc": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 86 } }, "sourceType": "module", "body": [ { "type": "DeclareFunction", "start": 0, "end": 86, "loc": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 86 } }, "id": { "type": "Identifier", "start": 17, "end": 85, "loc": { "start": { "line": 1, "column": 17 }, "end": { "line": 1, "column": 85 }, "identifierName": "my_filter" }, "name": "my_filter", "typeAnnotation": { "type": "TypeAnnotation", "start": 26, "end": 85, "loc": { "start": { "line": 1, "column": 26 }, "end": { "line": 1, "column": 85 } }, "typeAnnotation": { "type": "FunctionTypeAnnotation", "start": 26, "end": 85, "loc": { "start": { "line": 1, "column": 26 }, "end": { "line": 1, "column": 85 } }, "typeParameters": { "type": "TypeParameterDeclaration", "start": 26, "end": 42, "loc": { "start": { "line": 1, "column": 26 }, "end": { "line": 1, "column": 42 } }, "params": [ { "type": "TypeParameter", "start": 27, "end": 28, "loc": { "start": { "line": 1, "column": 27 }, "end": { "line": 1, "column": 28 } }, "name": "T", "variance": null }, { "type": "TypeParameter", "start": 30, "end": 41, "loc": { "start": { "line": 1, "column": 30 }, "end": { "line": 1, "column": 41 } }, "name": "P", "variance": null, "bound": { "type": "TypeAnnotation", "start": 31, "end": 41, "loc": { "start": { "line": 1, "column": 31 }, "end": { "line": 1, "column": 41 } }, "typeAnnotation": { "type": "GenericTypeAnnotation", "start": 33, "end": 41, "loc": { "start": { "line": 1, "column": 33 }, "end": { "line": 1, "column": 41 } }, "typeParameters": { "type": "TypeParameterInstantiation", "start": 38, "end": 41, "loc": { "start": { "line": 1, "column": 38 }, "end": { "line": 1, "column": 41 } }, "params": [ { "type": "NumberLiteralTypeAnnotation", "start": 39, "end": 40, "loc": { "start": { "line": 1, "column": 39 }, "end": { "line": 1, "column": 40 } }, "extra": { "rawValue": 1, "raw": "1" }, "value": 1 } ] }, "id": { "type": "Identifier", "start": 33, "end": 38, "loc": { "start": { "line": 1, "column": 33 }, "end": { "line": 1, "column": 38 }, "identifierName": "$Pred" }, "name": "$Pred" } } } } ] }, "params": [ { "type": "FunctionTypeParam", "start": 43, "end": 54, "loc": { "start": { "line": 1, "column": 43 }, "end": { "line": 1, "column": 54 } }, "name": { "type": "Identifier", "start": 43, "end": 44, "loc": { "start": { "line": 1, "column": 43 }, "end": { "line": 1, "column": 44 }, "identifierName": "v" }, "name": "v" }, "optional": false, "typeAnnotation": { "type": "GenericTypeAnnotation", "start": 46, "end": 54, "loc": { "start": { "line": 1, "column": 46 }, "end": { "line": 1, "column": 54 } }, "typeParameters": { "type": "TypeParameterInstantiation", "start": 51, "end": 54, "loc": { "start": { "line": 1, "column": 51 }, "end": { "line": 1, "column": 54 } }, "params": [ { "type": "GenericTypeAnnotation", "start": 52, "end": 53, "loc": { "start": { "line": 1, "column": 52 }, "end": { "line": 1, "column": 53 } }, "typeParameters": null, "id": { "type": "Identifier", "start": 52, "end": 53, "loc": { "start": { "line": 1, "column": 52 }, "end": { "line": 1, "column": 53 }, "identifierName": "T" }, "name": "T" } } ] }, "id": { "type": "Identifier", "start": 46, "end": 51, "loc": { "start": { "line": 1, "column": 46 }, "end": { "line": 1, "column": 51 }, "identifierName": "Array" }, "name": "Array" } } }, { "type": "FunctionTypeParam", "start": 56, "end": 61, "loc": { "start": { "line": 1, "column": 56 }, "end": { "line": 1, "column": 61 } }, "name": { "type": "Identifier", "start": 56, "end": 58, "loc": { "start": { "line": 1, "column": 56 }, "end": { "line": 1, "column": 58 }, "identifierName": "cb" }, "name": "cb" }, "optional": false, "typeAnnotation": { "type": "GenericTypeAnnotation", "start": 60, "end": 61, "loc": { "start": { "line": 1, "column": 60 }, "end": { "line": 1, "column": 61 } }, "typeParameters": null, "id": { "type": "Identifier", "start": 60, "end": 61, "loc": { "start": { "line": 1, "column": 60 }, "end": { "line": 1, "column": 61 }, "identifierName": "P" }, "name": "P" } } } ], "rest": null, "returnType": { "type": "GenericTypeAnnotation", "start": 64, "end": 85, "loc": { "start": { "line": 1, "column": 64 }, "end": { "line": 1, "column": 85 } }, "typeParameters": { "type": "TypeParameterInstantiation", "start": 69, "end": 85, "loc": { "start": { "line": 1, "column": 69 }, "end": { "line": 1, "column": 85 } }, "params": [ { "type": "GenericTypeAnnotation", "start": 70, "end": 84, "loc": { "start": { "line": 1, "column": 70 }, "end": { "line": 1, "column": 84 } }, "typeParameters": { "type": "TypeParameterInstantiation", "start": 77, "end": 84, "loc": { "start": { "line": 1, "column": 77 }, "end": { "line": 1, "column": 84 } }, "params": [ { "type": "GenericTypeAnnotation", "start": 78, "end": 79, "loc": { "start": { "line": 1, "column": 78 }, "end": { "line": 1, "column": 79 } }, "typeParameters": null, "id": { "type": "Identifier", "start": 78, "end": 79, "loc": { "start": { "line": 1, "column": 78 }, "end": { "line": 1, "column": 79 }, "identifierName": "T" }, "name": "T" } }, { "type": "GenericTypeAnnotation", "start": 80, "end": 81, "loc": { "start": { "line": 1, "column": 80 }, "end": { "line": 1, "column": 81 } }, "typeParameters": null, "id": { "type": "Identifier", "start": 80, "end": 81, "loc": { "start": { "line": 1, "column": 80 }, "end": { "line": 1, "column": 81 }, "identifierName": "P" }, "name": "P" } }, { "type": "NumberLiteralTypeAnnotation", "start": 82, "end": 83, "loc": { "start": { "line": 1, "column": 82 }, "end": { "line": 1, "column": 83 } }, "extra": { "rawValue": 1, "raw": "1" }, "value": 1 } ] }, "id": { "type": "Identifier", "start": 70, "end": 77, "loc": { "start": { "line": 1, "column": 70 }, "end": { "line": 1, "column": 77 }, "identifierName": "$Refine" }, "name": "$Refine" } } ] }, "id": { "type": "Identifier", "start": 64, "end": 69, "loc": { "start": { "line": 1, "column": 64 }, "end": { "line": 1, "column": 69 }, "identifierName": "Array" }, "name": "Array" } } } } }, "predicate": null } ], "directives": [] } }