UNPKG

@proofkit/fmodata

Version:

FileMaker OData API client

102 lines (101 loc) 3.43 kB
import { FFetchOptions } from '@fetchkit/ffetch'; import { InternalLogger, Logger } from '../logger.js'; import { FMODataLayer } from '../services.js'; import { Auth, ExecutionContext, Result } from '../types.js'; import { Database } from './database.js'; import { DatabaseNameNormalizationMode } from './database-name.js'; export declare class FMServerConnection implements ExecutionContext { private readonly fetchClient; private readonly serverUrl; private readonly auth; private readonly normalizeDatabaseName; private useEntityIds; private includeSpecialColumns; private readonly logger; private readonly clarisIdAuthManager; private hasWarnedAboutOttoDatabaseNormalization; /** @internal Stored so credential-override flows can inherit non-auth config. */ readonly _fetchClientOptions: FFetchOptions | undefined; constructor(config: { serverUrl: string; auth: Auth; fetchClientOptions?: FFetchOptions; logger?: Logger; }); /** * @internal * Sets whether to use FileMaker entity IDs (FMFID/FMTID) in requests */ _setUseEntityIds(useEntityIds: boolean): void; /** * @internal * Gets whether to use FileMaker entity IDs (FMFID/FMTID) in requests */ _getUseEntityIds(): boolean; /** * @internal * Sets whether to include special columns (ROWID and ROWMODID) in requests */ _setIncludeSpecialColumns(includeSpecialColumns: boolean): void; /** * @internal * Gets whether to include special columns (ROWID and ROWMODID) in requests */ _getIncludeSpecialColumns(): boolean; /** * @internal * Gets the base URL for OData requests */ _getBaseUrl(): string; private _getAuthorizationHeader; /** * @internal * Gets the logger instance */ _getLogger(): InternalLogger; /** * @internal * Returns the Effect Layer for this connection, composing HttpClient, ODataConfig, and ODataLogger services. */ _getLayer(): FMODataLayer; /** * @internal * Classifies a caught error into a typed FMODataErrorType. */ private _classifyError; /** * @internal * Parses an HTTP error response into a typed FMODataErrorType. */ private _parseHttpError; /** * @internal * Checks parsed JSON data for embedded OData errors. */ private _checkEmbeddedODataError; /** * @internal * Builds the Effect pipeline for an HTTP request. * Each step in the pipeline is a discrete Effect, enabling composable error handling. */ private _makeRequestEffect; /** * @internal */ _makeRequest<T>(url: string, options?: RequestInit & FFetchOptions & { normalizeDatabaseName?: boolean; databaseNameNormalizationMode?: DatabaseNameNormalizationMode; useEntityIds?: boolean; includeSpecialColumns?: boolean; }): Promise<Result<T>>; database<IncludeSpecialColumns extends boolean = false>(name: string, config?: { normalizeDatabaseName?: boolean; useEntityIds?: boolean; includeSpecialColumns?: IncludeSpecialColumns; }): Database<IncludeSpecialColumns>; /** * Lists all available databases from the FileMaker OData service. * @returns Promise resolving to an array of database names */ listDatabaseNames(): Promise<string[]>; }