@supabase/functions-js
Version:
JS SDK to interact with Supabase Functions.
199 lines (167 loc) • 5.07 kB
TypeScript
declare type BeforeunloadReason = 'cpu' | 'memory' | 'wall_clock' | 'early_drop' | 'termination'
declare interface WindowEventMap {
load: Event
unload: Event
beforeunload: CustomEvent<BeforeunloadReason>
drain: Event
}
// TODO(Nyannyacha): These two type defs will be provided later.
// deno-lint-ignore no-explicit-any
type S3FsConfig = any
// deno-lint-ignore no-explicit-any
type TmpFsConfig = any
type OtelPropagators = 'TraceContext' | 'Baggage'
type OtelConsoleConfig = 'Ignore' | 'Capture' | 'Replace'
type OtelConfig = {
tracing_enabled?: boolean
metrics_enabled?: boolean
console?: OtelConsoleConfig
propagators?: OtelPropagators[]
}
interface UserWorkerFetchOptions {
signal?: AbortSignal
}
interface PermissionsOptions {
allow_all?: boolean | null
allow_env?: string[] | null
deny_env?: string[] | null
allow_net?: string[] | null
deny_net?: string[] | null
allow_ffi?: string[] | null
deny_ffi?: string[] | null
allow_read?: string[] | null
deny_read?: string[] | null
allow_run?: string[] | null
deny_run?: string[] | null
allow_sys?: string[] | null
deny_sys?: string[] | null
allow_write?: string[] | null
deny_write?: string[] | null
allow_import?: string[] | null
}
interface UserWorkerCreateContext {
sourceMap?: boolean | null
importMapPath?: string | null
shouldBootstrapMockFnThrowError?: boolean | null
suppressEszipMigrationWarning?: boolean | null
useReadSyncFileAPI?: boolean | null
supervisor?: {
requestAbsentTimeoutMs?: number | null
}
otel?: {
[attribute: string]: string
}
}
interface UserWorkerCreateOptions {
servicePath?: string | null
envVars?: string[][] | [string, string][] | null
noModuleCache?: boolean | null
forceCreate?: boolean | null
allowRemoteModules?: boolean | null
customModuleRoot?: string | null
permissions?: PermissionsOptions | null
maybeEszip?: Uint8Array | null
maybeEntrypoint?: string | null
maybeModuleCode?: string | null
memoryLimitMb?: number | null
lowMemoryMultiplier?: number | null
workerTimeoutMs?: number | null
cpuTimeSoftLimitMs?: number | null
cpuTimeHardLimitMs?: number | null
staticPatterns?: string[] | null
s3FsConfig?: S3FsConfig | null
tmpFsConfig?: TmpFsConfig | null
otelConfig?: OtelConfig | null
context?: UserWorkerCreateContext | null
}
interface HeapStatistics {
totalHeapSize: number
totalHeapSizeExecutable: number
totalPhysicalSize: number
totalAvailableSize: number
totalGlobalHandlesSize: number
usedGlobalHandlesSize: number
usedHeapSize: number
mallocedMemory: number
externalMemory: number
peakMallocedMemory: number
}
interface RuntimeMetrics {
mainWorkerHeapStats: HeapStatistics
eventWorkerHeapStats?: HeapStatistics
}
interface MemInfo {
total: number
free: number
available: number
buffers: number
cached: number
swapTotal: number
swapFree: number
}
declare namespace EdgeRuntime {
export namespace ai {
function tryCleanupUnusedSession(): Promise<number>
}
class UserWorker {
constructor(key: string)
fetch(request: Request, options?: UserWorkerFetchOptions): Promise<Response>
static create(opts: UserWorkerCreateOptions): Promise<UserWorker>
static tryCleanupIdleWorkers(timeoutMs: number): Promise<number>
}
export function scheduleTermination(): void
export function waitUntil<T>(promise: Promise<T>): Promise<T>
export function getRuntimeMetrics(): Promise<RuntimeMetrics>
export function applySupabaseTag(src: Request, dest: Request): void
export function systemMemoryInfo(): MemInfo
export function raiseSegfault(): void
export { UserWorker as userWorkers }
}
declare namespace Supabase {
export namespace ai {
interface ModelOptions {
/**
* Pool embeddings by taking their mean. Applies only for `gte-small` model
*/
mean_pool?: boolean
/**
* Normalize the embeddings result. Applies only for `gte-small` model
*/
normalize?: boolean
/**
* Stream response from model. Applies only for LLMs like `mistral` (default: false)
*/
stream?: boolean
/**
* Automatically abort the request to the model after specified time (in seconds). Applies only for LLMs like `mistral` (default: 60)
*/
timeout?: number
/**
* Mode for the inference API host. (default: 'ollama')
*/
mode?: 'ollama' | 'openaicompatible'
signal?: AbortSignal
}
export class Session {
/**
* Create a new model session using given model
*/
constructor(model: string)
/**
* Execute the given prompt in model session
*/
run(
prompt:
| string
| Omit<import('openai').OpenAI.Chat.ChatCompletionCreateParams, 'model' | 'stream'>,
modelOptions?: ModelOptions
): unknown
}
}
}
declare namespace Deno {
export namespace errors {
class WorkerRequestCancelled extends Error {}
class WorkerAlreadyRetired extends Error {}
}
}