@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.
- package/README.md +180 -0
- package/dist/ai.d.mts +307 -0
- package/dist/ai.d.ts +307 -0
- package/dist/ai.js +173 -0
- package/dist/ai.js.map +1 -0
- package/dist/ai.mjs +45 -0
- package/dist/ai.mjs.map +1 -0
- package/dist/chunk-2ZIZ7TXR.mjs +130 -0
- package/dist/chunk-2ZIZ7TXR.mjs.map +1 -0
- package/dist/chunk-AGE4J5TS.mjs +127 -0
- package/dist/chunk-AGE4J5TS.mjs.map +1 -0
- package/dist/index.d.mts +41 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.js +351 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +111 -0
- package/dist/index.mjs.map +1 -0
- package/dist/payment.d.mts +361 -0
- package/dist/payment.d.ts +361 -0
- package/dist/payment.js +167 -0
- package/dist/payment.js.map +1 -0
- package/dist/payment.mjs +39 -0
- package/dist/payment.mjs.map +1 -0
- package/package.json +66 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var src_exports = {};
|
|
22
|
+
__export(src_exports, {
|
|
23
|
+
apiDocsSchema: () => apiDocsSchema,
|
|
24
|
+
audioTranscribeSchema: () => audioTranscribeSchema,
|
|
25
|
+
caip2NetworkSchema: () => caip2NetworkSchema,
|
|
26
|
+
codeGenerateSchema: () => codeGenerateSchema,
|
|
27
|
+
codeReviewSchema: () => codeReviewSchema,
|
|
28
|
+
contentModerateSchema: () => contentModerateSchema,
|
|
29
|
+
eip712DomainSchema: () => eip712DomainSchema,
|
|
30
|
+
emailGenerateSchema: () => emailGenerateSchema,
|
|
31
|
+
entityExtractSchema: () => entityExtractSchema,
|
|
32
|
+
ethereumAddressSchema: () => ethereumAddressSchema,
|
|
33
|
+
formatZodErrors: () => formatZodErrors,
|
|
34
|
+
imageAnalyzeSchema: () => imageAnalyzeSchema,
|
|
35
|
+
imageGenerateSchema: () => imageGenerateSchema,
|
|
36
|
+
networkSchema: () => networkSchema,
|
|
37
|
+
ocrExtractSchema: () => ocrExtractSchema,
|
|
38
|
+
partial: () => partial,
|
|
39
|
+
paymentConfigSchema: () => paymentConfigSchema,
|
|
40
|
+
paymentEnvelopeSchema: () => paymentEnvelopeSchema,
|
|
41
|
+
paymentErrorSchema: () => paymentErrorSchema,
|
|
42
|
+
paymentHeaderSchema: () => paymentHeaderSchema,
|
|
43
|
+
paymentRequestSchema: () => paymentRequestSchema,
|
|
44
|
+
paymentVerificationSchema: () => paymentVerificationSchema,
|
|
45
|
+
priceSchema: () => priceSchema,
|
|
46
|
+
productDescriptionSchema: () => productDescriptionSchema,
|
|
47
|
+
quizGenerateSchema: () => quizGenerateSchema,
|
|
48
|
+
regexGenerateSchema: () => regexGenerateSchema,
|
|
49
|
+
required: () => required,
|
|
50
|
+
routeConfigSchema: () => routeConfigSchema,
|
|
51
|
+
safeValidate: () => safeValidate,
|
|
52
|
+
sentimentAnalyzeSchema: () => sentimentAnalyzeSchema,
|
|
53
|
+
seoOptimizeSchema: () => seoOptimizeSchema,
|
|
54
|
+
settlementRequestSchema: () => settlementRequestSchema,
|
|
55
|
+
settlementResultSchema: () => settlementResultSchema,
|
|
56
|
+
signatureSchema: () => signatureSchema,
|
|
57
|
+
sqlQuerySchema: () => sqlQuerySchema,
|
|
58
|
+
textSimplifySchema: () => textSimplifySchema,
|
|
59
|
+
textSummarizeSchema: () => textSummarizeSchema,
|
|
60
|
+
textSynthesizeSchema: () => textSynthesizeSchema,
|
|
61
|
+
textTranslateSchema: () => textTranslateSchema,
|
|
62
|
+
tokenInfoSchema: () => tokenInfoSchema,
|
|
63
|
+
transactionHashSchema: () => transactionHashSchema,
|
|
64
|
+
validate: () => validate
|
|
65
|
+
});
|
|
66
|
+
module.exports = __toCommonJS(src_exports);
|
|
67
|
+
|
|
68
|
+
// src/ai.ts
|
|
69
|
+
var import_zod = require("zod");
|
|
70
|
+
var imageAnalyzeSchema = import_zod.z.object({
|
|
71
|
+
image: import_zod.z.string().min(1, "Image URL is required"),
|
|
72
|
+
question: import_zod.z.string().optional(),
|
|
73
|
+
maxTokens: import_zod.z.number().int().positive().optional()
|
|
74
|
+
});
|
|
75
|
+
var imageGenerateSchema = import_zod.z.object({
|
|
76
|
+
prompt: import_zod.z.string().min(1, "Prompt is required"),
|
|
77
|
+
size: import_zod.z.enum(["1024x1024", "1792x1024", "1024x1792"]).optional().default("1024x1024"),
|
|
78
|
+
quality: import_zod.z.enum(["standard", "hd"]).optional().default("standard"),
|
|
79
|
+
style: import_zod.z.enum(["vivid", "natural"]).optional().default("vivid"),
|
|
80
|
+
n: import_zod.z.number().int().min(1).max(10).optional().default(1)
|
|
81
|
+
});
|
|
82
|
+
var ocrExtractSchema = import_zod.z.object({
|
|
83
|
+
image: import_zod.z.string().min(1, "Image URL is required"),
|
|
84
|
+
language: import_zod.z.string().optional()
|
|
85
|
+
});
|
|
86
|
+
var textSynthesizeSchema = import_zod.z.object({
|
|
87
|
+
text: import_zod.z.string().min(1, "Text is required").max(4096, "Text too long"),
|
|
88
|
+
voice: import_zod.z.enum(["alloy", "echo", "fable", "onyx", "nova", "shimmer"]).optional().default("alloy"),
|
|
89
|
+
speed: import_zod.z.number().min(0.25).max(4).optional().default(1)
|
|
90
|
+
});
|
|
91
|
+
var audioTranscribeSchema = import_zod.z.object({
|
|
92
|
+
audio: import_zod.z.string().min(1, "Audio URL is required"),
|
|
93
|
+
language: import_zod.z.string().optional(),
|
|
94
|
+
prompt: import_zod.z.string().optional()
|
|
95
|
+
});
|
|
96
|
+
var textSummarizeSchema = import_zod.z.object({
|
|
97
|
+
text: import_zod.z.string().min(1, "Text is required"),
|
|
98
|
+
length: import_zod.z.enum(["short", "medium", "long"]).optional().default("medium"),
|
|
99
|
+
format: import_zod.z.enum(["paragraph", "bullets"]).optional().default("paragraph")
|
|
100
|
+
});
|
|
101
|
+
var textTranslateSchema = import_zod.z.object({
|
|
102
|
+
text: import_zod.z.string().min(1, "Text is required"),
|
|
103
|
+
sourceLang: import_zod.z.string().min(2, "Source language is required"),
|
|
104
|
+
targetLang: import_zod.z.string().min(2, "Target language is required"),
|
|
105
|
+
formality: import_zod.z.enum(["formal", "informal", "neutral"]).optional()
|
|
106
|
+
});
|
|
107
|
+
var sentimentAnalyzeSchema = import_zod.z.object({
|
|
108
|
+
text: import_zod.z.string().min(1, "Text is required"),
|
|
109
|
+
detailed: import_zod.z.boolean().optional().default(false)
|
|
110
|
+
});
|
|
111
|
+
var contentModerateSchema = import_zod.z.object({
|
|
112
|
+
content: import_zod.z.string().min(1, "Content is required"),
|
|
113
|
+
categories: import_zod.z.array(import_zod.z.string()).optional()
|
|
114
|
+
});
|
|
115
|
+
var textSimplifySchema = import_zod.z.object({
|
|
116
|
+
text: import_zod.z.string().min(1, "Text is required"),
|
|
117
|
+
targetLevel: import_zod.z.enum(["elementary", "middle", "high", "college"]).optional().default("middle")
|
|
118
|
+
});
|
|
119
|
+
var entityExtractSchema = import_zod.z.object({
|
|
120
|
+
text: import_zod.z.string().min(1, "Text is required"),
|
|
121
|
+
types: import_zod.z.array(import_zod.z.enum(["person", "organization", "location", "date", "money", "product"])).optional()
|
|
122
|
+
});
|
|
123
|
+
var emailGenerateSchema = import_zod.z.object({
|
|
124
|
+
context: import_zod.z.string().min(1, "Context is required"),
|
|
125
|
+
tone: import_zod.z.enum(["professional", "friendly", "formal", "casual"]).optional().default("professional"),
|
|
126
|
+
length: import_zod.z.enum(["short", "medium", "long"]).optional().default("medium")
|
|
127
|
+
});
|
|
128
|
+
var productDescriptionSchema = import_zod.z.object({
|
|
129
|
+
product: import_zod.z.string().min(1, "Product name/description is required"),
|
|
130
|
+
features: import_zod.z.array(import_zod.z.string()).optional(),
|
|
131
|
+
audience: import_zod.z.string().optional(),
|
|
132
|
+
tone: import_zod.z.enum(["professional", "casual", "luxury", "technical"]).optional().default("professional")
|
|
133
|
+
});
|
|
134
|
+
var seoOptimizeSchema = import_zod.z.object({
|
|
135
|
+
content: import_zod.z.string().min(1, "Content is required"),
|
|
136
|
+
keywords: import_zod.z.array(import_zod.z.string()).optional(),
|
|
137
|
+
targetUrl: import_zod.z.string().url().optional()
|
|
138
|
+
});
|
|
139
|
+
var codeGenerateSchema = import_zod.z.object({
|
|
140
|
+
prompt: import_zod.z.string().min(1, "Prompt is required"),
|
|
141
|
+
language: import_zod.z.string().min(1, "Programming language is required"),
|
|
142
|
+
framework: import_zod.z.string().optional(),
|
|
143
|
+
style: import_zod.z.enum(["concise", "documented", "verbose"]).optional().default("documented")
|
|
144
|
+
});
|
|
145
|
+
var codeReviewSchema = import_zod.z.object({
|
|
146
|
+
code: import_zod.z.string().min(1, "Code is required"),
|
|
147
|
+
language: import_zod.z.string().optional(),
|
|
148
|
+
focus: import_zod.z.array(import_zod.z.enum(["security", "performance", "readability", "bugs", "best-practices"])).optional()
|
|
149
|
+
});
|
|
150
|
+
var sqlQuerySchema = import_zod.z.object({
|
|
151
|
+
description: import_zod.z.string().min(1, "Description is required"),
|
|
152
|
+
schema: import_zod.z.string().optional(),
|
|
153
|
+
dialect: import_zod.z.enum(["postgresql", "mysql", "sqlite", "mssql"]).optional().default("postgresql")
|
|
154
|
+
});
|
|
155
|
+
var regexGenerateSchema = import_zod.z.object({
|
|
156
|
+
description: import_zod.z.string().min(1, "Description is required"),
|
|
157
|
+
examples: import_zod.z.array(import_zod.z.object({
|
|
158
|
+
input: import_zod.z.string(),
|
|
159
|
+
shouldMatch: import_zod.z.boolean()
|
|
160
|
+
})).optional(),
|
|
161
|
+
flavor: import_zod.z.enum(["javascript", "python", "pcre"]).optional().default("javascript")
|
|
162
|
+
});
|
|
163
|
+
var apiDocsSchema = import_zod.z.object({
|
|
164
|
+
code: import_zod.z.string().min(1, "Code is required"),
|
|
165
|
+
format: import_zod.z.enum(["openapi", "markdown", "jsdoc"]).optional().default("markdown"),
|
|
166
|
+
includeExamples: import_zod.z.boolean().optional().default(true)
|
|
167
|
+
});
|
|
168
|
+
var quizGenerateSchema = import_zod.z.object({
|
|
169
|
+
topic: import_zod.z.string().min(1, "Topic is required"),
|
|
170
|
+
questionCount: import_zod.z.number().int().min(1).max(50).optional().default(10),
|
|
171
|
+
difficulty: import_zod.z.enum(["easy", "medium", "hard"]).optional().default("medium"),
|
|
172
|
+
type: import_zod.z.enum(["multiple-choice", "true-false", "mixed"]).optional().default("multiple-choice")
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
// src/payment.ts
|
|
176
|
+
var import_zod2 = require("zod");
|
|
177
|
+
var networkSchema = import_zod2.z.enum([
|
|
178
|
+
"avalanche",
|
|
179
|
+
"base",
|
|
180
|
+
"celo",
|
|
181
|
+
"avalanche-fuji",
|
|
182
|
+
"base-sepolia",
|
|
183
|
+
"celo-alfajores"
|
|
184
|
+
]);
|
|
185
|
+
var caip2NetworkSchema = import_zod2.z.string().regex(
|
|
186
|
+
/^eip155:\d+$/,
|
|
187
|
+
"Invalid CAIP-2 network format. Expected: eip155:<chainId>"
|
|
188
|
+
);
|
|
189
|
+
var ethereumAddressSchema = import_zod2.z.string().regex(
|
|
190
|
+
/^0x[a-fA-F0-9]{40}$/,
|
|
191
|
+
"Invalid Ethereum address"
|
|
192
|
+
);
|
|
193
|
+
var transactionHashSchema = import_zod2.z.string().regex(
|
|
194
|
+
/^0x[a-fA-F0-9]{64}$/,
|
|
195
|
+
"Invalid transaction hash"
|
|
196
|
+
);
|
|
197
|
+
var signatureSchema = import_zod2.z.string().regex(
|
|
198
|
+
/^0x[a-fA-F0-9]+$/,
|
|
199
|
+
"Invalid signature format"
|
|
200
|
+
);
|
|
201
|
+
var paymentEnvelopeSchema = import_zod2.z.object({
|
|
202
|
+
payload: import_zod2.z.object({
|
|
203
|
+
from: ethereumAddressSchema,
|
|
204
|
+
to: ethereumAddressSchema,
|
|
205
|
+
value: import_zod2.z.string().min(1, "Value is required"),
|
|
206
|
+
validAfter: import_zod2.z.number().int().nonnegative(),
|
|
207
|
+
validBefore: import_zod2.z.number().int().positive(),
|
|
208
|
+
nonce: import_zod2.z.string().min(1, "Nonce is required"),
|
|
209
|
+
network: caip2NetworkSchema
|
|
210
|
+
}),
|
|
211
|
+
signature: signatureSchema
|
|
212
|
+
});
|
|
213
|
+
var paymentHeaderSchema = import_zod2.z.string().regex(
|
|
214
|
+
/^x402\s+/i,
|
|
215
|
+
"Payment header must start with 'x402'"
|
|
216
|
+
);
|
|
217
|
+
var priceSchema = import_zod2.z.union([
|
|
218
|
+
import_zod2.z.string().regex(/^\d+(\.\d+)?$/, "Invalid price format"),
|
|
219
|
+
import_zod2.z.number().positive()
|
|
220
|
+
]);
|
|
221
|
+
var paymentConfigSchema = import_zod2.z.object({
|
|
222
|
+
recipientAddress: ethereumAddressSchema,
|
|
223
|
+
network: networkSchema,
|
|
224
|
+
tokenAddress: ethereumAddressSchema.optional(),
|
|
225
|
+
prices: import_zod2.z.record(import_zod2.z.string(), priceSchema)
|
|
226
|
+
});
|
|
227
|
+
var routeConfigSchema = import_zod2.z.object({
|
|
228
|
+
path: import_zod2.z.string().min(1, "Path is required"),
|
|
229
|
+
price: priceSchema,
|
|
230
|
+
description: import_zod2.z.string().optional()
|
|
231
|
+
});
|
|
232
|
+
var paymentRequestSchema = import_zod2.z.object({
|
|
233
|
+
amount: priceSchema,
|
|
234
|
+
recipient: ethereumAddressSchema,
|
|
235
|
+
network: networkSchema,
|
|
236
|
+
memo: import_zod2.z.string().optional(),
|
|
237
|
+
expiresAt: import_zod2.z.number().int().positive().optional()
|
|
238
|
+
});
|
|
239
|
+
var paymentVerificationSchema = import_zod2.z.object({
|
|
240
|
+
envelope: paymentEnvelopeSchema,
|
|
241
|
+
expectedAmount: import_zod2.z.string(),
|
|
242
|
+
expectedRecipient: ethereumAddressSchema,
|
|
243
|
+
tolerance: import_zod2.z.number().min(0).max(1).optional().default(0)
|
|
244
|
+
});
|
|
245
|
+
var tokenInfoSchema = import_zod2.z.object({
|
|
246
|
+
address: ethereumAddressSchema,
|
|
247
|
+
name: import_zod2.z.string(),
|
|
248
|
+
symbol: import_zod2.z.string(),
|
|
249
|
+
decimals: import_zod2.z.number().int().min(0).max(18),
|
|
250
|
+
chainId: import_zod2.z.number().int().positive()
|
|
251
|
+
});
|
|
252
|
+
var eip712DomainSchema = import_zod2.z.object({
|
|
253
|
+
name: import_zod2.z.string(),
|
|
254
|
+
version: import_zod2.z.string(),
|
|
255
|
+
chainId: import_zod2.z.number().int().positive(),
|
|
256
|
+
verifyingContract: ethereumAddressSchema
|
|
257
|
+
});
|
|
258
|
+
var settlementRequestSchema = import_zod2.z.object({
|
|
259
|
+
envelope: paymentEnvelopeSchema,
|
|
260
|
+
privateKey: import_zod2.z.string().optional()
|
|
261
|
+
});
|
|
262
|
+
var settlementResultSchema = import_zod2.z.object({
|
|
263
|
+
success: import_zod2.z.boolean(),
|
|
264
|
+
transactionHash: transactionHashSchema.optional(),
|
|
265
|
+
error: import_zod2.z.string().optional(),
|
|
266
|
+
gasUsed: import_zod2.z.string().optional()
|
|
267
|
+
});
|
|
268
|
+
var paymentErrorSchema = import_zod2.z.object({
|
|
269
|
+
error: import_zod2.z.string(),
|
|
270
|
+
code: import_zod2.z.enum([
|
|
271
|
+
"MISSING_PAYMENT",
|
|
272
|
+
"INVALID_SIGNATURE",
|
|
273
|
+
"INVALID_AMOUNT",
|
|
274
|
+
"EXPIRED_PAYMENT",
|
|
275
|
+
"INSUFFICIENT_BALANCE",
|
|
276
|
+
"SETTLEMENT_FAILED",
|
|
277
|
+
"NETWORK_MISMATCH"
|
|
278
|
+
]),
|
|
279
|
+
details: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.unknown()).optional()
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
// src/index.ts
|
|
283
|
+
function validate(schema, data) {
|
|
284
|
+
return schema.parse(data);
|
|
285
|
+
}
|
|
286
|
+
function safeValidate(schema, data) {
|
|
287
|
+
const result = schema.safeParse(data);
|
|
288
|
+
if (result.success) {
|
|
289
|
+
return { success: true, data: result.data };
|
|
290
|
+
}
|
|
291
|
+
return { success: false, error: result.error };
|
|
292
|
+
}
|
|
293
|
+
function partial(schema) {
|
|
294
|
+
return schema.partial();
|
|
295
|
+
}
|
|
296
|
+
function required(schema) {
|
|
297
|
+
return schema.required();
|
|
298
|
+
}
|
|
299
|
+
function formatZodErrors(error) {
|
|
300
|
+
return error.errors.map((e) => ({
|
|
301
|
+
path: e.path.join("."),
|
|
302
|
+
message: e.message,
|
|
303
|
+
code: e.code
|
|
304
|
+
}));
|
|
305
|
+
}
|
|
306
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
307
|
+
0 && (module.exports = {
|
|
308
|
+
apiDocsSchema,
|
|
309
|
+
audioTranscribeSchema,
|
|
310
|
+
caip2NetworkSchema,
|
|
311
|
+
codeGenerateSchema,
|
|
312
|
+
codeReviewSchema,
|
|
313
|
+
contentModerateSchema,
|
|
314
|
+
eip712DomainSchema,
|
|
315
|
+
emailGenerateSchema,
|
|
316
|
+
entityExtractSchema,
|
|
317
|
+
ethereumAddressSchema,
|
|
318
|
+
formatZodErrors,
|
|
319
|
+
imageAnalyzeSchema,
|
|
320
|
+
imageGenerateSchema,
|
|
321
|
+
networkSchema,
|
|
322
|
+
ocrExtractSchema,
|
|
323
|
+
partial,
|
|
324
|
+
paymentConfigSchema,
|
|
325
|
+
paymentEnvelopeSchema,
|
|
326
|
+
paymentErrorSchema,
|
|
327
|
+
paymentHeaderSchema,
|
|
328
|
+
paymentRequestSchema,
|
|
329
|
+
paymentVerificationSchema,
|
|
330
|
+
priceSchema,
|
|
331
|
+
productDescriptionSchema,
|
|
332
|
+
quizGenerateSchema,
|
|
333
|
+
regexGenerateSchema,
|
|
334
|
+
required,
|
|
335
|
+
routeConfigSchema,
|
|
336
|
+
safeValidate,
|
|
337
|
+
sentimentAnalyzeSchema,
|
|
338
|
+
seoOptimizeSchema,
|
|
339
|
+
settlementRequestSchema,
|
|
340
|
+
settlementResultSchema,
|
|
341
|
+
signatureSchema,
|
|
342
|
+
sqlQuerySchema,
|
|
343
|
+
textSimplifySchema,
|
|
344
|
+
textSummarizeSchema,
|
|
345
|
+
textSynthesizeSchema,
|
|
346
|
+
textTranslateSchema,
|
|
347
|
+
tokenInfoSchema,
|
|
348
|
+
transactionHashSchema,
|
|
349
|
+
validate
|
|
350
|
+
});
|
|
351
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/ai.ts","../src/payment.ts"],"sourcesContent":["/**\n * @perkos/validators\n * Zod validation schemas for AI and payment services\n */\n\n// Re-export all AI validators\nexport * from \"./ai\";\n\n// Re-export all payment validators\nexport * from \"./payment\";\n\n// Utility functions\nimport { z } from \"zod\";\n\n/**\n * Validate data against a schema and return typed result\n */\nexport function validate<T extends z.ZodSchema>(\n schema: T,\n data: unknown\n): z.infer<T> {\n return schema.parse(data);\n}\n\n/**\n * Safely validate data, returning result or null\n */\nexport function safeValidate<T extends z.ZodSchema>(\n schema: T,\n data: unknown\n): { success: true; data: z.infer<T> } | { success: false; error: z.ZodError } {\n const result = schema.safeParse(data);\n if (result.success) {\n return { success: true, data: result.data };\n }\n return { success: false, error: result.error };\n}\n\n/**\n * Create a partial version of a schema (all fields optional)\n */\nexport function partial<T extends z.ZodRawShape>(schema: z.ZodObject<T>) {\n return schema.partial();\n}\n\n/**\n * Create a required version of a schema (all fields required)\n */\nexport function required<T extends z.ZodRawShape>(schema: z.ZodObject<T>) {\n return schema.required();\n}\n\n/**\n * Format Zod errors for API responses\n */\nexport function formatZodErrors(error: z.ZodError): Array<{\n path: string;\n message: string;\n code: string;\n}> {\n return error.errors.map((e) => ({\n path: e.path.join(\".\"),\n message: e.message,\n code: e.code,\n }));\n}\n","/**\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","/**\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":["import_zod"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import {
|
|
2
|
+
apiDocsSchema,
|
|
3
|
+
audioTranscribeSchema,
|
|
4
|
+
codeGenerateSchema,
|
|
5
|
+
codeReviewSchema,
|
|
6
|
+
contentModerateSchema,
|
|
7
|
+
emailGenerateSchema,
|
|
8
|
+
entityExtractSchema,
|
|
9
|
+
imageAnalyzeSchema,
|
|
10
|
+
imageGenerateSchema,
|
|
11
|
+
ocrExtractSchema,
|
|
12
|
+
productDescriptionSchema,
|
|
13
|
+
quizGenerateSchema,
|
|
14
|
+
regexGenerateSchema,
|
|
15
|
+
sentimentAnalyzeSchema,
|
|
16
|
+
seoOptimizeSchema,
|
|
17
|
+
sqlQuerySchema,
|
|
18
|
+
textSimplifySchema,
|
|
19
|
+
textSummarizeSchema,
|
|
20
|
+
textSynthesizeSchema,
|
|
21
|
+
textTranslateSchema
|
|
22
|
+
} from "./chunk-2ZIZ7TXR.mjs";
|
|
23
|
+
import {
|
|
24
|
+
caip2NetworkSchema,
|
|
25
|
+
eip712DomainSchema,
|
|
26
|
+
ethereumAddressSchema,
|
|
27
|
+
networkSchema,
|
|
28
|
+
paymentConfigSchema,
|
|
29
|
+
paymentEnvelopeSchema,
|
|
30
|
+
paymentErrorSchema,
|
|
31
|
+
paymentHeaderSchema,
|
|
32
|
+
paymentRequestSchema,
|
|
33
|
+
paymentVerificationSchema,
|
|
34
|
+
priceSchema,
|
|
35
|
+
routeConfigSchema,
|
|
36
|
+
settlementRequestSchema,
|
|
37
|
+
settlementResultSchema,
|
|
38
|
+
signatureSchema,
|
|
39
|
+
tokenInfoSchema,
|
|
40
|
+
transactionHashSchema
|
|
41
|
+
} from "./chunk-AGE4J5TS.mjs";
|
|
42
|
+
|
|
43
|
+
// src/index.ts
|
|
44
|
+
function validate(schema, data) {
|
|
45
|
+
return schema.parse(data);
|
|
46
|
+
}
|
|
47
|
+
function safeValidate(schema, data) {
|
|
48
|
+
const result = schema.safeParse(data);
|
|
49
|
+
if (result.success) {
|
|
50
|
+
return { success: true, data: result.data };
|
|
51
|
+
}
|
|
52
|
+
return { success: false, error: result.error };
|
|
53
|
+
}
|
|
54
|
+
function partial(schema) {
|
|
55
|
+
return schema.partial();
|
|
56
|
+
}
|
|
57
|
+
function required(schema) {
|
|
58
|
+
return schema.required();
|
|
59
|
+
}
|
|
60
|
+
function formatZodErrors(error) {
|
|
61
|
+
return error.errors.map((e) => ({
|
|
62
|
+
path: e.path.join("."),
|
|
63
|
+
message: e.message,
|
|
64
|
+
code: e.code
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
export {
|
|
68
|
+
apiDocsSchema,
|
|
69
|
+
audioTranscribeSchema,
|
|
70
|
+
caip2NetworkSchema,
|
|
71
|
+
codeGenerateSchema,
|
|
72
|
+
codeReviewSchema,
|
|
73
|
+
contentModerateSchema,
|
|
74
|
+
eip712DomainSchema,
|
|
75
|
+
emailGenerateSchema,
|
|
76
|
+
entityExtractSchema,
|
|
77
|
+
ethereumAddressSchema,
|
|
78
|
+
formatZodErrors,
|
|
79
|
+
imageAnalyzeSchema,
|
|
80
|
+
imageGenerateSchema,
|
|
81
|
+
networkSchema,
|
|
82
|
+
ocrExtractSchema,
|
|
83
|
+
partial,
|
|
84
|
+
paymentConfigSchema,
|
|
85
|
+
paymentEnvelopeSchema,
|
|
86
|
+
paymentErrorSchema,
|
|
87
|
+
paymentHeaderSchema,
|
|
88
|
+
paymentRequestSchema,
|
|
89
|
+
paymentVerificationSchema,
|
|
90
|
+
priceSchema,
|
|
91
|
+
productDescriptionSchema,
|
|
92
|
+
quizGenerateSchema,
|
|
93
|
+
regexGenerateSchema,
|
|
94
|
+
required,
|
|
95
|
+
routeConfigSchema,
|
|
96
|
+
safeValidate,
|
|
97
|
+
sentimentAnalyzeSchema,
|
|
98
|
+
seoOptimizeSchema,
|
|
99
|
+
settlementRequestSchema,
|
|
100
|
+
settlementResultSchema,
|
|
101
|
+
signatureSchema,
|
|
102
|
+
sqlQuerySchema,
|
|
103
|
+
textSimplifySchema,
|
|
104
|
+
textSummarizeSchema,
|
|
105
|
+
textSynthesizeSchema,
|
|
106
|
+
textTranslateSchema,
|
|
107
|
+
tokenInfoSchema,
|
|
108
|
+
transactionHashSchema,
|
|
109
|
+
validate
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @perkos/validators\n * Zod validation schemas for AI and payment services\n */\n\n// Re-export all AI validators\nexport * from \"./ai\";\n\n// Re-export all payment validators\nexport * from \"./payment\";\n\n// Utility functions\nimport { z } from \"zod\";\n\n/**\n * Validate data against a schema and return typed result\n */\nexport function validate<T extends z.ZodSchema>(\n schema: T,\n data: unknown\n): z.infer<T> {\n return schema.parse(data);\n}\n\n/**\n * Safely validate data, returning result or null\n */\nexport function safeValidate<T extends z.ZodSchema>(\n schema: T,\n data: unknown\n): { success: true; data: z.infer<T> } | { success: false; error: z.ZodError } {\n const result = schema.safeParse(data);\n if (result.success) {\n return { success: true, data: result.data };\n }\n return { success: false, error: result.error };\n}\n\n/**\n * Create a partial version of a schema (all fields optional)\n */\nexport function partial<T extends z.ZodRawShape>(schema: z.ZodObject<T>) {\n return schema.partial();\n}\n\n/**\n * Create a required version of a schema (all fields required)\n */\nexport function required<T extends z.ZodRawShape>(schema: z.ZodObject<T>) {\n return schema.required();\n}\n\n/**\n * Format Zod errors for API responses\n */\nexport function formatZodErrors(error: z.ZodError): Array<{\n path: string;\n message: string;\n code: string;\n}> {\n return error.errors.map((e) => ({\n path: e.path.join(\".\"),\n message: e.message,\n code: e.code,\n }));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBO,SAAS,SACd,QACA,MACY;AACZ,SAAO,OAAO,MAAM,IAAI;AAC1B;AAKO,SAAS,aACd,QACA,MAC6E;AAC7E,QAAM,SAAS,OAAO,UAAU,IAAI;AACpC,MAAI,OAAO,SAAS;AAClB,WAAO,EAAE,SAAS,MAAM,MAAM,OAAO,KAAK;AAAA,EAC5C;AACA,SAAO,EAAE,SAAS,OAAO,OAAO,OAAO,MAAM;AAC/C;AAKO,SAAS,QAAiC,QAAwB;AACvE,SAAO,OAAO,QAAQ;AACxB;AAKO,SAAS,SAAkC,QAAwB;AACxE,SAAO,OAAO,SAAS;AACzB;AAKO,SAAS,gBAAgB,OAI7B;AACD,SAAO,MAAM,OAAO,IAAI,CAAC,OAAO;AAAA,IAC9B,MAAM,EAAE,KAAK,KAAK,GAAG;AAAA,IACrB,SAAS,EAAE;AAAA,IACX,MAAM,EAAE;AAAA,EACV,EAAE;AACJ;","names":[]}
|