@proofkit/fmodata
Version:
FileMaker OData API client
102 lines (101 loc) • 3.43 kB
TypeScript
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[]>;
}