@retab/node 0.0.0-reserved → 0.0.43
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 +293 -2
- package/dist/api/client.d.ts +15 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +16 -0
- package/dist/api/consensus/client.d.ts +7 -0
- package/dist/api/consensus/client.d.ts.map +1 -0
- package/dist/api/consensus/client.js +14 -0
- package/dist/api/deployments/client.d.ts +20 -0
- package/dist/api/deployments/client.d.ts.map +1 -0
- package/dist/api/deployments/client.js +23 -0
- package/dist/api/documents/client.d.ts +10 -0
- package/dist/api/documents/client.d.ts.map +1 -0
- package/dist/api/documents/client.js +35 -0
- package/dist/api/models/client.d.ts +17 -0
- package/dist/api/models/client.d.ts.map +1 -0
- package/dist/api/models/client.js +15 -0
- package/dist/api/schemas/client.d.ts +12 -0
- package/dist/api/schemas/client.d.ts.map +1 -0
- package/dist/api/schemas/client.js +14 -0
- package/dist/client.d.ts +50 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +135 -0
- package/dist/errors.d.ts +34 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +53 -0
- package/dist/generated_types.d.ts +64373 -0
- package/dist/generated_types.d.ts.map +1 -0
- package/dist/generated_types.js +2267 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/mime.d.ts +5 -0
- package/dist/mime.d.ts.map +1 -0
- package/dist/mime.js +66 -0
- package/dist/resource.d.ts +12 -0
- package/dist/resource.d.ts.map +1 -0
- package/dist/resource.js +19 -0
- package/dist/resources/consensus/completions.d.ts +66 -0
- package/dist/resources/consensus/completions.d.ts.map +1 -0
- package/dist/resources/consensus/completions.js +84 -0
- package/dist/resources/consensus/index.d.ts +72 -0
- package/dist/resources/consensus/index.d.ts.map +1 -0
- package/dist/resources/consensus/index.js +76 -0
- package/dist/resources/consensus/responses.d.ts +69 -0
- package/dist/resources/consensus/responses.d.ts.map +1 -0
- package/dist/resources/consensus/responses.js +99 -0
- package/dist/resources/documents/extractions.d.ts +74 -0
- package/dist/resources/documents/extractions.d.ts.map +1 -0
- package/dist/resources/documents/extractions.js +196 -0
- package/dist/resources/documents/index.d.ts +21 -0
- package/dist/resources/documents/index.d.ts.map +1 -0
- package/dist/resources/documents/index.js +55 -0
- package/dist/resources/evaluations/documents.d.ts +40 -0
- package/dist/resources/evaluations/documents.d.ts.map +1 -0
- package/dist/resources/evaluations/documents.js +123 -0
- package/dist/resources/evaluations/index.d.ts +14 -0
- package/dist/resources/evaluations/index.d.ts.map +1 -0
- package/dist/resources/evaluations/index.js +17 -0
- package/dist/resources/evaluations/iterations.d.ts +50 -0
- package/dist/resources/evaluations/iterations.d.ts.map +1 -0
- package/dist/resources/evaluations/iterations.js +156 -0
- package/dist/resources/files.d.ts +82 -0
- package/dist/resources/files.d.ts.map +1 -0
- package/dist/resources/files.js +150 -0
- package/dist/resources/finetuning.d.ts +105 -0
- package/dist/resources/finetuning.d.ts.map +1 -0
- package/dist/resources/finetuning.js +181 -0
- package/dist/resources/index.d.ts +11 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +10 -0
- package/dist/resources/models.d.ts +57 -0
- package/dist/resources/models.d.ts.map +1 -0
- package/dist/resources/models.js +72 -0
- package/dist/resources/processors/automations/endpoints.d.ts +90 -0
- package/dist/resources/processors/automations/endpoints.d.ts.map +1 -0
- package/dist/resources/processors/automations/endpoints.js +145 -0
- package/dist/resources/processors/automations/index.d.ts +7 -0
- package/dist/resources/processors/automations/index.d.ts.map +1 -0
- package/dist/resources/processors/automations/index.js +6 -0
- package/dist/resources/processors/automations/links.d.ts +90 -0
- package/dist/resources/processors/automations/links.d.ts.map +1 -0
- package/dist/resources/processors/automations/links.js +149 -0
- package/dist/resources/processors/automations/logs.d.ts +35 -0
- package/dist/resources/processors/automations/logs.d.ts.map +1 -0
- package/dist/resources/processors/automations/logs.js +60 -0
- package/dist/resources/processors/automations/mailboxes.d.ts +102 -0
- package/dist/resources/processors/automations/mailboxes.d.ts.map +1 -0
- package/dist/resources/processors/automations/mailboxes.js +157 -0
- package/dist/resources/processors/automations/outlook.d.ts +114 -0
- package/dist/resources/processors/automations/outlook.d.ts.map +1 -0
- package/dist/resources/processors/automations/outlook.js +170 -0
- package/dist/resources/processors/automations/tests.d.ts +58 -0
- package/dist/resources/processors/automations/tests.d.ts.map +1 -0
- package/dist/resources/processors/automations/tests.js +90 -0
- package/dist/resources/processors/index.d.ts +303 -0
- package/dist/resources/processors/index.d.ts.map +1 -0
- package/dist/resources/processors/index.js +261 -0
- package/dist/resources/schemas.d.ts +63 -0
- package/dist/resources/schemas.d.ts.map +1 -0
- package/dist/resources/schemas.js +183 -0
- package/dist/resources/secrets/external_api_keys.d.ts +61 -0
- package/dist/resources/secrets/external_api_keys.d.ts.map +1 -0
- package/dist/resources/secrets/external_api_keys.js +120 -0
- package/dist/resources/secrets/index.d.ts +14 -0
- package/dist/resources/secrets/index.d.ts.map +1 -0
- package/dist/resources/secrets/index.js +17 -0
- package/dist/resources/secrets/webhooks.d.ts +73 -0
- package/dist/resources/secrets/webhooks.d.ts.map +1 -0
- package/dist/resources/secrets/webhooks.js +145 -0
- package/dist/resources/usage.d.ts +223 -0
- package/dist/resources/usage.d.ts.map +1 -0
- package/dist/resources/usage.js +310 -0
- package/dist/types/ai_models.d.ts +389 -0
- package/dist/types/ai_models.d.ts.map +1 -0
- package/dist/types/ai_models.js +145 -0
- package/dist/types/automations/cron.d.ts +28 -0
- package/dist/types/automations/cron.d.ts.map +1 -0
- package/dist/types/automations/cron.js +1 -0
- package/dist/types/automations/endpoints.d.ts +13 -0
- package/dist/types/automations/endpoints.d.ts.map +1 -0
- package/dist/types/automations/endpoints.js +1 -0
- package/dist/types/automations/index.d.ts +7 -0
- package/dist/types/automations/index.d.ts.map +1 -0
- package/dist/types/automations/index.js +6 -0
- package/dist/types/automations/links.d.ts +15 -0
- package/dist/types/automations/links.d.ts.map +1 -0
- package/dist/types/automations/links.js +1 -0
- package/dist/types/automations/mailboxes.d.ts +18 -0
- package/dist/types/automations/mailboxes.d.ts.map +1 -0
- package/dist/types/automations/mailboxes.js +1 -0
- package/dist/types/automations/outlook.d.ts +37 -0
- package/dist/types/automations/outlook.d.ts.map +1 -0
- package/dist/types/automations/outlook.js +1 -0
- package/dist/types/automations/webhooks.d.ts +13 -0
- package/dist/types/automations/webhooks.d.ts.map +1 -0
- package/dist/types/automations/webhooks.js +1 -0
- package/dist/types/browser_canvas.d.ts +4 -0
- package/dist/types/browser_canvas.d.ts.map +1 -0
- package/dist/types/browser_canvas.js +2 -0
- package/dist/types/chat.d.ts +99 -0
- package/dist/types/chat.d.ts.map +1 -0
- package/dist/types/chat.js +20 -0
- package/dist/types/consensus.d.ts +10 -0
- package/dist/types/consensus.d.ts.map +1 -0
- package/dist/types/consensus.js +1 -0
- package/dist/types/db/annotations.d.ts +108 -0
- package/dist/types/db/annotations.d.ts.map +1 -0
- package/dist/types/db/annotations.js +6 -0
- package/dist/types/db/files.d.ts +133 -0
- package/dist/types/db/files.d.ts.map +1 -0
- package/dist/types/db/files.js +5 -0
- package/dist/types/documents/extractions.d.ts +1849 -0
- package/dist/types/documents/extractions.d.ts.map +1 -0
- package/dist/types/documents/extractions.js +211 -0
- package/dist/types/documents/processing.d.ts +249 -0
- package/dist/types/documents/processing.d.ts.map +1 -0
- package/dist/types/documents/processing.js +6 -0
- package/dist/types/evaluations/iterations.d.ts +41 -0
- package/dist/types/evaluations/iterations.d.ts.map +1 -0
- package/dist/types/evaluations/iterations.js +1 -0
- package/dist/types/jobs/base.d.ts +162 -0
- package/dist/types/jobs/base.d.ts.map +1 -0
- package/dist/types/jobs/base.js +6 -0
- package/dist/types/jobs/specialized.d.ts +200 -0
- package/dist/types/jobs/specialized.d.ts.map +1 -0
- package/dist/types/jobs/specialized.js +37 -0
- package/dist/types/logs.d.ts +92 -0
- package/dist/types/logs.d.ts.map +1 -0
- package/dist/types/logs.js +1 -0
- package/dist/types/mime.d.ts +426 -0
- package/dist/types/mime.d.ts.map +1 -0
- package/dist/types/mime.js +48 -0
- package/dist/types/modalities.d.ts +31 -0
- package/dist/types/modalities.d.ts.map +1 -0
- package/dist/types/modalities.js +109 -0
- package/dist/types/pagination.d.ts +5 -0
- package/dist/types/pagination.d.ts.map +1 -0
- package/dist/types/pagination.js +1 -0
- package/dist/types/schemas/enhancement.d.ts +250 -0
- package/dist/types/schemas/enhancement.d.ts.map +1 -0
- package/dist/types/schemas/enhancement.js +6 -0
- package/dist/types/schemas/generate.d.ts +160 -0
- package/dist/types/schemas/generate.d.ts.map +1 -0
- package/dist/types/schemas/generate.js +19 -0
- package/dist/types/schemas/object.d.ts +116 -0
- package/dist/types/schemas/object.d.ts.map +1 -0
- package/dist/types/schemas/object.js +861 -0
- package/dist/types/secrets/external_api_keys.d.ts +27 -0
- package/dist/types/secrets/external_api_keys.d.ts.map +1 -0
- package/dist/types/secrets/external_api_keys.js +11 -0
- package/dist/types/secrets/index.d.ts +2 -0
- package/dist/types/secrets/index.d.ts.map +1 -0
- package/dist/types/secrets/index.js +1 -0
- package/dist/types/standards.d.ts +37 -0
- package/dist/types/standards.d.ts.map +1 -0
- package/dist/types/standards.js +1 -0
- package/dist/types.d.ts +276 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +85 -0
- package/dist/utils/ai_models.d.ts +10 -0
- package/dist/utils/ai_models.d.ts.map +1 -0
- package/dist/utils/ai_models.js +183 -0
- package/dist/utils/batch_processing.d.ts +227 -0
- package/dist/utils/batch_processing.d.ts.map +1 -0
- package/dist/utils/batch_processing.js +268 -0
- package/dist/utils/benchmarking.d.ts +115 -0
- package/dist/utils/benchmarking.d.ts.map +1 -0
- package/dist/utils/benchmarking.js +355 -0
- package/dist/utils/chat.d.ts +70 -0
- package/dist/utils/chat.d.ts.map +1 -0
- package/dist/utils/chat.js +79 -0
- package/dist/utils/cost_calculation.d.ts +26 -0
- package/dist/utils/cost_calculation.d.ts.map +1 -0
- package/dist/utils/cost_calculation.js +99 -0
- package/dist/utils/datasets.d.ts +135 -0
- package/dist/utils/datasets.d.ts.map +1 -0
- package/dist/utils/datasets.js +359 -0
- package/dist/utils/display.d.ts +108 -0
- package/dist/utils/display.d.ts.map +1 -0
- package/dist/utils/display.js +244 -0
- package/dist/utils/hash.d.ts +18 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +31 -0
- package/dist/utils/hashing.d.ts +18 -0
- package/dist/utils/hashing.d.ts.map +1 -0
- package/dist/utils/hashing.js +28 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +10 -0
- package/dist/utils/json_schema.d.ts +18 -0
- package/dist/utils/json_schema.d.ts.map +1 -0
- package/dist/utils/json_schema.js +334 -0
- package/dist/utils/json_schema_utils.d.ts +42 -0
- package/dist/utils/json_schema_utils.d.ts.map +1 -0
- package/dist/utils/json_schema_utils.js +212 -0
- package/dist/utils/jsonl.d.ts +60 -0
- package/dist/utils/jsonl.d.ts.map +1 -0
- package/dist/utils/jsonl.js +259 -0
- package/dist/utils/mime.d.ts +6 -0
- package/dist/utils/mime.d.ts.map +1 -0
- package/dist/utils/mime.js +129 -0
- package/dist/utils/model_cards.d.ts +219 -0
- package/dist/utils/model_cards.d.ts.map +1 -0
- package/dist/utils/model_cards.js +462 -0
- package/dist/utils/prompt_optimization.d.ts +96 -0
- package/dist/utils/prompt_optimization.d.ts.map +1 -0
- package/dist/utils/prompt_optimization.js +275 -0
- package/dist/utils/responses.d.ts +35 -0
- package/dist/utils/responses.d.ts.map +1 -0
- package/dist/utils/responses.js +37 -0
- package/dist/utils/stream.d.ts +13 -0
- package/dist/utils/stream.d.ts.map +1 -0
- package/dist/utils/stream.js +64 -0
- package/dist/utils/stream_context_managers.d.ts +147 -0
- package/dist/utils/stream_context_managers.d.ts.map +1 -0
- package/dist/utils/stream_context_managers.js +380 -0
- package/dist/utils/usage.d.ts +57 -0
- package/dist/utils/usage.d.ts.map +1 -0
- package/dist/utils/usage.js +97 -0
- package/dist/utils/webhook_secrets.d.ts +59 -0
- package/dist/utils/webhook_secrets.d.ts.map +1 -0
- package/dist/utils/webhook_secrets.js +107 -0
- package/dist/utils/zod_to_json_schema.d.ts +11 -0
- package/dist/utils/zod_to_json_schema.d.ts.map +1 -0
- package/dist/utils/zod_to_json_schema.js +123 -0
- package/dist/utils.d.ts +19 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +1 -0
- package/package.json +62 -6
- package/index.js +0 -7
|
@@ -0,0 +1,107 @@
|
|
|
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
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
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
|
+
}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
type SchemaTypeInfer<T extends string> = T extends "string" ? string : T extends "number" ? number : T extends "integer" ? number : T extends "boolean" ? boolean : T extends "array" ? any[] : T extends "object" ? Record<string, any> : T extends "null" ? null : never;
|
|
2
|
+
type BuildAnyOf<T> = T extends [infer U, ...infer Rest] ? SchemaInfer<U> | BuildAnyOf<Rest> : never;
|
|
3
|
+
type BuildAllOf<T> = T extends [infer U, ...infer Rest] ? SchemaInfer<U> & BuildAllOf<Rest> : any;
|
|
4
|
+
type WalkProp<Ctx, Prop> = Ctx[Prop];
|
|
5
|
+
type ResolveRelativeRef<Ctx, Ref extends string> = Ref extends `${infer Prop}/${infer Rest}` ? ResolveRelativeRef<WalkProp<Ctx, Prop>, Rest> : WalkProp<Ctx, Ref>;
|
|
6
|
+
type ResolveRef<Ctx, Ref extends string> = Ref extends `#/${infer Rest}` ? ResolveRelativeRef<Ctx, Rest> : never;
|
|
7
|
+
type BuildTypes<T extends string[]> = T extends [infer Type extends string, ...infer Rest extends string[]] ? SchemaTypeInfer<Type> | BuildTypes<Rest> : never;
|
|
8
|
+
type SchemaInfer<T, Ctx = T> = T extends {
|
|
9
|
+
$ref: string;
|
|
10
|
+
} ? ResolveRef<Ctx, T["$ref"]> : T extends {
|
|
11
|
+
anyOf: any[];
|
|
12
|
+
} ? BuildAnyOf<T["anyOf"]> : T extends {
|
|
13
|
+
allOf: any[];
|
|
14
|
+
} ? BuildAllOf<T["allOf"]> : T extends {
|
|
15
|
+
type: string[];
|
|
16
|
+
} ? BuildTypes<T["type"]> : T extends {
|
|
17
|
+
type: string;
|
|
18
|
+
} ? SchemaTypeInfer<T["type"]> : never;
|
|
19
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,KAAK,eAAe,CAAC,CAAC,SAAS,MAAM,IACjC,CAAC,SAAS,QAAQ,GAAG,MAAM,GAC3B,CAAC,SAAS,QAAQ,GAAG,MAAM,GAC3B,CAAC,SAAS,SAAS,GAAG,MAAM,GAC5B,CAAC,SAAS,SAAS,GAAG,OAAO,GAC7B,CAAC,SAAS,OAAO,GAAG,GAAG,EAAE,GACzB,CAAC,SAAS,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxC,CAAC,SAAS,MAAM,GAAG,IAAI,GACvB,KAAK,CAAC;AAEV,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACpG,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AAGlG,KAAK,QAAQ,CAAC,GAAG,EAAE,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AACrC,KAAK,kBAAkB,CAAC,GAAG,EAAE,GAAG,SAAS,MAAM,IAC3C,GAAG,SAAS,GAAG,MAAM,IAAI,IAAI,MAAM,IAAI,EAAE,GACrC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAC7C,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAE3B,KAAK,UAAU,CAAC,GAAG,EAAE,GAAG,SAAS,MAAM,IACnC,GAAG,SAAS,KAAK,MAAM,IAAI,EAAE,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;AAE1E,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,SAAS,MAAM,EAAE,GAAG,MAAM,IAAI,SAAS,MAAM,EAAE,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAE/J,KAAK,WAAW,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IACvB,CAAC,SAAS;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GACrD,CAAC,SAAS;IAAC,KAAK,EAAE,GAAG,EAAE,CAAA;CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GACjD,CAAC,SAAS;IAAC,KAAK,EAAE,GAAG,EAAE,CAAA;CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GACjD,CAAC,SAAS;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAClD,CAAC,SAAS;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GACrD,KAAK,CAAC"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
package/package.json
CHANGED
|
@@ -1,12 +1,68 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@retab/node",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "
|
|
5
|
-
"
|
|
3
|
+
"version": "0.0.43",
|
|
4
|
+
"description": "Retab official Node.js library",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"types": "dist/index.d.ts",
|
|
10
|
+
"type": "module",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"test": "jest",
|
|
14
|
+
"test:watch": "jest --watch",
|
|
15
|
+
"test:coverage": "jest --coverage",
|
|
16
|
+
"test:verbose": "jest --verbose",
|
|
17
|
+
"lint": "eslint src --ext .ts",
|
|
18
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
19
|
+
"prepare": "npm run build",
|
|
20
|
+
"clean": "rm -rf dist",
|
|
21
|
+
"rebuild": "npm run clean && npm run build"
|
|
22
|
+
},
|
|
6
23
|
"repository": {
|
|
7
24
|
"type": "git",
|
|
8
|
-
"url": "https://github.com/retab
|
|
25
|
+
"url": "https://github.com/Retab-dev/retab"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"retab",
|
|
29
|
+
"sdk",
|
|
30
|
+
"api",
|
|
31
|
+
"client"
|
|
32
|
+
],
|
|
33
|
+
"author": "Retab",
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"axios": "^1.6.0",
|
|
37
|
+
"axios-retry": "^4.0.0",
|
|
38
|
+
"blake2": "^5.0.0",
|
|
39
|
+
"dotenv": "^17.2.0",
|
|
40
|
+
"file-type": "^21.0.0",
|
|
41
|
+
"form-data": "^4.0.0",
|
|
42
|
+
"js-yaml": "^4.1.0",
|
|
43
|
+
"openai": "^5.8.2",
|
|
44
|
+
"zod": "^3.22.0",
|
|
45
|
+
"zod-to-json-schema": "^3.24.6"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@types/blake2": "^4.0.4",
|
|
49
|
+
"@types/jest": "^29.0.0",
|
|
50
|
+
"@types/js-yaml": "^4.0.9",
|
|
51
|
+
"@types/node": "^20.0.0",
|
|
52
|
+
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
53
|
+
"@typescript-eslint/parser": "^6.0.0",
|
|
54
|
+
"eslint": "^8.0.0",
|
|
55
|
+
"jest": "^29.0.0",
|
|
56
|
+
"prettier": "^3.0.0",
|
|
57
|
+
"ts-jest": "^29.0.0",
|
|
58
|
+
"typescript": "^5.0.0"
|
|
59
|
+
},
|
|
60
|
+
"engines": {
|
|
61
|
+
"node": ">=16.0.0"
|
|
9
62
|
},
|
|
10
|
-
"
|
|
11
|
-
|
|
63
|
+
"files": [
|
|
64
|
+
"dist/**/*",
|
|
65
|
+
"README.md",
|
|
66
|
+
"LICENSE"
|
|
67
|
+
]
|
|
12
68
|
}
|