in src/parsers/odata-parser.ts [215:233]
public makeFilterStatement(rootClause: WorkItemQueryClause, superTypePrefix: string = ''): string {
const oDataClauses = this.makeFilterStatementSimple(rootClause, superTypePrefix);
if (oDataClauses == null) {
return null;
}
// get ASOF. Unfortunately, the only way to currently detect ASOF is in the query text itself.
const basicTokenizedQuery = this.query.wiql.toLocaleLowerCase().split(' ');
const asofIndex = basicTokenizedQuery.findIndex((e) => e === 'asof');
if (asofIndex !== -1) {
// assuming thing after asof is a date. Assuming WIQL has been validated by ADO.
const dateString = basicTokenizedQuery[asofIndex + 1];
const isoDateString = new Date(dateString).toISOString();
return `$filter=Revisions/any(r: ${oDataClauses} and (r/ChangedDate le ${isoDateString}) and (r/RevisedDate ge ${isoDateString} or r/RevisedDate eq null))`;
}
return `$filter=${oDataClauses}`;
}