barsa 1b944f57aa Update Configuration Files and Refactor Code Structure
- Adjusted .prettierrc to ensure consistent formatting with a newline at the end of the file.
- Reformatted eslint.config.mjs for improved readability by aligning array elements.
- Updated pnpm-lock.yaml to use single quotes for consistency across dependencies.
- Simplified worktree setup in .cursor/worktrees.json for cleaner configuration.
- Enhanced documentation in .cursor/plans to clarify architecture refactoring.
- Refactored various service files for improved readability and maintainability, including rate-limiting and auth services.
- Updated imports and exports across multiple files for consistency and clarity.
- Improved error handling and logging in service methods to enhance debugging capabilities.
- Streamlined utility functions for better performance and maintainability across the domain packages.
2025-12-25 17:30:02 +09:00

42 lines
1.2 KiB
TypeScript

/**
* Common Salesforce Provider Types
*
* Generic Salesforce API response structures used across multiple domains.
*/
import { z } from "zod";
// ============================================================================
// Salesforce Query Response (Generic SOQL Response)
// ============================================================================
/**
* Base schema for Salesforce SOQL query result
*/
const salesforceResponseBaseSchema = z.object({
totalSize: z.number(),
done: z.boolean(),
records: z.array(z.unknown()),
});
type SalesforceResponseBase = z.infer<typeof salesforceResponseBaseSchema>;
/**
* Generic type for Salesforce query results derived from schema
* All SOQL queries return this structure regardless of SObject type
*
* Usage: SalesforceResponse<SalesforceOrderRecord>
*/
export type SalesforceResponse<TRecord> = Omit<SalesforceResponseBase, "records"> & {
records: TRecord[];
};
/**
* Schema factory for validating Salesforce query responses
* Usage: salesforceResponseSchema(salesforceOrderRecordSchema)
*/
export const salesforceResponseSchema = <TRecord extends z.ZodTypeAny>(recordSchema: TRecord) =>
salesforceResponseBaseSchema.extend({
records: z.array(recordSchema),
});