@ironflow/core 0.1.0-test.2
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 +60 -0
- package/dist/constants.d.ts +219 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +233 -0
- package/dist/constants.js.map +1 -0
- package/dist/errors.d.ts +140 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +205 -0
- package/dist/errors.js.map +1 -0
- package/dist/gen/index.d.ts +7 -0
- package/dist/gen/index.d.ts.map +1 -0
- package/dist/gen/index.js +7 -0
- package/dist/gen/index.js.map +1 -0
- package/dist/gen/ironflow/v1/index.d.ts +13 -0
- package/dist/gen/ironflow/v1/index.d.ts.map +1 -0
- package/dist/gen/ironflow/v1/index.js +15 -0
- package/dist/gen/ironflow/v1/index.js.map +1 -0
- package/dist/gen/ironflow/v1/ironflow_connect.d.ts +209 -0
- package/dist/gen/ironflow/v1/ironflow_connect.d.ts.map +1 -0
- package/dist/gen/ironflow/v1/ironflow_connect.js +216 -0
- package/dist/gen/ironflow/v1/ironflow_connect.js.map +1 -0
- package/dist/gen/ironflow/v1/ironflow_pb.d.ts +814 -0
- package/dist/gen/ironflow/v1/ironflow_pb.d.ts.map +1 -0
- package/dist/gen/ironflow/v1/ironflow_pb.js +157 -0
- package/dist/gen/ironflow/v1/ironflow_pb.js.map +1 -0
- package/dist/gen/ironflow/v1/pubsub_connect.d.ts +104 -0
- package/dist/gen/ironflow/v1/pubsub_connect.d.ts.map +1 -0
- package/dist/gen/ironflow/v1/pubsub_connect.js +110 -0
- package/dist/gen/ironflow/v1/pubsub_connect.js.map +1 -0
- package/dist/gen/ironflow/v1/pubsub_pb.d.ts +814 -0
- package/dist/gen/ironflow/v1/pubsub_pb.d.ts.map +1 -0
- package/dist/gen/ironflow/v1/pubsub_pb.js +202 -0
- package/dist/gen/ironflow/v1/pubsub_pb.js.map +1 -0
- package/dist/gen/ironflow/v1/types_pb.d.ts +698 -0
- package/dist/gen/ironflow/v1/types_pb.d.ts.map +1 -0
- package/dist/gen/ironflow/v1/types_pb.js +217 -0
- package/dist/gen/ironflow/v1/types_pb.js.map +1 -0
- package/dist/gen/ironflow/v1/worker_connect.d.ts +20 -0
- package/dist/gen/ironflow/v1/worker_connect.d.ts.map +1 -0
- package/dist/gen/ironflow/v1/worker_connect.js +26 -0
- package/dist/gen/ironflow/v1/worker_connect.js.map +1 -0
- package/dist/gen/ironflow/v1/worker_pb.d.ts +685 -0
- package/dist/gen/ironflow/v1/worker_pb.d.ts.map +1 -0
- package/dist/gen/ironflow/v1/worker_pb.js +135 -0
- package/dist/gen/ironflow/v1/worker_pb.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +26 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +78 -0
- package/dist/logger.js.map +1 -0
- package/dist/protocol.d.ts +250 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +34 -0
- package/dist/protocol.js.map +1 -0
- package/dist/schemas.d.ts +394 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +268 -0
- package/dist/schemas.js.map +1 -0
- package/dist/types.d.ts +577 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +49 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +60 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +109 -0
- package/dist/utils.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod Schemas for Runtime Validation
|
|
3
|
+
*
|
|
4
|
+
* These schemas validate incoming data from external sources (API responses,
|
|
5
|
+
* WebSocket messages, webhook payloads) to ensure type safety at runtime.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
export declare const RunStatusSchema: z.ZodEnum<{
|
|
9
|
+
completed: "completed";
|
|
10
|
+
failed: "failed";
|
|
11
|
+
pending: "pending";
|
|
12
|
+
running: "running";
|
|
13
|
+
cancelled: "cancelled";
|
|
14
|
+
paused: "paused";
|
|
15
|
+
}>;
|
|
16
|
+
export declare const CompletedStepSchema: z.ZodObject<{
|
|
17
|
+
id: z.ZodString;
|
|
18
|
+
name: z.ZodString;
|
|
19
|
+
status: z.ZodEnum<{
|
|
20
|
+
completed: "completed";
|
|
21
|
+
failed: "failed";
|
|
22
|
+
}>;
|
|
23
|
+
output: z.ZodOptional<z.ZodUnknown>;
|
|
24
|
+
error: z.ZodOptional<z.ZodString>;
|
|
25
|
+
}, z.core.$strip>;
|
|
26
|
+
export declare const ResumeContextSchema: z.ZodObject<{
|
|
27
|
+
step_id: z.ZodString;
|
|
28
|
+
type: z.ZodEnum<{
|
|
29
|
+
sleep: "sleep";
|
|
30
|
+
wait_for_event: "wait_for_event";
|
|
31
|
+
}>;
|
|
32
|
+
data: z.ZodOptional<z.ZodUnknown>;
|
|
33
|
+
}, z.core.$strip>;
|
|
34
|
+
export declare const PushRequestEventSchema: z.ZodObject<{
|
|
35
|
+
id: z.ZodString;
|
|
36
|
+
name: z.ZodString;
|
|
37
|
+
data: z.ZodUnknown;
|
|
38
|
+
timestamp: z.ZodString;
|
|
39
|
+
idempotency_key: z.ZodOptional<z.ZodString>;
|
|
40
|
+
source: z.ZodOptional<z.ZodString>;
|
|
41
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
42
|
+
}, z.core.$strip>;
|
|
43
|
+
export declare const PushRequestSchema: z.ZodObject<{
|
|
44
|
+
run_id: z.ZodString;
|
|
45
|
+
function_id: z.ZodString;
|
|
46
|
+
attempt: z.ZodNumber;
|
|
47
|
+
event: z.ZodObject<{
|
|
48
|
+
id: z.ZodString;
|
|
49
|
+
name: z.ZodString;
|
|
50
|
+
data: z.ZodUnknown;
|
|
51
|
+
timestamp: z.ZodString;
|
|
52
|
+
idempotency_key: z.ZodOptional<z.ZodString>;
|
|
53
|
+
source: z.ZodOptional<z.ZodString>;
|
|
54
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
55
|
+
}, z.core.$strip>;
|
|
56
|
+
steps: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
57
|
+
id: z.ZodString;
|
|
58
|
+
name: z.ZodString;
|
|
59
|
+
status: z.ZodEnum<{
|
|
60
|
+
completed: "completed";
|
|
61
|
+
failed: "failed";
|
|
62
|
+
}>;
|
|
63
|
+
output: z.ZodOptional<z.ZodUnknown>;
|
|
64
|
+
error: z.ZodOptional<z.ZodString>;
|
|
65
|
+
}, z.core.$strip>>>>, z.ZodTransform<{
|
|
66
|
+
id: string;
|
|
67
|
+
name: string;
|
|
68
|
+
status: "completed" | "failed";
|
|
69
|
+
output?: unknown;
|
|
70
|
+
error?: string | undefined;
|
|
71
|
+
}[], {
|
|
72
|
+
id: string;
|
|
73
|
+
name: string;
|
|
74
|
+
status: "completed" | "failed";
|
|
75
|
+
output?: unknown;
|
|
76
|
+
error?: string | undefined;
|
|
77
|
+
}[] | null | undefined>>;
|
|
78
|
+
resume: z.ZodOptional<z.ZodObject<{
|
|
79
|
+
step_id: z.ZodString;
|
|
80
|
+
type: z.ZodEnum<{
|
|
81
|
+
sleep: "sleep";
|
|
82
|
+
wait_for_event: "wait_for_event";
|
|
83
|
+
}>;
|
|
84
|
+
data: z.ZodOptional<z.ZodUnknown>;
|
|
85
|
+
}, z.core.$strip>>;
|
|
86
|
+
}, z.core.$strip>;
|
|
87
|
+
export declare const TriggerResponseSchema: z.ZodObject<{
|
|
88
|
+
runIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
89
|
+
eventId: z.ZodString;
|
|
90
|
+
}, z.core.$strip>;
|
|
91
|
+
export declare const TriggerSyncResultItemSchema: z.ZodObject<{
|
|
92
|
+
runId: z.ZodString;
|
|
93
|
+
functionId: z.ZodString;
|
|
94
|
+
status: z.ZodString;
|
|
95
|
+
output: z.ZodOptional<z.ZodUnknown>;
|
|
96
|
+
error: z.ZodOptional<z.ZodObject<{
|
|
97
|
+
message: z.ZodString;
|
|
98
|
+
code: z.ZodOptional<z.ZodString>;
|
|
99
|
+
}, z.core.$strip>>;
|
|
100
|
+
durationMs: z.ZodNumber;
|
|
101
|
+
}, z.core.$strip>;
|
|
102
|
+
export declare const TriggerSyncResponseSchema: z.ZodObject<{
|
|
103
|
+
results: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
104
|
+
runId: z.ZodString;
|
|
105
|
+
functionId: z.ZodString;
|
|
106
|
+
status: z.ZodString;
|
|
107
|
+
output: z.ZodOptional<z.ZodUnknown>;
|
|
108
|
+
error: z.ZodOptional<z.ZodObject<{
|
|
109
|
+
message: z.ZodString;
|
|
110
|
+
code: z.ZodOptional<z.ZodString>;
|
|
111
|
+
}, z.core.$strip>>;
|
|
112
|
+
durationMs: z.ZodNumber;
|
|
113
|
+
}, z.core.$strip>>>;
|
|
114
|
+
eventId: z.ZodString;
|
|
115
|
+
}, z.core.$strip>;
|
|
116
|
+
export declare const RunResponseSchema: z.ZodObject<{
|
|
117
|
+
id: z.ZodString;
|
|
118
|
+
functionId: z.ZodString;
|
|
119
|
+
eventId: z.ZodString;
|
|
120
|
+
executionMode: z.ZodOptional<z.ZodString>;
|
|
121
|
+
workerId: z.ZodOptional<z.ZodString>;
|
|
122
|
+
actorId: z.ZodOptional<z.ZodString>;
|
|
123
|
+
status: z.ZodString;
|
|
124
|
+
attempt: z.ZodNumber;
|
|
125
|
+
maxAttempts: z.ZodNumber;
|
|
126
|
+
input: z.ZodOptional<z.ZodUnknown>;
|
|
127
|
+
output: z.ZodOptional<z.ZodUnknown>;
|
|
128
|
+
error: z.ZodOptional<z.ZodObject<{
|
|
129
|
+
message: z.ZodString;
|
|
130
|
+
code: z.ZodOptional<z.ZodString>;
|
|
131
|
+
}, z.core.$strip>>;
|
|
132
|
+
startedAt: z.ZodOptional<z.ZodString>;
|
|
133
|
+
endedAt: z.ZodOptional<z.ZodString>;
|
|
134
|
+
concurrencyKey: z.ZodOptional<z.ZodString>;
|
|
135
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
136
|
+
createdAt: z.ZodString;
|
|
137
|
+
updatedAt: z.ZodString;
|
|
138
|
+
}, z.core.$strip>;
|
|
139
|
+
export declare const ListRunsResponseSchema: z.ZodObject<{
|
|
140
|
+
runs: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
141
|
+
id: z.ZodString;
|
|
142
|
+
functionId: z.ZodString;
|
|
143
|
+
eventId: z.ZodString;
|
|
144
|
+
executionMode: z.ZodOptional<z.ZodString>;
|
|
145
|
+
workerId: z.ZodOptional<z.ZodString>;
|
|
146
|
+
actorId: z.ZodOptional<z.ZodString>;
|
|
147
|
+
status: z.ZodString;
|
|
148
|
+
attempt: z.ZodNumber;
|
|
149
|
+
maxAttempts: z.ZodNumber;
|
|
150
|
+
input: z.ZodOptional<z.ZodUnknown>;
|
|
151
|
+
output: z.ZodOptional<z.ZodUnknown>;
|
|
152
|
+
error: z.ZodOptional<z.ZodObject<{
|
|
153
|
+
message: z.ZodString;
|
|
154
|
+
code: z.ZodOptional<z.ZodString>;
|
|
155
|
+
}, z.core.$strip>>;
|
|
156
|
+
startedAt: z.ZodOptional<z.ZodString>;
|
|
157
|
+
endedAt: z.ZodOptional<z.ZodString>;
|
|
158
|
+
concurrencyKey: z.ZodOptional<z.ZodString>;
|
|
159
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
160
|
+
createdAt: z.ZodString;
|
|
161
|
+
updatedAt: z.ZodString;
|
|
162
|
+
}, z.core.$strip>>>;
|
|
163
|
+
nextCursor: z.ZodOptional<z.ZodString>;
|
|
164
|
+
totalCount: z.ZodOptional<z.ZodNumber>;
|
|
165
|
+
}, z.core.$strip>;
|
|
166
|
+
export declare const RegisterFunctionResponseSchema: z.ZodObject<{
|
|
167
|
+
created: z.ZodOptional<z.ZodBoolean>;
|
|
168
|
+
}, z.core.$strip>;
|
|
169
|
+
export declare const HealthResponseSchema: z.ZodObject<{
|
|
170
|
+
status: z.ZodString;
|
|
171
|
+
}, z.core.$strip>;
|
|
172
|
+
export declare const ErrorResponseSchema: z.ZodObject<{
|
|
173
|
+
code: z.ZodOptional<z.ZodString>;
|
|
174
|
+
message: z.ZodOptional<z.ZodString>;
|
|
175
|
+
}, z.core.$strip>;
|
|
176
|
+
export declare const EmptyResponseSchema: z.ZodObject<{}, z.core.$strip>;
|
|
177
|
+
export declare const AckModeSchema: z.ZodEnum<{
|
|
178
|
+
ACK_MODE_AUTO: "ACK_MODE_AUTO";
|
|
179
|
+
ACK_MODE_MANUAL: "ACK_MODE_MANUAL";
|
|
180
|
+
ACK_MODE_UNSPECIFIED: "ACK_MODE_UNSPECIFIED";
|
|
181
|
+
}>;
|
|
182
|
+
export declare const BackpressureModeSchema: z.ZodEnum<{
|
|
183
|
+
BACKPRESSURE_MODE_DROP: "BACKPRESSURE_MODE_DROP";
|
|
184
|
+
BACKPRESSURE_MODE_BLOCK: "BACKPRESSURE_MODE_BLOCK";
|
|
185
|
+
BACKPRESSURE_MODE_BUFFER: "BACKPRESSURE_MODE_BUFFER";
|
|
186
|
+
BACKPRESSURE_MODE_UNSPECIFIED: "BACKPRESSURE_MODE_UNSPECIFIED";
|
|
187
|
+
}>;
|
|
188
|
+
export declare const ConsumerGroupStatusSchema: z.ZodEnum<{
|
|
189
|
+
CONSUMER_GROUP_STATUS_ACTIVE: "CONSUMER_GROUP_STATUS_ACTIVE";
|
|
190
|
+
CONSUMER_GROUP_STATUS_PAUSED: "CONSUMER_GROUP_STATUS_PAUSED";
|
|
191
|
+
CONSUMER_GROUP_STATUS_DELETED: "CONSUMER_GROUP_STATUS_DELETED";
|
|
192
|
+
CONSUMER_GROUP_STATUS_UNSPECIFIED: "CONSUMER_GROUP_STATUS_UNSPECIFIED";
|
|
193
|
+
}>;
|
|
194
|
+
export declare const ConsumerGroupResponseSchema: z.ZodObject<{
|
|
195
|
+
id: z.ZodString;
|
|
196
|
+
namespace: z.ZodString;
|
|
197
|
+
name: z.ZodString;
|
|
198
|
+
pattern: z.ZodString;
|
|
199
|
+
filterExpr: z.ZodOptional<z.ZodString>;
|
|
200
|
+
ackMode: z.ZodOptional<z.ZodEnum<{
|
|
201
|
+
ACK_MODE_AUTO: "ACK_MODE_AUTO";
|
|
202
|
+
ACK_MODE_MANUAL: "ACK_MODE_MANUAL";
|
|
203
|
+
ACK_MODE_UNSPECIFIED: "ACK_MODE_UNSPECIFIED";
|
|
204
|
+
}>>;
|
|
205
|
+
backpressure: z.ZodOptional<z.ZodEnum<{
|
|
206
|
+
BACKPRESSURE_MODE_DROP: "BACKPRESSURE_MODE_DROP";
|
|
207
|
+
BACKPRESSURE_MODE_BLOCK: "BACKPRESSURE_MODE_BLOCK";
|
|
208
|
+
BACKPRESSURE_MODE_BUFFER: "BACKPRESSURE_MODE_BUFFER";
|
|
209
|
+
BACKPRESSURE_MODE_UNSPECIFIED: "BACKPRESSURE_MODE_UNSPECIFIED";
|
|
210
|
+
}>>;
|
|
211
|
+
maxInflight: z.ZodOptional<z.ZodNumber>;
|
|
212
|
+
maxRedeliveries: z.ZodOptional<z.ZodNumber>;
|
|
213
|
+
redeliverDelayMs: z.ZodOptional<z.ZodNumber>;
|
|
214
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
215
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
216
|
+
CONSUMER_GROUP_STATUS_ACTIVE: "CONSUMER_GROUP_STATUS_ACTIVE";
|
|
217
|
+
CONSUMER_GROUP_STATUS_PAUSED: "CONSUMER_GROUP_STATUS_PAUSED";
|
|
218
|
+
CONSUMER_GROUP_STATUS_DELETED: "CONSUMER_GROUP_STATUS_DELETED";
|
|
219
|
+
CONSUMER_GROUP_STATUS_UNSPECIFIED: "CONSUMER_GROUP_STATUS_UNSPECIFIED";
|
|
220
|
+
}>>;
|
|
221
|
+
memberCount: z.ZodOptional<z.ZodNumber>;
|
|
222
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
223
|
+
updatedAt: z.ZodOptional<z.ZodString>;
|
|
224
|
+
}, z.core.$strip>;
|
|
225
|
+
export declare const ListConsumerGroupsResponseSchema: z.ZodObject<{
|
|
226
|
+
groups: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
227
|
+
id: z.ZodString;
|
|
228
|
+
namespace: z.ZodString;
|
|
229
|
+
name: z.ZodString;
|
|
230
|
+
pattern: z.ZodString;
|
|
231
|
+
filterExpr: z.ZodOptional<z.ZodString>;
|
|
232
|
+
ackMode: z.ZodOptional<z.ZodEnum<{
|
|
233
|
+
ACK_MODE_AUTO: "ACK_MODE_AUTO";
|
|
234
|
+
ACK_MODE_MANUAL: "ACK_MODE_MANUAL";
|
|
235
|
+
ACK_MODE_UNSPECIFIED: "ACK_MODE_UNSPECIFIED";
|
|
236
|
+
}>>;
|
|
237
|
+
backpressure: z.ZodOptional<z.ZodEnum<{
|
|
238
|
+
BACKPRESSURE_MODE_DROP: "BACKPRESSURE_MODE_DROP";
|
|
239
|
+
BACKPRESSURE_MODE_BLOCK: "BACKPRESSURE_MODE_BLOCK";
|
|
240
|
+
BACKPRESSURE_MODE_BUFFER: "BACKPRESSURE_MODE_BUFFER";
|
|
241
|
+
BACKPRESSURE_MODE_UNSPECIFIED: "BACKPRESSURE_MODE_UNSPECIFIED";
|
|
242
|
+
}>>;
|
|
243
|
+
maxInflight: z.ZodOptional<z.ZodNumber>;
|
|
244
|
+
maxRedeliveries: z.ZodOptional<z.ZodNumber>;
|
|
245
|
+
redeliverDelayMs: z.ZodOptional<z.ZodNumber>;
|
|
246
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
247
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
248
|
+
CONSUMER_GROUP_STATUS_ACTIVE: "CONSUMER_GROUP_STATUS_ACTIVE";
|
|
249
|
+
CONSUMER_GROUP_STATUS_PAUSED: "CONSUMER_GROUP_STATUS_PAUSED";
|
|
250
|
+
CONSUMER_GROUP_STATUS_DELETED: "CONSUMER_GROUP_STATUS_DELETED";
|
|
251
|
+
CONSUMER_GROUP_STATUS_UNSPECIFIED: "CONSUMER_GROUP_STATUS_UNSPECIFIED";
|
|
252
|
+
}>>;
|
|
253
|
+
memberCount: z.ZodOptional<z.ZodNumber>;
|
|
254
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
255
|
+
updatedAt: z.ZodOptional<z.ZodString>;
|
|
256
|
+
}, z.core.$strip>>>;
|
|
257
|
+
nextCursor: z.ZodOptional<z.ZodString>;
|
|
258
|
+
totalCount: z.ZodOptional<z.ZodNumber>;
|
|
259
|
+
}, z.core.$strip>;
|
|
260
|
+
export declare const JobCompletedStepSchema: z.ZodObject<{
|
|
261
|
+
step_id: z.ZodString;
|
|
262
|
+
name: z.ZodString;
|
|
263
|
+
output: z.ZodUnknown;
|
|
264
|
+
}, z.core.$strip>;
|
|
265
|
+
export declare const JobEventSchema: z.ZodObject<{
|
|
266
|
+
id: z.ZodString;
|
|
267
|
+
name: z.ZodString;
|
|
268
|
+
data: z.ZodUnknown;
|
|
269
|
+
timestamp: z.ZodString;
|
|
270
|
+
}, z.core.$strip>;
|
|
271
|
+
export declare const JobContextSchema: z.ZodObject<{
|
|
272
|
+
trace_id: z.ZodOptional<z.ZodString>;
|
|
273
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
274
|
+
}, z.core.$strip>;
|
|
275
|
+
export declare const JobAssignmentSchema: z.ZodObject<{
|
|
276
|
+
job_id: z.ZodString;
|
|
277
|
+
run_id: z.ZodString;
|
|
278
|
+
function_id: z.ZodString;
|
|
279
|
+
attempt: z.ZodNumber;
|
|
280
|
+
event: z.ZodObject<{
|
|
281
|
+
id: z.ZodString;
|
|
282
|
+
name: z.ZodString;
|
|
283
|
+
data: z.ZodUnknown;
|
|
284
|
+
timestamp: z.ZodString;
|
|
285
|
+
}, z.core.$strip>;
|
|
286
|
+
completed_steps: z.ZodArray<z.ZodObject<{
|
|
287
|
+
step_id: z.ZodString;
|
|
288
|
+
name: z.ZodString;
|
|
289
|
+
output: z.ZodUnknown;
|
|
290
|
+
}, z.core.$strip>>;
|
|
291
|
+
actor_id: z.ZodOptional<z.ZodString>;
|
|
292
|
+
context: z.ZodOptional<z.ZodObject<{
|
|
293
|
+
trace_id: z.ZodOptional<z.ZodString>;
|
|
294
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
295
|
+
}, z.core.$strip>>;
|
|
296
|
+
}, z.core.$strip>;
|
|
297
|
+
export declare const EventMetadataSchema: z.ZodObject<{
|
|
298
|
+
timestamp: z.ZodString;
|
|
299
|
+
sequence: z.ZodOptional<z.ZodNumber>;
|
|
300
|
+
}, z.core.$strip>;
|
|
301
|
+
export declare const WSSubscriptionResultItemSchema: z.ZodObject<{
|
|
302
|
+
pattern: z.ZodString;
|
|
303
|
+
status: z.ZodEnum<{
|
|
304
|
+
error: "error";
|
|
305
|
+
ok: "ok";
|
|
306
|
+
}>;
|
|
307
|
+
subscriptionId: z.ZodOptional<z.ZodString>;
|
|
308
|
+
code: z.ZodOptional<z.ZodString>;
|
|
309
|
+
message: z.ZodOptional<z.ZodString>;
|
|
310
|
+
}, z.core.$strip>;
|
|
311
|
+
export declare const WSSubscriptionResultSchema: z.ZodObject<{
|
|
312
|
+
type: z.ZodLiteral<"subscription_result">;
|
|
313
|
+
results: z.ZodArray<z.ZodObject<{
|
|
314
|
+
pattern: z.ZodString;
|
|
315
|
+
status: z.ZodEnum<{
|
|
316
|
+
error: "error";
|
|
317
|
+
ok: "ok";
|
|
318
|
+
}>;
|
|
319
|
+
subscriptionId: z.ZodOptional<z.ZodString>;
|
|
320
|
+
code: z.ZodOptional<z.ZodString>;
|
|
321
|
+
message: z.ZodOptional<z.ZodString>;
|
|
322
|
+
}, z.core.$strip>>;
|
|
323
|
+
}, z.core.$strip>;
|
|
324
|
+
export declare const WSEventMessageSchema: z.ZodObject<{
|
|
325
|
+
type: z.ZodLiteral<"event">;
|
|
326
|
+
subscriptionId: z.ZodString;
|
|
327
|
+
topic: z.ZodString;
|
|
328
|
+
data: z.ZodUnknown;
|
|
329
|
+
meta: z.ZodOptional<z.ZodObject<{
|
|
330
|
+
timestamp: z.ZodString;
|
|
331
|
+
sequence: z.ZodOptional<z.ZodNumber>;
|
|
332
|
+
}, z.core.$strip>>;
|
|
333
|
+
eventId: z.ZodOptional<z.ZodString>;
|
|
334
|
+
}, z.core.$strip>;
|
|
335
|
+
export declare const WSSubscriptionErrorSchema: z.ZodObject<{
|
|
336
|
+
type: z.ZodLiteral<"subscription_error">;
|
|
337
|
+
subscriptionId: z.ZodString;
|
|
338
|
+
code: z.ZodString;
|
|
339
|
+
message: z.ZodString;
|
|
340
|
+
retrying: z.ZodBoolean;
|
|
341
|
+
}, z.core.$strip>;
|
|
342
|
+
export declare const WSErrorSchema: z.ZodObject<{
|
|
343
|
+
type: z.ZodLiteral<"error">;
|
|
344
|
+
code: z.ZodString;
|
|
345
|
+
message: z.ZodString;
|
|
346
|
+
}, z.core.$strip>;
|
|
347
|
+
export declare const WSServerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
348
|
+
type: z.ZodLiteral<"subscription_result">;
|
|
349
|
+
results: z.ZodArray<z.ZodObject<{
|
|
350
|
+
pattern: z.ZodString;
|
|
351
|
+
status: z.ZodEnum<{
|
|
352
|
+
error: "error";
|
|
353
|
+
ok: "ok";
|
|
354
|
+
}>;
|
|
355
|
+
subscriptionId: z.ZodOptional<z.ZodString>;
|
|
356
|
+
code: z.ZodOptional<z.ZodString>;
|
|
357
|
+
message: z.ZodOptional<z.ZodString>;
|
|
358
|
+
}, z.core.$strip>>;
|
|
359
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
360
|
+
type: z.ZodLiteral<"event">;
|
|
361
|
+
subscriptionId: z.ZodString;
|
|
362
|
+
topic: z.ZodString;
|
|
363
|
+
data: z.ZodUnknown;
|
|
364
|
+
meta: z.ZodOptional<z.ZodObject<{
|
|
365
|
+
timestamp: z.ZodString;
|
|
366
|
+
sequence: z.ZodOptional<z.ZodNumber>;
|
|
367
|
+
}, z.core.$strip>>;
|
|
368
|
+
eventId: z.ZodOptional<z.ZodString>;
|
|
369
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
370
|
+
type: z.ZodLiteral<"subscription_error">;
|
|
371
|
+
subscriptionId: z.ZodString;
|
|
372
|
+
code: z.ZodString;
|
|
373
|
+
message: z.ZodString;
|
|
374
|
+
retrying: z.ZodBoolean;
|
|
375
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
376
|
+
type: z.ZodLiteral<"error">;
|
|
377
|
+
code: z.ZodString;
|
|
378
|
+
message: z.ZodString;
|
|
379
|
+
}, z.core.$strip>], "type">;
|
|
380
|
+
export type ValidatedPushRequest = z.infer<typeof PushRequestSchema>;
|
|
381
|
+
export type ValidatedRunResponse = z.infer<typeof RunResponseSchema>;
|
|
382
|
+
export type ValidatedJobAssignment = z.infer<typeof JobAssignmentSchema>;
|
|
383
|
+
export type ValidatedWSServerMessage = z.infer<typeof WSServerMessageSchema>;
|
|
384
|
+
/**
|
|
385
|
+
* Safely parse JSON and validate against a schema
|
|
386
|
+
* @throws {SchemaValidationError} if parsing or validation fails
|
|
387
|
+
*/
|
|
388
|
+
export declare function parseAndValidate<T>(schema: z.ZodType<T>, data: string, context: string): T;
|
|
389
|
+
/**
|
|
390
|
+
* Validate data against a schema (already parsed)
|
|
391
|
+
* @throws {SchemaValidationError} if validation fails
|
|
392
|
+
*/
|
|
393
|
+
export declare function validate<T>(schema: z.ZodType<T>, data: unknown, context: string): T;
|
|
394
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,eAAe;;;;;;;EAO1B,CAAC;AAMH,eAAO,MAAM,mBAAmB;;;;;;;;;iBAM9B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;iBAI9B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;iBAQjC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAU5B,CAAC;AAMH,eAAO,MAAM,qBAAqB;;;iBAGhC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;iBAYtC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;iBAGpC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;iBAwB5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIjC,CAAC;AAEH,eAAO,MAAM,8BAA8B;;iBAEzC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;iBAE/B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;iBAG9B,CAAC;AAEH,eAAO,MAAM,mBAAmB,gCAAe,CAAC;AAMhD,eAAO,MAAM,aAAa;;;;EAAuE,CAAC;AAElG,eAAO,MAAM,sBAAsB;;;;;EAKjC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;EAKpC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgBtC,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAI3C,CAAC;AAMH,eAAO,MAAM,sBAAsB;;;;iBAIjC,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;iBAKzB,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;iBAG3B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;iBAS9B,CAAC;AAMH,eAAO,MAAM,mBAAmB;;;iBAG9B,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;iBAMzC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;iBAGrC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;iBAO/B,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;iBAMpC,CAAC;AAEH,eAAO,MAAM,aAAa;;;;iBAIxB,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAKhC,CAAC;AAMH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACrE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACrE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACzE,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAQ7E;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,CAAC,CAoBH;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACxB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,MAAM,GACd,CAAC,CAaH"}
|
package/dist/schemas.js
ADDED
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod Schemas for Runtime Validation
|
|
3
|
+
*
|
|
4
|
+
* These schemas validate incoming data from external sources (API responses,
|
|
5
|
+
* WebSocket messages, webhook payloads) to ensure type safety at runtime.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Run Status
|
|
10
|
+
// ============================================================================
|
|
11
|
+
export const RunStatusSchema = z.enum([
|
|
12
|
+
"pending",
|
|
13
|
+
"running",
|
|
14
|
+
"completed",
|
|
15
|
+
"failed",
|
|
16
|
+
"cancelled",
|
|
17
|
+
"paused",
|
|
18
|
+
]);
|
|
19
|
+
// ============================================================================
|
|
20
|
+
// Push Request (serve.ts)
|
|
21
|
+
// ============================================================================
|
|
22
|
+
export const CompletedStepSchema = z.object({
|
|
23
|
+
id: z.string(),
|
|
24
|
+
name: z.string(),
|
|
25
|
+
status: z.enum(["completed", "failed"]),
|
|
26
|
+
output: z.unknown().optional(),
|
|
27
|
+
error: z.string().optional(),
|
|
28
|
+
});
|
|
29
|
+
export const ResumeContextSchema = z.object({
|
|
30
|
+
step_id: z.string(),
|
|
31
|
+
type: z.enum(["sleep", "wait_for_event"]),
|
|
32
|
+
data: z.unknown().optional(),
|
|
33
|
+
});
|
|
34
|
+
export const PushRequestEventSchema = z.object({
|
|
35
|
+
id: z.string(),
|
|
36
|
+
name: z.string(),
|
|
37
|
+
data: z.unknown(),
|
|
38
|
+
timestamp: z.string(),
|
|
39
|
+
idempotency_key: z.string().optional(),
|
|
40
|
+
source: z.string().optional(),
|
|
41
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
42
|
+
});
|
|
43
|
+
export const PushRequestSchema = z.object({
|
|
44
|
+
run_id: z.string(),
|
|
45
|
+
function_id: z.string(),
|
|
46
|
+
attempt: z.number(),
|
|
47
|
+
event: PushRequestEventSchema,
|
|
48
|
+
steps: z
|
|
49
|
+
.array(CompletedStepSchema)
|
|
50
|
+
.nullish()
|
|
51
|
+
.transform((v) => v ?? []),
|
|
52
|
+
resume: ResumeContextSchema.optional(),
|
|
53
|
+
});
|
|
54
|
+
// ============================================================================
|
|
55
|
+
// Client API Responses (client.ts)
|
|
56
|
+
// ============================================================================
|
|
57
|
+
export const TriggerResponseSchema = z.object({
|
|
58
|
+
runIds: z.array(z.string()).optional(),
|
|
59
|
+
eventId: z.string(),
|
|
60
|
+
});
|
|
61
|
+
export const TriggerSyncResultItemSchema = z.object({
|
|
62
|
+
runId: z.string(),
|
|
63
|
+
functionId: z.string(),
|
|
64
|
+
status: z.string(),
|
|
65
|
+
output: z.unknown().optional(),
|
|
66
|
+
error: z
|
|
67
|
+
.object({
|
|
68
|
+
message: z.string(),
|
|
69
|
+
code: z.string().optional(),
|
|
70
|
+
})
|
|
71
|
+
.optional(),
|
|
72
|
+
durationMs: z.number(),
|
|
73
|
+
});
|
|
74
|
+
export const TriggerSyncResponseSchema = z.object({
|
|
75
|
+
results: z.array(TriggerSyncResultItemSchema).optional(),
|
|
76
|
+
eventId: z.string(),
|
|
77
|
+
});
|
|
78
|
+
export const RunResponseSchema = z.object({
|
|
79
|
+
id: z.string(),
|
|
80
|
+
functionId: z.string(),
|
|
81
|
+
eventId: z.string(),
|
|
82
|
+
executionMode: z.string().optional(),
|
|
83
|
+
workerId: z.string().optional(),
|
|
84
|
+
actorId: z.string().optional(),
|
|
85
|
+
status: z.string(),
|
|
86
|
+
attempt: z.number(),
|
|
87
|
+
maxAttempts: z.number(),
|
|
88
|
+
input: z.unknown().optional(),
|
|
89
|
+
output: z.unknown().optional(),
|
|
90
|
+
error: z
|
|
91
|
+
.object({
|
|
92
|
+
message: z.string(),
|
|
93
|
+
code: z.string().optional(),
|
|
94
|
+
})
|
|
95
|
+
.optional(),
|
|
96
|
+
startedAt: z.string().optional(),
|
|
97
|
+
endedAt: z.string().optional(),
|
|
98
|
+
concurrencyKey: z.string().optional(),
|
|
99
|
+
priority: z.number().optional(),
|
|
100
|
+
createdAt: z.string(),
|
|
101
|
+
updatedAt: z.string(),
|
|
102
|
+
});
|
|
103
|
+
export const ListRunsResponseSchema = z.object({
|
|
104
|
+
runs: z.array(RunResponseSchema).optional(),
|
|
105
|
+
nextCursor: z.string().optional(),
|
|
106
|
+
totalCount: z.number().optional(),
|
|
107
|
+
});
|
|
108
|
+
export const RegisterFunctionResponseSchema = z.object({
|
|
109
|
+
created: z.boolean().optional(),
|
|
110
|
+
});
|
|
111
|
+
export const HealthResponseSchema = z.object({
|
|
112
|
+
status: z.string(),
|
|
113
|
+
});
|
|
114
|
+
export const ErrorResponseSchema = z.object({
|
|
115
|
+
code: z.string().optional(),
|
|
116
|
+
message: z.string().optional(),
|
|
117
|
+
});
|
|
118
|
+
export const EmptyResponseSchema = z.object({});
|
|
119
|
+
// ============================================================================
|
|
120
|
+
// Consumer Group Responses
|
|
121
|
+
// ============================================================================
|
|
122
|
+
export const AckModeSchema = z.enum(["ACK_MODE_AUTO", "ACK_MODE_MANUAL", "ACK_MODE_UNSPECIFIED"]);
|
|
123
|
+
export const BackpressureModeSchema = z.enum([
|
|
124
|
+
"BACKPRESSURE_MODE_DROP",
|
|
125
|
+
"BACKPRESSURE_MODE_BLOCK",
|
|
126
|
+
"BACKPRESSURE_MODE_BUFFER",
|
|
127
|
+
"BACKPRESSURE_MODE_UNSPECIFIED",
|
|
128
|
+
]);
|
|
129
|
+
export const ConsumerGroupStatusSchema = z.enum([
|
|
130
|
+
"CONSUMER_GROUP_STATUS_ACTIVE",
|
|
131
|
+
"CONSUMER_GROUP_STATUS_PAUSED",
|
|
132
|
+
"CONSUMER_GROUP_STATUS_DELETED",
|
|
133
|
+
"CONSUMER_GROUP_STATUS_UNSPECIFIED",
|
|
134
|
+
]);
|
|
135
|
+
export const ConsumerGroupResponseSchema = z.object({
|
|
136
|
+
id: z.string(),
|
|
137
|
+
namespace: z.string(),
|
|
138
|
+
name: z.string(),
|
|
139
|
+
pattern: z.string(),
|
|
140
|
+
filterExpr: z.string().optional(),
|
|
141
|
+
ackMode: AckModeSchema.optional(),
|
|
142
|
+
backpressure: BackpressureModeSchema.optional(),
|
|
143
|
+
maxInflight: z.number().optional(),
|
|
144
|
+
maxRedeliveries: z.number().optional(),
|
|
145
|
+
redeliverDelayMs: z.number().optional(),
|
|
146
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
147
|
+
status: ConsumerGroupStatusSchema.optional(),
|
|
148
|
+
memberCount: z.number().optional(),
|
|
149
|
+
createdAt: z.string().optional(),
|
|
150
|
+
updatedAt: z.string().optional(),
|
|
151
|
+
});
|
|
152
|
+
export const ListConsumerGroupsResponseSchema = z.object({
|
|
153
|
+
groups: z.array(ConsumerGroupResponseSchema).optional(),
|
|
154
|
+
nextCursor: z.string().optional(),
|
|
155
|
+
totalCount: z.number().optional(),
|
|
156
|
+
});
|
|
157
|
+
// ============================================================================
|
|
158
|
+
// Worker Job Assignment (worker.ts)
|
|
159
|
+
// ============================================================================
|
|
160
|
+
export const JobCompletedStepSchema = z.object({
|
|
161
|
+
step_id: z.string(),
|
|
162
|
+
name: z.string(),
|
|
163
|
+
output: z.unknown(),
|
|
164
|
+
});
|
|
165
|
+
export const JobEventSchema = z.object({
|
|
166
|
+
id: z.string(),
|
|
167
|
+
name: z.string(),
|
|
168
|
+
data: z.unknown(),
|
|
169
|
+
timestamp: z.string(),
|
|
170
|
+
});
|
|
171
|
+
export const JobContextSchema = z.object({
|
|
172
|
+
trace_id: z.string().optional(),
|
|
173
|
+
metadata: z.record(z.string(), z.string()).optional(),
|
|
174
|
+
});
|
|
175
|
+
export const JobAssignmentSchema = z.object({
|
|
176
|
+
job_id: z.string(),
|
|
177
|
+
run_id: z.string(),
|
|
178
|
+
function_id: z.string(),
|
|
179
|
+
attempt: z.number(),
|
|
180
|
+
event: JobEventSchema,
|
|
181
|
+
completed_steps: z.array(JobCompletedStepSchema),
|
|
182
|
+
actor_id: z.string().optional(),
|
|
183
|
+
context: JobContextSchema.optional(),
|
|
184
|
+
});
|
|
185
|
+
// ============================================================================
|
|
186
|
+
// WebSocket Messages (subscribe.ts)
|
|
187
|
+
// ============================================================================
|
|
188
|
+
export const EventMetadataSchema = z.object({
|
|
189
|
+
timestamp: z.string(),
|
|
190
|
+
sequence: z.number().optional(),
|
|
191
|
+
});
|
|
192
|
+
export const WSSubscriptionResultItemSchema = z.object({
|
|
193
|
+
pattern: z.string(),
|
|
194
|
+
status: z.enum(["ok", "error"]),
|
|
195
|
+
subscriptionId: z.string().optional(),
|
|
196
|
+
code: z.string().optional(),
|
|
197
|
+
message: z.string().optional(),
|
|
198
|
+
});
|
|
199
|
+
export const WSSubscriptionResultSchema = z.object({
|
|
200
|
+
type: z.literal("subscription_result"),
|
|
201
|
+
results: z.array(WSSubscriptionResultItemSchema),
|
|
202
|
+
});
|
|
203
|
+
export const WSEventMessageSchema = z.object({
|
|
204
|
+
type: z.literal("event"),
|
|
205
|
+
subscriptionId: z.string(),
|
|
206
|
+
topic: z.string(),
|
|
207
|
+
data: z.unknown(),
|
|
208
|
+
meta: EventMetadataSchema.optional(),
|
|
209
|
+
eventId: z.string().optional(),
|
|
210
|
+
});
|
|
211
|
+
export const WSSubscriptionErrorSchema = z.object({
|
|
212
|
+
type: z.literal("subscription_error"),
|
|
213
|
+
subscriptionId: z.string(),
|
|
214
|
+
code: z.string(),
|
|
215
|
+
message: z.string(),
|
|
216
|
+
retrying: z.boolean(),
|
|
217
|
+
});
|
|
218
|
+
export const WSErrorSchema = z.object({
|
|
219
|
+
type: z.literal("error"),
|
|
220
|
+
code: z.string(),
|
|
221
|
+
message: z.string(),
|
|
222
|
+
});
|
|
223
|
+
export const WSServerMessageSchema = z.discriminatedUnion("type", [
|
|
224
|
+
WSSubscriptionResultSchema,
|
|
225
|
+
WSEventMessageSchema,
|
|
226
|
+
WSSubscriptionErrorSchema,
|
|
227
|
+
WSErrorSchema,
|
|
228
|
+
]);
|
|
229
|
+
// ============================================================================
|
|
230
|
+
// Validation Helpers
|
|
231
|
+
// ============================================================================
|
|
232
|
+
import { SchemaValidationError } from "./errors.js";
|
|
233
|
+
/**
|
|
234
|
+
* Safely parse JSON and validate against a schema
|
|
235
|
+
* @throws {SchemaValidationError} if parsing or validation fails
|
|
236
|
+
*/
|
|
237
|
+
export function parseAndValidate(schema, data, context) {
|
|
238
|
+
let parsed;
|
|
239
|
+
try {
|
|
240
|
+
parsed = JSON.parse(data);
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
throw new SchemaValidationError(`Invalid JSON in ${context}`);
|
|
244
|
+
}
|
|
245
|
+
const result = schema.safeParse(parsed);
|
|
246
|
+
if (!result.success) {
|
|
247
|
+
const issues = result.error.issues
|
|
248
|
+
.map((i) => `${i.path.join(".")}: ${i.message}`)
|
|
249
|
+
.join(", ");
|
|
250
|
+
throw new SchemaValidationError(`Validation failed in ${context}: ${issues}`, { validationErrors: result.error.issues.map(i => `${i.path.join(".")}: ${i.message}`) });
|
|
251
|
+
}
|
|
252
|
+
return result.data;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Validate data against a schema (already parsed)
|
|
256
|
+
* @throws {SchemaValidationError} if validation fails
|
|
257
|
+
*/
|
|
258
|
+
export function validate(schema, data, context) {
|
|
259
|
+
const result = schema.safeParse(data);
|
|
260
|
+
if (!result.success) {
|
|
261
|
+
const issues = result.error.issues
|
|
262
|
+
.map((i) => `${i.path.join(".")}: ${i.message}`)
|
|
263
|
+
.join(", ");
|
|
264
|
+
throw new SchemaValidationError(`Validation failed in ${context}: ${issues}`, { validationErrors: result.error.issues.map(i => `${i.path.join(".")}: ${i.message}`) });
|
|
265
|
+
}
|
|
266
|
+
return result.data;
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
|