@retab/node 0.0.46 → 0.0.52
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 +8 -215
- package/dist/api/client.d.ts +2 -2
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +2 -2
- package/dist/api/documents/client.d.ts +3 -3
- package/dist/api/documents/client.d.ts.map +1 -1
- package/dist/api/documents/client.js +3 -3
- package/dist/api/projects/client.d.ts +15 -0
- package/dist/api/projects/client.d.ts.map +1 -0
- package/dist/api/projects/client.js +43 -0
- package/dist/api/projects/documents/client.d.ts +12 -0
- package/dist/api/projects/documents/client.d.ts.map +1 -0
- package/dist/api/projects/documents/client.js +39 -0
- package/dist/api/projects/iterations/client.d.ts +17 -0
- package/dist/api/projects/iterations/client.d.ts.map +1 -0
- package/dist/api/projects/iterations/client.js +64 -0
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +6 -1
- package/dist/generated_types.d.ts +17837 -40090
- package/dist/generated_types.d.ts.map +1 -1
- package/dist/generated_types.js +309 -979
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/types.d.ts +188 -80
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +22 -1
- package/package.json +6 -9
- package/dist/api/consensus/client.d.ts +0 -7
- package/dist/api/consensus/client.d.ts.map +0 -1
- package/dist/api/consensus/client.js +0 -14
- package/dist/errors.d.ts +0 -34
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -53
- package/dist/resource.d.ts +0 -12
- package/dist/resource.d.ts.map +0 -1
- package/dist/resource.js +0 -19
- package/dist/resources/consensus/completions.d.ts +0 -66
- package/dist/resources/consensus/completions.d.ts.map +0 -1
- package/dist/resources/consensus/completions.js +0 -84
- package/dist/resources/consensus/index.d.ts +0 -72
- package/dist/resources/consensus/index.d.ts.map +0 -1
- package/dist/resources/consensus/index.js +0 -76
- package/dist/resources/consensus/responses.d.ts +0 -69
- package/dist/resources/consensus/responses.d.ts.map +0 -1
- package/dist/resources/consensus/responses.js +0 -99
- package/dist/resources/documents/extractions.d.ts +0 -74
- package/dist/resources/documents/extractions.d.ts.map +0 -1
- package/dist/resources/documents/extractions.js +0 -196
- package/dist/resources/documents/index.d.ts +0 -21
- package/dist/resources/documents/index.d.ts.map +0 -1
- package/dist/resources/documents/index.js +0 -55
- package/dist/resources/evaluations/documents.d.ts +0 -40
- package/dist/resources/evaluations/documents.d.ts.map +0 -1
- package/dist/resources/evaluations/documents.js +0 -123
- package/dist/resources/evaluations/index.d.ts +0 -14
- package/dist/resources/evaluations/index.d.ts.map +0 -1
- package/dist/resources/evaluations/index.js +0 -17
- package/dist/resources/evaluations/iterations.d.ts +0 -50
- package/dist/resources/evaluations/iterations.d.ts.map +0 -1
- package/dist/resources/evaluations/iterations.js +0 -156
- package/dist/resources/files.d.ts +0 -82
- package/dist/resources/files.d.ts.map +0 -1
- package/dist/resources/files.js +0 -150
- package/dist/resources/finetuning.d.ts +0 -105
- package/dist/resources/finetuning.d.ts.map +0 -1
- package/dist/resources/finetuning.js +0 -181
- package/dist/resources/index.d.ts +0 -11
- package/dist/resources/index.d.ts.map +0 -1
- package/dist/resources/index.js +0 -10
- package/dist/resources/models.d.ts +0 -57
- package/dist/resources/models.d.ts.map +0 -1
- package/dist/resources/models.js +0 -72
- package/dist/resources/processors/automations/endpoints.d.ts +0 -90
- package/dist/resources/processors/automations/endpoints.d.ts.map +0 -1
- package/dist/resources/processors/automations/endpoints.js +0 -145
- package/dist/resources/processors/automations/index.d.ts +0 -7
- package/dist/resources/processors/automations/index.d.ts.map +0 -1
- package/dist/resources/processors/automations/index.js +0 -6
- package/dist/resources/processors/automations/links.d.ts +0 -90
- package/dist/resources/processors/automations/links.d.ts.map +0 -1
- package/dist/resources/processors/automations/links.js +0 -149
- package/dist/resources/processors/automations/logs.d.ts +0 -35
- package/dist/resources/processors/automations/logs.d.ts.map +0 -1
- package/dist/resources/processors/automations/logs.js +0 -60
- package/dist/resources/processors/automations/mailboxes.d.ts +0 -102
- package/dist/resources/processors/automations/mailboxes.d.ts.map +0 -1
- package/dist/resources/processors/automations/mailboxes.js +0 -157
- package/dist/resources/processors/automations/outlook.d.ts +0 -114
- package/dist/resources/processors/automations/outlook.d.ts.map +0 -1
- package/dist/resources/processors/automations/outlook.js +0 -170
- package/dist/resources/processors/automations/tests.d.ts +0 -58
- package/dist/resources/processors/automations/tests.d.ts.map +0 -1
- package/dist/resources/processors/automations/tests.js +0 -90
- package/dist/resources/processors/index.d.ts +0 -303
- package/dist/resources/processors/index.d.ts.map +0 -1
- package/dist/resources/processors/index.js +0 -261
- package/dist/resources/schemas.d.ts +0 -63
- package/dist/resources/schemas.d.ts.map +0 -1
- package/dist/resources/schemas.js +0 -183
- package/dist/resources/secrets/external_api_keys.d.ts +0 -61
- package/dist/resources/secrets/external_api_keys.d.ts.map +0 -1
- package/dist/resources/secrets/external_api_keys.js +0 -120
- package/dist/resources/secrets/index.d.ts +0 -14
- package/dist/resources/secrets/index.d.ts.map +0 -1
- package/dist/resources/secrets/index.js +0 -17
- package/dist/resources/secrets/webhooks.d.ts +0 -73
- package/dist/resources/secrets/webhooks.d.ts.map +0 -1
- package/dist/resources/secrets/webhooks.js +0 -145
- package/dist/resources/usage.d.ts +0 -223
- package/dist/resources/usage.d.ts.map +0 -1
- package/dist/resources/usage.js +0 -310
- package/dist/types/ai_models.d.ts +0 -389
- package/dist/types/ai_models.d.ts.map +0 -1
- package/dist/types/ai_models.js +0 -145
- package/dist/types/automations/cron.d.ts +0 -28
- package/dist/types/automations/cron.d.ts.map +0 -1
- package/dist/types/automations/cron.js +0 -1
- package/dist/types/automations/endpoints.d.ts +0 -13
- package/dist/types/automations/endpoints.d.ts.map +0 -1
- package/dist/types/automations/endpoints.js +0 -1
- package/dist/types/automations/index.d.ts +0 -7
- package/dist/types/automations/index.d.ts.map +0 -1
- package/dist/types/automations/index.js +0 -6
- package/dist/types/automations/links.d.ts +0 -15
- package/dist/types/automations/links.d.ts.map +0 -1
- package/dist/types/automations/links.js +0 -1
- package/dist/types/automations/mailboxes.d.ts +0 -18
- package/dist/types/automations/mailboxes.d.ts.map +0 -1
- package/dist/types/automations/mailboxes.js +0 -1
- package/dist/types/automations/outlook.d.ts +0 -37
- package/dist/types/automations/outlook.d.ts.map +0 -1
- package/dist/types/automations/outlook.js +0 -1
- package/dist/types/automations/webhooks.d.ts +0 -13
- package/dist/types/automations/webhooks.d.ts.map +0 -1
- package/dist/types/automations/webhooks.js +0 -1
- package/dist/types/browser_canvas.d.ts +0 -4
- package/dist/types/browser_canvas.d.ts.map +0 -1
- package/dist/types/browser_canvas.js +0 -2
- package/dist/types/chat.d.ts +0 -99
- package/dist/types/chat.d.ts.map +0 -1
- package/dist/types/chat.js +0 -20
- package/dist/types/consensus.d.ts +0 -10
- package/dist/types/consensus.d.ts.map +0 -1
- package/dist/types/consensus.js +0 -1
- package/dist/types/db/annotations.d.ts +0 -108
- package/dist/types/db/annotations.d.ts.map +0 -1
- package/dist/types/db/annotations.js +0 -6
- package/dist/types/db/files.d.ts +0 -133
- package/dist/types/db/files.d.ts.map +0 -1
- package/dist/types/db/files.js +0 -5
- package/dist/types/documents/extractions.d.ts +0 -1849
- package/dist/types/documents/extractions.d.ts.map +0 -1
- package/dist/types/documents/extractions.js +0 -211
- package/dist/types/documents/processing.d.ts +0 -249
- package/dist/types/documents/processing.d.ts.map +0 -1
- package/dist/types/documents/processing.js +0 -6
- package/dist/types/evaluations/iterations.d.ts +0 -41
- package/dist/types/evaluations/iterations.d.ts.map +0 -1
- package/dist/types/evaluations/iterations.js +0 -1
- package/dist/types/jobs/base.d.ts +0 -162
- package/dist/types/jobs/base.d.ts.map +0 -1
- package/dist/types/jobs/base.js +0 -6
- package/dist/types/jobs/specialized.d.ts +0 -200
- package/dist/types/jobs/specialized.d.ts.map +0 -1
- package/dist/types/jobs/specialized.js +0 -37
- package/dist/types/logs.d.ts +0 -92
- package/dist/types/logs.d.ts.map +0 -1
- package/dist/types/logs.js +0 -1
- package/dist/types/mime.d.ts +0 -426
- package/dist/types/mime.d.ts.map +0 -1
- package/dist/types/mime.js +0 -48
- package/dist/types/modalities.d.ts +0 -31
- package/dist/types/modalities.d.ts.map +0 -1
- package/dist/types/modalities.js +0 -109
- package/dist/types/pagination.d.ts +0 -5
- package/dist/types/pagination.d.ts.map +0 -1
- package/dist/types/pagination.js +0 -1
- package/dist/types/schemas/enhancement.d.ts +0 -250
- package/dist/types/schemas/enhancement.d.ts.map +0 -1
- package/dist/types/schemas/enhancement.js +0 -6
- package/dist/types/schemas/generate.d.ts +0 -160
- package/dist/types/schemas/generate.d.ts.map +0 -1
- package/dist/types/schemas/generate.js +0 -19
- package/dist/types/schemas/object.d.ts +0 -116
- package/dist/types/schemas/object.d.ts.map +0 -1
- package/dist/types/schemas/object.js +0 -861
- package/dist/types/secrets/external_api_keys.d.ts +0 -27
- package/dist/types/secrets/external_api_keys.d.ts.map +0 -1
- package/dist/types/secrets/external_api_keys.js +0 -11
- package/dist/types/secrets/index.d.ts +0 -2
- package/dist/types/secrets/index.d.ts.map +0 -1
- package/dist/types/secrets/index.js +0 -1
- package/dist/types/standards.d.ts +0 -37
- package/dist/types/standards.d.ts.map +0 -1
- package/dist/types/standards.js +0 -1
- package/dist/utils/ai_models.d.ts +0 -10
- package/dist/utils/ai_models.d.ts.map +0 -1
- package/dist/utils/ai_models.js +0 -183
- package/dist/utils/batch_processing.d.ts +0 -227
- package/dist/utils/batch_processing.d.ts.map +0 -1
- package/dist/utils/batch_processing.js +0 -268
- package/dist/utils/benchmarking.d.ts +0 -115
- package/dist/utils/benchmarking.d.ts.map +0 -1
- package/dist/utils/benchmarking.js +0 -355
- package/dist/utils/chat.d.ts +0 -70
- package/dist/utils/chat.d.ts.map +0 -1
- package/dist/utils/chat.js +0 -79
- package/dist/utils/cost_calculation.d.ts +0 -26
- package/dist/utils/cost_calculation.d.ts.map +0 -1
- package/dist/utils/cost_calculation.js +0 -99
- package/dist/utils/datasets.d.ts +0 -135
- package/dist/utils/datasets.d.ts.map +0 -1
- package/dist/utils/datasets.js +0 -359
- package/dist/utils/display.d.ts +0 -108
- package/dist/utils/display.d.ts.map +0 -1
- package/dist/utils/display.js +0 -244
- package/dist/utils/hash.d.ts +0 -18
- package/dist/utils/hash.d.ts.map +0 -1
- package/dist/utils/hash.js +0 -31
- package/dist/utils/hashing.d.ts +0 -18
- package/dist/utils/hashing.d.ts.map +0 -1
- package/dist/utils/hashing.js +0 -28
- package/dist/utils/index.d.ts +0 -8
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -10
- package/dist/utils/json_schema.d.ts +0 -18
- package/dist/utils/json_schema.d.ts.map +0 -1
- package/dist/utils/json_schema.js +0 -334
- package/dist/utils/json_schema_utils.d.ts +0 -42
- package/dist/utils/json_schema_utils.d.ts.map +0 -1
- package/dist/utils/json_schema_utils.js +0 -212
- package/dist/utils/jsonl.d.ts +0 -60
- package/dist/utils/jsonl.d.ts.map +0 -1
- package/dist/utils/jsonl.js +0 -259
- package/dist/utils/mime.d.ts +0 -6
- package/dist/utils/mime.d.ts.map +0 -1
- package/dist/utils/mime.js +0 -129
- package/dist/utils/model_cards.d.ts +0 -219
- package/dist/utils/model_cards.d.ts.map +0 -1
- package/dist/utils/model_cards.js +0 -462
- package/dist/utils/prompt_optimization.d.ts +0 -96
- package/dist/utils/prompt_optimization.d.ts.map +0 -1
- package/dist/utils/prompt_optimization.js +0 -275
- package/dist/utils/responses.d.ts +0 -35
- package/dist/utils/responses.d.ts.map +0 -1
- package/dist/utils/responses.js +0 -37
- package/dist/utils/stream.d.ts +0 -13
- package/dist/utils/stream.d.ts.map +0 -1
- package/dist/utils/stream.js +0 -64
- package/dist/utils/stream_context_managers.d.ts +0 -147
- package/dist/utils/stream_context_managers.d.ts.map +0 -1
- package/dist/utils/stream_context_managers.js +0 -380
- package/dist/utils/usage.d.ts +0 -57
- package/dist/utils/usage.d.ts.map +0 -1
- package/dist/utils/usage.js +0 -97
- package/dist/utils/webhook_secrets.d.ts +0 -59
- package/dist/utils/webhook_secrets.d.ts.map +0 -1
- package/dist/utils/webhook_secrets.js +0 -107
- package/dist/utils/zod_to_json_schema.d.ts +0 -11
- package/dist/utils/zod_to_json_schema.d.ts.map +0 -1
- package/dist/utils/zod_to_json_schema.js +0 -123
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { createHash, createHmac, timingSafeEqual } from 'crypto';
|
|
2
|
-
/**
|
|
3
|
-
* Generate webhook signature for payload
|
|
4
|
-
*/
|
|
5
|
-
export function generateSignature(payload, secret, timestamp, encoding = 'hex') {
|
|
6
|
-
const ts = timestamp || Math.floor(Date.now() / 1000);
|
|
7
|
-
const payloadString = Buffer.isBuffer(payload) ? payload.toString('utf8') : payload;
|
|
8
|
-
const signedPayload = `${ts}.${payloadString}`;
|
|
9
|
-
const hmac = createHmac('sha256', secret);
|
|
10
|
-
hmac.update(signedPayload);
|
|
11
|
-
return hmac.digest(encoding);
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Verify webhook signature
|
|
15
|
-
*/
|
|
16
|
-
export function verifySignature(payload, signature, secret, timestamp, config = {}) {
|
|
17
|
-
const { tolerance = 300, encoding = 'hex' } = config; // 5 minute default tolerance
|
|
18
|
-
try {
|
|
19
|
-
const ts = timestamp || Math.floor(Date.now() / 1000);
|
|
20
|
-
const expectedSignature = generateSignature(payload, secret, ts, encoding);
|
|
21
|
-
// Use timing-safe comparison to prevent timing attacks
|
|
22
|
-
const sigBuffer = Buffer.from(signature, encoding);
|
|
23
|
-
const expectedBuffer = Buffer.from(expectedSignature, encoding);
|
|
24
|
-
if (sigBuffer.length !== expectedBuffer.length) {
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
const isSignatureValid = timingSafeEqual(sigBuffer, expectedBuffer);
|
|
28
|
-
// Check timestamp tolerance if provided
|
|
29
|
-
if (timestamp && tolerance > 0) {
|
|
30
|
-
const now = Math.floor(Date.now() / 1000);
|
|
31
|
-
const isTimestampValid = Math.abs(now - timestamp) <= tolerance;
|
|
32
|
-
return isSignatureValid && isTimestampValid;
|
|
33
|
-
}
|
|
34
|
-
return isSignatureValid;
|
|
35
|
-
}
|
|
36
|
-
catch (error) {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Parse webhook headers for signature and timestamp
|
|
42
|
-
*/
|
|
43
|
-
export function parseWebhookHeaders(headers) {
|
|
44
|
-
const signature = headers['x-webhook-signature'] ||
|
|
45
|
-
headers['x-retab-signature'] ||
|
|
46
|
-
headers['signature'];
|
|
47
|
-
const timestampHeader = headers['x-webhook-timestamp'] ||
|
|
48
|
-
headers['x-retab-timestamp'] ||
|
|
49
|
-
headers['timestamp'];
|
|
50
|
-
const timestamp = timestampHeader ? parseInt(timestampHeader, 10) : undefined;
|
|
51
|
-
return { signature, timestamp };
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Verify webhook request
|
|
55
|
-
*/
|
|
56
|
-
export function verifyWebhookRequest(payload, headers, secret, config = {}) {
|
|
57
|
-
const { signature, timestamp } = parseWebhookHeaders(headers);
|
|
58
|
-
if (!signature) {
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
61
|
-
return verifySignature(payload, signature, secret, timestamp, config);
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Generate webhook secret
|
|
65
|
-
*/
|
|
66
|
-
export function generateWebhookSecret(length = 32) {
|
|
67
|
-
return createHash('sha256')
|
|
68
|
-
.update(Math.random().toString())
|
|
69
|
-
.update(Date.now().toString())
|
|
70
|
-
.digest('hex')
|
|
71
|
-
.slice(0, length);
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Create webhook signature header
|
|
75
|
-
*/
|
|
76
|
-
export function createSignatureHeader(payload, secret, encoding = 'hex') {
|
|
77
|
-
const timestamp = Math.floor(Date.now() / 1000);
|
|
78
|
-
const signature = generateSignature(payload, secret, timestamp, encoding);
|
|
79
|
-
return { signature, timestamp };
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Webhook middleware for Express-like frameworks
|
|
83
|
-
*/
|
|
84
|
-
export function webhookMiddleware(secret, config = {}) {
|
|
85
|
-
return (req, res, next) => {
|
|
86
|
-
try {
|
|
87
|
-
const payload = req.rawBody || req.body;
|
|
88
|
-
const headers = req.headers;
|
|
89
|
-
if (!verifyWebhookRequest(payload, headers, secret, config)) {
|
|
90
|
-
return res.status(401).json({ error: 'Invalid webhook signature' });
|
|
91
|
-
}
|
|
92
|
-
next();
|
|
93
|
-
}
|
|
94
|
-
catch (error) {
|
|
95
|
-
return res.status(400).json({ error: 'Webhook verification failed' });
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
export default {
|
|
100
|
-
generateSignature,
|
|
101
|
-
verifySignature,
|
|
102
|
-
parseWebhookHeaders,
|
|
103
|
-
verifyWebhookRequest,
|
|
104
|
-
generateWebhookSecret,
|
|
105
|
-
createSignatureHeader,
|
|
106
|
-
webhookMiddleware,
|
|
107
|
-
};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
/**
|
|
3
|
-
* Convert a Zod schema to JSON Schema.
|
|
4
|
-
* This is a basic implementation that handles common Zod types.
|
|
5
|
-
*/
|
|
6
|
-
export declare function zodToJsonSchema(zodSchema: z.ZodType<any>): Record<string, any>;
|
|
7
|
-
/**
|
|
8
|
-
* Extract descriptions from Zod schema and convert them to field descriptions.
|
|
9
|
-
*/
|
|
10
|
-
export declare function extractZodDescriptions(zodSchema: z.ZodType<any>): Record<string, string>;
|
|
11
|
-
//# sourceMappingURL=zod_to_json_schema.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zod_to_json_schema.d.ts","sourceRoot":"","sources":["../../src/utils/zod_to_json_schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA8G9E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0BxF"}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Convert a Zod schema to JSON Schema.
|
|
3
|
-
* This is a basic implementation that handles common Zod types.
|
|
4
|
-
*/
|
|
5
|
-
export function zodToJsonSchema(zodSchema) {
|
|
6
|
-
function convertZodType(schema) {
|
|
7
|
-
const def = schema._def;
|
|
8
|
-
switch (def.typeName) {
|
|
9
|
-
case 'ZodString':
|
|
10
|
-
const stringSchema = { type: 'string' };
|
|
11
|
-
if (def.description) {
|
|
12
|
-
stringSchema.description = def.description;
|
|
13
|
-
}
|
|
14
|
-
return stringSchema;
|
|
15
|
-
case 'ZodNumber':
|
|
16
|
-
const numberSchema = { type: 'number' };
|
|
17
|
-
if (def.description) {
|
|
18
|
-
numberSchema.description = def.description;
|
|
19
|
-
}
|
|
20
|
-
return numberSchema;
|
|
21
|
-
case 'ZodBoolean':
|
|
22
|
-
const booleanSchema = { type: 'boolean' };
|
|
23
|
-
if (def.description) {
|
|
24
|
-
booleanSchema.description = def.description;
|
|
25
|
-
}
|
|
26
|
-
return booleanSchema;
|
|
27
|
-
case 'ZodArray':
|
|
28
|
-
return {
|
|
29
|
-
type: 'array',
|
|
30
|
-
items: convertZodType(def.type),
|
|
31
|
-
...(def.description && { description: def.description })
|
|
32
|
-
};
|
|
33
|
-
case 'ZodObject':
|
|
34
|
-
const properties = {};
|
|
35
|
-
const required = [];
|
|
36
|
-
for (const [key, value] of Object.entries(def.shape())) {
|
|
37
|
-
properties[key] = convertZodType(value);
|
|
38
|
-
// Check if the field is required (not optional)
|
|
39
|
-
const zodValue = value;
|
|
40
|
-
if (!zodValue._def.typeName?.includes('Optional') &&
|
|
41
|
-
zodValue._def.typeName !== 'ZodOptional') {
|
|
42
|
-
required.push(key);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
const objectSchema = {
|
|
46
|
-
type: 'object',
|
|
47
|
-
properties,
|
|
48
|
-
additionalProperties: false
|
|
49
|
-
};
|
|
50
|
-
if (required.length > 0) {
|
|
51
|
-
objectSchema.required = required;
|
|
52
|
-
}
|
|
53
|
-
if (def.description) {
|
|
54
|
-
objectSchema.description = def.description;
|
|
55
|
-
}
|
|
56
|
-
return objectSchema;
|
|
57
|
-
case 'ZodOptional':
|
|
58
|
-
return convertZodType(def.innerType);
|
|
59
|
-
case 'ZodNullable':
|
|
60
|
-
const innerSchema = convertZodType(def.innerType);
|
|
61
|
-
return {
|
|
62
|
-
...innerSchema,
|
|
63
|
-
nullable: true
|
|
64
|
-
};
|
|
65
|
-
case 'ZodUnion':
|
|
66
|
-
return {
|
|
67
|
-
anyOf: def.options.map((option) => convertZodType(option))
|
|
68
|
-
};
|
|
69
|
-
case 'ZodEnum':
|
|
70
|
-
return {
|
|
71
|
-
type: 'string',
|
|
72
|
-
enum: def.values,
|
|
73
|
-
...(def.description && { description: def.description })
|
|
74
|
-
};
|
|
75
|
-
case 'ZodLiteral':
|
|
76
|
-
return {
|
|
77
|
-
type: typeof def.value,
|
|
78
|
-
const: def.value,
|
|
79
|
-
...(def.description && { description: def.description })
|
|
80
|
-
};
|
|
81
|
-
case 'ZodRecord':
|
|
82
|
-
return {
|
|
83
|
-
type: 'object',
|
|
84
|
-
additionalProperties: convertZodType(def.valueType),
|
|
85
|
-
...(def.description && { description: def.description })
|
|
86
|
-
};
|
|
87
|
-
default:
|
|
88
|
-
// Fallback for unknown types
|
|
89
|
-
return {
|
|
90
|
-
type: 'string',
|
|
91
|
-
description: def.description || `Unsupported Zod type: ${def.typeName}`
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
return convertZodType(zodSchema);
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Extract descriptions from Zod schema and convert them to field descriptions.
|
|
99
|
-
*/
|
|
100
|
-
export function extractZodDescriptions(zodSchema) {
|
|
101
|
-
const descriptions = {};
|
|
102
|
-
function extractFromType(schema, path = '') {
|
|
103
|
-
const def = schema._def;
|
|
104
|
-
if (def.typeName === 'ZodObject') {
|
|
105
|
-
for (const [key, value] of Object.entries(def.shape())) {
|
|
106
|
-
const currentPath = path ? `${path}.${key}` : key;
|
|
107
|
-
const zodValue = value;
|
|
108
|
-
if (zodValue._def.description) {
|
|
109
|
-
descriptions[currentPath] = zodValue._def.description;
|
|
110
|
-
}
|
|
111
|
-
extractFromType(zodValue, currentPath);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
else if (def.typeName === 'ZodOptional' || def.typeName === 'ZodNullable') {
|
|
115
|
-
extractFromType(def.innerType, path);
|
|
116
|
-
}
|
|
117
|
-
else if (def.typeName === 'ZodArray') {
|
|
118
|
-
extractFromType(def.type, path);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
extractFromType(zodSchema);
|
|
122
|
-
return descriptions;
|
|
123
|
-
}
|