UNPKG

@proofkit/fmodata

Version:
39 lines (38 loc) 1.75 kB
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[];