UNPKG

@ritas-inc/sapb1commandapi-client

Version:

A stateless TypeScript client for SAP B1 Service Layer Command API with comprehensive error handling, type safety, and batch operations

37 lines (36 loc) 1.22 kB
import { z } from 'zod'; export const ClientConfigSchema = z.object({ baseUrl: z.string(), timeout: z.number().optional(), headers: z.record(z.string()).optional(), retryConfig: z.object({ retries: z.number().optional(), retryDelay: z.any().optional(), retryCondition: z.any().optional(), }).optional() }); export const SuccessResponseSchema = (dataSchema, metadataSchema = z.any()) => z.object({ success: z.literal(true), data: dataSchema, metadata: metadataSchema.optional() }); export const problemTypeSchema = z.enum(['unauthorized', 'bad-request', 'not-found', 'internal-server-error']); export const ErrorResponseSchema = z.object({ success: z.literal(false), problem: z.object({ status: z.number(), type: problemTypeSchema, title: z.string(), detail: z.string(), instance: z.string(), context: z.object({ request: z.string(), responseText: z.string() }), issues: z.array(z.string()) }) }); export const APIResponseSchema = (dataSchema, metadataSchema = z.any()) => z.union([ SuccessResponseSchema(dataSchema, metadataSchema), ErrorResponseSchema ]);