UNPKG

@proofkit/fmodata

Version:

FileMaker OData API client

48 lines (47 loc) 2.01 kB
import { FFetchOptions } from '@fetchkit/ffetch'; import { Context, Effect, Layer } from 'effect'; import { DatabaseNameNormalizationMode } from './client/database-name.js'; import { FMODataErrorType } from './errors.js'; import { InternalLogger } from './logger.js'; export interface HttpClient { readonly request: <T>(url: string, options?: RequestInit & FFetchOptions & { normalizeDatabaseName?: boolean; databaseNameNormalizationMode?: DatabaseNameNormalizationMode; useEntityIds?: boolean; includeSpecialColumns?: boolean; includeODataAnnotations?: boolean; retryPolicy?: import('./types.js').RetryPolicy; }) => Effect.Effect<T, FMODataErrorType>; } export declare const HttpClient: Context.Tag<HttpClient, HttpClient>; export interface ODataConfig { readonly baseUrl: string; readonly databaseName: string; readonly normalizeDatabaseName: boolean; readonly useEntityIds: boolean; readonly includeSpecialColumns: boolean; } export declare const ODataConfig: Context.Tag<ODataConfig, ODataConfig>; export interface ODataLogger { readonly logger: InternalLogger; } export declare const ODataLogger: Context.Tag<ODataLogger, ODataLogger>; export type FMODataLayer = Layer.Layer<HttpClient | ODataConfig | ODataLogger>; /** * Extracts ODataConfig and ODataLogger values from a Layer synchronously. * Used by builders to access config in non-Effect methods (getRequestConfig, toRequest, etc.) */ export declare function extractConfigFromLayer(layer: FMODataLayer): { config: ODataConfig; logger: InternalLogger; }; /** * Creates a database-scoped Layer by overriding ODataConfig with database-specific values. * The HttpClient and ODataLogger services are preserved from the base layer. */ export declare function createDatabaseLayer(baseLayer: FMODataLayer, overrides: { databaseName: string; normalizeDatabaseName: boolean; useEntityIds: boolean; includeSpecialColumns: boolean; }): FMODataLayer;