UNPKG

@airgrid/edgekit

Version:

A privacy focused library for cookie-less audience creation.

50 lines (43 loc) 1.76 kB
import { AudienceDefinitionFilter, CosineSimilarityFilter, LogisticRegressionFilter, EngineConditionQuery, CosineSimilarityQueryValue, LogisticRegressionQueryValue, QueryFilterComparisonType, } from '../../../types'; /* Type Guards */ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any export const isNumberArray = (value: any): value is number[] => value instanceof Array && value.every((item) => typeof item === 'number'); export const isCosineSimilarityQueryValue = ( // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any value: any ): value is CosineSimilarityQueryValue => isNumberArray(value.vector) && typeof value.threshold === 'number'; export const isLogRegQueryValue = ( // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any value: any ): value is LogisticRegressionQueryValue => isNumberArray(value.vector) && typeof value.threshold === 'number' && typeof value.bias === 'number'; export const isCosineSimilarityFilterType = ( query: EngineConditionQuery<AudienceDefinitionFilter> ): query is EngineConditionQuery<CosineSimilarityFilter> => { return ( query.queryFilterComparisonType === QueryFilterComparisonType.COSINE_SIMILARITY && isCosineSimilarityQueryValue(query.queryValue) ); }; export const isLogisticRegressionFilterType = ( query: EngineConditionQuery<AudienceDefinitionFilter> ): query is EngineConditionQuery<LogisticRegressionFilter> => { return ( query.queryFilterComparisonType === QueryFilterComparisonType.LOGISTIC_REGRESSION && isLogRegQueryValue(query.queryValue) ); };