@gmencz/faunadb
Version:
TypeScript-first FaunaDB client with static type inference
1,392 lines (1,390 loc) • 52.9 kB
TypeScript
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