@proofkit/fmodata
Version:
FileMaker OData API client
48 lines (47 loc) • 2.01 kB
TypeScript
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;