@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
JavaScript
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
]);