@firebase/firestore
Version:
The Cloud Firestore component of the Firebase JS SDK.
468 lines (467 loc) • 19 kB
TypeScript
import { Field, Constant, Expression, FunctionExpression, ListOfExprs, BooleanConstant, BooleanFunctionExpression, BooleanField } from '../lite-api/expressions';
import { Timestamp } from '../lite-api/timestamp';
import { MutableDocument } from '../model/document';
import { ArrayValue, Value } from '../protos/firestore_proto_api';
import { JsonProtoSerializer } from '../remote/serializer';
export type PipelineInputOutput = MutableDocument;
export interface EvaluationContext {
serializer: JsonProtoSerializer;
serverTimestampBehavior?: 'estimate' | 'previous' | 'none';
}
export type EvaluateResultType = 'ERROR' | 'UNSET' | 'NULL' | 'BOOLEAN' | 'INT' | 'DOUBLE' | 'TIMESTAMP' | 'STRING' | 'BYTES' | 'REFERENCE' | 'GEO_POINT' | 'ARRAY' | 'MAP' | 'FIELD_REFERENCE' | 'VECTOR';
export declare class EvaluateResult {
readonly type: EvaluateResultType;
readonly value?: Value | undefined;
private constructor();
static newError(): EvaluateResult;
static newUnset(): EvaluateResult;
static newNull(): EvaluateResult;
static newValue(value: Value): EvaluateResult;
isErrorOrUnset(): boolean;
isNull(): boolean;
}
export declare function valueOrUndefined(value: EvaluateResult): Value | undefined;
export interface EvaluableExpr {
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
/**
* @internal
*
* Unwraps a wrapped expression type, like BooleanExpression.
*
* @param expr The expression to unwrap.
* @return The inner expression of a wrapped expression, otherwise
* returns the input itself.
*/
export declare function unwrapExpression(expr: BooleanConstant): Constant;
export declare function unwrapExpression(expr: BooleanFunctionExpression): FunctionExpression;
export declare function unwrapExpression(expr: BooleanField): Field;
export declare function unwrapExpression(expr: Expression): Expression;
export declare function toEvaluable(expr: Expression): EvaluableExpr;
export declare class CoreField implements EvaluableExpr {
private expr;
constructor(expr: Field);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreConstant implements EvaluableExpr {
private expr;
constructor(expr: Constant);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreBooleanConstant implements EvaluableExpr {
private expr;
constructor(expr: BooleanConstant);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreListOfExprs implements EvaluableExpr {
private expr;
constructor(expr: ListOfExprs);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare const LongMaxValue: bigint;
export declare const LongMinValue: bigint;
declare abstract class BigIntOrDoubleArithmetics implements EvaluableExpr {
protected expr: FunctionExpression;
constructor(expr: FunctionExpression);
abstract bigIntArith(left: {
integerValue: number | string;
}, right: {
integerValue: number | string;
}): bigint | number | undefined;
abstract doubleArith(left: {
doubleValue: number | string;
} | {
integerValue: number | string;
}, right: {
doubleValue: number | string;
} | {
integerValue: number | string;
}): {
doubleValue: number;
} | undefined;
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
applyArithmetics(left: EvaluateResult, right: EvaluateResult): EvaluateResult;
}
export declare class CoreAdd extends BigIntOrDoubleArithmetics {
bigIntArith(left: {
integerValue: number | string;
}, right: {
integerValue: number | string;
}): bigint | undefined;
doubleArith(left: {
doubleValue: number | string;
} | {
integerValue: number | string;
}, right: {
doubleValue: number | string;
} | {
integerValue: number | string;
}): {
doubleValue: number;
} | undefined;
}
export declare class CoreSubtract extends BigIntOrDoubleArithmetics {
protected expr: FunctionExpression;
constructor(expr: FunctionExpression);
bigIntArith(left: {
integerValue: number | string;
}, right: {
integerValue: number | string;
}): bigint | undefined;
doubleArith(left: {
doubleValue: number | string;
} | {
integerValue: number | string;
}, right: {
doubleValue: number | string;
} | {
integerValue: number | string;
}): {
doubleValue: number;
} | undefined;
}
export declare class CoreMultiply extends BigIntOrDoubleArithmetics {
protected expr: FunctionExpression;
constructor(expr: FunctionExpression);
bigIntArith(left: {
integerValue: number | string;
}, right: {
integerValue: number | string;
}): bigint | undefined;
doubleArith(left: {
doubleValue: number | string;
} | {
integerValue: number | string;
}, right: {
doubleValue: number | string;
} | {
integerValue: number | string;
}): {
doubleValue: number;
} | undefined;
}
export declare class CoreDivide extends BigIntOrDoubleArithmetics {
protected expr: FunctionExpression;
constructor(expr: FunctionExpression);
bigIntArith(left: {
integerValue: number | string;
}, right: {
integerValue: number | string;
}): bigint | number | undefined;
doubleArith(left: {
doubleValue: number | string;
} | {
integerValue: number | string;
}, right: {
doubleValue: number | string;
} | {
integerValue: number | string;
}): {
doubleValue: number;
} | undefined;
}
export declare class CoreMod extends BigIntOrDoubleArithmetics {
protected expr: FunctionExpression;
constructor(expr: FunctionExpression);
bigIntArith(left: {
integerValue: number | string;
}, right: {
integerValue: number | string;
}): bigint | undefined;
doubleArith(left: {
doubleValue: number | string;
} | {
integerValue: number | string;
}, right: {
doubleValue: number | string;
} | {
integerValue: number | string;
}): {
doubleValue: number;
} | undefined;
}
export declare class CoreAnd implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreNot implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreOr implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreXor implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
static xor(a: boolean, b: boolean): boolean;
}
export declare class CoreEqAny implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreNotEqAny implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreIsNan implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreIsNotNan implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreIsNull implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreIsNotNull implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreIsError implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreExists implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreCond implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreLogicalMaximum implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreLogicalMinimum implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
declare abstract class ComparisonBase implements EvaluableExpr {
protected expr: FunctionExpression;
protected constructor(expr: FunctionExpression);
abstract compareToResult(left: EvaluateResult, right: EvaluateResult): EvaluateResult;
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreEq extends ComparisonBase {
protected expr: FunctionExpression;
constructor(expr: FunctionExpression);
compareToResult(left: EvaluateResult, right: EvaluateResult): EvaluateResult;
}
export declare class CoreNeq extends ComparisonBase {
protected expr: FunctionExpression;
constructor(expr: FunctionExpression);
compareToResult(left: EvaluateResult, right: EvaluateResult): EvaluateResult;
}
export declare class CoreLt extends ComparisonBase {
protected expr: FunctionExpression;
constructor(expr: FunctionExpression);
compareToResult(left: EvaluateResult, right: EvaluateResult): EvaluateResult;
}
export declare class CoreLte extends ComparisonBase {
protected expr: FunctionExpression;
constructor(expr: FunctionExpression);
compareToResult(left: EvaluateResult, right: EvaluateResult): EvaluateResult;
}
export declare class CoreGt extends ComparisonBase {
protected expr: FunctionExpression;
constructor(expr: FunctionExpression);
compareToResult(left: EvaluateResult, right: EvaluateResult): EvaluateResult;
}
export declare class CoreGte extends ComparisonBase {
protected expr: FunctionExpression;
constructor(expr: FunctionExpression);
compareToResult(left: EvaluateResult, right: EvaluateResult): EvaluateResult;
}
export declare class CoreArrayConcat implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreArrayReverse implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreArrayContains implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreArrayContainsAll implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreArrayContainsAny implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreArrayLength implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreArrayElement implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreReverse implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreReplaceFirst implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreReplaceAll implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreCharLength implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreByteLength implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
declare abstract class StringSearchFunctionBase implements EvaluableExpr {
readonly expr: FunctionExpression;
constructor(expr: FunctionExpression);
abstract performSearch(value: string, search: string): EvaluateResult;
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreLike extends StringSearchFunctionBase {
performSearch(value: string, search: string): EvaluateResult;
}
export declare class CoreRegexContains extends StringSearchFunctionBase {
performSearch(value: string, search: string): EvaluateResult;
}
export declare class CoreRegexMatch extends StringSearchFunctionBase {
performSearch(value: string, search: string): EvaluateResult;
}
export declare class CoreStrContains extends StringSearchFunctionBase {
performSearch(value: string, search: string): EvaluateResult;
}
export declare class CoreStartsWith extends StringSearchFunctionBase {
performSearch(value: string, search: string): EvaluateResult;
}
export declare class CoreEndsWith extends StringSearchFunctionBase {
performSearch(value: string, search: string): EvaluateResult;
}
export declare class CoreToLower implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreToUpper implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreTrim implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreStrConcat implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreMapGet implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
declare abstract class DistanceBase implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
abstract calculateDistance(vec1: ArrayValue | undefined, vec2: ArrayValue | undefined): number | undefined;
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
export declare class CoreCosineDistance extends DistanceBase {
calculateDistance(vec1: ArrayValue | undefined, vec2: ArrayValue | undefined): number | undefined;
}
export declare class CoreDotProduct extends DistanceBase {
calculateDistance(vec1: ArrayValue | undefined, vec2: ArrayValue | undefined): number | undefined;
}
export declare class CoreEuclideanDistance extends DistanceBase {
calculateDistance(vec1: ArrayValue | undefined, vec2: ArrayValue | undefined): number | undefined;
}
export declare class CoreVectorLength implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
}
declare abstract class UnixToTimestamp implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
abstract toTimestamp(value: bigint): EvaluateResult;
}
export declare class CoreUnixMicrosToTimestamp extends UnixToTimestamp {
toTimestamp(value: bigint): EvaluateResult;
}
export declare class CoreUnixMillisToTimestamp extends UnixToTimestamp {
toTimestamp(value: bigint): EvaluateResult;
}
export declare class CoreUnixSecondsToTimestamp extends UnixToTimestamp {
toTimestamp(value: bigint): EvaluateResult;
}
declare abstract class TimestampToUnix implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
abstract toUnix(value: Timestamp): EvaluateResult;
}
export declare class CoreTimestampToUnixMicros extends TimestampToUnix {
toUnix(timestamp: Timestamp): EvaluateResult;
}
export declare class CoreTimestampToUnixMillis extends TimestampToUnix {
toUnix(timestamp: Timestamp): EvaluateResult;
}
export declare class CoreTimestampToUnixSeconds extends TimestampToUnix {
toUnix(timestamp: Timestamp): EvaluateResult;
}
declare abstract class TimestampArithmetic implements EvaluableExpr {
private expr;
constructor(expr: FunctionExpression);
evaluate(context: EvaluationContext, input: PipelineInputOutput): EvaluateResult;
private getMultiplier;
abstract newMicros(initialMicros: bigint, microsToOperation: bigint): bigint;
}
export declare class CoreTimestampAdd extends TimestampArithmetic {
newMicros(initialMicros: bigint, microsToAdd: bigint): bigint;
}
export declare class CoreTimestampSub extends TimestampArithmetic {
newMicros(initialMicros: bigint, microsToSub: bigint): bigint;
}
export {};