aves-sdk 1.3.3 → 1.3.4

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/dist/index.d.mts CHANGED
@@ -36,7 +36,7 @@ declare const BookingFileSchema: v.ObjectSchema<{
36
36
  readonly currencyCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
37
37
  readonly markupCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
38
38
  readonly bookingFileStatus: v.ObjectSchema<{
39
- readonly value: v.UnionSchema<[v.LiteralSchema<"QUOTATION", undefined>, v.LiteralSchema<"WORK_IN_PROGRESS", undefined>, v.LiteralSchema<"CONFIRM", undefined>, v.LiteralSchema<"CONFIRMED", undefined>, v.LiteralSchema<"OPTION", undefined>, v.LiteralSchema<"OPTIONED", undefined>, v.LiteralSchema<"REQUEST", undefined>, v.LiteralSchema<"CANCELED", undefined>], undefined>;
39
+ readonly value: v.UnionSchema<[v.LiteralSchema<"QUOTATION", undefined>, v.LiteralSchema<"WORK_IN_PROGRESS", undefined>, v.LiteralSchema<"CONFIRMED", undefined>, v.LiteralSchema<"OPTIONED", undefined>, v.LiteralSchema<"CANCELED", undefined>], undefined>;
40
40
  readonly expiredDate: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
41
41
  }, undefined>;
42
42
  readonly statisticCodes: v.OptionalSchema<v.ObjectSchema<{
@@ -104,155 +104,83 @@ declare const BookingFileSchema: v.ObjectSchema<{
104
104
  readonly getServicesFromPackage: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<"true", undefined>, v.LiteralSchema<"false", undefined>, v.BooleanSchema<undefined>], undefined>, undefined>;
105
105
  }, undefined>, undefined>, undefined>;
106
106
  }, undefined>, undefined>;
107
- readonly selectedServiceList: v.ObjectSchema<{
108
- readonly selectedServiceDetail: v.SchemaWithPipe<readonly [v.UnionSchema<[v.ArraySchema<v.ObjectSchema<{
107
+ readonly selectedServiceList: v.ArraySchema<v.ObjectSchema<{
108
+ readonly selectedServiceDetail: v.ObjectSchema<{
109
109
  readonly sCode: v.StringSchema<undefined>;
110
110
  readonly ssCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
111
- readonly avesServiceType: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<"TOP", undefined>, v.LiteralSchema<"TOP_SS", undefined>, v.LiteralSchema<"ADV", undefined>, v.LiteralSchema<"GRP", undefined>, v.LiteralSchema<"OTHER", undefined>], undefined>, undefined>;
111
+ readonly avesServiceType: v.UnionSchema<[v.LiteralSchema<"TOP", undefined>, v.LiteralSchema<"TOP_SS", undefined>, v.LiteralSchema<"ADV", undefined>, v.LiteralSchema<"GRP", undefined>, v.LiteralSchema<"OTHER", undefined>], undefined>;
112
112
  readonly toServiceType: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<"ACCOMODATION", undefined>, v.LiteralSchema<"TRANSPORT", undefined>, v.LiteralSchema<"CHARTER", undefined>, v.LiteralSchema<"TRANSFER", undefined>, v.LiteralSchema<"PULLMAN", undefined>, v.LiteralSchema<"FERRY", undefined>, v.LiteralSchema<"CRUISE", undefined>, v.LiteralSchema<"INSURANCE", undefined>, v.LiteralSchema<"EXTRAFEE", undefined>, v.LiteralSchema<"PENALTY", undefined>, v.LiteralSchema<"PROMO", undefined>, v.LiteralSchema<"OTHER", undefined>, v.LiteralSchema<"NOT_SET", undefined>, v.LiteralSchema<"RESIDENCE", undefined>], undefined>, undefined>;
113
113
  readonly subServiceDesc: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
114
- readonly startDate: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
115
- readonly endDate: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
116
- readonly qty: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
117
- readonly pax: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
118
- readonly paxAssociated: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
119
- readonly pax: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
120
- }, undefined>, undefined>, undefined>;
121
- readonly avesSession: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
122
- readonly avesServiceInfo: v.OptionalSchema<v.ObjectSchema<{
123
- readonly packageCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
124
- readonly packageReference: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
125
- }, undefined>, undefined>;
126
- readonly supplierMasterCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
127
- readonly supplierName: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
128
- readonly supplierMasterSearchField: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
129
- readonly supplierFiscalCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
130
- }, undefined>, undefined>, v.ObjectSchema<{
131
- readonly sCode: v.StringSchema<undefined>;
132
- readonly ssCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
133
- readonly avesServiceType: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<"TOP", undefined>, v.LiteralSchema<"TOP_SS", undefined>, v.LiteralSchema<"ADV", undefined>, v.LiteralSchema<"GRP", undefined>, v.LiteralSchema<"OTHER", undefined>], undefined>, undefined>;
134
- readonly toServiceType: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<"ACCOMODATION", undefined>, v.LiteralSchema<"TRANSPORT", undefined>, v.LiteralSchema<"CHARTER", undefined>, v.LiteralSchema<"TRANSFER", undefined>, v.LiteralSchema<"PULLMAN", undefined>, v.LiteralSchema<"FERRY", undefined>, v.LiteralSchema<"CRUISE", undefined>, v.LiteralSchema<"INSURANCE", undefined>, v.LiteralSchema<"EXTRAFEE", undefined>, v.LiteralSchema<"PENALTY", undefined>, v.LiteralSchema<"PROMO", undefined>, v.LiteralSchema<"OTHER", undefined>, v.LiteralSchema<"NOT_SET", undefined>, v.LiteralSchema<"RESIDENCE", undefined>], undefined>, undefined>;
135
- readonly subServiceDesc: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
136
- readonly startDate: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
137
- readonly endDate: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
138
- readonly qty: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
139
- readonly pax: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
114
+ readonly startDate: v.StringSchema<undefined>;
115
+ readonly endDate: v.StringSchema<undefined>;
116
+ readonly qty: v.StringSchema<undefined>;
117
+ readonly pax: v.StringSchema<undefined>;
140
118
  readonly paxAssociated: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
141
- readonly pax: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
119
+ readonly pax: v.StringSchema<undefined>;
142
120
  }, undefined>, undefined>, undefined>;
143
- readonly avesSession: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
121
+ readonly avesSession: v.StringSchema<undefined>;
144
122
  readonly avesServiceInfo: v.OptionalSchema<v.ObjectSchema<{
145
123
  readonly packageCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
146
124
  readonly packageReference: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
147
125
  }, undefined>, undefined>;
148
126
  readonly supplierMasterCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
149
- readonly supplierName: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
150
- readonly supplierMasterSearchField: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
151
- readonly supplierFiscalCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
152
- }, undefined>], undefined>, v.TransformAction<{
153
- sCode: string;
154
- ssCode?: string | undefined;
155
- avesServiceType?: "TOP" | "TOP_SS" | "ADV" | "GRP" | "OTHER" | undefined;
156
- toServiceType?: "OTHER" | "ACCOMODATION" | "TRANSPORT" | "CHARTER" | "TRANSFER" | "PULLMAN" | "FERRY" | "CRUISE" | "INSURANCE" | "EXTRAFEE" | "PENALTY" | "PROMO" | "NOT_SET" | "RESIDENCE" | undefined;
157
- subServiceDesc?: string | undefined;
158
- startDate?: string | undefined;
159
- endDate?: string | undefined;
160
- qty?: string | undefined;
161
- pax?: string | undefined;
162
- paxAssociated?: {
163
- pax?: string | undefined;
164
- }[] | undefined;
165
- avesSession?: string | undefined;
166
- avesServiceInfo?: {
167
- packageCode?: string | undefined;
168
- packageReference?: string | undefined;
169
- } | undefined;
170
- supplierMasterCode?: string | undefined;
171
- supplierName?: string | undefined;
172
- supplierMasterSearchField?: string | undefined;
173
- supplierFiscalCode?: string | undefined;
174
- } | {
175
- sCode: string;
176
- ssCode?: string | undefined;
177
- avesServiceType?: "TOP" | "TOP_SS" | "ADV" | "GRP" | "OTHER" | undefined;
178
- toServiceType?: "OTHER" | "ACCOMODATION" | "TRANSPORT" | "CHARTER" | "TRANSFER" | "PULLMAN" | "FERRY" | "CRUISE" | "INSURANCE" | "EXTRAFEE" | "PENALTY" | "PROMO" | "NOT_SET" | "RESIDENCE" | undefined;
179
- subServiceDesc?: string | undefined;
180
- startDate?: string | undefined;
181
- endDate?: string | undefined;
182
- qty?: string | undefined;
183
- pax?: string | undefined;
184
- paxAssociated?: {
185
- pax?: string | undefined;
186
- }[] | undefined;
187
- avesSession?: string | undefined;
188
- avesServiceInfo?: {
189
- packageCode?: string | undefined;
190
- packageReference?: string | undefined;
191
- } | undefined;
192
- supplierMasterCode?: string | undefined;
193
- supplierName?: string | undefined;
194
- supplierMasterSearchField?: string | undefined;
195
- supplierFiscalCode?: string | undefined;
196
- }[], {
197
- sCode: string;
198
- ssCode?: string | undefined;
199
- avesServiceType?: "TOP" | "TOP_SS" | "ADV" | "GRP" | "OTHER" | undefined;
200
- toServiceType?: "OTHER" | "ACCOMODATION" | "TRANSPORT" | "CHARTER" | "TRANSFER" | "PULLMAN" | "FERRY" | "CRUISE" | "INSURANCE" | "EXTRAFEE" | "PENALTY" | "PROMO" | "NOT_SET" | "RESIDENCE" | undefined;
201
- subServiceDesc?: string | undefined;
202
- startDate?: string | undefined;
203
- endDate?: string | undefined;
204
- qty?: string | undefined;
205
- pax?: string | undefined;
206
- paxAssociated?: {
207
- pax?: string | undefined;
208
- }[] | undefined;
209
- avesSession?: string | undefined;
210
- avesServiceInfo?: {
211
- packageCode?: string | undefined;
212
- packageReference?: string | undefined;
213
- } | undefined;
214
- supplierMasterCode?: string | undefined;
215
- supplierName?: string | undefined;
216
- supplierMasterSearchField?: string | undefined;
217
- supplierFiscalCode?: string | undefined;
218
- }[]>]>;
219
- }, undefined>;
127
+ readonly voucherMasterCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
128
+ readonly hotelServiceInfo: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
129
+ readonly carRentalServiceInfo: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
130
+ readonly flightServiceInfo: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
131
+ readonly shipServiceInfo: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
132
+ readonly ticketServiceInfo: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
133
+ readonly commission: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
134
+ readonly noteList: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
135
+ readonly voucherInfo: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
136
+ readonly firstDescription: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
137
+ readonly secondDescription: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
138
+ }, undefined>;
139
+ }, undefined>, undefined>;
220
140
  readonly extraQuotaRefCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
221
141
  readonly extraQuoteServiceList: v.OptionalSchema<v.ObjectSchema<{
222
142
  readonly extraQuoteServiceDetail: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
223
143
  readonly sCode: v.StringSchema<undefined>;
224
144
  readonly ssCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
225
- readonly avesServiceType: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<"TOP", undefined>, v.LiteralSchema<"TOP_SS", undefined>, v.LiteralSchema<"ADV", undefined>, v.LiteralSchema<"GRP", undefined>, v.LiteralSchema<"OTHER", undefined>], undefined>, undefined>;
145
+ readonly avesServiceType: v.UnionSchema<[v.LiteralSchema<"TOP", undefined>, v.LiteralSchema<"TOP_SS", undefined>, v.LiteralSchema<"ADV", undefined>, v.LiteralSchema<"GRP", undefined>, v.LiteralSchema<"OTHER", undefined>], undefined>;
226
146
  readonly toServiceType: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<"ACCOMODATION", undefined>, v.LiteralSchema<"TRANSPORT", undefined>, v.LiteralSchema<"CHARTER", undefined>, v.LiteralSchema<"TRANSFER", undefined>, v.LiteralSchema<"PULLMAN", undefined>, v.LiteralSchema<"FERRY", undefined>, v.LiteralSchema<"CRUISE", undefined>, v.LiteralSchema<"INSURANCE", undefined>, v.LiteralSchema<"EXTRAFEE", undefined>, v.LiteralSchema<"PENALTY", undefined>, v.LiteralSchema<"PROMO", undefined>, v.LiteralSchema<"OTHER", undefined>, v.LiteralSchema<"NOT_SET", undefined>, v.LiteralSchema<"RESIDENCE", undefined>], undefined>, undefined>;
227
147
  readonly subServiceDesc: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
228
- readonly startDate: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
229
- readonly endDate: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
230
- readonly qty: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
231
- readonly pax: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
148
+ readonly startDate: v.StringSchema<undefined>;
149
+ readonly endDate: v.StringSchema<undefined>;
150
+ readonly qty: v.StringSchema<undefined>;
151
+ readonly pax: v.StringSchema<undefined>;
232
152
  readonly paxAssociated: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
233
- readonly pax: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
153
+ readonly pax: v.StringSchema<undefined>;
234
154
  }, undefined>, undefined>, undefined>;
235
- readonly avesSession: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
155
+ readonly avesSession: v.StringSchema<undefined>;
236
156
  readonly avesServiceInfo: v.OptionalSchema<v.ObjectSchema<{
237
157
  readonly packageCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
238
158
  readonly packageReference: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
239
159
  }, undefined>, undefined>;
240
160
  readonly supplierMasterCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
241
- readonly supplierName: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
242
- readonly supplierMasterSearchField: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
243
- readonly supplierFiscalCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
161
+ readonly voucherMasterCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
162
+ readonly hotelServiceInfo: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
163
+ readonly carRentalServiceInfo: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
164
+ readonly flightServiceInfo: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
165
+ readonly shipServiceInfo: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
166
+ readonly ticketServiceInfo: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
167
+ readonly commission: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
168
+ readonly noteList: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
169
+ readonly voucherInfo: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
170
+ readonly firstDescription: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
171
+ readonly secondDescription: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
244
172
  }, undefined>, undefined>, undefined>;
245
173
  }, undefined>, undefined>;
246
174
  readonly getExtraQuoteFromSystem: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<"true", undefined>, v.LiteralSchema<"false", undefined>, v.BooleanSchema<undefined>], undefined>, undefined>;
