@aigne/afs-mapping 1.11.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,912 @@
1
+ import { z } from "zod";
2
+ import { AFSEntry } from "@aigne/afs";
3
+
4
+ //#region src/binder.d.ts
5
+ /**
6
+ * Parameter Binder
7
+ *
8
+ * Evaluates binding expressions like "path.owner", "query.state | default('open')".
9
+ * Supports pipe operators for transformations.
10
+ */
11
+ /**
12
+ * Context for evaluating binding expressions
13
+ */
14
+ interface BindingContext {
15
+ /** Path parameters extracted from route matching */
16
+ path: Record<string, string>;
17
+ /** Query parameters from URL */
18
+ query: Record<string, string>;
19
+ /** Input data (for write operations) */
20
+ input: Record<string, unknown>;
21
+ /** API response data (for JSONPath expressions) */
22
+ data: unknown;
23
+ }
24
+ /**
25
+ * A pipe operator in an expression
26
+ */
27
+ interface Pipe {
28
+ name: string;
29
+ args: unknown[];
30
+ }
31
+ /**
32
+ * Parsed binding expression
33
+ */
34
+ interface ParsedExpression {
35
+ /** Source type: path, query, input, jsonpath, or literal */
36
+ source: "path" | "query" | "input" | "jsonpath" | "literal";
37
+ /** Key to access (or JSONPath expression, or literal value) */
38
+ key: string;
39
+ /** Pipe operators to apply */
40
+ pipes: Pipe[];
41
+ }
42
+ /**
43
+ * Expression binder for evaluating binding expressions
44
+ */
45
+ declare class ExpressionBinder {
46
+ /**
47
+ * Parse a binding expression string
48
+ */
49
+ parseExpression(expr: string): ParsedExpression;
50
+ /**
51
+ * Split expression by pipe operator, respecting parentheses
52
+ */
53
+ private splitByPipe;
54
+ /**
55
+ * Parse a pipe operator string like "default('open')" or "int"
56
+ */
57
+ private parsePipe;
58
+ /**
59
+ * Parse comma-separated arguments, handling quoted strings and numbers
60
+ */
61
+ private parseArgs;
62
+ /**
63
+ * Parse a value (number or string)
64
+ */
65
+ private parseValue;
66
+ /**
67
+ * Evaluate a binding expression against a context
68
+ */
69
+ evaluate(expr: string, context: BindingContext): unknown;
70
+ /**
71
+ * Get a nested value from an object using dot notation
72
+ */
73
+ private getNestedValue;
74
+ /**
75
+ * Evaluate a simple JSONPath expression
76
+ * Note: This is a simplified implementation supporting basic paths
77
+ */
78
+ private evaluateJsonPath;
79
+ /**
80
+ * Parse JSONPath parts like ".user.login" or "[0].name"
81
+ */
82
+ private parseJsonPathParts;
83
+ /**
84
+ * Apply a pipe operator to a value
85
+ */
86
+ private applyPipe;
87
+ /**
88
+ * Bind multiple expressions and return result object
89
+ */
90
+ bindAll(bindings: Record<string, string>, context: BindingContext): Record<string, unknown>;
91
+ }
92
+ //#endregion
93
+ //#region src/schema.d.ts
94
+ /**
95
+ * Transform entry mapping - how to convert API response fields to AFS entry fields
96
+ */
97
+ declare const transformEntrySchema: z.ZodObject<{
98
+ id: z.ZodOptional<z.ZodString>;
99
+ path: z.ZodOptional<z.ZodString>;
100
+ summary: z.ZodOptional<z.ZodString>;
101
+ description: z.ZodOptional<z.ZodString>;
102
+ content: z.ZodOptional<z.ZodString>;
103
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
104
+ }, z.core.$loose>;
105
+ type TransformEntry = z.infer<typeof transformEntrySchema>;
106
+ /**
107
+ * Transform configuration - how to convert API response to AFS entries
108
+ */
109
+ declare const transformSchema: z.ZodObject<{
110
+ items: z.ZodOptional<z.ZodString>;
111
+ entry: z.ZodOptional<z.ZodObject<{
112
+ id: z.ZodOptional<z.ZodString>;
113
+ path: z.ZodOptional<z.ZodString>;
114
+ summary: z.ZodOptional<z.ZodString>;
115
+ description: z.ZodOptional<z.ZodString>;
116
+ content: z.ZodOptional<z.ZodString>;
117
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
118
+ }, z.core.$loose>>;
119
+ }, z.core.$strip>;
120
+ type Transform = z.infer<typeof transformSchema>;
121
+ /**
122
+ * Operation schema - a single API operation (list, read, write, etc.)
123
+ */
124
+ declare const operationSchema: z.ZodObject<{
125
+ type: z.ZodOptional<z.ZodEnum<{
126
+ http: "http";
127
+ graphql: "graphql";
128
+ "mcp-tool": "mcp-tool";
129
+ }>>;
130
+ method: z.ZodOptional<z.ZodEnum<{
131
+ GET: "GET";
132
+ POST: "POST";
133
+ PUT: "PUT";
134
+ PATCH: "PATCH";
135
+ DELETE: "DELETE";
136
+ }>>;
137
+ path: z.ZodOptional<z.ZodString>;
138
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
139
+ body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
140
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
141
+ query: z.ZodOptional<z.ZodString>;
142
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
143
+ tool: z.ZodOptional<z.ZodString>;
144
+ transform: z.ZodOptional<z.ZodObject<{
145
+ items: z.ZodOptional<z.ZodString>;
146
+ entry: z.ZodOptional<z.ZodObject<{
147
+ id: z.ZodOptional<z.ZodString>;
148
+ path: z.ZodOptional<z.ZodString>;
149
+ summary: z.ZodOptional<z.ZodString>;
150
+ description: z.ZodOptional<z.ZodString>;
151
+ content: z.ZodOptional<z.ZodString>;
152
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
153
+ }, z.core.$loose>>;
154
+ }, z.core.$strip>>;
155
+ }, z.core.$strip>;
156
+ type Operation = z.infer<typeof operationSchema>;
157
+ /**
158
+ * Route definition - operations for a specific path pattern
159
+ */
160
+ declare const routeDefinitionSchema: z.ZodObject<{
161
+ list: z.ZodOptional<z.ZodObject<{
162
+ type: z.ZodOptional<z.ZodEnum<{
163
+ http: "http";
164
+ graphql: "graphql";
165
+ "mcp-tool": "mcp-tool";
166
+ }>>;
167
+ method: z.ZodOptional<z.ZodEnum<{
168
+ GET: "GET";
169
+ POST: "POST";
170
+ PUT: "PUT";
171
+ PATCH: "PATCH";
172
+ DELETE: "DELETE";
173
+ }>>;
174
+ path: z.ZodOptional<z.ZodString>;
175
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
176
+ body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
177
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
178
+ query: z.ZodOptional<z.ZodString>;
179
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
180
+ tool: z.ZodOptional<z.ZodString>;
181
+ transform: z.ZodOptional<z.ZodObject<{
182
+ items: z.ZodOptional<z.ZodString>;
183
+ entry: z.ZodOptional<z.ZodObject<{
184
+ id: z.ZodOptional<z.ZodString>;
185
+ path: z.ZodOptional<z.ZodString>;
186
+ summary: z.ZodOptional<z.ZodString>;
187
+ description: z.ZodOptional<z.ZodString>;
188
+ content: z.ZodOptional<z.ZodString>;
189
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
190
+ }, z.core.$loose>>;
191
+ }, z.core.$strip>>;
192
+ }, z.core.$strip>>;
193
+ read: z.ZodOptional<z.ZodObject<{
194
+ type: z.ZodOptional<z.ZodEnum<{
195
+ http: "http";
196
+ graphql: "graphql";
197
+ "mcp-tool": "mcp-tool";
198
+ }>>;
199
+ method: z.ZodOptional<z.ZodEnum<{
200
+ GET: "GET";
201
+ POST: "POST";
202
+ PUT: "PUT";
203
+ PATCH: "PATCH";
204
+ DELETE: "DELETE";
205
+ }>>;
206
+ path: z.ZodOptional<z.ZodString>;
207
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
208
+ body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
209
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
210
+ query: z.ZodOptional<z.ZodString>;
211
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
212
+ tool: z.ZodOptional<z.ZodString>;
213
+ transform: z.ZodOptional<z.ZodObject<{
214
+ items: z.ZodOptional<z.ZodString>;
215
+ entry: z.ZodOptional<z.ZodObject<{
216
+ id: z.ZodOptional<z.ZodString>;
217
+ path: z.ZodOptional<z.ZodString>;
218
+ summary: z.ZodOptional<z.ZodString>;
219
+ description: z.ZodOptional<z.ZodString>;
220
+ content: z.ZodOptional<z.ZodString>;
221
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
222
+ }, z.core.$loose>>;
223
+ }, z.core.$strip>>;
224
+ }, z.core.$strip>>;
225
+ write: z.ZodOptional<z.ZodObject<{
226
+ type: z.ZodOptional<z.ZodEnum<{
227
+ http: "http";
228
+ graphql: "graphql";
229
+ "mcp-tool": "mcp-tool";
230
+ }>>;
231
+ method: z.ZodOptional<z.ZodEnum<{
232
+ GET: "GET";
233
+ POST: "POST";
234
+ PUT: "PUT";
235
+ PATCH: "PATCH";
236
+ DELETE: "DELETE";
237
+ }>>;
238
+ path: z.ZodOptional<z.ZodString>;
239
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
240
+ body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
241
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
242
+ query: z.ZodOptional<z.ZodString>;
243
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
244
+ tool: z.ZodOptional<z.ZodString>;
245
+ transform: z.ZodOptional<z.ZodObject<{
246
+ items: z.ZodOptional<z.ZodString>;
247
+ entry: z.ZodOptional<z.ZodObject<{
248
+ id: z.ZodOptional<z.ZodString>;
249
+ path: z.ZodOptional<z.ZodString>;
250
+ summary: z.ZodOptional<z.ZodString>;
251
+ description: z.ZodOptional<z.ZodString>;
252
+ content: z.ZodOptional<z.ZodString>;
253
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
254
+ }, z.core.$loose>>;
255
+ }, z.core.$strip>>;
256
+ }, z.core.$strip>>;
257
+ create: z.ZodOptional<z.ZodObject<{
258
+ type: z.ZodOptional<z.ZodEnum<{
259
+ http: "http";
260
+ graphql: "graphql";
261
+ "mcp-tool": "mcp-tool";
262
+ }>>;
263
+ method: z.ZodOptional<z.ZodEnum<{
264
+ GET: "GET";
265
+ POST: "POST";
266
+ PUT: "PUT";
267
+ PATCH: "PATCH";
268
+ DELETE: "DELETE";
269
+ }>>;
270
+ path: z.ZodOptional<z.ZodString>;
271
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
272
+ body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
273
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
274
+ query: z.ZodOptional<z.ZodString>;
275
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
276
+ tool: z.ZodOptional<z.ZodString>;
277
+ transform: z.ZodOptional<z.ZodObject<{
278
+ items: z.ZodOptional<z.ZodString>;
279
+ entry: z.ZodOptional<z.ZodObject<{
280
+ id: z.ZodOptional<z.ZodString>;
281
+ path: z.ZodOptional<z.ZodString>;
282
+ summary: z.ZodOptional<z.ZodString>;
283
+ description: z.ZodOptional<z.ZodString>;
284
+ content: z.ZodOptional<z.ZodString>;
285
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
286
+ }, z.core.$loose>>;
287
+ }, z.core.$strip>>;
288
+ }, z.core.$strip>>;
289
+ delete: z.ZodOptional<z.ZodObject<{
290
+ type: z.ZodOptional<z.ZodEnum<{
291
+ http: "http";
292
+ graphql: "graphql";
293
+ "mcp-tool": "mcp-tool";
294
+ }>>;
295
+ method: z.ZodOptional<z.ZodEnum<{
296
+ GET: "GET";
297
+ POST: "POST";
298
+ PUT: "PUT";
299
+ PATCH: "PATCH";
300
+ DELETE: "DELETE";
301
+ }>>;
302
+ path: z.ZodOptional<z.ZodString>;
303
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
304
+ body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
305
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
306
+ query: z.ZodOptional<z.ZodString>;
307
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
308
+ tool: z.ZodOptional<z.ZodString>;
309
+ transform: z.ZodOptional<z.ZodObject<{
310
+ items: z.ZodOptional<z.ZodString>;
311
+ entry: z.ZodOptional<z.ZodObject<{
312
+ id: z.ZodOptional<z.ZodString>;
313
+ path: z.ZodOptional<z.ZodString>;
314
+ summary: z.ZodOptional<z.ZodString>;
315
+ description: z.ZodOptional<z.ZodString>;
316
+ content: z.ZodOptional<z.ZodString>;
317
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
318
+ }, z.core.$loose>>;
319
+ }, z.core.$strip>>;
320
+ }, z.core.$strip>>;
321
+ }, z.core.$strip>;
322
+ type RouteDefinition = z.infer<typeof routeDefinitionSchema>;
323
+ /**
324
+ * Default configuration applied to all operations
325
+ */
326
+ declare const defaultsSchema: z.ZodObject<{
327
+ baseUrl: z.ZodOptional<z.ZodString>;
328
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
329
+ timeout: z.ZodOptional<z.ZodNumber>;
330
+ }, z.core.$strip>;
331
+ type Defaults = z.infer<typeof defaultsSchema>;
332
+ /**
333
+ * Root mapping configuration schema
334
+ */
335
+ declare const mappingConfigSchema: z.ZodObject<{
336
+ name: z.ZodString;
337
+ version: z.ZodString;
338
+ description: z.ZodOptional<z.ZodString>;
339
+ defaults: z.ZodOptional<z.ZodObject<{
340
+ baseUrl: z.ZodOptional<z.ZodString>;
341
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
342
+ timeout: z.ZodOptional<z.ZodNumber>;
343
+ }, z.core.$strip>>;
344
+ include: z.ZodOptional<z.ZodArray<z.ZodString>>;
345
+ routes: z.ZodRecord<z.ZodString, z.ZodObject<{
346
+ list: z.ZodOptional<z.ZodObject<{
347
+ type: z.ZodOptional<z.ZodEnum<{
348
+ http: "http";
349
+ graphql: "graphql";
350
+ "mcp-tool": "mcp-tool";
351
+ }>>;
352
+ method: z.ZodOptional<z.ZodEnum<{
353
+ GET: "GET";
354
+ POST: "POST";
355
+ PUT: "PUT";
356
+ PATCH: "PATCH";
357
+ DELETE: "DELETE";
358
+ }>>;
359
+ path: z.ZodOptional<z.ZodString>;
360
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
361
+ body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
362
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
363
+ query: z.ZodOptional<z.ZodString>;
364
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
365
+ tool: z.ZodOptional<z.ZodString>;
366
+ transform: z.ZodOptional<z.ZodObject<{
367
+ items: z.ZodOptional<z.ZodString>;
368
+ entry: z.ZodOptional<z.ZodObject<{
369
+ id: z.ZodOptional<z.ZodString>;
370
+ path: z.ZodOptional<z.ZodString>;
371
+ summary: z.ZodOptional<z.ZodString>;
372
+ description: z.ZodOptional<z.ZodString>;
373
+ content: z.ZodOptional<z.ZodString>;
374
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
375
+ }, z.core.$loose>>;
376
+ }, z.core.$strip>>;
377
+ }, z.core.$strip>>;
378
+ read: z.ZodOptional<z.ZodObject<{
379
+ type: z.ZodOptional<z.ZodEnum<{
380
+ http: "http";
381
+ graphql: "graphql";
382
+ "mcp-tool": "mcp-tool";
383
+ }>>;
384
+ method: z.ZodOptional<z.ZodEnum<{
385
+ GET: "GET";
386
+ POST: "POST";
387
+ PUT: "PUT";
388
+ PATCH: "PATCH";
389
+ DELETE: "DELETE";
390
+ }>>;
391
+ path: z.ZodOptional<z.ZodString>;
392
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
393
+ body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
394
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
395
+ query: z.ZodOptional<z.ZodString>;
396
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
397
+ tool: z.ZodOptional<z.ZodString>;
398
+ transform: z.ZodOptional<z.ZodObject<{
399
+ items: z.ZodOptional<z.ZodString>;
400
+ entry: z.ZodOptional<z.ZodObject<{
401
+ id: z.ZodOptional<z.ZodString>;
402
+ path: z.ZodOptional<z.ZodString>;
403
+ summary: z.ZodOptional<z.ZodString>;
404
+ description: z.ZodOptional<z.ZodString>;
405
+ content: z.ZodOptional<z.ZodString>;
406
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
407
+ }, z.core.$loose>>;
408
+ }, z.core.$strip>>;
409
+ }, z.core.$strip>>;
410
+ write: z.ZodOptional<z.ZodObject<{
411
+ type: z.ZodOptional<z.ZodEnum<{
412
+ http: "http";
413
+ graphql: "graphql";
414
+ "mcp-tool": "mcp-tool";
415
+ }>>;
416
+ method: z.ZodOptional<z.ZodEnum<{
417
+ GET: "GET";
418
+ POST: "POST";
419
+ PUT: "PUT";
420
+ PATCH: "PATCH";
421
+ DELETE: "DELETE";
422
+ }>>;
423
+ path: z.ZodOptional<z.ZodString>;
424
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
425
+ body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
426
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
427
+ query: z.ZodOptional<z.ZodString>;
428
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
429
+ tool: z.ZodOptional<z.ZodString>;
430
+ transform: z.ZodOptional<z.ZodObject<{
431
+ items: z.ZodOptional<z.ZodString>;
432
+ entry: z.ZodOptional<z.ZodObject<{
433
+ id: z.ZodOptional<z.ZodString>;
434
+ path: z.ZodOptional<z.ZodString>;
435
+ summary: z.ZodOptional<z.ZodString>;
436
+ description: z.ZodOptional<z.ZodString>;
437
+ content: z.ZodOptional<z.ZodString>;
438
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
439
+ }, z.core.$loose>>;
440
+ }, z.core.$strip>>;
441
+ }, z.core.$strip>>;
442
+ create: z.ZodOptional<z.ZodObject<{
443
+ type: z.ZodOptional<z.ZodEnum<{
444
+ http: "http";
445
+ graphql: "graphql";
446
+ "mcp-tool": "mcp-tool";
447
+ }>>;
448
+ method: z.ZodOptional<z.ZodEnum<{
449
+ GET: "GET";
450
+ POST: "POST";
451
+ PUT: "PUT";
452
+ PATCH: "PATCH";
453
+ DELETE: "DELETE";
454
+ }>>;
455
+ path: z.ZodOptional<z.ZodString>;
456
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
457
+ body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
458
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
459
+ query: z.ZodOptional<z.ZodString>;
460
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
461
+ tool: z.ZodOptional<z.ZodString>;
462
+ transform: z.ZodOptional<z.ZodObject<{
463
+ items: z.ZodOptional<z.ZodString>;
464
+ entry: z.ZodOptional<z.ZodObject<{
465
+ id: z.ZodOptional<z.ZodString>;
466
+ path: z.ZodOptional<z.ZodString>;
467
+ summary: z.ZodOptional<z.ZodString>;
468
+ description: z.ZodOptional<z.ZodString>;
469
+ content: z.ZodOptional<z.ZodString>;
470
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
471
+ }, z.core.$loose>>;
472
+ }, z.core.$strip>>;
473
+ }, z.core.$strip>>;
474
+ delete: z.ZodOptional<z.ZodObject<{
475
+ type: z.ZodOptional<z.ZodEnum<{
476
+ http: "http";
477
+ graphql: "graphql";
478
+ "mcp-tool": "mcp-tool";
479
+ }>>;
480
+ method: z.ZodOptional<z.ZodEnum<{
481
+ GET: "GET";
482
+ POST: "POST";
483
+ PUT: "PUT";
484
+ PATCH: "PATCH";
485
+ DELETE: "DELETE";
486
+ }>>;
487
+ path: z.ZodOptional<z.ZodString>;
488
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
489
+ body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
490
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
491
+ query: z.ZodOptional<z.ZodString>;
492
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
493
+ tool: z.ZodOptional<z.ZodString>;
494
+ transform: z.ZodOptional<z.ZodObject<{
495
+ items: z.ZodOptional<z.ZodString>;
496
+ entry: z.ZodOptional<z.ZodObject<{
497
+ id: z.ZodOptional<z.ZodString>;
498
+ path: z.ZodOptional<z.ZodString>;
499
+ summary: z.ZodOptional<z.ZodString>;
500
+ description: z.ZodOptional<z.ZodString>;
501
+ content: z.ZodOptional<z.ZodString>;
502
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
503
+ }, z.core.$loose>>;
504
+ }, z.core.$strip>>;
505
+ }, z.core.$strip>>;
506
+ }, z.core.$strip>>;
507
+ }, z.core.$strip>;
508
+ type MappingConfig = z.infer<typeof mappingConfigSchema>;
509
+ /**
510
+ * Partial mapping config for included files (no name/version required)
511
+ */
512
+ declare const partialMappingConfigSchema: z.ZodObject<{
513
+ routes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
514
+ list: z.ZodOptional<z.ZodObject<{
515
+ type: z.ZodOptional<z.ZodEnum<{
516
+ http: "http";
517
+ graphql: "graphql";
518
+ "mcp-tool": "mcp-tool";
519
+ }>>;
520
+ method: z.ZodOptional<z.ZodEnum<{
521
+ GET: "GET";
522
+ POST: "POST";
523
+ PUT: "PUT";
524
+ PATCH: "PATCH";
525
+ DELETE: "DELETE";
526
+ }>>;
527
+ path: z.ZodOptional<z.ZodString>;
528
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
529
+ body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
530
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
531
+ query: z.ZodOptional<z.ZodString>;
532
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
533
+ tool: z.ZodOptional<z.ZodString>;
534
+ transform: z.ZodOptional<z.ZodObject<{
535
+ items: z.ZodOptional<z.ZodString>;
536
+ entry: z.ZodOptional<z.ZodObject<{
537
+ id: z.ZodOptional<z.ZodString>;
538
+ path: z.ZodOptional<z.ZodString>;
539
+ summary: z.ZodOptional<z.ZodString>;
540
+ description: z.ZodOptional<z.ZodString>;
541
+ content: z.ZodOptional<z.ZodString>;
542
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
543
+ }, z.core.$loose>>;
544
+ }, z.core.$strip>>;
545
+ }, z.core.$strip>>;
546
+ read: z.ZodOptional<z.ZodObject<{
547
+ type: z.ZodOptional<z.ZodEnum<{
548
+ http: "http";
549
+ graphql: "graphql";
550
+ "mcp-tool": "mcp-tool";
551
+ }>>;
552
+ method: z.ZodOptional<z.ZodEnum<{
553
+ GET: "GET";
554
+ POST: "POST";
555
+ PUT: "PUT";
556
+ PATCH: "PATCH";
557
+ DELETE: "DELETE";
558
+ }>>;
559
+ path: z.ZodOptional<z.ZodString>;
560
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
561
+ body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
562
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
563
+ query: z.ZodOptional<z.ZodString>;
564
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
565
+ tool: z.ZodOptional<z.ZodString>;
566
+ transform: z.ZodOptional<z.ZodObject<{
567
+ items: z.ZodOptional<z.ZodString>;
568
+ entry: z.ZodOptional<z.ZodObject<{
569
+ id: z.ZodOptional<z.ZodString>;
570
+ path: z.ZodOptional<z.ZodString>;
571
+ summary: z.ZodOptional<z.ZodString>;
572
+ description: z.ZodOptional<z.ZodString>;
573
+ content: z.ZodOptional<z.ZodString>;
574
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
575
+ }, z.core.$loose>>;
576
+ }, z.core.$strip>>;
577
+ }, z.core.$strip>>;
578
+ write: z.ZodOptional<z.ZodObject<{
579
+ type: z.ZodOptional<z.ZodEnum<{
580
+ http: "http";
581
+ graphql: "graphql";
582
+ "mcp-tool": "mcp-tool";
583
+ }>>;
584
+ method: z.ZodOptional<z.ZodEnum<{
585
+ GET: "GET";
586
+ POST: "POST";
587
+ PUT: "PUT";
588
+ PATCH: "PATCH";
589
+ DELETE: "DELETE";
590
+ }>>;
591
+ path: z.ZodOptional<z.ZodString>;
592
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
593
+ body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
594
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
595
+ query: z.ZodOptional<z.ZodString>;
596
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
597
+ tool: z.ZodOptional<z.ZodString>;
598
+ transform: z.ZodOptional<z.ZodObject<{
599
+ items: z.ZodOptional<z.ZodString>;
600
+ entry: z.ZodOptional<z.ZodObject<{
601
+ id: z.ZodOptional<z.ZodString>;
602
+ path: z.ZodOptional<z.ZodString>;
603
+ summary: z.ZodOptional<z.ZodString>;
604
+ description: z.ZodOptional<z.ZodString>;
605
+ content: z.ZodOptional<z.ZodString>;
606
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
607
+ }, z.core.$loose>>;
608
+ }, z.core.$strip>>;
609
+ }, z.core.$strip>>;
610
+ create: z.ZodOptional<z.ZodObject<{
611
+ type: z.ZodOptional<z.ZodEnum<{
612
+ http: "http";
613
+ graphql: "graphql";
614
+ "mcp-tool": "mcp-tool";
615
+ }>>;
616
+ method: z.ZodOptional<z.ZodEnum<{
617
+ GET: "GET";
618
+ POST: "POST";
619
+ PUT: "PUT";
620
+ PATCH: "PATCH";
621
+ DELETE: "DELETE";
622
+ }>>;
623
+ path: z.ZodOptional<z.ZodString>;
624
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
625
+ body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
626
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
627
+ query: z.ZodOptional<z.ZodString>;
628
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
629
+ tool: z.ZodOptional<z.ZodString>;
630
+ transform: z.ZodOptional<z.ZodObject<{
631
+ items: z.ZodOptional<z.ZodString>;
632
+ entry: z.ZodOptional<z.ZodObject<{
633
+ id: z.ZodOptional<z.ZodString>;
634
+ path: z.ZodOptional<z.ZodString>;
635
+ summary: z.ZodOptional<z.ZodString>;
636
+ description: z.ZodOptional<z.ZodString>;
637
+ content: z.ZodOptional<z.ZodString>;
638
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
639
+ }, z.core.$loose>>;
640
+ }, z.core.$strip>>;
641
+ }, z.core.$strip>>;
642
+ delete: z.ZodOptional<z.ZodObject<{
643
+ type: z.ZodOptional<z.ZodEnum<{
644
+ http: "http";
645
+ graphql: "graphql";
646
+ "mcp-tool": "mcp-tool";
647
+ }>>;
648
+ method: z.ZodOptional<z.ZodEnum<{
649
+ GET: "GET";
650
+ POST: "POST";
651
+ PUT: "PUT";
652
+ PATCH: "PATCH";
653
+ DELETE: "DELETE";
654
+ }>>;
655
+ path: z.ZodOptional<z.ZodString>;
656
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
657
+ body: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
658
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
659
+ query: z.ZodOptional<z.ZodString>;
660
+ variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
661
+ tool: z.ZodOptional<z.ZodString>;
662
+ transform: z.ZodOptional<z.ZodObject<{
663
+ items: z.ZodOptional<z.ZodString>;
664
+ entry: z.ZodOptional<z.ZodObject<{
665
+ id: z.ZodOptional<z.ZodString>;
666
+ path: z.ZodOptional<z.ZodString>;
667
+ summary: z.ZodOptional<z.ZodString>;
668
+ description: z.ZodOptional<z.ZodString>;
669
+ content: z.ZodOptional<z.ZodString>;
670
+ meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
671
+ }, z.core.$loose>>;
672
+ }, z.core.$strip>>;
673
+ }, z.core.$strip>>;
674
+ }, z.core.$strip>>>;
675
+ defaults: z.ZodOptional<z.ZodObject<{
676
+ baseUrl: z.ZodOptional<z.ZodString>;
677
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
678
+ timeout: z.ZodOptional<z.ZodNumber>;
679
+ }, z.core.$strip>>;
680
+ }, z.core.$strip>;
681
+ type PartialMappingConfig = z.infer<typeof partialMappingConfigSchema>;
682
+ //#endregion
683
+ //#region src/compiler.d.ts
684
+ /**
685
+ * Operation types supported by routes
686
+ */
687
+ type OperationType = "list" | "read" | "write" | "create" | "delete";
688
+ /**
689
+ * Resolved route information
690
+ */
691
+ interface ResolvedRoute {
692
+ /** Original template */
693
+ template: string;
694
+ /** Extracted path parameters */
695
+ params: Record<string, string>;
696
+ /** Available operations */
697
+ operations: Partial<Record<OperationType, Operation>>;
698
+ }
699
+ /**
700
+ * HTTP request built from route and operation
701
+ */
702
+ interface HttpRequest {
703
+ /** HTTP method */
704
+ method: string;
705
+ /** Request path (with params interpolated) */
706
+ path: string;
707
+ /** Query/path parameters */
708
+ params: Record<string, unknown>;
709
+ /** Request headers */
710
+ headers?: Record<string, string>;
711
+ /** Request body (for POST/PUT/PATCH) */
712
+ body?: Record<string, unknown>;
713
+ }
714
+ /**
715
+ * Compiled mapping ready for runtime use
716
+ */
717
+ declare class CompiledMapping {
718
+ readonly name: string;
719
+ readonly version: string;
720
+ readonly description?: string;
721
+ readonly defaults?: Defaults;
722
+ private resolver;
723
+ private binder;
724
+ private projector;
725
+ private routes;
726
+ constructor(config: MappingConfig);
727
+ /**
728
+ * Get number of routes
729
+ */
730
+ get routeCount(): number;
731
+ /**
732
+ * Get total number of operations
733
+ */
734
+ get operationCount(): number;
735
+ /**
736
+ * Resolve a path to route information
737
+ */
738
+ resolve(path: string): ResolvedRoute | null;
739
+ /**
740
+ * Build an HTTP request for a given path and operation
741
+ */
742
+ buildRequest(afsPath: string, operationType: OperationType, options: {
743
+ query?: Record<string, string>;
744
+ input?: Record<string, unknown>;
745
+ }): HttpRequest | null;
746
+ /**
747
+ * Project API response to AFS entries
748
+ */
749
+ projectResponse(afsPath: string, operationType: OperationType, apiResponse: unknown): AFSEntry[];
750
+ /**
751
+ * Interpolate path template with context values
752
+ */
753
+ private interpolatePath;
754
+ }
755
+ /**
756
+ * Compiler for mapping configurations
757
+ */
758
+ declare class MappingCompiler {
759
+ private parser;
760
+ /**
761
+ * Compile a mapping file
762
+ */
763
+ compileFile(filePath: string): Promise<CompiledMapping>;
764
+ /**
765
+ * Compile a mapping directory
766
+ */
767
+ compileDirectory(dirPath: string): Promise<CompiledMapping>;
768
+ /**
769
+ * Compile from a config object (for testing)
770
+ */
771
+ compileConfig(config: MappingConfig): CompiledMapping;
772
+ }
773
+ //#endregion
774
+ //#region src/parser.d.ts
775
+ /**
776
+ * Error thrown when parsing fails
777
+ */
778
+ declare class MappingParseError extends Error {
779
+ readonly filePath?: string | undefined;
780
+ readonly cause?: Error | undefined;
781
+ constructor(message: string, filePath?: string | undefined, cause?: Error | undefined);
782
+ }
783
+ /**
784
+ * Parser for mapping configuration files
785
+ */
786
+ declare class MappingParser {
787
+ /**
788
+ * Parse a YAML string into a validated mapping config
789
+ */
790
+ parseString(yaml: string, filePath?: string): MappingConfig;
791
+ /**
792
+ * Parse a partial config string (for included files)
793
+ */
794
+ parsePartialString(yaml: string, filePath?: string): PartialMappingConfig;
795
+ /**
796
+ * Parse a mapping file and resolve includes
797
+ */
798
+ parseFile(filePath: string, visitedPaths?: Set<string>): Promise<MappingConfig>;
799
+ /**
800
+ * Parse a partial mapping file (for includes)
801
+ */
802
+ parsePartialFile(filePath: string, visitedPaths?: Set<string>): Promise<PartialMappingConfig>;
803
+ /**
804
+ * Parse a directory containing index.yaml and potentially included files
805
+ */
806
+ parseDirectory(dirPath: string): Promise<MappingConfig>;
807
+ }
808
+ //#endregion
809
+ //#region src/projector.d.ts
810
+ /**
811
+ * Projects API response data to AFS entries
812
+ */
813
+ declare class Projector {
814
+ private binder;
815
+ /**
816
+ * Project data to AFS entries based on transform config
817
+ */
818
+ project(data: unknown, transform: Transform, pathParams: Record<string, string>): AFSEntry[];
819
+ /**
820
+ * Project a list of items
821
+ */
822
+ projectList(data: unknown, transform: Transform, pathParams: Record<string, string>): AFSEntry[];
823
+ /**
824
+ * Project a single item to an AFS entry
825
+ */
826
+ projectItem(data: unknown, transform: Transform, pathParams: Record<string, string>): AFSEntry;
827
+ /**
828
+ * Evaluate a single field expression
829
+ */
830
+ private evaluateField;
831
+ /**
832
+ * Interpolate a path template with data and path params
833
+ * Handles both {name} for path params and {$.path} for JSONPath
834
+ */
835
+ private interpolatePath;
836
+ /**
837
+ * Project metadata object recursively
838
+ */
839
+ private projectMetadata;
840
+ /**
841
+ * Evaluate a JSONPath expression
842
+ */
843
+ private evaluateJsonPath;
844
+ }
845
+ //#endregion
846
+ //#region src/resolver.d.ts
847
+ /**
848
+ * Path Resolver
849
+ *
850
+ * Efficient path template matching using a Trie structure.
851
+ * Supports parameterized path segments like /{owner}/{repo}/issues/{number}.
852
+ */
853
+ /**
854
+ * Result of a path match
855
+ */
856
+ interface PathMatchResult<T> {
857
+ /** The matched template string */
858
+ template: string;
859
+ /** Extracted path parameters */
860
+ params: Record<string, string>;
861
+ /** Associated data */
862
+ data: T;
863
+ }
864
+ /**
865
+ * Represents a parsed path template
866
+ */
867
+ declare class PathTemplate {
868
+ /** Original template string */
869
+ readonly template: string;
870
+ /** Parsed segments */
871
+ readonly segments: string[];
872
+ /** Parameter names in order */
873
+ readonly params: string[];
874
+ private constructor();
875
+ /**
876
+ * Parse a path template string
877
+ */
878
+ static parse(template: string): PathTemplate;
879
+ /**
880
+ * Try to match a path against this template
881
+ */
882
+ match(path: string): {
883
+ params: Record<string, string>;
884
+ } | null;
885
+ }
886
+ /**
887
+ * Path resolver using Trie for O(k) lookup where k = path depth
888
+ */
889
+ declare class PathResolver<T> {
890
+ private root;
891
+ constructor();
892
+ private createNode;
893
+ /**
894
+ * Add a route template with associated data
895
+ */
896
+ addRoute(template: string, data: T): void;
897
+ /**
898
+ * Resolve a path to a route
899
+ */
900
+ resolve(path: string): PathMatchResult<T> | null;
901
+ /**
902
+ * Get all registered routes
903
+ */
904
+ getAllRoutes(): Array<{
905
+ template: string;
906
+ data: T;
907
+ }>;
908
+ private collectRoutes;
909
+ }
910
+ //#endregion
911
+ export { BindingContext, CompiledMapping, Defaults, ExpressionBinder, HttpRequest, MappingCompiler, MappingConfig, MappingParseError, MappingParser, Operation, OperationType, ParsedExpression, PartialMappingConfig, PathMatchResult, PathResolver, PathTemplate, Pipe, Projector, ResolvedRoute, RouteDefinition, type Transform, TransformEntry, defaultsSchema, mappingConfigSchema, operationSchema, partialMappingConfigSchema, routeDefinitionSchema, transformEntrySchema, transformSchema };
912
+ //# sourceMappingURL=index.d.mts.map