{"version":3,"sources":["../src/config/defaults.ts","../src/errors/config-error.ts","../src/config/chain.ts","../src/errors/http-error.ts","../src/core/http.ts","../src/core/stream.ts","../src/builders/query-results.ts","../src/builders/cascade-relationship-builder.ts","../src/errors/onyx-error.ts","../src/impl/onyx.ts","../src/helpers/sort.ts","../src/builders/condition-builder.ts","../src/helpers/conditions.ts","../src/helpers/aggregates.ts","../src/index.ts"],"names":["matches","max","min","sum","c","lower","upper"],"mappings":"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","file":"index.cjs","sourcesContent":["// filename: src/config/defaults.ts\nexport const DEFAULT_BASE_URL = 'https://api.onyx.dev';\n\nexport const sanitizeBaseUrl = (u: string): string => u.replace(/\\/+$/, '');","// filename: src/errors/config-error.ts\nexport class OnyxConfigError extends Error {\n  readonly name = 'OnyxConfigError';\n  constructor(message: string) {\n    super(message);\n  }\n}","// filename: src/config/chain.ts\nimport { DEFAULT_BASE_URL, sanitizeBaseUrl } from './defaults';\nimport { OnyxConfigError } from '../errors/config-error';\nimport type { OnyxConfig } from '../types/public';\nimport type { FetchImpl } from '../types/common';\n\nexport interface ResolvedConfig {\n  baseUrl: string;\n  databaseId: string;\n  apiKey: string;\n  apiSecret: string;\n  fetch: FetchImpl;\n}\n\nconst gProcess = (globalThis as {\n  process?: {\n    versions?: { node?: string };\n    env?: Record<string, string | undefined>;\n    stderr?: { write?: (s: string) => void };\n    cwd?: () => string;\n  };\n}).process;\nconst isNode = !!gProcess?.versions?.node;\n\n// Optional debug logger — enable with ONYX_DEBUG=true (Node only)\nconst dbg = (...args: unknown[]): void => {\n  if (gProcess?.env?.ONYX_DEBUG == \"true\") {\n    const fmt = (v: unknown): string => {\n      if (typeof v === 'string') return v;\n      try {\n        return JSON.stringify(v);\n      } catch {\n        return String(v);\n      }\n    };\n    gProcess.stderr?.write?.(`[onyx-config] ${args.map(fmt).join(' ')}\\n`);\n  }\n};\n\nfunction dropUndefined<T extends object>(obj: Partial<T> | undefined): Partial<T> {\n  if (!obj) return {};\n  const out: Record<string, unknown> = {};\n  for (const [k, v] of Object.entries(obj)) {\n    if (v !== undefined) out[k] = v;\n  }\n  return out as Partial<T>;\n}\n\n// Lazy import helper to hide Node-only modules from bundlers\nasync function nodeImport<T>(spec: string): Promise<T> {\n  return import(/* @vite-ignore */ spec) as Promise<T>;\n}\n\nfunction readEnv(targetId?: string): Partial<OnyxConfig> {\n  if (!gProcess?.env) return {};\n  const env = gProcess.env;\n  const pick = (...keys: string[]): string | undefined => {\n    for (const k of keys) {\n      const v = env[k];\n      if (typeof v === 'string') {\n        const cleaned = v.replace(/[\\r\\n]+/g, '').trim();\n        if (cleaned !== '') return cleaned;\n      }\n    }\n    return undefined;\n  };\n\n  const envId = pick('ONYX_DATABASE_ID');\n  if (targetId && envId !== targetId) return {};\n  const res = dropUndefined<OnyxConfig>({\n    baseUrl: pick('ONYX_DATABASE_BASE_URL'),\n    databaseId: envId,\n    apiKey: pick('ONYX_DATABASE_API_KEY'),\n    apiSecret: pick('ONYX_DATABASE_API_SECRET'),\n  });\n  if (Object.keys(res).length === 0) return {};\n  dbg('env:', mask(res));\n  return res;\n}\n\nasync function readProjectFile(databaseId?: string): Promise<Partial<OnyxConfig>> {\n  if (!isNode) return {};\n  const fs = await nodeImport<typeof import('node:fs/promises')>('node:fs/promises');\n  const path = await nodeImport<typeof import('node:path')>('node:path');\n  const cwd = gProcess?.cwd?.() ?? '.';\n\n  const tryRead = async (p: string): Promise<Partial<OnyxConfig>> => {\n    const txt = await fs.readFile(p, 'utf8');\n    const sanitized = txt.replace(/[\\r\\n]+/g, '');\n    const json = dropUndefined<OnyxConfig>(JSON.parse(sanitized) as Partial<OnyxConfig>);\n    dbg('project file:', p, '→', mask(json));\n    return json;\n  };\n\n  if (databaseId) {\n    const specific = path.resolve(cwd, `onyx-database-${databaseId}.json`);\n    try {\n      return await tryRead(specific);\n    } catch {\n      dbg('project file not found:', specific);\n    }\n  }\n\n  const fallback = path.resolve(cwd, 'onyx-database.json');\n  try {\n    return await tryRead(fallback);\n  } catch {\n    dbg('project file not found:', fallback);\n    return {};\n  }\n}\n\nasync function readHomeProfile(databaseId?: string): Promise<Partial<OnyxConfig>> {\n  if (!isNode) return {};\n  const fs = await nodeImport<typeof import('node:fs/promises')>('node:fs/promises');\n  const os = await nodeImport<typeof import('node:os')>('node:os');\n  const path = await nodeImport<typeof import('node:path')>('node:path');\n\n  const home = os.homedir();\n  const dir = path.join(home, '.onyx');\n\n  const fileExists = async (p: string): Promise<boolean> => {\n    try {\n      await fs.access(p);\n      return true;\n    } catch {\n      return false;\n    }\n  };\n  const readProfile = async (p: string): Promise<Partial<OnyxConfig>> => {\n    try {\n      const txt = await fs.readFile(p, 'utf8');\n      const sanitized = txt.replace(/[\\r\\n]+/g, '');\n      const json = dropUndefined<OnyxConfig>(JSON.parse(sanitized) as Partial<OnyxConfig>);\n      dbg('home profile used:', p, '→', mask(json));\n      return json;\n    } catch (e: unknown) {\n      const msg = e instanceof Error ? e.message : String(e);\n      throw new OnyxConfigError(`Failed to read ${p}: ${msg}`);\n    }\n  };\n\n  if (databaseId) {\n    const specific = `${dir}/onyx-database-${databaseId}.json`;\n    if (await fileExists(specific)) return readProfile(specific);\n    dbg('no specific profile:', specific);\n  }\n\n  const defaultInDir = `${dir}/onyx-database.json`;\n  if (await fileExists(defaultInDir)) return readProfile(defaultInDir);\n  dbg('no default profile in dir:', defaultInDir);\n\n  const defaultInHome = `${home}/onyx-database.json`;\n  if (await fileExists(defaultInHome)) return readProfile(defaultInHome);\n  dbg('no home-root fallback:', defaultInHome);\n\n  if (!(await fileExists(dir))) {\n    dbg('~/.onyx does not exist:', dir);\n    return {};\n  }\n  const files = await fs.readdir(dir).catch(() => []);\n  const matches = files.filter(f => f.startsWith('onyx-database-') && f.endsWith('.json'));\n  if (matches.length === 1) {\n    const only = `${dir}/${matches[0]}`;\n    return readProfile(only);\n  }\n  if (matches.length > 1) {\n    throw new OnyxConfigError(\n      'Multiple ~/.onyx/onyx-database-*.json profiles found. Specify databaseId via env or provide ./onyx-database.json.'\n    );\n  }\n\n  dbg('no usable home profiles found in', dir);\n  return {};\n}\n\nasync function readConfigPath(p: string): Promise<Partial<OnyxConfig>> {\n  if (!isNode) return {};\n  const fs = await nodeImport<typeof import('node:fs/promises')>('node:fs/promises');\n  const path = await nodeImport<typeof import('node:path')>('node:path');\n  const cwd = gProcess?.cwd?.() ?? '.';\n  const resolved = path.isAbsolute(p) ? p : path.resolve(cwd, p);\n  try {\n    const txt = await fs.readFile(resolved, 'utf8');\n    const sanitized = txt.replace(/[\\r\\n]+/g, '');\n    const json = dropUndefined<OnyxConfig>(JSON.parse(sanitized) as Partial<OnyxConfig>);\n    dbg('config path:', resolved, '→', mask(json));\n    return json;\n  } catch (e: unknown) {\n    const msg = e instanceof Error ? e.message : String(e);\n    throw new OnyxConfigError(`Failed to read ${resolved}: ${msg}`);\n  }\n}\n\n/**\n * Resolve configuration using precedence:\n *   explicit config (highest) >\n *   env vars >\n *   ONYX_CONFIG_PATH file >\n *   project file >\n *   home profile\n */\nexport async function resolveConfig(input?: OnyxConfig): Promise<ResolvedConfig> {\n  const configPath = gProcess?.env?.ONYX_CONFIG_PATH;\n  const env = readEnv(input?.databaseId);\n\n  let cfgPath: Partial<OnyxConfig> = {};\n  if (configPath) {\n    cfgPath = await readConfigPath(configPath);\n  }\n\n  const targetId = input?.databaseId ?? env.databaseId ?? cfgPath.databaseId;\n\n  let haveDbId = !!(input?.databaseId ?? env.databaseId ?? cfgPath.databaseId);\n  let haveApiKey = !!(input?.apiKey ?? env.apiKey ?? cfgPath.apiKey);\n  let haveApiSecret = !!(input?.apiSecret ?? env.apiSecret ?? cfgPath.apiSecret);\n\n  let project: Partial<OnyxConfig> = {};\n  if (!(haveDbId && haveApiKey && haveApiSecret)) {\n    project = await readProjectFile(targetId);\n    if (project.databaseId) haveDbId = true;\n    if (project.apiKey) haveApiKey = true;\n    if (project.apiSecret) haveApiSecret = true;\n  }\n\n  let home: Partial<OnyxConfig> = {};\n  if (!(haveDbId && haveApiKey && haveApiSecret)) {\n    home = await readHomeProfile(targetId);\n  }\n\n  const merged: Partial<OnyxConfig> = {\n    baseUrl: DEFAULT_BASE_URL,\n    ...dropUndefined<OnyxConfig>(home),\n    ...dropUndefined<OnyxConfig>(project),\n    ...dropUndefined<OnyxConfig>(cfgPath),\n    ...dropUndefined<OnyxConfig>(env),\n    ...dropUndefined<OnyxConfig>(input),\n  };\n\n  dbg('merged (pre-validate):', mask(merged));\n\n  const baseUrl = sanitizeBaseUrl(merged.baseUrl ?? DEFAULT_BASE_URL);\n  const databaseId = merged.databaseId ?? '';\n  const apiKey = merged.apiKey ?? '';\n  const apiSecret = merged.apiSecret ?? '';\n  const gfetch = (globalThis as { fetch?: FetchImpl }).fetch;\n  const fetchImpl: FetchImpl =\n    merged.fetch ??\n    (typeof gfetch === 'function'\n      ? (u, i) => gfetch(u, i)\n      : async () => {\n          throw new OnyxConfigError('No fetch available; provide OnyxConfig.fetch');\n        });\n\n  const missing: string[] = [];\n  if (!databaseId) missing.push('databaseId');\n  if (!apiKey) missing.push('apiKey');\n  if (!apiSecret) missing.push('apiSecret');\n  if (missing.length) {\n    dbg('validation failed. merged:', mask(merged));\n    const sources = [\n      'env',\n      configPath ?? 'env ONYX_CONFIG_PATH',\n      ...(isNode\n        ? [\n            './onyx-database-<databaseId>.json',\n            './onyx-database.json',\n            '~/.onyx/onyx-database-<databaseId>.json',\n            '~/.onyx/onyx-database.json',\n            '~/onyx-database.json',\n          ]\n        : []),\n      'explicit config',\n    ];\n    throw new OnyxConfigError(\n      `Missing required config: ${missing.join(', ')}. Sources: ${sources.join(', ')}`,\n    );\n  }\n\n  const resolved: ResolvedConfig = { baseUrl, databaseId, apiKey, apiSecret, fetch: fetchImpl };\n  const source = {\n    databaseId: input?.databaseId\n      ? 'explicit config'\n      : env.databaseId\n      ? 'env'\n      : cfgPath.databaseId\n      ? 'env ONYX_CONFIG_PATH'\n      : project.databaseId\n      ? 'project file'\n      : home.databaseId\n      ? 'home profile'\n      : 'unknown',\n    apiKey: input?.apiKey\n      ? 'explicit config'\n      : env.apiKey\n      ? 'env'\n      : cfgPath.apiKey\n      ? 'env ONYX_CONFIG_PATH'\n      : project.apiKey\n      ? 'project file'\n      : home.apiKey\n      ? 'home profile'\n      : 'unknown',\n    apiSecret: input?.apiSecret\n      ? 'explicit config'\n      : env.apiSecret\n      ? 'env'\n      : cfgPath.apiSecret\n      ? 'env ONYX_CONFIG_PATH'\n      : project.apiSecret\n      ? 'project file'\n      : home.apiSecret\n      ? 'home profile'\n      : 'unknown',\n  };\n  dbg('credential source:', JSON.stringify(source));\n  dbg('resolved:', mask(resolved));\n  return resolved;\n}\n\n// Redacts secrets for debug logging\nfunction mask<T extends object>(obj: T | undefined): T | undefined {\n  if (!obj) return obj;\n  const clone = { ...(obj as Record<string, unknown>) } as Record<string, unknown>;\n  if (typeof clone.apiKey === 'string') clone.apiKey = '***';\n  if (typeof clone.apiSecret === 'string') clone.apiSecret = '***';\n  return clone as unknown as T;\n}\n","// filename: src/errors/http-error.ts\nexport class OnyxHttpError extends Error {\n  readonly name = 'OnyxHttpError';\n  readonly status: number;\n  readonly statusText: string;\n  readonly body: unknown;\n  readonly rawBody: string;\n\n  constructor(message: string, status: number, statusText: string, body: unknown, rawBody: string) {\n    super(message);\n    this.status = status;\n    this.statusText = statusText;\n    this.body = body;\n    this.rawBody = rawBody;\n  }\n\n  toJSON(): Record<string, unknown> {\n    return {\n      name: this.name,\n      message: this.message,\n      status: this.status,\n      statusText: this.statusText,\n      body: this.body,\n      rawBody: this.rawBody,\n      stack: this.stack,\n    };\n  }\n\n  [Symbol.for('nodejs.util.inspect.custom')](): Record<string, unknown> {\n    return this.toJSON();\n  }\n}","// filename: src/core/http.ts\nimport { OnyxHttpError } from '../errors/http-error';\nimport { OnyxConfigError } from '../errors/config-error';\nimport type { FetchImpl } from '../types/common';\n\nexport function parseJsonAllowNaN(txt: string): unknown {\n  try {\n    return JSON.parse(txt);\n  } catch {\n    const fixed = txt.replace(/(:\\s*)(NaN|Infinity|-Infinity)(\\s*[,}])/g, '$1null$3');\n    return JSON.parse(fixed);\n  }\n}\n\nexport interface HttpClientOptions {\n  baseUrl: string;\n  apiKey: string;\n  apiSecret: string;\n  fetchImpl?: FetchImpl;\n  defaultHeaders?: Record<string, string>;\n  requestLoggingEnabled?: boolean;\n  responseLoggingEnabled?: boolean;\n}\n\nexport class HttpClient {\n  private readonly baseUrl: string;\n  private readonly apiKey: string;\n  private readonly apiSecret: string;\n  private readonly fetchImpl: FetchImpl;\n  private readonly defaults: Record<string, string>;\n  private readonly requestLoggingEnabled: boolean;\n  private readonly responseLoggingEnabled: boolean;\n\n  constructor(opts: HttpClientOptions) {\n    if (!opts.baseUrl || opts.baseUrl.trim() === '') {\n      throw new OnyxConfigError('baseUrl is required');\n    }\n    try {\n      // ensure baseUrl has protocol; URL constructor will throw otherwise\n      new URL(opts.baseUrl);\n    } catch {\n      throw new OnyxConfigError('baseUrl must include protocol, e.g. https://');\n    }\n    this.baseUrl = opts.baseUrl.replace(/\\/+$/, '');\n    this.apiKey = opts.apiKey;\n    this.apiSecret = opts.apiSecret;\n    const gfetch = (globalThis as { fetch?: FetchImpl }).fetch;\n    if (opts.fetchImpl) {\n      this.fetchImpl = opts.fetchImpl;\n    } else if (typeof gfetch === 'function') {\n      this.fetchImpl = (url, init) => gfetch(url, init);\n    } else {\n      throw new Error('global fetch is not available; provide OnyxConfig.fetch');\n    }\n    this.defaults = Object.assign({}, opts.defaultHeaders);\n    const envDebug =\n      (globalThis as { process?: { env?: Record<string, string | undefined> } }).process\n        ?.env?.ONYX_DEBUG === 'true';\n    this.requestLoggingEnabled = !!opts.requestLoggingEnabled || envDebug;\n    this.responseLoggingEnabled = !!opts.responseLoggingEnabled || envDebug;\n  }\n\n  headers(extra?: Record<string, string>): Record<string, string> {\n    const extras = { ...(extra ?? {}) };\n    delete extras['x-onyx-key'];\n    delete extras['x-onyx-secret'];\n    return {\n      'x-onyx-key': this.apiKey,\n      'x-onyx-secret': this.apiSecret,\n      'Accept': 'application/json',\n      'Content-Type': 'application/json',\n      ...this.defaults,\n      ...extras,\n    };\n  }\n\n  async request<T = unknown>(\n    method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE',\n    path: string,\n    body?: unknown,\n    extraHeaders?: Record<string, string>\n  ): Promise<T> {\n    if (!path.startsWith('/')) {\n      throw new OnyxConfigError('path must start with /');\n    }\n    const url = `${this.baseUrl}${path}`;\n    const headers = this.headers({\n      ...(method === 'DELETE' ? { Prefer: 'return=representation' } : {}),\n      ...(extraHeaders ?? {}),\n    });\n    if (body == null) delete headers['Content-Type'];\n    if (this.requestLoggingEnabled) {\n      console.log(`${method} ${url}`);\n      if (body != null) {\n        const logBody = typeof body === 'string' ? body : JSON.stringify(body);\n        console.log(logBody);\n      }\n      const headerLog = { ...headers, 'x-onyx-secret': '[REDACTED]' };\n      console.log('Headers:', headerLog);\n    }\n    const payload =\n      body == null ? undefined : typeof body === 'string' ? body : JSON.stringify(body);\n    const init = {\n      method,\n      headers,\n      body: payload,\n    };\n\n    const isQuery =\n      path.includes('/query/') && !/\\/query\\/(?:update|delete)\\//.test(path);\n    const canRetry = method === 'GET' || isQuery;\n    const maxAttempts = canRetry ? 3 : 1;\n    for (let attempt = 0; attempt < maxAttempts; attempt++) {\n      try {\n        const res = await this.fetchImpl(url, init);\n        const contentType = res.headers.get('Content-Type') || '';\n        const raw = await res.text();\n        if (this.responseLoggingEnabled) {\n          const statusLine = `${res.status} ${res.statusText}`.trim();\n          console.log(statusLine);\n          if (raw.trim().length > 0) {\n            console.log(raw);\n          }\n        }\n        const isJson =\n          raw.trim().length > 0 &&\n          (contentType.includes('application/json') || /^[\\[{]/.test(raw.trim()));\n        const data = isJson ? parseJsonAllowNaN(raw) : raw;\n        if (!res.ok) {\n          const msg =\n            typeof data === 'object' &&\n            data !== null &&\n            'error' in data &&\n            typeof (data as { error?: { message?: unknown } }).error?.message === 'string'\n              ? String((data as { error: { message: unknown } }).error.message)\n              : `${res.status} ${res.statusText}`;\n          if (canRetry && res.status >= 500 && attempt + 1 < maxAttempts) {\n            await new Promise((r) => setTimeout(r, 100 * 2 ** attempt));\n            continue;\n          }\n          throw new OnyxHttpError(msg, res.status, res.statusText, data, raw);\n        }\n        return data as T;\n      } catch (err) {\n        const retryable =\n          canRetry && (!(err instanceof OnyxHttpError) || err.status >= 500);\n        if (attempt + 1 < maxAttempts && retryable) {\n          await new Promise((r) => setTimeout(r, 100 * 2 ** attempt));\n          continue;\n        }\n        throw err;\n      }\n    }\n    // unreachable but satisfies TypeScript\n    throw new Error('Request failed after retries');\n  }\n}\n","// filename: src/core/stream.ts\nimport type { FetchImpl, StreamAction } from '../types/common';\nimport { OnyxHttpError } from '../errors/http-error';\nimport { parseJsonAllowNaN } from './http';\n\nconst debug = (...args: unknown[]): void => {\n  if ((globalThis as { process?: { env?: Record<string, string | undefined> } }).process?.env?.ONYX_STREAM_DEBUG == \"true\")\n    console.log('[onyx-stream]', ...args);\n};\n\nexport interface StreamHandlers<T = unknown> {\n  onItemAdded?: (entity: T) => void;\n  onItemUpdated?: (entity: T) => void;\n  onItemDeleted?: (entity: T) => void;\n  onItem?: (entity: T | null, action: StreamAction) => void;\n}\n\nexport async function openJsonLinesStream<T = unknown>(\n  fetchImpl: FetchImpl,\n  url: string,\n  init: { method?: string; headers?: Record<string, string>; body?: string } = {},\n  handlers: StreamHandlers<T> = {},\n): Promise<{ cancel: () => void }> {\n  interface Reader {\n    cancel(): void;\n    read(): Promise<{ done: boolean; value?: Uint8Array }>;\n  }\n  interface StreamBody { getReader(): Reader; }\n\n  const decoder = new TextDecoder('utf-8');\n  let buffer = '';\n  let canceled = false;\n  let currentReader: Reader | null = null;\n  let retryCount = 0;\n  const maxRetries = 4;\n\n  const processLine = (line: string): void => {\n    const trimmed = line.trim();\n    debug('line', trimmed);\n    if (!trimmed || trimmed.startsWith(':')) return;\n    const jsonLine = trimmed.startsWith('data:') ? trimmed.slice(5).trim() : trimmed;\n    let obj: unknown;\n    try {\n      obj = parseJsonAllowNaN(jsonLine);\n    } catch {\n      return;\n    }\n    const rawAction =\n      (obj as {\n        action?: string;\n        event?: string;\n        type?: string;\n        eventType?: string;\n        changeType?: string;\n      }).action ??\n      (obj as {\n        action?: string;\n        event?: string;\n        type?: string;\n        eventType?: string;\n        changeType?: string;\n      }).event ??\n      (obj as {\n        action?: string;\n        event?: string;\n        type?: string;\n        eventType?: string;\n        changeType?: string;\n      }).type ??\n      (obj as {\n        action?: string;\n        event?: string;\n        type?: string;\n        eventType?: string;\n        changeType?: string;\n      }).eventType ??\n      (obj as {\n        action?: string;\n        event?: string;\n        type?: string;\n        eventType?: string;\n        changeType?: string;\n      }).changeType;\n    const entity = (obj as { entity?: T | null }).entity;\n    const action = rawAction?.toUpperCase();\n    if (\n      action === 'CREATE' ||\n      action === 'CREATED' ||\n      action === 'ADDED' ||\n      action === 'ADD' ||\n      action === 'INSERT' ||\n      action === 'INSERTED'\n    )\n      handlers.onItemAdded?.(entity as T);\n    else if (action === 'UPDATE' || action === 'UPDATED')\n      handlers.onItemUpdated?.(entity as T);\n    else if (action === 'DELETE' || action === 'DELETED' || action === 'REMOVE' || action === 'REMOVED')\n      handlers.onItemDeleted?.(entity as T);\n    const canonical =\n      action === 'ADDED' ||\n      action === 'ADD' ||\n      action === 'CREATE' ||\n      action === 'CREATED' ||\n      action === 'INSERT' ||\n      action === 'INSERTED'\n        ? 'CREATE'\n        : action === 'UPDATED' || action === 'UPDATE'\n          ? 'UPDATE'\n          : action === 'DELETED' || action === 'DELETE' || action === 'REMOVE' || action === 'REMOVED'\n            ? 'DELETE'\n            : action;\n    if (canonical && canonical !== 'KEEP_ALIVE')\n      handlers.onItem?.(entity ?? null, canonical as StreamAction);\n    debug('dispatch', canonical, entity);\n  };\n\n  const connect = async (): Promise<void> => {\n    if (canceled) return;\n    debug('connecting', url);\n    try {\n      const res = await fetchImpl(url, {\n        method: init.method ?? 'PUT',\n        headers: init.headers ?? {},\n        body: init.body,\n      });\n      debug('response', res.status, res.statusText);\n      if (!res.ok) {\n        const raw = await res.text();\n        let parsed: unknown = raw;\n        try { parsed = parseJsonAllowNaN(raw); } catch { /* ignore */ }\n        debug('non-ok', res.status);\n        throw new OnyxHttpError(`${res.status} ${res.statusText}`, res.status, res.statusText, parsed, raw);\n      }\n      const body = (res as { body?: StreamBody }).body;\n      if (!body || typeof body.getReader !== 'function') {\n        debug('no reader');\n        return;\n      }\n      currentReader = body.getReader();\n      debug('connected');\n      retryCount = 0;\n      pump();\n    } catch (err) {\n      debug('connect error', err);\n      if (canceled) return;\n      if (retryCount >= maxRetries) return;\n      const delay = Math.min(1000 * 2 ** retryCount, 30000);\n      retryCount++;\n      await new Promise((resolve) => setTimeout(resolve, delay));\n      void connect();\n    }\n  };\n\n  const pump = (): void => {\n    if (canceled || !currentReader) return;\n    currentReader\n      .read()\n      .then(({ done, value }) => {\n        if (canceled) return;\n        debug('chunk', { done, length: value?.length ?? 0 });\n        if (done) {\n          debug('done');\n          void connect();\n          return;\n        }\n        buffer += decoder.decode(value, { stream: true });\n        const lines = buffer.split('\\n');\n        buffer = lines.pop() ?? '';\n        for (const line of lines) processLine(line);\n        pump();\n      })\n      .catch((err) => {\n        debug('pump error', err);\n        if (!canceled) void connect();\n      });\n  };\n\n  await connect();\n\n  return {\n    cancel() {\n      if (canceled) return;\n      canceled = true;\n      try { currentReader?.cancel(); } catch { /* ignore */ }\n    }\n  };\n}\n","/**\n * Array-like container for paginated query results. Provides helper methods\n * to traverse and aggregate records across pages.\n *\n * @example\n * ```ts\n * const results = new QueryResults(users, nextToken, fetchNext);\n * const firstUser = results.first();\n * ```\n */\nexport type QueryResultsPromise<T> = Promise<QueryResults<T>> & {\n  [K in keyof QueryResults<T> as QueryResults<T>[K] extends (...args: any[]) => any ? K : never]:\n    QueryResults<T>[K] extends (...args: infer P) => infer R ? (...args: P) => Promise<Awaited<R>> : never;\n};\n\nexport class QueryResults<T> extends Array<T> {\n  /** Token for the next page of results or null. */\n  nextPage: string | null;\n  private readonly fetcher?: (token: string) => Promise<QueryResults<T>>;\n\n  /**\n    * @param records - Records in the current page.\n    * @param nextPage - Token representing the next page.\n    * @param fetcher - Function used to fetch the next page when needed.\n    * @example\n    * ```ts\n    * const results = new QueryResults(users, token, t => fetchMore(t));\n    * ```\n    */\n  constructor(\n    records: Iterable<T> | ArrayLike<T> | T | null | undefined,\n    nextPage: string | null,\n    fetcher?: (token: string) => Promise<QueryResults<T>>,\n  ) {\n    const items: T[] = (() => {\n      if (records == null) return [];\n      if (Array.isArray(records)) return records;\n      if (typeof (records as any)[Symbol.iterator] === 'function') {\n        return Array.from(records as Iterable<T>);\n      }\n      if (typeof (records as any).length === 'number') {\n        return Array.from(records as ArrayLike<T>);\n      }\n      return [records as T];\n    })();\n\n    super(...items);\n    Object.setPrototypeOf(this, new.target.prototype);\n    this.nextPage = nextPage;\n    this.fetcher = fetcher;\n  }\n\n  /**\n   * Returns the first record in the result set.\n   * @throws Error if the result set is empty.\n   * @example\n   * ```ts\n   * const user = results.first();\n   * ```\n   */\n  first(): T {\n    if (this.length === 0) throw new Error('QueryResults is empty');\n    return this[0];\n  }\n\n  /**\n   * Returns the first record or `null` if the result set is empty.\n   * @example\n   * ```ts\n   * const user = results.firstOrNull();\n   * ```\n   */\n  firstOrNull(): T | null {\n    return this.length > 0 ? this[0] : null;\n  }\n\n  /**\n   * Checks whether the current page has no records.\n   * @example\n   * ```ts\n   * if (results.isEmpty()) console.log('no data');\n   * ```\n   */\n  isEmpty(): boolean {\n    return this.length === 0;\n  }\n\n  /**\n   * Number of records on the current page.\n   * @example\n   * ```ts\n   * console.log(results.size());\n   * ```\n   */\n  size(): number {\n    return this.length;\n  }\n\n  /**\n   * Iterates over each record on the current page only.\n   * @param action - Function to invoke for each record.\n   * @param thisArg - Optional `this` binding for the callback.\n   * @example\n   * ```ts\n   * results.forEachOnPage(u => console.log(u.id));\n   * ```\n   */\n  forEachOnPage(\n    action: (item: T, index: number, array: QueryResults<T>) => void,\n    thisArg?: unknown,\n  ): void {\n    super.forEach((value, index) => {\n      action.call(thisArg as any, value, index, this);\n    });\n  }\n\n  /**\n   * Iterates over every record across all pages sequentially.\n   * @param action - Function executed for each record. Returning `false`\n   *                 stops iteration early.\n   * @param thisArg - Optional `this` binding for the callback.\n   * @example\n   * ```ts\n   * await results.forEach(u => {\n   *   console.log(u.id);\n   * });\n   * ```\n   */\n  override forEach(action: (item: T, index: number, array: T[]) => void, thisArg?: unknown): Promise<void> {\n    let index = 0;\n    return this.forEachAll(async item => {\n      const result = await (action as any).call(thisArg as any, item, index, this);\n      index += 1;\n      return result as boolean | void;\n    });\n  }\n\n  /**\n   * Iterates over every record across all pages sequentially.\n   * @param action - Function executed for each record. Returning `false`\n   *                 stops iteration early.\n   * @example\n   * ```ts\n   * await results.forEachAll(u => {\n   *   if (u.disabled) return false;\n   * });\n   * ```\n   */\n  async forEachAll(action: (item: T) => boolean | void | Promise<boolean | void>): Promise<void> {\n    await this.forEachPage(async records => {\n      for (const r of records) {\n        const res = await action(r);\n        if (res === false) return false;\n      }\n      return true;\n    });\n  }\n\n  /**\n   * Iterates page by page across the result set.\n   * @param action - Function invoked with each page of records. Returning\n   *                 `false` stops iteration.\n   * @example\n   * ```ts\n   * await results.forEachPage(page => {\n   *   console.log(page.length);\n   * });\n   * ```\n   */\n  async forEachPage(action: (records: T[]) => boolean | void | Promise<boolean | void>): Promise<void> {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    let page: QueryResults<T> | null = this;\n    while (page) {\n      const cont = await action(Array.from(page));\n      if (cont === false) return;\n      if (page.nextPage && page.fetcher) {\n        page = await page.fetcher(page.nextPage);\n      } else {\n        page = null;\n      }\n    }\n  }\n\n  /**\n   * Collects all records from every page into a single array.\n   * @returns All records.\n   * @example\n   * ```ts\n   * const allUsers = await results.getAllRecords();\n   * ```\n   */\n  async getAllRecords(): Promise<T[]> {\n    const all: T[] = [];\n    await this.forEachPage(records => {\n      all.push(...records);\n    });\n    return all;\n  }\n\n  /**\n   * Filters all records using the provided predicate.\n   * @param predicate - Function used to test each record.\n   * @example\n   * ```ts\n   * const enabled = await results.filterAll(u => u.enabled);\n   * ```\n   */\n  async filterAll(predicate: (record: T) => boolean): Promise<T[]> {\n    const all = await this.getAllRecords();\n    return all.filter(predicate);\n  }\n\n  /**\n   * Maps all records using the provided transform.\n   * @param transform - Mapping function.\n   * @example\n   * ```ts\n   * const names = await results.mapAll(u => u.name);\n   * ```\n   */\n  async mapAll<R>(transform: (record: T) => R): Promise<R[]> {\n    const all = await this.getAllRecords();\n    return all.map(transform);\n  }\n\n  /**\n   * Extracts values for a field across all records.\n   * @param field - Name of the field to pluck.\n   * @example\n   * ```ts\n   * const ids = await results.values('id');\n   * ```\n   */\n  // @ts-expect-error overriding Array#values\n  async values<K extends keyof T>(field: K): Promise<Array<T[K]>> {\n    const all = await this.getAllRecords();\n    return all.map(r => r[field]);\n  }\n\n  /**\n   * Maximum value produced by the selector across all records.\n   * @param selector - Function extracting a numeric value.\n   * @example\n   * ```ts\n   * const maxAge = await results.maxOfDouble(u => u.age);\n   * ```\n   */\n  async maxOfDouble(selector: (record: T) => number): Promise<number> {\n    const all = await this.getAllRecords();\n    return all.reduce((max, r) => Math.max(max, selector(r)), -Infinity);\n  }\n\n  /**\n   * Minimum value produced by the selector across all records.\n   * @param selector - Function extracting a numeric value.\n   * @example\n   * ```ts\n   * const minAge = await results.minOfDouble(u => u.age);\n   * ```\n   */\n  async minOfDouble(selector: (record: T) => number): Promise<number> {\n    const all = await this.getAllRecords();\n    return all.reduce((min, r) => Math.min(min, selector(r)), Infinity);\n  }\n\n  /**\n   * Sum of values produced by the selector across all records.\n   * @param selector - Function extracting a numeric value.\n   * @example\n   * ```ts\n   * const total = await results.sumOfDouble(u => u.score);\n   * ```\n   */\n  async sumOfDouble(selector: (record: T) => number): Promise<number> {\n    const all = await this.getAllRecords();\n    return all.reduce((sum, r) => sum + selector(r), 0);\n  }\n\n  /**\n   * Maximum float value from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async maxOfFloat(selector: (record: T) => number): Promise<number> {\n    return this.maxOfDouble(selector);\n  }\n  /**\n   * Minimum float value from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async minOfFloat(selector: (record: T) => number): Promise<number> {\n    return this.minOfDouble(selector);\n  }\n  /**\n   * Sum of float values from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async sumOfFloat(selector: (record: T) => number): Promise<number> {\n    return this.sumOfDouble(selector);\n  }\n  /**\n   * Maximum integer value from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async maxOfInt(selector: (record: T) => number): Promise<number> {\n    return this.maxOfDouble(selector);\n  }\n  /**\n   * Minimum integer value from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async minOfInt(selector: (record: T) => number): Promise<number> {\n    return this.minOfDouble(selector);\n  }\n  /**\n   * Sum of integer values from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async sumOfInt(selector: (record: T) => number): Promise<number> {\n    return this.sumOfDouble(selector);\n  }\n  /**\n   * Maximum long value from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async maxOfLong(selector: (record: T) => number): Promise<number> {\n    return this.maxOfDouble(selector);\n  }\n  /**\n   * Minimum long value from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async minOfLong(selector: (record: T) => number): Promise<number> {\n    return this.minOfDouble(selector);\n  }\n  /**\n   * Sum of long values from the selector.\n   * @param selector - Function extracting a numeric value.\n   */\n  async sumOfLong(selector: (record: T) => number): Promise<number> {\n    return this.sumOfDouble(selector);\n  }\n\n  /**\n   * Sum of bigint values from the selector.\n   * @param selector - Function extracting a bigint value.\n   * @example\n   * ```ts\n   * const total = await results.sumOfBigInt(u => u.balance);\n   * ```\n   */\n  async sumOfBigInt(selector: (record: T) => bigint): Promise<bigint> {\n    const all = await this.getAllRecords();\n    return all.reduce((sum, r) => sum + selector(r), 0n);\n  }\n\n  /**\n   * Executes an action for each page in parallel.\n   * @param action - Function executed for each record concurrently.\n   * @example\n   * ```ts\n   * await results.forEachPageParallel(async u => sendEmail(u));\n   * ```\n   */\n  async forEachPageParallel(action: (item: T) => void | Promise<void>): Promise<void> {\n    await this.forEachPage(records => Promise.all(records.map(action)).then(() => true));\n  }\n}\n\nexport default QueryResults;\n","// filename: src/builders/cascade-relationship-builder.ts\nimport type { ICascadeRelationshipBuilder } from '../types/builders';\n\n/**\n * Builder for constructing cascade relationship strings like\n * `programs:StreamingProgram(channelId, id)`.\n */\nexport class CascadeRelationshipBuilder implements ICascadeRelationshipBuilder {\n  private graphName?: string;\n  private typeName?: string;\n  private target?: string;\n\n  /**\n   * Set the graph name component.\n   *\n   * @param name Graph name or namespace.\n   * @example\n   * ```ts\n   * builder.graph('programs');\n   * ```\n   */\n  graph(name: string): ICascadeRelationshipBuilder {\n    this.graphName = name;\n    return this;\n  }\n\n  /**\n   * Set the graph type component.\n   *\n   * @param type Graph type to target.\n   * @example\n   * ```ts\n   * builder.graphType('StreamingProgram');\n   * ```\n   */\n  graphType(type: string): ICascadeRelationshipBuilder {\n    this.typeName = type;\n    return this;\n  }\n\n  /**\n   * Set the target field for the relationship.\n   *\n   * @param field Target field name.\n   * @example\n   * ```ts\n   * builder.targetField('channelId');\n   * ```\n   */\n  targetField(field: string): ICascadeRelationshipBuilder {\n    this.target = field;\n    return this;\n  }\n\n  /**\n   * Produce the cascade relationship string using the provided source field.\n   *\n   * @param field Source field name.\n   * @example\n   * ```ts\n   * const rel = builder\n   *   .graph('programs')\n   *   .graphType('StreamingProgram')\n   *   .targetField('channelId')\n   *   .sourceField('id');\n   * // rel === 'programs:StreamingProgram(channelId, id)'\n   * ```\n   */\n  sourceField(field: string): string {\n    if (!this.graphName || !this.typeName || !this.target) {\n      throw new Error('Cascade relationship requires graph, type, target, and source fields');\n    }\n    return `${this.graphName}:${this.typeName}(${this.target}, ${field})`;\n  }\n}\n\nexport default CascadeRelationshipBuilder;\n","// filename: src/errors/onyx-error.ts\nexport class OnyxError extends Error {\n  readonly name = 'OnyxError';\n  constructor(message: string) {\n    super(message);\n  }\n}\n","// filename: src/impl/onyx.ts\nimport { resolveConfig, type ResolvedConfig } from '../config/chain';\nimport { HttpClient } from '../core/http';\nimport { openJsonLinesStream } from '../core/stream';\n\nimport type { OnyxFacade, IOnyxDatabase, OnyxConfig } from '../types/public';\nimport type {\n  IQueryBuilder,\n  ISaveBuilder,\n  ICascadeBuilder,\n  IConditionBuilder,\n  ICascadeRelationshipBuilder,\n} from '../types/builders';\nimport { QueryResults, QueryResultsPromise } from '../builders/query-results';\nimport type {\n  QueryCriteria,\n  QueryCondition,\n  SelectQuery,\n  UpdateQuery,\n  QueryPage,\n} from '../types/protocol';\nimport type { Sort, StreamAction, OnyxDocument, FetchImpl } from '../types/common';\nimport { CascadeRelationshipBuilder } from '../builders/cascade-relationship-builder';\nimport { OnyxError } from '../errors/onyx-error';\nimport { OnyxHttpError } from '../errors/http-error';\n\nconst DEFAULT_CACHE_TTL = 5 * 60 * 1000; // 5 minutes\n\nlet cachedCfg: { promise: Promise<ResolvedConfig>; expires: number } | null = null;\n\nfunction resolveConfigWithCache(config?: OnyxConfig): Promise<ResolvedConfig> {\n  const ttl = config?.ttl ?? DEFAULT_CACHE_TTL;\n  const now = Date.now();\n  if (cachedCfg && cachedCfg.expires > now) {\n    return cachedCfg.promise;\n  }\n  const { ttl: _ttl, requestLoggingEnabled: _reqLog, responseLoggingEnabled: _resLog, ...rest } = config ?? {};\n  void _ttl;\n  void _reqLog;\n  void _resLog;\n  const promise = resolveConfig(rest);\n  cachedCfg = { promise, expires: now + ttl };\n  return promise;\n}\n\nfunction clearCacheConfig(): void {\n  cachedCfg = null;\n}\n\n/** -------------------------\n * Internal helpers\n * --------------------------*/\nfunction toSingleCondition(criteria: QueryCriteria): QueryCondition {\n  return { conditionType: 'SingleCondition', criteria };\n}\n\nfunction toCondition(input: IConditionBuilder | QueryCriteria): QueryCondition {\n  if (typeof (input as IConditionBuilder).toCondition === 'function') {\n    return (input as IConditionBuilder).toCondition();\n  }\n  const c = input as QueryCriteria;\n  if (c && typeof c.field === 'string' && typeof c.operator === 'string') {\n    return toSingleCondition(c);\n  }\n  throw new Error('Invalid condition passed to builder.');\n}\n\nfunction serializeDates(value: unknown): unknown {\n  if (value instanceof Date) return value.toISOString();\n  if (Array.isArray(value)) return value.map(serializeDates);\n  if (value && typeof value === 'object') {\n    const out: Record<string, unknown> = {};\n    for (const [k, v] of Object.entries(value as Record<string, unknown>)) {\n      out[k] = serializeDates(v);\n    }\n    return out;\n  }\n  return value;\n}\n\n/** -------------------------\n * Onyx Database Implementation\n * --------------------------*/\nclass OnyxDatabaseImpl<Schema = Record<string, unknown>> implements IOnyxDatabase<Schema> {\n  private readonly cfgPromise: Promise<ResolvedConfig>;\n  private resolved: ResolvedConfig | null = null;\n  private http: HttpClient | null = null;\n  private readonly streams = new Set<{ cancel: () => void }>();\n  private readonly requestLoggingEnabled: boolean;\n  private readonly responseLoggingEnabled: boolean;\n  private readonly defaultPartition: string | undefined;\n\n  constructor(config?: OnyxConfig) {\n    // Defer resolution; keeps init() synchronous\n    this.requestLoggingEnabled = !!config?.requestLoggingEnabled;\n    this.responseLoggingEnabled = !!config?.responseLoggingEnabled;\n    this.defaultPartition = config?.partition;\n    this.cfgPromise = resolveConfigWithCache(config);\n  }\n\n  private async ensureClient(): Promise<{\n    http: HttpClient;\n    fetchImpl: FetchImpl;\n    baseUrl: string;\n    databaseId: string;\n  }> {\n    if (!this.resolved) {\n      this.resolved = await this.cfgPromise;\n    }\n    if (!this.http) {\n      this.http = new HttpClient({\n        baseUrl: this.resolved.baseUrl,\n        apiKey: this.resolved.apiKey,\n        apiSecret: this.resolved.apiSecret,\n        fetchImpl: this.resolved.fetch,\n        requestLoggingEnabled: this.requestLoggingEnabled,\n        responseLoggingEnabled: this.responseLoggingEnabled,\n      });\n    }\n    return {\n      http: this.http,\n      fetchImpl: this.resolved.fetch,\n      baseUrl: this.resolved.baseUrl,\n      databaseId: this.resolved.databaseId,\n    };\n  }\n\n  private registerStream(handle: { cancel: () => void }): { cancel: () => void } {\n    this.streams.add(handle);\n    return {\n      cancel: () => {\n        try {\n          handle.cancel();\n        } finally {\n          this.streams.delete(handle);\n        }\n      },\n    };\n  }\n\n  /** -------- IOnyxDatabase -------- */\n\n  from<Table extends keyof Schema & string>(table: Table): IQueryBuilder<Schema[Table]> {\n    return new QueryBuilderImpl<Schema[Table], Schema>(this, String(table), this.defaultPartition);\n  }\n\n  select(...fields: Array<string | string[]>): IQueryBuilder<Record<string, unknown>> {\n    const qb = new QueryBuilderImpl<Record<string, unknown>, Schema>(\n      this,\n      null,\n      this.defaultPartition,\n    );\n    qb.select(...fields);\n    return qb;\n  }\n\n  cascade(...relationships: Array<string | string[]>): ICascadeBuilder<Schema> {\n    const cb = new CascadeBuilderImpl<Schema>(this);\n    return cb.cascade(...relationships);\n  }\n\n  cascadeBuilder(): ICascadeRelationshipBuilder {\n    return new CascadeRelationshipBuilder();\n  }\n\n  // Overload: builder form\n  save<Table extends keyof Schema & string>(table: Table): ISaveBuilder<Schema[Table]>;\n  // Overload: direct form\n  save<Table extends keyof Schema & string>(\n    table: Table,\n    entityOrEntities: Partial<Schema[Table]> | Array<Partial<Schema[Table]>>,\n    options?: { relationships?: string[] },\n  ): Promise<unknown>;\n  // Impl\n  save(\n    table: string,\n    entityOrEntities?: unknown,\n    options?: { relationships?: string[] },\n  ): ISaveBuilder<unknown> | Promise<unknown> {\n    if (arguments.length === 1) {\n      return new SaveBuilderImpl<unknown, Schema>(this, table);\n    }\n    return this._saveInternal(table, entityOrEntities as unknown, options);\n  }\n\n  async batchSave<Table extends keyof Schema & string>(\n    table: Table,\n    entities: Array<Partial<Schema[Table]>>,\n    batchSize = 1000,\n    options?: { relationships?: string[] },\n  ): Promise<void> {\n    for (let i = 0; i < entities.length; i += batchSize) {\n      const chunk = entities.slice(i, i + batchSize);\n      if (chunk.length) {\n        await this._saveInternal(String(table), chunk, options);\n      }\n    }\n  }\n\n  async findById<Table extends keyof Schema & string, T = Schema[Table]>(\n    table: Table,\n    primaryKey: string,\n    options?: { partition?: string; resolvers?: string[] },\n  ): Promise<T | null> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    const partition = options?.partition ?? this.defaultPartition;\n    if (partition) params.append('partition', partition);\n    if (options?.resolvers?.length) params.append('resolvers', options.resolvers.join(','));\n\n    const path = `/data/${encodeURIComponent(databaseId)}/${encodeURIComponent(\n      String(table),\n    )}/${encodeURIComponent(primaryKey)}${params.toString() ? `?${params.toString()}` : ''}`;\n    try {\n      return await http.request<T>('GET', path);\n    } catch (err) {\n      if (err instanceof OnyxHttpError && err.status === 404) return null;\n      throw err;\n    }\n  }\n\n  async delete<Table extends keyof Schema & string, T = Schema[Table]>(\n    table: Table,\n    primaryKey: string,\n    options?: { partition?: string; relationships?: string[] },\n  ): Promise<T> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    const partition = options?.partition ?? this.defaultPartition;\n    if (partition) params.append('partition', partition);\n    if (options?.relationships?.length) {\n      params.append('relationships', options.relationships.map(encodeURIComponent).join(','));\n    }\n    const path = `/data/${encodeURIComponent(databaseId)}/${encodeURIComponent(\n      table,\n    )}/${encodeURIComponent(primaryKey)}${params.toString() ? `?${params.toString()}` : ''}`;\n    return http.request<T>('DELETE', path);\n  }\n\n  async saveDocument(doc: OnyxDocument): Promise<unknown> {\n    const { http, databaseId } = await this.ensureClient();\n    const path = `/data/${encodeURIComponent(databaseId)}/document`;\n    return http.request('PUT', path, serializeDates(doc));\n  }\n\n  async getDocument(\n    documentId: string,\n    options?: { width?: number; height?: number },\n  ): Promise<unknown> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    if (options?.width != null) params.append('width', String(options.width));\n    if (options?.height != null) params.append('height', String(options.height));\n    const path = `/data/${encodeURIComponent(databaseId)}/document/${encodeURIComponent(\n      documentId,\n    )}${params.toString() ? `?${params.toString()}` : ''}`;\n    return http.request('GET', path);\n  }\n\n  async deleteDocument(documentId: string): Promise<unknown> {\n    const { http, databaseId } = await this.ensureClient();\n    const path = `/data/${encodeURIComponent(databaseId)}/document/${encodeURIComponent(\n      documentId,\n    )}`;\n    return http.request('DELETE', path);\n  }\n\n  close(): void {\n    for (const h of Array.from(this.streams)) {\n      try {\n        h.cancel();\n      } catch {\n        /* ignore */\n      } finally {\n        this.streams.delete(h);\n      }\n    }\n  }\n\n  /** -------- internal helpers used by builders -------- */\n\n  async _count(table: string, select: SelectQuery, partition?: string): Promise<number> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    const p = partition ?? this.defaultPartition;\n    if (p) params.append('partition', p);\n    const path = `/data/${encodeURIComponent(databaseId)}/query/count/${encodeURIComponent(\n      table,\n    )}${params.toString() ? `?${params.toString()}` : ''}`;\n    return http.request<number>('PUT', path, serializeDates(select));\n  }\n\n  async _queryPage<T>(\n    table: string,\n    select: SelectQuery,\n    opts: { pageSize?: number; nextPage?: string; partition?: string } = {},\n  ): Promise<QueryPage<T>> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    if (opts.pageSize != null) params.append('pageSize', String(opts.pageSize));\n    if (opts.nextPage) params.append('nextPage', opts.nextPage);\n    const p = opts.partition ?? this.defaultPartition;\n    if (p) params.append('partition', p);\n    const path = `/data/${encodeURIComponent(databaseId)}/query/${encodeURIComponent(\n      table,\n    )}${params.toString() ? `?${params.toString()}` : ''}`;\n    return http.request<QueryPage<T>>('PUT', path, serializeDates(select));\n  }\n\n  async _update(table: string, update: UpdateQuery, partition?: string): Promise<unknown> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    const p = partition ?? this.defaultPartition;\n    if (p) params.append('partition', p);\n    const path = `/data/${encodeURIComponent(databaseId)}/query/update/${encodeURIComponent(\n      table,\n    )}${params.toString() ? `?${params.toString()}` : ''}`;\n    return http.request('PUT', path, serializeDates(update));\n  }\n\n  async _deleteByQuery(table: string, select: SelectQuery, partition?: string): Promise<unknown> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    const p = partition ?? this.defaultPartition;\n    if (p) params.append('partition', p);\n    const path = `/data/${encodeURIComponent(databaseId)}/query/delete/${encodeURIComponent(\n      table,\n    )}${params.toString() ? `?${params.toString()}` : ''}`;\n    return http.request('PUT', path, serializeDates(select));\n  }\n\n  async _stream<T>(\n    table: string,\n    select: SelectQuery,\n    includeQueryResults: boolean,\n    keepAlive: boolean,\n    handlers: {\n      onItemAdded?: (e: T) => void;\n      onItemUpdated?: (e: T) => void;\n      onItemDeleted?: (e: T) => void;\n      onItem?: (e: T | null, a: StreamAction) => void;\n    },\n  ): Promise<{ cancel: () => void }> {\n    const { http, baseUrl, databaseId, fetchImpl } = await this.ensureClient();\n    const params = new URLSearchParams();\n    if (includeQueryResults) params.append('includeQueryResults', 'true');\n    if (keepAlive) params.append('keepAlive', 'true');\n\n    const url = `${baseUrl}/data/${encodeURIComponent(databaseId)}/query/stream/${encodeURIComponent(\n      table,\n    )}${params.toString() ? `?${params.toString()}` : ''}`;\n    const handle = await openJsonLinesStream<T>(\n      fetchImpl,\n      url,\n      {\n        method: 'PUT',\n        headers: http.headers({\n          Accept: 'application/x-ndjson',\n          'Content-Type': 'application/json',\n        }),\n        body: JSON.stringify(serializeDates(select)),\n      },\n      handlers,\n    );\n    return this.registerStream(handle);\n  }\n\n  async _saveInternal(\n    table: string,\n    entityOrEntities: unknown,\n    options?: { relationships?: string[] },\n  ): Promise<unknown> {\n    const { http, databaseId } = await this.ensureClient();\n    const params = new URLSearchParams();\n    if (options?.relationships?.length) {\n      params.append('relationships', options.relationships.map(encodeURIComponent).join(','));\n    }\n    const path = `/data/${encodeURIComponent(databaseId)}/${encodeURIComponent(table)}${\n      params.toString() ? `?${params.toString()}` : ''\n    }`;\n    return http.request('PUT', path, serializeDates(entityOrEntities));\n  }\n}\n\n/** -------------------------\n * QueryBuilder Implementation\n * --------------------------*/\nclass QueryBuilderImpl<T = unknown, S = Record<string, unknown>> implements IQueryBuilder<T> {\n  private readonly db: OnyxDatabaseImpl<S>;\n  private table: string | null;\n\n  private fields: string[] | null = null;\n  private resolvers: string[] | null = null;\n  private conditions: QueryCondition | null = null;\n  private sort: Sort[] | null = null;\n  private limitValue: number | null = null;\n  private distinctValue = false;\n  private groupByValues: string[] | null = null;\n  private partitionValue: string | undefined;\n\n  private pageSizeValue: number | null = null;\n  private nextPageValue: string | null = null;\n\n  private mode: 'select' | 'update' = 'select';\n  private updates: Partial<T> | null = null;\n\n  private onItemAddedListener: ((e: T) => void) | null = null;\n  private onItemUpdatedListener: ((e: T) => void) | null = null;\n  private onItemDeletedListener: ((e: T) => void) | null = null;\n  private onItemListener: ((e: T | null, a: StreamAction) => void) | null = null;\n\n  constructor(db: OnyxDatabaseImpl<S>, table: string | null, partition?: string) {\n    this.db = db;\n    this.table = table;\n    this.partitionValue = partition;\n  }\n\n  private ensureTable(): string {\n    if (!this.table) throw new Error('Table is not defined. Call from(<table>) first.');\n    return this.table;\n  }\n\n  private toSelectQuery(): SelectQuery {\n    return {\n      type: 'SelectQuery',\n      fields: this.fields,\n      conditions: this.conditions,\n      sort: this.sort,\n      limit: this.limitValue,\n      distinct: this.distinctValue,\n      groupBy: this.groupByValues,\n      partition: this.partitionValue ?? null,\n      resolvers: this.resolvers,\n    };\n  }\n\n  from(table: string): IQueryBuilder<T> {\n    this.table = table;\n    return this;\n  }\n\n  select(...fields: Array<string | string[]>): IQueryBuilder<T> {\n    const flat = fields.flatMap((f) => (Array.isArray(f) ? f : [f]));\n    this.fields = flat.length > 0 ? flat : null;\n    return this;\n  }\n\n  resolve(...values: Array<string | string[]>): IQueryBuilder<T> {\n    const flat = values.flatMap((v) => (Array.isArray(v) ? v : [v]));\n    this.resolvers = flat.length > 0 ? flat : null;\n    return this;\n  }\n\n  where(condition: IConditionBuilder | QueryCriteria): IQueryBuilder<T> {\n    const c = toCondition(condition);\n    if (!this.conditions) {\n      this.conditions = c;\n    } else {\n      this.conditions = {\n        conditionType: 'CompoundCondition',\n        operator: 'AND',\n        conditions: [this.conditions, c],\n      };\n    }\n    return this;\n  }\n\n  and(condition: IConditionBuilder | QueryCriteria): IQueryBuilder<T> {\n    const c = toCondition(condition);\n    if (!this.conditions) {\n      this.conditions = c;\n    } else if (\n      this.conditions.conditionType === 'CompoundCondition' &&\n      this.conditions.operator === 'AND'\n    ) {\n      this.conditions.conditions.push(c);\n    } else {\n      this.conditions = {\n        conditionType: 'CompoundCondition',\n        operator: 'AND',\n        conditions: [this.conditions, c],\n      };\n    }\n    return this;\n  }\n\n  or(condition: IConditionBuilder | QueryCriteria): IQueryBuilder<T> {\n    const c = toCondition(condition);\n    if (!this.conditions) {\n      this.conditions = c;\n    } else if (\n      this.conditions.conditionType === 'CompoundCondition' &&\n      this.conditions.operator === 'OR'\n    ) {\n      this.conditions.conditions.push(c);\n    } else {\n      this.conditions = {\n        conditionType: 'CompoundCondition',\n        operator: 'OR',\n        conditions: [this.conditions, c],\n      };\n    }\n    return this;\n  }\n\n  orderBy(...sorts: Sort[]): IQueryBuilder<T> {\n    this.sort = sorts;\n    return this;\n  }\n\n  groupBy(...fields: string[]): IQueryBuilder<T> {\n    this.groupByValues = fields.length ? fields : null;\n    return this;\n  }\n\n  distinct(): IQueryBuilder<T> {\n    this.distinctValue = true;\n    return this;\n  }\n\n  limit(n: number): IQueryBuilder<T> {\n    this.limitValue = n;\n    return this;\n  }\n\n  inPartition(partition: string): IQueryBuilder<T> {\n    this.partitionValue = partition;\n    return this;\n  }\n\n  pageSize(n: number): IQueryBuilder<T> {\n    this.pageSizeValue = n;\n    return this;\n  }\n\n  nextPage(token: string): IQueryBuilder<T> {\n    this.nextPageValue = token;\n    return this;\n  }\n\n  setUpdates(updates: Partial<T>): IQueryBuilder<T> {\n    this.mode = 'update';\n    this.updates = updates;\n    return this;\n  }\n\n  async count(): Promise<number> {\n    if (this.mode !== 'select') throw new Error('Cannot call count() in update mode.');\n    const table = this.ensureTable();\n    return this.db._count(table, this.toSelectQuery(), this.partitionValue);\n  }\n\n  async page(\n    options: { pageSize?: number; nextPage?: string } = {},\n  ): Promise<{ records: T[]; nextPage?: string | null }> {\n    if (this.mode !== 'select') throw new Error('Cannot call page() in update mode.');\n    const table = this.ensureTable();\n    const final = {\n      pageSize: this.pageSizeValue ?? options.pageSize,\n      nextPage: this.nextPageValue ?? options.nextPage,\n      partition: this.partitionValue,\n    };\n    return this.db._queryPage<T>(table, this.toSelectQuery(), final);\n  }\n\n  list(options: {\n    pageSize?: number;\n    nextPage?: string;\n  } = {}): QueryResultsPromise<T> {\n    const size = this.pageSizeValue ?? options.pageSize;\n    const pgPromise = this.page(options).then(pg => {\n      const fetcher = (token: string) => this.nextPage(token).list({ pageSize: size });\n      return new QueryResults<T>(Array.isArray(pg.records) ? pg.records : [], pg.nextPage ?? null, fetcher);\n    });\n    for (const m of Object.getOwnPropertyNames(QueryResults.prototype) as string[]) {\n      if (m === 'constructor') continue;\n      (pgPromise as any)[m] = (...args: any[]) => pgPromise.then(res => (res as any)[m](...args));\n    }\n    return pgPromise as QueryResultsPromise<T>;\n  }\n\n  async firstOrNull(): Promise<T | null> {\n    if (this.mode !== 'select') throw new Error('Cannot call firstOrNull() in update mode.');\n    if (!this.conditions) throw new OnyxError('firstOrNull() requires a where() clause.');\n    this.limitValue = 1;\n    const pg = await this.page();\n    return Array.isArray(pg.records) && pg.records.length > 0 ? pg.records[0] : null;\n  }\n\n  async one(): Promise<T | null> {\n    return this.firstOrNull();\n  }\n\n  async delete(): Promise<unknown> {\n    if (this.mode !== 'select') throw new Error('delete() is only applicable in select mode.');\n    const table = this.ensureTable();\n    return this.db._deleteByQuery(table, this.toSelectQuery(), this.partitionValue);\n  }\n\n  async update(): Promise<unknown> {\n    if (this.mode !== 'update') throw new Error('Call setUpdates(...) before update().');\n    const table = this.ensureTable();\n    const update: UpdateQuery = {\n      type: 'UpdateQuery',\n      conditions: this.conditions,\n      updates: this.updates ?? {},\n      sort: this.sort,\n      limit: this.limitValue,\n      partition: this.partitionValue ?? null,\n    };\n    return this.db._update(table, update, this.partitionValue);\n  }\n\n  onItemAdded(listener: (entity: T) => void): IQueryBuilder<T> {\n    this.onItemAddedListener = listener;\n    return this;\n  }\n\n  onItemUpdated(listener: (entity: T) => void): IQueryBuilder<T> {\n    this.onItemUpdatedListener = listener;\n    return this;\n  }\n\n  onItemDeleted(listener: (entity: T) => void): IQueryBuilder<T> {\n    this.onItemDeletedListener = listener;\n    return this;\n  }\n\n  onItem(listener: (entity: T | null, action: StreamAction) => void): IQueryBuilder<T> {\n    this.onItemListener = listener;\n    return this;\n  }\n\n  async streamEventsOnly(keepAlive = true): Promise<{ cancel: () => void }> {\n    return this.stream(false, keepAlive);\n  }\n\n  async streamWithQueryResults(keepAlive = false): Promise<{ cancel: () => void }> {\n    return this.stream(true, keepAlive);\n  }\n\n  async stream(includeQueryResults = true, keepAlive = false): Promise<{ cancel: () => void }> {\n    if (this.mode !== 'select') throw new Error('Streaming is only applicable in select mode.');\n    const table = this.ensureTable();\n    return this.db._stream<T>(table, this.toSelectQuery(), includeQueryResults, keepAlive, {\n      onItemAdded: this.onItemAddedListener ?? undefined,\n      onItemUpdated: this.onItemUpdatedListener ?? undefined,\n      onItemDeleted: this.onItemDeletedListener ?? undefined,\n      onItem: this.onItemListener ?? undefined,\n    });\n  }\n}\n\n/** -------------------------\n * SaveBuilder Implementation\n * --------------------------*/\nclass SaveBuilderImpl<T = unknown, S = Record<string, unknown>> implements ISaveBuilder<T> {\n  private readonly db: OnyxDatabaseImpl<S>;\n  private readonly table: string;\n  private relationships: string[] | null = null;\n\n  constructor(db: OnyxDatabaseImpl<S>, table: string) {\n    this.db = db;\n    this.table = table;\n  }\n\n  cascade(...relationships: Array<string | string[]>): ISaveBuilder<T> {\n    this.relationships = relationships.flat();\n    return this;\n  }\n\n  one(entity: Partial<T>): Promise<unknown> {\n    const opts = this.relationships ? { relationships: this.relationships } : undefined;\n    return this.db._saveInternal(this.table, entity, opts);\n  }\n\n  many(entities: Array<Partial<T>>): Promise<unknown> {\n    const opts = this.relationships ? { relationships: this.relationships } : undefined;\n    return this.db._saveInternal(this.table, entities, opts);\n  }\n}\n\n/** -------------------------\n * CascadeBuilder Implementation\n * --------------------------*/\nclass CascadeBuilderImpl<Schema = Record<string, unknown>>\n  implements ICascadeBuilder<Schema>\n{\n  private readonly db: OnyxDatabaseImpl<Schema>;\n  private rels: string[] | null = null;\n\n  constructor(db: OnyxDatabaseImpl<Schema>) {\n    this.db = db;\n  }\n\n  cascade(...relationships: Array<string | string[]>): ICascadeBuilder<Schema> {\n    this.rels = relationships.flat();\n    return this;\n  }\n\n  save<Table extends keyof Schema & string>(\n    table: Table,\n    entityOrEntities: Partial<Schema[Table]> | Array<Partial<Schema[Table]>>,\n  ): Promise<unknown> {\n    const opts = this.rels ? { relationships: this.rels } : undefined;\n    return this.db._saveInternal(String(table), entityOrEntities, opts);\n  }\n\n  delete<Table extends keyof Schema & string>(\n    table: Table,\n    primaryKey: string,\n  ): Promise<Schema[Table]> {\n    const opts = this.rels ? { relationships: this.rels } : undefined;\n    return this.db.delete(table, primaryKey, opts);\n  }\n}\n\n/** -------------------------\n * Facade export\n * --------------------------*/\nexport const onyx: OnyxFacade = {\n  init<Schema = Record<string, unknown>>(config?: OnyxConfig): IOnyxDatabase<Schema> {\n    return new OnyxDatabaseImpl<Schema>(config);\n  },\n  clearCacheConfig,\n};\n","// filename: src/helpers/sort.ts\nimport type { Sort } from '../types/common';\n\nexport const asc = (field: string): Sort => ({ field, order: 'ASC' });\nexport const desc = (field: string): Sort => ({ field, order: 'DESC' });","// filename: src/builders/condition-builder.ts\nimport type { IConditionBuilder } from '../types/builders';\nimport type { QueryCondition, QueryCriteria } from '../types/protocol';\nimport type { LogicalOperator } from '../types/common';\n\n/** Builder for combining query conditions with logical operators. */\nexport class ConditionBuilderImpl implements IConditionBuilder {\n  private condition: QueryCondition | null;\n\n  /**\n   * Initialize with an optional starting criteria.\n   *\n   * @param criteria Initial query criteria to seed the builder.\n   * @example\n   * ```ts\n   * const builder = new ConditionBuilderImpl({ field: 'id', operator: 'eq', value: '1' });\n   * ```\n   */\n  constructor(criteria: QueryCriteria | null = null) {\n    this.condition = criteria ? this.single(criteria) : null;\n  }\n\n  /**\n   * Add a criteria combined with AND.\n   *\n   * @param condition Another builder or raw criteria to AND.\n   * @example\n   * ```ts\n   * builder.and({ field: 'name', operator: 'eq', value: 'Ada' });\n   * ```\n   */\n  and(condition: IConditionBuilder | QueryCriteria): IConditionBuilder {\n    this.addCompound('AND', this.prepare(condition));\n    return this;\n  }\n\n  /**\n   * Add a criteria combined with OR.\n   *\n   * @param condition Another builder or raw criteria to OR.\n   * @example\n   * ```ts\n   * builder.or({ field: 'status', operator: 'eq', value: 'active' });\n   * ```\n   */\n  or(condition: IConditionBuilder | QueryCriteria): IConditionBuilder {\n    this.addCompound('OR', this.prepare(condition));\n    return this;\n  }\n\n  /**\n   * Produce the composed QueryCondition.\n   *\n   * @example\n   * ```ts\n   * const condition = builder.toCondition();\n   * ```\n   */\n  toCondition(): QueryCondition {\n    if (!this.condition) {\n      throw new Error('ConditionBuilder has no criteria.');\n    }\n    return this.condition;\n  }\n\n  /**\n   * Wrap raw criteria into a single condition object.\n   *\n   * @param criteria Criteria to wrap.\n   * @example\n   * ```ts\n   * builder['single']({ field: 'id', operator: 'eq', value: '1' });\n   * ```\n   */\n  private single(criteria: QueryCriteria): QueryCondition {\n    return { conditionType: 'SingleCondition', criteria };\n  }\n\n  /**\n   * Create a compound condition using the provided operator.\n   *\n   * @param operator Logical operator to apply.\n   * @param conditions Child conditions to combine.\n   * @example\n   * ```ts\n   * builder['compound']('AND', [condA, condB]);\n   * ```\n   */\n  private compound(operator: LogicalOperator, conditions: QueryCondition[]): QueryCondition {\n    return { conditionType: 'CompoundCondition', operator, conditions };\n  }\n\n  /**\n   * Merge the next condition into the existing tree using the operator.\n   *\n   * @param operator Logical operator for the merge.\n   * @param next Condition to merge into the tree.\n   * @example\n   * ```ts\n   * builder['addCompound']('AND', someCondition);\n   * ```\n   */\n  private addCompound(operator: LogicalOperator, next: QueryCondition): void {\n    if (!this.condition) {\n      this.condition = next;\n      return;\n    }\n    if (this.condition.conditionType === 'CompoundCondition' && this.condition.operator === operator) {\n      this.condition.conditions.push(next);\n      return;\n    }\n    this.condition = this.compound(operator, [this.condition, next]);\n  }\n\n  /**\n   * Normalize input into a QueryCondition instance.\n   *\n   * @param condition Builder or raw criteria to normalize.\n   * @example\n   * ```ts\n   * const qc = builder['prepare']({ field: 'id', operator: 'eq', value: '1' });\n   * ```\n   */\n  private prepare(condition: IConditionBuilder | QueryCriteria): QueryCondition {\n    if (typeof (condition as IConditionBuilder).toCondition === 'function') {\n      return (condition as IConditionBuilder).toCondition();\n    }\n    const c = condition as QueryCriteria;\n    if (c && typeof c.field === 'string' && typeof c.operator === 'string') {\n      return this.single(c);\n    }\n    throw new Error('Invalid condition');\n  }\n}\n","// filename: src/helpers/conditions.ts\nimport { ConditionBuilderImpl } from '../builders/condition-builder';\nimport type { QueryCriteria } from '../types/protocol';\nimport type { QueryCriteriaOperator } from '../types/common';\n\nconst c = (field: string, operator: QueryCriteriaOperator, value?: unknown) =>\n  new ConditionBuilderImpl(({ field, operator, value } as QueryCriteria));\n\nexport const eq = (field: string, value: unknown) => c(field, 'EQUAL', value);\nexport const neq = (field: string, value: unknown) => c(field, 'NOT_EQUAL', value);\nexport const inOp = (field: string, values: unknown[] | string) =>\n  c(\n    field,\n    'IN',\n    typeof values === 'string'\n      ? values.split(',').map((v) => v.trim()).filter((v) => v.length)\n      : values,\n  );\nexport const notIn = (field: string, values: unknown[]) => c(field, 'NOT_IN', values);\nexport const between = (field: string, lower: unknown, upper: unknown) => c(field, 'BETWEEN', [lower, upper]);\nexport const gt = (field: string, value: unknown) => c(field, 'GREATER_THAN', value);\nexport const gte = (field: string, value: unknown) => c(field, 'GREATER_THAN_EQUAL', value);\nexport const lt = (field: string, value: unknown) => c(field, 'LESS_THAN', value);\nexport const lte = (field: string, value: unknown) => c(field, 'LESS_THAN_EQUAL', value);\nexport const matches = (field: string, regex: string) => c(field, 'MATCHES', regex);\nexport const notMatches = (field: string, regex: string) => c(field, 'NOT_MATCHES', regex);\nexport const like = (field: string, pattern: string) => c(field, 'LIKE', pattern);\nexport const notLike = (field: string, pattern: string) => c(field, 'NOT_LIKE', pattern);\nexport const contains = (field: string, value: unknown) => c(field, 'CONTAINS', value);\nexport const containsIgnoreCase = (field: string, value: unknown) => c(field, 'CONTAINS_IGNORE_CASE', value);\nexport const notContains = (field: string, value: unknown) => c(field, 'NOT_CONTAINS', value);\nexport const notContainsIgnoreCase = (field: string, value: unknown) => c(field, 'NOT_CONTAINS_IGNORE_CASE', value);\nexport const startsWith = (field: string, prefix: string) => c(field, 'STARTS_WITH', prefix);\nexport const notStartsWith = (field: string, prefix: string) => c(field, 'NOT_STARTS_WITH', prefix);\nexport const isNull = (field: string) => c(field, 'IS_NULL');\nexport const notNull = (field: string) => c(field, 'NOT_NULL');\n","// filename: src/helpers/aggregates.ts\nexport const avg = (attribute: string): string => `avg(${attribute})`;\nexport const sum = (attribute: string): string => `sum(${attribute})`;\nexport const count = (attribute: string): string => `count(${attribute})`;\nexport const min = (attribute: string): string => `min(${attribute})`;\nexport const max = (attribute: string): string => `max(${attribute})`;\nexport const std = (attribute: string): string => `std(${attribute})`;\nexport const variance = (attribute: string): string => `variance(${attribute})`;\nexport const median = (attribute: string): string => `median(${attribute})`;\nexport const upper = (attribute: string): string => `upper(${attribute})`;\nexport const lower = (attribute: string): string => `lower(${attribute})`;\nexport const substring = (attribute: string, from: number, length: number): string =>\n  `substring(${attribute},${from},${length})`;\nexport const replace = (attribute: string, pattern: string, repl: string): string =>\n  `replace(${attribute}, '${pattern.replace(/'/g, \"\\\\'\")}', '${repl.replace(/'/g, \"\\\\'\")}')`;\nexport const percentile = (attribute: string, p: number): string => `percentile(${attribute}, ${p})`;","// filename: src/index.ts\nexport const sdkName = '@onyx.dev/onyx-database';\nexport const sdkVersion = '0.1.0';\n\n// Public types & contracts\nexport * from './types/public';\n\n// client impl\nexport { onyx } from './impl/onyx';\n\n// Helpers (make these available at top-level)\nexport * from './helpers/sort';        // asc, desc\nexport * from './helpers/conditions';  // eq, neq, inOp, ...\nexport * from './helpers/aggregates';  // avg, sum, count, ...\n\n// Query result helper\nexport { QueryResults } from './builders/query-results';\nexport type { QueryResultsPromise } from './builders/query-results';\n"]}