247
- readonly passengerList: v.ObjectSchema<{
248
- readonly passengerDetail: v.SchemaWithPipe<readonly [v.UnionSchema<[v.ArraySchema<v.ObjectSchema<{
175
+ readonly passengerList: v.ArraySchema<v.ObjectSchema<{
176
+ readonly passengerDetail: v.ObjectSchema<{
249
177
  readonly rph: v.StringSchema<undefined>;
250
178
  readonly roomRph: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
251
179
  readonly billingHolder: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<"true", undefined>, v.LiteralSchema<"false", undefined>, v.BooleanSchema<undefined>], undefined>, undefined>;
252
180
  readonly masterRecordCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
253
181
  readonly name: v.StringSchema<undefined>;
254
182
  readonly categoryCode: v.UnionSchema<[v.LiteralSchema<"AD", undefined>, v.LiteralSchema<"CH", undefined>, v.LiteralSchema<"IN", undefined>, v.LiteralSchema<"OV", undefined>], undefined>;
255
- readonly sex: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<"M", undefined>, v.LiteralSchema<"F", undefined>], undefined>, undefined>;
183
+ readonly sex: v.UnionSchema<[v.LiteralSchema<"M", undefined>, v.LiteralSchema<"F", undefined>], undefined>;
256
184
  readonly birthDate: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
257
185
  readonly birthPlace: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
258
186
  readonly nationCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
@@ -275,128 +203,8 @@ declare const BookingFileSchema: v.ObjectSchema<{
275
203
  readonly idIssueDate: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
276
204
  readonly idExpireDate: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
277
205
  }, undefined>, undefined>;
278
- }, undefined>, undefined>, v.ObjectSchema<{
279
- readonly rph: v.StringSchema<undefined>;
280
- readonly roomRph: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
281
- readonly billingHolder: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<"true", undefined>, v.LiteralSchema<"false", undefined>, v.BooleanSchema<undefined>], undefined>, undefined>;
282
- readonly masterRecordCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
283
- readonly name: v.StringSchema<undefined>;
284
- readonly categoryCode: v.UnionSchema<[v.LiteralSchema<"AD", undefined>, v.LiteralSchema<"CH", undefined>, v.LiteralSchema<"IN", undefined>, v.LiteralSchema<"OV", undefined>], undefined>;
285
- readonly sex: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<"M", undefined>, v.LiteralSchema<"F", undefined>], undefined>, undefined>;
286
- readonly birthDate: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
287
- readonly birthPlace: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
288
- readonly nationCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
289
- readonly citizenshipCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
290
- readonly fiscalCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
291
- readonly phoneNumber: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
292
- readonly eMail: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
293
- readonly notes: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
294
- readonly nType: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
295
- readonly title: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
296
- readonly text: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
297
- }, undefined>, undefined>, undefined>;
298
- readonly flagStatus: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
299
- readonly offerCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
300
- readonly idDocInfo: v.OptionalSchema<v.ObjectSchema<{
301
- readonly idType: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
302
- readonly idCode: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
303
- readonly idIssueLocation: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
304
- readonly idIssueCounty: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
305
- readonly idIssueDate: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
306
- readonly idExpireDate: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
307
- }, undefined>, undefined>;
308
- }, undefined>], undefined>, v.TransformAction<{
309
- rph: string;
310
- roomRph?: string | undefined;
311
- billingHolder?: boolean | "true" | "false" | undefined;
312
- masterRecordCode?: string | undefined;
313
- name: string;
314
- categoryCode: "AD" | "CH" | "IN" | "OV";
315
- sex?: "M" | "F" | undefined;
316
- birthDate?: string | undefined;
317
- birthPlace?: string | undefined;
318
- nationCode?: string | undefined;
319
- citizenshipCode?: string | undefined;
320
- fiscalCode?: string | undefined;
321
- phoneNumber?: string | undefined;
322
- eMail?: string | undefined;
323
- notes?: {
324
- nType?: string | undefined;
325
- title?: string | undefined;
326
- text?: string | undefined;
327
- }[] | undefined;
328
- flagStatus?: string | undefined;
329
- offerCode?: string | undefined;
330
- idDocInfo?: {
331
- idType?: string | undefined;
332
- idCode?: string | undefined;
333
- idIssueLocation?: string | undefined;
334
- idIssueCounty?: string | undefined;
335
- idIssueDate?: string | undefined;
336
- idExpireDate?: string | undefined;
337
- } | undefined;
338
- } | {
339
- rph: string;
340
- roomRph?: string | undefined;
341
- billingHolder?: boolean | "true" | "false" | undefined;
342
- masterRecordCode?: string | undefined;
343
- name: string;
344
- categoryCode: "AD" | "CH" | "IN" | "OV";
345
- sex?: "M" | "F" | undefined;
346
- birthDate?: string | undefined;
347
- birthPlace?: string | undefined;
348
- nationCode?: string | undefined;
349
- citizenshipCode?: string | undefined;
350
- fiscalCode?: string | undefined;
351
- phoneNumber?: string | undefined;
352
- eMail?: string | undefined;
353
- notes?: {
354
- nType?: string | undefined;
355
- title?: string | undefined;
356
- text?: string | undefined;
357
- }[] | undefined;
358
- flagStatus?: string | undefined;
359
- offerCode?: string | undefined;
360
- idDocInfo?: {
361
- idType?: string | undefined;
362
- idCode?: string | undefined;
363
- idIssueLocation?: string | undefined;
364
- idIssueCounty?: string | undefined;
365
- idIssueDate?: string | undefined;
366
- idExpireDate?: string | undefined;
367
- } | undefined;
368
- }[], {
369
- rph: string;
370
- roomRph?: string | undefined;
371
- billingHolder?: boolean | "true" | "false" | undefined;
372
- masterRecordCode?: string | undefined;
373
- name: string;
374
- categoryCode: "AD" | "CH" | "IN" | "OV";
375
- sex?: "M" | "F" | undefined;
376
- birthDate?: string | undefined;
377
- birthPlace?: string | undefined;
378
- nationCode?: string | undefined;
379
- citizenshipCode?: string | undefined;
380
- fiscalCode?: string | undefined;
381
- phoneNumber?: string | undefined;
382
- eMail?: string | undefined;
383
- notes?: {
384
- nType?: string | undefined;
385
- title?: string | undefined;
386
- text?: string | undefined;
387
- }[] | undefined;
388
- flagStatus?: string | undefined;
389
- offerCode?: string | undefined;
390
- idDocInfo?: {
391
- idType?: string | undefined;
392
- idCode?: string | undefined;
393
- idIssueLocation?: string | undefined;
394
- idIssueCounty?: string | undefined;
395
- idIssueDate?: string | undefined;
396
- idExpireDate?: string | undefined;
397
- } | undefined;
398
- }[]>]>;
399
- }, undefined>;
206
+ }, undefined>;
207
+ }, undefined>, undefined>;
400
208
  readonly noteList: v.OptionalSchema<v.ObjectSchema<{
401
209
  readonly noteDetail: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
402
210
  readonly nType: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
@@ -425,12 +233,12 @@ declare const BookingFileResponseSchema: v.SchemaWithPipe<readonly [v.ObjectSche
425
233
  readonly ErrorDescription: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
426
234
  readonly Warnings: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TransformAction<string, string[]>]>, undefined>;
427
235
  }, undefined>, v.TransformAction<{
428
- "@Status": "WARNING" | "OK" | "ERROR" | "TIMEOUT";
236
+ "@Status": "OK" | "ERROR" | "WARNING" | "TIMEOUT";
429
237
  ErrorCode?: number | undefined;
430
238
  ErrorDescription?: string | undefined;
431
239
  Warnings?: string[] | undefined;
432
240
  }, {
433
- status: "WARNING" | "OK" | "ERROR" | "TIMEOUT";
241
+ status: "OK" | "ERROR" | "WARNING" | "TIMEOUT";
434
242
  errorCode: number | undefined;
435
243
  errorDescription: string | undefined;
436
244
  warnings: string[] | undefined;
@@ -438,7 +246,7 @@ declare const BookingFileResponseSchema: v.SchemaWithPipe<readonly [v.ObjectSche
438
246
  readonly BookingFileDetail: v.OptionalSchema<v.AnySchema, undefined>;
439
247
  }, undefined>, v.TransformAction<{
440
248
  RsStatus: {
441
- status: "WARNING" | "OK" | "ERROR" | "TIMEOUT";
249
+ status: "OK" | "ERROR" | "WARNING" | "TIMEOUT";
442
250
  errorCode: number | undefined;
443
251
  errorDescription: string | undefined;
444
252
  warnings: string[] | undefined;
@@ -446,7 +254,7 @@ declare const BookingFileResponseSchema: v.SchemaWithPipe<readonly [v.ObjectSche
446
254
  BookingFileDetail?: any;
447
255
  }, {
448
256
  rsStatus: {
449
- status: "WARNING" | "OK" | "ERROR" | "TIMEOUT";
257
+ status: "OK" | "ERROR" | "WARNING" | "TIMEOUT";
450
258
  errorCode: number | undefined;
451
259
  errorDescription: string | undefined;
452
260
  warnings: string[] | undefined;
@@ -474,12 +282,12 @@ declare const RsStatusSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
474
282
  readonly ErrorDescription: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
475
283
  readonly Warnings: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TransformAction<string, string[]>]>, undefined>;
476
284
  }, undefined>, v.TransformAction<{
477
- "@Status": "WARNING" | "OK" | "ERROR" | "TIMEOUT";
285
+ "@Status": "OK" | "ERROR" | "WARNING" | "TIMEOUT";
478
286
  ErrorCode?: number | undefined;
479
287
  ErrorDescription?: string | undefined;
480
288
  Warnings?: string[] | undefined;
481
289
  }, {
482
- status: "WARNING" | "OK" | "ERROR" | "TIMEOUT";
290
+ status: "OK" | "ERROR" | "WARNING" | "TIMEOUT";
483
291
  errorCode: number | undefined;
484
292
  errorDescription: string | undefined;
485
293
  warnings: string[] | undefined;
@@ -686,10 +494,10 @@ declare const MasterRecordDetailResponseSchema: v.SchemaWithPipe<readonly [v.Sch
686
494
  }, undefined>, undefined>;
687
495
  }, undefined>, v.TransformAction<{
688
496
  recordCode?: string | undefined;
689
- insertCriteria?: "S" | "N" | "T" | "M" | undefined;
497
+ insertCriteria?: "T" | "M" | "N" | "S" | undefined;
690
498
  createdDate?: string | undefined;
691
499
  recordType?: "CUSTOMER" | "SUPPLIER" | "GENERAL" | undefined;
692
- recordStatus?: "ENABLED" | "DISABLED" | "WARNING" | "BLACKLISTED" | undefined;
500
+ recordStatus?: "WARNING" | "ENABLED" | "DISABLED" | "BLACKLISTED" | undefined;
693
501
  moniker?: string | undefined;
694
502
  name?: string | undefined;
695
503
  extraInfo?: string | undefined;
@@ -739,10 +547,10 @@ declare const MasterRecordDetailResponseSchema: v.SchemaWithPipe<readonly [v.Sch
739
547
  } | undefined;
740
548
  }, {
741
549
  RecordCode?: string | undefined;
742
- InsertCriteria?: "S" | "N" | "T" | "M" | undefined;
550
+ InsertCriteria?: "T" | "M" | "N" | "S" | undefined;
743
551
  CreatedDate?: string | undefined;
744
552
  RecordType?: "CUSTOMER" | "SUPPLIER" | "GENERAL" | undefined;
745
- RecordStatus?: "ENABLED" | "DISABLED" | "WARNING" | "BLACKLISTED" | undefined;
553
+ RecordStatus?: "WARNING" | "ENABLED" | "DISABLED" | "BLACKLISTED" | undefined;
746
554
  Moniker?: string | undefined;
747
555
  Name?: string | undefined;
748
556
  ExtraInfo?: string | undefined;
@@ -792,10 +600,10 @@ declare const MasterRecordDetailResponseSchema: v.SchemaWithPipe<readonly [v.Sch
792
600
  } | undefined;
793
601
  }>]>, v.TransformAction<{
794
602
  RecordCode?: string | undefined;
795
- InsertCriteria?: "S" | "N" | "T" | "M" | undefined;
603
+ InsertCriteria?: "T" | "M" | "N" | "S" | undefined;
796
604
  CreatedDate?: string | undefined;
797
605
  RecordType?: "CUSTOMER" | "SUPPLIER" | "GENERAL" | undefined;
798
- RecordStatus?: "ENABLED" | "DISABLED" | "WARNING" | "BLACKLISTED" | undefined;
606
+ RecordStatus?: "WARNING" | "ENABLED" | "DISABLED" | "BLACKLISTED" | undefined;
799
607
  Moniker?: string | undefined;
800
608
  Name?: string | undefined;
801
609
  ExtraInfo?: string | undefined;
@@ -845,10 +653,10 @@ declare const MasterRecordDetailResponseSchema: v.SchemaWithPipe<readonly [v.Sch
845
653
  } | undefined;
846
654
  }, {
847
655
  recordCode?: string | undefined;
848
- insertCriteria?: "S" | "N" | "T" | "M" | undefined;
656
+ insertCriteria?: "T" | "M" | "N" | "S" | undefined;
849
657
  createdDate?: string | undefined;
850
658
  recordType?: "CUSTOMER" | "SUPPLIER" | "GENERAL" | undefined;
851
- recordStatus?: "ENABLED" | "DISABLED" | "WARNING" | "BLACKLISTED" | undefined;
659
+ recordStatus?: "WARNING" | "ENABLED" | "DISABLED" | "BLACKLISTED" | undefined;
852
660
  moniker?: string | undefined;
853
661
  name?: string | undefined;
854
662
  extraInfo?: string | undefined;
@@ -957,12 +765,12 @@ declare const SearchMasterRecordResponseSchema: v.SchemaWithPipe<readonly [v.Obj
957
765
  readonly ErrorDescription: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
958
766
  readonly Warnings: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TransformAction<string, string[]>]>, undefined>;
959
767
  }, undefined>, v.TransformAction<{
960
- "@Status": "WARNING" | "OK" | "ERROR" | "TIMEOUT";
768
+ "@Status": "OK" | "ERROR" | "WARNING" | "TIMEOUT";
961
769
  ErrorCode?: number | undefined;
962
770
  ErrorDescription?: string | undefined;
963
771
  Warnings?: string[] | undefined;
964
772
  }, {
965
- status: "WARNING" | "OK" | "ERROR" | "TIMEOUT";
773
+ status: "OK" | "ERROR" | "WARNING" | "TIMEOUT";
966
774
  errorCode: number | undefined;
967
775
  errorDescription: string | undefined;
968
776
  warnings: string[] | undefined;
@@ -1088,12 +896,12 @@ declare const SearchMasterRecordResponseSchema: v.SchemaWithPipe<readonly [v.Obj
1088
896
  }, undefined>, undefined>;
1089
897
  }, undefined>], undefined>, v.TransformAction<{
1090
898
  "@RecordCode"?: string | undefined;
1091
- "@InsertCriteria"?: "S" | "N" | "T" | "M" | undefined;
899
+ "@InsertCriteria"?: "T" | "M" | "N" | "S" | undefined;
1092
900
  CreatedDate?: string | undefined;
1093
901
  ModifiedDate?: string | undefined;
1094
902
  RecordType?: "CUSTOMER" | "SUPPLIER" | "GENERAL" | undefined;
1095
903
  LoginType?: string | undefined;
1096
- RecordStatus?: "ENABLED" | "DISABLED" | "WARNING" | "BLACKLISTED" | undefined;
904
+ RecordStatus?: "WARNING" | "ENABLED" | "DISABLED" | "BLACKLISTED" | undefined;
1097
905
  Moniker?: string | undefined;
1098
906
  Name?: string | undefined;
1099
907
  ExtraInfo?: string | undefined;
@@ -1147,12 +955,12 @@ declare const SearchMasterRecordResponseSchema: v.SchemaWithPipe<readonly [v.Obj
1147
955
  } | undefined;
1148
956
  } | {
1149
957
  "@RecordCode"?: string | undefined;
1150
- "@InsertCriteria"?: "S" | "N" | "T" | "M" | undefined;
958
+ "@InsertCriteria"?: "T" | "M" | "N" | "S" | undefined;
1151
959
  CreatedDate?: string | undefined;
1152
960
  ModifiedDate?: string | undefined;
1153
961
  RecordType?: "CUSTOMER" | "SUPPLIER" | "GENERAL" | undefined;
1154
962
  LoginType?: string | undefined;
1155
- RecordStatus?: "ENABLED" | "DISABLED" | "WARNING" | "BLACKLISTED" | undefined;
963
+ RecordStatus?: "WARNING" | "ENABLED" | "DISABLED" | "BLACKLISTED" | undefined;
1156
964
  Moniker?: string | undefined;
1157
965
  Name?: string | undefined;
1158
966
  ExtraInfo?: string | undefined;
@@ -1206,12 +1014,12 @@ declare const SearchMasterRecordResponseSchema: v.SchemaWithPipe<readonly [v.Obj
1206
1014
  } | undefined;
1207
1015
  }[], {
1208
1016
  "@RecordCode"?: string | undefined;
1209
- "@InsertCriteria"?: "S" | "N" | "T" | "M" | undefined;
1017
+ "@InsertCriteria"?: "T" | "M" | "N" | "S" | undefined;
1210
1018
  CreatedDate?: string | undefined;
1211
1019
  ModifiedDate?: string | undefined;
1212
1020
  RecordType?: "CUSTOMER" | "SUPPLIER" | "GENERAL" | undefined;
1213
1021
  LoginType?: string | undefined;
1214
- RecordStatus?: "ENABLED" | "DISABLED" | "WARNING" | "BLACKLISTED" | undefined;
1022
+ RecordStatus?: "WARNING" | "ENABLED" | "DISABLED" | "BLACKLISTED" | undefined;
1215
1023
  Moniker?: string | undefined;
1216
1024
  Name?: string | undefined;
1217
1025
  ExtraInfo?: string | undefined;
@@ -1267,7 +1075,7 @@ declare const SearchMasterRecordResponseSchema: v.SchemaWithPipe<readonly [v.Obj
1267
1075
  }, undefined>, undefined>;
1268
1076
  }, undefined>, v.TransformAction<{
1269
1077
  RsStatus: {
1270
- status: "WARNING" | "OK" | "ERROR" | "TIMEOUT";
1078
+ status: "OK" | "ERROR" | "WARNING" | "TIMEOUT";
1271
1079
  errorCode: number | undefined;
1272
1080
  errorDescription: string | undefined;
1273
1081
  warnings: string[] | undefined;
@@ -1275,12 +1083,12 @@ declare const SearchMasterRecordResponseSchema: v.SchemaWithPipe<readonly [v.Obj
1275
1083
  MasterRecordList?: {
1276
1084
  MasterRecordDetail?: {
1277
1085
  "@RecordCode"?: string | undefined;
1278
- "@InsertCriteria"?: "S" | "N" | "T" | "M" | undefined;
1086
+ "@InsertCriteria"?: "T" | "M" | "N" | "S" | undefined;
1279
1087
  CreatedDate?: string | undefined;
1280
1088
  ModifiedDate?: string | undefined;
1281
1089
  RecordType?: "CUSTOMER" | "SUPPLIER" | "GENERAL" | undefined;
1282
1090
  LoginType?: string | undefined;
1283
- RecordStatus?: "ENABLED" | "DISABLED" | "WARNING" | "BLACKLISTED" | undefined;
1091
+ RecordStatus?: "WARNING" | "ENABLED" | "DISABLED" | "BLACKLISTED" | undefined;
1284
1092
  Moniker?: string | undefined;
1285
1093
  Name?: string | undefined;
1286
1094
  ExtraInfo?: string | undefined;
@@ -1336,7 +1144,7 @@ declare const SearchMasterRecordResponseSchema: v.SchemaWithPipe<readonly [v.Obj
1336
1144
  } | undefined;
1337
1145
  }, {
1338
1146
  rsStatus: {
1339
- status: "WARNING" | "OK" | "ERROR" | "TIMEOUT";
1147
+ status: "OK" | "ERROR" | "WARNING" | "TIMEOUT";
1340
1148
  errorCode: number | undefined;
1341
1149
  errorDescription: string | undefined;
1342
1150
  warnings: string[] | undefined;
@@ -1344,12 +1152,12 @@ declare const SearchMasterRecordResponseSchema: v.SchemaWithPipe<readonly [v.Obj
1344
1152
  masterRecordList?: {
1345
1153
  masterRecordDetail?: {
1346
1154
  recordCode?: string | undefined;
1347
- insertCriteria?: "S" | "N" | "T" | "M" | undefined;
1155
+ insertCriteria?: "T" | "M" | "N" | "S" | undefined;
1348
1156
  createdDate?: string | undefined;
1349
1157
  modifiedDate?: string | undefined;
1350
1158
  recordType?: "CUSTOMER" | "SUPPLIER" | "GENERAL" | undefined;
1351
1159
  loginType?: string | undefined;
1352
- recordStatus?: "ENABLED" | "DISABLED" | "WARNING" | "BLACKLISTED" | undefined;
1160
+ recordStatus?: "WARNING" | "ENABLED" | "DISABLED" | "BLACKLISTED" | undefined;
1353
1161
  moniker?: string | undefined;
1354
1162
  name?: string | undefined;
1355
1163
  extraInfo?: string | undefined;
@@ -1488,12 +1296,12 @@ declare const ManageMasterRecordResponseSchema: v.SchemaWithPipe<readonly [v.Obj
1488
1296
  readonly ErrorDescription: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
1489
1297
  readonly Warnings: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TransformAction<string, string[]>]>, undefined>;
1490
1298
  }, undefined>, v.TransformAction<{
1491
- "@Status": "WARNING" | "OK" | "ERROR" | "TIMEOUT";
1299
+ "@Status": "OK" | "ERROR" | "WARNING" | "TIMEOUT";
1492
1300
  ErrorCode?: number | undefined;
1493
1301
  ErrorDescription?: string | undefined;
1494
1302
  Warnings?: string[] | undefined;
1495
1303
  }, {
1496
- status: "WARNING" | "OK" | "ERROR" | "TIMEOUT";
1304
+ status: "OK" | "ERROR" | "WARNING" | "TIMEOUT";
1497
1305
  errorCode: number | undefined;
1498
1306
  errorDescription: string | undefined;
1499
1307
  warnings: string[] | undefined;
@@ -1560,19 +1368,19 @@ declare const ManageMasterRecordResponseSchema: v.SchemaWithPipe<readonly [v.Obj
1560
1368
  }, undefined>, undefined>;
1561
1369
  }, undefined>, v.TransformAction<{
1562
1370
  RsStatus: {
1563
- status: "WARNING" | "OK" | "ERROR" | "TIMEOUT";
1371
+ status: "OK" | "ERROR" | "WARNING" | "TIMEOUT";
1564
1372
  errorCode: number | undefined;
1565
1373
  errorDescription: string | undefined;
1566
1374
  warnings: string[] | undefined;
1567
1375
  };
1568
1376
  MasterRecordDetail?: {
1569
1377
  "@RecordCode"?: string | undefined;
1570
- "@InsertCriteria"?: "S" | "N" | "T" | "M" | undefined;
1378
+ "@InsertCriteria"?: "T" | "M" | "N" | "S" | undefined;
1571
1379
  CreatedDate?: string | undefined;
1572
1380
  ModifiedDate?: string | undefined;
1573
1381
  RecordType?: "CUSTOMER" | "SUPPLIER" | "GENERAL" | undefined;
1574
1382
  LoginType?: string | undefined;
1575
- RecordStatus?: "ENABLED" | "DISABLED" | "WARNING" | "BLACKLISTED" | undefined;
1383
+ RecordStatus?: "WARNING" | "ENABLED" | "DISABLED" | "BLACKLISTED" | undefined;
1576
1384
  Moniker?: string | undefined;
1577
1385
  Name?: string | undefined;
1578
1386
  ExtraInfo?: string | undefined;
@@ -1627,19 +1435,19 @@ declare const ManageMasterRecordResponseSchema: v.SchemaWithPipe<readonly [v.Obj
1627
1435
  } | undefined;
1628
1436
  }, {
1629
1437
  rsStatus: {
1630
- status: "WARNING" | "OK" | "ERROR" | "TIMEOUT";
1438
+ status: "OK" | "ERROR" | "WARNING" | "TIMEOUT";
1631
1439
  errorCode: number | undefined;
1632
1440
  errorDescription: string | undefined;
1633
1441
  warnings: string[] | undefined;
1634
1442
  };
1635
1443
  masterRecordDetail?: {
1636
1444
  recordCode?: string | undefined;
1637
- insertCriteria?: "S" | "N" | "T" | "M" | undefined;
1445
+ insertCriteria?: "T" | "M" | "N" | "S" | undefined;
1638
1446
  createdDate?: string | undefined;
1639
1447
  modifiedDate?: string | undefined;
1640
1448
  recordType?: "CUSTOMER" | "SUPPLIER" | "GENERAL" | undefined;
1641
1449
  loginType?: string | undefined;
1642
- recordStatus?: "ENABLED" | "DISABLED" | "WARNING" | "BLACKLISTED" | undefined;
1450
+ recordStatus?: "WARNING" | "ENABLED" | "DISABLED" | "BLACKLISTED" | undefined;
1643
1451
  moniker?: string | undefined;
1644
1452
  name?: string | undefined;
1645
1453
  extraInfo?: string | undefined;
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{request as e}from"undici";import*as t from"valibot";import{ValiError as n,parse as r,safeParse as i}from"valibot";import{XMLBuilder as a,XMLParser as o}from"fast-xml-parser";const s={VALIDATION:`validation`,API:`api`,UNKNOWN:`unknown`};var c=class extends Error{constructor(e,t,n,r){super(t),this.kind=e,this.message=t,this.status=n,this.code=r,this.name=`AvesError`,this.status=n?.toLowerCase(),this.code=this.parseCode(r)}parseCode(e){return typeof e==`string`?Number.parseInt(e,10):e??0}};function l(e){return new c(s.VALIDATION,e)}function u(e,t,n){return new c(s.API,e,t,n)}function d(e){return new c(s.UNKNOWN,e)}function f(e){return e.map(p).join(`; `)}function p(e){let t=m(e.path),n=e.message??`Invalid value`;return t?`${t}: ${n}`:n}function m(e){if(!e||e.length===0)return;let t=e.map(h).filter(e=>e!==void 0);return t.length>0?t.join(`.`):void 0}function h(e){if(typeof e==`string`||typeof e==`number`)return String(e);if(typeof e==`object`&&e&&`key`in e)return String(e.key)}function ee(e){return e instanceof Error&&e.name===`AbortError`}function g(e){return e.charAt(0).toUpperCase()+e.slice(1)}function _(e){return e.charAt(0).toLowerCase()+e.slice(1)}function v(e){return e instanceof Date||e instanceof RegExp||e instanceof Map||e instanceof Set||e instanceof Error}const y=new Set(Object.values({header:[`hostID`,`xtoken`,`interface`,`userName`,`status`],masterRecord:[`recordCode`,`insertCriteria`],financialDetail:[`currencyCode`,`creditLimit`,`c_PaymentType`,`c_SpecPaymentTypeCode`,`s_PaymentType`,`s_SpecPaymentTypeCode`,`enableElectronicInvoicing`,`electronicInvoicingType`],idDocumentDetail:[`idType`,`idCode`,`idIssueLocation`,`idIssueCounty`,`idIssueDate`,`idExpireDate`],accountPolicies:[`acceptProfilingPolicies`,`acceptPrivacyPolicies`,`acceptNewsletterPolicies`],dynamicFields:[`key`,`value`],search:[`minDate`,`maxDate`],bookingFileStatus:[`value`,`expiredDate`],statisticCodes:[`sCode1`,`sCode2`,`sCode3`,`sCode4`,`sCode5`,`sCode6`],destination:[`code`,`iataCode`,`nationCode`],customerDetail:[`recordCode`],bookingFileDocument:[`printDoc`,`sendDocViaEmail`],financialDeadlineDetail:[`reschedulingCode`,`expireDate`,`totalAmount`],deadlineDetail:[`deadlineCode`,`description`,`expireDate`],paymentDetail:[`paymentDate`,`paumentNote`,`amount`,`paymentUser`,`paymentType`],selectedPackageDetail:[`pCode`,`startDate`,`endDate`,`getServicesFromPackage`],selectedServiceDetail:[`sCode`,`ssCode`,`supplierMasterCode`,`supplierName`,`supplierMasterSearchField`,`supplierFiscalCode`],extraQuoteServiceDetail:[`sCode`,`ssCode`,`supplierMasterCode`,`supplierName`,`supplierMasterSearchField`,`supplierFiscalCode`],noteDetail:[`nType`,`title`],passengerDetail:[`rph`,`roomRph`,`billingHolder`],bookingFinancialInfo:[`customer_PaymentType`,`customer_SpecPaymentTypeCode`],reservationFormCustomizablePrintParameters:[`makeDocumentTo`]}).flat());function b(e,t){if(typeof e!=`object`||!e||v(e))return e;if(Array.isArray(e))return e.map(e=>b(e));let n=t?.excludeFromAttributePrefix,r={};for(let[t,i]of Object.entries(e)){let e=g(t),a=y.has(t)&&!n?.includes(t)?`@${e}`:e;r[a]=S(i,e=>b(e,void 0))}return r}function x(e){if(typeof e!=`object`||!e||v(e))return e;if(Array.isArray(e))return e.map(e=>x(e));let t={};for(let[n,r]of Object.entries(e)){let e=_(n.startsWith(`@`)?n.slice(1):n);t[e]=S(r,x)}return t}function S(e,t){return typeof e!=`object`||!e||v(e)?e:Array.isArray(e)?e.map(e=>S(e,t)):t(e)}function C(e){return t.pipe(e,t.transform(e=>b(e)))}function w(e){return t.pipe(e,t.transform(e=>x(e)))}function T(e){let n={};for(let t in e.entries){let r=y.has(t),i=t.charAt(0).toUpperCase()+t.slice(1),a=r?`@${i}`:i;n[a]=e.entries[t]}return t.object(n)}const E=t.object({"@HostID":t.pipe(t.string(),t.minLength(6),t.maxLength(6)),"@Xtoken":t.string(),"@Interface":t.literal(`WEB`),"@UserName":t.literal(`WEB`),"@LanguageCode":t.optional(t.pipe(t.string(),t.minLength(2),t.maxLength(2)))}),D=t.optional(t.pipe(t.string(),t.transform(e=>e.split(`,`)))),O=t.pipe(t.object({"@Status":t.union([t.literal(`OK`),t.literal(`ERROR`),t.literal(`WARNING`),t.literal(`TIMEOUT`)]),ErrorCode:t.optional(t.pipe(t.union([t.string(),t.number()]),t.transform(e=>Number(e)))),ErrorDescription:t.optional(t.string()),Warnings:D}),t.transform(e=>({status:e[`@Status`],errorCode:e.ErrorCode,errorDescription:e.ErrorDescription,warnings:e.Warnings}))),te=t.union([t.literal(`QUOTATION`),t.literal(`WORK_IN_PROGRESS`),t.literal(`CONFIRM`),t.literal(`CONFIRMED`),t.literal(`OPTION`),t.literal(`OPTIONED`),t.literal(`REQUEST`),t.literal(`CANCELED`)]),ne=t.object({value:te,expiredDate:t.optional(t.string())}),re=t.object({sCode1:t.optional(t.pipe(t.string(),t.maxLength(4))),sCode2:t.optional(t.pipe(t.string(),t.maxLength(4))),sCode3:t.optional(t.pipe(t.string(),t.maxLength(4))),sCode4:t.optional(t.pipe(t.string(),t.maxLength(4))),sCode5:t.optional(t.pipe(t.string(),t.maxLength(4))),sCode6:t.optional(t.pipe(t.string(),t.maxLength(4)))}),ie=t.object({code:t.optional(t.string()),iataCode:t.optional(t.string()),nationCode:t.optional(t.string())}),ae=t.object({recordCode:t.optional(t.string())}),oe=t.union([t.literal(`VISA_REQUEST`),t.literal(`TRAVEL_INFORMATION`),t.literal(`VOUCHER`),t.literal(`BOOKING_CONTRACT`),t.literal(`BOOKING_CONFIRMATION`),t.literal(`SUPPLIER_SERVICE_LIST`),t.literal(`INVOICE`),t.literal(`PROFORMA_INVOICE`),t.literal(`ADEGUAMENTO`),t.literal(`RESERVATION_FORM`),t.literal(`OPEN_XML`),t.literal(`SALES_INVOICE`),t.literal(`TICKETING_TMASTER`),t.literal(`SUMMARY_FORM`)]),se=t.object({makeDocumentTo:t.optional(t.union([t.literal(`BOOKING_CUSTOMER`),t.literal(`FIRST_PASSENGER`)]))}),ce=t.object({fillInCode:t.optional(t.string())}),le=t.union([se,ce]),ue=t.object({documentType:oe,documentCustomizablePrintParameters:t.optional(le)}),de=t.object({printDoc:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),sendDocViaEmail:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),infoDocumentsToPrint:t.optional(t.array(ue))}),fe=t.object({reschedulingCode:t.optional(t.string()),expireDate:t.optional(t.string()),totalAmount:t.optional(t.string())}),pe=t.object({deadlineCode:t.optional(t.string()),description:t.optional(t.string()),expireDate:t.optional(t.string())}),me=t.union([t.literal(`C`),t.literal(`B`),t.literal(`D`),t.literal(`T`),t.literal(`P`),t.literal(`R`),t.literal(`A`),t.literal(`H`),t.literal(`I`),t.literal(`J`),t.literal(`K`),t.literal(`L`),t.literal(`M`),t.literal(`N`),t.literal(`O`),t.literal(`Q`),t.literal(`S`),t.literal(`U`),t.literal(`V`)]),he=t.object({paymentDate:t.optional(t.string()),paumentNote:t.optional(t.string()),amount:t.optional(t.string()),paymentUser:t.optional(t.string()),paymentType:t.optional(me)}),k=t.object({pCode:t.optional(t.string()),startDate:t.optional(t.string()),endDate:t.optional(t.string()),getServicesFromPackage:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()]))}),A=t.object({packageCode:t.optional(t.string()),packageReference:t.optional(t.string())}),j=t.union([t.literal(`TOP`),t.literal(`TOP_SS`),t.literal(`ADV`),t.literal(`GRP`),t.literal(`OTHER`)]),M=t.union([t.literal(`ACCOMODATION`),t.literal(`TRANSPORT`),t.literal(`CHARTER`),t.literal(`TRANSFER`),t.literal(`PULLMAN`),t.literal(`FERRY`),t.literal(`CRUISE`),t.literal(`INSURANCE`),t.literal(`EXTRAFEE`),t.literal(`PENALTY`),t.literal(`PROMO`),t.literal(`OTHER`),t.literal(`NOT_SET`),t.literal(`RESIDENCE`)]),N=t.object({sCode:t.string(),ssCode:t.optional(t.string()),avesServiceType:t.optional(j),toServiceType:t.optional(M),subServiceDesc:t.optional(t.string()),startDate:t.optional(t.string()),endDate:t.optional(t.string()),qty:t.optional(t.string()),pax:t.optional(t.string()),paxAssociated:t.optional(t.array(t.object({pax:t.optional(t.string())}))),avesSession:t.optional(t.string()),avesServiceInfo:t.optional(A),supplierMasterCode:t.optional(t.string()),supplierName:t.optional(t.string()),supplierMasterSearchField:t.optional(t.string()),supplierFiscalCode:t.optional(t.string())}),P=t.object({nType:t.optional(t.string()),title:t.optional(t.string()),text:t.optional(t.string())}),F=t.union([t.literal(`AD`),t.literal(`CH`),t.literal(`IN`),t.literal(`OV`)]),I=t.object({rph:t.string(),roomRph:t.optional(t.string()),billingHolder:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),masterRecordCode:t.optional(t.string()),name:t.string(),categoryCode:F,sex:t.optional(t.union([t.literal(`M`),t.literal(`F`)])),birthDate:t.optional(t.string()),birthPlace:t.optional(t.string()),nationCode:t.optional(t.string()),citizenshipCode:t.optional(t.string()),fiscalCode:t.optional(t.string()),phoneNumber:t.optional(t.string()),eMail:t.optional(t.string()),notes:t.optional(t.array(P)),flagStatus:t.optional(t.string()),offerCode:t.optional(t.string()),idDocInfo:t.optional(t.object({idType:t.optional(t.string()),idCode:t.optional(t.string()),idIssueLocation:t.optional(t.string()),idIssueCounty:t.optional(t.string()),idIssueDate:t.optional(t.string()),idExpireDate:t.optional(t.string())}))}),L=t.union([t.literal(`CASH`),t.literal(`BANK`),t.literal(`RID`),t.literal(`RIBA`),t.literal(`SPECIFIC_CODE`),t.literal(`NOT_SET`)]),R=t.object({customer_PaymentType:t.optional(L),customer_SpecPaymentTypeCode:t.optional(t.string())}),ge=t.union([t.literal(`GROUPED_PAX`),t.literal(`NOT_GROUPED_PAX`),t.literal(`ONE_PAX_ONLY`)]),_e=t.union([t.literal(`AVES2AVES`),t.literal(`AVES2AVESVIA`),t.literal(`AVES2AVESITA`)]),ve=t.object({createDate:t.optional(t.string()),bookingFileRefCode:t.optional(t.string()),travelAgentCode:t.optional(t.string()),clerkName:t.optional(t.string()),customerDetail:ae,currencyCode:t.optional(t.string()),markupCode:t.optional(t.string()),bookingFileStatus:ne,statisticCodes:t.optional(re),destination:t.optional(ie),bookingFileDescription:t.optional(t.string()),startDate:t.string(),endDate:t.string(),earlyBookingDate:t.optional(t.string()),cupCode:t.optional(t.string()),cigCode:t.optional(t.string()),customerPromoterCode:t.optional(t.string()),billingReferenceCode:t.optional(t.string()),paymentReferenceCode:t.optional(t.string()),bookingFileDocument:t.optional(de),financialDeadlineList:t.optional(t.object({deadlineDetail:t.optional(t.array(fe))})),deadlineList:t.optional(t.object({deadlineDetail:t.optional(t.array(pe))})),paymentList:t.optional(t.object({paymentDetail:t.optional(t.array(he))})),selectedPackageList:t.optional(t.object({selectedPackageDetail:t.optional(t.array(k))})),selectedServiceList:t.object({selectedServiceDetail:t.pipe(t.union([t.array(N),N]),t.transform(e=>Array.isArray(e)?e:[e]))}),extraQuotaRefCode:t.optional(t.string()),extraQuoteServiceList:t.optional(t.object({extraQuoteServiceDetail:t.optional(t.array(N))})),getExtraQuoteFromSystem:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),passengerList:t.object({passengerDetail:t.pipe(t.union([t.array(I),I]),t.transform(e=>Array.isArray(e)?e:[e]))}),noteList:t.optional(t.object({noteDetail:t.optional(t.array(P))})),bookingFinancialInfo:t.optional(R),bookingFileCode:t.optional(t.string()),groupingPaxPolicy:t.optional(ge),groupBookingFile:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),typeDownloadFile:t.optional(_e),setBookingFileCodeFromStartDate:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()]))}),ye=t.pipe(ve,t.transform(e=>b(e,{excludeFromAttributePrefix:[`startDate`,`endDate`]}))),be=w(t.object({RsStatus:O,BookingFileDetail:t.optional(t.any())})),z=t.union([t.literal(`CASH`),t.literal(`BANK`),t.literal(`RID`),t.literal(`RIBA`),t.literal(`SPECIFIC_CODE`)]),B=t.object({currencyCode:t.optional(t.string()),creditLimit:t.optional(t.string()),c_PaymentType:t.optional(z),c_SpecPaymentTypeCode:t.optional(t.string()),s_PaymentType:t.optional(z),s_SpecPaymentTypeCode:t.optional(t.string()),enableElectronicInvoicing:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),electronicInvoicingType:t.optional(t.string())});C(B);const xe=T(B),V=t.object({idType:t.optional(t.string()),idCode:t.optional(t.string()),idIssueLocation:t.optional(t.string()),idIssueCounty:t.optional(t.string()),idIssueDate:t.optional(t.string()),idExpireDate:t.optional(t.string())});C(V);const Se=T(V),H=t.object({key:t.string(),value:t.string()});C(H);const Ce=T(H),U=t.union([t.literal(0),t.literal(1)]),W=t.union([t.literal(`ENABLED`),t.literal(`DISABLED`),t.literal(`WARNING`),t.literal(`BLACKLISTED`)]),we=t.union([t.literal(`CUSTOMER`),t.literal(`SUPPLIER`),t.literal(`GENERAL`)]),G=t.union([t.literal(`S`),t.literal(`N`),t.literal(`T`),t.literal(`M`)]),K=t.object({acceptProfilingPolicies:t.optional(U),acceptPrivacyPolicies:t.optional(U),acceptNewsletterPolicies:t.optional(U)});C(K);const Te=T(K),q=C(t.object({recordCode:t.optional(t.pipe(t.string(),t.minLength(6),t.maxLength(6))),insertCriteria:t.optional(G),createdDate:t.optional(t.string()),recordType:t.optional(t.union([we],`CUSTOMER`)),recordStatus:t.optional(t.union([W],`ENABLED`)),moniker:t.optional(t.string()),name:t.optional(t.string()),extraInfo:t.optional(t.string()),languageCode:t.pipe(t.string(),t.minLength(2),t.maxLength(2)),address:t.optional(t.string()),zipCode:t.optional(t.string()),cityName:t.optional(t.string()),countyCode:t.optional(t.string()),stateCode:t.optional(t.string()),categoryCode:t.optional(t.string()),firstPhoneNumber:t.optional(t.string()),mobilePhoneNumber:t.optional(t.string()),email:t.optional(t.string()),gender:t.optional(t.union([t.literal(`M`),t.literal(`F`)])),birthDate:t.optional(t.string()),birthCity:t.optional(t.string()),birthCounty:t.optional(t.string()),fiscalCode:t.optional(t.string()),vatCode:t.optional(t.string()),thirdPartRecordCode:t.optional(t.string()),idDocumentDetail:t.optional(V),accountPolicies:t.optional(K),financialDetail:t.optional(B),dynamicFields:t.optional(H)}));w(q);const J=t.object({"@RecordCode":t.optional(t.pipe(t.string(),t.minLength(6),t.maxLength(6))),"@InsertCriteria":t.optional(G),CreatedDate:t.optional(t.string()),ModifiedDate:t.optional(t.string()),RecordType:t.optional(t.union([t.literal(`CUSTOMER`),t.literal(`SUPPLIER`),t.literal(`GENERAL`)])),LoginType:t.optional(t.string()),RecordStatus:t.optional(W),Moniker:t.optional(t.string()),Name:t.optional(t.string()),ExtraInfo:t.optional(t.string()),LanguageCode:t.optional(t.pipe(t.string(),t.minLength(1),t.maxLength(2))),Address:t.optional(t.string()),ZipCode:t.optional(t.string()),CityName:t.optional(t.string()),CountyCode:t.optional(t.string()),StateCode:t.optional(t.string()),CategoryCode:t.optional(t.string()),PromoterCode:t.optional(t.string()),FirstPhoneNumber:t.optional(t.string()),MobilePhoneNumber:t.optional(t.string()),Email:t.optional(t.string()),Gender:t.optional(t.union([t.literal(`M`),t.literal(`F`)])),BirthDate:t.optional(t.string()),BirthCity:t.optional(t.string()),BirthCounty:t.optional(t.string()),EncryptedPassword:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),FiscalCode:t.optional(t.string()),VatCode:t.optional(t.string()),ThirdPartRecordCode:t.optional(t.string()),IdDocumentDetail:t.optional(Se),NewsletterDisabled:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),SupplierRefMasterRecords:t.optional(t.any()),AccountPolicies:t.optional(Te),FinancialDetail:t.optional(xe),DynamicFields:t.optional(Ce)}),Ee=t.object({minDate:t.string(),maxDate:t.string()}),Y=t.optional(t.pipe(t.string(),t.minLength(2),t.maxLength(2))),De=t.object({searchType:t.literal(`CODE`),recordCode:t.pipe(t.string(),t.minLength(5),t.maxLength(6)),languageCode:Y}),Oe=t.object({searchType:t.literal(`NAME`),name:t.string(),city:t.optional(t.string()),languageCode:Y}),ke=t.object({searchType:t.literal(`VATCODE`),vatCode:t.string(),phoneNumber:t.optional(t.string()),languageCode:Y}),Ae=t.object({searchType:t.literal(`ZONE`),zipCode:t.string(),countyCode:t.string(),city:t.optional(t.string()),languageCode:Y}),je=t.object({searchType:t.literal(`CATEGORY`),categoryCode:t.string(),languageCode:Y}),Me=t.object({searchType:t.literal(`EMAIL`),email:t.string(),languageCode:Y}),Ne=t.object({searchType:t.literal(`LASTMODDATE`),lastModificationDate:Ee,languageCode:Y}),Pe=t.object({searchType:t.literal(`SEARCH_FIELD`),searchFieldValue:t.string(),languageCode:Y}),Fe=t.object({searchType:t.literal(`EXTERNAL_REF_CODE`),searchFieldValue:t.string(),languageCode:Y}),Ie=t.union([De,Oe,ke,Ae,je,Me,Ne,Pe,Fe]),Le=e=>{if(!(`@RecordCode`in e))return e;let t=e[`@RecordCode`];if(!t)return e;let{"@RecordCode":n,...r}=e;return{...r,RecordCode:t}},Re=t.pipe(C(Ie),t.transform(e=>Le(e))),ze=t.pipe(t.object({RqHeader:E,SearchMasterRecord:Re}),t.transform(e=>{let{SearchMasterRecord:t,RqHeader:n,...r}=e;return{RqHeader:n,...t,...r}})),Be=t.object({MasterRecordDetail:t.optional(t.pipe(t.union([t.array(J),J]),t.transform(e=>{if(e)return Array.isArray(e)?e:[e]})))}),Ve=w(t.object({RsStatus:O,MasterRecordList:t.optional(Be)})),He=t.object({RqHeader:E,MasterRecordDetail:J}),Ue=w(t.object({RsStatus:O,MasterRecordDetail:t.optional(J)}));function We(e){return{success:!0,data:e}}function X(e){return{success:!1,error:e}}function Ge(e){let t=new AbortController;if(!e||e<=0)return{signal:t.signal};let n=setTimeout(()=>t.abort(),e);return{signal:t.signal,clear:()=>clearTimeout(n)}}function Ke(e,t){try{let n=new URL(e),r=(n.pathname.endsWith(`/`)?n.pathname.slice(0,-1):n.pathname)+t;return new URL(r,n)}catch(e){throw new c(`validation`,`Invalid baseURL: ${e instanceof Error?e.message:`Invalid URL format`}`)}}function Z(e,t){if(!t.startsWith(`/`))throw new c(`validation`,`Invalid endpoint: endpoint must start with '/' but got '${t}'`);let n=Ke(e.replace(/\/$/,``),t);if(n.protocol!==`http:`&&n.protocol!==`https:`)throw new c(`validation`,`Invalid protocol: baseURL must use http:// or https:// but got '${n.protocol}'`);return n.toString()}const qe={ignoreAttributes:!1,attributeNamePrefix:`@`,parseAttributeValue:!1,trimValues:!0,ignoreNameSpace:!0,removeNSPrefix:!0,parseTagValue:!1},Je={ignoreAttributes:!1,attributeNamePrefix:`@`,suppressEmptyNode:!0},Ye=new o(qe),Xe=new a(Je);function Ze(e){try{return Xe.build(e)}catch(e){throw new c(`validation`,`Failed to convert JSON to XML: ${e instanceof Error?e.message:`Unknown error`}`)}}function Qe(e){try{return Ye.parse(e)}catch(e){throw new c(`validation`,`Failed to convert XML to JSON: ${e instanceof Error?e.message:`Unknown error`}`)}}const Q={SEARCH_REQUEST:`SearchMasterRecordRQ`,SEARCH_RESPONSE:`SearchMasterRecordRS`,UPSERT_REQUEST:`ManageMasterRecordRQ`,UPSERT_RESPONSE:`ManageMasterRecordRS`,BOOKING_REQUEST:`BookFileRQ`,BOOKING_RESPONSE:`BookingFileRS`};function $(e,t){return{[e]:t}}var $e=class{constructor(e){this.options=e}createRqHeader(){return{"@HostID":this.options.hostID,"@Xtoken":this.options.xtoken,"@Interface":`WEB`,"@UserName":`WEB`,...this.options.languageCode&&{"@LanguageCode":this.options.languageCode}}}createUrl(e){return Z(this.options.baseURL,e)}get endpoints(){return{search:`/interop/masterRecords/v2/rest/Search`,upsert:`/interop/masterRecords/v2/rest/InsertOrUpdate`,createBooking:`/interop/booking/v2/rest/CreateBookingFile`}}handleApiStatus(e){let t=e.rsStatus,n=t?.status;return n===`OK`?We(e):X(u(t.errorDescription,n,t.errorCode))}toAvesError(e,t){return e instanceof c?e:e instanceof n?l(`Validation error: ${f(e.issues)}`):e instanceof Error?d(e.message):d(t)}async request(t,n,r,a){let{signal:o,clear:s}=Ge(this.options.timeoutMs??3e4);try{let s=this.createUrl(t),c=Ze(n),d=await e(s,{method:`POST`,headers:{"Content-Type":`application/xml`},body:c,signal:o}),p=await d.body.text();if(d.statusCode!==200)return X(u(p,`ERROR`,d.statusCode));let m=Qe(p)[r];if(!m)return X(l(`Invalid response structure: missing root element '${r}'`));let h=i(a,m);return h.success?this.handleApiStatus(h.output):X(l(`Invalid response format: ${f(h.issues)}`))}catch(e){return ee(e)?X(u(`Request timed out`,`TIMEOUT`)):X(this.toAvesError(e,`Unknown error occurred`))}finally{s?.()}}async search(e){try{let t=r(ze,{RqHeader:this.createRqHeader(),SearchMasterRecord:e}),n=$(Q.SEARCH_REQUEST,t);return this.request(this.endpoints.search,n,Q.SEARCH_RESPONSE,Ve)}catch(e){return X(this.toAvesError(e,`Validation error occurred during search`))}}async upsertRecord(e){try{let t=r(q,e),n=r(He,{RqHeader:this.createRqHeader(),MasterRecordDetail:t}),i=$(Q.UPSERT_REQUEST,n);return this.request(this.endpoints.upsert,i,Q.UPSERT_RESPONSE,Ue)}catch(e){return X(this.toAvesError(e,`Validation error occurred during upsert`))}}async createBooking(e){try{let t=r(ye,e),n=$(Q.BOOKING_REQUEST,{RqHeader:this.createRqHeader(),...t});return this.request(this.endpoints.createBooking,n,Q.BOOKING_RESPONSE,be)}catch(e){return X(this.toAvesError(e,`Validation error occurred during createBooking`))}}};export{$e as AvesClient,c as AvesError};
1
+ import{request as e}from"undici";import*as t from"valibot";import{ValiError as n,parse as r,safeParse as i}from"valibot";import{XMLBuilder as a,XMLParser as o}from"fast-xml-parser";const s={VALIDATION:`validation`,API:`api`,UNKNOWN:`unknown`};var c=class extends Error{constructor(e,t,n,r){super(t),this.kind=e,this.message=t,this.status=n,this.code=r,this.name=`AvesError`,this.status=n?.toLowerCase(),this.code=this.parseCode(r)}parseCode(e){return typeof e==`string`?Number.parseInt(e,10):e??0}};function l(e){return new c(s.VALIDATION,e)}function u(e,t,n){return new c(s.API,e,t,n)}function d(e){return new c(s.UNKNOWN,e)}function f(e){return e.map(p).join(`; `)}function p(e){let t=m(e.path),n=e.message??`Invalid value`;return t?`${t}: ${n}`:n}function m(e){if(!e||e.length===0)return;let t=e.map(h).filter(e=>e!==void 0);return t.length>0?t.join(`.`):void 0}function h(e){if(typeof e==`string`||typeof e==`number`)return String(e);if(typeof e==`object`&&e&&`key`in e)return String(e.key)}function ee(e){return e instanceof Error&&e.name===`AbortError`}function te(e){return e.charAt(0).toUpperCase()+e.slice(1)}function ne(e){return e.charAt(0).toLowerCase()+e.slice(1)}function g(e){return e instanceof Date||e instanceof RegExp||e instanceof Map||e instanceof Set||e instanceof Error}const _=new Set(Object.values({header:[`hostID`,`xtoken`,`interface`,`userName`,`status`],masterRecord:[`recordCode`,`insertCriteria`],financialDetail:[`currencyCode`,`creditLimit`,`c_PaymentType`,`c_SpecPaymentTypeCode`,`s_PaymentType`,`s_SpecPaymentTypeCode`,`enableElectronicInvoicing`,`electronicInvoicingType`],idDocumentDetail:[`idType`,`idCode`,`idIssueLocation`,`idIssueCounty`,`idIssueDate`,`idExpireDate`],accountPolicies:[`acceptProfilingPolicies`,`acceptPrivacyPolicies`,`acceptNewsletterPolicies`],dynamicFields:[`key`,`value`],search:[`minDate`,`maxDate`],bookingFileStatus:[`value`,`expiredDate`],statisticCodes:[`sCode1`,`sCode2`,`sCode3`,`sCode4`,`sCode5`,`sCode6`],destination:[`code`,`iataCode`,`nationCode`],customerDetail:[`recordCode`],bookingFileDocument:[`printDoc`,`sendDocViaEmail`],financialDeadlineDetail:[`reschedulingCode`,`expireDate`,`totalAmount`],deadlineDetail:[`deadlineCode`,`description`,`expireDate`],paymentDetail:[`paymentDate`,`paumentNote`,`amount`,`paymentUser`,`paymentType`],selectedPackageDetail:[`pCode`,`getServicesFromPackage`],selectedServiceDetail:[`sCode`,`ssCode`,`supplierMasterCode`,`supplierName`,`supplierMasterSearchField`,`supplierFiscalCode`],extraQuoteServiceDetail:[`sCode`,`ssCode`,`supplierMasterCode`,`supplierName`,`supplierMasterSearchField`,`supplierFiscalCode`],noteDetail:[`nType`,`title`],passengerDetail:[`rph`,`roomRph`,`billingHolder`],bookingFinancialInfo:[`customer_PaymentType`,`customer_SpecPaymentTypeCode`],reservationFormCustomizablePrintParameters:[`makeDocumentTo`]}).flat()),re=(e,t,n=!1)=>n||t===`sCode`||t===`ssCode`?`@${t}`:`@${e}`,v=new Map([[`toServiceType`,`TOServiceType`],[`rph`,`RPH`]]);function y(e,t){if(!e||typeof e!=`object`||g(e))return e;if(Array.isArray(e))return e.map(e=>y(e));let n=t?.excludeFromAttributePrefix,r=t?.excludeAttributeFromCamelToPascal,i={};for(let[t,a]of Object.entries(e)){let e=v.has(t)?v.get(t):te(t),o=_.has(t)&&!n?.includes(t),s=re(e,t,r?.includes(t)),c=o?s:e;i[c]=x(a,e=>y(e,void 0))}return i}function b(e){if(typeof e!=`object`||!e||g(e))return e;if(Array.isArray(e))return e.map(e=>b(e));let t={};for(let[n,r]of Object.entries(e)){let e=ne(n.startsWith(`@`)?n.slice(1):n);t[e]=x(r,b)}return t}function x(e,t){return!e||typeof e!=`object`||g(e)?e:Array.isArray(e)?e.map(e=>x(e,t)):t(e)}function S(e){return t.pipe(e,t.transform(e=>y(e)))}function C(e){return t.pipe(e,t.transform(e=>b(e)))}function w(e){let n={};for(let t in e.entries){let r=_.has(t),i=t.charAt(0).toUpperCase()+t.slice(1),a=r?`@${i}`:i;n[a]=e.entries[t]}return t.object(n)}const T=t.object({"@HostID":t.pipe(t.string(),t.minLength(6),t.maxLength(6)),"@Xtoken":t.string(),"@Interface":t.literal(`WEB`),"@UserName":t.literal(`WEB`),"@LanguageCode":t.optional(t.pipe(t.string(),t.minLength(2),t.maxLength(2)))}),ie=t.optional(t.pipe(t.string(),t.transform(e=>e.split(`,`)))),E=t.pipe(t.object({"@Status":t.union([t.literal(`OK`),t.literal(`ERROR`),t.literal(`WARNING`),t.literal(`TIMEOUT`)]),ErrorCode:t.optional(t.pipe(t.union([t.string(),t.number()]),t.transform(e=>Number(e)))),ErrorDescription:t.optional(t.string()),Warnings:ie}),t.transform(e=>({status:e[`@Status`],errorCode:e.ErrorCode,errorDescription:e.ErrorDescription,warnings:e.Warnings}))),ae=t.union([t.literal(`QUOTATION`),t.literal(`WORK_IN_PROGRESS`),t.literal(`CONFIRMED`),t.literal(`OPTIONED`),t.literal(`CANCELED`)]),oe=t.object({value:ae,expiredDate:t.optional(t.string())}),se=t.object({sCode1:t.optional(t.pipe(t.string(),t.maxLength(4))),sCode2:t.optional(t.pipe(t.string(),t.maxLength(4))),sCode3:t.optional(t.pipe(t.string(),t.maxLength(4))),sCode4:t.optional(t.pipe(t.string(),t.maxLength(4))),sCode5:t.optional(t.pipe(t.string(),t.maxLength(4))),sCode6:t.optional(t.pipe(t.string(),t.maxLength(4)))}),ce=t.object({code:t.optional(t.string()),iataCode:t.optional(t.string()),nationCode:t.optional(t.string())}),le=t.object({recordCode:t.optional(t.string())}),ue=t.union([t.literal(`VISA_REQUEST`),t.literal(`TRAVEL_INFORMATION`),t.literal(`VOUCHER`),t.literal(`BOOKING_CONTRACT`),t.literal(`BOOKING_CONFIRMATION`),t.literal(`SUPPLIER_SERVICE_LIST`),t.literal(`INVOICE`),t.literal(`PROFORMA_INVOICE`),t.literal(`ADEGUAMENTO`),t.literal(`RESERVATION_FORM`),t.literal(`OPEN_XML`),t.literal(`SALES_INVOICE`),t.literal(`TICKETING_TMASTER`),t.literal(`SUMMARY_FORM`)]),de=t.object({makeDocumentTo:t.optional(t.union([t.literal(`BOOKING_CUSTOMER`),t.literal(`FIRST_PASSENGER`)]))}),fe=t.object({fillInCode:t.optional(t.string())}),pe=t.union([de,fe]),me=t.object({documentType:ue,documentCustomizablePrintParameters:t.optional(pe)}),he=t.object({printDoc:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),sendDocViaEmail:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),infoDocumentsToPrint:t.optional(t.array(me))}),ge=t.object({reschedulingCode:t.optional(t.string()),expireDate:t.optional(t.string()),totalAmount:t.optional(t.string())}),_e=t.object({deadlineCode:t.optional(t.string()),description:t.optional(t.string()),expireDate:t.optional(t.string())}),D=t.union([t.literal(`C`),t.literal(`B`),t.literal(`D`),t.literal(`T`),t.literal(`P`),t.literal(`R`),t.literal(`A`),t.literal(`H`),t.literal(`I`),t.literal(`J`),t.literal(`K`),t.literal(`L`),t.literal(`M`),t.literal(`N`),t.literal(`O`),t.literal(`Q`),t.literal(`S`),t.literal(`U`),t.literal(`V`)]),O=t.object({paymentDate:t.optional(t.string()),paumentNote:t.optional(t.string()),amount:t.optional(t.string()),paymentUser:t.optional(t.string()),paymentType:t.optional(D)}),k=t.object({deadlineDetail:t.optional(t.array(ge))}),A=t.object({deadlineDetail:t.optional(t.array(_e))}),j=t.object({paymentDetail:t.optional(t.array(O))}),M=t.object({pCode:t.optional(t.string()),startDate:t.optional(t.string()),endDate:t.optional(t.string()),getServicesFromPackage:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()]))}),N=t.object({packageCode:t.optional(t.string()),packageReference:t.optional(t.string())}),P=t.union([t.literal(`TOP`),t.literal(`TOP_SS`),t.literal(`ADV`),t.literal(`GRP`),t.literal(`OTHER`)]),F=t.union([t.literal(`ACCOMODATION`),t.literal(`TRANSPORT`),t.literal(`CHARTER`),t.literal(`TRANSFER`),t.literal(`PULLMAN`),t.literal(`FERRY`),t.literal(`CRUISE`),t.literal(`INSURANCE`),t.literal(`EXTRAFEE`),t.literal(`PENALTY`),t.literal(`PROMO`),t.literal(`OTHER`),t.literal(`NOT_SET`),t.literal(`RESIDENCE`)]),I=t.object({pax:t.string()}),L=t.object({sCode:t.string(),ssCode:t.optional(t.string()),avesServiceType:P,toServiceType:t.optional(F),subServiceDesc:t.optional(t.string()),startDate:t.string(),endDate:t.string(),qty:t.string(),pax:t.string(),paxAssociated:t.optional(t.array(I)),avesSession:t.string(),avesServiceInfo:t.optional(N),supplierMasterCode:t.optional(t.string()),voucherMasterCode:t.optional(t.string()),hotelServiceInfo:t.optional(t.string()),carRentalServiceInfo:t.optional(t.string()),flightServiceInfo:t.optional(t.string()),shipServiceInfo:t.optional(t.string()),ticketServiceInfo:t.optional(t.string()),commission:t.optional(t.string()),noteList:t.optional(t.string()),voucherInfo:t.optional(t.string()),firstDescription:t.optional(t.string()),secondDescription:t.optional(t.string())}),ve=t.object({selectedPackageDetail:t.optional(t.array(M))}),ye=t.object({selectedServiceDetail:L}),be=t.object({extraQuoteServiceDetail:t.optional(t.array(L))}),R=t.object({nType:t.optional(t.string()),title:t.optional(t.string()),text:t.optional(t.string())}),xe=t.object({noteDetail:t.optional(t.array(R))}),Se=t.union([t.literal(`AD`),t.literal(`CH`),t.literal(`IN`),t.literal(`OV`)]),Ce=t.object({rph:t.string(),roomRph:t.optional(t.string()),billingHolder:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),masterRecordCode:t.optional(t.string()),name:t.string(),categoryCode:Se,sex:t.union([t.literal(`M`),t.literal(`F`)]),birthDate:t.optional(t.string()),birthPlace:t.optional(t.string()),nationCode:t.optional(t.string()),citizenshipCode:t.optional(t.string()),fiscalCode:t.optional(t.string()),phoneNumber:t.optional(t.string()),eMail:t.optional(t.string()),notes:t.optional(t.array(R)),flagStatus:t.optional(t.string()),offerCode:t.optional(t.string()),idDocInfo:t.optional(t.object({idType:t.optional(t.string()),idCode:t.optional(t.string()),idIssueLocation:t.optional(t.string()),idIssueCounty:t.optional(t.string()),idIssueDate:t.optional(t.string()),idExpireDate:t.optional(t.string())}))}),we=t.object({passengerDetail:Ce}),Te=t.union([t.literal(`CASH`),t.literal(`BANK`),t.literal(`RID`),t.literal(`RIBA`),t.literal(`SPECIFIC_CODE`),t.literal(`NOT_SET`)]),Ee=t.object({customer_PaymentType:t.optional(Te),customer_SpecPaymentTypeCode:t.optional(t.string())}),De=t.union([t.literal(`GROUPED_PAX`),t.literal(`NOT_GROUPED_PAX`),t.literal(`ONE_PAX_ONLY`)]),Oe=t.union([t.literal(`AVES2AVES`),t.literal(`AVES2AVESVIA`),t.literal(`AVES2AVESITA`)]),ke=t.object({createDate:t.optional(t.string()),bookingFileRefCode:t.optional(t.string()),travelAgentCode:t.optional(t.string()),clerkName:t.optional(t.string()),customerDetail:le,currencyCode:t.optional(t.string()),markupCode:t.optional(t.string()),bookingFileStatus:oe,statisticCodes:t.optional(se),destination:t.optional(ce),bookingFileDescription:t.optional(t.string()),startDate:t.string(),endDate:t.string(),earlyBookingDate:t.optional(t.string()),cupCode:t.optional(t.string()),cigCode:t.optional(t.string()),customerPromoterCode:t.optional(t.string()),billingReferenceCode:t.optional(t.string()),paymentReferenceCode:t.optional(t.string()),bookingFileDocument:t.optional(he),financialDeadlineList:t.optional(k),deadlineList:t.optional(A),paymentList:t.optional(j),selectedPackageList:t.optional(ve),selectedServiceList:t.array(ye),extraQuotaRefCode:t.optional(t.string()),extraQuoteServiceList:t.optional(be),getExtraQuoteFromSystem:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),passengerList:t.array(we),noteList:t.optional(xe),bookingFinancialInfo:t.optional(Ee),bookingFileCode:t.optional(t.string()),groupingPaxPolicy:t.optional(De),groupBookingFile:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),typeDownloadFile:t.optional(Oe),setBookingFileCodeFromStartDate:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()]))}),Ae=t.pipe(ke,t.transform(e=>{let t=e=>Array.isArray(e)&&!e.length?``:e,n=e=>{if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(n);let r={};for(let[i,a]of Object.entries(e))i===`paxAssociated`?r[i]=t(a):r[i]=n(a);return r};return y(n(e),{excludeFromAttributePrefix:[`startDate`,`endDate`],excludeAttributeFromCamelToPascal:[`sCode`,`ssCode`]})})),je=C(t.object({RsStatus:E,BookingFileDetail:t.optional(t.any())})),z=t.union([t.literal(`CASH`),t.literal(`BANK`),t.literal(`RID`),t.literal(`RIBA`),t.literal(`SPECIFIC_CODE`)]),B=t.object({currencyCode:t.optional(t.string()),creditLimit:t.optional(t.string()),c_PaymentType:t.optional(z),c_SpecPaymentTypeCode:t.optional(t.string()),s_PaymentType:t.optional(z),s_SpecPaymentTypeCode:t.optional(t.string()),enableElectronicInvoicing:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),electronicInvoicingType:t.optional(t.string())});S(B);const Me=w(B),V=t.object({idType:t.optional(t.string()),idCode:t.optional(t.string()),idIssueLocation:t.optional(t.string()),idIssueCounty:t.optional(t.string()),idIssueDate:t.optional(t.string()),idExpireDate:t.optional(t.string())});S(V);const Ne=w(V),H=t.object({key:t.string(),value:t.string()});S(H);const Pe=w(H),U=t.union([t.literal(0),t.literal(1)]),W=t.union([t.literal(`ENABLED`),t.literal(`DISABLED`),t.literal(`WARNING`),t.literal(`BLACKLISTED`)]),Fe=t.union([t.literal(`CUSTOMER`),t.literal(`SUPPLIER`),t.literal(`GENERAL`)]),G=t.union([t.literal(`S`),t.literal(`N`),t.literal(`T`),t.literal(`M`)]),K=t.object({acceptProfilingPolicies:t.optional(U),acceptPrivacyPolicies:t.optional(U),acceptNewsletterPolicies:t.optional(U)});S(K);const Ie=w(K),q=S(t.object({recordCode:t.optional(t.pipe(t.string(),t.minLength(6),t.maxLength(6))),insertCriteria:t.optional(G),createdDate:t.optional(t.string()),recordType:t.optional(t.union([Fe],`CUSTOMER`)),recordStatus:t.optional(t.union([W],`ENABLED`)),moniker:t.optional(t.string()),name:t.optional(t.string()),extraInfo:t.optional(t.string()),languageCode:t.pipe(t.string(),t.minLength(2),t.maxLength(2)),address:t.optional(t.string()),zipCode:t.optional(t.string()),cityName:t.optional(t.string()),countyCode:t.optional(t.string()),stateCode:t.optional(t.string()),categoryCode:t.optional(t.string()),firstPhoneNumber:t.optional(t.string()),mobilePhoneNumber:t.optional(t.string()),email:t.optional(t.string()),gender:t.optional(t.union([t.literal(`M`),t.literal(`F`)])),birthDate:t.optional(t.string()),birthCity:t.optional(t.string()),birthCounty:t.optional(t.string()),fiscalCode:t.optional(t.string()),vatCode:t.optional(t.string()),thirdPartRecordCode:t.optional(t.string()),idDocumentDetail:t.optional(V),accountPolicies:t.optional(K),financialDetail:t.optional(B),dynamicFields:t.optional(H)}));C(q);const J=t.object({"@RecordCode":t.optional(t.pipe(t.string(),t.minLength(6),t.maxLength(6))),"@InsertCriteria":t.optional(G),CreatedDate:t.optional(t.string()),ModifiedDate:t.optional(t.string()),RecordType:t.optional(t.union([t.literal(`CUSTOMER`),t.literal(`SUPPLIER`),t.literal(`GENERAL`)])),LoginType:t.optional(t.string()),RecordStatus:t.optional(W),Moniker:t.optional(t.string()),Name:t.optional(t.string()),ExtraInfo:t.optional(t.string()),LanguageCode:t.optional(t.pipe(t.string(),t.minLength(1),t.maxLength(2))),Address:t.optional(t.string()),ZipCode:t.optional(t.string()),CityName:t.optional(t.string()),CountyCode:t.optional(t.string()),StateCode:t.optional(t.string()),CategoryCode:t.optional(t.string()),PromoterCode:t.optional(t.string()),FirstPhoneNumber:t.optional(t.string()),MobilePhoneNumber:t.optional(t.string()),Email:t.optional(t.string()),Gender:t.optional(t.union([t.literal(`M`),t.literal(`F`)])),BirthDate:t.optional(t.string()),BirthCity:t.optional(t.string()),BirthCounty:t.optional(t.string()),EncryptedPassword:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),FiscalCode:t.optional(t.string()),VatCode:t.optional(t.string()),ThirdPartRecordCode:t.optional(t.string()),IdDocumentDetail:t.optional(Ne),NewsletterDisabled:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),SupplierRefMasterRecords:t.optional(t.any()),AccountPolicies:t.optional(Ie),FinancialDetail:t.optional(Me),DynamicFields:t.optional(Pe)}),Le=t.object({minDate:t.string(),maxDate:t.string()}),Y=t.optional(t.pipe(t.string(),t.minLength(2),t.maxLength(2))),Re=t.object({searchType:t.literal(`CODE`),recordCode:t.pipe(t.string(),t.minLength(5),t.maxLength(6)),languageCode:Y}),ze=t.object({searchType:t.literal(`NAME`),name:t.string(),city:t.optional(t.string()),languageCode:Y}),Be=t.object({searchType:t.literal(`VATCODE`),vatCode:t.string(),phoneNumber:t.optional(t.string()),languageCode:Y}),Ve=t.object({searchType:t.literal(`ZONE`),zipCode:t.string(),countyCode:t.string(),city:t.optional(t.string()),languageCode:Y}),He=t.object({searchType:t.literal(`CATEGORY`),categoryCode:t.string(),languageCode:Y}),Ue=t.object({searchType:t.literal(`EMAIL`),email:t.string(),languageCode:Y}),We=t.object({searchType:t.literal(`LASTMODDATE`),lastModificationDate:Le,languageCode:Y}),Ge=t.object({searchType:t.literal(`SEARCH_FIELD`),searchFieldValue:t.string(),languageCode:Y}),Ke=t.object({searchType:t.literal(`EXTERNAL_REF_CODE`),searchFieldValue:t.string(),languageCode:Y}),qe=t.union([Re,ze,Be,Ve,He,Ue,We,Ge,Ke]),Je=e=>{if(!(`@RecordCode`in e))return e;let t=e[`@RecordCode`];if(!t)return e;let{"@RecordCode":n,...r}=e;return{...r,RecordCode:t}},Ye=t.pipe(S(qe),t.transform(e=>Je(e))),Xe=t.pipe(t.object({RqHeader:T,SearchMasterRecord:Ye}),t.transform(e=>{let{SearchMasterRecord:t,RqHeader:n,...r}=e;return{RqHeader:n,...t,...r}})),Ze=t.object({MasterRecordDetail:t.optional(t.pipe(t.union([t.array(J),J]),t.transform(e=>{if(e)return Array.isArray(e)?e:[e]})))}),Qe=C(t.object({RsStatus:E,MasterRecordList:t.optional(Ze)})),$e=t.object({RqHeader:T,MasterRecordDetail:J}),et=C(t.object({RsStatus:E,MasterRecordDetail:t.optional(J)}));function tt(e){return{success:!0,data:e}}function X(e){return{success:!1,error:e}}function nt(e){return e===200}function rt(e){let t=new AbortController;if(!e||e<=0)return{signal:t.signal};let n=setTimeout(()=>t.abort(),e);return{signal:t.signal,clear:()=>clearTimeout(n)}}function Z(e,t){try{let n=new URL(e),r=(n.pathname.endsWith(`/`)?n.pathname.slice(0,-1):n.pathname)+t;return new URL(r,n)}catch(e){throw new c(`validation`,`Invalid baseURL: ${e instanceof Error?e.message:`Invalid URL format`}`)}}function it(e,t){if(!t.startsWith(`/`))throw new c(`validation`,`Invalid endpoint: endpoint must start with '/' but got '${t}'`);let n=Z(e.replace(/\/$/,``),t);if(n.protocol!==`http:`&&n.protocol!==`https:`)throw new c(`validation`,`Invalid protocol: baseURL must use http:// or https:// but got '${n.protocol}'`);return n.toString()}const at={ignoreAttributes:!1,attributeNamePrefix:`@`,parseAttributeValue:!1,trimValues:!0,ignoreNameSpace:!0,removeNSPrefix:!0,parseTagValue:!1},ot={ignoreAttributes:!1,attributeNamePrefix:`@`,suppressEmptyNode:!0},st=new o(at),ct=new a(ot);function lt(e){try{return ct.build(e)}catch(e){throw new c(`validation`,`Failed to convert JSON to XML: ${e instanceof Error?e.message:`Unknown error`}`)}}function ut(e){try{return st.parse(e)}catch(e){throw new c(`validation`,`Failed to convert XML to JSON: ${e instanceof Error?e.message:`Unknown error`}`)}}const Q={SEARCH_REQUEST:`SearchMasterRecordRQ`,SEARCH_RESPONSE:`SearchMasterRecordRS`,UPSERT_REQUEST:`ManageMasterRecordRQ`,UPSERT_RESPONSE:`ManageMasterRecordRS`,BOOKING_REQUEST:`BookFileRQ`,BOOKING_RESPONSE:`BookingFileRS`};function $(e,t){return{[e]:t}}var dt=class{constructor(e){this.options=e}createRqHeader(){return{"@HostID":this.options.hostID,"@Xtoken":this.options.xtoken,"@Interface":`WEB`,"@UserName":`WEB`,...this.options.languageCode&&{"@LanguageCode":this.options.languageCode}}}createUrl(e){return it(this.options.baseURL,e)}get endpoints(){return{search:`/interop/masterRecords/v2/rest/Search`,upsert:`/interop/masterRecords/v2/rest/InsertOrUpdate`,createBooking:`/interop/booking/v2/rest/CreateBookingFile`}}handleApiStatus(e){let t=e.rsStatus,n=t?.status;return n===`OK`?tt(e):X(u(t.errorDescription,n,t.errorCode))}toAvesError(e,t){return e instanceof c?e:e instanceof n?l(`Validation error: ${f(e.issues)}`):e instanceof Error?d(e.message):d(t)}async request(t,n,r,a){let{signal:o,clear:s}=rt(this.options.timeoutMs??3e4);try{let s=this.createUrl(t),c=lt(n);console.log(`xmlBody`,c);let d=await e(s,{method:`POST`,headers:{"Content-Type":`application/xml`},body:c,signal:o}),p=await d.body.text();if(!nt(d.statusCode))return X(u(p,`ERROR`,d.statusCode));let m=ut(p)[r];if(!m)return X(l(`Invalid response structure: missing root element '${r}'`));let h=i(a,m);return h.success?this.handleApiStatus(h.output):X(l(`Invalid response format: ${f(h.issues)}`))}catch(e){return ee(e)?X(u(`Request timed out`,`TIMEOUT`)):X(this.toAvesError(e,`Unknown error occurred`))}finally{s?.()}}async search(e){try{let t=r(Xe,{RqHeader:this.createRqHeader(),SearchMasterRecord:e}),n=$(Q.SEARCH_REQUEST,t);return this.request(this.endpoints.search,n,Q.SEARCH_RESPONSE,Qe)}catch(e){return X(this.toAvesError(e,`Validation error occurred during search`))}}async upsertRecord(e){try{let t=r(q,e),n=r($e,{RqHeader:this.createRqHeader(),MasterRecordDetail:t}),i=$(Q.UPSERT_REQUEST,n);return this.request(this.endpoints.upsert,i,Q.UPSERT_RESPONSE,et)}catch(e){return X(this.toAvesError(e,`Validation error occurred during upsert`))}}async createBooking(e){try{let t=r(Ae,e),n=$(Q.BOOKING_REQUEST,{RqHeader:this.createRqHeader(),...t});return this.request(this.endpoints.createBooking,n,Q.BOOKING_RESPONSE,je)}catch(e){return X(this.toAvesError(e,`Validation error occurred during createBooking`))}}};export{dt as AvesClient,c as AvesError};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["r"],"sources":["../src/error.ts","../src/utils/case-transform.ts","../src/utils/schema-transform.ts","../src/schemas/common.ts","../src/schemas/booking-file.ts","../src/schemas/master-record.ts","../src/schemas/search.ts","../src/schemas/upsert.ts","../src/utils/result.ts","../src/utils/timeout.ts","../src/utils/url.ts","../src/xml-client.ts","../src/xml-root.ts","../src/client.ts"],"sourcesContent":["import type { BaseIssue } from \"valibot\";\n\nexport const ERROR_KINDS = {\n\tVALIDATION: \"validation\",\n\tAPI: \"api\",\n\tUNKNOWN: \"unknown\",\n} as const;\n\nexport type ErrorKind = (typeof ERROR_KINDS)[keyof typeof ERROR_KINDS];\n\n/**\n * Error thrown by AVES API operations\n */\nexport class AvesError extends Error {\n\tconstructor(\n\t\tpublic readonly kind: ErrorKind,\n\t\tpublic readonly message: string,\n\t\tpublic readonly status?: string,\n\t\tpublic readonly code?: number | string,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"AvesError\";\n\t\tthis.status = status?.toLowerCase();\n\t\tthis.code = this.parseCode(code);\n\t}\n\n\tprivate parseCode(code?: number | string): number {\n\t\tif (typeof code === \"string\") {\n\t\t\treturn Number.parseInt(code, 10);\n\t\t}\n\t\treturn code ?? 0;\n\t}\n}\n\nexport function validationError(message: string): AvesError {\n\treturn new AvesError(ERROR_KINDS.VALIDATION, message);\n}\n\nexport function apiError(\n\tmessage: string,\n\tstatus?: string,\n\tcode?: number | string,\n): AvesError {\n\treturn new AvesError(ERROR_KINDS.API, message, status, code);\n}\n\nexport function unknownError(message: string): AvesError {\n\treturn new AvesError(ERROR_KINDS.UNKNOWN, message);\n}\n\nexport function buildDetails(issues: readonly BaseIssue<unknown>[]): string {\n\treturn issues.map(formatIssue).join(\"; \");\n}\n\nfunction formatIssue(issue: BaseIssue<unknown>): string {\n\tconst path = formatPath(issue.path);\n\tconst message = issue.message ?? \"Invalid value\";\n\n\treturn path ? `${path}: ${message}` : message;\n}\n\nfunction formatPath(path?: readonly unknown[]): string | undefined {\n\tif (!path || path.length === 0) return;\n\n\tconst segments = path\n\t\t.map(extractSegment)\n\t\t.filter((segment): segment is string => segment !== undefined);\n\n\treturn segments.length > 0 ? segments.join(\".\") : undefined;\n}\n\nfunction extractSegment(segment: unknown): string | undefined {\n\tif (typeof segment === \"string\" || typeof segment === \"number\") {\n\t\treturn String(segment);\n\t}\n\n\tif (typeof segment === \"object\" && segment !== null && \"key\" in segment) {\n\t\treturn String(segment.key);\n\t}\n\n\treturn;\n}\n\nexport function isAbortError(error: unknown): boolean {\n\treturn error instanceof Error && error.name === \"AbortError\";\n}\n","type CamelFromDelimiter<S extends string> = S extends `${infer H}_${infer T}`\n\t? `${H}${Capitalize<CamelFromDelimiter<T>>}`\n\t: S extends `${infer H}-${infer T}`\n\t\t? `${H}${Capitalize<CamelFromDelimiter<T>>}`\n\t\t: S;\n\ntype ToCamelCase<S extends string> =\n\tCamelFromDelimiter<S> extends `${infer F}${infer R}`\n\t\t? `${Lowercase<F>}${R}`\n\t\t: CamelFromDelimiter<S>;\n\ntype PascalFromDelimiter<S extends string> = S extends `${infer H}_${infer T}`\n\t? `${Capitalize<H>}${Capitalize<PascalFromDelimiter<T>>}`\n\t: S extends `${infer H}-${infer T}`\n\t\t? `${Capitalize<H>}${Capitalize<PascalFromDelimiter<T>>}`\n\t\t: S;\n\ntype ToPascalCase<S extends string> =\n\tPascalFromDelimiter<S> extends `${infer F}${infer R}`\n\t\t? `${Capitalize<F>}${R}`\n\t\t: Capitalize<PascalFromDelimiter<S>>;\n\n/** Keys that are preserved as-is (no recursive transform) at runtime */\ntype Primitive = string | number | boolean | symbol | bigint | null | undefined;\ntype SpecialObject =\n\t| Date\n\t| RegExp\n\t| Map<unknown, unknown>\n\t| Set<unknown>\n\t| Error;\n\n/** Maps key K: strips leading @ and converts to camelCase for mapped output key */\ntype CamelizeKey<K extends string> = K extends `@${infer Rest}`\n\t? ToCamelCase<Rest>\n\t: ToCamelCase<K>;\n\n/** Maps key K: strips leading @ and converts to PascalCase for mapped output key */\ntype PascalizeKey<K extends string> = K extends `@${infer Rest}`\n\t? ToPascalCase<Rest>\n\t: ToPascalCase<K>;\n\n/**\n * Recursively maps PascalCase/@-prefixed object keys to camelCase.\n * Reflects pascalToCamelKeys runtime: primitives and special objects preserved; arrays and plain objects recursively transformed.\n */\nexport type Camelize<T> = T extends Primitive\n\t? T\n\t: T extends SpecialObject\n\t\t? T\n\t\t: T extends readonly (infer U)[]\n\t\t\t? Camelize<U>[]\n\t\t\t: T extends object\n\t\t\t\t? { [K in keyof T as CamelizeKey<K & string>]: Camelize<T[K]> }\n\t\t\t\t: T;\n\n/**\n * Recursively maps camelCase keys to PascalCase (with @ for attributes at runtime).\n * Reflects camelToPascalKeys output shape for type-level use.\n */\nexport type Pascalize<T> = T extends Primitive\n\t? T\n\t: T extends SpecialObject\n\t\t? T\n\t\t: T extends readonly (infer U)[]\n\t\t\t? Pascalize<U>[]\n\t\t\t: T extends object\n\t\t\t\t? { [K in keyof T as PascalizeKey<K & string>]: Pascalize<T[K]> }\n\t\t\t\t: T;\n\nfunction camelToPascal(str: string): string {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nfunction pascalToCamel(str: string): string {\n\treturn str.charAt(0).toLowerCase() + str.slice(1);\n}\n\n/**\n * Checks if an object is a special built-in type that should not be transformed\n */\nfunction isSpecialObject(obj: unknown): boolean {\n\treturn (\n\t\tobj instanceof Date ||\n\t\tobj instanceof RegExp ||\n\t\tobj instanceof Map ||\n\t\tobj instanceof Set ||\n\t\tobj instanceof Error\n\t);\n}\n\n/**\n * Registry of attribute fields per schema context\n * Each schema defines its own attributes, keeping them co-located\n */\nconst attributeRegistry: Record<string, readonly string[]> = {\n\t// Request/Response headers\n\theader: [\"hostID\", \"xtoken\", \"interface\", \"userName\", \"status\"],\n\n\t// Master record root attributes\n\tmasterRecord: [\"recordCode\", \"insertCriteria\"],\n\n\t// Financial detail - all fields are attributes\n\tfinancialDetail: [\n\t\t\"currencyCode\",\n\t\t\"creditLimit\",\n\t\t\"c_PaymentType\",\n\t\t\"c_SpecPaymentTypeCode\",\n\t\t\"s_PaymentType\",\n\t\t\"s_SpecPaymentTypeCode\",\n\t\t\"enableElectronicInvoicing\",\n\t\t\"electronicInvoicingType\",\n\t],\n\n\t// ID document detail - all fields are attributes\n\tidDocumentDetail: [\n\t\t\"idType\",\n\t\t\"idCode\",\n\t\t\"idIssueLocation\",\n\t\t\"idIssueCounty\",\n\t\t\"idIssueDate\",\n\t\t\"idExpireDate\",\n\t],\n\n\t// Account policies - all fields are attributes\n\taccountPolicies: [\n\t\t\"acceptProfilingPolicies\",\n\t\t\"acceptPrivacyPolicies\",\n\t\t\"acceptNewsletterPolicies\",\n\t],\n\n\t// Dynamic fields - key/value are attributes\n\tdynamicFields: [\"key\", \"value\"],\n\n\t// Search parameters\n\tsearch: [\"minDate\", \"maxDate\"],\n\n\t// Booking file (CreateBookingFile / BookFileRQ)\n\tbookingFileStatus: [\"value\", \"expiredDate\"],\n\tstatisticCodes: [\"sCode1\", \"sCode2\", \"sCode3\", \"sCode4\", \"sCode5\", \"sCode6\"],\n\tdestination: [\"code\", \"iataCode\", \"nationCode\"],\n\tcustomerDetail: [\"recordCode\"],\n\tbookingFileDocument: [\"printDoc\", \"sendDocViaEmail\"],\n\tfinancialDeadlineDetail: [\"reschedulingCode\", \"expireDate\", \"totalAmount\"],\n\tdeadlineDetail: [\"deadlineCode\", \"description\", \"expireDate\"],\n\tpaymentDetail: [\n\t\t\"paymentDate\",\n\t\t\"paumentNote\",\n\t\t\"amount\",\n\t\t\"paymentUser\",\n\t\t\"paymentType\",\n\t],\n\tselectedPackageDetail: [\n\t\t\"pCode\",\n\t\t\"startDate\",\n\t\t\"endDate\",\n\t\t\"getServicesFromPackage\",\n\t],\n\tselectedServiceDetail: [\n\t\t\"sCode\",\n\t\t\"ssCode\",\n\t\t\"supplierMasterCode\",\n\t\t\"supplierName\",\n\t\t\"supplierMasterSearchField\",\n\t\t\"supplierFiscalCode\",\n\t],\n\textraQuoteServiceDetail: [\n\t\t\"sCode\",\n\t\t\"ssCode\",\n\t\t\"supplierMasterCode\",\n\t\t\"supplierName\",\n\t\t\"supplierMasterSearchField\",\n\t\t\"supplierFiscalCode\",\n\t],\n\tnoteDetail: [\"nType\", \"title\"],\n\tpassengerDetail: [\"rph\", \"roomRph\", \"billingHolder\"],\n\tbookingFinancialInfo: [\n\t\t\"customer_PaymentType\",\n\t\t\"customer_SpecPaymentTypeCode\",\n\t],\n\treservationFormCustomizablePrintParameters: [\"makeDocumentTo\"],\n};\n\n/**\n * Flattened Set of all attribute fields for quick lookup\n * Computed once from the registry\n */\nexport const ATTRIBUTE_FIELDS = new Set(\n\tObject.values(attributeRegistry).flat(),\n);\n\n/**\n * Add attribute fields for a new schema context\n * Allows extending the registry from schema files\n */\nexport function registerAttributeFields(\n\tcontext: string,\n\tfields: readonly string[],\n) {\n\tattributeRegistry[context] = fields;\n\tfields.forEach((field) => {\n\t\tif (!ATTRIBUTE_FIELDS.has(field)) {\n\t\t\tATTRIBUTE_FIELDS.add(field);\n\t\t}\n\t});\n}\n\nexport type CamelToPascalOptions = {\n\t/** At root level only: do not add @ prefix for these keys (used when same key is element at root but attribute in nested objects) */\n\texcludeFromAttributePrefix?: string[];\n};\n\n/**\n * Transforms object keys from camelCase to PascalCase\n * Adds @ prefix to fields in ATTRIBUTE_FIELDS for XML attributes\n * @param options.excludeFromAttributePrefix - keys that must not get @ at this level (not passed to recursion)\n */\nexport function camelToPascalKeys<T>(\n\tinput: T,\n\toptions?: CamelToPascalOptions,\n): Pascalize<T> {\n\tif (input === null || typeof input !== \"object\") {\n\t\treturn input as Pascalize<T>;\n\t}\n\n\tif (isSpecialObject(input)) {\n\t\treturn input as Pascalize<T>;\n\t}\n\n\tif (Array.isArray(input)) {\n\t\treturn input.map((item) => camelToPascalKeys(item)) as Pascalize<T>;\n\t}\n\n\tconst exclude = options?.excludeFromAttributePrefix;\n\tconst result: Record<string, unknown> = {};\n\n\tfor (const [key, value] of Object.entries(input)) {\n\t\tconst pascalKey = camelToPascal(key);\n\t\tconst treatAsAttr = ATTRIBUTE_FIELDS.has(key) && !exclude?.includes(key);\n\t\tconst finalKey = treatAsAttr ? `@${pascalKey}` : pascalKey;\n\n\t\tresult[finalKey] = transformValue(value, (val) =>\n\t\t\tcamelToPascalKeys(val, undefined),\n\t\t);\n\t}\n\n\treturn result as Pascalize<T>;\n}\n\n/**\n * Transforms object keys from PascalCase to camelCase\n * Strips @ prefix from XML attributes\n */\nexport function pascalToCamelKeys<T>(input: T): Camelize<T> {\n\tif (input === null || typeof input !== \"object\") {\n\t\treturn input as Camelize<T>;\n\t}\n\n\tif (isSpecialObject(input)) {\n\t\treturn input as Camelize<T>;\n\t}\n\n\tif (Array.isArray(input)) {\n\t\treturn input.map((item) => pascalToCamelKeys(item)) as Camelize<T>;\n\t}\n\n\tconst result: Record<string, unknown> = {};\n\n\tfor (const [rawKey, value] of Object.entries(input)) {\n\t\tconst key = rawKey.startsWith(\"@\") ? rawKey.slice(1) : rawKey;\n\t\tconst camelKey = pascalToCamel(key);\n\n\t\tresult[camelKey] = transformValue(value, pascalToCamelKeys);\n\t}\n\n\treturn result as Camelize<T>;\n}\n\nfunction transformValue(\n\tvalue: unknown,\n\ttransformObject: (obj: Record<string, unknown>) => unknown,\n): unknown {\n\tif (value === null || typeof value !== \"object\") {\n\t\treturn value;\n\t}\n\n\tif (isSpecialObject(value)) {\n\t\treturn value;\n\t}\n\n\tif (Array.isArray(value)) {\n\t\treturn value.map((item) => transformValue(item, transformObject));\n\t}\n\n\treturn transformObject(value as Record<string, unknown>);\n}\n","import type { BaseSchema, ObjectEntries } from \"valibot\";\nimport * as v from \"valibot\";\nimport {\n\tATTRIBUTE_FIELDS,\n\tcamelToPascalKeys,\n\tpascalToCamelKeys,\n} from \"./case-transform.js\";\n\n/**\n * Creates a schema that transforms camelCase input to PascalCase for API requests\n */\nexport function createApiSchema<\n\tTInput extends BaseSchema<unknown, unknown, v.BaseIssue<unknown>>,\n>(inputSchema: TInput) {\n\treturn v.pipe(\n\t\tinputSchema,\n\t\tv.transform((input) => camelToPascalKeys(input)),\n\t);\n}\n\n/**\n * Creates a schema that transforms PascalCase API responses to camelCase\n */\nexport function createResponseSchema<\n\tTApi extends BaseSchema<unknown, unknown, v.BaseIssue<unknown>>,\n>(apiSchema: TApi) {\n\treturn v.pipe(\n\t\tapiSchema,\n\t\tv.transform((input) => pascalToCamelKeys(input)),\n\t);\n}\n\n/**\n * Creates a validation schema for already-transformed PascalCase data with @ attributes\n * Used for nested objects like AccountPolicies, FinancialDetail, DynamicFields\n * Takes the same input schema used in createApiSchema and generates the validation schema\n * by directly using the ATTRIBUTE_FIELDS logic to determine which fields become attributes\n */\nexport function createApiValidationSchema<\n\tTEntries extends ObjectEntries,\n\tTMessage extends v.ErrorMessage<v.ObjectIssue> | undefined,\n>(inputSchema: v.ObjectSchema<TEntries, TMessage>) {\n\tconst validationEntries: Record<string, unknown> = {};\n\n\t// Build validation schema based on ATTRIBUTE_FIELDS\n\tfor (const key in inputSchema.entries) {\n\t\tconst isAttribute = ATTRIBUTE_FIELDS.has(key);\n\t\tconst pascalKey = key.charAt(0).toUpperCase() + key.slice(1);\n\t\tconst finalKey = isAttribute ? `@${pascalKey}` : pascalKey;\n\n\t\tvalidationEntries[finalKey] = inputSchema.entries[key];\n\t}\n\n\treturn v.object(validationEntries as TEntries);\n}\n","import * as v from \"valibot\";\n\n/**\n * Request header schema with authentication credentials\n */\nexport const RqHeaderSchema = v.object({\n\t\"@HostID\": v.pipe(v.string(), v.minLength(6), v.maxLength(6)),\n\t\"@Xtoken\": v.string(),\n\t\"@Interface\": v.literal(\"WEB\"),\n\t\"@UserName\": v.literal(\"WEB\"),\n\t\"@LanguageCode\": v.optional(\n\t\tv.pipe(v.string(), v.minLength(2), v.maxLength(2)),\n\t),\n});\n\nconst warningsSchema = v.optional(\n\tv.pipe(\n\t\tv.string(),\n\t\tv.transform((input) => input.split(\",\")),\n\t),\n);\n\n/**\n * Response status schema indicating success, error, or warning\n */\nexport const RsStatusSchema = v.pipe(\n\tv.object({\n\t\t\"@Status\": v.union([\n\t\t\tv.literal(\"OK\"),\n\t\t\tv.literal(\"ERROR\"),\n\t\t\tv.literal(\"WARNING\"),\n\t\t\tv.literal(\"TIMEOUT\"),\n\t\t]),\n\t\tErrorCode: v.optional(\n\t\t\tv.pipe(\n\t\t\t\tv.union([v.string(), v.number()]),\n\t\t\t\tv.transform((val) => Number(val)),\n\t\t\t),\n\t\t),\n\t\tErrorDescription: v.optional(v.string()),\n\t\tWarnings: warningsSchema,\n\t}),\n\tv.transform((input) => {\n\t\treturn {\n\t\t\tstatus: input[\"@Status\"],\n\t\t\terrorCode: input.ErrorCode,\n\t\t\terrorDescription: input.ErrorDescription,\n\t\t\twarnings: input.Warnings,\n\t\t};\n\t}),\n);\n","import * as v from \"valibot\";\nimport { camelToPascalKeys } from \"../utils/case-transform.js\";\nimport { createResponseSchema } from \"../utils/schema-transform.js\";\nimport { RsStatusSchema } from \"./common.js\";\n\n// ---------------------------------------------------------------------------\n// BookingFileStatus\n// ---------------------------------------------------------------------------\n\nconst bookingFileStatusValueSchema = v.union([\n\tv.literal(\"QUOTATION\"),\n\tv.literal(\"WORK_IN_PROGRESS\"),\n\tv.literal(\"CONFIRM\"),\n\tv.literal(\"CONFIRMED\"),\n\tv.literal(\"OPTION\"),\n\tv.literal(\"OPTIONED\"),\n\tv.literal(\"REQUEST\"),\n\tv.literal(\"CANCELED\"),\n]);\n\nconst BookingFileStatusInputSchema = v.object({\n\tvalue: bookingFileStatusValueSchema,\n\texpiredDate: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// StatisticCodes (AvesStatisticCodes)\n// ---------------------------------------------------------------------------\n\nconst StatisticCodesInputSchema = v.object({\n\tsCode1: v.optional(v.pipe(v.string(), v.maxLength(4))),\n\tsCode2: v.optional(v.pipe(v.string(), v.maxLength(4))),\n\tsCode3: v.optional(v.pipe(v.string(), v.maxLength(4))),\n\tsCode4: v.optional(v.pipe(v.string(), v.maxLength(4))),\n\tsCode5: v.optional(v.pipe(v.string(), v.maxLength(4))),\n\tsCode6: v.optional(v.pipe(v.string(), v.maxLength(4))),\n});\n\n// ---------------------------------------------------------------------------\n// Destination\n// ---------------------------------------------------------------------------\n\nconst DestinationInputSchema = v.object({\n\tcode: v.optional(v.string()),\n\tiataCode: v.optional(v.string()),\n\tnationCode: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// CustomerDetail (record code only or full master record data)\n// ---------------------------------------------------------------------------\n\nconst CustomerDetailInputSchema = v.object({\n\trecordCode: v.optional(v.string()),\n\t// When inserting new record, master record fields can be provided (see Common Structures)\n});\n\n// ---------------------------------------------------------------------------\n// BookingFileDocument\n// ---------------------------------------------------------------------------\n\nconst documentTypeSchema = v.union([\n\tv.literal(\"VISA_REQUEST\"),\n\tv.literal(\"TRAVEL_INFORMATION\"),\n\tv.literal(\"VOUCHER\"),\n\tv.literal(\"BOOKING_CONTRACT\"),\n\tv.literal(\"BOOKING_CONFIRMATION\"),\n\tv.literal(\"SUPPLIER_SERVICE_LIST\"),\n\tv.literal(\"INVOICE\"),\n\tv.literal(\"PROFORMA_INVOICE\"),\n\tv.literal(\"ADEGUAMENTO\"),\n\tv.literal(\"RESERVATION_FORM\"),\n\tv.literal(\"OPEN_XML\"),\n\tv.literal(\"SALES_INVOICE\"),\n\tv.literal(\"TICKETING_TMASTER\"),\n\tv.literal(\"SUMMARY_FORM\"),\n]);\n\nconst ReservationFormCustomizablePrintParametersInputSchema = v.object({\n\tmakeDocumentTo: v.optional(\n\t\tv.union([v.literal(\"BOOKING_CUSTOMER\"), v.literal(\"FIRST_PASSENGER\")]),\n\t),\n});\n\nconst TravelInformationCustomizablePrintParametersInputSchema = v.object({\n\tfillInCode: v.optional(v.string()),\n});\n\nconst DocumentCustomizablePrintParametersInputSchema = v.union([\n\tReservationFormCustomizablePrintParametersInputSchema,\n\tTravelInformationCustomizablePrintParametersInputSchema,\n]);\n\nconst InfoDocumentToPrintInputSchema = v.object({\n\tdocumentType: documentTypeSchema,\n\tdocumentCustomizablePrintParameters: v.optional(\n\t\tDocumentCustomizablePrintParametersInputSchema,\n\t),\n});\n\nconst BookingFileDocumentInputSchema = v.object({\n\tprintDoc: v.optional(\n\t\tv.union([v.literal(\"true\"), v.literal(\"false\"), v.boolean()]),\n\t),\n\tsendDocViaEmail: v.optional(\n\t\tv.union([v.literal(\"true\"), v.literal(\"false\"), v.boolean()]),\n\t),\n\tinfoDocumentsToPrint: v.optional(v.array(InfoDocumentToPrintInputSchema)),\n});\n\n// ---------------------------------------------------------------------------\n// FinancialDeadlineList / DeadlineList / PaymentList\n// ---------------------------------------------------------------------------\n\nconst FinancialDeadlineDetailInputSchema = v.object({\n\treschedulingCode: v.optional(v.string()),\n\texpireDate: v.optional(v.string()),\n\ttotalAmount: v.optional(v.string()),\n});\n\nconst DeadlineDetailInputSchema = v.object({\n\tdeadlineCode: v.optional(v.string()),\n\tdescription: v.optional(v.string()),\n\texpireDate: v.optional(v.string()),\n});\n\nconst paymentTypeDetailSchema = v.union([\n\tv.literal(\"C\"),\n\tv.literal(\"B\"),\n\tv.literal(\"D\"),\n\tv.literal(\"T\"),\n\tv.literal(\"P\"),\n\tv.literal(\"R\"),\n\tv.literal(\"A\"),\n\tv.literal(\"H\"),\n\tv.literal(\"I\"),\n\tv.literal(\"J\"),\n\tv.literal(\"K\"),\n\tv.literal(\"L\"),\n\tv.literal(\"M\"),\n\tv.literal(\"N\"),\n\tv.literal(\"O\"),\n\tv.literal(\"Q\"),\n\tv.literal(\"S\"),\n\tv.literal(\"U\"),\n\tv.literal(\"V\"),\n]);\n\nconst PaymentDetailInputSchema = v.object({\n\tpaymentDate: v.optional(v.string()),\n\tpaumentNote: v.optional(v.string()),\n\tamount: v.optional(v.string()),\n\tpaymentUser: v.optional(v.string()),\n\tpaymentType: v.optional(paymentTypeDetailSchema),\n});\n\n// ---------------------------------------------------------------------------\n// SelectedPackageList / SelectedServiceList / ExtraQuoteServiceList\n// ---------------------------------------------------------------------------\n\nconst SelectedPackageDetailInputSchema = v.object({\n\tpCode: v.optional(v.string()),\n\tstartDate: v.optional(v.string()),\n\tendDate: v.optional(v.string()),\n\tgetServicesFromPackage: v.optional(\n\t\tv.union([v.literal(\"true\"), v.literal(\"false\"), v.boolean()]),\n\t),\n});\n\nconst AvesServiceInfoInputSchema = v.object({\n\tpackageCode: v.optional(v.string()),\n\tpackageReference: v.optional(v.string()),\n});\n\nconst avesServiceTypeSchema = v.union([\n\tv.literal(\"TOP\"),\n\tv.literal(\"TOP_SS\"),\n\tv.literal(\"ADV\"),\n\tv.literal(\"GRP\"),\n\tv.literal(\"OTHER\"),\n]);\n\nconst toServiceTypeSchema = v.union([\n\tv.literal(\"ACCOMODATION\"),\n\tv.literal(\"TRANSPORT\"),\n\tv.literal(\"CHARTER\"),\n\tv.literal(\"TRANSFER\"),\n\tv.literal(\"PULLMAN\"),\n\tv.literal(\"FERRY\"),\n\tv.literal(\"CRUISE\"),\n\tv.literal(\"INSURANCE\"),\n\tv.literal(\"EXTRAFEE\"),\n\tv.literal(\"PENALTY\"),\n\tv.literal(\"PROMO\"),\n\tv.literal(\"OTHER\"),\n\tv.literal(\"NOT_SET\"),\n\tv.literal(\"RESIDENCE\"),\n]);\n\nconst SelectedServiceDetailInputSchema = v.object({\n\tsCode: v.string(),\n\tssCode: v.optional(v.string()),\n\tavesServiceType: v.optional(avesServiceTypeSchema),\n\ttoServiceType: v.optional(toServiceTypeSchema),\n\tsubServiceDesc: v.optional(v.string()),\n\tstartDate: v.optional(v.string()),\n\tendDate: v.optional(v.string()),\n\tqty: v.optional(v.string()),\n\tpax: v.optional(v.string()),\n\tpaxAssociated: v.optional(v.array(v.object({ pax: v.optional(v.string()) }))),\n\tavesSession: v.optional(v.string()),\n\tavesServiceInfo: v.optional(AvesServiceInfoInputSchema),\n\tsupplierMasterCode: v.optional(v.string()),\n\tsupplierName: v.optional(v.string()),\n\tsupplierMasterSearchField: v.optional(v.string()),\n\tsupplierFiscalCode: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// NoteList\n// ---------------------------------------------------------------------------\n\nconst NoteDetailInputSchema = v.object({\n\tnType: v.optional(v.string()),\n\ttitle: v.optional(v.string()),\n\ttext: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// PassengerList (PassengerDetail - see Common Structures \"Passenger\" DETAIL)\n// ---------------------------------------------------------------------------\n\nconst passengerCategoryCodeSchema = v.union([\n\tv.literal(\"AD\"),\n\tv.literal(\"CH\"),\n\tv.literal(\"IN\"),\n\tv.literal(\"OV\"),\n]);\n\nconst PassengerDetailInputSchema = v.object({\n\trph: v.string(),\n\troomRph: v.optional(v.string()),\n\tbillingHolder: v.optional(\n\t\tv.union([v.literal(\"true\"), v.literal(\"false\"), v.boolean()]),\n\t),\n\tmasterRecordCode: v.optional(v.string()),\n\tname: v.string(),\n\tcategoryCode: passengerCategoryCodeSchema,\n\tsex: v.optional(v.union([v.literal(\"M\"), v.literal(\"F\")])),\n\tbirthDate: v.optional(v.string()),\n\tbirthPlace: v.optional(v.string()),\n\tnationCode: v.optional(v.string()),\n\tcitizenshipCode: v.optional(v.string()),\n\tfiscalCode: v.optional(v.string()),\n\tphoneNumber: v.optional(v.string()),\n\teMail: v.optional(v.string()),\n\tnotes: v.optional(v.array(NoteDetailInputSchema)),\n\tflagStatus: v.optional(v.string()),\n\tofferCode: v.optional(v.string()),\n\tidDocInfo: v.optional(\n\t\tv.object({\n\t\t\tidType: v.optional(v.string()),\n\t\t\tidCode: v.optional(v.string()),\n\t\t\tidIssueLocation: v.optional(v.string()),\n\t\t\tidIssueCounty: v.optional(v.string()),\n\t\t\tidIssueDate: v.optional(v.string()),\n\t\t\tidExpireDate: v.optional(v.string()),\n\t\t}),\n\t),\n});\n\n// ---------------------------------------------------------------------------\n// BookingFinancialInfo\n// ---------------------------------------------------------------------------\n\nconst customerPaymentTypeSchema = v.union([\n\tv.literal(\"CASH\"),\n\tv.literal(\"BANK\"),\n\tv.literal(\"RID\"),\n\tv.literal(\"RIBA\"),\n\tv.literal(\"SPECIFIC_CODE\"),\n\tv.literal(\"NOT_SET\"),\n]);\n\nconst BookingFinancialInfoInputSchema = v.object({\n\tcustomer_PaymentType: v.optional(customerPaymentTypeSchema),\n\tcustomer_SpecPaymentTypeCode: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// GroupingPaxPolicy / TypeDownloadFile\n// ---------------------------------------------------------------------------\n\nconst groupingPaxPolicySchema = v.union([\n\tv.literal(\"GROUPED_PAX\"),\n\tv.literal(\"NOT_GROUPED_PAX\"),\n\tv.literal(\"ONE_PAX_ONLY\"),\n]);\n\nconst typeDownloadFileSchema = v.union([\n\tv.literal(\"AVES2AVES\"),\n\tv.literal(\"AVES2AVESVIA\"),\n\tv.literal(\"AVES2AVESITA\"),\n]);\n\n// ---------------------------------------------------------------------------\n// BookingFileRQ (root body - camelCase input)\n// ---------------------------------------------------------------------------\n\n/**\n * Booking file request body schema (camelCase input).\n * Maps to BookFileRQ in AVES XML 1.8.0 CreateBookingFile.\n */\nexport const BookingFileSchema = v.object({\n\tcreateDate: v.optional(v.string()),\n\tbookingFileRefCode: v.optional(v.string()),\n\ttravelAgentCode: v.optional(v.string()),\n\tclerkName: v.optional(v.string()),\n\tcustomerDetail: CustomerDetailInputSchema,\n\tcurrencyCode: v.optional(v.string()),\n\tmarkupCode: v.optional(v.string()),\n\tbookingFileStatus: BookingFileStatusInputSchema,\n\tstatisticCodes: v.optional(StatisticCodesInputSchema),\n\tdestination: v.optional(DestinationInputSchema),\n\tbookingFileDescription: v.optional(v.string()),\n\tstartDate: v.string(),\n\tendDate: v.string(),\n\tearlyBookingDate: v.optional(v.string()),\n\tcupCode: v.optional(v.string()),\n\tcigCode: v.optional(v.string()),\n\tcustomerPromoterCode: v.optional(v.string()),\n\tbillingReferenceCode: v.optional(v.string()),\n\tpaymentReferenceCode: v.optional(v.string()),\n\tbookingFileDocument: v.optional(BookingFileDocumentInputSchema),\n\tfinancialDeadlineList: v.optional(\n\t\tv.object({\n\t\t\tdeadlineDetail: v.optional(v.array(FinancialDeadlineDetailInputSchema)),\n\t\t}),\n\t),\n\tdeadlineList: v.optional(\n\t\tv.object({\n\t\t\tdeadlineDetail: v.optional(v.array(DeadlineDetailInputSchema)),\n\t\t}),\n\t),\n\tpaymentList: v.optional(\n\t\tv.object({\n\t\t\tpaymentDetail: v.optional(v.array(PaymentDetailInputSchema)),\n\t\t}),\n\t),\n\tselectedPackageList: v.optional(\n\t\tv.object({\n\t\t\tselectedPackageDetail: v.optional(\n\t\t\t\tv.array(SelectedPackageDetailInputSchema),\n\t\t\t),\n\t\t}),\n\t),\n\tselectedServiceList: v.object({\n\t\tselectedServiceDetail: v.pipe(\n\t\t\tv.union([\n\t\t\t\tv.array(SelectedServiceDetailInputSchema),\n\t\t\t\tSelectedServiceDetailInputSchema,\n\t\t\t]),\n\t\t\tv.transform((input) => (Array.isArray(input) ? input : [input])),\n\t\t),\n\t}),\n\textraQuotaRefCode: v.optional(v.string()),\n\textraQuoteServiceList: v.optional(\n\t\tv.object({\n\t\t\textraQuoteServiceDetail: v.optional(\n\t\t\t\tv.array(SelectedServiceDetailInputSchema),\n\t\t\t),\n\t\t}),\n\t),\n\tgetExtraQuoteFromSystem: v.optional(\n\t\tv.union([v.literal(\"true\"), v.literal(\"false\"), v.boolean()]),\n\t),\n\tpassengerList: v.object({\n\t\tpassengerDetail: v.pipe(\n\t\t\tv.union([\n\t\t\t\tv.array(PassengerDetailInputSchema),\n\t\t\t\tPassengerDetailInputSchema,\n\t\t\t]),\n\t\t\tv.transform((input) => (Array.isArray(input) ? input : [input])),\n\t\t),\n\t}),\n\tnoteList: v.optional(\n\t\tv.object({\n\t\t\tnoteDetail: v.optional(v.array(NoteDetailInputSchema)),\n\t\t}),\n\t),\n\tbookingFinancialInfo: v.optional(BookingFinancialInfoInputSchema),\n\tbookingFileCode: v.optional(v.string()),\n\tgroupingPaxPolicy: v.optional(groupingPaxPolicySchema),\n\tgroupBookingFile: v.optional(\n\t\tv.union([v.literal(\"true\"), v.literal(\"false\"), v.boolean()]),\n\t),\n\ttypeDownloadFile: v.optional(typeDownloadFileSchema),\n\tsetBookingFileCodeFromStartDate: v.optional(\n\t\tv.union([v.literal(\"true\"), v.literal(\"false\"), v.boolean()]),\n\t),\n});\n\n/**\n * Booking file schema for API requests (transforms to PascalCase for BookFileRQ).\n * Root-level startDate/endDate stay as elements; same keys in SelectedPackageDetail become @ attributes.\n */\nexport const BookingFileApiSchema = v.pipe(\n\tBookingFileSchema,\n\tv.transform((input) =>\n\t\tcamelToPascalKeys(input, {\n\t\t\texcludeFromAttributePrefix: [\"startDate\", \"endDate\"],\n\t\t}),\n\t),\n);\n\n/**\n * BookingFileRS response schema (transforms to camelCase).\n * BookingFileDetail shape follows Common Structures \"BOOKEDFILE\"; nested content is accepted and key-normalized.\n */\nexport const BookingFileResponseSchema = createResponseSchema(\n\tv.object({\n\t\tRsStatus: RsStatusSchema,\n\t\tBookingFileDetail: v.optional(v.any()),\n\t}),\n);\n","import * as v from \"valibot\";\nimport {\n\tcreateApiSchema,\n\tcreateApiValidationSchema,\n\tcreateResponseSchema,\n} from \"../utils/schema-transform.js\";\n\nconst paymentTypeSchema = v.union([\n\tv.literal(\"CASH\"),\n\tv.literal(\"BANK\"),\n\tv.literal(\"RID\"),\n\tv.literal(\"RIBA\"),\n\tv.literal(\"SPECIFIC_CODE\"),\n]);\n\nconst FinancialDetailInputSchema = v.object({\n\tcurrencyCode: v.optional(v.string()),\n\tcreditLimit: v.optional(v.string()),\n\tc_PaymentType: v.optional(paymentTypeSchema),\n\tc_SpecPaymentTypeCode: v.optional(v.string()),\n\ts_PaymentType: v.optional(paymentTypeSchema),\n\ts_SpecPaymentTypeCode: v.optional(v.string()),\n\tenableElectronicInvoicing: v.optional(\n\t\tv.union([v.literal(\"true\"), v.literal(\"false\"), v.boolean()]),\n\t),\n\telectronicInvoicingType: v.optional(v.string()),\n});\n\n/**\n * Financial detail schema for API requests (transforms to PascalCase)\n */\nexport const FinancialDetailSchema = createApiSchema(\n\tFinancialDetailInputSchema,\n);\n\n/**\n * Financial detail validation schema (already transformed PascalCase with @ attributes)\n */\nexport const FinancialDetailApiValidationSchema = createApiValidationSchema(\n\tFinancialDetailInputSchema,\n);\n\nconst IdDocumentDetailInputSchema = v.object({\n\tidType: v.optional(v.string()),\n\tidCode: v.optional(v.string()),\n\tidIssueLocation: v.optional(v.string()),\n\tidIssueCounty: v.optional(v.string()),\n\tidIssueDate: v.optional(v.string()),\n\tidExpireDate: v.optional(v.string()),\n});\n\n/**\n * ID document detail schema for API requests (transforms to PascalCase)\n */\nexport const IdDocumentDetailSchema = createApiSchema(\n\tIdDocumentDetailInputSchema,\n);\n\n/**\n * ID document detail validation schema (already transformed PascalCase with @ attributes)\n */\nexport const IdDocumentDetailApiValidationSchema = createApiValidationSchema(\n\tIdDocumentDetailInputSchema,\n);\n\nconst DynamicFieldsInputSchema = v.object({\n\tkey: v.string(),\n\tvalue: v.string(),\n});\n\n/**\n * Dynamic fields schema for API requests (transforms to PascalCase)\n */\nexport const DynamicFieldsSchema = createApiSchema(DynamicFieldsInputSchema);\n\n/**\n * Dynamic fields validation schema (already transformed PascalCase with @ attributes)\n */\nexport const DynamicFieldsApiValidationSchema = createApiValidationSchema(\n\tDynamicFieldsInputSchema,\n);\n\nconst flagSchema = v.union([v.literal(0), v.literal(1)]);\n\nconst recordStatusSchema = v.union([\n\tv.literal(\"ENABLED\"),\n\tv.literal(\"DISABLED\"),\n\tv.literal(\"WARNING\"),\n\tv.literal(\"BLACKLISTED\"),\n]);\n\nconst recordTypeSchema = v.union([\n\tv.literal(\"CUSTOMER\"),\n\tv.literal(\"SUPPLIER\"),\n\tv.literal(\"GENERAL\"),\n]);\n\nconst insertCriteriaSchema = v.union([\n\tv.literal(\"S\"),\n\tv.literal(\"N\"),\n\tv.literal(\"T\"),\n\tv.literal(\"M\"),\n]);\n\nconst AccountPoliciesInputSchema = v.object({\n\tacceptProfilingPolicies: v.optional(flagSchema),\n\tacceptPrivacyPolicies: v.optional(flagSchema),\n\tacceptNewsletterPolicies: v.optional(flagSchema),\n});\n\n/**\n * Account policies schema for API requests (transforms to PascalCase with @ attributes)\n */\nexport const AccountPoliciesSchema = createApiSchema(\n\tAccountPoliciesInputSchema,\n);\n\n/**\n * Account policies validation schema (already transformed PascalCase with @ attributes)\n */\nexport const AccountPoliciesApiValidationSchema = createApiValidationSchema(\n\tAccountPoliciesInputSchema,\n);\n\n/**\n * Master record detail input schema (camelCase)\n */\nexport const MasterRecordDetailSchema = v.object({\n\trecordCode: v.optional(v.pipe(v.string(), v.minLength(6), v.maxLength(6))),\n\tinsertCriteria: v.optional(insertCriteriaSchema),\n\tcreatedDate: v.optional(v.string()),\n\trecordType: v.optional(v.union([recordTypeSchema], \"CUSTOMER\")),\n\trecordStatus: v.optional(v.union([recordStatusSchema], \"ENABLED\")),\n\tmoniker: v.optional(v.string()),\n\tname: v.optional(v.string()),\n\textraInfo: v.optional(v.string()),\n\tlanguageCode: v.pipe(v.string(), v.minLength(2), v.maxLength(2)),\n\taddress: v.optional(v.string()),\n\tzipCode: v.optional(v.string()),\n\tcityName: v.optional(v.string()),\n\tcountyCode: v.optional(v.string()),\n\tstateCode: v.optional(v.string()),\n\tcategoryCode: v.optional(v.string()),\n\tfirstPhoneNumber: v.optional(v.string()),\n\tmobilePhoneNumber: v.optional(v.string()),\n\temail: v.optional(v.string()),\n\tgender: v.optional(v.union([v.literal(\"M\"), v.literal(\"F\")])),\n\tbirthDate: v.optional(v.string()),\n\tbirthCity: v.optional(v.string()),\n\tbirthCounty: v.optional(v.string()),\n\tfiscalCode: v.optional(v.string()),\n\tvatCode: v.optional(v.string()),\n\tthirdPartRecordCode: v.optional(v.string()),\n\tidDocumentDetail: v.optional(IdDocumentDetailInputSchema),\n\taccountPolicies: v.optional(AccountPoliciesInputSchema),\n\tfinancialDetail: v.optional(FinancialDetailInputSchema),\n\tdynamicFields: v.optional(DynamicFieldsInputSchema),\n});\n\n/**\n * Master record detail schema for API requests (transforms to PascalCase)\n */\nexport const MasterRecordDetailApiSchema = createApiSchema(\n\tMasterRecordDetailSchema,\n);\n\n/**\n * Master record detail response schema (transforms to camelCase)\n */\nexport const MasterRecordDetailResponseSchema = createResponseSchema(\n\tMasterRecordDetailApiSchema,\n);\n\n/**\n * Master record detail API validation schema (PascalCase with @ attributes)\n * Used for both search responses and upsert requests\n * All fields are optional as responses may not contain all fields\n */\nexport const MasterRecordDetailApiValidationSchema = v.object({\n\t\"@RecordCode\": v.optional(v.pipe(v.string(), v.minLength(6), v.maxLength(6))),\n\t\"@InsertCriteria\": v.optional(insertCriteriaSchema),\n\tCreatedDate: v.optional(v.string()),\n\tModifiedDate: v.optional(v.string()),\n\tRecordType: v.optional(\n\t\tv.union([\n\t\t\tv.literal(\"CUSTOMER\"),\n\t\t\tv.literal(\"SUPPLIER\"),\n\t\t\tv.literal(\"GENERAL\"),\n\t\t]),\n\t),\n\tLoginType: v.optional(v.string()),\n\tRecordStatus: v.optional(recordStatusSchema),\n\tMoniker: v.optional(v.string()),\n\tName: v.optional(v.string()),\n\tExtraInfo: v.optional(v.string()),\n\tLanguageCode: v.optional(v.pipe(v.string(), v.minLength(1), v.maxLength(2))),\n\tAddress: v.optional(v.string()),\n\tZipCode: v.optional(v.string()),\n\tCityName: v.optional(v.string()),\n\tCountyCode: v.optional(v.string()),\n\tStateCode: v.optional(v.string()),\n\tCategoryCode: v.optional(v.string()),\n\tPromoterCode: v.optional(v.string()),\n\tFirstPhoneNumber: v.optional(v.string()),\n\tMobilePhoneNumber: v.optional(v.string()),\n\tEmail: v.optional(v.string()),\n\tGender: v.optional(v.union([v.literal(\"M\"), v.literal(\"F\")])),\n\tBirthDate: v.optional(v.string()),\n\tBirthCity: v.optional(v.string()),\n\tBirthCounty: v.optional(v.string()),\n\tEncryptedPassword: v.optional(\n\t\tv.union([v.literal(\"true\"), v.literal(\"false\"), v.boolean()]),\n\t),\n\tFiscalCode: v.optional(v.string()),\n\tVatCode: v.optional(v.string()),\n\tThirdPartRecordCode: v.optional(v.string()),\n\tIdDocumentDetail: v.optional(IdDocumentDetailApiValidationSchema),\n\tNewsletterDisabled: v.optional(\n\t\tv.union([v.literal(\"true\"), v.literal(\"false\"), v.boolean()]),\n\t),\n\tSupplierRefMasterRecords: v.optional(v.any()),\n\tAccountPolicies: v.optional(AccountPoliciesApiValidationSchema),\n\tFinancialDetail: v.optional(FinancialDetailApiValidationSchema),\n\tDynamicFields: v.optional(DynamicFieldsApiValidationSchema),\n});\n","import * as v from \"valibot\";\nimport {\n\tcreateApiSchema,\n\tcreateResponseSchema,\n} from \"../utils/schema-transform.js\";\nimport { RqHeaderSchema, RsStatusSchema } from \"./common.js\";\nimport { MasterRecordDetailApiValidationSchema } from \"./master-record.js\";\n\nconst LastModificationDateInputSchema = v.object({\n\tminDate: v.string(),\n\tmaxDate: v.string(),\n});\n\nconst languageCodeField = v.optional(\n\tv.pipe(v.string(), v.minLength(2), v.maxLength(2)),\n);\n\n/**\n * Search by CODE - requires recordCode\n */\nconst CodeSearchSchema = v.object({\n\tsearchType: v.literal(\"CODE\"),\n\trecordCode: v.pipe(v.string(), v.minLength(5), v.maxLength(6)),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by NAME - requires name, optionally city\n */\nconst NameSearchSchema = v.object({\n\tsearchType: v.literal(\"NAME\"),\n\tname: v.string(),\n\tcity: v.optional(v.string()),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by VATCODE - requires vatCode, optionally phoneNumber\n */\nconst VatCodeSearchSchema = v.object({\n\tsearchType: v.literal(\"VATCODE\"),\n\tvatCode: v.string(),\n\tphoneNumber: v.optional(v.string()),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by ZONE - requires zipCode and countyCode, optionally city\n */\nconst ZoneSearchSchema = v.object({\n\tsearchType: v.literal(\"ZONE\"),\n\tzipCode: v.string(),\n\tcountyCode: v.string(),\n\tcity: v.optional(v.string()),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by CATEGORY - requires categoryCode\n */\nconst CategorySearchSchema = v.object({\n\tsearchType: v.literal(\"CATEGORY\"),\n\tcategoryCode: v.string(),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by EMAIL - requires email\n */\nconst EmailSearchSchema = v.object({\n\tsearchType: v.literal(\"EMAIL\"),\n\temail: v.string(),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by LASTMODDATE - requires lastModificationDate\n */\nconst LastModDateSearchSchema = v.object({\n\tsearchType: v.literal(\"LASTMODDATE\"),\n\tlastModificationDate: LastModificationDateInputSchema,\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by SEARCH FIELD - requires searchFieldValue\n */\nconst SearchFieldSearchSchema = v.object({\n\tsearchType: v.literal(\"SEARCH_FIELD\"),\n\tsearchFieldValue: v.string(),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by EXTERNAL_REF_CODE - requires searchFieldValue\n */\nconst ExternalRefCodeSearchSchema = v.object({\n\tsearchType: v.literal(\"EXTERNAL_REF_CODE\"),\n\tsearchFieldValue: v.string(),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search master record input schema (camelCase)\n * Conditional fields based on searchType\n */\nexport const SearchMasterRecordSchema = v.union([\n\tCodeSearchSchema,\n\tNameSearchSchema,\n\tVatCodeSearchSchema,\n\tZoneSearchSchema,\n\tCategorySearchSchema,\n\tEmailSearchSchema,\n\tLastModDateSearchSchema,\n\tSearchFieldSearchSchema,\n\tExternalRefCodeSearchSchema,\n]);\n\nconst transformRecordCode = (input: Record<string, unknown>) => {\n\tif (!(\"@RecordCode\" in input)) return input;\n\tconst recordCode = input[\"@RecordCode\"];\n\tif (!recordCode) return input;\n\tconst { \"@RecordCode\": _discard, ...rest } = input;\n\treturn {\n\t\t...rest,\n\t\tRecordCode: recordCode,\n\t};\n};\n\n/**\n * Search master record schema for API requests (transforms to PascalCase)\n */\nexport const SearchMasterRecordApiSchema = v.pipe(\n\tcreateApiSchema(SearchMasterRecordSchema),\n\tv.transform((input) => transformRecordCode(input)),\n);\n\n/**\n * Complete search request schema with header\n * Flattens SearchMasterRecord fields to root level\n */\nexport const SearchMasterRecordRequestSchema = v.pipe(\n\tv.object({\n\t\tRqHeader: RqHeaderSchema,\n\t\tSearchMasterRecord: SearchMasterRecordApiSchema,\n\t}),\n\tv.transform((input) => {\n\t\tconst { SearchMasterRecord: searchFields, RqHeader, ...rest } = input;\n\t\treturn {\n\t\t\tRqHeader,\n\t\t\t...searchFields,\n\t\t\t...rest,\n\t\t};\n\t}),\n);\n\nconst MasterRecordListApiSchema = v.object({\n\tMasterRecordDetail: v.optional(\n\t\tv.pipe(\n\t\t\tv.union([\n\t\t\t\tv.array(MasterRecordDetailApiValidationSchema),\n\t\t\t\tMasterRecordDetailApiValidationSchema,\n\t\t\t]),\n\t\t\tv.transform((input) => {\n\t\t\t\tif (!input) return undefined;\n\t\t\t\treturn Array.isArray(input) ? input : [input];\n\t\t\t}),\n\t\t),\n\t),\n});\n\n/**\n * Search master record response schema (transforms to camelCase)\n */\nexport const SearchMasterRecordResponseSchema = createResponseSchema(\n\tv.object({\n\t\tRsStatus: RsStatusSchema,\n\t\tMasterRecordList: v.optional(MasterRecordListApiSchema),\n\t}),\n);\n","import * as v from \"valibot\";\nimport { createResponseSchema } from \"../utils/schema-transform.js\";\nimport { RqHeaderSchema, RsStatusSchema } from \"./common.js\";\nimport { MasterRecordDetailApiValidationSchema } from \"./master-record.js\";\n\n/**\n * Complete upsert request schema with header and required InsertCriteria\n */\nexport const ManageMasterRecordRequestSchema = v.object({\n\tRqHeader: RqHeaderSchema,\n\tMasterRecordDetail: MasterRecordDetailApiValidationSchema,\n});\n/**\n * Upsert master record response schema (transforms to camelCase)\n */\nexport const ManageMasterRecordResponseSchema = createResponseSchema(\n\tv.object({\n\t\tRsStatus: RsStatusSchema,\n\t\tMasterRecordDetail: v.optional(MasterRecordDetailApiValidationSchema),\n\t}),\n);\n","/**\n * Result type for functional error handling\n */\nexport type Result<T, E = Error> =\n\t| { success: true; data: T }\n\t| { success: false; error: E };\n\n/**\n * Creates a successful result\n */\nexport function ok<T>(data: T): Result<T, never> {\n\treturn { success: true, data };\n}\n\n/**\n * Creates an error result\n */\nexport function err<E>(error: E): Result<never, E> {\n\treturn { success: false, error };\n}\n","export interface TimeoutController {\n\tsignal: AbortSignal;\n\tclear?: () => void;\n}\n\n/**\n * Create an AbortSignal that will automatically abort after `timeoutMs`.\n * If `timeoutMs` is not provided or <= 0, no automatic abort is scheduled.\n */\nexport function createTimeoutSignal(timeoutMs?: number): TimeoutController {\n\tconst controller = new AbortController();\n\n\tif (!timeoutMs || timeoutMs <= 0) {\n\t\treturn { signal: controller.signal };\n\t}\n\n\tconst timeoutId = setTimeout(() => controller.abort(), timeoutMs);\n\n\treturn {\n\t\tsignal: controller.signal,\n\t\tclear: () => clearTimeout(timeoutId),\n\t};\n}\n","import { AvesError } from \"../error.js\";\n\nfunction buildUrl(baseURL: string, endpoint: string): URL {\n\ttry {\n\t\tconst base = new URL(baseURL);\n\t\tconst basePath = base.pathname.endsWith(\"/\")\n\t\t\t? base.pathname.slice(0, -1)\n\t\t\t: base.pathname;\n\t\tconst combinedPath = basePath + endpoint;\n\n\t\treturn new URL(combinedPath, base);\n\t} catch (error) {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Invalid baseURL: ${error instanceof Error ? error.message : \"Invalid URL format\"}`,\n\t\t);\n\t}\n}\n\n/**\n * Validates and combines baseURL with endpoint\n * @param baseURL - Base URL (must be http:// or https://)\n * @param endpoint - Endpoint path (must start with /)\n * @returns Combined URL string\n * @throws AvesError if URL is invalid or protocol is not http/https\n */\nexport function parseUrl(baseURL: string, endpoint: string): string {\n\tif (!endpoint.startsWith(\"/\")) {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Invalid endpoint: endpoint must start with '/' but got '${endpoint}'`,\n\t\t);\n\t}\n\n\tconst normalizedBaseURL = baseURL.replace(/\\/$/, \"\");\n\n\tconst url = buildUrl(normalizedBaseURL, endpoint);\n\n\tif (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Invalid protocol: baseURL must use http:// or https:// but got '${url.protocol}'`,\n\t\t);\n\t}\n\n\treturn url.toString();\n}\n","import { XMLBuilder, XMLParser } from \"fast-xml-parser\";\nimport { AvesError } from \"./error.js\";\n\nconst parserOptions = {\n\tignoreAttributes: false,\n\tattributeNamePrefix: \"@\",\n\tparseAttributeValue: false,\n\ttrimValues: true,\n\tignoreNameSpace: true,\n\tremoveNSPrefix: true,\n\tparseTagValue: false,\n};\n\nconst builderOptions = {\n\tignoreAttributes: false,\n\tattributeNamePrefix: \"@\",\n\tsuppressEmptyNode: true,\n};\n\nconst parser = new XMLParser(parserOptions);\nconst builder = new XMLBuilder(builderOptions);\n\n/**\n * Converts JSON to XML string\n */\nexport function jsonToXml(json: Record<string, unknown>): string {\n\ttry {\n\t\treturn builder.build(json);\n\t} catch (error) {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Failed to convert JSON to XML: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n\t\t);\n\t}\n}\n\n/**\n * Converts XML string to JSON object\n * Attributes are parsed with @ prefix\n */\nexport function xmlToJson(xml: string): Record<string, unknown> {\n\ttry {\n\t\treturn parser.parse(xml);\n\t} catch (error) {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Failed to convert XML to JSON: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n\t\t);\n\t}\n}\n","export const XML_ROOT_ELEMENTS = {\n\tSEARCH_REQUEST: \"SearchMasterRecordRQ\",\n\tSEARCH_RESPONSE: \"SearchMasterRecordRS\",\n\tUPSERT_REQUEST: \"ManageMasterRecordRQ\",\n\tUPSERT_RESPONSE: \"ManageMasterRecordRS\",\n\tBOOKING_REQUEST: \"BookFileRQ\",\n\tBOOKING_RESPONSE: \"BookingFileRS\",\n} as const;\n\nexport type XMLRootElementValues =\n\t(typeof XML_ROOT_ELEMENTS)[keyof typeof XML_ROOT_ELEMENTS];\n\nexport function createRootElement<T>(name: XMLRootElementValues, object: T) {\n\treturn { [name]: object };\n}\n","import { request as r } from 'undici';\nimport {\n type BaseIssue,\n type BaseSchema,\n parse,\n safeParse,\n ValiError,\n} from 'valibot';\nimport {\n AvesError,\n apiError,\n buildDetails,\n isAbortError,\n unknownError,\n validationError,\n} from './error.js';\nimport {\n BookingFileApiSchema,\n BookingFileResponseSchema,\n} from './schemas/booking-file.js';\nimport { MasterRecordDetailApiSchema } from './schemas/master-record.js';\nimport {\n SearchMasterRecordRequestSchema,\n SearchMasterRecordResponseSchema,\n} from './schemas/search.js';\nimport {\n ManageMasterRecordRequestSchema,\n ManageMasterRecordResponseSchema,\n} from './schemas/upsert.js';\nimport type {\n AvesClientOptions,\n BookingFileRQ,\n BookingFileRS,\n ManageMasterRecordRS,\n MasterRecordDetail,\n RsStatus,\n SearchMasterRecord,\n SearchMasterRecordRS,\n} from './types.js';\nimport type { Result } from './utils/result.js';\nimport { err, ok } from './utils/result.js';\nimport { createTimeoutSignal } from './utils/timeout.js';\nimport { parseUrl } from './utils/url.js';\nimport { jsonToXml, xmlToJson } from './xml-client.js';\nimport { createRootElement, XML_ROOT_ELEMENTS } from './xml-root.js';\n\n/**\n * AVES XML REST API client\n */\nexport class AvesClient {\n /**\n * @param options - Client configuration options\n * @param options.baseURL - Base URL of the AVES API\n * @param options.hostID - 6-digit identification code\n * @param options.xtoken - Authentication token\n * @param options.languageCode - Optional 2-digit language code\n * @param options.timeoutMs - Optional request timeout in milliseconds\n */\n constructor(private readonly options: AvesClientOptions) {}\n\n private createRqHeader() {\n return {\n '@HostID': this.options.hostID,\n '@Xtoken': this.options.xtoken,\n '@Interface': 'WEB' as const,\n '@UserName': 'WEB' as const,\n ...(this.options.languageCode && {\n '@LanguageCode': this.options.languageCode,\n }),\n };\n }\n\n private createUrl(endpoint: string) {\n return parseUrl(this.options.baseURL, endpoint);\n }\n\n private get endpoints() {\n return {\n search: '/interop/masterRecords/v2/rest/Search',\n upsert: '/interop/masterRecords/v2/rest/InsertOrUpdate',\n createBooking: '/interop/booking/v2/rest/CreateBookingFile',\n } as const;\n }\n\n private handleApiStatus<T extends { rsStatus: RsStatus }>(\n output: T,\n ): Result<T, AvesError> {\n const rsStatus = output.rsStatus;\n const status = rsStatus?.status;\n\n if (status !== 'OK') {\n return err(\n apiError(\n rsStatus.errorDescription as string,\n status,\n rsStatus.errorCode,\n ),\n );\n }\n\n return ok(output);\n }\n\n private toAvesError(error: unknown, defaultMessage: string): AvesError {\n if (error instanceof AvesError) {\n return error;\n }\n if (error instanceof ValiError) {\n const details = buildDetails(error.issues);\n return validationError(`Validation error: ${details}`);\n }\n if (error instanceof Error) {\n return unknownError(error.message);\n }\n return unknownError(defaultMessage);\n }\n\n private async request<T extends { rsStatus: RsStatus }>(\n endpoint: string,\n requestBody: Record<string, unknown>,\n responseRootKey: string,\n responseSchema: BaseSchema<unknown, T, BaseIssue<unknown>>,\n ): Promise<Result<T, AvesError>> {\n const { signal, clear } = createTimeoutSignal(\n this.options.timeoutMs ?? 30_000,\n );\n\n try {\n const url = this.createUrl(endpoint);\n const xmlBody = jsonToXml(requestBody);\n\n const response = await r(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/xml',\n },\n body: xmlBody,\n signal,\n });\n\n const responseText = await response.body.text();\n\n if (response.statusCode !== 200) {\n return err(apiError(responseText, 'ERROR', response.statusCode));\n }\n\n const jsonResponse = xmlToJson(responseText);\n const rootElement = jsonResponse[responseRootKey];\n\n if (!rootElement) {\n return err(\n validationError(\n `Invalid response structure: missing root element '${responseRootKey}'`,\n ),\n );\n }\n\n const parseResult = safeParse(responseSchema, rootElement);\n if (!parseResult.success) {\n const details = buildDetails(parseResult.issues);\n return err(validationError(`Invalid response format: ${details}`));\n }\n return this.handleApiStatus(parseResult.output);\n } catch (error) {\n if (isAbortError(error)) {\n return err(apiError('Request timed out', 'TIMEOUT'));\n }\n return err(this.toAvesError(error, 'Unknown error occurred'));\n } finally {\n clear?.();\n }\n }\n\n /**\n * Search for master records\n * @param params - Search master record request body in camelCase ({@link SearchMasterRecord})\n * @returns Result containing list of matching master records in camelCase or error\n */\n async search(\n params: SearchMasterRecord,\n ): Promise<Result<SearchMasterRecordRS, AvesError>> {\n try {\n const requestData = parse(SearchMasterRecordRequestSchema, {\n RqHeader: this.createRqHeader(),\n SearchMasterRecord: params,\n });\n\n const requestBody = createRootElement(\n XML_ROOT_ELEMENTS.SEARCH_REQUEST,\n requestData,\n );\n\n return this.request<SearchMasterRecordRS>(\n this.endpoints.search,\n requestBody,\n XML_ROOT_ELEMENTS.SEARCH_RESPONSE,\n SearchMasterRecordResponseSchema,\n );\n } catch (error) {\n return err(\n this.toAvesError(error, 'Validation error occurred during search'),\n );\n }\n }\n\n /**\n * Insert or update a master record\n * @param record - Master record data in camelCase ({@link MasterRecordDetail})\n * @returns Result containing response with customer record code in camelCase or error\n */\n async upsertRecord(\n record: MasterRecordDetail,\n ): Promise<Result<ManageMasterRecordRS, AvesError>> {\n try {\n const apiRecord = parse(MasterRecordDetailApiSchema, record);\n\n const requestData = parse(ManageMasterRecordRequestSchema, {\n RqHeader: this.createRqHeader(),\n MasterRecordDetail: apiRecord,\n });\n\n const requestBody = createRootElement(\n XML_ROOT_ELEMENTS.UPSERT_REQUEST,\n requestData,\n );\n\n return this.request<ManageMasterRecordRS>(\n this.endpoints.upsert,\n requestBody,\n XML_ROOT_ELEMENTS.UPSERT_RESPONSE,\n ManageMasterRecordResponseSchema,\n );\n } catch (error) {\n return err(\n this.toAvesError(error, 'Validation error occurred during upsert'),\n );\n }\n }\n\n /**\n * Create a booking file (CreateBookingFile).\n * @param params - Booking file request body in camelCase ({@link BookingFileRQ})\n * @returns Result containing booking file detail in camelCase or error\n */\n async createBooking(\n params: BookingFileRQ,\n ): Promise<Result<BookingFileRS, AvesError>> {\n try {\n const apiBody = parse(BookingFileApiSchema, params);\n const requestBody = createRootElement(XML_ROOT_ELEMENTS.BOOKING_REQUEST, {\n RqHeader: this.createRqHeader(),\n ...apiBody,\n });\n\n return this.request<BookingFileRS>(\n this.endpoints.createBooking,\n requestBody,\n XML_ROOT_ELEMENTS.BOOKING_RESPONSE,\n BookingFileResponseSchema,\n );\n } catch (error) {\n return err(\n this.toAvesError(\n error,\n 'Validation error occurred during createBooking',\n ),\n );\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["r"],"sources":["../src/error.ts","../src/utils/case-transform.ts","../src/utils/schema-transform.ts","../src/schemas/common.ts","../src/schemas/booking-file.ts","../src/schemas/master-record.ts","../src/schemas/search.ts","../src/schemas/upsert.ts","../src/utils/result.ts","../src/utils/timeout.ts","../src/utils/url.ts","../src/xml-client.ts","../src/xml-root.ts","../src/client.ts"],"sourcesContent":["import type { BaseIssue } from \"valibot\";\n\nexport const ERROR_KINDS = {\n\tVALIDATION: \"validation\",\n\tAPI: \"api\",\n\tUNKNOWN: \"unknown\",\n} as const;\n\nexport type ErrorKind = (typeof ERROR_KINDS)[keyof typeof ERROR_KINDS];\n\n/**\n * Error thrown by AVES API operations\n */\nexport class AvesError extends Error {\n\tconstructor(\n\t\tpublic readonly kind: ErrorKind,\n\t\tpublic readonly message: string,\n\t\tpublic readonly status?: string,\n\t\tpublic readonly code?: number | string,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"AvesError\";\n\t\tthis.status = status?.toLowerCase();\n\t\tthis.code = this.parseCode(code);\n\t}\n\n\tprivate parseCode(code?: number | string): number {\n\t\tif (typeof code === \"string\") {\n\t\t\treturn Number.parseInt(code, 10);\n\t\t}\n\t\treturn code ?? 0;\n\t}\n}\n\nexport function validationError(message: string): AvesError {\n\treturn new AvesError(ERROR_KINDS.VALIDATION, message);\n}\n\nexport function apiError(\n\tmessage: string,\n\tstatus?: string,\n\tcode?: number | string,\n): AvesError {\n\treturn new AvesError(ERROR_KINDS.API, message, status, code);\n}\n\nexport function unknownError(message: string): AvesError {\n\treturn new AvesError(ERROR_KINDS.UNKNOWN, message);\n}\n\nexport function buildDetails(issues: readonly BaseIssue<unknown>[]): string {\n\treturn issues.map(formatIssue).join(\"; \");\n}\n\nfunction formatIssue(issue: BaseIssue<unknown>): string {\n\tconst path = formatPath(issue.path);\n\tconst message = issue.message ?? \"Invalid value\";\n\n\treturn path ? `${path}: ${message}` : message;\n}\n\nfunction formatPath(path?: readonly unknown[]): string | undefined {\n\tif (!path || path.length === 0) return;\n\n\tconst segments = path\n\t\t.map(extractSegment)\n\t\t.filter((segment): segment is string => segment !== undefined);\n\n\treturn segments.length > 0 ? segments.join(\".\") : undefined;\n}\n\nfunction extractSegment(segment: unknown): string | undefined {\n\tif (typeof segment === \"string\" || typeof segment === \"number\") {\n\t\treturn String(segment);\n\t}\n\n\tif (typeof segment === \"object\" && segment !== null && \"key\" in segment) {\n\t\treturn String(segment.key);\n\t}\n\n\treturn;\n}\n\nexport function isAbortError(error: unknown): boolean {\n\treturn error instanceof Error && error.name === \"AbortError\";\n}\n","type CamelFromDelimiter<S extends string> = S extends `${infer H}_${infer T}`\n ? `${H}${Capitalize<CamelFromDelimiter<T>>}`\n : S extends `${infer H}-${infer T}`\n ? `${H}${Capitalize<CamelFromDelimiter<T>>}`\n : S;\n\ntype ToCamelCase<S extends string> =\n CamelFromDelimiter<S> extends `${infer F}${infer R}`\n ? `${Lowercase<F>}${R}`\n : CamelFromDelimiter<S>;\n\ntype PascalFromDelimiter<S extends string> = S extends `${infer H}_${infer T}`\n ? `${Capitalize<H>}${Capitalize<PascalFromDelimiter<T>>}`\n : S extends `${infer H}-${infer T}`\n ? `${Capitalize<H>}${Capitalize<PascalFromDelimiter<T>>}`\n : S;\n\ntype ToPascalCase<S extends string> =\n PascalFromDelimiter<S> extends `${infer F}${infer R}`\n ? `${Capitalize<F>}${R}`\n : Capitalize<PascalFromDelimiter<S>>;\n\n/** Keys that are preserved as-is (no recursive transform) at runtime */\ntype Primitive = string | number | boolean | symbol | bigint | null | undefined;\ntype SpecialObject =\n | Date\n | RegExp\n | Map<unknown, unknown>\n | Set<unknown>\n | Error;\n\n/** Maps key K: strips leading @ and converts to camelCase for mapped output key */\ntype CamelizeKey<K extends string> = K extends `@${infer Rest}`\n ? ToCamelCase<Rest>\n : ToCamelCase<K>;\n\n/** Maps key K: strips leading @ and converts to PascalCase for mapped output key */\ntype PascalizeKey<K extends string> = K extends `@${infer Rest}`\n ? ToPascalCase<Rest>\n : ToPascalCase<K>;\n\n/**\n * Recursively maps PascalCase/@-prefixed object keys to camelCase.\n * Reflects pascalToCamelKeys runtime: primitives and special objects preserved; arrays and plain objects recursively transformed.\n */\nexport type Camelize<T> = T extends Primitive\n ? T\n : T extends SpecialObject\n ? T\n : T extends readonly (infer U)[]\n ? Camelize<U>[]\n : T extends object\n ? { [K in keyof T as CamelizeKey<K & string>]: Camelize<T[K]> }\n : T;\n\n/**\n * Recursively maps camelCase keys to PascalCase (with @ for attributes at runtime).\n * Reflects camelToPascalKeys output shape for type-level use.\n */\nexport type Pascalize<T> = T extends Primitive\n ? T\n : T extends SpecialObject\n ? T\n : T extends readonly (infer U)[]\n ? Pascalize<U>[]\n : T extends object\n ? { [K in keyof T as PascalizeKey<K & string>]: Pascalize<T[K]> }\n : T;\n\nfunction camelToPascal(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nfunction pascalToCamel(str: string): string {\n return str.charAt(0).toLowerCase() + str.slice(1);\n}\n\n/**\n * Checks if an object is a special built-in type that should not be transformed\n */\nfunction isSpecialObject(obj: unknown): boolean {\n return (\n obj instanceof Date ||\n obj instanceof RegExp ||\n obj instanceof Map ||\n obj instanceof Set ||\n obj instanceof Error\n );\n}\n\n/**\n * Registry of attribute fields per schema context\n * Each schema defines its own attributes, keeping them co-located\n */\nconst attributeRegistry: Record<string, readonly string[]> = {\n // Request/Response headers\n header: ['hostID', 'xtoken', 'interface', 'userName', 'status'],\n\n // Master record root attributes\n masterRecord: ['recordCode', 'insertCriteria'],\n\n // Financial detail - all fields are attributes\n financialDetail: [\n 'currencyCode',\n 'creditLimit',\n 'c_PaymentType',\n 'c_SpecPaymentTypeCode',\n 's_PaymentType',\n 's_SpecPaymentTypeCode',\n 'enableElectronicInvoicing',\n 'electronicInvoicingType',\n ],\n\n // ID document detail - all fields are attributes\n idDocumentDetail: [\n 'idType',\n 'idCode',\n 'idIssueLocation',\n 'idIssueCounty',\n 'idIssueDate',\n 'idExpireDate',\n ],\n\n // Account policies - all fields are attributes\n accountPolicies: [\n 'acceptProfilingPolicies',\n 'acceptPrivacyPolicies',\n 'acceptNewsletterPolicies',\n ],\n\n // Dynamic fields - key/value are attributes\n dynamicFields: ['key', 'value'],\n\n // Search parameters\n search: ['minDate', 'maxDate'],\n\n // Booking file (CreateBookingFile / BookFileRQ)\n bookingFileStatus: ['value', 'expiredDate'],\n statisticCodes: ['sCode1', 'sCode2', 'sCode3', 'sCode4', 'sCode5', 'sCode6'],\n destination: ['code', 'iataCode', 'nationCode'],\n customerDetail: ['recordCode'],\n bookingFileDocument: ['printDoc', 'sendDocViaEmail'],\n financialDeadlineDetail: ['reschedulingCode', 'expireDate', 'totalAmount'],\n deadlineDetail: ['deadlineCode', 'description', 'expireDate'],\n paymentDetail: [\n 'paymentDate',\n 'paumentNote',\n 'amount',\n 'paymentUser',\n 'paymentType',\n ],\n selectedPackageDetail: ['pCode', 'getServicesFromPackage'],\n selectedServiceDetail: [\n 'sCode',\n 'ssCode',\n 'supplierMasterCode',\n 'supplierName',\n 'supplierMasterSearchField',\n 'supplierFiscalCode',\n ],\n extraQuoteServiceDetail: [\n 'sCode',\n 'ssCode',\n 'supplierMasterCode',\n 'supplierName',\n 'supplierMasterSearchField',\n 'supplierFiscalCode',\n ],\n noteDetail: ['nType', 'title'],\n passengerDetail: ['rph', 'roomRph', 'billingHolder'],\n bookingFinancialInfo: [\n 'customer_PaymentType',\n 'customer_SpecPaymentTypeCode',\n ],\n reservationFormCustomizablePrintParameters: ['makeDocumentTo'],\n};\n\n/**\n * Flattened Set of all attribute fields for quick lookup\n * Computed once from the registry\n */\nexport const ATTRIBUTE_FIELDS = new Set(\n Object.values(attributeRegistry).flat(),\n);\n\n/**\n * Add attribute fields for a new schema context\n * Allows extending the registry from schema files\n */\nexport function registerAttributeFields(\n context: string,\n fields: readonly string[],\n) {\n attributeRegistry[context] = fields;\n fields.forEach((field) => {\n if (!ATTRIBUTE_FIELDS.has(field)) {\n ATTRIBUTE_FIELDS.add(field);\n }\n });\n}\n\nexport type CamelToPascalOptions = {\n /** At root level only: do not add @ prefix for these keys (used when same key is element at root but attribute in nested objects) */\n excludeFromAttributePrefix?: string[];\n excludeAttributeFromCamelToPascal?: string[];\n};\n\nconst formatAttributeField = (\n field: string,\n originalField: string,\n isToExclude = false,\n) => {\n // Some attributes in AVES XML are explicitly camel-cased in the spec\n // (e.g. @sCode, @ssCode), so we always preserve their original field name.\n const mustPreserveCamelCase =\n originalField === 'sCode' || originalField === 'ssCode';\n\n if (isToExclude || mustPreserveCamelCase) {\n return `@${originalField}`;\n }\n\n return `@${field}`;\n};\n\n// Keys that need a custom PascalCase/XML tag name (by source camelCase key)\nconst pascalKeyOverrides = new Map<string, string>([\n ['toServiceType', 'TOServiceType'],\n ['rph', 'RPH'],\n]);\n\n/**\n * Transforms object keys from camelCase to PascalCase\n * Adds @ prefix to fields in ATTRIBUTE_FIELDS for XML attributes\n * @param options.excludeFromAttributePrefix - keys that must not get @ at this level (not passed to recursion)\n */\nexport function camelToPascalKeys<T>(\n input: T,\n options?: CamelToPascalOptions,\n): Pascalize<T> {\n if (!input || typeof input !== 'object' || isSpecialObject(input)) {\n return input as Pascalize<T>;\n }\n\n if (Array.isArray(input)) {\n return input.map((item) => camelToPascalKeys(item)) as Pascalize<T>;\n }\n\n const exclude = options?.excludeFromAttributePrefix;\n const excludeAttribute = options?.excludeAttributeFromCamelToPascal;\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(input)) {\n const pascalKey = pascalKeyOverrides.has(key)\n ? (pascalKeyOverrides.get(key) as string)\n : camelToPascal(key);\n const treatAsAttr = ATTRIBUTE_FIELDS.has(key) && !exclude?.includes(key);\n const formattedAttribute = formatAttributeField(\n pascalKey,\n key,\n excludeAttribute?.includes(key),\n );\n const finalKey = treatAsAttr ? formattedAttribute : pascalKey;\n\n result[finalKey] = transformValue(value, (val) =>\n camelToPascalKeys(val, undefined),\n );\n }\n\n return result as Pascalize<T>;\n}\n\n/**\n * Transforms object keys from PascalCase to camelCase\n * Strips @ prefix from XML attributes\n */\nexport function pascalToCamelKeys<T>(input: T): Camelize<T> {\n if (input === null || typeof input !== 'object' || isSpecialObject(input)) {\n return input as Camelize<T>;\n }\n\n if (Array.isArray(input)) {\n return input.map((item) => pascalToCamelKeys(item)) as Camelize<T>;\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(input)) {\n const parsedKey = key.startsWith('@') ? key.slice(1) : key;\n const camelKey = pascalToCamel(parsedKey);\n\n result[camelKey] = transformValue(value, pascalToCamelKeys);\n }\n\n return result as Camelize<T>;\n}\n\nfunction transformValue(\n value: unknown,\n transformObject: (obj: Record<string, unknown>) => unknown,\n): unknown {\n if (!value || typeof value !== 'object' || isSpecialObject(value)) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => transformValue(item, transformObject));\n }\n\n return transformObject(value as Record<string, unknown>);\n}\n","import type { BaseSchema, ObjectEntries } from \"valibot\";\nimport * as v from \"valibot\";\nimport {\n\tATTRIBUTE_FIELDS,\n\tcamelToPascalKeys,\n\tpascalToCamelKeys,\n} from \"./case-transform.js\";\n\n/**\n * Creates a schema that transforms camelCase input to PascalCase for API requests\n */\nexport function createApiSchema<\n\tTInput extends BaseSchema<unknown, unknown, v.BaseIssue<unknown>>,\n>(inputSchema: TInput) {\n\treturn v.pipe(\n\t\tinputSchema,\n\t\tv.transform((input) => camelToPascalKeys(input)),\n\t);\n}\n\n/**\n * Creates a schema that transforms PascalCase API responses to camelCase\n */\nexport function createResponseSchema<\n\tTApi extends BaseSchema<unknown, unknown, v.BaseIssue<unknown>>,\n>(apiSchema: TApi) {\n\treturn v.pipe(\n\t\tapiSchema,\n\t\tv.transform((input) => pascalToCamelKeys(input)),\n\t);\n}\n\n/**\n * Creates a validation schema for already-transformed PascalCase data with @ attributes\n * Used for nested objects like AccountPolicies, FinancialDetail, DynamicFields\n * Takes the same input schema used in createApiSchema and generates the validation schema\n * by directly using the ATTRIBUTE_FIELDS logic to determine which fields become attributes\n */\nexport function createApiValidationSchema<\n\tTEntries extends ObjectEntries,\n\tTMessage extends v.ErrorMessage<v.ObjectIssue> | undefined,\n>(inputSchema: v.ObjectSchema<TEntries, TMessage>) {\n\tconst validationEntries: Record<string, unknown> = {};\n\n\t// Build validation schema based on ATTRIBUTE_FIELDS\n\tfor (const key in inputSchema.entries) {\n\t\tconst isAttribute = ATTRIBUTE_FIELDS.has(key);\n\t\tconst pascalKey = key.charAt(0).toUpperCase() + key.slice(1);\n\t\tconst finalKey = isAttribute ? `@${pascalKey}` : pascalKey;\n\n\t\tvalidationEntries[finalKey] = inputSchema.entries[key];\n\t}\n\n\treturn v.object(validationEntries as TEntries);\n}\n","import * as v from \"valibot\";\n\n/**\n * Request header schema with authentication credentials\n */\nexport const RqHeaderSchema = v.object({\n\t\"@HostID\": v.pipe(v.string(), v.minLength(6), v.maxLength(6)),\n\t\"@Xtoken\": v.string(),\n\t\"@Interface\": v.literal(\"WEB\"),\n\t\"@UserName\": v.literal(\"WEB\"),\n\t\"@LanguageCode\": v.optional(\n\t\tv.pipe(v.string(), v.minLength(2), v.maxLength(2)),\n\t),\n});\n\nconst warningsSchema = v.optional(\n\tv.pipe(\n\t\tv.string(),\n\t\tv.transform((input) => input.split(\",\")),\n\t),\n);\n\n/**\n * Response status schema indicating success, error, or warning\n */\nexport const RsStatusSchema = v.pipe(\n\tv.object({\n\t\t\"@Status\": v.union([\n\t\t\tv.literal(\"OK\"),\n\t\t\tv.literal(\"ERROR\"),\n\t\t\tv.literal(\"WARNING\"),\n\t\t\tv.literal(\"TIMEOUT\"),\n\t\t]),\n\t\tErrorCode: v.optional(\n\t\t\tv.pipe(\n\t\t\t\tv.union([v.string(), v.number()]),\n\t\t\t\tv.transform((val) => Number(val)),\n\t\t\t),\n\t\t),\n\t\tErrorDescription: v.optional(v.string()),\n\t\tWarnings: warningsSchema,\n\t}),\n\tv.transform((input) => {\n\t\treturn {\n\t\t\tstatus: input[\"@Status\"],\n\t\t\terrorCode: input.ErrorCode,\n\t\t\terrorDescription: input.ErrorDescription,\n\t\t\twarnings: input.Warnings,\n\t\t};\n\t}),\n);\n","import * as v from 'valibot';\nimport { camelToPascalKeys } from '../utils/case-transform.js';\nimport { createResponseSchema } from '../utils/schema-transform.js';\nimport { RsStatusSchema } from './common.js';\n\n// ---------------------------------------------------------------------------\n// BookingFileStatus\n// ---------------------------------------------------------------------------\n\nconst bookingFileStatusValueSchema = v.union([\n v.literal('QUOTATION'),\n v.literal('WORK_IN_PROGRESS'),\n v.literal('CONFIRMED'),\n v.literal('OPTIONED'),\n v.literal('CANCELED'),\n]);\n\nconst BookingFileStatusInputSchema = v.object({\n value: bookingFileStatusValueSchema,\n expiredDate: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// StatisticCodes (AvesStatisticCodes)\n// ---------------------------------------------------------------------------\n\nconst StatisticCodesInputSchema = v.object({\n sCode1: v.optional(v.pipe(v.string(), v.maxLength(4))),\n sCode2: v.optional(v.pipe(v.string(), v.maxLength(4))),\n sCode3: v.optional(v.pipe(v.string(), v.maxLength(4))),\n sCode4: v.optional(v.pipe(v.string(), v.maxLength(4))),\n sCode5: v.optional(v.pipe(v.string(), v.maxLength(4))),\n sCode6: v.optional(v.pipe(v.string(), v.maxLength(4))),\n});\n\n// ---------------------------------------------------------------------------\n// Destination\n// ---------------------------------------------------------------------------\n\nconst DestinationInputSchema = v.object({\n code: v.optional(v.string()),\n iataCode: v.optional(v.string()),\n nationCode: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// CustomerDetail (record code only or full master record data)\n// ---------------------------------------------------------------------------\n\nconst CustomerDetailInputSchema = v.object({\n recordCode: v.optional(v.string()),\n // When inserting new record, master record fields can be provided (see Common Structures)\n});\n\n// ---------------------------------------------------------------------------\n// BookingFileDocument\n// ---------------------------------------------------------------------------\n\nconst documentTypeSchema = v.union([\n v.literal('VISA_REQUEST'),\n v.literal('TRAVEL_INFORMATION'),\n v.literal('VOUCHER'),\n v.literal('BOOKING_CONTRACT'),\n v.literal('BOOKING_CONFIRMATION'),\n v.literal('SUPPLIER_SERVICE_LIST'),\n v.literal('INVOICE'),\n v.literal('PROFORMA_INVOICE'),\n v.literal('ADEGUAMENTO'),\n v.literal('RESERVATION_FORM'),\n v.literal('OPEN_XML'),\n v.literal('SALES_INVOICE'),\n v.literal('TICKETING_TMASTER'),\n v.literal('SUMMARY_FORM'),\n]);\n\nconst ReservationFormCustomizablePrintParametersInputSchema = v.object({\n makeDocumentTo: v.optional(\n v.union([v.literal('BOOKING_CUSTOMER'), v.literal('FIRST_PASSENGER')]),\n ),\n});\n\nconst TravelInformationCustomizablePrintParametersInputSchema = v.object({\n fillInCode: v.optional(v.string()),\n});\n\nconst DocumentCustomizablePrintParametersInputSchema = v.union([\n ReservationFormCustomizablePrintParametersInputSchema,\n TravelInformationCustomizablePrintParametersInputSchema,\n]);\n\nconst InfoDocumentToPrintInputSchema = v.object({\n documentType: documentTypeSchema,\n documentCustomizablePrintParameters: v.optional(\n DocumentCustomizablePrintParametersInputSchema,\n ),\n});\n\nconst BookingFileDocumentInputSchema = v.object({\n printDoc: v.optional(\n v.union([v.literal('true'), v.literal('false'), v.boolean()]),\n ),\n sendDocViaEmail: v.optional(\n v.union([v.literal('true'), v.literal('false'), v.boolean()]),\n ),\n infoDocumentsToPrint: v.optional(v.array(InfoDocumentToPrintInputSchema)),\n});\n\n// ---------------------------------------------------------------------------\n// FinancialDeadlineList / DeadlineList / PaymentList\n// ---------------------------------------------------------------------------\n\nconst FinancialDeadlineDetailInputSchema = v.object({\n reschedulingCode: v.optional(v.string()),\n expireDate: v.optional(v.string()),\n totalAmount: v.optional(v.string()),\n});\n\nconst DeadlineDetailInputSchema = v.object({\n deadlineCode: v.optional(v.string()),\n description: v.optional(v.string()),\n expireDate: v.optional(v.string()),\n});\n\nconst paymentTypeDetailSchema = v.union([\n v.literal('C'),\n v.literal('B'),\n v.literal('D'),\n v.literal('T'),\n v.literal('P'),\n v.literal('R'),\n v.literal('A'),\n v.literal('H'),\n v.literal('I'),\n v.literal('J'),\n v.literal('K'),\n v.literal('L'),\n v.literal('M'),\n v.literal('N'),\n v.literal('O'),\n v.literal('Q'),\n v.literal('S'),\n v.literal('U'),\n v.literal('V'),\n]);\n\nconst PaymentDetailInputSchema = v.object({\n paymentDate: v.optional(v.string()),\n paumentNote: v.optional(v.string()),\n amount: v.optional(v.string()),\n paymentUser: v.optional(v.string()),\n paymentType: v.optional(paymentTypeDetailSchema),\n});\n\nconst FinancialDeadlineListInputSchema = v.object({\n deadlineDetail: v.optional(v.array(FinancialDeadlineDetailInputSchema)),\n});\n\nconst DeadlineListInputSchema = v.object({\n deadlineDetail: v.optional(v.array(DeadlineDetailInputSchema)),\n});\n\nconst PaymentListInputSchema = v.object({\n paymentDetail: v.optional(v.array(PaymentDetailInputSchema)),\n});\n\n// ---------------------------------------------------------------------------\n// SelectedPackageList / SelectedServiceList / ExtraQuoteServiceList\n// ---------------------------------------------------------------------------\n\nconst SelectedPackageDetailInputSchema = v.object({\n pCode: v.optional(v.string()),\n startDate: v.optional(v.string()),\n endDate: v.optional(v.string()),\n getServicesFromPackage: v.optional(\n v.union([v.literal('true'), v.literal('false'), v.boolean()]),\n ),\n});\n\nconst AvesServiceInfoInputSchema = v.object({\n packageCode: v.optional(v.string()),\n packageReference: v.optional(v.string()),\n});\n\nconst avesServiceTypeSchema = v.union([\n v.literal('TOP'),\n v.literal('TOP_SS'),\n v.literal('ADV'),\n v.literal('GRP'),\n v.literal('OTHER'),\n]);\n\nconst toServiceTypeSchema = v.union([\n v.literal('ACCOMODATION'),\n v.literal('TRANSPORT'),\n v.literal('CHARTER'),\n v.literal('TRANSFER'),\n v.literal('PULLMAN'),\n v.literal('FERRY'),\n v.literal('CRUISE'),\n v.literal('INSURANCE'),\n v.literal('EXTRAFEE'),\n v.literal('PENALTY'),\n v.literal('PROMO'),\n v.literal('OTHER'),\n v.literal('NOT_SET'),\n v.literal('RESIDENCE'),\n]);\n\nconst paxAssociatedSchema = v.object({ pax: v.string() });\n\nconst SelectedServiceDetailInputSchema = v.object({\n sCode: v.string(),\n ssCode: v.optional(v.string()),\n avesServiceType: avesServiceTypeSchema,\n toServiceType: v.optional(toServiceTypeSchema),\n subServiceDesc: v.optional(v.string()),\n startDate: v.string(),\n endDate: v.string(),\n qty: v.string(),\n pax: v.string(),\n paxAssociated: v.optional(v.array(paxAssociatedSchema)),\n avesSession: v.string(), // incremental counter for each update of the same service\n avesServiceInfo: v.optional(AvesServiceInfoInputSchema),\n supplierMasterCode: v.optional(v.string()),\n voucherMasterCode: v.optional(v.string()),\n hotelServiceInfo: v.optional(v.string()),\n carRentalServiceInfo: v.optional(v.string()),\n flightServiceInfo: v.optional(v.string()),\n shipServiceInfo: v.optional(v.string()),\n ticketServiceInfo: v.optional(v.string()),\n commission: v.optional(v.string()),\n noteList: v.optional(v.string()),\n voucherInfo: v.optional(v.string()),\n firstDescription: v.optional(v.string()),\n secondDescription: v.optional(v.string()),\n});\n\nconst SelectedPackageListInputSchema = v.object({\n selectedPackageDetail: v.optional(v.array(SelectedPackageDetailInputSchema)),\n});\n\nconst SelectedServiceListInputSchema = v.object({\n selectedServiceDetail: SelectedServiceDetailInputSchema,\n});\n\nconst ExtraQuoteServiceListInputSchema = v.object({\n extraQuoteServiceDetail: v.optional(\n v.array(SelectedServiceDetailInputSchema),\n ),\n});\n\n// ---------------------------------------------------------------------------\n// NoteList\n// ---------------------------------------------------------------------------\n\nconst NoteDetailInputSchema = v.object({\n nType: v.optional(v.string()),\n title: v.optional(v.string()),\n text: v.optional(v.string()),\n});\n\nconst NoteListInputSchema = v.object({\n noteDetail: v.optional(v.array(NoteDetailInputSchema)),\n});\n\n// ---------------------------------------------------------------------------\n// PassengerList (PassengerDetail - see Common Structures \"Passenger\" DETAIL)\n// ---------------------------------------------------------------------------\n\nconst passengerCategoryCodeSchema = v.union([\n v.literal('AD'),\n v.literal('CH'),\n v.literal('IN'),\n v.literal('OV'),\n]);\n\nconst PassengerDetailInputSchema = v.object({\n rph: v.string(),\n roomRph: v.optional(v.string()),\n billingHolder: v.optional(\n v.union([v.literal('true'), v.literal('false'), v.boolean()]),\n ),\n masterRecordCode: v.optional(v.string()),\n name: v.string(),\n categoryCode: passengerCategoryCodeSchema,\n sex: v.union([v.literal('M'), v.literal('F')]),\n birthDate: v.optional(v.string()),\n birthPlace: v.optional(v.string()),\n nationCode: v.optional(v.string()),\n citizenshipCode: v.optional(v.string()),\n fiscalCode: v.optional(v.string()),\n phoneNumber: v.optional(v.string()),\n eMail: v.optional(v.string()),\n notes: v.optional(v.array(NoteDetailInputSchema)),\n flagStatus: v.optional(v.string()),\n offerCode: v.optional(v.string()),\n idDocInfo: v.optional(\n v.object({\n idType: v.optional(v.string()),\n idCode: v.optional(v.string()),\n idIssueLocation: v.optional(v.string()),\n idIssueCounty: v.optional(v.string()),\n idIssueDate: v.optional(v.string()),\n idExpireDate: v.optional(v.string()),\n }),\n ),\n});\n\nconst PassengerListInputSchema = v.object({\n passengerDetail: PassengerDetailInputSchema,\n});\n\n// ---------------------------------------------------------------------------\n// BookingFinancialInfo\n// ---------------------------------------------------------------------------\n\nconst customerPaymentTypeSchema = v.union([\n v.literal('CASH'),\n v.literal('BANK'),\n v.literal('RID'),\n v.literal('RIBA'),\n v.literal('SPECIFIC_CODE'),\n v.literal('NOT_SET'),\n]);\n\nconst BookingFinancialInfoInputSchema = v.object({\n customer_PaymentType: v.optional(customerPaymentTypeSchema),\n customer_SpecPaymentTypeCode: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// GroupingPaxPolicy / TypeDownloadFile\n// ---------------------------------------------------------------------------\n\nconst groupingPaxPolicySchema = v.union([\n v.literal('GROUPED_PAX'),\n v.literal('NOT_GROUPED_PAX'),\n v.literal('ONE_PAX_ONLY'),\n]);\n\nconst typeDownloadFileSchema = v.union([\n v.literal('AVES2AVES'),\n v.literal('AVES2AVESVIA'),\n v.literal('AVES2AVESITA'),\n]);\n\n// ---------------------------------------------------------------------------\n// BookingFileRQ (root body - camelCase input)\n// ---------------------------------------------------------------------------\n\n/**\n * Booking file request body schema (camelCase input).\n * Maps to BookFileRQ in AVES XML 1.8.0 CreateBookingFile.\n */\nexport const BookingFileSchema = v.object({\n createDate: v.optional(v.string()),\n bookingFileRefCode: v.optional(v.string()),\n travelAgentCode: v.optional(v.string()),\n clerkName: v.optional(v.string()),\n customerDetail: CustomerDetailInputSchema,\n currencyCode: v.optional(v.string()),\n markupCode: v.optional(v.string()),\n bookingFileStatus: BookingFileStatusInputSchema,\n statisticCodes: v.optional(StatisticCodesInputSchema),\n destination: v.optional(DestinationInputSchema),\n bookingFileDescription: v.optional(v.string()),\n startDate: v.string(),\n endDate: v.string(),\n earlyBookingDate: v.optional(v.string()),\n cupCode: v.optional(v.string()),\n cigCode: v.optional(v.string()),\n customerPromoterCode: v.optional(v.string()),\n billingReferenceCode: v.optional(v.string()),\n paymentReferenceCode: v.optional(v.string()),\n bookingFileDocument: v.optional(BookingFileDocumentInputSchema),\n financialDeadlineList: v.optional(FinancialDeadlineListInputSchema),\n deadlineList: v.optional(DeadlineListInputSchema),\n paymentList: v.optional(PaymentListInputSchema),\n selectedPackageList: v.optional(SelectedPackageListInputSchema),\n selectedServiceList: v.array(SelectedServiceListInputSchema),\n extraQuotaRefCode: v.optional(v.string()),\n extraQuoteServiceList: v.optional(ExtraQuoteServiceListInputSchema),\n getExtraQuoteFromSystem: v.optional(\n v.union([v.literal('true'), v.literal('false'), v.boolean()]),\n ),\n passengerList: v.array(PassengerListInputSchema),\n noteList: v.optional(NoteListInputSchema),\n bookingFinancialInfo: v.optional(BookingFinancialInfoInputSchema),\n bookingFileCode: v.optional(v.string()),\n groupingPaxPolicy: v.optional(groupingPaxPolicySchema),\n groupBookingFile: v.optional(\n v.union([v.literal('true'), v.literal('false'), v.boolean()]),\n ),\n typeDownloadFile: v.optional(typeDownloadFileSchema),\n setBookingFileCodeFromStartDate: v.optional(\n v.union([v.literal('true'), v.literal('false'), v.boolean()]),\n ),\n});\n\n/**\n * Booking file schema for API requests (transforms to PascalCase for BookFileRQ).\n * Root-level startDate/endDate stay as elements; same keys in SelectedPackageDetail become @ attributes.\n */\nexport const BookingFileApiSchema = v.pipe(\n BookingFileSchema,\n v.transform((input) => {\n // Normalize empty paxAssociated arrays so that they become an empty XML element\n // (<PaxAssociated/>) instead of disappearing from the XML.\n const normalizePaxAssociated = (value: unknown): unknown => {\n if (Array.isArray(value) && !value.length) {\n return '';\n }\n return value;\n };\n\n const walk = (node: unknown): unknown => {\n if (node === null || typeof node !== 'object') {\n return node;\n }\n if (Array.isArray(node)) {\n return node.map(walk);\n }\n const result: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(node)) {\n if (key === 'paxAssociated') {\n result[key] = normalizePaxAssociated(val);\n } else {\n result[key] = walk(val);\n }\n }\n return result;\n };\n\n const normalizedInput = walk(input) as typeof input;\n\n return camelToPascalKeys(normalizedInput, {\n excludeFromAttributePrefix: ['startDate', 'endDate'],\n excludeAttributeFromCamelToPascal: ['sCode', 'ssCode'],\n });\n }),\n);\n\n/**\n * BookingFileRS response schema (transforms to camelCase).\n * BookingFileDetail shape follows Common Structures \"BOOKEDFILE\"; nested content is accepted and key-normalized.\n */\nexport const BookingFileResponseSchema = createResponseSchema(\n v.object({\n RsStatus: RsStatusSchema,\n BookingFileDetail: v.optional(v.any()),\n }),\n);\n","import * as v from \"valibot\";\nimport {\n\tcreateApiSchema,\n\tcreateApiValidationSchema,\n\tcreateResponseSchema,\n} from \"../utils/schema-transform.js\";\n\nconst paymentTypeSchema = v.union([\n\tv.literal(\"CASH\"),\n\tv.literal(\"BANK\"),\n\tv.literal(\"RID\"),\n\tv.literal(\"RIBA\"),\n\tv.literal(\"SPECIFIC_CODE\"),\n]);\n\nconst FinancialDetailInputSchema = v.object({\n\tcurrencyCode: v.optional(v.string()),\n\tcreditLimit: v.optional(v.string()),\n\tc_PaymentType: v.optional(paymentTypeSchema),\n\tc_SpecPaymentTypeCode: v.optional(v.string()),\n\ts_PaymentType: v.optional(paymentTypeSchema),\n\ts_SpecPaymentTypeCode: v.optional(v.string()),\n\tenableElectronicInvoicing: v.optional(\n\t\tv.union([v.literal(\"true\"), v.literal(\"false\"), v.boolean()]),\n\t),\n\telectronicInvoicingType: v.optional(v.string()),\n});\n\n/**\n * Financial detail schema for API requests (transforms to PascalCase)\n */\nexport const FinancialDetailSchema = createApiSchema(\n\tFinancialDetailInputSchema,\n);\n\n/**\n * Financial detail validation schema (already transformed PascalCase with @ attributes)\n */\nexport const FinancialDetailApiValidationSchema = createApiValidationSchema(\n\tFinancialDetailInputSchema,\n);\n\nconst IdDocumentDetailInputSchema = v.object({\n\tidType: v.optional(v.string()),\n\tidCode: v.optional(v.string()),\n\tidIssueLocation: v.optional(v.string()),\n\tidIssueCounty: v.optional(v.string()),\n\tidIssueDate: v.optional(v.string()),\n\tidExpireDate: v.optional(v.string()),\n});\n\n/**\n * ID document detail schema for API requests (transforms to PascalCase)\n */\nexport const IdDocumentDetailSchema = createApiSchema(\n\tIdDocumentDetailInputSchema,\n);\n\n/**\n * ID document detail validation schema (already transformed PascalCase with @ attributes)\n */\nexport const IdDocumentDetailApiValidationSchema = createApiValidationSchema(\n\tIdDocumentDetailInputSchema,\n);\n\nconst DynamicFieldsInputSchema = v.object({\n\tkey: v.string(),\n\tvalue: v.string(),\n});\n\n/**\n * Dynamic fields schema for API requests (transforms to PascalCase)\n */\nexport const DynamicFieldsSchema = createApiSchema(DynamicFieldsInputSchema);\n\n/**\n * Dynamic fields validation schema (already transformed PascalCase with @ attributes)\n */\nexport const DynamicFieldsApiValidationSchema = createApiValidationSchema(\n\tDynamicFieldsInputSchema,\n);\n\nconst flagSchema = v.union([v.literal(0), v.literal(1)]);\n\nconst recordStatusSchema = v.union([\n\tv.literal(\"ENABLED\"),\n\tv.literal(\"DISABLED\"),\n\tv.literal(\"WARNING\"),\n\tv.literal(\"BLACKLISTED\"),\n]);\n\nconst recordTypeSchema = v.union([\n\tv.literal(\"CUSTOMER\"),\n\tv.literal(\"SUPPLIER\"),\n\tv.literal(\"GENERAL\"),\n]);\n\nconst insertCriteriaSchema = v.union([\n\tv.literal(\"S\"),\n\tv.literal(\"N\"),\n\tv.literal(\"T\"),\n\tv.literal(\"M\"),\n]);\n\nconst AccountPoliciesInputSchema = v.object({\n\tacceptProfilingPolicies: v.optional(flagSchema),\n\tacceptPrivacyPolicies: v.optional(flagSchema),\n\tacceptNewsletterPolicies: v.optional(flagSchema),\n});\n\n/**\n * Account policies schema for API requests (transforms to PascalCase with @ attributes)\n */\nexport const AccountPoliciesSchema = createApiSchema(\n\tAccountPoliciesInputSchema,\n);\n\n/**\n * Account policies validation schema (already transformed PascalCase with @ attributes)\n */\nexport const AccountPoliciesApiValidationSchema = createApiValidationSchema(\n\tAccountPoliciesInputSchema,\n);\n\n/**\n * Master record detail input schema (camelCase)\n */\nexport const MasterRecordDetailSchema = v.object({\n\trecordCode: v.optional(v.pipe(v.string(), v.minLength(6), v.maxLength(6))),\n\tinsertCriteria: v.optional(insertCriteriaSchema),\n\tcreatedDate: v.optional(v.string()),\n\trecordType: v.optional(v.union([recordTypeSchema], \"CUSTOMER\")),\n\trecordStatus: v.optional(v.union([recordStatusSchema], \"ENABLED\")),\n\tmoniker: v.optional(v.string()),\n\tname: v.optional(v.string()),\n\textraInfo: v.optional(v.string()),\n\tlanguageCode: v.pipe(v.string(), v.minLength(2), v.maxLength(2)),\n\taddress: v.optional(v.string()),\n\tzipCode: v.optional(v.string()),\n\tcityName: v.optional(v.string()),\n\tcountyCode: v.optional(v.string()),\n\tstateCode: v.optional(v.string()),\n\tcategoryCode: v.optional(v.string()),\n\tfirstPhoneNumber: v.optional(v.string()),\n\tmobilePhoneNumber: v.optional(v.string()),\n\temail: v.optional(v.string()),\n\tgender: v.optional(v.union([v.literal(\"M\"), v.literal(\"F\")])),\n\tbirthDate: v.optional(v.string()),\n\tbirthCity: v.optional(v.string()),\n\tbirthCounty: v.optional(v.string()),\n\tfiscalCode: v.optional(v.string()),\n\tvatCode: v.optional(v.string()),\n\tthirdPartRecordCode: v.optional(v.string()),\n\tidDocumentDetail: v.optional(IdDocumentDetailInputSchema),\n\taccountPolicies: v.optional(AccountPoliciesInputSchema),\n\tfinancialDetail: v.optional(FinancialDetailInputSchema),\n\tdynamicFields: v.optional(DynamicFieldsInputSchema),\n});\n\n/**\n * Master record detail schema for API requests (transforms to PascalCase)\n */\nexport const MasterRecordDetailApiSchema = createApiSchema(\n\tMasterRecordDetailSchema,\n);\n\n/**\n * Master record detail response schema (transforms to camelCase)\n */\nexport const MasterRecordDetailResponseSchema = createResponseSchema(\n\tMasterRecordDetailApiSchema,\n);\n\n/**\n * Master record detail API validation schema (PascalCase with @ attributes)\n * Used for both search responses and upsert requests\n * All fields are optional as responses may not contain all fields\n */\nexport const MasterRecordDetailApiValidationSchema = v.object({\n\t\"@RecordCode\": v.optional(v.pipe(v.string(), v.minLength(6), v.maxLength(6))),\n\t\"@InsertCriteria\": v.optional(insertCriteriaSchema),\n\tCreatedDate: v.optional(v.string()),\n\tModifiedDate: v.optional(v.string()),\n\tRecordType: v.optional(\n\t\tv.union([\n\t\t\tv.literal(\"CUSTOMER\"),\n\t\t\tv.literal(\"SUPPLIER\"),\n\t\t\tv.literal(\"GENERAL\"),\n\t\t]),\n\t),\n\tLoginType: v.optional(v.string()),\n\tRecordStatus: v.optional(recordStatusSchema),\n\tMoniker: v.optional(v.string()),\n\tName: v.optional(v.string()),\n\tExtraInfo: v.optional(v.string()),\n\tLanguageCode: v.optional(v.pipe(v.string(), v.minLength(1), v.maxLength(2))),\n\tAddress: v.optional(v.string()),\n\tZipCode: v.optional(v.string()),\n\tCityName: v.optional(v.string()),\n\tCountyCode: v.optional(v.string()),\n\tStateCode: v.optional(v.string()),\n\tCategoryCode: v.optional(v.string()),\n\tPromoterCode: v.optional(v.string()),\n\tFirstPhoneNumber: v.optional(v.string()),\n\tMobilePhoneNumber: v.optional(v.string()),\n\tEmail: v.optional(v.string()),\n\tGender: v.optional(v.union([v.literal(\"M\"), v.literal(\"F\")])),\n\tBirthDate: v.optional(v.string()),\n\tBirthCity: v.optional(v.string()),\n\tBirthCounty: v.optional(v.string()),\n\tEncryptedPassword: v.optional(\n\t\tv.union([v.literal(\"true\"), v.literal(\"false\"), v.boolean()]),\n\t),\n\tFiscalCode: v.optional(v.string()),\n\tVatCode: v.optional(v.string()),\n\tThirdPartRecordCode: v.optional(v.string()),\n\tIdDocumentDetail: v.optional(IdDocumentDetailApiValidationSchema),\n\tNewsletterDisabled: v.optional(\n\t\tv.union([v.literal(\"true\"), v.literal(\"false\"), v.boolean()]),\n\t),\n\tSupplierRefMasterRecords: v.optional(v.any()),\n\tAccountPolicies: v.optional(AccountPoliciesApiValidationSchema),\n\tFinancialDetail: v.optional(FinancialDetailApiValidationSchema),\n\tDynamicFields: v.optional(DynamicFieldsApiValidationSchema),\n});\n","import * as v from \"valibot\";\nimport {\n\tcreateApiSchema,\n\tcreateResponseSchema,\n} from \"../utils/schema-transform.js\";\nimport { RqHeaderSchema, RsStatusSchema } from \"./common.js\";\nimport { MasterRecordDetailApiValidationSchema } from \"./master-record.js\";\n\nconst LastModificationDateInputSchema = v.object({\n\tminDate: v.string(),\n\tmaxDate: v.string(),\n});\n\nconst languageCodeField = v.optional(\n\tv.pipe(v.string(), v.minLength(2), v.maxLength(2)),\n);\n\n/**\n * Search by CODE - requires recordCode\n */\nconst CodeSearchSchema = v.object({\n\tsearchType: v.literal(\"CODE\"),\n\trecordCode: v.pipe(v.string(), v.minLength(5), v.maxLength(6)),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by NAME - requires name, optionally city\n */\nconst NameSearchSchema = v.object({\n\tsearchType: v.literal(\"NAME\"),\n\tname: v.string(),\n\tcity: v.optional(v.string()),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by VATCODE - requires vatCode, optionally phoneNumber\n */\nconst VatCodeSearchSchema = v.object({\n\tsearchType: v.literal(\"VATCODE\"),\n\tvatCode: v.string(),\n\tphoneNumber: v.optional(v.string()),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by ZONE - requires zipCode and countyCode, optionally city\n */\nconst ZoneSearchSchema = v.object({\n\tsearchType: v.literal(\"ZONE\"),\n\tzipCode: v.string(),\n\tcountyCode: v.string(),\n\tcity: v.optional(v.string()),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by CATEGORY - requires categoryCode\n */\nconst CategorySearchSchema = v.object({\n\tsearchType: v.literal(\"CATEGORY\"),\n\tcategoryCode: v.string(),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by EMAIL - requires email\n */\nconst EmailSearchSchema = v.object({\n\tsearchType: v.literal(\"EMAIL\"),\n\temail: v.string(),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by LASTMODDATE - requires lastModificationDate\n */\nconst LastModDateSearchSchema = v.object({\n\tsearchType: v.literal(\"LASTMODDATE\"),\n\tlastModificationDate: LastModificationDateInputSchema,\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by SEARCH FIELD - requires searchFieldValue\n */\nconst SearchFieldSearchSchema = v.object({\n\tsearchType: v.literal(\"SEARCH_FIELD\"),\n\tsearchFieldValue: v.string(),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by EXTERNAL_REF_CODE - requires searchFieldValue\n */\nconst ExternalRefCodeSearchSchema = v.object({\n\tsearchType: v.literal(\"EXTERNAL_REF_CODE\"),\n\tsearchFieldValue: v.string(),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search master record input schema (camelCase)\n * Conditional fields based on searchType\n */\nexport const SearchMasterRecordSchema = v.union([\n\tCodeSearchSchema,\n\tNameSearchSchema,\n\tVatCodeSearchSchema,\n\tZoneSearchSchema,\n\tCategorySearchSchema,\n\tEmailSearchSchema,\n\tLastModDateSearchSchema,\n\tSearchFieldSearchSchema,\n\tExternalRefCodeSearchSchema,\n]);\n\nconst transformRecordCode = (input: Record<string, unknown>) => {\n\tif (!(\"@RecordCode\" in input)) return input;\n\tconst recordCode = input[\"@RecordCode\"];\n\tif (!recordCode) return input;\n\tconst { \"@RecordCode\": _discard, ...rest } = input;\n\treturn {\n\t\t...rest,\n\t\tRecordCode: recordCode,\n\t};\n};\n\n/**\n * Search master record schema for API requests (transforms to PascalCase)\n */\nexport const SearchMasterRecordApiSchema = v.pipe(\n\tcreateApiSchema(SearchMasterRecordSchema),\n\tv.transform((input) => transformRecordCode(input)),\n);\n\n/**\n * Complete search request schema with header\n * Flattens SearchMasterRecord fields to root level\n */\nexport const SearchMasterRecordRequestSchema = v.pipe(\n\tv.object({\n\t\tRqHeader: RqHeaderSchema,\n\t\tSearchMasterRecord: SearchMasterRecordApiSchema,\n\t}),\n\tv.transform((input) => {\n\t\tconst { SearchMasterRecord: searchFields, RqHeader, ...rest } = input;\n\t\treturn {\n\t\t\tRqHeader,\n\t\t\t...searchFields,\n\t\t\t...rest,\n\t\t};\n\t}),\n);\n\nconst MasterRecordListApiSchema = v.object({\n\tMasterRecordDetail: v.optional(\n\t\tv.pipe(\n\t\t\tv.union([\n\t\t\t\tv.array(MasterRecordDetailApiValidationSchema),\n\t\t\t\tMasterRecordDetailApiValidationSchema,\n\t\t\t]),\n\t\t\tv.transform((input) => {\n\t\t\t\tif (!input) return undefined;\n\t\t\t\treturn Array.isArray(input) ? input : [input];\n\t\t\t}),\n\t\t),\n\t),\n});\n\n/**\n * Search master record response schema (transforms to camelCase)\n */\nexport const SearchMasterRecordResponseSchema = createResponseSchema(\n\tv.object({\n\t\tRsStatus: RsStatusSchema,\n\t\tMasterRecordList: v.optional(MasterRecordListApiSchema),\n\t}),\n);\n","import * as v from \"valibot\";\nimport { createResponseSchema } from \"../utils/schema-transform.js\";\nimport { RqHeaderSchema, RsStatusSchema } from \"./common.js\";\nimport { MasterRecordDetailApiValidationSchema } from \"./master-record.js\";\n\n/**\n * Complete upsert request schema with header and required InsertCriteria\n */\nexport const ManageMasterRecordRequestSchema = v.object({\n\tRqHeader: RqHeaderSchema,\n\tMasterRecordDetail: MasterRecordDetailApiValidationSchema,\n});\n/**\n * Upsert master record response schema (transforms to camelCase)\n */\nexport const ManageMasterRecordResponseSchema = createResponseSchema(\n\tv.object({\n\t\tRsStatus: RsStatusSchema,\n\t\tMasterRecordDetail: v.optional(MasterRecordDetailApiValidationSchema),\n\t}),\n);\n","/**\n * Result type for functional error handling\n */\nexport type Result<T, E = Error> =\n\t| { success: true; data: T }\n\t| { success: false; error: E };\n\n/**\n * Creates a successful result\n */\nexport function ok<T>(data: T): Result<T, never> {\n\treturn { success: true, data };\n}\n\n/**\n * Creates an error result\n */\nexport function err<E>(error: E): Result<never, E> {\n\treturn { success: false, error };\n}\n\nexport function isOk(statusCode: number): boolean {\n\treturn statusCode === 200;\n}\n","export interface TimeoutController {\n\tsignal: AbortSignal;\n\tclear?: () => void;\n}\n\n/**\n * Create an AbortSignal that will automatically abort after `timeoutMs`.\n * If `timeoutMs` is not provided or <= 0, no automatic abort is scheduled.\n */\nexport function createTimeoutSignal(timeoutMs?: number): TimeoutController {\n\tconst controller = new AbortController();\n\n\tif (!timeoutMs || timeoutMs <= 0) {\n\t\treturn { signal: controller.signal };\n\t}\n\n\tconst timeoutId = setTimeout(() => controller.abort(), timeoutMs);\n\n\treturn {\n\t\tsignal: controller.signal,\n\t\tclear: () => clearTimeout(timeoutId),\n\t};\n}\n","import { AvesError } from \"../error.js\";\n\nfunction buildUrl(baseURL: string, endpoint: string): URL {\n\ttry {\n\t\tconst base = new URL(baseURL);\n\t\tconst basePath = base.pathname.endsWith(\"/\")\n\t\t\t? base.pathname.slice(0, -1)\n\t\t\t: base.pathname;\n\t\tconst combinedPath = basePath + endpoint;\n\n\t\treturn new URL(combinedPath, base);\n\t} catch (error) {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Invalid baseURL: ${error instanceof Error ? error.message : \"Invalid URL format\"}`,\n\t\t);\n\t}\n}\n\n/**\n * Validates and combines baseURL with endpoint\n * @param baseURL - Base URL (must be http:// or https://)\n * @param endpoint - Endpoint path (must start with /)\n * @returns Combined URL string\n * @throws AvesError if URL is invalid or protocol is not http/https\n */\nexport function parseUrl(baseURL: string, endpoint: string): string {\n\tif (!endpoint.startsWith(\"/\")) {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Invalid endpoint: endpoint must start with '/' but got '${endpoint}'`,\n\t\t);\n\t}\n\n\tconst normalizedBaseURL = baseURL.replace(/\\/$/, \"\");\n\n\tconst url = buildUrl(normalizedBaseURL, endpoint);\n\n\tif (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Invalid protocol: baseURL must use http:// or https:// but got '${url.protocol}'`,\n\t\t);\n\t}\n\n\treturn url.toString();\n}\n","import { XMLBuilder, XMLParser } from \"fast-xml-parser\";\nimport { AvesError } from \"./error.js\";\n\nconst parserOptions = {\n\tignoreAttributes: false,\n\tattributeNamePrefix: \"@\",\n\tparseAttributeValue: false,\n\ttrimValues: true,\n\tignoreNameSpace: true,\n\tremoveNSPrefix: true,\n\tparseTagValue: false,\n};\n\nconst builderOptions = {\n\tignoreAttributes: false,\n\tattributeNamePrefix: \"@\",\n\tsuppressEmptyNode: true,\n};\n\nconst parser = new XMLParser(parserOptions);\nconst builder = new XMLBuilder(builderOptions);\n\n/**\n * Converts JSON to XML string\n */\nexport function jsonToXml(json: Record<string, unknown>): string {\n\ttry {\n\t\treturn builder.build(json);\n\t} catch (error) {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Failed to convert JSON to XML: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n\t\t);\n\t}\n}\n\n/**\n * Converts XML string to JSON object\n * Attributes are parsed with @ prefix\n */\nexport function xmlToJson(xml: string): Record<string, unknown> {\n\ttry {\n\t\treturn parser.parse(xml);\n\t} catch (error) {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Failed to convert XML to JSON: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n\t\t);\n\t}\n}\n","export const XML_ROOT_ELEMENTS = {\n\tSEARCH_REQUEST: \"SearchMasterRecordRQ\",\n\tSEARCH_RESPONSE: \"SearchMasterRecordRS\",\n\tUPSERT_REQUEST: \"ManageMasterRecordRQ\",\n\tUPSERT_RESPONSE: \"ManageMasterRecordRS\",\n\tBOOKING_REQUEST: \"BookFileRQ\",\n\tBOOKING_RESPONSE: \"BookingFileRS\",\n} as const;\n\nexport type XMLRootElementValues =\n\t(typeof XML_ROOT_ELEMENTS)[keyof typeof XML_ROOT_ELEMENTS];\n\nexport function createRootElement<T>(name: XMLRootElementValues, object: T) {\n\treturn { [name]: object };\n}\n","import { request as r } from 'undici';\nimport {\n type BaseIssue,\n type BaseSchema,\n parse,\n safeParse,\n ValiError,\n} from 'valibot';\nimport {\n AvesError,\n apiError,\n buildDetails,\n isAbortError,\n unknownError,\n validationError,\n} from './error.js';\nimport {\n BookingFileApiSchema,\n BookingFileResponseSchema,\n} from './schemas/booking-file.js';\nimport { MasterRecordDetailApiSchema } from './schemas/master-record.js';\nimport {\n SearchMasterRecordRequestSchema,\n SearchMasterRecordResponseSchema,\n} from './schemas/search.js';\nimport {\n ManageMasterRecordRequestSchema,\n ManageMasterRecordResponseSchema,\n} from './schemas/upsert.js';\nimport type {\n AvesClientOptions,\n BookingFileRQ,\n BookingFileRS,\n ManageMasterRecordRS,\n MasterRecordDetail,\n RsStatus,\n SearchMasterRecord,\n SearchMasterRecordRS,\n} from './types.js';\nimport { err, isOk, ok, type Result } from './utils/result.js';\nimport { createTimeoutSignal } from './utils/timeout.js';\nimport { parseUrl } from './utils/url.js';\nimport { jsonToXml, xmlToJson } from './xml-client.js';\nimport { createRootElement, XML_ROOT_ELEMENTS } from './xml-root.js';\n\n/**\n * AVES XML REST API client\n */\nexport class AvesClient {\n /**\n * @param options - Client configuration options\n * @param options.baseURL - Base URL of the AVES API\n * @param options.hostID - 6-digit identification code\n * @param options.xtoken - Authentication token\n * @param options.languageCode - Optional 2-digit language code\n * @param options.timeoutMs - Optional request timeout in milliseconds\n */\n constructor(private readonly options: AvesClientOptions) {}\n\n private createRqHeader() {\n return {\n '@HostID': this.options.hostID,\n '@Xtoken': this.options.xtoken,\n '@Interface': 'WEB' as const,\n '@UserName': 'WEB' as const,\n ...(this.options.languageCode && {\n '@LanguageCode': this.options.languageCode,\n }),\n };\n }\n\n private createUrl(endpoint: string) {\n return parseUrl(this.options.baseURL, endpoint);\n }\n\n private get endpoints() {\n return {\n search: '/interop/masterRecords/v2/rest/Search',\n upsert: '/interop/masterRecords/v2/rest/InsertOrUpdate',\n createBooking: '/interop/booking/v2/rest/CreateBookingFile',\n } as const;\n }\n\n private handleApiStatus<T extends { rsStatus: RsStatus }>(\n output: T,\n ): Result<T, AvesError> {\n const rsStatus = output.rsStatus;\n const status = rsStatus?.status;\n\n if (status !== 'OK') {\n return err(\n apiError(\n rsStatus.errorDescription as string,\n status,\n rsStatus.errorCode,\n ),\n );\n }\n\n return ok(output);\n }\n\n private toAvesError(error: unknown, defaultMessage: string): AvesError {\n if (error instanceof AvesError) {\n return error;\n }\n if (error instanceof ValiError) {\n const details = buildDetails(error.issues);\n return validationError(`Validation error: ${details}`);\n }\n if (error instanceof Error) {\n return unknownError(error.message);\n }\n return unknownError(defaultMessage);\n }\n\n private async request<T extends { rsStatus: RsStatus }>(\n endpoint: string,\n requestBody: Record<string, unknown>,\n responseRootKey: string,\n responseSchema: BaseSchema<unknown, T, BaseIssue<unknown>>,\n ): Promise<Result<T, AvesError>> {\n const { signal, clear } = createTimeoutSignal(\n this.options.timeoutMs ?? 30_000,\n );\n\n try {\n const url = this.createUrl(endpoint);\n const xmlBody = jsonToXml(requestBody);\n console.log('xmlBody', xmlBody);\n\n const response = await r(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/xml',\n },\n body: xmlBody,\n signal,\n });\n\n const responseText = await response.body.text();\n\n if (!isOk(response.statusCode)) {\n return err(apiError(responseText, 'ERROR', response.statusCode));\n }\n\n const jsonResponse = xmlToJson(responseText);\n const rootElement = jsonResponse[responseRootKey];\n\n if (!rootElement) {\n return err(\n validationError(\n `Invalid response structure: missing root element '${responseRootKey}'`,\n ),\n );\n }\n\n const parseResult = safeParse(responseSchema, rootElement);\n if (!parseResult.success) {\n const details = buildDetails(parseResult.issues);\n return err(validationError(`Invalid response format: ${details}`));\n }\n return this.handleApiStatus(parseResult.output);\n } catch (error) {\n if (isAbortError(error)) {\n return err(apiError('Request timed out', 'TIMEOUT'));\n }\n return err(this.toAvesError(error, 'Unknown error occurred'));\n } finally {\n clear?.();\n }\n }\n\n /**\n * Search for master records\n * @param params - Search master record request body in camelCase ({@link SearchMasterRecord})\n * @returns Result containing list of matching master records in camelCase or error\n */\n async search(\n params: SearchMasterRecord,\n ): Promise<Result<SearchMasterRecordRS, AvesError>> {\n try {\n const requestData = parse(SearchMasterRecordRequestSchema, {\n RqHeader: this.createRqHeader(),\n SearchMasterRecord: params,\n });\n\n const requestBody = createRootElement(\n XML_ROOT_ELEMENTS.SEARCH_REQUEST,\n requestData,\n );\n\n return this.request<SearchMasterRecordRS>(\n this.endpoints.search,\n requestBody,\n XML_ROOT_ELEMENTS.SEARCH_RESPONSE,\n SearchMasterRecordResponseSchema,\n );\n } catch (error) {\n return err(\n this.toAvesError(error, 'Validation error occurred during search'),\n );\n }\n }\n\n /**\n * Insert or update a master record\n * @param record - Master record data in camelCase ({@link MasterRecordDetail})\n * @returns Result containing response with customer record code in camelCase or error\n */\n async upsertRecord(\n record: MasterRecordDetail,\n ): Promise<Result<ManageMasterRecordRS, AvesError>> {\n try {\n const apiRecord = parse(MasterRecordDetailApiSchema, record);\n\n const requestData = parse(ManageMasterRecordRequestSchema, {\n RqHeader: this.createRqHeader(),\n MasterRecordDetail: apiRecord,\n });\n\n const requestBody = createRootElement(\n XML_ROOT_ELEMENTS.UPSERT_REQUEST,\n requestData,\n );\n\n return this.request<ManageMasterRecordRS>(\n this.endpoints.upsert,\n requestBody,\n XML_ROOT_ELEMENTS.UPSERT_RESPONSE,\n ManageMasterRecordResponseSchema,\n );\n } catch (error) {\n return err(\n this.toAvesError(error, 'Validation error occurred during upsert'),\n );\n }\n }\n\n /**\n * Create a booking file (CreateBookingFile).\n * @param params - Booking file request body in camelCase ({@link BookingFileRQ})\n * @returns Result containing booking file detail in camelCase or error\n */\n async createBooking(\n params: BookingFileRQ,\n ): Promise<Result<BookingFileRS, AvesError>> {\n try {\n const apiBody = parse(BookingFileApiSchema, params);\n const requestBody = createRootElement(XML_ROOT_ELEMENTS.BOOKING_REQUEST, {\n RqHeader: this.createRqHeader(),\n ...apiBody,\n });\n\n return this.request<BookingFileRS>(\n this.endpoints.createBooking,\n requestBody,\n XML_ROOT_ELEMENTS.BOOKING_RESPONSE,\n BookingFileResponseSchema,\n );\n } catch (error) {\n return err(\n this.toAvesError(\n error,\n 'Validation error occurred during createBooking',\n ),\n );\n }\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aves-sdk",
3
- "version": "1.3.3",
3
+ "version": "1.3.4",
4
4
  "description": "TypeScript SDK for AVES XML REST",
5
5
  "homepage": "https://github.com/simoneguglielmi/aves-sdk#readme",
6
6
  "repository": [