in libraries/adaptive-expressions/src/expressionFunctions.ts [39:232]
private static getStandardFunctions(): ReadonlyMap<string, ExpressionEvaluator> {
const functions: ExpressionEvaluator[] = [
new BuiltinFunctions.Abs(),
new BuiltinFunctions.Accessor(),
new BuiltinFunctions.Add(),
new BuiltinFunctions.AddDays(),
new BuiltinFunctions.AddHours(),
new BuiltinFunctions.AddMinutes(),
new BuiltinFunctions.AddOrdinal(),
new BuiltinFunctions.AddProperty(),
new BuiltinFunctions.AddSeconds(),
new BuiltinFunctions.AddToTime(),
new BuiltinFunctions.All(),
new BuiltinFunctions.And(),
new BuiltinFunctions.Any(),
new BuiltinFunctions.Average(),
new BuiltinFunctions.Base64(),
new BuiltinFunctions.Base64ToBinary(),
new BuiltinFunctions.Base64ToString(),
new BuiltinFunctions.Binary(),
new BuiltinFunctions.Bool(),
new BuiltinFunctions.Ceiling(),
new BuiltinFunctions.Coalesce(),
new BuiltinFunctions.Concat(),
new BuiltinFunctions.Contains(),
new BuiltinFunctions.ConvertFromUTC(),
new BuiltinFunctions.ConvertToUTC(),
new BuiltinFunctions.Count(),
new BuiltinFunctions.CountWord(),
new BuiltinFunctions.CreateArray(),
new BuiltinFunctions.DataUri(),
new BuiltinFunctions.DataUriToBinary(),
new BuiltinFunctions.DataUriToString(),
new BuiltinFunctions.DateFunc(),
new BuiltinFunctions.DateReadBack(),
new BuiltinFunctions.DateTimeDiff(),
new BuiltinFunctions.DayOfMonth(),
new BuiltinFunctions.DayOfWeek(),
new BuiltinFunctions.DayOfYear(),
new BuiltinFunctions.Divide(),
new BuiltinFunctions.Element(),
new BuiltinFunctions.Empty(),
new BuiltinFunctions.EndsWith(),
new BuiltinFunctions.EOL(),
new BuiltinFunctions.Equal(),
new BuiltinFunctions.Exists(),
new BuiltinFunctions.Flatten(),
new BuiltinFunctions.First(),
new BuiltinFunctions.Float(),
new BuiltinFunctions.Floor(),
new BuiltinFunctions.Foreach(),
new BuiltinFunctions.FormatDateTime(),
new BuiltinFunctions.FormatEpoch(),
new BuiltinFunctions.FormatNumber(),
new BuiltinFunctions.FormatTicks(),
new BuiltinFunctions.GetFutureTime(),
new BuiltinFunctions.GetNextViableDate(),
new BuiltinFunctions.GetNextViableTime(),
new BuiltinFunctions.GetPastTime(),
new BuiltinFunctions.GetPreviousViableDate(),
new BuiltinFunctions.GetPreviousViableTime(),
new BuiltinFunctions.GetPastTime(),
new BuiltinFunctions.GetProperty(),
new BuiltinFunctions.GetTimeOfDay(),
new BuiltinFunctions.GreaterThan(),
new BuiltinFunctions.GreaterThanOrEqual(),
new BuiltinFunctions.If(),
new BuiltinFunctions.Ignore(),
new BuiltinFunctions.IndexOf(),
new BuiltinFunctions.IndicesAndValues(),
new BuiltinFunctions.Int(),
new BuiltinFunctions.Intersection(),
new BuiltinFunctions.IsArray(),
new BuiltinFunctions.IsBoolean(),
new BuiltinFunctions.IsDate(),
new BuiltinFunctions.IsDateRange(),
new BuiltinFunctions.IsDateTime(),
new BuiltinFunctions.IsDefinite(),
new BuiltinFunctions.IsDuration(),
new BuiltinFunctions.IsFloat(),
new BuiltinFunctions.IsInteger(),
new BuiltinFunctions.IsMatch(),
new BuiltinFunctions.IsObject(),
new BuiltinFunctions.IsPresent(),
new BuiltinFunctions.IsString(),
new BuiltinFunctions.IsTime(),
new BuiltinFunctions.IsTimeRange(),
new BuiltinFunctions.Join(),
new BuiltinFunctions.JPath(),
new BuiltinFunctions.Json(),
new BuiltinFunctions.JsonStringify(),
new BuiltinFunctions.Last(),
new BuiltinFunctions.LastIndexOf(),
new BuiltinFunctions.Length(),
new BuiltinFunctions.LessThan(),
new BuiltinFunctions.LessThanOrEqual(),
new BuiltinFunctions.Max(),
new BuiltinFunctions.Merge(),
new BuiltinFunctions.Min(),
new BuiltinFunctions.Mod(),
new BuiltinFunctions.Month(),
new BuiltinFunctions.Multiply(),
new BuiltinFunctions.NewGuid(),
new BuiltinFunctions.Not(),
new BuiltinFunctions.NotEqual(),
new BuiltinFunctions.Optional(),
new BuiltinFunctions.Or(),
new BuiltinFunctions.Power(),
new BuiltinFunctions.Rand(),
new BuiltinFunctions.Range(),
new BuiltinFunctions.RemoveProperty(),
new BuiltinFunctions.Replace(),
new BuiltinFunctions.ReplaceIgnoreCase(),
new BuiltinFunctions.Reverse(),
new BuiltinFunctions.Round(),
new BuiltinFunctions.Select(),
new BuiltinFunctions.SentenceCase(),
new BuiltinFunctions.SetPathToValue(),
new BuiltinFunctions.SetProperty(),
new BuiltinFunctions.Skip(),
new BuiltinFunctions.SortBy(),
new BuiltinFunctions.SortByDescending(),
new BuiltinFunctions.Split(),
new BuiltinFunctions.Sqrt(),
new BuiltinFunctions.StartOfDay(),
new BuiltinFunctions.StartOfHour(),
new BuiltinFunctions.StartOfMonth(),
new BuiltinFunctions.StartsWith(),
new BuiltinFunctions.String(),
new BuiltinFunctions.StringOrValue(),
new BuiltinFunctions.SubArray(),
new BuiltinFunctions.Substring(),
new BuiltinFunctions.Subtract(),
new BuiltinFunctions.SubtractFromTime(),
new BuiltinFunctions.Sum(),
new BuiltinFunctions.Take(),
new BuiltinFunctions.Ticks(),
new BuiltinFunctions.TicksToDays(),
new BuiltinFunctions.TicksToHours(),
new BuiltinFunctions.TicksToMinutes(),
new BuiltinFunctions.TimexResolve(),
new BuiltinFunctions.TitleCase(),
new BuiltinFunctions.ToLower(),
new BuiltinFunctions.ToUpper(),
new BuiltinFunctions.Trim(),
new BuiltinFunctions.Union(),
new BuiltinFunctions.Unique(),
new BuiltinFunctions.UriComponent(),
new BuiltinFunctions.UriComponentToString(),
new BuiltinFunctions.UriHost(),
new BuiltinFunctions.UriPath(),
new BuiltinFunctions.UriPathAndQuery(),
new BuiltinFunctions.UriPort(),
new BuiltinFunctions.UriQuery(),
new BuiltinFunctions.UriScheme(),
new BuiltinFunctions.UtcNow(),
new BuiltinFunctions.Where(),
new BuiltinFunctions.XML(),
new BuiltinFunctions.XPath(),
new BuiltinFunctions.Year(),
];
const lookup: Map<string, ExpressionEvaluator> = new Map<string, ExpressionEvaluator>();
functions.forEach((func: ExpressionEvaluator): void => {
lookup.set(func.type, func);
});
// Attach negations
lookup.get(ExpressionType.LessThan).negation = lookup.get(ExpressionType.GreaterThanOrEqual);
lookup.get(ExpressionType.LessThanOrEqual).negation = lookup.get(ExpressionType.GreaterThan);
lookup.get(ExpressionType.Equal).negation = lookup.get(ExpressionType.NotEqual);
// Math aliases
lookup.set('add', lookup.get(ExpressionType.Add)); // more than 1 param
lookup.set('mul', lookup.get(ExpressionType.Multiply)); // more than 1 param
lookup.set('div', lookup.get(ExpressionType.Divide)); // more than 1 param
lookup.set('sub', lookup.get(ExpressionType.Subtract)); // more than 1 param
lookup.set('exp', lookup.get(ExpressionType.Power)); // more than 1 param
lookup.set('mod', lookup.get(ExpressionType.Mod));
// Comparison aliases
lookup.set('and', lookup.get(ExpressionType.And));
lookup.set('equals', lookup.get(ExpressionType.Equal));
lookup.set('greater', lookup.get(ExpressionType.GreaterThan));
lookup.set('greaterOrEquals', lookup.get(ExpressionType.GreaterThanOrEqual));
lookup.set('less', lookup.get(ExpressionType.LessThan));
lookup.set('lessOrEquals', lookup.get(ExpressionType.LessThanOrEqual));
lookup.set('not', lookup.get(ExpressionType.Not));
lookup.set('or', lookup.get(ExpressionType.Or));
lookup.set('&', lookup.get(ExpressionType.Concat));
lookup.set('??', lookup.get(ExpressionType.Coalesce));
return lookup as ReadonlyMap<string, ExpressionEvaluator>;
}