UNPKG

@gmencz/faunadb

Version:

TypeScript-first FaunaDB client with static type inference

1,392 lines (1,390 loc) 52.9 kB
import { O } from 'ts-toolbelt'; declare const wrapValues: (obj: Record<string, unknown>) => Record<string, unknown>; declare const wrap: (obj: unknown) => unknown; declare class Expression<T = unknown> { private raw; private static _isFaunaExpression; constructor(raw: T); private toJSON; } declare type SchemaTypes = { AccessProviders?: string[]; Collections?: Record<string, unknown>; Databases?: string[]; Functions?: Record<string, unknown>; Indexes?: string[]; Roles?: string[]; }; declare type OrExpression<TValue = unknown> = Expression | TValue; declare type Normalizer = 'NFKCCaseFold' | 'NFC' | 'NFD' | 'NFKC' | 'NFKD'; declare type CreateParams<TData extends unknown> = { data?: OrExpression<TData>; credentials?: OrExpression<{ password: string; } & Record<string, unknown>>; ttl?: Expression; }; declare type CreateAccessProviderParams<TAccessProviderName extends string> = { name: OrExpression<TAccessProviderName>; issuer: OrExpression<string>; jwks_uri: OrExpression<string>; roles?: Expression[] | { role: Expression; predicate: Expression; }[]; data?: OrExpression<Record<string, unknown>>; }; declare type CreateCollectionParams<TSchema extends SchemaTypes, TCollectionName extends keyof TSchema['Collections']> = { name: OrExpression<TCollectionName>; data?: OrExpression<Record<string, unknown>>; history_days?: OrExpression<number | null>; ttl_days?: OrExpression<number | null>; }; declare type CreateDatabaseParams<TDatabaseName extends string> = { name: OrExpression<TDatabaseName>; data?: OrExpression<Record<string, unknown>>; }; declare type BuiltInRole = 'admin' | 'server' | 'server-readonly' | 'client'; declare type CreateFunctionParams<TFunctionName extends string> = { name: OrExpression<TFunctionName>; body: Expression; data?: OrExpression<Record<string, unknown>>; role?: BuiltInRole | Expression; }; declare type CreateKeyParams = { role: BuiltInRole | Expression | Expression[]; database?: Expression; data?: OrExpression<{ name?: string; } & Record<string, unknown>>; }; declare type SourceObject = { collection: Expression; fields: OrExpression<Record<string, Expression>>; }; declare type TermObject = { field?: OrExpression<string | string[]>; binding?: OrExpression<string>; }; declare type ValueObject = { field?: OrExpression<string | string[]>; binding?: OrExpression<string>; reverse?: OrExpression<boolean>; }; declare type EpochUnit = 'day' | 'days' | 'half day' | 'half days' | 'hour' | 'hours' | 'minute' | 'minutes' | 'second' | 'seconds' | 'millisecond' | 'milliseconds' | 'microsecond' | 'microseconds' | 'nanosecond' | 'nanoseconds'; declare type CreateIndexParams<TIndexName extends string> = { name: OrExpression<TIndexName>; source: OrExpression<SourceObject>; terms?: OrExpression<TermObject[]>; values?: OrExpression<ValueObject[]>; unique?: OrExpression<boolean>; serialized?: OrExpression<boolean>; data?: OrExpression<Record<string, unknown>>; }; declare type PrivilegeActions = { create: boolean | Expression; delete: boolean | Expression; read: boolean | Expression; write: boolean | Expression; history_read: boolean | Expression; history_write: boolean | Expression; unrestricted_read: boolean | Expression; call: boolean | Expression; }; declare type PrivilegeConfigurationObject = { resource: Expression; actions: OrExpression<O.AtLeast<PrivilegeActions>>; }; declare type MembershipConfigurationObject = { resource: Expression; predicate?: Expression; }; declare type CreateRoleParams<TRoleName extends string> = { name: OrExpression<TRoleName>; privileges: OrExpression<PrivilegeConfigurationObject[]>; membership?: OrExpression<MembershipConfigurationObject[]>; data?: OrExpression<Record<string, unknown>>; }; declare type InsertParams = { data: OrExpression<Record<string, unknown>>; credentials: OrExpression<Record<string, unknown>>; delegates: OrExpression<Record<string, unknown>>; }; declare type LoginParams = { data?: OrExpression<Record<string, unknown>>; password: OrExpression<string>; ttl?: Expression; }; declare type PaginateParams = { ts?: OrExpression<number>; before?: Expression[]; after?: Expression[]; size?: OrExpression<number>; events?: OrExpression<boolean>; sources?: OrExpression<boolean>; }; declare type ReplaceParams = { data: OrExpression<Record<string, unknown>>; }; declare type UpdateParams = { data: OrExpression<Record<string, unknown>>; credentials: OrExpression<Record<string, unknown>>; delegates: OrExpression<Record<string, unknown>>; ttl?: Expression; }; declare class QueryBuilder<TSchema extends SchemaTypes = SchemaTypes> { /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/abort */ Abort: (message: OrExpression<string>) => Expression<{ abort: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/abs */ Abs: (value: OrExpression<number>) => Expression<{ abs: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/accessprovider */ AccessProvider: <TAccessProviderName extends TSchema["AccessProviders"] extends string[] ? TSchema["AccessProviders"][number] : string = TSchema["AccessProviders"] extends string[] ? TSchema["AccessProviders"][number] : string>(name: OrExpression<TAccessProviderName>) => Expression<{ access_provider: OrExpression<TAccessProviderName>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/accessproviders */ AccessProviders: (database?: Expression<unknown> | undefined) => Expression<{ access_providers: null; }> | Expression<{ access_providers: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/acos */ Acos: (value: OrExpression<number>) => Expression<{ acos: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/add */ Add: (...values: OrExpression<number>[]) => Expression<{ add: OrExpression<number>; }> | Expression<{ add: OrExpression<number>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/all */ All: (...values: OrExpression<number>[]) => Expression<{ all: OrExpression<number>; }> | Expression<{ all: OrExpression<number>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/and */ And: (...values: OrExpression<boolean>[]) => Expression<{ and: OrExpression<boolean>; }> | Expression<{ and: OrExpression<boolean>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/any */ Any: (...values: OrExpression<boolean>[]) => Expression<{ any: OrExpression<boolean>; }> | Expression<{ any: OrExpression<boolean>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/append */ Append: (base: unknown[] | Expression, elems: unknown[] | Expression) => Expression<{ append: unknown; collection: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/asin */ Asin: (value: OrExpression<number>) => Expression<{ asin: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/at */ At: (timestamp: Expression, expression: unknown) => Expression<{ at: Expression<unknown>; expr: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/atan */ Atan: (value: OrExpression<number>) => Expression<{ atan: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/bitand */ BitAnd: (...values: OrExpression<number>[]) => Expression<{ bitand: OrExpression<number>; }> | Expression<{ bitand: OrExpression<number>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/bitnot */ BitNot: (value: OrExpression<number>) => Expression<{ bitnot: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/bitor */ BitOr: (...values: OrExpression<number>[]) => Expression<{ bitor: OrExpression<number>; }> | Expression<{ bitor: OrExpression<number>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/bitxor */ BitXor: (...values: OrExpression<number>[]) => Expression<{ bitxor: OrExpression<number>; }> | Expression<{ bitxor: OrExpression<number>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/call */ Call: <TFunctionName extends keyof TSchema["Functions"] = keyof TSchema["Functions"], TArgs extends TSchema["Functions"][TFunctionName] = TSchema["Functions"][TFunctionName]>(fn: OrExpression<TFunctionName>, args: OrExpression<TArgs>) => Expression<{ call: OrExpression<TFunctionName>; arguments: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/casefold */ Casefold: (value: OrExpression<string>, normalizer?: OrExpression<Normalizer> | undefined) => Expression<{ casefold: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/ceil */ Ceil: (value: OrExpression<number>) => Expression<{ ceil: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/collection */ Collection: <TCollectionName extends keyof TSchema["Collections"] = keyof TSchema["Collections"]>(name: OrExpression<TCollectionName>, database?: Expression<unknown> | undefined) => Expression<{ collection: OrExpression<TCollectionName>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/collections */ Collections: (database?: Expression<unknown> | undefined) => Expression<{ collections: Expression<unknown>; }> | Expression<{ collections: null; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/concat */ Concat: (value: OrExpression<string>[], separator?: string | Expression<unknown> | undefined) => Expression<{ concat: OrExpression<string>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/containsfield */ ContainsField: (field: OrExpression<string>, value: unknown) => Expression<{ contains_field: OrExpression<string>; in: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/containspath */ ContainsPath: (path: OrExpression<string | number>[], value: unknown) => Expression<{ contains_path: OrExpression<string | number>[]; in: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/containsstr */ ContainsStr: (value: OrExpression<string>, search: OrExpression<string>) => Expression<{ containsstr: OrExpression<string>; search: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/containsstrregex */ ContainsStrRegex: (value: OrExpression<string>, pattern: OrExpression<string>) => Expression<{ containsstrregex: OrExpression<string>; pattern: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/containsvalue */ ContainsValue: (value: unknown, inValue: unknown) => Expression<{ contains_value: unknown; in: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/cos */ Cos: (value: OrExpression<number>) => Expression<{ cos: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/cosh */ Cosh: (value: OrExpression<number>) => Expression<{ cosh: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/count */ Count: (arrayOrSet: OrExpression<unknown[]>) => Expression<{ count: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/create */ Create: <TCollectionName extends keyof TSchema["Collections"] = keyof TSchema["Collections"], TData extends TSchema["Collections"][TCollectionName] = TSchema["Collections"][TCollectionName]>(collection: OrExpression<TCollectionName>, params: OrExpression<CreateParams<TData> & Record<string, unknown>>) => Expression<{ create: OrExpression<TCollectionName>; params: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/createaccessprovider */ CreateAccessProvider: <TAccessProviderName extends TSchema["AccessProviders"] extends string[] ? TSchema["AccessProviders"][number] : string = TSchema["AccessProviders"] extends string[] ? TSchema["AccessProviders"][number] : string>(params: OrExpression<CreateAccessProviderParams<TAccessProviderName>>) => Expression<{ create_access_provider: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/createcollection */ CreateCollection: (params: OrExpression<CreateCollectionParams<TSchema, keyof TSchema['Collections']>>) => Expression<{ create_collection: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/createdatabase */ CreateDatabase: <TDatabaseName extends TSchema["Databases"] extends string[] ? TSchema["Databases"][number] : string = TSchema["Databases"] extends string[] ? TSchema["Databases"][number] : string>(params: OrExpression<CreateDatabaseParams<TDatabaseName>>) => Expression<{ create_database: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/createfunction */ CreateFunction: <TFunctionName extends TSchema["Functions"] extends string[] ? TSchema["Functions"][number] : string = TSchema["Functions"] extends string[] ? TSchema["Functions"][number] : string>(params: OrExpression<CreateFunctionParams<TFunctionName>>) => Expression<{ create_function: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/createindex */ CreateIndex: <TIndexName extends TSchema["Indexes"] extends string[] ? TSchema["Indexes"][number] : string = TSchema["Indexes"] extends string[] ? TSchema["Indexes"][number] : string>(params: OrExpression<CreateIndexParams<TIndexName>>) => Expression<{ create_index: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/createkey */ CreateKey: (params: OrExpression<CreateKeyParams>) => Expression<{ create_key: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/createrole */ CreateRole: <TRoleName extends TSchema["Roles"] extends string[] ? TSchema["Roles"][number] : string = TSchema["Roles"] extends string[] ? TSchema["Roles"][number] : string>(params: OrExpression<CreateRoleParams<TRoleName>>) => Expression<{ create_role: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/credentials */ Credentials: (database?: Expression<unknown> | undefined) => Expression<{ credentials: Expression<unknown>; }> | Expression<{ credentials: null; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/currentidentity */ CurrentIdentity: () => Expression<{ current_identity: null; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/currenttoken */ CurrentToken: () => Expression<{ current_token: null; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/database */ Database: <TDatabaseName extends TSchema["Databases"] extends string[] ? TSchema["Databases"][number] : string = TSchema["Databases"] extends string[] ? TSchema["Databases"][number] : string>(name: OrExpression<TDatabaseName>, database?: Expression<unknown> | undefined) => Expression<{ database: OrExpression<TDatabaseName>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/databases */ Databases: (database?: Expression<unknown> | undefined) => Expression<{ databases: Expression<unknown>; }> | Expression<{ databases: null; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/date */ Date: (str: OrExpression<string>) => Expression<{ date: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/dayofmonth */ DayOfMonth: (timestamp: Expression) => Expression<{ day_of_month: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/dayofweek */ DayOfWeek: (timestamp: Expression) => Expression<{ day_of_week: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/dayofyear */ DayOfYear: (timestamp: Expression) => Expression<{ day_of_year: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/degrees */ Degrees: (value: OrExpression<number>) => Expression<{ degrees: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/delete */ Delete: (ref: Expression) => Expression<{ delete: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/difference */ Difference: (source: unknown[] | Expression, ...diff: unknown[]) => Expression<{ difference: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/distinct */ Distinct: (source: unknown[] | Expression) => Expression<{ distinct: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/divide */ Divide: (...values: OrExpression<number>[]) => Expression<{ divide: OrExpression<number>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/do */ Do: (...expressions: Expression[]) => Expression<{ do: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/documents */ Documents: (collection: Expression) => Expression<{ documents: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/drop */ Drop: (num: OrExpression<number>, array: OrExpression<unknown[]>) => Expression<{ drop: OrExpression<number>; collection: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/endswith */ EndsWith: (value: OrExpression<string>, search: OrExpression<string>) => Expression<{ endswith: OrExpression<string>; search: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/epoch */ Epoch: (num: OrExpression<number>, unit: OrExpression<EpochUnit>) => Expression<{ epoch: OrExpression<number>; unit: OrExpression<EpochUnit>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/equals */ Equals: (value1: unknown, value2: unknown, ...values: unknown[]) => Expression<{ equals: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/events */ Events: (input: Expression) => Expression<{ events: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/exists */ Exists: (ref: Expression, ts?: OrExpression<number> | undefined) => Expression<{ exists: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/exp */ Exp: (value: OrExpression<number>) => Expression<{ exp: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/filter */ Filter: (arrayOrSet: OrExpression<unknown[]>, lambda: Expression) => Expression<{ collection: unknown; filter: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/findstr */ FindStr: (value: OrExpression<string>, find: OrExpression<string>, start?: OrExpression<number> | undefined) => Expression<{ findstr: OrExpression<string>; find: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/findstrregex */ FindStrRegex: (value: OrExpression<string>, find: OrExpression<string>, start?: OrExpression<number> | undefined, numResults?: OrExpression<number> | undefined) => Expression<{ findstrregex: OrExpression<string>; find: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/floor */ Floor: (value: OrExpression<number>) => Expression<{ floor: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/foreach */ Foreach: (arrayOrPage: OrExpression<unknown[]>, lambda: Expression) => Expression<{ collection: unknown; foreach: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/format */ Format: (format: OrExpression<string>, ...args: unknown[]) => Expression<{ format: OrExpression<string>; values: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/function */ Function: <TFunctionName extends keyof TSchema["Functions"] = keyof TSchema["Functions"]>(name: OrExpression<TFunctionName>, database?: Expression<unknown> | undefined) => Expression<{ function: OrExpression<TFunctionName>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/functions */ Functions: (database?: Expression<unknown> | undefined) => Expression<{ functions: Expression<unknown>; }> | Expression<{ functions: null; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/gt */ GT: (...values: OrExpression<number>[]) => Expression<{ gt: OrExpression<number>; }> | Expression<{ gt: OrExpression<number>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/gte */ GTE: (...values: OrExpression<number>[]) => Expression<{ gte: OrExpression<number>; }> | Expression<{ gte: OrExpression<number>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/get */ Get: (ref: Expression, ts?: OrExpression<number> | undefined) => Expression<{ get: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/hascurrentidentity */ HasCurrentIdentity: () => Expression<{ has_current_identity: null; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/hascurrenttoken */ HasCurrentToken: () => Expression<{ has_current_token: null; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/hour */ Hour: (timestamp: Expression) => Expression<{ hour: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/hypot */ Hypot: (a: OrExpression<number>, b?: OrExpression<number> | undefined) => Expression<{ hypot: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/identify */ Identify: (identity: Expression, password: OrExpression<string>) => Expression<{ identify: Expression<unknown>; password: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/if */ If: (condition: OrExpression<boolean>, thenExpression: unknown, elseExpression: unknown) => Expression<{ if: OrExpression<boolean>; then: unknown; else: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/index */ Index: <TIndexName extends TSchema["Indexes"] extends string[] ? TSchema["Indexes"][number] : string = TSchema["Indexes"] extends string[] ? TSchema["Indexes"][number] : string>(name: OrExpression<TIndexName>, database?: Expression<unknown> | undefined) => Expression<{ index: OrExpression<TIndexName>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/indexes */ Indexes: (database?: Expression<unknown> | undefined) => Expression<{ indexes: Expression<unknown>; }> | Expression<{ indexes: null; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/insert */ Insert: (ref: Expression, ts: OrExpression<number>, action: OrExpression<'create' | 'delete' | 'update'>, params: OrExpression<O.AtLeast<InsertParams>>) => Expression<{ insert: Expression<unknown>; ts: OrExpression<number>; action: OrExpression<"create" | "delete" | "update">; params: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/intersection */ Intersection: (...group: OrExpression<unknown[]>[]) => Expression<{ intersection: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isarray */ IsArray: (value: unknown) => Expression<{ is_array: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isboolean */ IsBoolean: (value: unknown) => Expression<{ is_boolean: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isbytes */ IsBytes: (value: unknown) => Expression<{ is_bytes: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/iscollection */ IsCollection: (value: unknown) => Expression<{ is_collection: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/iscredentials */ IsCredentials: (value: unknown) => Expression<{ is_credentials: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isdatabase */ IsDatabase: (value: unknown) => Expression<{ is_database: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isdate */ IsDate: (value: unknown) => Expression<{ is_date: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isdoc */ IsDoc: (value: unknown) => Expression<{ is_doc: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isdouble */ IsDouble: (value: unknown) => Expression<{ is_double: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isempty */ IsEmpty: (arrayOrSet: OrExpression<unknown[]>) => Expression<{ is_empty: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isfunction */ IsFunction: (value: unknown) => Expression<{ is_function: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isindex */ IsIndex: (value: unknown) => Expression<{ is_index: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isinteger */ IsInteger: (value: unknown) => Expression<{ is_integer: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/iskey */ IsKey: (value: unknown) => Expression<{ is_key: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/islambda */ IsLambda: (value: unknown) => Expression<{ is_lambda: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isnonempty */ IsNonEmpty: (arrayOrSet: OrExpression<unknown[]>) => Expression<{ is_nonempty: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isnull */ IsNull: (value: unknown) => Expression<{ is_null: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isnumber */ IsNumber: (value: unknown) => Expression<{ is_number: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isobject */ IsObject: (value: unknown) => Expression<{ is_object: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isref */ IsRef: (value: unknown) => Expression<{ is_ref: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isrole */ IsRole: (value: unknown) => Expression<{ is_role: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isset */ IsSet: (value: unknown) => Expression<{ is_set: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/isstring */ IsString: (value: unknown) => Expression<{ is_string: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/istimestamp */ IsTimestamp: (value: unknown) => Expression<{ is_timestamp: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/istoken */ IsToken: (value: unknown) => Expression<{ is_token: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/join */ Join: (source: unknown, target: Expression) => Expression<{ join: unknown; with: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/keyfromsecret */ KeyFromSecret: (secret: OrExpression<string>) => Expression<{ key_from_secret: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/keys */ Keys: (database?: Expression<unknown> | undefined) => Expression<{ keys: Expression<unknown>; }> | Expression<{ keys: null; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/lt */ LT: (...values: OrExpression<number>[]) => Expression<{ lt: OrExpression<number>; }> | Expression<{ lt: OrExpression<number>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/lte */ LTE: (...values: OrExpression<number>[]) => Expression<{ lte: OrExpression<number>; }> | Expression<{ lte: OrExpression<number>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/ltrim */ LTrim: (value: OrExpression<string>) => Expression<{ ltrim: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/lambda */ Lambda: (params: string | string[], expression: unknown) => Expression<{ lambda: string | string[]; expr: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/length */ Length: (value: OrExpression<string>) => Expression<{ length: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/let */ Let: (variables: Record<string, unknown>, expression: unknown) => Expression<{ let: { [x: string]: unknown; }[]; in: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/ln */ Ln: (value: OrExpression<number>) => Expression<{ ln: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/log */ Log: (value: OrExpression<number>) => Expression<{ log: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/login */ Login: (identity: Expression, params: LoginParams) => Expression<{ login: Expression<unknown>; params: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/logout */ Logout: (allTokens: OrExpression<boolean>) => Expression<{ logout: OrExpression<boolean>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/lowercase */ LowerCase: (value: OrExpression<string>) => Expression<{ lowercase: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/map */ Map: (array: OrExpression<unknown[]>, lambda: Expression) => Expression<{ map: Expression<unknown>; collection: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/match */ Match: <TIndexName extends TSchema["Indexes"] extends string[] ? TSchema["Indexes"][number] : string = TSchema["Indexes"] extends string[] ? TSchema["Indexes"][number] : string>(index: OrExpression<TIndexName>, searchTerms?: unknown) => Expression<{ match: OrExpression<TIndexName>; terms: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/max */ Max: (...values: OrExpression<number>[]) => Expression<{ max: OrExpression<number>; }> | Expression<{ max: OrExpression<number>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/mean */ Mean: (arrayOrSet: OrExpression<unknown[]>) => Expression<{ mean: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/merge */ Merge: (object1: OrExpression<Record<string, unknown>>, object2: OrExpression<Record<string, unknown>> | OrExpression<Record<string, unknown>>[], customResolver?: Expression<unknown> | undefined) => Expression<{ merge: unknown; with: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/min */ Min: (...values: OrExpression<number>[]) => Expression<{ min: OrExpression<number>; }> | Expression<{ min: OrExpression<number>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/minute */ Minute: (timestamp: Expression) => Expression<{ minute: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/modulo */ Modulo: (...values: OrExpression<number>[]) => Expression<{ modulo: OrExpression<number>; }> | Expression<{ modulo: OrExpression<number>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/month */ Month: (timestamp: Expression) => Expression<{ month: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/movedatabase */ MoveDatabase: (from: Expression, to: Expression) => Expression<{ move_database: Expression<unknown>; to: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/multiply */ Multiply: (...values: OrExpression<number>[]) => Expression<{ multiply: OrExpression<number>; }> | Expression<{ multiply: OrExpression<number>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/newid */ NewId: () => Expression<{ new_id: null; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/not */ Not: (value: OrExpression<boolean>) => Expression<{ not: OrExpression<boolean>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/now */ Now: () => Expression<{ now: null; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/or */ Or: (...values: OrExpression<boolean>[]) => Expression<{ or: OrExpression<boolean>; }> | Expression<{ or: OrExpression<boolean>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/paginate */ Paginate: (input: Expression, params?: OrExpression<PaginateParams> | undefined) => Expression<{ paginate: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/pow */ Pow: (base: OrExpression<number>, exponent: OrExpression<number>) => Expression<{ pow: OrExpression<number>; exp: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/prepend */ Prepend: (base: OrExpression<unknown[]>, elems: OrExpression<unknown[]>) => Expression<{ prepend: unknown; collection: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/query */ Query: (lambda: Expression) => Expression<{ query: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/rtrim */ RTrim: (value: OrExpression<string>) => Expression<{ rtrim: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/radians */ Radians: (value: OrExpression<number>) => Expression<{ radians: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/range */ Range: (set: Expression, start: OrExpression<unknown | unknown[]>, end: OrExpression<unknown | unknown[]>) => Expression<{ range: Expression<unknown>; from: unknown; to: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/reduce */ Reduce: (reducer: Expression, initial: unknown, arrayOrSet: OrExpression<unknown[]>) => Expression<{ reduce: Expression<unknown>; initial: unknown; arrayOrSet: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/ref */ Ref: (schemaRef: Expression, documentId: OrExpression<string>) => Expression<{ id: OrExpression<string>; ref: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/regexescape */ RegexEscape: (value: OrExpression<string>) => Expression<{ regexescape: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/remove */ Remove: (ref: Expression, ts: OrExpression<number>, action: OrExpression<'create' | 'delete' | 'update'>) => Expression<{ remove: Expression<unknown>; ts: OrExpression<number>; action: OrExpression<"create" | "delete" | "update">; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/repeat */ Repeat: (value: OrExpression<string>, number?: OrExpression<number> | undefined) => Expression<{ repeat: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/replace */ Replace: (ref: Expression, params: ReplaceParams) => Expression<{ replace: Expression<unknown>; params: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/replacestr */ ReplaceStr: (value: OrExpression<string>, find: OrExpression<string>, replace: OrExpression<string>) => Expression<{ replacestr: OrExpression<string>; find: OrExpression<string>; replace: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/replacestrregex */ ReplaceStrRegex: (value: OrExpression<string>, pattern: OrExpression<string>, replace: OrExpression<string>, firstOnly?: OrExpression<boolean> | undefined) => Expression<{ replacestrregex: OrExpression<string>; pattern: OrExpression<string>; replace: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/reverse */ Reverse: (source: OrExpression<unknown[]>) => Expression<{ reverse: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/role */ Role: <TRoleName extends TSchema["Roles"] extends string[] ? TSchema["Roles"][number] : string = TSchema["Roles"] extends string[] ? TSchema["Roles"][number] : string>(name: OrExpression<TRoleName>, database?: Expression<unknown> | undefined) => Expression<{ role: OrExpression<TRoleName>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/roles */ Roles: (database?: Expression<unknown> | undefined) => Expression<{ roles: Expression<unknown>; }> | Expression<{ roles: null; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/round */ Round: (value: OrExpression<number>, precision?: OrExpression<number> | undefined) => Expression<{ round: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/second */ Second: (timestamp: Expression) => Expression<{ second: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/select */ Select: <TFromArray extends unknown = unknown, TFrom extends Record<string, unknown> | Expression<unknown> | TFromArray[] = any>(path: TFrom extends Expression<unknown> ? string | number | (string | number)[] : O.Paths<TFrom, []> | O.Paths<TFrom, []>[number], from: TFrom, defaultValue?: unknown) => Expression<{ from: unknown; select: TFrom extends Expression<unknown> ? string | number | (string | number)[] : O.Paths<TFrom, []> | O.Paths<TFrom, []>[number]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/sign */ Sign: (value: OrExpression<number>) => Expression<{ sign: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/sin */ Sin: (value: OrExpression<number>) => Expression<{ sin: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/singleton */ Singleton: (ref: Expression) => Expression<{ singleton: Expression<unknown>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/sinh */ Sinh: (value: OrExpression<number>) => Expression<{ sinh: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/space */ Space: (count: OrExpression<number>) => Expression<{ space: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/sqrt */ Sqrt: (value: OrExpression<number>) => Expression<{ sqrt: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/startswith */ StartsWith: (value: OrExpression<string>, search: OrExpression<string>) => Expression<{ startswith: OrExpression<string>; search: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/substring */ SubString: (value: OrExpression<string>, start: OrExpression<number>, length?: OrExpression<number> | undefined) => Expression<{ substring: OrExpression<string>; start: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/subtract */ Subtract: (...values: OrExpression<number>[]) => Expression<{ subtract: OrExpression<number>; }> | Expression<{ subtract: OrExpression<number>[]; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/sum */ Sum: (arrayOrSet: OrExpression<unknown[]>) => Expression<{ sum: OrExpression<unknown[]>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/take */ Take: (num: OrExpression<number>, array: OrExpression<unknown[]>) => Expression<{ take: OrExpression<number>; collection: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/tan */ Tan: (value: OrExpression<number>) => Expression<{ tan: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/tanh */ Tanh: (value: OrExpression<number>) => Expression<{ tanh: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/time */ Time: (str: OrExpression<string>) => Expression; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/timeadd */ TimeAdd: (base: Expression, offset: OrExpression<number>, unit: OrExpression<EpochUnit>) => Expression<{ time_add: Expression<unknown>; offset: OrExpression<number>; unit: OrExpression<EpochUnit>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/timediff */ TimeDiff: (start: Expression, finish: Expression, unit: OrExpression<EpochUnit>) => Expression<{ time_diff: Expression<unknown>; other: Expression<unknown>; unit: OrExpression<EpochUnit>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/timesubtract */ TimeSubtract: (base: Expression, offset: OrExpression<number>, unit: OrExpression<EpochUnit>) => Expression<{ time_subtract: Expression<unknown>; offset: OrExpression<number>; unit: OrExpression<EpochUnit>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/titlecase */ TitleCase: (value: OrExpression<string>) => Expression<{ titlecase: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/toarray */ ToArray: (value: unknown) => Expression<{ to_array: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/todate */ ToDate: (value: unknown) => Expression<{ to_date: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/todouble */ ToDouble: (value: unknown) => Expression<{ to_double: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/tointeger */ ToInteger: (value: unknown) => Expression<{ to_integer: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/tomicros */ ToMicros: (value: unknown) => Expression<{ to_micros: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/tomillis */ ToMillis: (value: unknown) => Expression<{ to_millis: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/tonumber */ ToNumber: (value: unknown) => Expression<{ to_number: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/toobject */ ToObject: (value: unknown) => Expression<{ to_object: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/toseconds */ ToSeconds: (value: unknown) => Expression<{ to_seconds: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/tostring */ ToString: (value: unknown) => Expression<{ to_string: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/totime */ ToTime: (value: unknown) => Expression<{ to_time: unknown; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/tokens */ Tokens: (database?: Expression<unknown> | undefined) => Expression<{ tokens: Expression<unknown>; }> | Expression<{ tokens: null; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/trim */ Trim: (value: OrExpression<string>) => Expression<{ trim: OrExpression<string>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/trim */ Trunc: (value: OrExpression<number>, precision?: OrExpression<number> | undefined) => Expression<{ trunc: OrExpression<number>; }>; /** * @see https://docs.fauna.com/fauna/current/api/fql/functions/union */ Union: (...groups: OrExpression<unknown>[]) => Expression<{ union: unknown; }>; /** * @see https://do