@perkos/schema-validation 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,130 @@
1
+ // src/ai.ts
2
+ import { z } from "zod";
3
+ var imageAnalyzeSchema = z.object({
4
+ image: z.string().min(1, "Image URL is required"),
5
+ question: z.string().optional(),
6
+ maxTokens: z.number().int().positive().optional()
7
+ });
8
+ var imageGenerateSchema = z.object({
9
+ prompt: z.string().min(1, "Prompt is required"),
10
+ size: z.enum(["1024x1024", "1792x1024", "1024x1792"]).optional().default("1024x1024"),
11
+ quality: z.enum(["standard", "hd"]).optional().default("standard"),
12
+ style: z.enum(["vivid", "natural"]).optional().default("vivid"),
13
+ n: z.number().int().min(1).max(10).optional().default(1)
14
+ });
15
+ var ocrExtractSchema = z.object({
16
+ image: z.string().min(1, "Image URL is required"),
17
+ language: z.string().optional()
18
+ });
19
+ var textSynthesizeSchema = z.object({
20
+ text: z.string().min(1, "Text is required").max(4096, "Text too long"),
21
+ voice: z.enum(["alloy", "echo", "fable", "onyx", "nova", "shimmer"]).optional().default("alloy"),
22
+ speed: z.number().min(0.25).max(4).optional().default(1)
23
+ });
24
+ var audioTranscribeSchema = z.object({
25
+ audio: z.string().min(1, "Audio URL is required"),
26
+ language: z.string().optional(),
27
+ prompt: z.string().optional()
28
+ });
29
+ var textSummarizeSchema = z.object({
30
+ text: z.string().min(1, "Text is required"),
31
+ length: z.enum(["short", "medium", "long"]).optional().default("medium"),
32
+ format: z.enum(["paragraph", "bullets"]).optional().default("paragraph")
33
+ });
34
+ var textTranslateSchema = z.object({
35
+ text: z.string().min(1, "Text is required"),
36
+ sourceLang: z.string().min(2, "Source language is required"),
37
+ targetLang: z.string().min(2, "Target language is required"),
38
+ formality: z.enum(["formal", "informal", "neutral"]).optional()
39
+ });
40
+ var sentimentAnalyzeSchema = z.object({
41
+ text: z.string().min(1, "Text is required"),
42
+ detailed: z.boolean().optional().default(false)
43
+ });
44
+ var contentModerateSchema = z.object({
45
+ content: z.string().min(1, "Content is required"),
46
+ categories: z.array(z.string()).optional()
47
+ });
48
+ var textSimplifySchema = z.object({
49
+ text: z.string().min(1, "Text is required"),
50
+ targetLevel: z.enum(["elementary", "middle", "high", "college"]).optional().default("middle")
51
+ });
52
+ var entityExtractSchema = z.object({
53
+ text: z.string().min(1, "Text is required"),
54
+ types: z.array(z.enum(["person", "organization", "location", "date", "money", "product"])).optional()
55
+ });
56
+ var emailGenerateSchema = z.object({
57
+ context: z.string().min(1, "Context is required"),
58
+ tone: z.enum(["professional", "friendly", "formal", "casual"]).optional().default("professional"),
59
+ length: z.enum(["short", "medium", "long"]).optional().default("medium")
60
+ });
61
+ var productDescriptionSchema = z.object({
62
+ product: z.string().min(1, "Product name/description is required"),
63
+ features: z.array(z.string()).optional(),
64
+ audience: z.string().optional(),
65
+ tone: z.enum(["professional", "casual", "luxury", "technical"]).optional().default("professional")
66
+ });
67
+ var seoOptimizeSchema = z.object({
68
+ content: z.string().min(1, "Content is required"),
69
+ keywords: z.array(z.string()).optional(),
70
+ targetUrl: z.string().url().optional()
71
+ });
72
+ var codeGenerateSchema = z.object({
73
+ prompt: z.string().min(1, "Prompt is required"),
74
+ language: z.string().min(1, "Programming language is required"),
75
+ framework: z.string().optional(),
76
+ style: z.enum(["concise", "documented", "verbose"]).optional().default("documented")
77
+ });
78
+ var codeReviewSchema = z.object({
79
+ code: z.string().min(1, "Code is required"),
80
+ language: z.string().optional(),
81
+ focus: z.array(z.enum(["security", "performance", "readability", "bugs", "best-practices"])).optional()
82
+ });
83
+ var sqlQuerySchema = z.object({
84
+ description: z.string().min(1, "Description is required"),
85
+ schema: z.string().optional(),
86
+ dialect: z.enum(["postgresql", "mysql", "sqlite", "mssql"]).optional().default("postgresql")
87
+ });
88
+ var regexGenerateSchema = z.object({
89
+ description: z.string().min(1, "Description is required"),
90
+ examples: z.array(z.object({
91
+ input: z.string(),
92
+ shouldMatch: z.boolean()
93
+ })).optional(),
94
+ flavor: z.enum(["javascript", "python", "pcre"]).optional().default("javascript")
95
+ });
96
+ var apiDocsSchema = z.object({
97
+ code: z.string().min(1, "Code is required"),
98
+ format: z.enum(["openapi", "markdown", "jsdoc"]).optional().default("markdown"),
99
+ includeExamples: z.boolean().optional().default(true)
100
+ });
101
+ var quizGenerateSchema = z.object({
102
+ topic: z.string().min(1, "Topic is required"),
103
+ questionCount: z.number().int().min(1).max(50).optional().default(10),
104
+ difficulty: z.enum(["easy", "medium", "hard"]).optional().default("medium"),
105
+ type: z.enum(["multiple-choice", "true-false", "mixed"]).optional().default("multiple-choice")
106
+ });
107
+
108
+ export {
109
+ imageAnalyzeSchema,
110
+ imageGenerateSchema,
111
+ ocrExtractSchema,
112
+ textSynthesizeSchema,
113
+ audioTranscribeSchema,
114
+ textSummarizeSchema,
115
+ textTranslateSchema,
116
+ sentimentAnalyzeSchema,
117
+ contentModerateSchema,
118
+ textSimplifySchema,
119
+ entityExtractSchema,
120
+ emailGenerateSchema,
121
+ productDescriptionSchema,
122
+ seoOptimizeSchema,
123
+ codeGenerateSchema,
124
+ codeReviewSchema,
125
+ sqlQuerySchema,
126
+ regexGenerateSchema,
127
+ apiDocsSchema,
128
+ quizGenerateSchema
129
+ };
130
+ //# sourceMappingURL=chunk-2ZIZ7TXR.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ai.ts"],"sourcesContent":["/**\n * @perkos/validators/ai\n * AI endpoint request validators using Zod\n */\n\nimport { z } from \"zod\";\n\n// ============================================================================\n// Vision & Image Validators\n// ============================================================================\n\nexport const imageAnalyzeSchema = z.object({\n image: z.string().min(1, \"Image URL is required\"),\n question: z.string().optional(),\n maxTokens: z.number().int().positive().optional(),\n});\n\nexport const imageGenerateSchema = z.object({\n prompt: z.string().min(1, \"Prompt is required\"),\n size: z.enum([\"1024x1024\", \"1792x1024\", \"1024x1792\"]).optional().default(\"1024x1024\"),\n quality: z.enum([\"standard\", \"hd\"]).optional().default(\"standard\"),\n style: z.enum([\"vivid\", \"natural\"]).optional().default(\"vivid\"),\n n: z.number().int().min(1).max(10).optional().default(1),\n});\n\nexport const ocrExtractSchema = z.object({\n image: z.string().min(1, \"Image URL is required\"),\n language: z.string().optional(),\n});\n\n// ============================================================================\n// Audio Validators\n// ============================================================================\n\nexport const textSynthesizeSchema = z.object({\n text: z.string().min(1, \"Text is required\").max(4096, \"Text too long\"),\n voice: z.enum([\"alloy\", \"echo\", \"fable\", \"onyx\", \"nova\", \"shimmer\"])\n .optional()\n .default(\"alloy\"),\n speed: z.number().min(0.25).max(4.0).optional().default(1.0),\n});\n\nexport const audioTranscribeSchema = z.object({\n audio: z.string().min(1, \"Audio URL is required\"),\n language: z.string().optional(),\n prompt: z.string().optional(),\n});\n\n// ============================================================================\n// Text Processing Validators\n// ============================================================================\n\nexport const textSummarizeSchema = z.object({\n text: z.string().min(1, \"Text is required\"),\n length: z.enum([\"short\", \"medium\", \"long\"]).optional().default(\"medium\"),\n format: z.enum([\"paragraph\", \"bullets\"]).optional().default(\"paragraph\"),\n});\n\nexport const textTranslateSchema = z.object({\n text: z.string().min(1, \"Text is required\"),\n sourceLang: z.string().min(2, \"Source language is required\"),\n targetLang: z.string().min(2, \"Target language is required\"),\n formality: z.enum([\"formal\", \"informal\", \"neutral\"]).optional(),\n});\n\nexport const sentimentAnalyzeSchema = z.object({\n text: z.string().min(1, \"Text is required\"),\n detailed: z.boolean().optional().default(false),\n});\n\nexport const contentModerateSchema = z.object({\n content: z.string().min(1, \"Content is required\"),\n categories: z.array(z.string()).optional(),\n});\n\nexport const textSimplifySchema = z.object({\n text: z.string().min(1, \"Text is required\"),\n targetLevel: z.enum([\"elementary\", \"middle\", \"high\", \"college\"]).optional().default(\"middle\"),\n});\n\nexport const entityExtractSchema = z.object({\n text: z.string().min(1, \"Text is required\"),\n types: z.array(z.enum([\"person\", \"organization\", \"location\", \"date\", \"money\", \"product\"])).optional(),\n});\n\n// ============================================================================\n// Content Generation Validators\n// ============================================================================\n\nexport const emailGenerateSchema = z.object({\n context: z.string().min(1, \"Context is required\"),\n tone: z.enum([\"professional\", \"friendly\", \"formal\", \"casual\"]).optional().default(\"professional\"),\n length: z.enum([\"short\", \"medium\", \"long\"]).optional().default(\"medium\"),\n});\n\nexport const productDescriptionSchema = z.object({\n product: z.string().min(1, \"Product name/description is required\"),\n features: z.array(z.string()).optional(),\n audience: z.string().optional(),\n tone: z.enum([\"professional\", \"casual\", \"luxury\", \"technical\"]).optional().default(\"professional\"),\n});\n\nexport const seoOptimizeSchema = z.object({\n content: z.string().min(1, \"Content is required\"),\n keywords: z.array(z.string()).optional(),\n targetUrl: z.string().url().optional(),\n});\n\n// ============================================================================\n// Code & Technical Validators\n// ============================================================================\n\nexport const codeGenerateSchema = z.object({\n prompt: z.string().min(1, \"Prompt is required\"),\n language: z.string().min(1, \"Programming language is required\"),\n framework: z.string().optional(),\n style: z.enum([\"concise\", \"documented\", \"verbose\"]).optional().default(\"documented\"),\n});\n\nexport const codeReviewSchema = z.object({\n code: z.string().min(1, \"Code is required\"),\n language: z.string().optional(),\n focus: z.array(z.enum([\"security\", \"performance\", \"readability\", \"bugs\", \"best-practices\"])).optional(),\n});\n\nexport const sqlQuerySchema = z.object({\n description: z.string().min(1, \"Description is required\"),\n schema: z.string().optional(),\n dialect: z.enum([\"postgresql\", \"mysql\", \"sqlite\", \"mssql\"]).optional().default(\"postgresql\"),\n});\n\nexport const regexGenerateSchema = z.object({\n description: z.string().min(1, \"Description is required\"),\n examples: z.array(z.object({\n input: z.string(),\n shouldMatch: z.boolean(),\n })).optional(),\n flavor: z.enum([\"javascript\", \"python\", \"pcre\"]).optional().default(\"javascript\"),\n});\n\nexport const apiDocsSchema = z.object({\n code: z.string().min(1, \"Code is required\"),\n format: z.enum([\"openapi\", \"markdown\", \"jsdoc\"]).optional().default(\"markdown\"),\n includeExamples: z.boolean().optional().default(true),\n});\n\n// ============================================================================\n// Educational Validators\n// ============================================================================\n\nexport const quizGenerateSchema = z.object({\n topic: z.string().min(1, \"Topic is required\"),\n questionCount: z.number().int().min(1).max(50).optional().default(10),\n difficulty: z.enum([\"easy\", \"medium\", \"hard\"]).optional().default(\"medium\"),\n type: z.enum([\"multiple-choice\", \"true-false\", \"mixed\"]).optional().default(\"multiple-choice\"),\n});\n\n// ============================================================================\n// Type Exports\n// ============================================================================\n\nexport type ImageAnalyzeInput = z.infer<typeof imageAnalyzeSchema>;\nexport type ImageGenerateInput = z.infer<typeof imageGenerateSchema>;\nexport type OCRExtractInput = z.infer<typeof ocrExtractSchema>;\nexport type TextSynthesizeInput = z.infer<typeof textSynthesizeSchema>;\nexport type AudioTranscribeInput = z.infer<typeof audioTranscribeSchema>;\nexport type TextSummarizeInput = z.infer<typeof textSummarizeSchema>;\nexport type TextTranslateInput = z.infer<typeof textTranslateSchema>;\nexport type SentimentAnalyzeInput = z.infer<typeof sentimentAnalyzeSchema>;\nexport type ContentModerateInput = z.infer<typeof contentModerateSchema>;\nexport type TextSimplifyInput = z.infer<typeof textSimplifySchema>;\nexport type EntityExtractInput = z.infer<typeof entityExtractSchema>;\nexport type EmailGenerateInput = z.infer<typeof emailGenerateSchema>;\nexport type ProductDescriptionInput = z.infer<typeof productDescriptionSchema>;\nexport type SEOOptimizeInput = z.infer<typeof seoOptimizeSchema>;\nexport type CodeGenerateInput = z.infer<typeof codeGenerateSchema>;\nexport type CodeReviewInput = z.infer<typeof codeReviewSchema>;\nexport type SQLQueryInput = z.infer<typeof sqlQuerySchema>;\nexport type RegexGenerateInput = z.infer<typeof regexGenerateSchema>;\nexport type APIDocsInput = z.infer<typeof apiDocsSchema>;\nexport type QuizGenerateInput = z.infer<typeof quizGenerateSchema>;\n"],"mappings":";AAKA,SAAS,SAAS;AAMX,IAAM,qBAAqB,EAAE,OAAO;AAAA,EACzC,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,uBAAuB;AAAA,EAChD,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAClD,CAAC;AAEM,IAAM,sBAAsB,EAAE,OAAO;AAAA,EAC1C,QAAQ,EAAE,OAAO,EAAE,IAAI,GAAG,oBAAoB;AAAA,EAC9C,MAAM,EAAE,KAAK,CAAC,aAAa,aAAa,WAAW,CAAC,EAAE,SAAS,EAAE,QAAQ,WAAW;AAAA,EACpF,SAAS,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,UAAU;AAAA,EACjE,OAAO,EAAE,KAAK,CAAC,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,OAAO;AAAA,EAC9D,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC;AACzD,CAAC;AAEM,IAAM,mBAAmB,EAAE,OAAO;AAAA,EACvC,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,uBAAuB;AAAA,EAChD,UAAU,EAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAMM,IAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,kBAAkB,EAAE,IAAI,MAAM,eAAe;AAAA,EACrE,OAAO,EAAE,KAAK,CAAC,SAAS,QAAQ,SAAS,QAAQ,QAAQ,SAAS,CAAC,EAChE,SAAS,EACT,QAAQ,OAAO;AAAA,EAClB,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,CAAG,EAAE,SAAS,EAAE,QAAQ,CAAG;AAC7D,CAAC;AAEM,IAAM,wBAAwB,EAAE,OAAO;AAAA,EAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,uBAAuB;AAAA,EAChD,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,QAAQ,EAAE,OAAO,EAAE,SAAS;AAC9B,CAAC;AAMM,IAAM,sBAAsB,EAAE,OAAO;AAAA,EAC1C,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,kBAAkB;AAAA,EAC1C,QAAQ,EAAE,KAAK,CAAC,SAAS,UAAU,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,QAAQ;AAAA,EACvE,QAAQ,EAAE,KAAK,CAAC,aAAa,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,WAAW;AACzE,CAAC;AAEM,IAAM,sBAAsB,EAAE,OAAO;AAAA,EAC1C,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,kBAAkB;AAAA,EAC1C,YAAY,EAAE,OAAO,EAAE,IAAI,GAAG,6BAA6B;AAAA,EAC3D,YAAY,EAAE,OAAO,EAAE,IAAI,GAAG,6BAA6B;AAAA,EAC3D,WAAW,EAAE,KAAK,CAAC,UAAU,YAAY,SAAS,CAAC,EAAE,SAAS;AAChE,CAAC;AAEM,IAAM,yBAAyB,EAAE,OAAO;AAAA,EAC7C,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,kBAAkB;AAAA,EAC1C,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAChD,CAAC;AAEM,IAAM,wBAAwB,EAAE,OAAO;AAAA,EAC5C,SAAS,EAAE,OAAO,EAAE,IAAI,GAAG,qBAAqB;AAAA,EAChD,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAC3C,CAAC;AAEM,IAAM,qBAAqB,EAAE,OAAO;AAAA,EACzC,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,kBAAkB;AAAA,EAC1C,aAAa,EAAE,KAAK,CAAC,cAAc,UAAU,QAAQ,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,QAAQ;AAC9F,CAAC;AAEM,IAAM,sBAAsB,EAAE,OAAO;AAAA,EAC1C,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,kBAAkB;AAAA,EAC1C,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,gBAAgB,YAAY,QAAQ,SAAS,SAAS,CAAC,CAAC,EAAE,SAAS;AACtG,CAAC;AAMM,IAAM,sBAAsB,EAAE,OAAO;AAAA,EAC1C,SAAS,EAAE,OAAO,EAAE,IAAI,GAAG,qBAAqB;AAAA,EAChD,MAAM,EAAE,KAAK,CAAC,gBAAgB,YAAY,UAAU,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,cAAc;AAAA,EAChG,QAAQ,EAAE,KAAK,CAAC,SAAS,UAAU,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,QAAQ;AACzE,CAAC;AAEM,IAAM,2BAA2B,EAAE,OAAO;AAAA,EAC/C,SAAS,EAAE,OAAO,EAAE,IAAI,GAAG,sCAAsC;AAAA,EACjE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACvC,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,MAAM,EAAE,KAAK,CAAC,gBAAgB,UAAU,UAAU,WAAW,CAAC,EAAE,SAAS,EAAE,QAAQ,cAAc;AACnG,CAAC;AAEM,IAAM,oBAAoB,EAAE,OAAO;AAAA,EACxC,SAAS,EAAE,OAAO,EAAE,IAAI,GAAG,qBAAqB;AAAA,EAChD,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACvC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AACvC,CAAC;AAMM,IAAM,qBAAqB,EAAE,OAAO;AAAA,EACzC,QAAQ,EAAE,OAAO,EAAE,IAAI,GAAG,oBAAoB;AAAA,EAC9C,UAAU,EAAE,OAAO,EAAE,IAAI,GAAG,kCAAkC;AAAA,EAC9D,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,OAAO,EAAE,KAAK,CAAC,WAAW,cAAc,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,YAAY;AACrF,CAAC;AAEM,IAAM,mBAAmB,EAAE,OAAO;AAAA,EACvC,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,kBAAkB;AAAA,EAC1C,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,YAAY,eAAe,eAAe,QAAQ,gBAAgB,CAAC,CAAC,EAAE,SAAS;AACxG,CAAC;AAEM,IAAM,iBAAiB,EAAE,OAAO;AAAA,EACrC,aAAa,EAAE,OAAO,EAAE,IAAI,GAAG,yBAAyB;AAAA,EACxD,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,SAAS,EAAE,KAAK,CAAC,cAAc,SAAS,UAAU,OAAO,CAAC,EAAE,SAAS,EAAE,QAAQ,YAAY;AAC7F,CAAC;AAEM,IAAM,sBAAsB,EAAE,OAAO;AAAA,EAC1C,aAAa,EAAE,OAAO,EAAE,IAAI,GAAG,yBAAyB;AAAA,EACxD,UAAU,EAAE,MAAM,EAAE,OAAO;AAAA,IACzB,OAAO,EAAE,OAAO;AAAA,IAChB,aAAa,EAAE,QAAQ;AAAA,EACzB,CAAC,CAAC,EAAE,SAAS;AAAA,EACb,QAAQ,EAAE,KAAK,CAAC,cAAc,UAAU,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,YAAY;AAClF,CAAC;AAEM,IAAM,gBAAgB,EAAE,OAAO;AAAA,EACpC,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,kBAAkB;AAAA,EAC1C,QAAQ,EAAE,KAAK,CAAC,WAAW,YAAY,OAAO,CAAC,EAAE,SAAS,EAAE,QAAQ,UAAU;AAAA,EAC9E,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI;AACtD,CAAC;AAMM,IAAM,qBAAqB,EAAE,OAAO;AAAA,EACzC,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,mBAAmB;AAAA,EAC5C,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;AAAA,EACpE,YAAY,EAAE,KAAK,CAAC,QAAQ,UAAU,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,QAAQ;AAAA,EAC1E,MAAM,EAAE,KAAK,CAAC,mBAAmB,cAAc,OAAO,CAAC,EAAE,SAAS,EAAE,QAAQ,iBAAiB;AAC/F,CAAC;","names":[]}
@@ -0,0 +1,127 @@
1
+ // src/payment.ts
2
+ import { z } from "zod";
3
+ var networkSchema = z.enum([
4
+ "avalanche",
5
+ "base",
6
+ "celo",
7
+ "avalanche-fuji",
8
+ "base-sepolia",
9
+ "celo-alfajores"
10
+ ]);
11
+ var caip2NetworkSchema = z.string().regex(
12
+ /^eip155:\d+$/,
13
+ "Invalid CAIP-2 network format. Expected: eip155:<chainId>"
14
+ );
15
+ var ethereumAddressSchema = z.string().regex(
16
+ /^0x[a-fA-F0-9]{40}$/,
17
+ "Invalid Ethereum address"
18
+ );
19
+ var transactionHashSchema = z.string().regex(
20
+ /^0x[a-fA-F0-9]{64}$/,
21
+ "Invalid transaction hash"
22
+ );
23
+ var signatureSchema = z.string().regex(
24
+ /^0x[a-fA-F0-9]+$/,
25
+ "Invalid signature format"
26
+ );
27
+ var paymentEnvelopeSchema = z.object({
28
+ payload: z.object({
29
+ from: ethereumAddressSchema,
30
+ to: ethereumAddressSchema,
31
+ value: z.string().min(1, "Value is required"),
32
+ validAfter: z.number().int().nonnegative(),
33
+ validBefore: z.number().int().positive(),
34
+ nonce: z.string().min(1, "Nonce is required"),
35
+ network: caip2NetworkSchema
36
+ }),
37
+ signature: signatureSchema
38
+ });
39
+ var paymentHeaderSchema = z.string().regex(
40
+ /^x402\s+/i,
41
+ "Payment header must start with 'x402'"
42
+ );
43
+ var priceSchema = z.union([
44
+ z.string().regex(/^\d+(\.\d+)?$/, "Invalid price format"),
45
+ z.number().positive()
46
+ ]);
47
+ var paymentConfigSchema = z.object({
48
+ recipientAddress: ethereumAddressSchema,
49
+ network: networkSchema,
50
+ tokenAddress: ethereumAddressSchema.optional(),
51
+ prices: z.record(z.string(), priceSchema)
52
+ });
53
+ var routeConfigSchema = z.object({
54
+ path: z.string().min(1, "Path is required"),
55
+ price: priceSchema,
56
+ description: z.string().optional()
57
+ });
58
+ var paymentRequestSchema = z.object({
59
+ amount: priceSchema,
60
+ recipient: ethereumAddressSchema,
61
+ network: networkSchema,
62
+ memo: z.string().optional(),
63
+ expiresAt: z.number().int().positive().optional()
64
+ });
65
+ var paymentVerificationSchema = z.object({
66
+ envelope: paymentEnvelopeSchema,
67
+ expectedAmount: z.string(),
68
+ expectedRecipient: ethereumAddressSchema,
69
+ tolerance: z.number().min(0).max(1).optional().default(0)
70
+ });
71
+ var tokenInfoSchema = z.object({
72
+ address: ethereumAddressSchema,
73
+ name: z.string(),
74
+ symbol: z.string(),
75
+ decimals: z.number().int().min(0).max(18),
76
+ chainId: z.number().int().positive()
77
+ });
78
+ var eip712DomainSchema = z.object({
79
+ name: z.string(),
80
+ version: z.string(),
81
+ chainId: z.number().int().positive(),
82
+ verifyingContract: ethereumAddressSchema
83
+ });
84
+ var settlementRequestSchema = z.object({
85
+ envelope: paymentEnvelopeSchema,
86
+ privateKey: z.string().optional()
87
+ });
88
+ var settlementResultSchema = z.object({
89
+ success: z.boolean(),
90
+ transactionHash: transactionHashSchema.optional(),
91
+ error: z.string().optional(),
92
+ gasUsed: z.string().optional()
93
+ });
94
+ var paymentErrorSchema = z.object({
95
+ error: z.string(),
96
+ code: z.enum([
97
+ "MISSING_PAYMENT",
98
+ "INVALID_SIGNATURE",
99
+ "INVALID_AMOUNT",
100
+ "EXPIRED_PAYMENT",
101
+ "INSUFFICIENT_BALANCE",
102
+ "SETTLEMENT_FAILED",
103
+ "NETWORK_MISMATCH"
104
+ ]),
105
+ details: z.record(z.string(), z.unknown()).optional()
106
+ });
107
+
108
+ export {
109
+ networkSchema,
110
+ caip2NetworkSchema,
111
+ ethereumAddressSchema,
112
+ transactionHashSchema,
113
+ signatureSchema,
114
+ paymentEnvelopeSchema,
115
+ paymentHeaderSchema,
116
+ priceSchema,
117
+ paymentConfigSchema,
118
+ routeConfigSchema,
119
+ paymentRequestSchema,
120
+ paymentVerificationSchema,
121
+ tokenInfoSchema,
122
+ eip712DomainSchema,
123
+ settlementRequestSchema,
124
+ settlementResultSchema,
125
+ paymentErrorSchema
126
+ };
127
+ //# sourceMappingURL=chunk-AGE4J5TS.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/payment.ts"],"sourcesContent":["/**\n * @perkos/validators/payment\n * Payment and x402 protocol validators using Zod\n */\n\nimport { z } from \"zod\";\n\n// ============================================================================\n// Network & Chain Validators\n// ============================================================================\n\nexport const networkSchema = z.enum([\n \"avalanche\",\n \"base\",\n \"celo\",\n \"avalanche-fuji\",\n \"base-sepolia\",\n \"celo-alfajores\",\n]);\n\nexport const caip2NetworkSchema = z.string().regex(\n /^eip155:\\d+$/,\n \"Invalid CAIP-2 network format. Expected: eip155:<chainId>\"\n);\n\nexport const ethereumAddressSchema = z.string().regex(\n /^0x[a-fA-F0-9]{40}$/,\n \"Invalid Ethereum address\"\n);\n\nexport const transactionHashSchema = z.string().regex(\n /^0x[a-fA-F0-9]{64}$/,\n \"Invalid transaction hash\"\n);\n\nexport const signatureSchema = z.string().regex(\n /^0x[a-fA-F0-9]+$/,\n \"Invalid signature format\"\n);\n\n// ============================================================================\n// Payment Envelope Validators\n// ============================================================================\n\nexport const paymentEnvelopeSchema = z.object({\n payload: z.object({\n from: ethereumAddressSchema,\n to: ethereumAddressSchema,\n value: z.string().min(1, \"Value is required\"),\n validAfter: z.number().int().nonnegative(),\n validBefore: z.number().int().positive(),\n nonce: z.string().min(1, \"Nonce is required\"),\n network: caip2NetworkSchema,\n }),\n signature: signatureSchema,\n});\n\nexport const paymentHeaderSchema = z.string().regex(\n /^x402\\s+/i,\n \"Payment header must start with 'x402'\"\n);\n\n// ============================================================================\n// Payment Configuration Validators\n// ============================================================================\n\nexport const priceSchema = z.union([\n z.string().regex(/^\\d+(\\.\\d+)?$/, \"Invalid price format\"),\n z.number().positive(),\n]);\n\nexport const paymentConfigSchema = z.object({\n recipientAddress: ethereumAddressSchema,\n network: networkSchema,\n tokenAddress: ethereumAddressSchema.optional(),\n prices: z.record(z.string(), priceSchema),\n});\n\nexport const routeConfigSchema = z.object({\n path: z.string().min(1, \"Path is required\"),\n price: priceSchema,\n description: z.string().optional(),\n});\n\n// ============================================================================\n// Payment Request Validators\n// ============================================================================\n\nexport const paymentRequestSchema = z.object({\n amount: priceSchema,\n recipient: ethereumAddressSchema,\n network: networkSchema,\n memo: z.string().optional(),\n expiresAt: z.number().int().positive().optional(),\n});\n\nexport const paymentVerificationSchema = z.object({\n envelope: paymentEnvelopeSchema,\n expectedAmount: z.string(),\n expectedRecipient: ethereumAddressSchema,\n tolerance: z.number().min(0).max(1).optional().default(0),\n});\n\n// ============================================================================\n// Token Validators\n// ============================================================================\n\nexport const tokenInfoSchema = z.object({\n address: ethereumAddressSchema,\n name: z.string(),\n symbol: z.string(),\n decimals: z.number().int().min(0).max(18),\n chainId: z.number().int().positive(),\n});\n\nexport const eip712DomainSchema = z.object({\n name: z.string(),\n version: z.string(),\n chainId: z.number().int().positive(),\n verifyingContract: ethereumAddressSchema,\n});\n\n// ============================================================================\n// Settlement Validators\n// ============================================================================\n\nexport const settlementRequestSchema = z.object({\n envelope: paymentEnvelopeSchema,\n privateKey: z.string().optional(),\n});\n\nexport const settlementResultSchema = z.object({\n success: z.boolean(),\n transactionHash: transactionHashSchema.optional(),\n error: z.string().optional(),\n gasUsed: z.string().optional(),\n});\n\n// ============================================================================\n// Error Response Validators\n// ============================================================================\n\nexport const paymentErrorSchema = z.object({\n error: z.string(),\n code: z.enum([\n \"MISSING_PAYMENT\",\n \"INVALID_SIGNATURE\",\n \"INVALID_AMOUNT\",\n \"EXPIRED_PAYMENT\",\n \"INSUFFICIENT_BALANCE\",\n \"SETTLEMENT_FAILED\",\n \"NETWORK_MISMATCH\",\n ]),\n details: z.record(z.string(), z.unknown()).optional(),\n});\n\n// ============================================================================\n// Type Exports\n// ============================================================================\n\nexport type Network = z.infer<typeof networkSchema>;\nexport type CAIP2Network = z.infer<typeof caip2NetworkSchema>;\nexport type EthereumAddress = z.infer<typeof ethereumAddressSchema>;\nexport type TransactionHash = z.infer<typeof transactionHashSchema>;\nexport type Signature = z.infer<typeof signatureSchema>;\nexport type PaymentEnvelope = z.infer<typeof paymentEnvelopeSchema>;\nexport type PaymentConfig = z.infer<typeof paymentConfigSchema>;\nexport type RouteConfig = z.infer<typeof routeConfigSchema>;\nexport type PaymentRequest = z.infer<typeof paymentRequestSchema>;\nexport type PaymentVerification = z.infer<typeof paymentVerificationSchema>;\nexport type TokenInfo = z.infer<typeof tokenInfoSchema>;\nexport type EIP712Domain = z.infer<typeof eip712DomainSchema>;\nexport type SettlementRequest = z.infer<typeof settlementRequestSchema>;\nexport type SettlementResult = z.infer<typeof settlementResultSchema>;\nexport type PaymentError = z.infer<typeof paymentErrorSchema>;\n"],"mappings":"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","names":[]}
@@ -0,0 +1,41 @@
1
+ export { APIDocsInput, AudioTranscribeInput, CodeGenerateInput, CodeReviewInput, ContentModerateInput, EmailGenerateInput, EntityExtractInput, ImageAnalyzeInput, ImageGenerateInput, OCRExtractInput, ProductDescriptionInput, QuizGenerateInput, RegexGenerateInput, SEOOptimizeInput, SQLQueryInput, SentimentAnalyzeInput, TextSimplifyInput, TextSummarizeInput, TextSynthesizeInput, TextTranslateInput, apiDocsSchema, audioTranscribeSchema, codeGenerateSchema, codeReviewSchema, contentModerateSchema, emailGenerateSchema, entityExtractSchema, imageAnalyzeSchema, imageGenerateSchema, ocrExtractSchema, productDescriptionSchema, quizGenerateSchema, regexGenerateSchema, sentimentAnalyzeSchema, seoOptimizeSchema, sqlQuerySchema, textSimplifySchema, textSummarizeSchema, textSynthesizeSchema, textTranslateSchema } from './ai.mjs';
2
+ export { CAIP2Network, EIP712Domain, EthereumAddress, Network, PaymentConfig, PaymentEnvelope, PaymentError, PaymentRequest, PaymentVerification, RouteConfig, SettlementRequest, SettlementResult, Signature, TokenInfo, TransactionHash, caip2NetworkSchema, eip712DomainSchema, ethereumAddressSchema, networkSchema, paymentConfigSchema, paymentEnvelopeSchema, paymentErrorSchema, paymentHeaderSchema, paymentRequestSchema, paymentVerificationSchema, priceSchema, routeConfigSchema, settlementRequestSchema, settlementResultSchema, signatureSchema, tokenInfoSchema, transactionHashSchema } from './payment.mjs';
3
+ import { z } from 'zod';
4
+
5
+ /**
6
+ * @perkos/validators
7
+ * Zod validation schemas for AI and payment services
8
+ */
9
+
10
+ /**
11
+ * Validate data against a schema and return typed result
12
+ */
13
+ declare function validate<T extends z.ZodSchema>(schema: T, data: unknown): z.infer<T>;
14
+ /**
15
+ * Safely validate data, returning result or null
16
+ */
17
+ declare function safeValidate<T extends z.ZodSchema>(schema: T, data: unknown): {
18
+ success: true;
19
+ data: z.infer<T>;
20
+ } | {
21
+ success: false;
22
+ error: z.ZodError;
23
+ };
24
+ /**
25
+ * Create a partial version of a schema (all fields optional)
26
+ */
27
+ declare function partial<T extends z.ZodRawShape>(schema: z.ZodObject<T>): z.ZodObject<{ [k in keyof T]: z.ZodOptional<T[k]>; }, z.UnknownKeysParam, z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{ [k in keyof T]: z.ZodOptional<T[k]>; }>, any> extends infer T_1 ? { [k_1 in keyof T_1]: T_1[k_1]; } : never, z.baseObjectInputType<{ [k in keyof T]: z.ZodOptional<T[k]>; }> extends infer T_2 ? { [k_2 in keyof T_2]: T_2[k_2]; } : never>;
28
+ /**
29
+ * Create a required version of a schema (all fields required)
30
+ */
31
+ declare function required<T extends z.ZodRawShape>(schema: z.ZodObject<T>): z.ZodObject<{ [k in keyof T]: z.deoptional<T[k]>; }, z.UnknownKeysParam, z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{ [k in keyof T]: z.deoptional<T[k]>; }>, any> extends infer T_1 ? { [k_1 in keyof T_1]: T_1[k_1]; } : never, z.baseObjectInputType<{ [k in keyof T]: z.deoptional<T[k]>; }> extends infer T_2 ? { [k_2 in keyof T_2]: T_2[k_2]; } : never>;
32
+ /**
33
+ * Format Zod errors for API responses
34
+ */
35
+ declare function formatZodErrors(error: z.ZodError): Array<{
36
+ path: string;
37
+ message: string;
38
+ code: string;
39
+ }>;
40
+
41
+ export { formatZodErrors, partial, required, safeValidate, validate };
@@ -0,0 +1,41 @@
1
+ export { APIDocsInput, AudioTranscribeInput, CodeGenerateInput, CodeReviewInput, ContentModerateInput, EmailGenerateInput, EntityExtractInput, ImageAnalyzeInput, ImageGenerateInput, OCRExtractInput, ProductDescriptionInput, QuizGenerateInput, RegexGenerateInput, SEOOptimizeInput, SQLQueryInput, SentimentAnalyzeInput, TextSimplifyInput, TextSummarizeInput, TextSynthesizeInput, TextTranslateInput, apiDocsSchema, audioTranscribeSchema, codeGenerateSchema, codeReviewSchema, contentModerateSchema, emailGenerateSchema, entityExtractSchema, imageAnalyzeSchema, imageGenerateSchema, ocrExtractSchema, productDescriptionSchema, quizGenerateSchema, regexGenerateSchema, sentimentAnalyzeSchema, seoOptimizeSchema, sqlQuerySchema, textSimplifySchema, textSummarizeSchema, textSynthesizeSchema, textTranslateSchema } from './ai.js';
2
+ export { CAIP2Network, EIP712Domain, EthereumAddress, Network, PaymentConfig, PaymentEnvelope, PaymentError, PaymentRequest, PaymentVerification, RouteConfig, SettlementRequest, SettlementResult, Signature, TokenInfo, TransactionHash, caip2NetworkSchema, eip712DomainSchema, ethereumAddressSchema, networkSchema, paymentConfigSchema, paymentEnvelopeSchema, paymentErrorSchema, paymentHeaderSchema, paymentRequestSchema, paymentVerificationSchema, priceSchema, routeConfigSchema, settlementRequestSchema, settlementResultSchema, signatureSchema, tokenInfoSchema, transactionHashSchema } from './payment.js';
3
+ import { z } from 'zod';
4
+
5
+ /**
6
+ * @perkos/validators
7
+ * Zod validation schemas for AI and payment services
8
+ */
9
+
10
+ /**
11
+ * Validate data against a schema and return typed result
12
+ */
13
+ declare function validate<T extends z.ZodSchema>(schema: T, data: unknown): z.infer<T>;
14
+ /**
15
+ * Safely validate data, returning result or null
16
+ */
17
+ declare function safeValidate<T extends z.ZodSchema>(schema: T, data: unknown): {
18
+ success: true;
19
+ data: z.infer<T>;
20
+ } | {
21
+ success: false;
22
+ error: z.ZodError;
23
+ };
24
+ /**
25
+ * Create a partial version of a schema (all fields optional)
26
+ */
27
+ declare function partial<T extends z.ZodRawShape>(schema: z.ZodObject<T>): z.ZodObject<{ [k in keyof T]: z.ZodOptional<T[k]>; }, z.UnknownKeysParam, z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{ [k in keyof T]: z.ZodOptional<T[k]>; }>, any> extends infer T_1 ? { [k_1 in keyof T_1]: T_1[k_1]; } : never, z.baseObjectInputType<{ [k in keyof T]: z.ZodOptional<T[k]>; }> extends infer T_2 ? { [k_2 in keyof T_2]: T_2[k_2]; } : never>;
28
+ /**
29
+ * Create a required version of a schema (all fields required)
30
+ */
31
+ declare function required<T extends z.ZodRawShape>(schema: z.ZodObject<T>): z.ZodObject<{ [k in keyof T]: z.deoptional<T[k]>; }, z.UnknownKeysParam, z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{ [k in keyof T]: z.deoptional<T[k]>; }>, any> extends infer T_1 ? { [k_1 in keyof T_1]: T_1[k_1]; } : never, z.baseObjectInputType<{ [k in keyof T]: z.deoptional<T[k]>; }> extends infer T_2 ? { [k_2 in keyof T_2]: T_2[k_2]; } : never>;
32
+ /**
33
+ * Format Zod errors for API responses
34
+ */
35
+ declare function formatZodErrors(error: z.ZodError): Array<{
36
+ path: string;
37
+ message: string;
38
+ code: string;
39
+ }>;
40
+
41
+ export { formatZodErrors, partial, required, safeValidate, validate };