@proofkit/fmodata
Version:
FileMaker OData API client
39 lines (38 loc) • 1.75 kB
TypeScript
import { StandardSchemaV1 } from '@standard-schema/spec';
import { BaseTable } from './base-table.js';
import { ExecuteOptions } from '../types.js';
import { ExpandValidationConfig } from '../validation.js';
import { ValidationError, ResponseStructureError } from '../errors.js';
export type ODataResponse<T = unknown> = T & {
"@odata.context"?: string;
"@odata.count"?: number;
};
export type ODataListResponse<T = unknown> = ODataResponse<{
value: T[];
}>;
export type ODataRecordResponse<T = unknown> = ODataResponse<T & {
"@id"?: string;
"@editLink"?: string;
}>;
/**
* Strip OData annotations from a single record
*/
export declare function stripODataAnnotations<T extends Record<string, unknown>>(record: ODataRecordResponse<T>, options?: ExecuteOptions): T;
/**
* Transform field IDs back to names using the base table configuration
*/
export declare function applyFieldTransformation<T extends Record<string, unknown>>(response: ODataResponse<T> | ODataListResponse<T>, baseTable: BaseTable<Record<string, StandardSchemaV1>, any, any, any>, expandConfigs?: ExpandValidationConfig[]): ODataResponse<T> | ODataListResponse<T>;
/**
* Apply schema validation and transformation to data
*/
export declare function applyValidation<T extends Record<string, unknown>>(data: T | T[], schema?: Record<string, StandardSchemaV1>, selectedFields?: (keyof T)[], expandConfigs?: ExpandValidationConfig[]): Promise<{
valid: true;
data: T | T[];
} | {
valid: false;
error: ValidationError | ResponseStructureError;
}>;
/**
* Extract value array from OData list response, or wrap single record in array
*/
export declare function extractListValue<T>(response: ODataListResponse<T> | ODataRecordResponse<T>): T[];