aves-sdk 1.5.0 → 1.5.1
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.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -1
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{kind;message;status;code;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 ee(e){return e.map(f).join(`; `)}function f(e){let t=te(e.path),n=e.message??`Invalid value`;return t?`${t}: ${n}`:n}function te(e){if(!e||e.length===0)return;let t=e.map(ne).filter(e=>e!==void 0);return t.length>0?t.join(`.`):void 0}function ne(e){if(typeof e==`string`||typeof e==`number`)return String(e);if(typeof e==`object`&&e&&`key`in e)return String(e.key)}function re(e){return e instanceof Error&&e.name===`AbortError`}function ie(e){return e.charAt(0).toUpperCase()+e.slice(1)}function ae(e){return e.charAt(0).toLowerCase()+e.slice(1)}function p(e){return e instanceof Date||e instanceof RegExp||e instanceof Map||e instanceof Set||e instanceof Error}const m=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`],filePaymentDetail:[`paymentDate`,`paymentNote`,`payerMasterCode`,`payerName`,`amount`,`paymentType`],selectedPackageDetail:[`pCode`,`startDate`,`endDate`,`getServicesFromPackage`],selectedServiceDetail:[`sCode`,`ssCode`,`supplierMasterCode`,`supplierName`,`supplierMasterSearchField`,`supplierFiscalCode`],extraQuoteServiceDetail:[`sCode`,`ssCode`,`supplierMasterCode`,`supplierName`,`supplierMasterSearchField`,`supplierFiscalCode`],serviceFare:[`currencyCode`,`exchangeRate`,`cost`,`costTax`,`costType`,`vatCostCurrencyCode`,`price`,`priceTax`,`priceType`],cancellableBookedServiceDetail:[`cancelOperationType`,`serviceRefType`,`serviceRefValue`],fileStatus:[`value`,`expiredDate`,`optionedFileExpireDatePolicy`],penalty:[`apply`,`specificCode`],noteDetail:[`nType`,`title`],passengerDetail:[`rph`,`roomRph`,`billingHolder`],bookingFinancialInfo:[`customer_PaymentType`,`customer_SpecPaymentTypeCode`],reservationFormCustomizablePrintParameters:[`makeDocumentTo`],supplierRefMasterRecords:[`supplierRefCode`,`companyMainBusinessType`,`carrierType`]}).flat()),oe=(e,t,n=!1)=>n||t===`sCode`||t===`ssCode`||t===`pCode`?`@${t}`:`@${e}`,h=new Map([[`toServiceType`,`TOServiceType`],[`rph`,`RPH`]]),se=new Map([[`TOServiceType`,`toServiceType`],[`RPH`,`rph`]]);function g(e,t){if(!e||typeof e!=`object`||p(e))return e;if(Array.isArray(e))return e.map(e=>g(e));let n=t?.excludeFromAttributePrefix,r=t?.excludeAttributeFromCamelToPascal,i={};for(let[t,a]of Object.entries(e)){let e=h.has(t)?h.get(t):ie(t),o=m.has(t)&&!n?.includes(t),s=oe(e,t,r?.includes(t)),c=o?s:e;i[c]=v(a,e=>g(e,void 0))}return i}function _(e){if(typeof e!=`object`||!e||p(e))return e;if(Array.isArray(e))return e.map(e=>_(e));let t={};for(let[n,r]of Object.entries(e)){let e=n.startsWith(`@`)?n.slice(1):n,i=se.has(e)?se.get(e):ae(e);t[i]=v(r,_)}return t}function v(e,t){return!e||typeof e!=`object`||p(e)?e:Array.isArray(e)?e.map(e=>v(e,t)):t(e)}function y(e){return t.pipe(e,t.transform(e=>g(e)))}function b(e){return t.pipe(e,t.transform(e=>_(e)))}function x(e){let n={};for(let t in e.entries){let r=m.has(t),i=t.charAt(0).toUpperCase()+t.slice(1),a=r?`@${i}`:i;n[a]=e.entries[t]}return t.object(n)}const S=t.union([t.literal(`true`),t.literal(`false`),t.boolean()]),ce=t.union([t.literal(`QUOTATION`),t.literal(`WORK_IN_PROGRESS`),t.literal(`CONFIRMED`),t.literal(`OPTIONED`),t.literal(`CANCELED`)]),le=t.union([t.literal(`QUOTATION`),t.literal(`WORK_IN_PROGRESS`),t.literal(`CONFIRMED`),t.literal(`OPTIONED`),t.literal(`NULLIFIED`),t.literal(`CANCELED`)]),ue=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(`REQUESTED`),t.literal(`NULLIFIED`),t.literal(`CANCELED`)]),C={CONFIRM:`CONFIRMED`,OPTION:`OPTIONED`,REQUESTED:`REQUEST`};function de(e){return e in C?C[e]:e}const fe=t.union([t.literal(`TOP`),t.literal(`TOP_SS`),t.literal(`ADV`),t.literal(`GRP`),t.literal(`OTHER`)]),w=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`)]),pe=t.union([t.literal(`REQUEST`),t.literal(`ALLOTMENT_REQUEST`),t.literal(`CONFIRMED_REQUEST`),t.literal(`CONFIRMED_EXTRA_ALLOTMENT`),t.literal(`WAITLISTED`),t.literal(`ALLOTMENT`),t.literal(`REFUSED`),t.literal(`NULLIFIED`),t.literal(`CANCELED`),t.literal(`MESSAGE`)]);function me(e){let t=e=>{if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(t);let n={};for(let[r,i]of Object.entries(e)){if(r===`paxAssociated`&&Array.isArray(i)&&!i.length){n[r]=``;continue}n[r]=t(i)}return n};return t(e)}function he(e){return g(me(e),{excludeFromAttributePrefix:[`startDate`,`endDate`],excludeAttributeFromCamelToPascal:[`sCode`,`ssCode`,`pCode`]})}function T(e){return t.pipe(e,t.transform(he))}function E(e){return t.pipe(t.union([t.array(e),e]),t.transform(e=>Array.isArray(e)?e:[e]))}const D=t.union([t.string(),t.number()]),ge=t.pipe(t.object({"@Value":ue,"@ExpiredDate":t.optional(t.string()),"@ExpireDate":t.optional(t.string())}),t.transform(e=>({"@Value":de(e[`@Value`]),"@ExpiredDate":e[`@ExpiredDate`]??e[`@ExpireDate`]}))),_e=t.object({"@PaxRef":t.string(),"@Price":D}),ve=t.object({PricePerPaxDetail:t.optional(E(_e))}),ye=t.object({"@CommissionCode":t.optional(t.string()),"@CommissionPercentage":t.optional(D),"@CommissionAmount":t.optional(D),"@PriceListCode":t.optional(t.string()),"@CostListCode":t.optional(t.string()),"@ServiceTotalPrice":t.optional(D),PaxPriceList:t.optional(ve)}),be=t.object({"@Code":t.optional(t.string()),"@Name":t.optional(t.string()),"@Email":t.optional(t.string()),"@LanguageCode":t.optional(t.string())}),xe=t.object({"@Code":t.optional(t.string()),"@Description":t.optional(t.string())}),Se=t.object({"@RPH":t.string(),"@ServiceCode":t.optional(t.string()),"@FromExternalProvider":t.optional(D),"@isFromExternalProvider":t.optional(D),AvesServiceType:t.optional(fe),TOServiceType:t.optional(w),FirstDescription:t.optional(t.string()),SecondDescription:t.optional(t.string()),ThirdDescription:t.optional(t.string()),FourthDescription:t.optional(t.string()),ServiceStatus:t.optional(pe),StartDate:t.optional(t.string()),EndDate:t.optional(t.string()),Qty:t.optional(D),Pax:t.optional(D),PeriodType:t.optional(t.string()),PaxMultiplier:t.optional(t.string()),ExternalProviderCode:t.optional(t.string()),WebStatisticCode:t.optional(t.string()),WebStatisticDescription:t.optional(t.string()),WebStatistic:t.optional(xe),SupplierInfo:t.optional(be),ServiceTotalAmountDetail:t.optional(ye)}),Ce=t.pipe(Se,t.transform(e=>({"@RPH":e[`@RPH`],"@ServiceCode":e[`@ServiceCode`],"@FromExternalProvider":e[`@FromExternalProvider`]??e[`@isFromExternalProvider`],AvesServiceType:e.AvesServiceType,TOServiceType:e.TOServiceType,FirstDescription:e.FirstDescription,SecondDescription:e.SecondDescription,ThirdDescription:e.ThirdDescription,FourthDescription:e.FourthDescription,ServiceStatus:e.ServiceStatus,StartDate:e.StartDate,EndDate:e.EndDate,Qty:e.Qty,Pax:e.Pax,PeriodType:e.PeriodType,PaxMultiplier:e.PaxMultiplier,ExternalProviderCode:e.ExternalProviderCode,WebStatisticCode:e.WebStatisticCode,WebStatisticDescription:e.WebStatisticDescription,WebStatistic:e.WebStatistic,SupplierInfo:e.SupplierInfo,ServiceTotalAmountDetail:e.ServiceTotalAmountDetail}))),we=t.object({BookedServiceDetail:t.optional(E(Ce))}),O=t.object({"@CurrencyCode":t.optional(t.string()),"@TotalAmountBeforeDiscount":t.optional(D),"@TotalAmountAfterDiscount":t.optional(D),"@TotalDiscount":t.optional(D),"@TotalAmountWithoutVat":t.optional(D),"@DueAmount":t.optional(D),"@PaiedAmount":t.optional(D),"@Balance":t.optional(D)}),Te=t.object({"@RPH":t.string(),"@RoomRPH":t.optional(t.string()),"@BillingHolder":t.optional(D),Name:t.optional(t.string()),CategoryCode:t.optional(t.string()),Sex:t.optional(t.string()),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()),MasterRecordCode:t.optional(t.string())}),Ee=t.object({PassengerDetail:t.optional(E(Te))}),De=t.object({"@ReschedulingCode":t.optional(t.string()),"@ExpireDate":t.optional(t.string()),"@TotalAmount":t.optional(D),ReschedulingCode:t.optional(t.string()),ExpireDate:t.optional(t.string()),TotalAmount:t.optional(D)}),Oe=t.pipe(De,t.transform(e=>({"@ReschedulingCode":e[`@ReschedulingCode`]??e.ReschedulingCode,"@ExpireDate":e[`@ExpireDate`]??e.ExpireDate,"@TotalAmount":e[`@TotalAmount`]??e.TotalAmount}))),ke=t.object({DeadlineDetail:t.optional(E(Oe))}),Ae=t.object({DocumentRefCode:t.optional(t.string()),DocumentType:t.optional(t.string()),DocumentName:t.optional(t.string()),ArchiviationDescription:t.optional(t.string())}),je=t.object({StoredDocumentDetail:t.optional(E(Ae))}),Me=t.object({DocumentType:t.optional(t.string()),DocumentName:t.optional(t.string()),Enabled:t.optional(D)}),k=t.object({PrintableDocumentDetail:t.optional(E(Me))}),Ne=t.object({"@BookingFileCode":t.optional(t.string()),BookingFileCode:t.optional(t.string()),CustomerRecordCode:t.optional(t.string()),CustomerName:t.optional(t.string()),CustomerEmail:t.optional(t.string()),TravelAgencyName:t.optional(t.string()),TravelAgencyEmail:t.optional(t.string()),BookingFileStatus:t.optional(ge),Description:t.optional(t.string()),Nation:t.optional(t.string()),Destination:t.optional(t.string()),CreationDate:t.optional(t.string()),FirstConfirmationDate:t.optional(t.string()),StartDate:t.optional(t.string()),EndDate:t.optional(t.string()),PackageCode:t.optional(t.string()),BookedServiceList:t.optional(we),TotalAmountDetail:t.optional(O),PaxNumber:t.optional(D),PassengerList:t.optional(Ee),Reference:t.optional(t.string()),ClerkName:t.optional(t.string()),StoredDocumentsList:t.optional(je),PrintableDocumentsList:t.optional(k),FinancialDeadlineList:t.optional(ke)}),Pe=t.pipe(Ne,t.transform(e=>({"@BookingFileCode":e[`@BookingFileCode`]??e.BookingFileCode,CustomerRecordCode:e.CustomerRecordCode,CustomerName:e.CustomerName,CustomerEmail:e.CustomerEmail,TravelAgencyName:e.TravelAgencyName,TravelAgencyEmail:e.TravelAgencyEmail,BookingFileStatus:e.BookingFileStatus,Description:e.Description,Nation:e.Nation,Destination:e.Destination,CreationDate:e.CreationDate,FirstConfirmationDate:e.FirstConfirmationDate,StartDate:e.StartDate,EndDate:e.EndDate,PackageCode:e.PackageCode,BookedServiceList:e.BookedServiceList,TotalAmountDetail:e.TotalAmountDetail,PaxNumber:e.PaxNumber,PassengerList:e.PassengerList,Reference:e.Reference,ClerkName:e.ClerkName,StoredDocumentsList:e.StoredDocumentsList,PrintableDocumentsList:e.PrintableDocumentsList,FinancialDeadlineList:e.FinancialDeadlineList}))),A=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)))}),Fe=t.optional(t.pipe(t.string(),t.transform(e=>e.split(`,`)))),j=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:Fe}),t.transform(e=>({status:e[`@Status`],errorCode:e.ErrorCode,errorDescription:e.ErrorDescription,warnings:e.Warnings}))),Ie=t.object({value:ce,expiredDate:t.optional(t.string())}),Le=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)))}),Re=t.object({code:t.optional(t.string()),iataCode:t.optional(t.string()),nationCode:t.optional(t.string())}),ze=t.object({recordCode:t.optional(t.string())}),Be=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`)]),Ve=t.object({makeDocumentTo:t.optional(t.union([t.literal(`BOOKING_CUSTOMER`),t.literal(`FIRST_PASSENGER`)]))}),He=t.object({fillInCode:t.optional(t.string())}),Ue=t.union([Ve,He]),We=t.object({documentType:Be,documentCustomizablePrintParameters:t.optional(Ue)}),Ge=t.object({printDoc:t.optional(S),sendDocViaEmail:t.optional(S),infoDocumentsToPrint:t.optional(t.array(We))}),Ke=t.object({reschedulingCode:t.optional(t.string()),expireDate:t.optional(t.string()),totalAmount:t.optional(t.string())}),qe=t.object({deadlineCode:t.optional(t.string()),description:t.optional(t.string()),expireDate:t.optional(t.string())}),Je=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`)]),Ye=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(Je)}),Xe=t.object({deadlineDetail:t.optional(t.array(Ke))}),Ze=t.object({deadlineDetail:t.optional(t.array(qe))}),Qe=t.object({paymentDetail:t.optional(t.array(Ye))}),$e=t.union([t.literal(`PAX_QTY_DAY`),t.literal(`PAX_QTY_NIGHT`),t.literal(`PAX_QTY_WEEK`),t.literal(`PAX_QTY`),t.literal(`PAX_DAY`),t.literal(`PAX_NIGHT`),t.literal(`PAX_WEEK`),t.literal(`PAX`),t.literal(`QTY_DAY`),t.literal(`QTY_NIGHT`),t.literal(`QTY_WEE`),t.literal(`QTY`),t.literal(`DAY`),t.literal(`NIGHT`),t.literal(`WEEK`),t.literal(`FORFAIT`)]),et=t.object({currencyCode:t.optional(t.string()),exchangeRate:t.optional(t.string()),cost:t.optional(t.string()),costTax:t.optional(t.string()),costType:t.optional($e),vatCostCurrencyCode:t.optional(t.string()),price:t.optional(t.string()),priceTax:t.optional(t.string()),priceType:t.optional($e)}),tt=t.object({packageCode:t.optional(t.string()),packageReference:t.optional(t.string()),suballotmentCode:t.optional(t.string()),priceListCode:t.optional(t.string()),costListCode:t.optional(t.string()),externalFileCode:t.optional(t.string()),externalReference:t.optional(t.string()),serviceStatus:t.optional(t.string()),serviceStatisticCode:t.optional(t.string()),serviceFare:t.optional(et)}),nt=t.object({pax:t.string()}),M=t.object({sCode:t.string(),ssCode:t.optional(t.string()),avesServiceType:fe,toServiceType:t.optional(w),subServiceDesc:t.optional(t.string()),startDate:t.string(),endDate:t.string(),qty:t.string(),pax:t.string(),paxAssociated:t.optional(t.array(nt)),avesSession:t.string(),avesServiceInfo:t.optional(tt),serviceFare:t.optional(et),bookedServiceRef:t.optional(t.string()),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())}),N=t.object({pCode:t.string(),startDate:t.string(),endDate:t.string(),getServicesFromPackage:t.optional(S)}),rt=t.object({selectedPackageDetail:t.optional(t.array(N))}),it=t.object({selectedServiceDetail:M}),at=t.object({extraQuoteServiceDetail:t.optional(t.array(M))}),P=t.object({nType:t.optional(t.string()),title:t.optional(t.string()),text:t.optional(t.string())}),ot=t.object({noteDetail:t.optional(t.array(P))}),F=t.union([t.literal(`AD`),t.literal(`CH`),t.literal(`IN`),t.literal(`OV`)]),I={rph:t.string(),roomRph:t.optional(t.string()),billingHolder:t.optional(S),masterRecordCode:t.optional(t.string()),name:t.string(),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(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())}))},st=t.object({...I,categoryCode:F}),L=t.object({...I,categoryCode:t.optional(F)}),ct=t.object({passengerDetail:st}),lt=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(lt),customer_SpecPaymentTypeCode:t.optional(t.string())}),ut=t.union([t.literal(`GROUPED_PAX`),t.literal(`NOT_GROUPED_PAX`),t.literal(`ONE_PAX_ONLY`)]),dt=t.union([t.literal(`AVES2AVES`),t.literal(`AVES2AVESVIA`),t.literal(`AVES2AVESITA`)]),ft=T(t.object({createDate:t.optional(t.string()),bookingFileRefCode:t.optional(t.string()),travelAgentCode:t.optional(t.string()),clerkName:t.optional(t.string()),customerDetail:ze,currencyCode:t.optional(t.string()),markupCode:t.optional(t.string()),bookingFileStatus:Ie,statisticCodes:t.optional(Le),destination:t.optional(Re),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(Ge),financialDeadlineList:t.optional(Xe),deadlineList:t.optional(Ze),paymentList:t.optional(Qe),selectedPackageList:t.optional(rt),selectedServiceList:t.array(it),extraQuotaRefCode:t.optional(t.string()),extraQuoteServiceList:t.optional(at),getExtraQuoteFromSystem:t.optional(S),passengerList:t.array(ct),noteList:t.optional(ot),bookingFinancialInfo:t.optional(R),bookingFileCode:t.optional(t.string()),groupingPaxPolicy:t.optional(ut),groupBookingFile:t.optional(S),typeDownloadFile:t.optional(dt),setBookingFileCodeFromStartDate:t.optional(S)})),z=b(t.object({RsStatus:j,BookingFileDetail:t.optional(Pe),PrintableDocumentsList:t.optional(k),TotalAmountDetailAfterCancellation:t.optional(O),Base64DocContent:t.optional(t.string())})),B=b(t.object({RsStatus:j})),V=z,pt=t.object({reschedulingCode:t.string(),description:t.optional(t.string()),expireDate:t.optional(t.string())}),mt=t.object({cancelOperationType:t.union([t.literal(`NULLIFY`),t.literal(`DELETE`)]),serviceRefType:t.union([t.literal(`RPH`),t.literal(`FILE`)]),serviceRefValue:t.string()}),ht=T(t.object({customerRecordCode:t.string(),bookingFileCode:t.string(),currencyCode:t.optional(t.string()),deadlineList:t.optional(t.object({deadlineDetail:t.optional(t.array(pt))})),selectedPackageDetail:t.optional(N),selectedServiceList:t.object({selectedServiceDetail:t.pipe(t.array(M),t.minLength(1))}),cancellableBookedServiceList:t.optional(t.object({cancellableBookedServiceDetail:t.optional(t.array(mt))})),passengerList:t.optional(t.object({passengerDetail:t.optional(t.array(L))}))})),gt=y(t.object({bookingFileCode:t.string(),bookingFileStartDate:t.string(),customerRecordCode:t.string(),newCustomerRecordCode:t.optional(t.string()),bookingFileReferenceName:t.optional(t.string()),travelAgentCode:t.optional(t.string()),billingReferenceCode:t.optional(t.string()),paymentReferenceCode:t.optional(t.string()),cupCode:t.optional(t.string()),cigCode:t.optional(t.string()),customerPromoterCode:t.optional(t.string()),bookingNote:t.optional(t.string()),passengerList:t.optional(t.object({passengerDetail:t.optional(t.array(L))})),statisticCodes:t.optional(Le),bookingFinancialInfo:t.optional(R),financialDeadlineList:t.optional(t.object({deadlineDetail:t.optional(t.array(t.object({reschedulingCode:t.string(),expireDate:t.string(),totalAmount:t.string()})))}))})),_t=y(t.object({bookingFileCode:t.string(),customerRecordCode:t.string()})),vt=t.union([t.literal(`NOT_SET`),t.literal(`CONSIDER_HOLIDAY`),t.literal(`CONSIDER_HOLIDAY_AND_SATURDAY`)]),yt=y(t.object({customerRecordCode:t.string(),bookingFileCode:t.string(),fileStatus:t.object({value:le,expiredDate:t.optional(t.string()),optionedFileExpireDatePolicy:t.optional(vt)}),backOfficeRequest:t.optional(S),bookingFileDocument:t.optional(Ge),penalty:t.optional(t.object({apply:t.optional(S),specificCode:t.optional(t.string())})),simulateCancelAndGetPenaltyAmount:t.optional(S)})),bt=y(t.object({customerRecordCode:t.string(),bookingFileCode:t.string(),bookingServiceRef:t.string(),bookingFileServiceStatus:t.literal(`NULLIFIED`),bookingFileServiceStatusDate:t.optional(t.string())})),xt=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`)]),St=t.union([t.literal(`AbsoluteAmountsInsertion`),t.literal(`FinalAmountToAchieve`),t.literal(`FinalAmountToAchieveWithoutControls`)]),Ct=t.object({paymentDate:t.string(),paymentNote:t.optional(t.string()),payerMasterCode:t.optional(t.string()),payerName:t.optional(t.string()),amount:t.string(),paymentType:xt}),wt=y(t.pipe(t.object({bookingFileCode:t.optional(t.string()),bookingFileRefCode:t.optional(t.string()),paymentUser:t.optional(t.string()),enableMultiplePayments:S,operationType:St,filePaymentList:t.object({filePaymentDetail:t.pipe(t.array(Ct),t.minLength(1))})}),t.check(e=>!!(e.bookingFileCode||e.bookingFileRefCode),`bookingFileCode or bookingFileRefCode is required`))),H=t.union([t.literal(`CASH`),t.literal(`BANK`),t.literal(`RID`),t.literal(`RIBA`),t.literal(`SPECIFIC_CODE`)]),U=t.object({currencyCode:t.optional(t.string()),creditLimit:t.optional(t.string()),c_PaymentType:t.optional(H),c_SpecPaymentTypeCode:t.optional(t.string()),s_PaymentType:t.optional(H),s_SpecPaymentTypeCode:t.optional(t.string()),enableElectronicInvoicing:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),electronicInvoicingType:t.optional(t.string())});y(U);const Tt=x(U),W=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())});y(W);const Et=x(W),G=t.object({key:t.string(),value:t.string()});y(t.array(G));const Dt=x(G),Ot=t.union([t.literal(`NOT_SET`),t.literal(`FLIGHT`),t.literal(`SHIP`),t.literal(`TRAIN`),t.literal(`RENTCAR`),t.literal(`BUS`),t.literal(`DP_HOTEL`),t.literal(`TO_HOTEL`),t.literal(`TO_TOUR`),t.literal(`TO_HOTEL_AND_TOUR`),t.literal(`DP_AUTO`),t.literal(`DP_GDS_NAVI`),t.literal(`DP_GDS_VOLI`),t.literal(`TOUR_OPERATOR`),t.literal(`TICKETING_EV`),t.literal(`OTHER`)]),K=t.object({supplierRefCode:t.optional(t.string()),companyMainBusinessType:t.optional(t.string()),carrierType:t.optional(Ot)});y(K);const kt=x(K),q=t.union([t.literal(0),t.literal(1)]),At=t.union([t.literal(`ENABLED`),t.literal(`DISABLED`),t.literal(`WARNING`),t.literal(`BLACKLISTED`)]),jt=t.union([t.literal(`CUSTOMER`),t.literal(`SUPPLIER`),t.literal(`GENERAL`)]),Mt=t.union([t.literal(`S`),t.literal(`N`),t.literal(`T`),t.literal(`M`)]),J=t.object({acceptProfilingPolicies:t.optional(q),acceptPrivacyPolicies:t.optional(q),acceptNewsletterPolicies:t.optional(q)});y(J);const Nt=x(J),Pt=y(t.object({recordCode:t.optional(t.pipe(t.string(),t.minLength(6),t.maxLength(6))),insertCriteria:t.optional(Mt),createdDate:t.optional(t.string()),recordType:t.optional(t.union([jt],`CUSTOMER`)),recordStatus:t.optional(t.union([At],`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(W),accountPolicies:t.optional(J),financialDetail:t.optional(U),dynamicFields:t.optional(G),supplierRefMasterRecords:t.optional(K)}));b(Pt);const Y=t.object({"@RecordCode":t.optional(t.pipe(t.string(),t.minLength(6),t.maxLength(6))),"@InsertCriteria":t.optional(Mt),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(At),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(Et),NewsletterDisabled:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),SupplierRefMasterRecords:t.optional(kt),AccountPolicies:t.optional(Nt),FinancialDetail:t.optional(Tt),DynamicFields:t.optional(Dt)}),Ft=t.object({minDate:t.string(),maxDate:t.string()}),X=t.optional(t.pipe(t.string(),t.minLength(2),t.maxLength(2))),It=t.object({searchType:t.literal(`CODE`),recordCode:t.pipe(t.string(),t.minLength(5),t.maxLength(6)),languageCode:X}),Lt=t.object({searchType:t.literal(`NAME`),name:t.string(),city:t.optional(t.string()),languageCode:X}),Rt=t.object({searchType:t.literal(`VATCODE`),vatCode:t.string(),phoneNumber:t.optional(t.string()),languageCode:X}),zt=t.object({searchType:t.literal(`ZONE`),zipCode:t.string(),countyCode:t.string(),city:t.optional(t.string()),languageCode:X}),Bt=t.object({searchType:t.literal(`CATEGORY`),categoryCode:t.string(),languageCode:X}),Vt=t.object({searchType:t.literal(`EMAIL`),email:t.string(),languageCode:X}),Ht=t.object({searchType:t.literal(`LASTMODDATE`),lastModificationDate:Ft,languageCode:X}),Ut=t.object({searchType:t.literal(`SEARCH_FIELD`),searchFieldValue:t.string(),languageCode:X}),Wt=t.object({searchType:t.literal(`EXTERNAL_REF_CODE`),searchFieldValue:t.string(),languageCode:X}),Gt=t.union([It,Lt,Rt,zt,Bt,Vt,Ht,Ut,Wt]),Kt=e=>{if(!(`@RecordCode`in e))return e;let t=e[`@RecordCode`];if(!t)return e;let{"@RecordCode":n,...r}=e;return{...r,RecordCode:t}},qt=t.pipe(y(Gt),t.transform(e=>Kt(e))),Jt=t.pipe(t.object({RqHeader:A,SearchMasterRecord:qt}),t.transform(e=>{let{SearchMasterRecord:t,RqHeader:n,...r}=e;return{RqHeader:n,...t,...r}})),Yt=t.object({MasterRecordDetail:t.optional(t.pipe(t.union([t.array(Y),Y]),t.transform(e=>{if(e)return Array.isArray(e)?e:[e]})))}),Xt=b(t.object({RsStatus:j,MasterRecordList:t.optional(Yt)})),Zt=t.object({RqHeader:A,MasterRecordDetail:Y}),Qt=b(t.object({RsStatus:j,MasterRecordDetail:t.optional(Y)}));function $t(e){return{success:!0,data:e}}function Z(e){return{success:!1,error:e}}function en(e){return e===200}function tn(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 nn(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 rn(e,t){if(!t.startsWith(`/`))throw new c(`validation`,`Invalid endpoint: endpoint must start with '/' but got '${t}'`);let n=nn(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 an={ignoreAttributes:!1,attributeNamePrefix:`@`,parseAttributeValue:!1,trimValues:!0,ignoreNameSpace:!0,removeNSPrefix:!0,parseTagValue:!1},on={ignoreAttributes:!1,attributeNamePrefix:`@`,suppressEmptyNode:!0},sn=new o(an),cn=new a(on);function ln(e){try{return cn.build(e)}catch(e){throw new c(`validation`,`Failed to convert JSON to XML: ${e instanceof Error?e.message:`Unknown error`}`)}}function un(e){try{return sn.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`,MOD_FILE_SERVICES_REQUEST:`ModFileServicesRQ`,MOD_FILE_HEADER_REQUEST:`ModFileHeaderRQ`,MOD_FILE_HEADER_RESPONSE:`ModFileHeaderRS`,CANCEL_FILE_REQUEST:`CancelFileRQ`,CANCEL_FILE_RESPONSE:`CancelFileRS`,SET_STATUS_REQUEST:`SetStatusRQ`,SET_STATUS_RESPONSE:`SetStatusRS`,SET_STATUS_SERVICE_REQUEST:`SetStatusServiceRQ`,SET_STATUS_SERVICE_RESPONSE:`SetStatusServiceRS`,FILE_PAYMENT_LIST_REQUEST:`FilePaymentListRQ`,FILE_PAYMENT_LIST_RESPONSE:`FilePaymentListRS`};function $(e,t){return{[e]:t}}var dn=class{options;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 rn(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`,modBookingServices:`/interop/booking/v2/rest/ModBookingFileServices`,modBookingHeader:`/interop/booking/v2/rest/ModBookingFileHeader`,cancelBooking:`/interop/booking/v2/rest/CancelBookingFile`,setBookingStatus:`/interop/booking/v2/rest/SetBookingFileStatus`,setBookingServiceStatus:`/interop/booking/v2/rest/SetBookingFileServiceStatus`,insertFilePaymentList:`/interop/booking/v2/rest/InsertFilePaymentList`}}handleApiStatus(e){let t=e.rsStatus,n=t?.status;return n===`OK`?$t(e):Z(u(t.errorDescription,n,t.errorCode))}toAvesError(e,t){return e instanceof c?e:e instanceof n?l(`Validation error: ${ee(e.issues)}`):e instanceof Error?d(e.message):d(t)}async request(t,n,r,a){let{signal:o,clear:s}=tn(this.options.timeoutMs??3e4);try{let s=await e(this.createUrl(t),{method:`POST`,headers:{"Content-Type":`application/xml`},body:ln(n),signal:o}),c=await s.body.text();if(!en(s.statusCode))return Z(u(c,`ERROR`,s.statusCode));let d=un(c)[r];if(!d)return Z(l(`Invalid response structure: missing root element '${r}'`));let f=i(a,d);return f.success?this.handleApiStatus(f.output):Z(l(`Invalid response format: ${ee(f.issues)}`))}catch(e){return re(e)?Z(u(`Request timed out`,`TIMEOUT`)):Z(this.toAvesError(e,`Unknown error occurred`))}finally{s?.()}}async invokeOp(e){try{let t=r(e.apiSchema,e.params);return this.request(e.endpoint,$(e.requestRoot,{RqHeader:this.createRqHeader(),...t}),e.responseRoot,e.responseSchema)}catch(t){return Z(this.toAvesError(t,`Validation error occurred during ${e.op}`))}}async search(e){try{let t=r(Jt,{RqHeader:this.createRqHeader(),SearchMasterRecord:e}),n=$(Q.SEARCH_REQUEST,t);return this.request(this.endpoints.search,n,Q.SEARCH_RESPONSE,Xt)}catch(e){return Z(this.toAvesError(e,`Validation error occurred during search`))}}async upsertRecord(e){try{let t=r(Pt,e),n=r(Zt,{RqHeader:this.createRqHeader(),MasterRecordDetail:t}),i=$(Q.UPSERT_REQUEST,n);return this.request(this.endpoints.upsert,i,Q.UPSERT_RESPONSE,Qt)}catch(e){return Z(this.toAvesError(e,`Validation error occurred during upsert`))}}async createBooking(e){return this.invokeOp({op:`createBooking`,params:e,apiSchema:ft,endpoint:this.endpoints.createBooking,requestRoot:Q.BOOKING_REQUEST,responseRoot:Q.BOOKING_RESPONSE,responseSchema:z})}async modBookingServices(e){return this.invokeOp({op:`modBookingServices`,params:e,apiSchema:ht,endpoint:this.endpoints.modBookingServices,requestRoot:Q.MOD_FILE_SERVICES_REQUEST,responseRoot:Q.BOOKING_RESPONSE,responseSchema:V})}async modBookingHeader(e){return this.invokeOp({op:`modBookingHeader`,params:e,apiSchema:gt,endpoint:this.endpoints.modBookingHeader,requestRoot:Q.MOD_FILE_HEADER_REQUEST,responseRoot:Q.MOD_FILE_HEADER_RESPONSE,responseSchema:B})}async cancelBooking(e){return this.invokeOp({op:`cancelBooking`,params:e,apiSchema:_t,endpoint:this.endpoints.cancelBooking,requestRoot:Q.CANCEL_FILE_REQUEST,responseRoot:Q.CANCEL_FILE_RESPONSE,responseSchema:B})}async setBookingStatus(e){return this.invokeOp({op:`setBookingStatus`,params:e,apiSchema:yt,endpoint:this.endpoints.setBookingStatus,requestRoot:Q.SET_STATUS_REQUEST,responseRoot:Q.SET_STATUS_RESPONSE,responseSchema:V})}async setBookingServiceStatus(e){return this.invokeOp({op:`setBookingServiceStatus`,params:e,apiSchema:bt,endpoint:this.endpoints.setBookingServiceStatus,requestRoot:Q.SET_STATUS_SERVICE_REQUEST,responseRoot:Q.SET_STATUS_SERVICE_RESPONSE,responseSchema:V})}async insertFilePaymentList(e){return this.invokeOp({op:`insertFilePaymentList`,params:e,apiSchema:wt,endpoint:this.endpoints.insertFilePaymentList,requestRoot:Q.FILE_PAYMENT_LIST_REQUEST,responseRoot:Q.FILE_PAYMENT_LIST_RESPONSE,responseSchema:B})}};export{dn 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 a from"fast-xml-builder";import{XMLParser as o}from"fast-xml-parser";const s={VALIDATION:`validation`,API:`api`,UNKNOWN:`unknown`};var c=class extends Error{kind;message;status;code;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 ee(e){return e.map(f).join(`; `)}function f(e){let t=te(e.path),n=e.message??`Invalid value`;return t?`${t}: ${n}`:n}function te(e){if(!e||e.length===0)return;let t=e.map(ne).filter(e=>e!==void 0);return t.length>0?t.join(`.`):void 0}function ne(e){if(typeof e==`string`||typeof e==`number`)return String(e);if(typeof e==`object`&&e&&`key`in e)return String(e.key)}function re(e){return e instanceof Error&&e.name===`AbortError`}function ie(e){return e.charAt(0).toUpperCase()+e.slice(1)}function ae(e){return e.charAt(0).toLowerCase()+e.slice(1)}function p(e){return e instanceof Date||e instanceof RegExp||e instanceof Map||e instanceof Set||e instanceof Error}const m=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`],filePaymentDetail:[`paymentDate`,`paymentNote`,`payerMasterCode`,`payerName`,`amount`,`paymentType`],selectedPackageDetail:[`pCode`,`startDate`,`endDate`,`getServicesFromPackage`],selectedServiceDetail:[`sCode`,`ssCode`,`supplierMasterCode`,`supplierName`,`supplierMasterSearchField`,`supplierFiscalCode`],extraQuoteServiceDetail:[`sCode`,`ssCode`,`supplierMasterCode`,`supplierName`,`supplierMasterSearchField`,`supplierFiscalCode`],serviceFare:[`currencyCode`,`exchangeRate`,`cost`,`costTax`,`costType`,`vatCostCurrencyCode`,`price`,`priceTax`,`priceType`],cancellableBookedServiceDetail:[`cancelOperationType`,`serviceRefType`,`serviceRefValue`],fileStatus:[`value`,`expiredDate`,`optionedFileExpireDatePolicy`],penalty:[`apply`,`specificCode`],noteDetail:[`nType`,`title`],passengerDetail:[`rph`,`roomRph`,`billingHolder`],bookingFinancialInfo:[`customer_PaymentType`,`customer_SpecPaymentTypeCode`],reservationFormCustomizablePrintParameters:[`makeDocumentTo`],supplierRefMasterRecords:[`supplierRefCode`,`companyMainBusinessType`,`carrierType`]}).flat()),oe=(e,t,n=!1)=>n||t===`sCode`||t===`ssCode`||t===`pCode`?`@${t}`:`@${e}`,h=new Map([[`toServiceType`,`TOServiceType`],[`rph`,`RPH`]]),se=new Map([[`TOServiceType`,`toServiceType`],[`RPH`,`rph`]]);function g(e,t){if(!e||typeof e!=`object`||p(e))return e;if(Array.isArray(e))return e.map(e=>g(e));let n=t?.excludeFromAttributePrefix,r=t?.excludeAttributeFromCamelToPascal,i={};for(let[t,a]of Object.entries(e)){let e=h.has(t)?h.get(t):ie(t),o=m.has(t)&&!n?.includes(t),s=oe(e,t,r?.includes(t)),c=o?s:e;i[c]=v(a,e=>g(e,void 0))}return i}function _(e){if(typeof e!=`object`||!e||p(e))return e;if(Array.isArray(e))return e.map(e=>_(e));let t={};for(let[n,r]of Object.entries(e)){let e=n.startsWith(`@`)?n.slice(1):n,i=se.has(e)?se.get(e):ae(e);t[i]=v(r,_)}return t}function v(e,t){return!e||typeof e!=`object`||p(e)?e:Array.isArray(e)?e.map(e=>v(e,t)):t(e)}function y(e){return t.pipe(e,t.transform(e=>g(e)))}function b(e){return t.pipe(e,t.transform(e=>_(e)))}function x(e){let n={};for(let t in e.entries){let r=m.has(t),i=t.charAt(0).toUpperCase()+t.slice(1),a=r?`@${i}`:i;n[a]=e.entries[t]}return t.object(n)}const S=t.union([t.literal(`true`),t.literal(`false`),t.boolean()]),ce=t.union([t.literal(`QUOTATION`),t.literal(`WORK_IN_PROGRESS`),t.literal(`CONFIRMED`),t.literal(`OPTIONED`),t.literal(`CANCELED`)]),le=t.union([t.literal(`QUOTATION`),t.literal(`WORK_IN_PROGRESS`),t.literal(`CONFIRMED`),t.literal(`OPTIONED`),t.literal(`NULLIFIED`),t.literal(`CANCELED`)]),ue=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(`REQUESTED`),t.literal(`NULLIFIED`),t.literal(`CANCELED`)]),C={CONFIRM:`CONFIRMED`,OPTION:`OPTIONED`,REQUESTED:`REQUEST`};function de(e){return e in C?C[e]:e}const fe=t.union([t.literal(`TOP`),t.literal(`TOP_SS`),t.literal(`ADV`),t.literal(`GRP`),t.literal(`OTHER`)]),w=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`)]),pe=t.union([t.literal(`REQUEST`),t.literal(`ALLOTMENT_REQUEST`),t.literal(`CONFIRMED_REQUEST`),t.literal(`CONFIRMED_EXTRA_ALLOTMENT`),t.literal(`WAITLISTED`),t.literal(`ALLOTMENT`),t.literal(`REFUSED`),t.literal(`NULLIFIED`),t.literal(`CANCELED`),t.literal(`MESSAGE`)]);function me(e){let t=e=>{if(typeof e!=`object`||!e)return e;if(Array.isArray(e))return e.map(t);let n={};for(let[r,i]of Object.entries(e)){if(r===`paxAssociated`&&Array.isArray(i)&&!i.length){n[r]=``;continue}n[r]=t(i)}return n};return t(e)}function he(e){return g(me(e),{excludeFromAttributePrefix:[`startDate`,`endDate`],excludeAttributeFromCamelToPascal:[`sCode`,`ssCode`,`pCode`]})}function T(e){return t.pipe(e,t.transform(he))}function E(e){return t.pipe(t.union([t.array(e),e]),t.transform(e=>Array.isArray(e)?e:[e]))}const D=t.union([t.string(),t.number()]),ge=t.pipe(t.object({"@Value":ue,"@ExpiredDate":t.optional(t.string()),"@ExpireDate":t.optional(t.string())}),t.transform(e=>({"@Value":de(e[`@Value`]),"@ExpiredDate":e[`@ExpiredDate`]??e[`@ExpireDate`]}))),_e=t.object({"@PaxRef":t.string(),"@Price":D}),ve=t.object({PricePerPaxDetail:t.optional(E(_e))}),ye=t.object({"@CommissionCode":t.optional(t.string()),"@CommissionPercentage":t.optional(D),"@CommissionAmount":t.optional(D),"@PriceListCode":t.optional(t.string()),"@CostListCode":t.optional(t.string()),"@ServiceTotalPrice":t.optional(D),PaxPriceList:t.optional(ve)}),be=t.object({"@Code":t.optional(t.string()),"@Name":t.optional(t.string()),"@Email":t.optional(t.string()),"@LanguageCode":t.optional(t.string())}),xe=t.object({"@Code":t.optional(t.string()),"@Description":t.optional(t.string())}),Se=t.object({"@RPH":t.string(),"@ServiceCode":t.optional(t.string()),"@FromExternalProvider":t.optional(D),"@isFromExternalProvider":t.optional(D),AvesServiceType:t.optional(fe),TOServiceType:t.optional(w),FirstDescription:t.optional(t.string()),SecondDescription:t.optional(t.string()),ThirdDescription:t.optional(t.string()),FourthDescription:t.optional(t.string()),ServiceStatus:t.optional(pe),StartDate:t.optional(t.string()),EndDate:t.optional(t.string()),Qty:t.optional(D),Pax:t.optional(D),PeriodType:t.optional(t.string()),PaxMultiplier:t.optional(t.string()),ExternalProviderCode:t.optional(t.string()),WebStatisticCode:t.optional(t.string()),WebStatisticDescription:t.optional(t.string()),WebStatistic:t.optional(xe),SupplierInfo:t.optional(be),ServiceTotalAmountDetail:t.optional(ye)}),Ce=t.pipe(Se,t.transform(e=>({"@RPH":e[`@RPH`],"@ServiceCode":e[`@ServiceCode`],"@FromExternalProvider":e[`@FromExternalProvider`]??e[`@isFromExternalProvider`],AvesServiceType:e.AvesServiceType,TOServiceType:e.TOServiceType,FirstDescription:e.FirstDescription,SecondDescription:e.SecondDescription,ThirdDescription:e.ThirdDescription,FourthDescription:e.FourthDescription,ServiceStatus:e.ServiceStatus,StartDate:e.StartDate,EndDate:e.EndDate,Qty:e.Qty,Pax:e.Pax,PeriodType:e.PeriodType,PaxMultiplier:e.PaxMultiplier,ExternalProviderCode:e.ExternalProviderCode,WebStatisticCode:e.WebStatisticCode,WebStatisticDescription:e.WebStatisticDescription,WebStatistic:e.WebStatistic,SupplierInfo:e.SupplierInfo,ServiceTotalAmountDetail:e.ServiceTotalAmountDetail}))),we=t.object({BookedServiceDetail:t.optional(E(Ce))}),O=t.object({"@CurrencyCode":t.optional(t.string()),"@TotalAmountBeforeDiscount":t.optional(D),"@TotalAmountAfterDiscount":t.optional(D),"@TotalDiscount":t.optional(D),"@TotalAmountWithoutVat":t.optional(D),"@DueAmount":t.optional(D),"@PaiedAmount":t.optional(D),"@Balance":t.optional(D)}),Te=t.object({"@RPH":t.string(),"@RoomRPH":t.optional(t.string()),"@BillingHolder":t.optional(D),Name:t.optional(t.string()),CategoryCode:t.optional(t.string()),Sex:t.optional(t.string()),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()),MasterRecordCode:t.optional(t.string())}),Ee=t.object({PassengerDetail:t.optional(E(Te))}),De=t.object({"@ReschedulingCode":t.optional(t.string()),"@ExpireDate":t.optional(t.string()),"@TotalAmount":t.optional(D),ReschedulingCode:t.optional(t.string()),ExpireDate:t.optional(t.string()),TotalAmount:t.optional(D)}),Oe=t.pipe(De,t.transform(e=>({"@ReschedulingCode":e[`@ReschedulingCode`]??e.ReschedulingCode,"@ExpireDate":e[`@ExpireDate`]??e.ExpireDate,"@TotalAmount":e[`@TotalAmount`]??e.TotalAmount}))),ke=t.object({DeadlineDetail:t.optional(E(Oe))}),Ae=t.object({DocumentRefCode:t.optional(t.string()),DocumentType:t.optional(t.string()),DocumentName:t.optional(t.string()),ArchiviationDescription:t.optional(t.string())}),je=t.object({StoredDocumentDetail:t.optional(E(Ae))}),Me=t.object({DocumentType:t.optional(t.string()),DocumentName:t.optional(t.string()),Enabled:t.optional(D)}),k=t.object({PrintableDocumentDetail:t.optional(E(Me))}),Ne=t.object({"@BookingFileCode":t.optional(t.string()),BookingFileCode:t.optional(t.string()),CustomerRecordCode:t.optional(t.string()),CustomerName:t.optional(t.string()),CustomerEmail:t.optional(t.string()),TravelAgencyName:t.optional(t.string()),TravelAgencyEmail:t.optional(t.string()),BookingFileStatus:t.optional(ge),Description:t.optional(t.string()),Nation:t.optional(t.string()),Destination:t.optional(t.string()),CreationDate:t.optional(t.string()),FirstConfirmationDate:t.optional(t.string()),StartDate:t.optional(t.string()),EndDate:t.optional(t.string()),PackageCode:t.optional(t.string()),BookedServiceList:t.optional(we),TotalAmountDetail:t.optional(O),PaxNumber:t.optional(D),PassengerList:t.optional(Ee),Reference:t.optional(t.string()),ClerkName:t.optional(t.string()),StoredDocumentsList:t.optional(je),PrintableDocumentsList:t.optional(k),FinancialDeadlineList:t.optional(ke)}),Pe=t.pipe(Ne,t.transform(e=>({"@BookingFileCode":e[`@BookingFileCode`]??e.BookingFileCode,CustomerRecordCode:e.CustomerRecordCode,CustomerName:e.CustomerName,CustomerEmail:e.CustomerEmail,TravelAgencyName:e.TravelAgencyName,TravelAgencyEmail:e.TravelAgencyEmail,BookingFileStatus:e.BookingFileStatus,Description:e.Description,Nation:e.Nation,Destination:e.Destination,CreationDate:e.CreationDate,FirstConfirmationDate:e.FirstConfirmationDate,StartDate:e.StartDate,EndDate:e.EndDate,PackageCode:e.PackageCode,BookedServiceList:e.BookedServiceList,TotalAmountDetail:e.TotalAmountDetail,PaxNumber:e.PaxNumber,PassengerList:e.PassengerList,Reference:e.Reference,ClerkName:e.ClerkName,StoredDocumentsList:e.StoredDocumentsList,PrintableDocumentsList:e.PrintableDocumentsList,FinancialDeadlineList:e.FinancialDeadlineList}))),A=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)))}),Fe=t.optional(t.pipe(t.string(),t.transform(e=>e.split(`,`)))),j=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:Fe}),t.transform(e=>({status:e[`@Status`],errorCode:e.ErrorCode,errorDescription:e.ErrorDescription,warnings:e.Warnings}))),Ie=t.object({value:ce,expiredDate:t.optional(t.string())}),Le=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)))}),Re=t.object({code:t.optional(t.string()),iataCode:t.optional(t.string()),nationCode:t.optional(t.string())}),ze=t.object({recordCode:t.optional(t.string())}),Be=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`)]),Ve=t.object({makeDocumentTo:t.optional(t.union([t.literal(`BOOKING_CUSTOMER`),t.literal(`FIRST_PASSENGER`)]))}),He=t.object({fillInCode:t.optional(t.string())}),Ue=t.union([Ve,He]),We=t.object({documentType:Be,documentCustomizablePrintParameters:t.optional(Ue)}),Ge=t.object({printDoc:t.optional(S),sendDocViaEmail:t.optional(S),infoDocumentsToPrint:t.optional(t.array(We))}),Ke=t.object({reschedulingCode:t.optional(t.string()),expireDate:t.optional(t.string()),totalAmount:t.optional(t.string())}),qe=t.object({deadlineCode:t.optional(t.string()),description:t.optional(t.string()),expireDate:t.optional(t.string())}),Je=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`)]),Ye=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(Je)}),Xe=t.object({deadlineDetail:t.optional(t.array(Ke))}),Ze=t.object({deadlineDetail:t.optional(t.array(qe))}),Qe=t.object({paymentDetail:t.optional(t.array(Ye))}),$e=t.union([t.literal(`PAX_QTY_DAY`),t.literal(`PAX_QTY_NIGHT`),t.literal(`PAX_QTY_WEEK`),t.literal(`PAX_QTY`),t.literal(`PAX_DAY`),t.literal(`PAX_NIGHT`),t.literal(`PAX_WEEK`),t.literal(`PAX`),t.literal(`QTY_DAY`),t.literal(`QTY_NIGHT`),t.literal(`QTY_WEE`),t.literal(`QTY`),t.literal(`DAY`),t.literal(`NIGHT`),t.literal(`WEEK`),t.literal(`FORFAIT`)]),et=t.object({currencyCode:t.optional(t.string()),exchangeRate:t.optional(t.string()),cost:t.optional(t.string()),costTax:t.optional(t.string()),costType:t.optional($e),vatCostCurrencyCode:t.optional(t.string()),price:t.optional(t.string()),priceTax:t.optional(t.string()),priceType:t.optional($e)}),tt=t.object({packageCode:t.optional(t.string()),packageReference:t.optional(t.string()),suballotmentCode:t.optional(t.string()),priceListCode:t.optional(t.string()),costListCode:t.optional(t.string()),externalFileCode:t.optional(t.string()),externalReference:t.optional(t.string()),serviceStatus:t.optional(t.string()),serviceStatisticCode:t.optional(t.string()),serviceFare:t.optional(et)}),nt=t.object({pax:t.string()}),M=t.object({sCode:t.string(),ssCode:t.optional(t.string()),avesServiceType:fe,toServiceType:t.optional(w),subServiceDesc:t.optional(t.string()),startDate:t.string(),endDate:t.string(),qty:t.string(),pax:t.string(),paxAssociated:t.optional(t.array(nt)),avesSession:t.string(),avesServiceInfo:t.optional(tt),serviceFare:t.optional(et),bookedServiceRef:t.optional(t.string()),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())}),N=t.object({pCode:t.string(),startDate:t.string(),endDate:t.string(),getServicesFromPackage:t.optional(S)}),rt=t.object({selectedPackageDetail:t.optional(t.array(N))}),it=t.object({selectedServiceDetail:M}),at=t.object({extraQuoteServiceDetail:t.optional(t.array(M))}),P=t.object({nType:t.optional(t.string()),title:t.optional(t.string()),text:t.optional(t.string())}),ot=t.object({noteDetail:t.optional(t.array(P))}),F=t.union([t.literal(`AD`),t.literal(`CH`),t.literal(`IN`),t.literal(`OV`)]),I={rph:t.string(),roomRph:t.optional(t.string()),billingHolder:t.optional(S),masterRecordCode:t.optional(t.string()),name:t.string(),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(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())}))},st=t.object({...I,categoryCode:F}),L=t.object({...I,categoryCode:t.optional(F)}),ct=t.object({passengerDetail:st}),lt=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(lt),customer_SpecPaymentTypeCode:t.optional(t.string())}),ut=t.union([t.literal(`GROUPED_PAX`),t.literal(`NOT_GROUPED_PAX`),t.literal(`ONE_PAX_ONLY`)]),dt=t.union([t.literal(`AVES2AVES`),t.literal(`AVES2AVESVIA`),t.literal(`AVES2AVESITA`)]),ft=T(t.object({createDate:t.optional(t.string()),bookingFileRefCode:t.optional(t.string()),travelAgentCode:t.optional(t.string()),clerkName:t.optional(t.string()),customerDetail:ze,currencyCode:t.optional(t.string()),markupCode:t.optional(t.string()),bookingFileStatus:Ie,statisticCodes:t.optional(Le),destination:t.optional(Re),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(Ge),financialDeadlineList:t.optional(Xe),deadlineList:t.optional(Ze),paymentList:t.optional(Qe),selectedPackageList:t.optional(rt),selectedServiceList:t.array(it),extraQuotaRefCode:t.optional(t.string()),extraQuoteServiceList:t.optional(at),getExtraQuoteFromSystem:t.optional(S),passengerList:t.array(ct),noteList:t.optional(ot),bookingFinancialInfo:t.optional(R),bookingFileCode:t.optional(t.string()),groupingPaxPolicy:t.optional(ut),groupBookingFile:t.optional(S),typeDownloadFile:t.optional(dt),setBookingFileCodeFromStartDate:t.optional(S)})),z=b(t.object({RsStatus:j,BookingFileDetail:t.optional(Pe),PrintableDocumentsList:t.optional(k),TotalAmountDetailAfterCancellation:t.optional(O),Base64DocContent:t.optional(t.string())})),B=b(t.object({RsStatus:j})),V=z,pt=t.object({reschedulingCode:t.string(),description:t.optional(t.string()),expireDate:t.optional(t.string())}),mt=t.object({cancelOperationType:t.union([t.literal(`NULLIFY`),t.literal(`DELETE`)]),serviceRefType:t.union([t.literal(`RPH`),t.literal(`FILE`)]),serviceRefValue:t.string()}),ht=T(t.object({customerRecordCode:t.string(),bookingFileCode:t.string(),currencyCode:t.optional(t.string()),deadlineList:t.optional(t.object({deadlineDetail:t.optional(t.array(pt))})),selectedPackageDetail:t.optional(N),selectedServiceList:t.object({selectedServiceDetail:t.pipe(t.array(M),t.minLength(1))}),cancellableBookedServiceList:t.optional(t.object({cancellableBookedServiceDetail:t.optional(t.array(mt))})),passengerList:t.optional(t.object({passengerDetail:t.optional(t.array(L))}))})),gt=y(t.object({bookingFileCode:t.string(),bookingFileStartDate:t.string(),customerRecordCode:t.string(),newCustomerRecordCode:t.optional(t.string()),bookingFileReferenceName:t.optional(t.string()),travelAgentCode:t.optional(t.string()),billingReferenceCode:t.optional(t.string()),paymentReferenceCode:t.optional(t.string()),cupCode:t.optional(t.string()),cigCode:t.optional(t.string()),customerPromoterCode:t.optional(t.string()),bookingNote:t.optional(t.string()),passengerList:t.optional(t.object({passengerDetail:t.optional(t.array(L))})),statisticCodes:t.optional(Le),bookingFinancialInfo:t.optional(R),financialDeadlineList:t.optional(t.object({deadlineDetail:t.optional(t.array(t.object({reschedulingCode:t.string(),expireDate:t.string(),totalAmount:t.string()})))}))})),_t=y(t.object({bookingFileCode:t.string(),customerRecordCode:t.string()})),vt=t.union([t.literal(`NOT_SET`),t.literal(`CONSIDER_HOLIDAY`),t.literal(`CONSIDER_HOLIDAY_AND_SATURDAY`)]),yt=y(t.object({customerRecordCode:t.string(),bookingFileCode:t.string(),fileStatus:t.object({value:le,expiredDate:t.optional(t.string()),optionedFileExpireDatePolicy:t.optional(vt)}),backOfficeRequest:t.optional(S),bookingFileDocument:t.optional(Ge),penalty:t.optional(t.object({apply:t.optional(S),specificCode:t.optional(t.string())})),simulateCancelAndGetPenaltyAmount:t.optional(S)})),bt=y(t.object({customerRecordCode:t.string(),bookingFileCode:t.string(),bookingServiceRef:t.string(),bookingFileServiceStatus:t.literal(`NULLIFIED`),bookingFileServiceStatusDate:t.optional(t.string())})),xt=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`)]),St=t.union([t.literal(`AbsoluteAmountsInsertion`),t.literal(`FinalAmountToAchieve`),t.literal(`FinalAmountToAchieveWithoutControls`)]),Ct=t.object({paymentDate:t.string(),paymentNote:t.optional(t.string()),payerMasterCode:t.optional(t.string()),payerName:t.optional(t.string()),amount:t.string(),paymentType:xt}),wt=y(t.pipe(t.object({bookingFileCode:t.optional(t.string()),bookingFileRefCode:t.optional(t.string()),paymentUser:t.optional(t.string()),enableMultiplePayments:S,operationType:St,filePaymentList:t.object({filePaymentDetail:t.pipe(t.array(Ct),t.minLength(1))})}),t.check(e=>!!(e.bookingFileCode||e.bookingFileRefCode),`bookingFileCode or bookingFileRefCode is required`))),H=t.union([t.literal(`CASH`),t.literal(`BANK`),t.literal(`RID`),t.literal(`RIBA`),t.literal(`SPECIFIC_CODE`)]),U=t.object({currencyCode:t.optional(t.string()),creditLimit:t.optional(t.string()),c_PaymentType:t.optional(H),c_SpecPaymentTypeCode:t.optional(t.string()),s_PaymentType:t.optional(H),s_SpecPaymentTypeCode:t.optional(t.string()),enableElectronicInvoicing:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),electronicInvoicingType:t.optional(t.string())});y(U);const Tt=x(U),W=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())});y(W);const Et=x(W),G=t.object({key:t.string(),value:t.string()});y(t.array(G));const Dt=x(G),Ot=t.union([t.literal(`NOT_SET`),t.literal(`FLIGHT`),t.literal(`SHIP`),t.literal(`TRAIN`),t.literal(`RENTCAR`),t.literal(`BUS`),t.literal(`DP_HOTEL`),t.literal(`TO_HOTEL`),t.literal(`TO_TOUR`),t.literal(`TO_HOTEL_AND_TOUR`),t.literal(`DP_AUTO`),t.literal(`DP_GDS_NAVI`),t.literal(`DP_GDS_VOLI`),t.literal(`TOUR_OPERATOR`),t.literal(`TICKETING_EV`),t.literal(`OTHER`)]),K=t.object({supplierRefCode:t.optional(t.string()),companyMainBusinessType:t.optional(t.string()),carrierType:t.optional(Ot)});y(K);const kt=x(K),q=t.union([t.literal(0),t.literal(1)]),At=t.union([t.literal(`ENABLED`),t.literal(`DISABLED`),t.literal(`WARNING`),t.literal(`BLACKLISTED`)]),jt=t.union([t.literal(`CUSTOMER`),t.literal(`SUPPLIER`),t.literal(`GENERAL`)]),Mt=t.union([t.literal(`S`),t.literal(`N`),t.literal(`T`),t.literal(`M`)]),J=t.object({acceptProfilingPolicies:t.optional(q),acceptPrivacyPolicies:t.optional(q),acceptNewsletterPolicies:t.optional(q)});y(J);const Nt=x(J),Pt=y(t.object({recordCode:t.optional(t.pipe(t.string(),t.minLength(6),t.maxLength(6))),insertCriteria:t.optional(Mt),createdDate:t.optional(t.string()),recordType:t.optional(t.union([jt],`CUSTOMER`)),recordStatus:t.optional(t.union([At],`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(W),accountPolicies:t.optional(J),financialDetail:t.optional(U),dynamicFields:t.optional(G),supplierRefMasterRecords:t.optional(K)}));b(Pt);const Y=t.object({"@RecordCode":t.optional(t.pipe(t.string(),t.minLength(6),t.maxLength(6))),"@InsertCriteria":t.optional(Mt),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(At),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(Et),NewsletterDisabled:t.optional(t.union([t.literal(`true`),t.literal(`false`),t.boolean()])),SupplierRefMasterRecords:t.optional(kt),AccountPolicies:t.optional(Nt),FinancialDetail:t.optional(Tt),DynamicFields:t.optional(Dt)}),Ft=t.object({minDate:t.string(),maxDate:t.string()}),X=t.optional(t.pipe(t.string(),t.minLength(2),t.maxLength(2))),It=t.object({searchType:t.literal(`CODE`),recordCode:t.pipe(t.string(),t.minLength(5),t.maxLength(6)),languageCode:X}),Lt=t.object({searchType:t.literal(`NAME`),name:t.string(),city:t.optional(t.string()),languageCode:X}),Rt=t.object({searchType:t.literal(`VATCODE`),vatCode:t.string(),phoneNumber:t.optional(t.string()),languageCode:X}),zt=t.object({searchType:t.literal(`ZONE`),zipCode:t.string(),countyCode:t.string(),city:t.optional(t.string()),languageCode:X}),Bt=t.object({searchType:t.literal(`CATEGORY`),categoryCode:t.string(),languageCode:X}),Vt=t.object({searchType:t.literal(`EMAIL`),email:t.string(),languageCode:X}),Ht=t.object({searchType:t.literal(`LASTMODDATE`),lastModificationDate:Ft,languageCode:X}),Ut=t.object({searchType:t.literal(`SEARCH_FIELD`),searchFieldValue:t.string(),languageCode:X}),Wt=t.object({searchType:t.literal(`EXTERNAL_REF_CODE`),searchFieldValue:t.string(),languageCode:X}),Gt=t.union([It,Lt,Rt,zt,Bt,Vt,Ht,Ut,Wt]),Kt=e=>{if(!(`@RecordCode`in e))return e;let t=e[`@RecordCode`];if(!t)return e;let{"@RecordCode":n,...r}=e;return{...r,RecordCode:t}},qt=t.pipe(y(Gt),t.transform(e=>Kt(e))),Jt=t.pipe(t.object({RqHeader:A,SearchMasterRecord:qt}),t.transform(e=>{let{SearchMasterRecord:t,RqHeader:n,...r}=e;return{RqHeader:n,...t,...r}})),Yt=t.object({MasterRecordDetail:t.optional(t.pipe(t.union([t.array(Y),Y]),t.transform(e=>{if(e)return Array.isArray(e)?e:[e]})))}),Xt=b(t.object({RsStatus:j,MasterRecordList:t.optional(Yt)})),Zt=t.object({RqHeader:A,MasterRecordDetail:Y}),Qt=b(t.object({RsStatus:j,MasterRecordDetail:t.optional(Y)}));function $t(e){return{success:!0,data:e}}function Z(e){return{success:!1,error:e}}function en(e){return e===200}function tn(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 nn(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 rn(e,t){if(!t.startsWith(`/`))throw new c(`validation`,`Invalid endpoint: endpoint must start with '/' but got '${t}'`);let n=nn(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 an={ignoreAttributes:!1,attributeNamePrefix:`@`,parseAttributeValue:!1,trimValues:!0,ignoreNameSpace:!0,removeNSPrefix:!0,parseTagValue:!1},on={ignoreAttributes:!1,attributeNamePrefix:`@`,suppressEmptyNode:!0},sn=new o(an),cn=new a(on);function ln(e){try{return cn.build(e)}catch(e){throw new c(`validation`,`Failed to convert JSON to XML: ${e instanceof Error?e.message:`Unknown error`}`)}}function un(e){try{return sn.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`,MOD_FILE_SERVICES_REQUEST:`ModFileServicesRQ`,MOD_FILE_HEADER_REQUEST:`ModFileHeaderRQ`,MOD_FILE_HEADER_RESPONSE:`ModFileHeaderRS`,CANCEL_FILE_REQUEST:`CancelFileRQ`,CANCEL_FILE_RESPONSE:`CancelFileRS`,SET_STATUS_REQUEST:`SetStatusRQ`,SET_STATUS_RESPONSE:`SetStatusRS`,SET_STATUS_SERVICE_REQUEST:`SetStatusServiceRQ`,SET_STATUS_SERVICE_RESPONSE:`SetStatusServiceRS`,FILE_PAYMENT_LIST_REQUEST:`FilePaymentListRQ`,FILE_PAYMENT_LIST_RESPONSE:`FilePaymentListRS`};function $(e,t){return{[e]:t}}var dn=class{options;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 rn(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`,modBookingServices:`/interop/booking/v2/rest/ModBookingFileServices`,modBookingHeader:`/interop/booking/v2/rest/ModBookingFileHeader`,cancelBooking:`/interop/booking/v2/rest/CancelBookingFile`,setBookingStatus:`/interop/booking/v2/rest/SetBookingFileStatus`,setBookingServiceStatus:`/interop/booking/v2/rest/SetBookingFileServiceStatus`,insertFilePaymentList:`/interop/booking/v2/rest/InsertFilePaymentList`}}handleApiStatus(e){let t=e.rsStatus,n=t?.status;return n===`OK`?$t(e):Z(u(t.errorDescription,n,t.errorCode))}toAvesError(e,t){return e instanceof c?e:e instanceof n?l(`Validation error: ${ee(e.issues)}`):e instanceof Error?d(e.message):d(t)}async request(t,n,r,a){let{signal:o,clear:s}=tn(this.options.timeoutMs??3e4);try{let s=await e(this.createUrl(t),{method:`POST`,headers:{"Content-Type":`application/xml`},body:ln(n),signal:o}),c=await s.body.text();if(!en(s.statusCode))return Z(u(c,`ERROR`,s.statusCode));let d=un(c)[r];if(!d)return Z(l(`Invalid response structure: missing root element '${r}'`));let f=i(a,d);return f.success?this.handleApiStatus(f.output):Z(l(`Invalid response format: ${ee(f.issues)}`))}catch(e){return re(e)?Z(u(`Request timed out`,`TIMEOUT`)):Z(this.toAvesError(e,`Unknown error occurred`))}finally{s?.()}}async invokeOp(e){try{let t=r(e.apiSchema,e.params);return this.request(e.endpoint,$(e.requestRoot,{RqHeader:this.createRqHeader(),...t}),e.responseRoot,e.responseSchema)}catch(t){return Z(this.toAvesError(t,`Validation error occurred during ${e.op}`))}}async search(e){try{let t=r(Jt,{RqHeader:this.createRqHeader(),SearchMasterRecord:e}),n=$(Q.SEARCH_REQUEST,t);return this.request(this.endpoints.search,n,Q.SEARCH_RESPONSE,Xt)}catch(e){return Z(this.toAvesError(e,`Validation error occurred during search`))}}async upsertRecord(e){try{let t=r(Pt,e),n=r(Zt,{RqHeader:this.createRqHeader(),MasterRecordDetail:t}),i=$(Q.UPSERT_REQUEST,n);return this.request(this.endpoints.upsert,i,Q.UPSERT_RESPONSE,Qt)}catch(e){return Z(this.toAvesError(e,`Validation error occurred during upsert`))}}async createBooking(e){return this.invokeOp({op:`createBooking`,params:e,apiSchema:ft,endpoint:this.endpoints.createBooking,requestRoot:Q.BOOKING_REQUEST,responseRoot:Q.BOOKING_RESPONSE,responseSchema:z})}async modBookingServices(e){return this.invokeOp({op:`modBookingServices`,params:e,apiSchema:ht,endpoint:this.endpoints.modBookingServices,requestRoot:Q.MOD_FILE_SERVICES_REQUEST,responseRoot:Q.BOOKING_RESPONSE,responseSchema:V})}async modBookingHeader(e){return this.invokeOp({op:`modBookingHeader`,params:e,apiSchema:gt,endpoint:this.endpoints.modBookingHeader,requestRoot:Q.MOD_FILE_HEADER_REQUEST,responseRoot:Q.MOD_FILE_HEADER_RESPONSE,responseSchema:B})}async cancelBooking(e){return this.invokeOp({op:`cancelBooking`,params:e,apiSchema:_t,endpoint:this.endpoints.cancelBooking,requestRoot:Q.CANCEL_FILE_REQUEST,responseRoot:Q.CANCEL_FILE_RESPONSE,responseSchema:B})}async setBookingStatus(e){return this.invokeOp({op:`setBookingStatus`,params:e,apiSchema:yt,endpoint:this.endpoints.setBookingStatus,requestRoot:Q.SET_STATUS_REQUEST,responseRoot:Q.SET_STATUS_RESPONSE,responseSchema:V})}async setBookingServiceStatus(e){return this.invokeOp({op:`setBookingServiceStatus`,params:e,apiSchema:bt,endpoint:this.endpoints.setBookingServiceStatus,requestRoot:Q.SET_STATUS_SERVICE_REQUEST,responseRoot:Q.SET_STATUS_SERVICE_RESPONSE,responseSchema:V})}async insertFilePaymentList(e){return this.invokeOp({op:`insertFilePaymentList`,params:e,apiSchema:wt,endpoint:this.endpoints.insertFilePaymentList,requestRoot:Q.FILE_PAYMENT_LIST_REQUEST,responseRoot:Q.FILE_PAYMENT_LIST_RESPONSE,responseSchema:B})}};export{dn as AvesClient,c as AvesError};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -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/booking-shared.ts","../src/schemas/booking-response.ts","../src/schemas/common.ts","../src/schemas/booking-file.ts","../src/schemas/booking-ops.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 OverrideCamelKey<K extends string> = K extends \"RPH\"\n\t? \"rph\"\n\t: K extends \"TOServiceType\"\n\t\t? \"toServiceType\"\n\t\t: ToCamelCase<K>;\n\ntype CamelizeKey<K extends string> = K extends `@${infer Rest}`\n\t? OverrideCamelKey<Rest>\n\t: OverrideCamelKey<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\tfilePaymentDetail: [\n\t\t\"paymentDate\",\n\t\t\"paymentNote\",\n\t\t\"payerMasterCode\",\n\t\t\"payerName\",\n\t\t\"amount\",\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\tserviceFare: [\n\t\t\"currencyCode\",\n\t\t\"exchangeRate\",\n\t\t\"cost\",\n\t\t\"costTax\",\n\t\t\"costType\",\n\t\t\"vatCostCurrencyCode\",\n\t\t\"price\",\n\t\t\"priceTax\",\n\t\t\"priceType\",\n\t],\n\tcancellableBookedServiceDetail: [\n\t\t\"cancelOperationType\",\n\t\t\"serviceRefType\",\n\t\t\"serviceRefValue\",\n\t],\n\tfileStatus: [\"value\", \"expiredDate\", \"optionedFileExpireDatePolicy\"],\n\tpenalty: [\"apply\", \"specificCode\"],\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\t// Supplier reference master records\n\tsupplierRefMasterRecords: [\n\t\t\"supplierRefCode\",\n\t\t\"companyMainBusinessType\",\n\t\t\"carrierType\",\n\t],\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\texcludeAttributeFromCamelToPascal?: string[];\n};\n\nconst formatAttributeField = (\n\tfield: string,\n\toriginalField: string,\n\tisToExclude = false,\n) => {\n\t// Some attributes in AVES XML are explicitly camel-cased in the spec\n\t// (e.g. @sCode, @ssCode), so we always preserve their original field name.\n\tconst mustPreserveCamelCase =\n\t\toriginalField === \"sCode\" ||\n\t\toriginalField === \"ssCode\" ||\n\t\toriginalField === \"pCode\";\n\n\tif (isToExclude || mustPreserveCamelCase) {\n\t\treturn `@${originalField}`;\n\t}\n\n\treturn `@${field}`;\n};\n\n// Keys that need a custom PascalCase/XML tag name (by source camelCase key)\nconst pascalKeyOverrides = new Map<string, string>([\n\t[\"toServiceType\", \"TOServiceType\"],\n\t[\"rph\", \"RPH\"],\n]);\n\n// Reverse of pascalKeyOverrides for response camelCase mapping\nconst camelKeyOverrides = new Map<string, string>([\n\t[\"TOServiceType\", \"toServiceType\"],\n\t[\"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\tinput: T,\n\toptions?: CamelToPascalOptions,\n): Pascalize<T> {\n\tif (!input || typeof input !== \"object\" || 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 excludeAttribute = options?.excludeAttributeFromCamelToPascal;\n\tconst result: Record<string, unknown> = {};\n\n\tfor (const [key, value] of Object.entries(input)) {\n\t\tconst pascalKey = pascalKeyOverrides.has(key)\n\t\t\t? (pascalKeyOverrides.get(key) as string)\n\t\t\t: camelToPascal(key);\n\t\tconst treatAsAttr = ATTRIBUTE_FIELDS.has(key) && !exclude?.includes(key);\n\t\tconst formattedAttribute = formatAttributeField(\n\t\t\tpascalKey,\n\t\t\tkey,\n\t\t\texcludeAttribute?.includes(key),\n\t\t);\n\t\tconst finalKey = treatAsAttr ? formattedAttribute : 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\" || 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 [key, value] of Object.entries(input)) {\n\t\tconst parsedKey = key.startsWith(\"@\") ? key.slice(1) : key;\n\t\tconst camelKey = camelKeyOverrides.has(parsedKey)\n\t\t\t? (camelKeyOverrides.get(parsedKey) as string)\n\t\t\t: pascalToCamel(parsedKey);\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 || typeof value !== \"object\" || 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 type { BaseIssue, BaseSchema } from \"valibot\";\nimport * as v from \"valibot\";\nimport { camelToPascalKeys } from \"../utils/case-transform.js\";\n\n/** AVES bool-ish wire values */\nexport const BoolishSchema = v.union([\n\tv.literal(\"true\"),\n\tv.literal(\"false\"),\n\tv.boolean(),\n]);\n\n// ---------------------------------------------------------------------------\n// Status unions — request base, set extends, response wire + normalize\n// ---------------------------------------------------------------------------\n\n/** Canonical statuses accepted on CreateBookingFile */\nexport const BookingFileStatusRequestSchema = v.union([\n\tv.literal(\"QUOTATION\"),\n\tv.literal(\"WORK_IN_PROGRESS\"),\n\tv.literal(\"CONFIRMED\"),\n\tv.literal(\"OPTIONED\"),\n\tv.literal(\"CANCELED\"),\n]);\n\n/** SetBookingFileStatus adds NULLIFIED */\nexport const SetFileStatusValueSchema = v.union([\n\tv.literal(\"QUOTATION\"),\n\tv.literal(\"WORK_IN_PROGRESS\"),\n\tv.literal(\"CONFIRMED\"),\n\tv.literal(\"OPTIONED\"),\n\tv.literal(\"NULLIFIED\"),\n\tv.literal(\"CANCELED\"),\n]);\n\n/** Wire aliases seen in BOOKEDFILE responses */\nexport const BookingFileStatusWireSchema = 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(\"REQUESTED\"),\n\tv.literal(\"NULLIFIED\"),\n\tv.literal(\"CANCELED\"),\n]);\n\nconst statusAliasToCanonical = {\n\tCONFIRM: \"CONFIRMED\",\n\tOPTION: \"OPTIONED\",\n\tREQUESTED: \"REQUEST\",\n} as const;\n\nexport type CanonicalBookingFileStatus =\n\t| \"QUOTATION\"\n\t| \"WORK_IN_PROGRESS\"\n\t| \"CONFIRMED\"\n\t| \"OPTIONED\"\n\t| \"REQUEST\"\n\t| \"NULLIFIED\"\n\t| \"CANCELED\";\n\nexport function canonicalizeBookingFileStatus(\n\tvalue: v.InferOutput<typeof BookingFileStatusWireSchema>,\n): CanonicalBookingFileStatus {\n\tif (value in statusAliasToCanonical) {\n\t\treturn statusAliasToCanonical[\n\t\t\tvalue as keyof typeof statusAliasToCanonical\n\t\t] as CanonicalBookingFileStatus;\n\t}\n\treturn value as CanonicalBookingFileStatus;\n}\n\n// ---------------------------------------------------------------------------\n// Service type enums (shared request + response)\n// ---------------------------------------------------------------------------\n\nexport const 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\nexport const 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\nexport const BookedServiceStatusSchema = v.union([\n\tv.literal(\"REQUEST\"),\n\tv.literal(\"ALLOTMENT_REQUEST\"),\n\tv.literal(\"CONFIRMED_REQUEST\"),\n\tv.literal(\"CONFIRMED_EXTRA_ALLOTMENT\"),\n\tv.literal(\"WAITLISTED\"),\n\tv.literal(\"ALLOTMENT\"),\n\tv.literal(\"REFUSED\"),\n\tv.literal(\"NULLIFIED\"),\n\tv.literal(\"CANCELED\"),\n\tv.literal(\"MESSAGE\"),\n]);\n\n// ---------------------------------------------------------------------------\n// Booking request transform (Create + Mod share this)\n// ---------------------------------------------------------------------------\n\n/**\n * Empty paxAssociated [] → \"\" so XML emits `<PaxAssociated/>` instead of omitting the tag.\n */\nexport function normalizeEmptyPaxAssociated<T>(input: T): T {\n\tconst walk = (node: unknown): unknown => {\n\t\tif (node === null || typeof node !== \"object\") return node;\n\t\tif (Array.isArray(node)) return node.map(walk);\n\t\tconst result: Record<string, unknown> = {};\n\t\tfor (const [key, val] of Object.entries(node)) {\n\t\t\tif (key === \"paxAssociated\" && Array.isArray(val) && !val.length) {\n\t\t\t\tresult[key] = \"\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tresult[key] = walk(val);\n\t\t}\n\t\treturn result;\n\t};\n\treturn walk(input) as T;\n}\n\n/**\n * camelCase booking body → PascalCase / @attrs for AVES XML.\n * Root startDate/endDate stay elements; nested package dates become attributes.\n */\nexport function toBookingApiBody<T>(input: T) {\n\treturn camelToPascalKeys(normalizeEmptyPaxAssociated(input), {\n\t\texcludeFromAttributePrefix: [\"startDate\", \"endDate\"],\n\t\texcludeAttributeFromCamelToPascal: [\"sCode\", \"ssCode\", \"pCode\"],\n\t});\n}\n\n/** Pipe a camelCase booking input schema into the shared AVES request transform. */\nexport function createBookingApiSchema<\n\tTInput extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(inputSchema: TInput) {\n\treturn v.pipe(inputSchema, v.transform(toBookingApiBody));\n}\n","import * as v from \"valibot\";\nimport {\n\tAvesServiceTypeSchema,\n\tBookedServiceStatusSchema,\n\tBookingFileStatusWireSchema,\n\tcanonicalizeBookingFileStatus,\n\tToServiceTypeSchema,\n} from \"./booking-shared.js\";\n\n/**\n * Normalize XML one-or-many nodes into a typed array.\n */\nexport function oneOrMany<\n\tTSchema extends v.BaseSchema<unknown, unknown, v.BaseIssue<unknown>>,\n>(itemSchema: TSchema) {\n\treturn v.pipe(\n\t\tv.union([v.array(itemSchema), itemSchema]),\n\t\tv.transform((input): v.InferOutput<TSchema>[] =>\n\t\t\tArray.isArray(input) ? input : [input],\n\t\t),\n\t);\n}\n\nconst stringish = v.union([v.string(), v.number()]);\n\n/** BookingFileStatus in BOOKEDFILE responses — aliases normalized to canonical values */\nexport const BookingFileStatusApiSchema = v.pipe(\n\tv.object({\n\t\t\"@Value\": BookingFileStatusWireSchema,\n\t\t\"@ExpiredDate\": v.optional(v.string()),\n\t\t\"@ExpireDate\": v.optional(v.string()),\n\t}),\n\tv.transform((status) => ({\n\t\t\"@Value\": canonicalizeBookingFileStatus(status[\"@Value\"]),\n\t\t\"@ExpiredDate\": status[\"@ExpiredDate\"] ?? status[\"@ExpireDate\"],\n\t})),\n);\n\nexport const PricePerPaxDetailApiSchema = v.object({\n\t\"@PaxRef\": v.string(),\n\t\"@Price\": stringish,\n});\n\nexport const PaxPriceListApiSchema = v.object({\n\tPricePerPaxDetail: v.optional(oneOrMany(PricePerPaxDetailApiSchema)),\n});\n\nexport const ServiceTotalAmountDetailApiSchema = v.object({\n\t\"@CommissionCode\": v.optional(v.string()),\n\t\"@CommissionPercentage\": v.optional(stringish),\n\t\"@CommissionAmount\": v.optional(stringish),\n\t\"@PriceListCode\": v.optional(v.string()),\n\t\"@CostListCode\": v.optional(v.string()),\n\t\"@ServiceTotalPrice\": v.optional(stringish),\n\tPaxPriceList: v.optional(PaxPriceListApiSchema),\n});\n\nexport const SupplierInfoApiSchema = v.object({\n\t\"@Code\": v.optional(v.string()),\n\t\"@Name\": v.optional(v.string()),\n\t\"@Email\": v.optional(v.string()),\n\t\"@LanguageCode\": v.optional(v.string()),\n});\n\nexport const WebStatisticApiSchema = v.object({\n\t\"@Code\": v.optional(v.string()),\n\t\"@Description\": v.optional(v.string()),\n});\n\n/** Wire schema — accepts AVES dialect aliases, then normalizes */\nconst BookedServiceDetailWireSchema = v.object({\n\t\"@RPH\": v.string(),\n\t\"@ServiceCode\": v.optional(v.string()),\n\t\"@FromExternalProvider\": v.optional(stringish),\n\t\"@isFromExternalProvider\": v.optional(stringish),\n\tAvesServiceType: v.optional(AvesServiceTypeSchema),\n\tTOServiceType: v.optional(ToServiceTypeSchema),\n\tFirstDescription: v.optional(v.string()),\n\tSecondDescription: v.optional(v.string()),\n\tThirdDescription: v.optional(v.string()),\n\tFourthDescription: v.optional(v.string()),\n\tServiceStatus: v.optional(BookedServiceStatusSchema),\n\tStartDate: v.optional(v.string()),\n\tEndDate: v.optional(v.string()),\n\tQty: v.optional(stringish),\n\tPax: v.optional(stringish),\n\tPeriodType: v.optional(v.string()),\n\tPaxMultiplier: v.optional(v.string()),\n\tExternalProviderCode: v.optional(v.string()),\n\tWebStatisticCode: v.optional(v.string()),\n\tWebStatisticDescription: v.optional(v.string()),\n\tWebStatistic: v.optional(WebStatisticApiSchema),\n\tSupplierInfo: v.optional(SupplierInfoApiSchema),\n\tServiceTotalAmountDetail: v.optional(ServiceTotalAmountDetailApiSchema),\n});\n\n/** BookedServiceDetail — single fromExternalProvider after normalize */\nexport const BookedServiceDetailApiSchema = v.pipe(\n\tBookedServiceDetailWireSchema,\n\tv.transform((service) => ({\n\t\t\"@RPH\": service[\"@RPH\"],\n\t\t\"@ServiceCode\": service[\"@ServiceCode\"],\n\t\t\"@FromExternalProvider\":\n\t\t\tservice[\"@FromExternalProvider\"] ?? service[\"@isFromExternalProvider\"],\n\t\tAvesServiceType: service.AvesServiceType,\n\t\tTOServiceType: service.TOServiceType,\n\t\tFirstDescription: service.FirstDescription,\n\t\tSecondDescription: service.SecondDescription,\n\t\tThirdDescription: service.ThirdDescription,\n\t\tFourthDescription: service.FourthDescription,\n\t\tServiceStatus: service.ServiceStatus,\n\t\tStartDate: service.StartDate,\n\t\tEndDate: service.EndDate,\n\t\tQty: service.Qty,\n\t\tPax: service.Pax,\n\t\tPeriodType: service.PeriodType,\n\t\tPaxMultiplier: service.PaxMultiplier,\n\t\tExternalProviderCode: service.ExternalProviderCode,\n\t\tWebStatisticCode: service.WebStatisticCode,\n\t\tWebStatisticDescription: service.WebStatisticDescription,\n\t\tWebStatistic: service.WebStatistic,\n\t\tSupplierInfo: service.SupplierInfo,\n\t\tServiceTotalAmountDetail: service.ServiceTotalAmountDetail,\n\t})),\n);\n\nexport const BookedServiceListApiSchema = v.object({\n\tBookedServiceDetail: v.optional(oneOrMany(BookedServiceDetailApiSchema)),\n});\n\n/** TotalAmountDetail — attributes on BOOKEDFILE */\nexport const TotalAmountDetailApiSchema = v.object({\n\t\"@CurrencyCode\": v.optional(v.string()),\n\t\"@TotalAmountBeforeDiscount\": v.optional(stringish),\n\t\"@TotalAmountAfterDiscount\": v.optional(stringish),\n\t\"@TotalDiscount\": v.optional(stringish),\n\t\"@TotalAmountWithoutVat\": v.optional(stringish),\n\t\"@DueAmount\": v.optional(stringish),\n\t\"@PaiedAmount\": v.optional(stringish),\n\t\"@Balance\": v.optional(stringish),\n});\n\nexport const PassengerDetailApiSchema = v.object({\n\t\"@RPH\": v.string(),\n\t\"@RoomRPH\": v.optional(v.string()),\n\t\"@BillingHolder\": v.optional(stringish),\n\tName: v.optional(v.string()),\n\tCategoryCode: v.optional(v.string()),\n\tSex: v.optional(v.string()),\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\tMasterRecordCode: v.optional(v.string()),\n});\n\nexport const PassengerListApiSchema = v.object({\n\tPassengerDetail: v.optional(oneOrMany(PassengerDetailApiSchema)),\n});\n\nconst FinancialDeadlineDetailWireSchema = v.object({\n\t\"@ReschedulingCode\": v.optional(v.string()),\n\t\"@ExpireDate\": v.optional(v.string()),\n\t\"@TotalAmount\": v.optional(stringish),\n\tReschedulingCode: v.optional(v.string()),\n\tExpireDate: v.optional(v.string()),\n\tTotalAmount: v.optional(stringish),\n});\n\nexport const FinancialDeadlineDetailApiSchema = v.pipe(\n\tFinancialDeadlineDetailWireSchema,\n\tv.transform((deadline) => ({\n\t\t\"@ReschedulingCode\":\n\t\t\tdeadline[\"@ReschedulingCode\"] ?? deadline.ReschedulingCode,\n\t\t\"@ExpireDate\": deadline[\"@ExpireDate\"] ?? deadline.ExpireDate,\n\t\t\"@TotalAmount\": deadline[\"@TotalAmount\"] ?? deadline.TotalAmount,\n\t})),\n);\n\nexport const FinancialDeadlineListApiSchema = v.object({\n\tDeadlineDetail: v.optional(oneOrMany(FinancialDeadlineDetailApiSchema)),\n});\n\nexport const StoredDocumentDetailApiSchema = v.object({\n\tDocumentRefCode: v.optional(v.string()),\n\tDocumentType: v.optional(v.string()),\n\tDocumentName: v.optional(v.string()),\n\tArchiviationDescription: v.optional(v.string()),\n});\n\nexport const StoredDocumentsListApiSchema = v.object({\n\tStoredDocumentDetail: v.optional(oneOrMany(StoredDocumentDetailApiSchema)),\n});\n\nexport const PrintableDocumentDetailApiSchema = v.object({\n\tDocumentType: v.optional(v.string()),\n\tDocumentName: v.optional(v.string()),\n\tEnabled: v.optional(stringish),\n});\n\nexport const PrintableDocumentsListApiSchema = v.object({\n\tPrintableDocumentDetail: v.optional(\n\t\toneOrMany(PrintableDocumentDetailApiSchema),\n\t),\n});\n\nconst BookingFileDetailWireSchema = v.object({\n\t\"@BookingFileCode\": v.optional(v.string()),\n\tBookingFileCode: v.optional(v.string()),\n\tCustomerRecordCode: v.optional(v.string()),\n\tCustomerName: v.optional(v.string()),\n\tCustomerEmail: v.optional(v.string()),\n\tTravelAgencyName: v.optional(v.string()),\n\tTravelAgencyEmail: v.optional(v.string()),\n\tBookingFileStatus: v.optional(BookingFileStatusApiSchema),\n\tDescription: v.optional(v.string()),\n\tNation: v.optional(v.string()),\n\tDestination: v.optional(v.string()),\n\tCreationDate: v.optional(v.string()),\n\tFirstConfirmationDate: v.optional(v.string()),\n\tStartDate: v.optional(v.string()),\n\tEndDate: v.optional(v.string()),\n\tPackageCode: v.optional(v.string()),\n\tBookedServiceList: v.optional(BookedServiceListApiSchema),\n\tTotalAmountDetail: v.optional(TotalAmountDetailApiSchema),\n\tPaxNumber: v.optional(stringish),\n\tPassengerList: v.optional(PassengerListApiSchema),\n\tReference: v.optional(v.string()),\n\tClerkName: v.optional(v.string()),\n\tStoredDocumentsList: v.optional(StoredDocumentsListApiSchema),\n\tPrintableDocumentsList: v.optional(PrintableDocumentsListApiSchema),\n\tFinancialDeadlineList: v.optional(FinancialDeadlineListApiSchema),\n});\n\n/**\n * BookingFileDetail — Common Structures \"BOOKEDFILE\".\n * Accepts wire dialects, normalizes to a single PascalCase/@attr shape for camelCase mapping.\n */\nexport const BookingFileDetailApiSchema = v.pipe(\n\tBookingFileDetailWireSchema,\n\tv.transform((detail) => ({\n\t\t\"@BookingFileCode\": detail[\"@BookingFileCode\"] ?? detail.BookingFileCode,\n\t\tCustomerRecordCode: detail.CustomerRecordCode,\n\t\tCustomerName: detail.CustomerName,\n\t\tCustomerEmail: detail.CustomerEmail,\n\t\tTravelAgencyName: detail.TravelAgencyName,\n\t\tTravelAgencyEmail: detail.TravelAgencyEmail,\n\t\tBookingFileStatus: detail.BookingFileStatus,\n\t\tDescription: detail.Description,\n\t\tNation: detail.Nation,\n\t\tDestination: detail.Destination,\n\t\tCreationDate: detail.CreationDate,\n\t\tFirstConfirmationDate: detail.FirstConfirmationDate,\n\t\tStartDate: detail.StartDate,\n\t\tEndDate: detail.EndDate,\n\t\tPackageCode: detail.PackageCode,\n\t\tBookedServiceList: detail.BookedServiceList,\n\t\tTotalAmountDetail: detail.TotalAmountDetail,\n\t\tPaxNumber: detail.PaxNumber,\n\t\tPassengerList: detail.PassengerList,\n\t\tReference: detail.Reference,\n\t\tClerkName: detail.ClerkName,\n\t\tStoredDocumentsList: detail.StoredDocumentsList,\n\t\tPrintableDocumentsList: detail.PrintableDocumentsList,\n\t\tFinancialDeadlineList: detail.FinancialDeadlineList,\n\t})),\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 { createResponseSchema } from \"../utils/schema-transform.js\";\nimport {\n\tBookingFileDetailApiSchema,\n\tPrintableDocumentsListApiSchema,\n\tTotalAmountDetailApiSchema,\n} from \"./booking-response.js\";\nimport {\n\tAvesServiceTypeSchema,\n\tBookingFileStatusRequestSchema,\n\tBoolishSchema,\n\tcreateBookingApiSchema,\n\tToServiceTypeSchema,\n} from \"./booking-shared.js\";\nimport { RsStatusSchema } from \"./common.js\";\n\n// ---------------------------------------------------------------------------\n// BookingFileStatus\n// ---------------------------------------------------------------------------\n\nconst BookingFileStatusInputSchema = v.object({\n\tvalue: BookingFileStatusRequestSchema,\n\texpiredDate: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// StatisticCodes (AvesStatisticCodes)\n// ---------------------------------------------------------------------------\n\nexport const 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\nexport const BookingFileDocumentInputSchema = v.object({\n\tprintDoc: v.optional(BoolishSchema),\n\tsendDocViaEmail: v.optional(BoolishSchema),\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\nconst FinancialDeadlineListInputSchema = v.object({\n\tdeadlineDetail: v.optional(v.array(FinancialDeadlineDetailInputSchema)),\n});\n\nconst DeadlineListInputSchema = v.object({\n\tdeadlineDetail: v.optional(v.array(DeadlineDetailInputSchema)),\n});\n\nconst PaymentListInputSchema = v.object({\n\tpaymentDetail: v.optional(v.array(PaymentDetailInputSchema)),\n});\n\n// ---------------------------------------------------------------------------\n// SelectedPackageList / SelectedServiceList / ExtraQuoteServiceList\n// ---------------------------------------------------------------------------\n\nconst costPriceTypeSchema = v.union([\n\tv.literal(\"PAX_QTY_DAY\"),\n\tv.literal(\"PAX_QTY_NIGHT\"),\n\tv.literal(\"PAX_QTY_WEEK\"),\n\tv.literal(\"PAX_QTY\"),\n\tv.literal(\"PAX_DAY\"),\n\tv.literal(\"PAX_NIGHT\"),\n\tv.literal(\"PAX_WEEK\"),\n\tv.literal(\"PAX\"),\n\tv.literal(\"QTY_DAY\"),\n\tv.literal(\"QTY_NIGHT\"),\n\tv.literal(\"QTY_WEE\"),\n\tv.literal(\"QTY\"),\n\tv.literal(\"DAY\"),\n\tv.literal(\"NIGHT\"),\n\tv.literal(\"WEEK\"),\n\tv.literal(\"FORFAIT\"),\n]);\n\n/** ServiceFare — cost/price of a selected or booked service */\nexport const ServiceFareInputSchema = v.object({\n\tcurrencyCode: v.optional(v.string()),\n\texchangeRate: v.optional(v.string()),\n\tcost: v.optional(v.string()),\n\tcostTax: v.optional(v.string()),\n\tcostType: v.optional(costPriceTypeSchema),\n\tvatCostCurrencyCode: v.optional(v.string()),\n\tprice: v.optional(v.string()),\n\tpriceTax: v.optional(v.string()),\n\tpriceType: v.optional(costPriceTypeSchema),\n});\n\nexport const AvesServiceInfoInputSchema = v.object({\n\tpackageCode: v.optional(v.string()),\n\tpackageReference: v.optional(v.string()),\n\tsuballotmentCode: v.optional(v.string()),\n\tpriceListCode: v.optional(v.string()),\n\tcostListCode: v.optional(v.string()),\n\texternalFileCode: v.optional(v.string()),\n\texternalReference: v.optional(v.string()),\n\tserviceStatus: v.optional(v.string()),\n\tserviceStatisticCode: v.optional(v.string()),\n\tserviceFare: v.optional(ServiceFareInputSchema),\n});\n\nconst paxAssociatedSchema = v.object({ pax: v.string() });\n\nexport const SelectedServiceDetailInputSchema = v.object({\n\tsCode: v.string(),\n\tssCode: v.optional(v.string()),\n\tavesServiceType: AvesServiceTypeSchema,\n\ttoServiceType: v.optional(ToServiceTypeSchema),\n\tsubServiceDesc: v.optional(v.string()),\n\tstartDate: v.string(),\n\tendDate: v.string(),\n\tqty: v.string(),\n\tpax: v.string(),\n\tpaxAssociated: v.optional(v.array(paxAssociatedSchema)),\n\tavesSession: v.string(),\n\tavesServiceInfo: v.optional(AvesServiceInfoInputSchema),\n\tserviceFare: v.optional(ServiceFareInputSchema),\n\tbookedServiceRef: v.optional(v.string()),\n\tsupplierMasterCode: v.optional(v.string()),\n\tvoucherMasterCode: v.optional(v.string()),\n\thotelServiceInfo: v.optional(v.string()),\n\tcarRentalServiceInfo: v.optional(v.string()),\n\tflightServiceInfo: v.optional(v.string()),\n\tshipServiceInfo: v.optional(v.string()),\n\tticketServiceInfo: v.optional(v.string()),\n\tcommission: v.optional(v.string()),\n\tnoteList: v.optional(v.string()),\n\tvoucherInfo: v.optional(v.string()),\n\tfirstDescription: v.optional(v.string()),\n\tsecondDescription: v.optional(v.string()),\n});\n\nexport const SelectedPackageDetailInputSchema = v.object({\n\tpCode: v.string(),\n\tstartDate: v.string(),\n\tendDate: v.string(),\n\tgetServicesFromPackage: v.optional(BoolishSchema),\n});\n\nconst SelectedPackageListInputSchema = v.object({\n\tselectedPackageDetail: v.optional(v.array(SelectedPackageDetailInputSchema)),\n});\n\nconst SelectedServiceListInputSchema = v.object({\n\tselectedServiceDetail: SelectedServiceDetailInputSchema,\n});\n\nconst ExtraQuoteServiceListInputSchema = v.object({\n\textraQuoteServiceDetail: v.optional(\n\t\tv.array(SelectedServiceDetailInputSchema),\n\t),\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\nconst NoteListInputSchema = v.object({\n\tnoteDetail: v.optional(v.array(NoteDetailInputSchema)),\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 passengerDetailBase = {\n\trph: v.string(),\n\troomRph: v.optional(v.string()),\n\tbillingHolder: v.optional(BoolishSchema),\n\tmasterRecordCode: v.optional(v.string()),\n\tname: v.string(),\n\tsex: 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/** Passenger on CreateBookingFile — categoryCode required per AVES */\nexport const PassengerDetailCreateInputSchema = v.object({\n\t...passengerDetailBase,\n\tcategoryCode: passengerCategoryCodeSchema,\n});\n\n/** Passenger on ModBookingFileHeader / ModServices — categoryCode optional */\nexport const PassengerDetailPatchInputSchema = v.object({\n\t...passengerDetailBase,\n\tcategoryCode: v.optional(passengerCategoryCodeSchema),\n});\n\nconst PassengerListInputSchema = v.object({\n\tpassengerDetail: PassengerDetailCreateInputSchema,\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\nexport const 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(FinancialDeadlineListInputSchema),\n\tdeadlineList: v.optional(DeadlineListInputSchema),\n\tpaymentList: v.optional(PaymentListInputSchema),\n\tselectedPackageList: v.optional(SelectedPackageListInputSchema),\n\tselectedServiceList: v.array(SelectedServiceListInputSchema),\n\textraQuotaRefCode: v.optional(v.string()),\n\textraQuoteServiceList: v.optional(ExtraQuoteServiceListInputSchema),\n\tgetExtraQuoteFromSystem: v.optional(BoolishSchema),\n\tpassengerList: v.array(PassengerListInputSchema),\n\tnoteList: v.optional(NoteListInputSchema),\n\tbookingFinancialInfo: v.optional(BookingFinancialInfoInputSchema),\n\tbookingFileCode: v.optional(v.string()),\n\tgroupingPaxPolicy: v.optional(groupingPaxPolicySchema),\n\tgroupBookingFile: v.optional(BoolishSchema),\n\ttypeDownloadFile: v.optional(typeDownloadFileSchema),\n\tsetBookingFileCodeFromStartDate: v.optional(BoolishSchema),\n});\n\n/**\n * Booking file schema for API requests (transforms to PascalCase for BookFileRQ).\n * Uses the shared Create+Mod booking transform.\n */\nexport const BookingFileApiSchema = createBookingApiSchema(BookingFileSchema);\n\n/**\n * Shared booking response (Create / ModServices / SetStatus / SetStatusService).\n * Extra cancel fields are optional and only present on some ops.\n */\nexport const BookingFileResponseSchema = createResponseSchema(\n\tv.object({\n\t\tRsStatus: RsStatusSchema,\n\t\tBookingFileDetail: v.optional(BookingFileDetailApiSchema),\n\t\tPrintableDocumentsList: v.optional(PrintableDocumentsListApiSchema),\n\t\tTotalAmountDetailAfterCancellation: v.optional(TotalAmountDetailApiSchema),\n\t\tBase64DocContent: v.optional(v.string()),\n\t}),\n);\n","import * as v from \"valibot\";\nimport {\n\tcreateApiSchema,\n\tcreateResponseSchema,\n} from \"../utils/schema-transform.js\";\nimport {\n\tBookingFileDocumentInputSchema,\n\tBookingFileResponseSchema,\n\tBookingFinancialInfoInputSchema,\n\tPassengerDetailPatchInputSchema,\n\tSelectedPackageDetailInputSchema,\n\tSelectedServiceDetailInputSchema,\n\tStatisticCodesInputSchema,\n} from \"./booking-file.js\";\nimport {\n\tBoolishSchema,\n\tcreateBookingApiSchema,\n\tSetFileStatusValueSchema,\n} from \"./booking-shared.js\";\nimport { RsStatusSchema } from \"./common.js\";\n\n/** Response with RsStatus only (Cancel / ModHeader) */\nexport const BookingStatusOnlyResponseSchema = createResponseSchema(\n\tv.object({ RsStatus: RsStatusSchema }),\n);\n\n/**\n * Shared with CreateBookingFile — typed BookingFileDetail (+ optional cancel extras).\n * Create / ModServices / SetStatus / SetStatusService all use this shape.\n */\nexport const BookingFileDetailResponseSchema = BookingFileResponseSchema;\n\n// ---------------------------------------------------------------------------\n// ModBookingFileServices — ModFileServicesRQ\n// ---------------------------------------------------------------------------\n\nconst ModDeadlineDetailInputSchema = v.object({\n\treschedulingCode: v.string(),\n\tdescription: v.optional(v.string()),\n\texpireDate: v.optional(v.string()),\n});\n\nexport const CancellableBookedServiceDetailInputSchema = v.object({\n\tcancelOperationType: v.union([v.literal(\"NULLIFY\"), v.literal(\"DELETE\")]),\n\tserviceRefType: v.union([v.literal(\"RPH\"), v.literal(\"FILE\")]),\n\tserviceRefValue: v.string(),\n});\n\n/**\n * ModFileServicesRQ body (camelCase).\n * Add/replace services, assign package, and/or cancel cost lines.\n *\n * Note: SelectedServiceList shape differs from CreateBookingFile —\n * Create uses `{ selectedServiceDetail: one }[]`;\n * Mod uses `{ selectedServiceDetail: one[] }` (AVES wire).\n */\nexport const ModFileServicesSchema = v.object({\n\tcustomerRecordCode: v.string(),\n\tbookingFileCode: v.string(),\n\tcurrencyCode: v.optional(v.string()),\n\tdeadlineList: v.optional(\n\t\tv.object({\n\t\t\tdeadlineDetail: v.optional(v.array(ModDeadlineDetailInputSchema)),\n\t\t}),\n\t),\n\tselectedPackageDetail: v.optional(SelectedPackageDetailInputSchema),\n\tselectedServiceList: v.object({\n\t\tselectedServiceDetail: v.pipe(\n\t\t\tv.array(SelectedServiceDetailInputSchema),\n\t\t\tv.minLength(1),\n\t\t),\n\t}),\n\tcancellableBookedServiceList: v.optional(\n\t\tv.object({\n\t\t\tcancellableBookedServiceDetail: v.optional(\n\t\t\t\tv.array(CancellableBookedServiceDetailInputSchema),\n\t\t\t),\n\t\t}),\n\t),\n\tpassengerList: v.optional(\n\t\tv.object({\n\t\t\tpassengerDetail: v.optional(v.array(PassengerDetailPatchInputSchema)),\n\t\t}),\n\t),\n});\n\nexport const ModFileServicesApiSchema = createBookingApiSchema(\n\tModFileServicesSchema,\n);\n\n// ---------------------------------------------------------------------------\n// ModBookingFileHeader — ModFileHeaderRQ\n// ---------------------------------------------------------------------------\n\n/**\n * ModFileHeaderRQ body (camelCase).\n * Modify header only — no package/costs.\n */\nexport const ModFileHeaderSchema = v.object({\n\tbookingFileCode: v.string(),\n\tbookingFileStartDate: v.string(),\n\tcustomerRecordCode: v.string(),\n\tnewCustomerRecordCode: v.optional(v.string()),\n\tbookingFileReferenceName: v.optional(v.string()),\n\ttravelAgentCode: v.optional(v.string()),\n\tbillingReferenceCode: v.optional(v.string()),\n\tpaymentReferenceCode: v.optional(v.string()),\n\tcupCode: v.optional(v.string()),\n\tcigCode: v.optional(v.string()),\n\tcustomerPromoterCode: v.optional(v.string()),\n\tbookingNote: v.optional(v.string()),\n\tpassengerList: v.optional(\n\t\tv.object({\n\t\t\tpassengerDetail: v.optional(v.array(PassengerDetailPatchInputSchema)),\n\t\t}),\n\t),\n\tstatisticCodes: v.optional(StatisticCodesInputSchema),\n\tbookingFinancialInfo: v.optional(BookingFinancialInfoInputSchema),\n\tfinancialDeadlineList: v.optional(\n\t\tv.object({\n\t\t\tdeadlineDetail: v.optional(\n\t\t\t\tv.array(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\treschedulingCode: v.string(),\n\t\t\t\t\t\texpireDate: v.string(),\n\t\t\t\t\t\ttotalAmount: v.string(),\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t),\n\t\t}),\n\t),\n});\n\nexport const ModFileHeaderApiSchema = createApiSchema(ModFileHeaderSchema);\n\n// ---------------------------------------------------------------------------\n// CancelBookingFile — CancelFileRQ\n// ---------------------------------------------------------------------------\n\nexport const CancelFileSchema = v.object({\n\tbookingFileCode: v.string(),\n\tcustomerRecordCode: v.string(),\n});\n\nexport const CancelFileApiSchema = createApiSchema(CancelFileSchema);\n\n// ---------------------------------------------------------------------------\n// SetBookingFileStatus — SetStatusRQ\n// ---------------------------------------------------------------------------\n\nconst optionedExpirePolicySchema = v.union([\n\tv.literal(\"NOT_SET\"),\n\tv.literal(\"CONSIDER_HOLIDAY\"),\n\tv.literal(\"CONSIDER_HOLIDAY_AND_SATURDAY\"),\n]);\n\n/**\n * SetStatusRQ body (camelCase).\n * Change booking file status (incl. CANCELED / NULLIFIED).\n */\nexport const SetFileStatusSchema = v.object({\n\tcustomerRecordCode: v.string(),\n\tbookingFileCode: v.string(),\n\tfileStatus: v.object({\n\t\tvalue: SetFileStatusValueSchema,\n\t\texpiredDate: v.optional(v.string()),\n\t\toptionedFileExpireDatePolicy: v.optional(optionedExpirePolicySchema),\n\t}),\n\tbackOfficeRequest: v.optional(BoolishSchema),\n\tbookingFileDocument: v.optional(BookingFileDocumentInputSchema),\n\tpenalty: v.optional(\n\t\tv.object({\n\t\t\tapply: v.optional(BoolishSchema),\n\t\t\tspecificCode: v.optional(v.string()),\n\t\t}),\n\t),\n\tsimulateCancelAndGetPenaltyAmount: v.optional(BoolishSchema),\n});\n\nexport const SetFileStatusApiSchema = createApiSchema(SetFileStatusSchema);\n\n// ---------------------------------------------------------------------------\n// SetBookingFileServiceStatus — SetStatusServiceRQ\n// ---------------------------------------------------------------------------\n\nexport const SetFileServiceStatusSchema = v.object({\n\tcustomerRecordCode: v.string(),\n\tbookingFileCode: v.string(),\n\tbookingServiceRef: v.string(),\n\tbookingFileServiceStatus: v.literal(\"NULLIFIED\"),\n\tbookingFileServiceStatusDate: v.optional(v.string()),\n});\n\nexport const SetFileServiceStatusApiSchema = createApiSchema(\n\tSetFileServiceStatusSchema,\n);\n\n// ---------------------------------------------------------------------------\n// InsertFilePaymentList — FilePaymentListRQ\n// ---------------------------------------------------------------------------\n\nconst filePaymentTypeSchema = 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 filePaymentOperationTypeSchema = v.union([\n\tv.literal(\"AbsoluteAmountsInsertion\"),\n\tv.literal(\"FinalAmountToAchieve\"),\n\tv.literal(\"FinalAmountToAchieveWithoutControls\"),\n]);\n\nexport const FilePaymentDetailInputSchema = v.object({\n\tpaymentDate: v.string(),\n\tpaymentNote: v.optional(v.string()),\n\tpayerMasterCode: v.optional(v.string()),\n\tpayerName: v.optional(v.string()),\n\tamount: v.string(),\n\tpaymentType: filePaymentTypeSchema,\n});\n\n/**\n * FilePaymentListRQ body (camelCase).\n * Register one or more client payments on an existing booking file.\n * Requires bookingFileCode or bookingFileRefCode.\n */\nexport const FilePaymentListSchema = v.pipe(\n\tv.object({\n\t\tbookingFileCode: v.optional(v.string()),\n\t\tbookingFileRefCode: v.optional(v.string()),\n\t\tpaymentUser: v.optional(v.string()),\n\t\tenableMultiplePayments: BoolishSchema,\n\t\toperationType: filePaymentOperationTypeSchema,\n\t\tfilePaymentList: v.object({\n\t\t\tfilePaymentDetail: v.pipe(\n\t\t\t\tv.array(FilePaymentDetailInputSchema),\n\t\t\t\tv.minLength(1),\n\t\t\t),\n\t\t}),\n\t}),\n\tv.check(\n\t\t(input) => Boolean(input.bookingFileCode || input.bookingFileRefCode),\n\t\t\"bookingFileCode or bookingFileRefCode is required\",\n\t),\n);\n\nexport const FilePaymentListApiSchema = createApiSchema(FilePaymentListSchema);\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(\n\tv.array(DynamicFieldsInputSchema),\n);\n\n/**\n * Dynamic fields validation schema (already transformed PascalCase with @ attributes)\n */\nexport const DynamicFieldsApiValidationSchema = createApiValidationSchema(\n\tDynamicFieldsInputSchema,\n);\n\nconst CarrierTypeSchema = v.union([\n\tv.literal(\"NOT_SET\"),\n\tv.literal(\"FLIGHT\"),\n\tv.literal(\"SHIP\"),\n\tv.literal(\"TRAIN\"),\n\tv.literal(\"RENTCAR\"),\n\tv.literal(\"BUS\"),\n\tv.literal(\"DP_HOTEL\"),\n\tv.literal(\"TO_HOTEL\"),\n\tv.literal(\"TO_TOUR\"),\n\tv.literal(\"TO_HOTEL_AND_TOUR\"),\n\tv.literal(\"DP_AUTO\"),\n\tv.literal(\"DP_GDS_NAVI\"),\n\tv.literal(\"DP_GDS_VOLI\"),\n\tv.literal(\"TOUR_OPERATOR\"),\n\tv.literal(\"TICKETING_EV\"),\n\tv.literal(\"OTHER\"),\n]);\n\n/*\n * Supplier reference master records schema for API requests (transforms to PascalCase)\n * @property supplierRefCode - Supplier reference code\n * @property companyMainBusinessType - Company main business type\n * @property carrierType - Carrier type\n */\nconst SupplierRefMasterRecordsInputSchema = v.object({\n\tsupplierRefCode: v.optional(v.string()),\n\tcompanyMainBusinessType: v.optional(v.string()),\n\tcarrierType: v.optional(CarrierTypeSchema),\n});\n\n/**\n * SupplierRefMasterRecords schema for API requests (transforms to PascalCase)\n */\nexport const SupplierRefMasterRecordsSchema = createApiSchema(\n\tSupplierRefMasterRecordsInputSchema,\n);\n\n/**\n * SupplierRefMasterRecords validation schema (already transformed PascalCase)\n */\nexport const SupplierRefMasterRecordsApiValidationSchema =\n\tcreateApiValidationSchema(SupplierRefMasterRecordsInputSchema);\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\tsupplierRefMasterRecords: v.optional(SupplierRefMasterRecordsInputSchema),\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(\n\t\tSupplierRefMasterRecordsApiValidationSchema,\n\t),\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\tMOD_FILE_SERVICES_REQUEST: \"ModFileServicesRQ\",\n\tMOD_FILE_HEADER_REQUEST: \"ModFileHeaderRQ\",\n\tMOD_FILE_HEADER_RESPONSE: \"ModFileHeaderRS\",\n\tCANCEL_FILE_REQUEST: \"CancelFileRQ\",\n\tCANCEL_FILE_RESPONSE: \"CancelFileRS\",\n\tSET_STATUS_REQUEST: \"SetStatusRQ\",\n\tSET_STATUS_RESPONSE: \"SetStatusRS\",\n\tSET_STATUS_SERVICE_REQUEST: \"SetStatusServiceRQ\",\n\tSET_STATUS_SERVICE_RESPONSE: \"SetStatusServiceRS\",\n\tFILE_PAYMENT_LIST_REQUEST: \"FilePaymentListRQ\",\n\tFILE_PAYMENT_LIST_RESPONSE: \"FilePaymentListRS\",\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\ttype BaseIssue,\n\ttype BaseSchema,\n\tparse,\n\tsafeParse,\n\tValiError,\n} from \"valibot\";\nimport {\n\tAvesError,\n\tapiError,\n\tbuildDetails,\n\tisAbortError,\n\tunknownError,\n\tvalidationError,\n} from \"./error.js\";\nimport {\n\tBookingFileApiSchema,\n\tBookingFileResponseSchema,\n} from \"./schemas/booking-file.js\";\nimport {\n\tBookingFileDetailResponseSchema,\n\tBookingStatusOnlyResponseSchema,\n\tCancelFileApiSchema,\n\tFilePaymentListApiSchema,\n\tModFileHeaderApiSchema,\n\tModFileServicesApiSchema,\n\tSetFileServiceStatusApiSchema,\n\tSetFileStatusApiSchema,\n} from \"./schemas/booking-ops.js\";\nimport { MasterRecordDetailApiSchema } from \"./schemas/master-record.js\";\nimport {\n\tSearchMasterRecordRequestSchema,\n\tSearchMasterRecordResponseSchema,\n} from \"./schemas/search.js\";\nimport {\n\tManageMasterRecordRequestSchema,\n\tManageMasterRecordResponseSchema,\n} from \"./schemas/upsert.js\";\nimport type {\n\tAvesClientOptions,\n\tBookingFileDetailRS,\n\tBookingFileRQ,\n\tBookingFileRS,\n\tBookingStatusOnlyRS,\n\tCancelFileRQ,\n\tFilePaymentListRQ,\n\tManageMasterRecordRS,\n\tMasterRecordDetail,\n\tModFileHeaderRQ,\n\tModFileServicesRQ,\n\tRsStatus,\n\tSearchMasterRecord,\n\tSearchMasterRecordRS,\n\tSetFileServiceStatusRQ,\n\tSetFileStatusRQ,\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 {\n\tcreateRootElement,\n\tXML_ROOT_ELEMENTS,\n\ttype XMLRootElementValues,\n} from \"./xml-root.js\";\n\n/**\n * AVES XML REST API client\n */\nexport class AvesClient {\n\t/**\n\t * @param options - Client configuration options\n\t * @param options.baseURL - Base URL of the AVES API\n\t * @param options.hostID - 6-digit identification code\n\t * @param options.xtoken - Authentication token\n\t * @param options.languageCode - Optional 2-digit language code\n\t * @param options.timeoutMs - Optional request timeout in milliseconds\n\t */\n\tconstructor(private readonly options: AvesClientOptions) {}\n\n\tprivate createRqHeader() {\n\t\treturn {\n\t\t\t\"@HostID\": this.options.hostID,\n\t\t\t\"@Xtoken\": this.options.xtoken,\n\t\t\t\"@Interface\": \"WEB\" as const,\n\t\t\t\"@UserName\": \"WEB\" as const,\n\t\t\t...(this.options.languageCode && {\n\t\t\t\t\"@LanguageCode\": this.options.languageCode,\n\t\t\t}),\n\t\t};\n\t}\n\n\tprivate createUrl(endpoint: string) {\n\t\treturn parseUrl(this.options.baseURL, endpoint);\n\t}\n\n\tprivate get endpoints() {\n\t\treturn {\n\t\t\tsearch: \"/interop/masterRecords/v2/rest/Search\",\n\t\t\tupsert: \"/interop/masterRecords/v2/rest/InsertOrUpdate\",\n\t\t\tcreateBooking: \"/interop/booking/v2/rest/CreateBookingFile\",\n\t\t\tmodBookingServices: \"/interop/booking/v2/rest/ModBookingFileServices\",\n\t\t\tmodBookingHeader: \"/interop/booking/v2/rest/ModBookingFileHeader\",\n\t\t\tcancelBooking: \"/interop/booking/v2/rest/CancelBookingFile\",\n\t\t\tsetBookingStatus: \"/interop/booking/v2/rest/SetBookingFileStatus\",\n\t\t\tsetBookingServiceStatus:\n\t\t\t\t\"/interop/booking/v2/rest/SetBookingFileServiceStatus\",\n\t\t\tinsertFilePaymentList: \"/interop/booking/v2/rest/InsertFilePaymentList\",\n\t\t} as const;\n\t}\n\n\tprivate handleApiStatus<T extends { rsStatus: RsStatus }>(\n\t\toutput: T,\n\t): Result<T, AvesError> {\n\t\tconst rsStatus = output.rsStatus;\n\t\tconst status = rsStatus?.status;\n\n\t\tif (status !== \"OK\") {\n\t\t\treturn err(\n\t\t\t\tapiError(\n\t\t\t\t\trsStatus.errorDescription as string,\n\t\t\t\t\tstatus,\n\t\t\t\t\trsStatus.errorCode,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\n\t\treturn ok(output);\n\t}\n\n\tprivate toAvesError(error: unknown, defaultMessage: string): AvesError {\n\t\tif (error instanceof AvesError) {\n\t\t\treturn error;\n\t\t}\n\t\tif (error instanceof ValiError) {\n\t\t\tconst details = buildDetails(error.issues);\n\t\t\treturn validationError(`Validation error: ${details}`);\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\treturn unknownError(error.message);\n\t\t}\n\t\treturn unknownError(defaultMessage);\n\t}\n\n\tprivate async request<T extends { rsStatus: RsStatus }>(\n\t\tendpoint: string,\n\t\trequestBody: Record<string, unknown>,\n\t\tresponseRootKey: string,\n\t\tresponseSchema: BaseSchema<unknown, T, BaseIssue<unknown>>,\n\t): Promise<Result<T, AvesError>> {\n\t\tconst { signal, clear } = createTimeoutSignal(\n\t\t\tthis.options.timeoutMs ?? 30_000,\n\t\t);\n\n\t\ttry {\n\t\t\tconst url = this.createUrl(endpoint);\n\t\t\tconst xmlBody = jsonToXml(requestBody);\n\n\t\t\tconst response = await r(url, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/xml\",\n\t\t\t\t},\n\t\t\t\tbody: xmlBody,\n\t\t\t\tsignal,\n\t\t\t});\n\n\t\t\tconst responseText = await response.body.text();\n\n\t\t\tif (!isOk(response.statusCode)) {\n\t\t\t\treturn err(apiError(responseText, \"ERROR\", response.statusCode));\n\t\t\t}\n\n\t\t\tconst jsonResponse = xmlToJson(responseText);\n\t\t\tconst rootElement = jsonResponse[responseRootKey];\n\n\t\t\tif (!rootElement) {\n\t\t\t\treturn err(\n\t\t\t\t\tvalidationError(\n\t\t\t\t\t\t`Invalid response structure: missing root element '${responseRootKey}'`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst parseResult = safeParse(responseSchema, rootElement);\n\t\t\tif (!parseResult.success) {\n\t\t\t\tconst details = buildDetails(parseResult.issues);\n\t\t\t\treturn err(validationError(`Invalid response format: ${details}`));\n\t\t\t}\n\t\t\treturn this.handleApiStatus(parseResult.output);\n\t\t} catch (error) {\n\t\t\tif (isAbortError(error)) {\n\t\t\t\treturn err(apiError(\"Request timed out\", \"TIMEOUT\"));\n\t\t\t}\n\t\t\treturn err(this.toAvesError(error, \"Unknown error occurred\"));\n\t\t} finally {\n\t\t\tclear?.();\n\t\t}\n\t}\n\n\t/**\n\t * Shared booking/master request path: validate → wrap RqHeader → POST → parse response.\n\t */\n\tprivate async invokeOp<\n\t\tTIn,\n\t\tTApiBody extends Record<string, unknown>,\n\t\tTOut extends { rsStatus: RsStatus },\n\t>(opts: {\n\t\top: string;\n\t\tparams: TIn;\n\t\tapiSchema: BaseSchema<TIn, TApiBody, BaseIssue<unknown>>;\n\t\tendpoint: string;\n\t\trequestRoot: XMLRootElementValues;\n\t\tresponseRoot: string;\n\t\tresponseSchema: BaseSchema<unknown, TOut, BaseIssue<unknown>>;\n\t}): Promise<Result<TOut, AvesError>> {\n\t\ttry {\n\t\t\tconst apiBody = parse(opts.apiSchema, opts.params);\n\t\t\treturn this.request(\n\t\t\t\topts.endpoint,\n\t\t\t\tcreateRootElement(opts.requestRoot, {\n\t\t\t\t\tRqHeader: this.createRqHeader(),\n\t\t\t\t\t...apiBody,\n\t\t\t\t}),\n\t\t\t\topts.responseRoot,\n\t\t\t\topts.responseSchema,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\treturn err(\n\t\t\t\tthis.toAvesError(error, `Validation error occurred during ${opts.op}`),\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Search for master records\n\t * @param params - Search master record request body in camelCase ({@link SearchMasterRecord})\n\t * @returns Result containing list of matching master records in camelCase or error\n\t */\n\tasync search(\n\t\tparams: SearchMasterRecord,\n\t): Promise<Result<SearchMasterRecordRS, AvesError>> {\n\t\ttry {\n\t\t\tconst requestData = parse(SearchMasterRecordRequestSchema, {\n\t\t\t\tRqHeader: this.createRqHeader(),\n\t\t\t\tSearchMasterRecord: params,\n\t\t\t});\n\n\t\t\tconst requestBody = createRootElement(\n\t\t\t\tXML_ROOT_ELEMENTS.SEARCH_REQUEST,\n\t\t\t\trequestData,\n\t\t\t);\n\n\t\t\treturn this.request<SearchMasterRecordRS>(\n\t\t\t\tthis.endpoints.search,\n\t\t\t\trequestBody,\n\t\t\t\tXML_ROOT_ELEMENTS.SEARCH_RESPONSE,\n\t\t\t\tSearchMasterRecordResponseSchema,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\treturn err(\n\t\t\t\tthis.toAvesError(error, \"Validation error occurred during search\"),\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Insert or update a master record\n\t * @param record - Master record data in camelCase ({@link MasterRecordDetail})\n\t * @returns Result containing response with customer record code in camelCase or error\n\t */\n\tasync upsertRecord(\n\t\trecord: MasterRecordDetail,\n\t): Promise<Result<ManageMasterRecordRS, AvesError>> {\n\t\ttry {\n\t\t\tconst apiRecord = parse(MasterRecordDetailApiSchema, record);\n\n\t\t\tconst requestData = parse(ManageMasterRecordRequestSchema, {\n\t\t\t\tRqHeader: this.createRqHeader(),\n\t\t\t\tMasterRecordDetail: apiRecord,\n\t\t\t});\n\n\t\t\tconst requestBody = createRootElement(\n\t\t\t\tXML_ROOT_ELEMENTS.UPSERT_REQUEST,\n\t\t\t\trequestData,\n\t\t\t);\n\n\t\t\treturn this.request<ManageMasterRecordRS>(\n\t\t\t\tthis.endpoints.upsert,\n\t\t\t\trequestBody,\n\t\t\t\tXML_ROOT_ELEMENTS.UPSERT_RESPONSE,\n\t\t\t\tManageMasterRecordResponseSchema,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\treturn err(\n\t\t\t\tthis.toAvesError(error, \"Validation error occurred during upsert\"),\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Create a booking file (CreateBookingFile).\n\t * @param params - Booking file request body in camelCase ({@link BookingFileRQ})\n\t */\n\tasync createBooking(\n\t\tparams: BookingFileRQ,\n\t): Promise<Result<BookingFileRS, AvesError>> {\n\t\treturn this.invokeOp({\n\t\t\top: \"createBooking\",\n\t\t\tparams,\n\t\t\tapiSchema: BookingFileApiSchema,\n\t\t\tendpoint: this.endpoints.createBooking,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.BOOKING_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.BOOKING_RESPONSE,\n\t\t\tresponseSchema: BookingFileResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Modify booked services: add/replace lines, assign package, delete/nullify cost items.\n\t * @param params - ModFileServicesRQ body in camelCase ({@link ModFileServicesRQ})\n\t */\n\tasync modBookingServices(\n\t\tparams: ModFileServicesRQ,\n\t): Promise<Result<BookingFileDetailRS, AvesError>> {\n\t\treturn this.invokeOp({\n\t\t\top: \"modBookingServices\",\n\t\t\tparams,\n\t\t\tapiSchema: ModFileServicesApiSchema,\n\t\t\tendpoint: this.endpoints.modBookingServices,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.MOD_FILE_SERVICES_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.BOOKING_RESPONSE,\n\t\t\tresponseSchema: BookingFileDetailResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Modify booking file header (customer, passengers, notes, financial info).\n\t * Does not change package or cost lines.\n\t * @param params - ModFileHeaderRQ body in camelCase ({@link ModFileHeaderRQ})\n\t */\n\tasync modBookingHeader(\n\t\tparams: ModFileHeaderRQ,\n\t): Promise<Result<BookingStatusOnlyRS, AvesError>> {\n\t\treturn this.invokeOp({\n\t\t\top: \"modBookingHeader\",\n\t\t\tparams,\n\t\t\tapiSchema: ModFileHeaderApiSchema,\n\t\t\tendpoint: this.endpoints.modBookingHeader,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.MOD_FILE_HEADER_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.MOD_FILE_HEADER_RESPONSE,\n\t\t\tresponseSchema: BookingStatusOnlyResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Delete a booking file (CancelBookingFile).\n\t * @param params - CancelFileRQ body in camelCase ({@link CancelFileRQ})\n\t */\n\tasync cancelBooking(\n\t\tparams: CancelFileRQ,\n\t): Promise<Result<BookingStatusOnlyRS, AvesError>> {\n\t\treturn this.invokeOp({\n\t\t\top: \"cancelBooking\",\n\t\t\tparams,\n\t\t\tapiSchema: CancelFileApiSchema,\n\t\t\tendpoint: this.endpoints.cancelBooking,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.CANCEL_FILE_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.CANCEL_FILE_RESPONSE,\n\t\t\tresponseSchema: BookingStatusOnlyResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Change booking file status (incl. CANCELED / NULLIFIED).\n\t * @param params - SetStatusRQ body in camelCase ({@link SetFileStatusRQ})\n\t */\n\tasync setBookingStatus(\n\t\tparams: SetFileStatusRQ,\n\t): Promise<Result<BookingFileDetailRS, AvesError>> {\n\t\treturn this.invokeOp({\n\t\t\top: \"setBookingStatus\",\n\t\t\tparams,\n\t\t\tapiSchema: SetFileStatusApiSchema,\n\t\t\tendpoint: this.endpoints.setBookingStatus,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.SET_STATUS_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.SET_STATUS_RESPONSE,\n\t\t\tresponseSchema: BookingFileDetailResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Nullify a single booked service line (SetBookingFileServiceStatus).\n\t * @param params - SetStatusServiceRQ body in camelCase ({@link SetFileServiceStatusRQ})\n\t */\n\tasync setBookingServiceStatus(\n\t\tparams: SetFileServiceStatusRQ,\n\t): Promise<Result<BookingFileDetailRS, AvesError>> {\n\t\treturn this.invokeOp({\n\t\t\top: \"setBookingServiceStatus\",\n\t\t\tparams,\n\t\t\tapiSchema: SetFileServiceStatusApiSchema,\n\t\t\tendpoint: this.endpoints.setBookingServiceStatus,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.SET_STATUS_SERVICE_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.SET_STATUS_SERVICE_RESPONSE,\n\t\t\tresponseSchema: BookingFileDetailResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Register one or more payments on a booking file (InsertFilePaymentList).\n\t * @param params - FilePaymentListRQ body in camelCase ({@link FilePaymentListRQ})\n\t */\n\tasync insertFilePaymentList(\n\t\tparams: FilePaymentListRQ,\n\t): Promise<Result<BookingStatusOnlyRS, AvesError>> {\n\t\treturn this.invokeOp({\n\t\t\top: \"insertFilePaymentList\",\n\t\t\tparams,\n\t\t\tapiSchema: FilePaymentListApiSchema,\n\t\t\tendpoint: this.endpoints.insertFilePaymentList,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.FILE_PAYMENT_LIST_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.FILE_PAYMENT_LIST_RESPONSE,\n\t\t\tresponseSchema: BookingStatusOnlyResponseSchema,\n\t\t});\n\t}\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/booking-shared.ts","../src/schemas/booking-response.ts","../src/schemas/common.ts","../src/schemas/booking-file.ts","../src/schemas/booking-ops.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 OverrideCamelKey<K extends string> = K extends \"RPH\"\n\t? \"rph\"\n\t: K extends \"TOServiceType\"\n\t\t? \"toServiceType\"\n\t\t: ToCamelCase<K>;\n\ntype CamelizeKey<K extends string> = K extends `@${infer Rest}`\n\t? OverrideCamelKey<Rest>\n\t: OverrideCamelKey<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\tfilePaymentDetail: [\n\t\t\"paymentDate\",\n\t\t\"paymentNote\",\n\t\t\"payerMasterCode\",\n\t\t\"payerName\",\n\t\t\"amount\",\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\tserviceFare: [\n\t\t\"currencyCode\",\n\t\t\"exchangeRate\",\n\t\t\"cost\",\n\t\t\"costTax\",\n\t\t\"costType\",\n\t\t\"vatCostCurrencyCode\",\n\t\t\"price\",\n\t\t\"priceTax\",\n\t\t\"priceType\",\n\t],\n\tcancellableBookedServiceDetail: [\n\t\t\"cancelOperationType\",\n\t\t\"serviceRefType\",\n\t\t\"serviceRefValue\",\n\t],\n\tfileStatus: [\"value\", \"expiredDate\", \"optionedFileExpireDatePolicy\"],\n\tpenalty: [\"apply\", \"specificCode\"],\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\t// Supplier reference master records\n\tsupplierRefMasterRecords: [\n\t\t\"supplierRefCode\",\n\t\t\"companyMainBusinessType\",\n\t\t\"carrierType\",\n\t],\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\texcludeAttributeFromCamelToPascal?: string[];\n};\n\nconst formatAttributeField = (\n\tfield: string,\n\toriginalField: string,\n\tisToExclude = false,\n) => {\n\t// Some attributes in AVES XML are explicitly camel-cased in the spec\n\t// (e.g. @sCode, @ssCode), so we always preserve their original field name.\n\tconst mustPreserveCamelCase =\n\t\toriginalField === \"sCode\" ||\n\t\toriginalField === \"ssCode\" ||\n\t\toriginalField === \"pCode\";\n\n\tif (isToExclude || mustPreserveCamelCase) {\n\t\treturn `@${originalField}`;\n\t}\n\n\treturn `@${field}`;\n};\n\n// Keys that need a custom PascalCase/XML tag name (by source camelCase key)\nconst pascalKeyOverrides = new Map<string, string>([\n\t[\"toServiceType\", \"TOServiceType\"],\n\t[\"rph\", \"RPH\"],\n]);\n\n// Reverse of pascalKeyOverrides for response camelCase mapping\nconst camelKeyOverrides = new Map<string, string>([\n\t[\"TOServiceType\", \"toServiceType\"],\n\t[\"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\tinput: T,\n\toptions?: CamelToPascalOptions,\n): Pascalize<T> {\n\tif (!input || typeof input !== \"object\" || 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 excludeAttribute = options?.excludeAttributeFromCamelToPascal;\n\tconst result: Record<string, unknown> = {};\n\n\tfor (const [key, value] of Object.entries(input)) {\n\t\tconst pascalKey = pascalKeyOverrides.has(key)\n\t\t\t? (pascalKeyOverrides.get(key) as string)\n\t\t\t: camelToPascal(key);\n\t\tconst treatAsAttr = ATTRIBUTE_FIELDS.has(key) && !exclude?.includes(key);\n\t\tconst formattedAttribute = formatAttributeField(\n\t\t\tpascalKey,\n\t\t\tkey,\n\t\t\texcludeAttribute?.includes(key),\n\t\t);\n\t\tconst finalKey = treatAsAttr ? formattedAttribute : 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\" || 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 [key, value] of Object.entries(input)) {\n\t\tconst parsedKey = key.startsWith(\"@\") ? key.slice(1) : key;\n\t\tconst camelKey = camelKeyOverrides.has(parsedKey)\n\t\t\t? (camelKeyOverrides.get(parsedKey) as string)\n\t\t\t: pascalToCamel(parsedKey);\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 || typeof value !== \"object\" || 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 type { BaseIssue, BaseSchema } from \"valibot\";\nimport * as v from \"valibot\";\nimport { camelToPascalKeys } from \"../utils/case-transform.js\";\n\n/** AVES bool-ish wire values */\nexport const BoolishSchema = v.union([\n\tv.literal(\"true\"),\n\tv.literal(\"false\"),\n\tv.boolean(),\n]);\n\n// ---------------------------------------------------------------------------\n// Status unions — request base, set extends, response wire + normalize\n// ---------------------------------------------------------------------------\n\n/** Canonical statuses accepted on CreateBookingFile */\nexport const BookingFileStatusRequestSchema = v.union([\n\tv.literal(\"QUOTATION\"),\n\tv.literal(\"WORK_IN_PROGRESS\"),\n\tv.literal(\"CONFIRMED\"),\n\tv.literal(\"OPTIONED\"),\n\tv.literal(\"CANCELED\"),\n]);\n\n/** SetBookingFileStatus adds NULLIFIED */\nexport const SetFileStatusValueSchema = v.union([\n\tv.literal(\"QUOTATION\"),\n\tv.literal(\"WORK_IN_PROGRESS\"),\n\tv.literal(\"CONFIRMED\"),\n\tv.literal(\"OPTIONED\"),\n\tv.literal(\"NULLIFIED\"),\n\tv.literal(\"CANCELED\"),\n]);\n\n/** Wire aliases seen in BOOKEDFILE responses */\nexport const BookingFileStatusWireSchema = 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(\"REQUESTED\"),\n\tv.literal(\"NULLIFIED\"),\n\tv.literal(\"CANCELED\"),\n]);\n\nconst statusAliasToCanonical = {\n\tCONFIRM: \"CONFIRMED\",\n\tOPTION: \"OPTIONED\",\n\tREQUESTED: \"REQUEST\",\n} as const;\n\nexport type CanonicalBookingFileStatus =\n\t| \"QUOTATION\"\n\t| \"WORK_IN_PROGRESS\"\n\t| \"CONFIRMED\"\n\t| \"OPTIONED\"\n\t| \"REQUEST\"\n\t| \"NULLIFIED\"\n\t| \"CANCELED\";\n\nexport function canonicalizeBookingFileStatus(\n\tvalue: v.InferOutput<typeof BookingFileStatusWireSchema>,\n): CanonicalBookingFileStatus {\n\tif (value in statusAliasToCanonical) {\n\t\treturn statusAliasToCanonical[\n\t\t\tvalue as keyof typeof statusAliasToCanonical\n\t\t] as CanonicalBookingFileStatus;\n\t}\n\treturn value as CanonicalBookingFileStatus;\n}\n\n// ---------------------------------------------------------------------------\n// Service type enums (shared request + response)\n// ---------------------------------------------------------------------------\n\nexport const 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\nexport const 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\nexport const BookedServiceStatusSchema = v.union([\n\tv.literal(\"REQUEST\"),\n\tv.literal(\"ALLOTMENT_REQUEST\"),\n\tv.literal(\"CONFIRMED_REQUEST\"),\n\tv.literal(\"CONFIRMED_EXTRA_ALLOTMENT\"),\n\tv.literal(\"WAITLISTED\"),\n\tv.literal(\"ALLOTMENT\"),\n\tv.literal(\"REFUSED\"),\n\tv.literal(\"NULLIFIED\"),\n\tv.literal(\"CANCELED\"),\n\tv.literal(\"MESSAGE\"),\n]);\n\n// ---------------------------------------------------------------------------\n// Booking request transform (Create + Mod share this)\n// ---------------------------------------------------------------------------\n\n/**\n * Empty paxAssociated [] → \"\" so XML emits `<PaxAssociated/>` instead of omitting the tag.\n */\nexport function normalizeEmptyPaxAssociated<T>(input: T): T {\n\tconst walk = (node: unknown): unknown => {\n\t\tif (node === null || typeof node !== \"object\") return node;\n\t\tif (Array.isArray(node)) return node.map(walk);\n\t\tconst result: Record<string, unknown> = {};\n\t\tfor (const [key, val] of Object.entries(node)) {\n\t\t\tif (key === \"paxAssociated\" && Array.isArray(val) && !val.length) {\n\t\t\t\tresult[key] = \"\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tresult[key] = walk(val);\n\t\t}\n\t\treturn result;\n\t};\n\treturn walk(input) as T;\n}\n\n/**\n * camelCase booking body → PascalCase / @attrs for AVES XML.\n * Root startDate/endDate stay elements; nested package dates become attributes.\n */\nexport function toBookingApiBody<T>(input: T) {\n\treturn camelToPascalKeys(normalizeEmptyPaxAssociated(input), {\n\t\texcludeFromAttributePrefix: [\"startDate\", \"endDate\"],\n\t\texcludeAttributeFromCamelToPascal: [\"sCode\", \"ssCode\", \"pCode\"],\n\t});\n}\n\n/** Pipe a camelCase booking input schema into the shared AVES request transform. */\nexport function createBookingApiSchema<\n\tTInput extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(inputSchema: TInput) {\n\treturn v.pipe(inputSchema, v.transform(toBookingApiBody));\n}\n","import * as v from \"valibot\";\nimport {\n\tAvesServiceTypeSchema,\n\tBookedServiceStatusSchema,\n\tBookingFileStatusWireSchema,\n\tcanonicalizeBookingFileStatus,\n\tToServiceTypeSchema,\n} from \"./booking-shared.js\";\n\n/**\n * Normalize XML one-or-many nodes into a typed array.\n */\nexport function oneOrMany<\n\tTSchema extends v.BaseSchema<unknown, unknown, v.BaseIssue<unknown>>,\n>(itemSchema: TSchema) {\n\treturn v.pipe(\n\t\tv.union([v.array(itemSchema), itemSchema]),\n\t\tv.transform((input): v.InferOutput<TSchema>[] =>\n\t\t\tArray.isArray(input) ? input : [input],\n\t\t),\n\t);\n}\n\nconst stringish = v.union([v.string(), v.number()]);\n\n/** BookingFileStatus in BOOKEDFILE responses — aliases normalized to canonical values */\nexport const BookingFileStatusApiSchema = v.pipe(\n\tv.object({\n\t\t\"@Value\": BookingFileStatusWireSchema,\n\t\t\"@ExpiredDate\": v.optional(v.string()),\n\t\t\"@ExpireDate\": v.optional(v.string()),\n\t}),\n\tv.transform((status) => ({\n\t\t\"@Value\": canonicalizeBookingFileStatus(status[\"@Value\"]),\n\t\t\"@ExpiredDate\": status[\"@ExpiredDate\"] ?? status[\"@ExpireDate\"],\n\t})),\n);\n\nexport const PricePerPaxDetailApiSchema = v.object({\n\t\"@PaxRef\": v.string(),\n\t\"@Price\": stringish,\n});\n\nexport const PaxPriceListApiSchema = v.object({\n\tPricePerPaxDetail: v.optional(oneOrMany(PricePerPaxDetailApiSchema)),\n});\n\nexport const ServiceTotalAmountDetailApiSchema = v.object({\n\t\"@CommissionCode\": v.optional(v.string()),\n\t\"@CommissionPercentage\": v.optional(stringish),\n\t\"@CommissionAmount\": v.optional(stringish),\n\t\"@PriceListCode\": v.optional(v.string()),\n\t\"@CostListCode\": v.optional(v.string()),\n\t\"@ServiceTotalPrice\": v.optional(stringish),\n\tPaxPriceList: v.optional(PaxPriceListApiSchema),\n});\n\nexport const SupplierInfoApiSchema = v.object({\n\t\"@Code\": v.optional(v.string()),\n\t\"@Name\": v.optional(v.string()),\n\t\"@Email\": v.optional(v.string()),\n\t\"@LanguageCode\": v.optional(v.string()),\n});\n\nexport const WebStatisticApiSchema = v.object({\n\t\"@Code\": v.optional(v.string()),\n\t\"@Description\": v.optional(v.string()),\n});\n\n/** Wire schema — accepts AVES dialect aliases, then normalizes */\nconst BookedServiceDetailWireSchema = v.object({\n\t\"@RPH\": v.string(),\n\t\"@ServiceCode\": v.optional(v.string()),\n\t\"@FromExternalProvider\": v.optional(stringish),\n\t\"@isFromExternalProvider\": v.optional(stringish),\n\tAvesServiceType: v.optional(AvesServiceTypeSchema),\n\tTOServiceType: v.optional(ToServiceTypeSchema),\n\tFirstDescription: v.optional(v.string()),\n\tSecondDescription: v.optional(v.string()),\n\tThirdDescription: v.optional(v.string()),\n\tFourthDescription: v.optional(v.string()),\n\tServiceStatus: v.optional(BookedServiceStatusSchema),\n\tStartDate: v.optional(v.string()),\n\tEndDate: v.optional(v.string()),\n\tQty: v.optional(stringish),\n\tPax: v.optional(stringish),\n\tPeriodType: v.optional(v.string()),\n\tPaxMultiplier: v.optional(v.string()),\n\tExternalProviderCode: v.optional(v.string()),\n\tWebStatisticCode: v.optional(v.string()),\n\tWebStatisticDescription: v.optional(v.string()),\n\tWebStatistic: v.optional(WebStatisticApiSchema),\n\tSupplierInfo: v.optional(SupplierInfoApiSchema),\n\tServiceTotalAmountDetail: v.optional(ServiceTotalAmountDetailApiSchema),\n});\n\n/** BookedServiceDetail — single fromExternalProvider after normalize */\nexport const BookedServiceDetailApiSchema = v.pipe(\n\tBookedServiceDetailWireSchema,\n\tv.transform((service) => ({\n\t\t\"@RPH\": service[\"@RPH\"],\n\t\t\"@ServiceCode\": service[\"@ServiceCode\"],\n\t\t\"@FromExternalProvider\":\n\t\t\tservice[\"@FromExternalProvider\"] ?? service[\"@isFromExternalProvider\"],\n\t\tAvesServiceType: service.AvesServiceType,\n\t\tTOServiceType: service.TOServiceType,\n\t\tFirstDescription: service.FirstDescription,\n\t\tSecondDescription: service.SecondDescription,\n\t\tThirdDescription: service.ThirdDescription,\n\t\tFourthDescription: service.FourthDescription,\n\t\tServiceStatus: service.ServiceStatus,\n\t\tStartDate: service.StartDate,\n\t\tEndDate: service.EndDate,\n\t\tQty: service.Qty,\n\t\tPax: service.Pax,\n\t\tPeriodType: service.PeriodType,\n\t\tPaxMultiplier: service.PaxMultiplier,\n\t\tExternalProviderCode: service.ExternalProviderCode,\n\t\tWebStatisticCode: service.WebStatisticCode,\n\t\tWebStatisticDescription: service.WebStatisticDescription,\n\t\tWebStatistic: service.WebStatistic,\n\t\tSupplierInfo: service.SupplierInfo,\n\t\tServiceTotalAmountDetail: service.ServiceTotalAmountDetail,\n\t})),\n);\n\nexport const BookedServiceListApiSchema = v.object({\n\tBookedServiceDetail: v.optional(oneOrMany(BookedServiceDetailApiSchema)),\n});\n\n/** TotalAmountDetail — attributes on BOOKEDFILE */\nexport const TotalAmountDetailApiSchema = v.object({\n\t\"@CurrencyCode\": v.optional(v.string()),\n\t\"@TotalAmountBeforeDiscount\": v.optional(stringish),\n\t\"@TotalAmountAfterDiscount\": v.optional(stringish),\n\t\"@TotalDiscount\": v.optional(stringish),\n\t\"@TotalAmountWithoutVat\": v.optional(stringish),\n\t\"@DueAmount\": v.optional(stringish),\n\t\"@PaiedAmount\": v.optional(stringish),\n\t\"@Balance\": v.optional(stringish),\n});\n\nexport const PassengerDetailApiSchema = v.object({\n\t\"@RPH\": v.string(),\n\t\"@RoomRPH\": v.optional(v.string()),\n\t\"@BillingHolder\": v.optional(stringish),\n\tName: v.optional(v.string()),\n\tCategoryCode: v.optional(v.string()),\n\tSex: v.optional(v.string()),\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\tMasterRecordCode: v.optional(v.string()),\n});\n\nexport const PassengerListApiSchema = v.object({\n\tPassengerDetail: v.optional(oneOrMany(PassengerDetailApiSchema)),\n});\n\nconst FinancialDeadlineDetailWireSchema = v.object({\n\t\"@ReschedulingCode\": v.optional(v.string()),\n\t\"@ExpireDate\": v.optional(v.string()),\n\t\"@TotalAmount\": v.optional(stringish),\n\tReschedulingCode: v.optional(v.string()),\n\tExpireDate: v.optional(v.string()),\n\tTotalAmount: v.optional(stringish),\n});\n\nexport const FinancialDeadlineDetailApiSchema = v.pipe(\n\tFinancialDeadlineDetailWireSchema,\n\tv.transform((deadline) => ({\n\t\t\"@ReschedulingCode\":\n\t\t\tdeadline[\"@ReschedulingCode\"] ?? deadline.ReschedulingCode,\n\t\t\"@ExpireDate\": deadline[\"@ExpireDate\"] ?? deadline.ExpireDate,\n\t\t\"@TotalAmount\": deadline[\"@TotalAmount\"] ?? deadline.TotalAmount,\n\t})),\n);\n\nexport const FinancialDeadlineListApiSchema = v.object({\n\tDeadlineDetail: v.optional(oneOrMany(FinancialDeadlineDetailApiSchema)),\n});\n\nexport const StoredDocumentDetailApiSchema = v.object({\n\tDocumentRefCode: v.optional(v.string()),\n\tDocumentType: v.optional(v.string()),\n\tDocumentName: v.optional(v.string()),\n\tArchiviationDescription: v.optional(v.string()),\n});\n\nexport const StoredDocumentsListApiSchema = v.object({\n\tStoredDocumentDetail: v.optional(oneOrMany(StoredDocumentDetailApiSchema)),\n});\n\nexport const PrintableDocumentDetailApiSchema = v.object({\n\tDocumentType: v.optional(v.string()),\n\tDocumentName: v.optional(v.string()),\n\tEnabled: v.optional(stringish),\n});\n\nexport const PrintableDocumentsListApiSchema = v.object({\n\tPrintableDocumentDetail: v.optional(\n\t\toneOrMany(PrintableDocumentDetailApiSchema),\n\t),\n});\n\nconst BookingFileDetailWireSchema = v.object({\n\t\"@BookingFileCode\": v.optional(v.string()),\n\tBookingFileCode: v.optional(v.string()),\n\tCustomerRecordCode: v.optional(v.string()),\n\tCustomerName: v.optional(v.string()),\n\tCustomerEmail: v.optional(v.string()),\n\tTravelAgencyName: v.optional(v.string()),\n\tTravelAgencyEmail: v.optional(v.string()),\n\tBookingFileStatus: v.optional(BookingFileStatusApiSchema),\n\tDescription: v.optional(v.string()),\n\tNation: v.optional(v.string()),\n\tDestination: v.optional(v.string()),\n\tCreationDate: v.optional(v.string()),\n\tFirstConfirmationDate: v.optional(v.string()),\n\tStartDate: v.optional(v.string()),\n\tEndDate: v.optional(v.string()),\n\tPackageCode: v.optional(v.string()),\n\tBookedServiceList: v.optional(BookedServiceListApiSchema),\n\tTotalAmountDetail: v.optional(TotalAmountDetailApiSchema),\n\tPaxNumber: v.optional(stringish),\n\tPassengerList: v.optional(PassengerListApiSchema),\n\tReference: v.optional(v.string()),\n\tClerkName: v.optional(v.string()),\n\tStoredDocumentsList: v.optional(StoredDocumentsListApiSchema),\n\tPrintableDocumentsList: v.optional(PrintableDocumentsListApiSchema),\n\tFinancialDeadlineList: v.optional(FinancialDeadlineListApiSchema),\n});\n\n/**\n * BookingFileDetail — Common Structures \"BOOKEDFILE\".\n * Accepts wire dialects, normalizes to a single PascalCase/@attr shape for camelCase mapping.\n */\nexport const BookingFileDetailApiSchema = v.pipe(\n\tBookingFileDetailWireSchema,\n\tv.transform((detail) => ({\n\t\t\"@BookingFileCode\": detail[\"@BookingFileCode\"] ?? detail.BookingFileCode,\n\t\tCustomerRecordCode: detail.CustomerRecordCode,\n\t\tCustomerName: detail.CustomerName,\n\t\tCustomerEmail: detail.CustomerEmail,\n\t\tTravelAgencyName: detail.TravelAgencyName,\n\t\tTravelAgencyEmail: detail.TravelAgencyEmail,\n\t\tBookingFileStatus: detail.BookingFileStatus,\n\t\tDescription: detail.Description,\n\t\tNation: detail.Nation,\n\t\tDestination: detail.Destination,\n\t\tCreationDate: detail.CreationDate,\n\t\tFirstConfirmationDate: detail.FirstConfirmationDate,\n\t\tStartDate: detail.StartDate,\n\t\tEndDate: detail.EndDate,\n\t\tPackageCode: detail.PackageCode,\n\t\tBookedServiceList: detail.BookedServiceList,\n\t\tTotalAmountDetail: detail.TotalAmountDetail,\n\t\tPaxNumber: detail.PaxNumber,\n\t\tPassengerList: detail.PassengerList,\n\t\tReference: detail.Reference,\n\t\tClerkName: detail.ClerkName,\n\t\tStoredDocumentsList: detail.StoredDocumentsList,\n\t\tPrintableDocumentsList: detail.PrintableDocumentsList,\n\t\tFinancialDeadlineList: detail.FinancialDeadlineList,\n\t})),\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 { createResponseSchema } from \"../utils/schema-transform.js\";\nimport {\n\tBookingFileDetailApiSchema,\n\tPrintableDocumentsListApiSchema,\n\tTotalAmountDetailApiSchema,\n} from \"./booking-response.js\";\nimport {\n\tAvesServiceTypeSchema,\n\tBookingFileStatusRequestSchema,\n\tBoolishSchema,\n\tcreateBookingApiSchema,\n\tToServiceTypeSchema,\n} from \"./booking-shared.js\";\nimport { RsStatusSchema } from \"./common.js\";\n\n// ---------------------------------------------------------------------------\n// BookingFileStatus\n// ---------------------------------------------------------------------------\n\nconst BookingFileStatusInputSchema = v.object({\n\tvalue: BookingFileStatusRequestSchema,\n\texpiredDate: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// StatisticCodes (AvesStatisticCodes)\n// ---------------------------------------------------------------------------\n\nexport const 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\nexport const BookingFileDocumentInputSchema = v.object({\n\tprintDoc: v.optional(BoolishSchema),\n\tsendDocViaEmail: v.optional(BoolishSchema),\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\nconst FinancialDeadlineListInputSchema = v.object({\n\tdeadlineDetail: v.optional(v.array(FinancialDeadlineDetailInputSchema)),\n});\n\nconst DeadlineListInputSchema = v.object({\n\tdeadlineDetail: v.optional(v.array(DeadlineDetailInputSchema)),\n});\n\nconst PaymentListInputSchema = v.object({\n\tpaymentDetail: v.optional(v.array(PaymentDetailInputSchema)),\n});\n\n// ---------------------------------------------------------------------------\n// SelectedPackageList / SelectedServiceList / ExtraQuoteServiceList\n// ---------------------------------------------------------------------------\n\nconst costPriceTypeSchema = v.union([\n\tv.literal(\"PAX_QTY_DAY\"),\n\tv.literal(\"PAX_QTY_NIGHT\"),\n\tv.literal(\"PAX_QTY_WEEK\"),\n\tv.literal(\"PAX_QTY\"),\n\tv.literal(\"PAX_DAY\"),\n\tv.literal(\"PAX_NIGHT\"),\n\tv.literal(\"PAX_WEEK\"),\n\tv.literal(\"PAX\"),\n\tv.literal(\"QTY_DAY\"),\n\tv.literal(\"QTY_NIGHT\"),\n\tv.literal(\"QTY_WEE\"),\n\tv.literal(\"QTY\"),\n\tv.literal(\"DAY\"),\n\tv.literal(\"NIGHT\"),\n\tv.literal(\"WEEK\"),\n\tv.literal(\"FORFAIT\"),\n]);\n\n/** ServiceFare — cost/price of a selected or booked service */\nexport const ServiceFareInputSchema = v.object({\n\tcurrencyCode: v.optional(v.string()),\n\texchangeRate: v.optional(v.string()),\n\tcost: v.optional(v.string()),\n\tcostTax: v.optional(v.string()),\n\tcostType: v.optional(costPriceTypeSchema),\n\tvatCostCurrencyCode: v.optional(v.string()),\n\tprice: v.optional(v.string()),\n\tpriceTax: v.optional(v.string()),\n\tpriceType: v.optional(costPriceTypeSchema),\n});\n\nexport const AvesServiceInfoInputSchema = v.object({\n\tpackageCode: v.optional(v.string()),\n\tpackageReference: v.optional(v.string()),\n\tsuballotmentCode: v.optional(v.string()),\n\tpriceListCode: v.optional(v.string()),\n\tcostListCode: v.optional(v.string()),\n\texternalFileCode: v.optional(v.string()),\n\texternalReference: v.optional(v.string()),\n\tserviceStatus: v.optional(v.string()),\n\tserviceStatisticCode: v.optional(v.string()),\n\tserviceFare: v.optional(ServiceFareInputSchema),\n});\n\nconst paxAssociatedSchema = v.object({ pax: v.string() });\n\nexport const SelectedServiceDetailInputSchema = v.object({\n\tsCode: v.string(),\n\tssCode: v.optional(v.string()),\n\tavesServiceType: AvesServiceTypeSchema,\n\ttoServiceType: v.optional(ToServiceTypeSchema),\n\tsubServiceDesc: v.optional(v.string()),\n\tstartDate: v.string(),\n\tendDate: v.string(),\n\tqty: v.string(),\n\tpax: v.string(),\n\tpaxAssociated: v.optional(v.array(paxAssociatedSchema)),\n\tavesSession: v.string(),\n\tavesServiceInfo: v.optional(AvesServiceInfoInputSchema),\n\tserviceFare: v.optional(ServiceFareInputSchema),\n\tbookedServiceRef: v.optional(v.string()),\n\tsupplierMasterCode: v.optional(v.string()),\n\tvoucherMasterCode: v.optional(v.string()),\n\thotelServiceInfo: v.optional(v.string()),\n\tcarRentalServiceInfo: v.optional(v.string()),\n\tflightServiceInfo: v.optional(v.string()),\n\tshipServiceInfo: v.optional(v.string()),\n\tticketServiceInfo: v.optional(v.string()),\n\tcommission: v.optional(v.string()),\n\tnoteList: v.optional(v.string()),\n\tvoucherInfo: v.optional(v.string()),\n\tfirstDescription: v.optional(v.string()),\n\tsecondDescription: v.optional(v.string()),\n});\n\nexport const SelectedPackageDetailInputSchema = v.object({\n\tpCode: v.string(),\n\tstartDate: v.string(),\n\tendDate: v.string(),\n\tgetServicesFromPackage: v.optional(BoolishSchema),\n});\n\nconst SelectedPackageListInputSchema = v.object({\n\tselectedPackageDetail: v.optional(v.array(SelectedPackageDetailInputSchema)),\n});\n\nconst SelectedServiceListInputSchema = v.object({\n\tselectedServiceDetail: SelectedServiceDetailInputSchema,\n});\n\nconst ExtraQuoteServiceListInputSchema = v.object({\n\textraQuoteServiceDetail: v.optional(\n\t\tv.array(SelectedServiceDetailInputSchema),\n\t),\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\nconst NoteListInputSchema = v.object({\n\tnoteDetail: v.optional(v.array(NoteDetailInputSchema)),\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 passengerDetailBase = {\n\trph: v.string(),\n\troomRph: v.optional(v.string()),\n\tbillingHolder: v.optional(BoolishSchema),\n\tmasterRecordCode: v.optional(v.string()),\n\tname: v.string(),\n\tsex: 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/** Passenger on CreateBookingFile — categoryCode required per AVES */\nexport const PassengerDetailCreateInputSchema = v.object({\n\t...passengerDetailBase,\n\tcategoryCode: passengerCategoryCodeSchema,\n});\n\n/** Passenger on ModBookingFileHeader / ModServices — categoryCode optional */\nexport const PassengerDetailPatchInputSchema = v.object({\n\t...passengerDetailBase,\n\tcategoryCode: v.optional(passengerCategoryCodeSchema),\n});\n\nconst PassengerListInputSchema = v.object({\n\tpassengerDetail: PassengerDetailCreateInputSchema,\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\nexport const 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(FinancialDeadlineListInputSchema),\n\tdeadlineList: v.optional(DeadlineListInputSchema),\n\tpaymentList: v.optional(PaymentListInputSchema),\n\tselectedPackageList: v.optional(SelectedPackageListInputSchema),\n\tselectedServiceList: v.array(SelectedServiceListInputSchema),\n\textraQuotaRefCode: v.optional(v.string()),\n\textraQuoteServiceList: v.optional(ExtraQuoteServiceListInputSchema),\n\tgetExtraQuoteFromSystem: v.optional(BoolishSchema),\n\tpassengerList: v.array(PassengerListInputSchema),\n\tnoteList: v.optional(NoteListInputSchema),\n\tbookingFinancialInfo: v.optional(BookingFinancialInfoInputSchema),\n\tbookingFileCode: v.optional(v.string()),\n\tgroupingPaxPolicy: v.optional(groupingPaxPolicySchema),\n\tgroupBookingFile: v.optional(BoolishSchema),\n\ttypeDownloadFile: v.optional(typeDownloadFileSchema),\n\tsetBookingFileCodeFromStartDate: v.optional(BoolishSchema),\n});\n\n/**\n * Booking file schema for API requests (transforms to PascalCase for BookFileRQ).\n * Uses the shared Create+Mod booking transform.\n */\nexport const BookingFileApiSchema = createBookingApiSchema(BookingFileSchema);\n\n/**\n * Shared booking response (Create / ModServices / SetStatus / SetStatusService).\n * Extra cancel fields are optional and only present on some ops.\n */\nexport const BookingFileResponseSchema = createResponseSchema(\n\tv.object({\n\t\tRsStatus: RsStatusSchema,\n\t\tBookingFileDetail: v.optional(BookingFileDetailApiSchema),\n\t\tPrintableDocumentsList: v.optional(PrintableDocumentsListApiSchema),\n\t\tTotalAmountDetailAfterCancellation: v.optional(TotalAmountDetailApiSchema),\n\t\tBase64DocContent: v.optional(v.string()),\n\t}),\n);\n","import * as v from \"valibot\";\nimport {\n\tcreateApiSchema,\n\tcreateResponseSchema,\n} from \"../utils/schema-transform.js\";\nimport {\n\tBookingFileDocumentInputSchema,\n\tBookingFileResponseSchema,\n\tBookingFinancialInfoInputSchema,\n\tPassengerDetailPatchInputSchema,\n\tSelectedPackageDetailInputSchema,\n\tSelectedServiceDetailInputSchema,\n\tStatisticCodesInputSchema,\n} from \"./booking-file.js\";\nimport {\n\tBoolishSchema,\n\tcreateBookingApiSchema,\n\tSetFileStatusValueSchema,\n} from \"./booking-shared.js\";\nimport { RsStatusSchema } from \"./common.js\";\n\n/** Response with RsStatus only (Cancel / ModHeader) */\nexport const BookingStatusOnlyResponseSchema = createResponseSchema(\n\tv.object({ RsStatus: RsStatusSchema }),\n);\n\n/**\n * Shared with CreateBookingFile — typed BookingFileDetail (+ optional cancel extras).\n * Create / ModServices / SetStatus / SetStatusService all use this shape.\n */\nexport const BookingFileDetailResponseSchema = BookingFileResponseSchema;\n\n// ---------------------------------------------------------------------------\n// ModBookingFileServices — ModFileServicesRQ\n// ---------------------------------------------------------------------------\n\nconst ModDeadlineDetailInputSchema = v.object({\n\treschedulingCode: v.string(),\n\tdescription: v.optional(v.string()),\n\texpireDate: v.optional(v.string()),\n});\n\nexport const CancellableBookedServiceDetailInputSchema = v.object({\n\tcancelOperationType: v.union([v.literal(\"NULLIFY\"), v.literal(\"DELETE\")]),\n\tserviceRefType: v.union([v.literal(\"RPH\"), v.literal(\"FILE\")]),\n\tserviceRefValue: v.string(),\n});\n\n/**\n * ModFileServicesRQ body (camelCase).\n * Add/replace services, assign package, and/or cancel cost lines.\n *\n * Note: SelectedServiceList shape differs from CreateBookingFile —\n * Create uses `{ selectedServiceDetail: one }[]`;\n * Mod uses `{ selectedServiceDetail: one[] }` (AVES wire).\n */\nexport const ModFileServicesSchema = v.object({\n\tcustomerRecordCode: v.string(),\n\tbookingFileCode: v.string(),\n\tcurrencyCode: v.optional(v.string()),\n\tdeadlineList: v.optional(\n\t\tv.object({\n\t\t\tdeadlineDetail: v.optional(v.array(ModDeadlineDetailInputSchema)),\n\t\t}),\n\t),\n\tselectedPackageDetail: v.optional(SelectedPackageDetailInputSchema),\n\tselectedServiceList: v.object({\n\t\tselectedServiceDetail: v.pipe(\n\t\t\tv.array(SelectedServiceDetailInputSchema),\n\t\t\tv.minLength(1),\n\t\t),\n\t}),\n\tcancellableBookedServiceList: v.optional(\n\t\tv.object({\n\t\t\tcancellableBookedServiceDetail: v.optional(\n\t\t\t\tv.array(CancellableBookedServiceDetailInputSchema),\n\t\t\t),\n\t\t}),\n\t),\n\tpassengerList: v.optional(\n\t\tv.object({\n\t\t\tpassengerDetail: v.optional(v.array(PassengerDetailPatchInputSchema)),\n\t\t}),\n\t),\n});\n\nexport const ModFileServicesApiSchema = createBookingApiSchema(\n\tModFileServicesSchema,\n);\n\n// ---------------------------------------------------------------------------\n// ModBookingFileHeader — ModFileHeaderRQ\n// ---------------------------------------------------------------------------\n\n/**\n * ModFileHeaderRQ body (camelCase).\n * Modify header only — no package/costs.\n */\nexport const ModFileHeaderSchema = v.object({\n\tbookingFileCode: v.string(),\n\tbookingFileStartDate: v.string(),\n\tcustomerRecordCode: v.string(),\n\tnewCustomerRecordCode: v.optional(v.string()),\n\tbookingFileReferenceName: v.optional(v.string()),\n\ttravelAgentCode: v.optional(v.string()),\n\tbillingReferenceCode: v.optional(v.string()),\n\tpaymentReferenceCode: v.optional(v.string()),\n\tcupCode: v.optional(v.string()),\n\tcigCode: v.optional(v.string()),\n\tcustomerPromoterCode: v.optional(v.string()),\n\tbookingNote: v.optional(v.string()),\n\tpassengerList: v.optional(\n\t\tv.object({\n\t\t\tpassengerDetail: v.optional(v.array(PassengerDetailPatchInputSchema)),\n\t\t}),\n\t),\n\tstatisticCodes: v.optional(StatisticCodesInputSchema),\n\tbookingFinancialInfo: v.optional(BookingFinancialInfoInputSchema),\n\tfinancialDeadlineList: v.optional(\n\t\tv.object({\n\t\t\tdeadlineDetail: v.optional(\n\t\t\t\tv.array(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\treschedulingCode: v.string(),\n\t\t\t\t\t\texpireDate: v.string(),\n\t\t\t\t\t\ttotalAmount: v.string(),\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t),\n\t\t}),\n\t),\n});\n\nexport const ModFileHeaderApiSchema = createApiSchema(ModFileHeaderSchema);\n\n// ---------------------------------------------------------------------------\n// CancelBookingFile — CancelFileRQ\n// ---------------------------------------------------------------------------\n\nexport const CancelFileSchema = v.object({\n\tbookingFileCode: v.string(),\n\tcustomerRecordCode: v.string(),\n});\n\nexport const CancelFileApiSchema = createApiSchema(CancelFileSchema);\n\n// ---------------------------------------------------------------------------\n// SetBookingFileStatus — SetStatusRQ\n// ---------------------------------------------------------------------------\n\nconst optionedExpirePolicySchema = v.union([\n\tv.literal(\"NOT_SET\"),\n\tv.literal(\"CONSIDER_HOLIDAY\"),\n\tv.literal(\"CONSIDER_HOLIDAY_AND_SATURDAY\"),\n]);\n\n/**\n * SetStatusRQ body (camelCase).\n * Change booking file status (incl. CANCELED / NULLIFIED).\n */\nexport const SetFileStatusSchema = v.object({\n\tcustomerRecordCode: v.string(),\n\tbookingFileCode: v.string(),\n\tfileStatus: v.object({\n\t\tvalue: SetFileStatusValueSchema,\n\t\texpiredDate: v.optional(v.string()),\n\t\toptionedFileExpireDatePolicy: v.optional(optionedExpirePolicySchema),\n\t}),\n\tbackOfficeRequest: v.optional(BoolishSchema),\n\tbookingFileDocument: v.optional(BookingFileDocumentInputSchema),\n\tpenalty: v.optional(\n\t\tv.object({\n\t\t\tapply: v.optional(BoolishSchema),\n\t\t\tspecificCode: v.optional(v.string()),\n\t\t}),\n\t),\n\tsimulateCancelAndGetPenaltyAmount: v.optional(BoolishSchema),\n});\n\nexport const SetFileStatusApiSchema = createApiSchema(SetFileStatusSchema);\n\n// ---------------------------------------------------------------------------\n// SetBookingFileServiceStatus — SetStatusServiceRQ\n// ---------------------------------------------------------------------------\n\nexport const SetFileServiceStatusSchema = v.object({\n\tcustomerRecordCode: v.string(),\n\tbookingFileCode: v.string(),\n\tbookingServiceRef: v.string(),\n\tbookingFileServiceStatus: v.literal(\"NULLIFIED\"),\n\tbookingFileServiceStatusDate: v.optional(v.string()),\n});\n\nexport const SetFileServiceStatusApiSchema = createApiSchema(\n\tSetFileServiceStatusSchema,\n);\n\n// ---------------------------------------------------------------------------\n// InsertFilePaymentList — FilePaymentListRQ\n// ---------------------------------------------------------------------------\n\nconst filePaymentTypeSchema = 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 filePaymentOperationTypeSchema = v.union([\n\tv.literal(\"AbsoluteAmountsInsertion\"),\n\tv.literal(\"FinalAmountToAchieve\"),\n\tv.literal(\"FinalAmountToAchieveWithoutControls\"),\n]);\n\nexport const FilePaymentDetailInputSchema = v.object({\n\tpaymentDate: v.string(),\n\tpaymentNote: v.optional(v.string()),\n\tpayerMasterCode: v.optional(v.string()),\n\tpayerName: v.optional(v.string()),\n\tamount: v.string(),\n\tpaymentType: filePaymentTypeSchema,\n});\n\n/**\n * FilePaymentListRQ body (camelCase).\n * Register one or more client payments on an existing booking file.\n * Requires bookingFileCode or bookingFileRefCode.\n */\nexport const FilePaymentListSchema = v.pipe(\n\tv.object({\n\t\tbookingFileCode: v.optional(v.string()),\n\t\tbookingFileRefCode: v.optional(v.string()),\n\t\tpaymentUser: v.optional(v.string()),\n\t\tenableMultiplePayments: BoolishSchema,\n\t\toperationType: filePaymentOperationTypeSchema,\n\t\tfilePaymentList: v.object({\n\t\t\tfilePaymentDetail: v.pipe(\n\t\t\t\tv.array(FilePaymentDetailInputSchema),\n\t\t\t\tv.minLength(1),\n\t\t\t),\n\t\t}),\n\t}),\n\tv.check(\n\t\t(input) => Boolean(input.bookingFileCode || input.bookingFileRefCode),\n\t\t\"bookingFileCode or bookingFileRefCode is required\",\n\t),\n);\n\nexport const FilePaymentListApiSchema = createApiSchema(FilePaymentListSchema);\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(\n\tv.array(DynamicFieldsInputSchema),\n);\n\n/**\n * Dynamic fields validation schema (already transformed PascalCase with @ attributes)\n */\nexport const DynamicFieldsApiValidationSchema = createApiValidationSchema(\n\tDynamicFieldsInputSchema,\n);\n\nconst CarrierTypeSchema = v.union([\n\tv.literal(\"NOT_SET\"),\n\tv.literal(\"FLIGHT\"),\n\tv.literal(\"SHIP\"),\n\tv.literal(\"TRAIN\"),\n\tv.literal(\"RENTCAR\"),\n\tv.literal(\"BUS\"),\n\tv.literal(\"DP_HOTEL\"),\n\tv.literal(\"TO_HOTEL\"),\n\tv.literal(\"TO_TOUR\"),\n\tv.literal(\"TO_HOTEL_AND_TOUR\"),\n\tv.literal(\"DP_AUTO\"),\n\tv.literal(\"DP_GDS_NAVI\"),\n\tv.literal(\"DP_GDS_VOLI\"),\n\tv.literal(\"TOUR_OPERATOR\"),\n\tv.literal(\"TICKETING_EV\"),\n\tv.literal(\"OTHER\"),\n]);\n\n/*\n * Supplier reference master records schema for API requests (transforms to PascalCase)\n * @property supplierRefCode - Supplier reference code\n * @property companyMainBusinessType - Company main business type\n * @property carrierType - Carrier type\n */\nconst SupplierRefMasterRecordsInputSchema = v.object({\n\tsupplierRefCode: v.optional(v.string()),\n\tcompanyMainBusinessType: v.optional(v.string()),\n\tcarrierType: v.optional(CarrierTypeSchema),\n});\n\n/**\n * SupplierRefMasterRecords schema for API requests (transforms to PascalCase)\n */\nexport const SupplierRefMasterRecordsSchema = createApiSchema(\n\tSupplierRefMasterRecordsInputSchema,\n);\n\n/**\n * SupplierRefMasterRecords validation schema (already transformed PascalCase)\n */\nexport const SupplierRefMasterRecordsApiValidationSchema =\n\tcreateApiValidationSchema(SupplierRefMasterRecordsInputSchema);\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\tsupplierRefMasterRecords: v.optional(SupplierRefMasterRecordsInputSchema),\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(\n\t\tSupplierRefMasterRecordsApiValidationSchema,\n\t),\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 from 'fast-xml-builder';\nimport { XMLParser } from 'fast-xml-parser';\nimport { AvesError } from './error.js';\n\nconst parserOptions = {\n ignoreAttributes: false,\n attributeNamePrefix: '@',\n parseAttributeValue: false,\n trimValues: true,\n ignoreNameSpace: true,\n removeNSPrefix: true,\n parseTagValue: false,\n};\n\nconst builderOptions = {\n ignoreAttributes: false,\n attributeNamePrefix: '@',\n suppressEmptyNode: 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 try {\n return builder.build(json);\n } catch (error) {\n throw new AvesError(\n 'validation',\n `Failed to convert JSON to XML: ${error instanceof Error ? error.message : 'Unknown error'}`,\n );\n }\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 try {\n return parser.parse(xml);\n } catch (error) {\n throw new AvesError(\n 'validation',\n `Failed to convert XML to JSON: ${error instanceof Error ? error.message : 'Unknown error'}`,\n );\n }\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\tMOD_FILE_SERVICES_REQUEST: \"ModFileServicesRQ\",\n\tMOD_FILE_HEADER_REQUEST: \"ModFileHeaderRQ\",\n\tMOD_FILE_HEADER_RESPONSE: \"ModFileHeaderRS\",\n\tCANCEL_FILE_REQUEST: \"CancelFileRQ\",\n\tCANCEL_FILE_RESPONSE: \"CancelFileRS\",\n\tSET_STATUS_REQUEST: \"SetStatusRQ\",\n\tSET_STATUS_RESPONSE: \"SetStatusRS\",\n\tSET_STATUS_SERVICE_REQUEST: \"SetStatusServiceRQ\",\n\tSET_STATUS_SERVICE_RESPONSE: \"SetStatusServiceRS\",\n\tFILE_PAYMENT_LIST_REQUEST: \"FilePaymentListRQ\",\n\tFILE_PAYMENT_LIST_RESPONSE: \"FilePaymentListRS\",\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\ttype BaseIssue,\n\ttype BaseSchema,\n\tparse,\n\tsafeParse,\n\tValiError,\n} from \"valibot\";\nimport {\n\tAvesError,\n\tapiError,\n\tbuildDetails,\n\tisAbortError,\n\tunknownError,\n\tvalidationError,\n} from \"./error.js\";\nimport {\n\tBookingFileApiSchema,\n\tBookingFileResponseSchema,\n} from \"./schemas/booking-file.js\";\nimport {\n\tBookingFileDetailResponseSchema,\n\tBookingStatusOnlyResponseSchema,\n\tCancelFileApiSchema,\n\tFilePaymentListApiSchema,\n\tModFileHeaderApiSchema,\n\tModFileServicesApiSchema,\n\tSetFileServiceStatusApiSchema,\n\tSetFileStatusApiSchema,\n} from \"./schemas/booking-ops.js\";\nimport { MasterRecordDetailApiSchema } from \"./schemas/master-record.js\";\nimport {\n\tSearchMasterRecordRequestSchema,\n\tSearchMasterRecordResponseSchema,\n} from \"./schemas/search.js\";\nimport {\n\tManageMasterRecordRequestSchema,\n\tManageMasterRecordResponseSchema,\n} from \"./schemas/upsert.js\";\nimport type {\n\tAvesClientOptions,\n\tBookingFileDetailRS,\n\tBookingFileRQ,\n\tBookingFileRS,\n\tBookingStatusOnlyRS,\n\tCancelFileRQ,\n\tFilePaymentListRQ,\n\tManageMasterRecordRS,\n\tMasterRecordDetail,\n\tModFileHeaderRQ,\n\tModFileServicesRQ,\n\tRsStatus,\n\tSearchMasterRecord,\n\tSearchMasterRecordRS,\n\tSetFileServiceStatusRQ,\n\tSetFileStatusRQ,\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 {\n\tcreateRootElement,\n\tXML_ROOT_ELEMENTS,\n\ttype XMLRootElementValues,\n} from \"./xml-root.js\";\n\n/**\n * AVES XML REST API client\n */\nexport class AvesClient {\n\t/**\n\t * @param options - Client configuration options\n\t * @param options.baseURL - Base URL of the AVES API\n\t * @param options.hostID - 6-digit identification code\n\t * @param options.xtoken - Authentication token\n\t * @param options.languageCode - Optional 2-digit language code\n\t * @param options.timeoutMs - Optional request timeout in milliseconds\n\t */\n\tconstructor(private readonly options: AvesClientOptions) {}\n\n\tprivate createRqHeader() {\n\t\treturn {\n\t\t\t\"@HostID\": this.options.hostID,\n\t\t\t\"@Xtoken\": this.options.xtoken,\n\t\t\t\"@Interface\": \"WEB\" as const,\n\t\t\t\"@UserName\": \"WEB\" as const,\n\t\t\t...(this.options.languageCode && {\n\t\t\t\t\"@LanguageCode\": this.options.languageCode,\n\t\t\t}),\n\t\t};\n\t}\n\n\tprivate createUrl(endpoint: string) {\n\t\treturn parseUrl(this.options.baseURL, endpoint);\n\t}\n\n\tprivate get endpoints() {\n\t\treturn {\n\t\t\tsearch: \"/interop/masterRecords/v2/rest/Search\",\n\t\t\tupsert: \"/interop/masterRecords/v2/rest/InsertOrUpdate\",\n\t\t\tcreateBooking: \"/interop/booking/v2/rest/CreateBookingFile\",\n\t\t\tmodBookingServices: \"/interop/booking/v2/rest/ModBookingFileServices\",\n\t\t\tmodBookingHeader: \"/interop/booking/v2/rest/ModBookingFileHeader\",\n\t\t\tcancelBooking: \"/interop/booking/v2/rest/CancelBookingFile\",\n\t\t\tsetBookingStatus: \"/interop/booking/v2/rest/SetBookingFileStatus\",\n\t\t\tsetBookingServiceStatus:\n\t\t\t\t\"/interop/booking/v2/rest/SetBookingFileServiceStatus\",\n\t\t\tinsertFilePaymentList: \"/interop/booking/v2/rest/InsertFilePaymentList\",\n\t\t} as const;\n\t}\n\n\tprivate handleApiStatus<T extends { rsStatus: RsStatus }>(\n\t\toutput: T,\n\t): Result<T, AvesError> {\n\t\tconst rsStatus = output.rsStatus;\n\t\tconst status = rsStatus?.status;\n\n\t\tif (status !== \"OK\") {\n\t\t\treturn err(\n\t\t\t\tapiError(\n\t\t\t\t\trsStatus.errorDescription as string,\n\t\t\t\t\tstatus,\n\t\t\t\t\trsStatus.errorCode,\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\n\t\treturn ok(output);\n\t}\n\n\tprivate toAvesError(error: unknown, defaultMessage: string): AvesError {\n\t\tif (error instanceof AvesError) {\n\t\t\treturn error;\n\t\t}\n\t\tif (error instanceof ValiError) {\n\t\t\tconst details = buildDetails(error.issues);\n\t\t\treturn validationError(`Validation error: ${details}`);\n\t\t}\n\t\tif (error instanceof Error) {\n\t\t\treturn unknownError(error.message);\n\t\t}\n\t\treturn unknownError(defaultMessage);\n\t}\n\n\tprivate async request<T extends { rsStatus: RsStatus }>(\n\t\tendpoint: string,\n\t\trequestBody: Record<string, unknown>,\n\t\tresponseRootKey: string,\n\t\tresponseSchema: BaseSchema<unknown, T, BaseIssue<unknown>>,\n\t): Promise<Result<T, AvesError>> {\n\t\tconst { signal, clear } = createTimeoutSignal(\n\t\t\tthis.options.timeoutMs ?? 30_000,\n\t\t);\n\n\t\ttry {\n\t\t\tconst url = this.createUrl(endpoint);\n\t\t\tconst xmlBody = jsonToXml(requestBody);\n\n\t\t\tconst response = await r(url, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/xml\",\n\t\t\t\t},\n\t\t\t\tbody: xmlBody,\n\t\t\t\tsignal,\n\t\t\t});\n\n\t\t\tconst responseText = await response.body.text();\n\n\t\t\tif (!isOk(response.statusCode)) {\n\t\t\t\treturn err(apiError(responseText, \"ERROR\", response.statusCode));\n\t\t\t}\n\n\t\t\tconst jsonResponse = xmlToJson(responseText);\n\t\t\tconst rootElement = jsonResponse[responseRootKey];\n\n\t\t\tif (!rootElement) {\n\t\t\t\treturn err(\n\t\t\t\t\tvalidationError(\n\t\t\t\t\t\t`Invalid response structure: missing root element '${responseRootKey}'`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst parseResult = safeParse(responseSchema, rootElement);\n\t\t\tif (!parseResult.success) {\n\t\t\t\tconst details = buildDetails(parseResult.issues);\n\t\t\t\treturn err(validationError(`Invalid response format: ${details}`));\n\t\t\t}\n\t\t\treturn this.handleApiStatus(parseResult.output);\n\t\t} catch (error) {\n\t\t\tif (isAbortError(error)) {\n\t\t\t\treturn err(apiError(\"Request timed out\", \"TIMEOUT\"));\n\t\t\t}\n\t\t\treturn err(this.toAvesError(error, \"Unknown error occurred\"));\n\t\t} finally {\n\t\t\tclear?.();\n\t\t}\n\t}\n\n\t/**\n\t * Shared booking/master request path: validate → wrap RqHeader → POST → parse response.\n\t */\n\tprivate async invokeOp<\n\t\tTIn,\n\t\tTApiBody extends Record<string, unknown>,\n\t\tTOut extends { rsStatus: RsStatus },\n\t>(opts: {\n\t\top: string;\n\t\tparams: TIn;\n\t\tapiSchema: BaseSchema<TIn, TApiBody, BaseIssue<unknown>>;\n\t\tendpoint: string;\n\t\trequestRoot: XMLRootElementValues;\n\t\tresponseRoot: string;\n\t\tresponseSchema: BaseSchema<unknown, TOut, BaseIssue<unknown>>;\n\t}): Promise<Result<TOut, AvesError>> {\n\t\ttry {\n\t\t\tconst apiBody = parse(opts.apiSchema, opts.params);\n\t\t\treturn this.request(\n\t\t\t\topts.endpoint,\n\t\t\t\tcreateRootElement(opts.requestRoot, {\n\t\t\t\t\tRqHeader: this.createRqHeader(),\n\t\t\t\t\t...apiBody,\n\t\t\t\t}),\n\t\t\t\topts.responseRoot,\n\t\t\t\topts.responseSchema,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\treturn err(\n\t\t\t\tthis.toAvesError(error, `Validation error occurred during ${opts.op}`),\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Search for master records\n\t * @param params - Search master record request body in camelCase ({@link SearchMasterRecord})\n\t * @returns Result containing list of matching master records in camelCase or error\n\t */\n\tasync search(\n\t\tparams: SearchMasterRecord,\n\t): Promise<Result<SearchMasterRecordRS, AvesError>> {\n\t\ttry {\n\t\t\tconst requestData = parse(SearchMasterRecordRequestSchema, {\n\t\t\t\tRqHeader: this.createRqHeader(),\n\t\t\t\tSearchMasterRecord: params,\n\t\t\t});\n\n\t\t\tconst requestBody = createRootElement(\n\t\t\t\tXML_ROOT_ELEMENTS.SEARCH_REQUEST,\n\t\t\t\trequestData,\n\t\t\t);\n\n\t\t\treturn this.request<SearchMasterRecordRS>(\n\t\t\t\tthis.endpoints.search,\n\t\t\t\trequestBody,\n\t\t\t\tXML_ROOT_ELEMENTS.SEARCH_RESPONSE,\n\t\t\t\tSearchMasterRecordResponseSchema,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\treturn err(\n\t\t\t\tthis.toAvesError(error, \"Validation error occurred during search\"),\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Insert or update a master record\n\t * @param record - Master record data in camelCase ({@link MasterRecordDetail})\n\t * @returns Result containing response with customer record code in camelCase or error\n\t */\n\tasync upsertRecord(\n\t\trecord: MasterRecordDetail,\n\t): Promise<Result<ManageMasterRecordRS, AvesError>> {\n\t\ttry {\n\t\t\tconst apiRecord = parse(MasterRecordDetailApiSchema, record);\n\n\t\t\tconst requestData = parse(ManageMasterRecordRequestSchema, {\n\t\t\t\tRqHeader: this.createRqHeader(),\n\t\t\t\tMasterRecordDetail: apiRecord,\n\t\t\t});\n\n\t\t\tconst requestBody = createRootElement(\n\t\t\t\tXML_ROOT_ELEMENTS.UPSERT_REQUEST,\n\t\t\t\trequestData,\n\t\t\t);\n\n\t\t\treturn this.request<ManageMasterRecordRS>(\n\t\t\t\tthis.endpoints.upsert,\n\t\t\t\trequestBody,\n\t\t\t\tXML_ROOT_ELEMENTS.UPSERT_RESPONSE,\n\t\t\t\tManageMasterRecordResponseSchema,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\treturn err(\n\t\t\t\tthis.toAvesError(error, \"Validation error occurred during upsert\"),\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Create a booking file (CreateBookingFile).\n\t * @param params - Booking file request body in camelCase ({@link BookingFileRQ})\n\t */\n\tasync createBooking(\n\t\tparams: BookingFileRQ,\n\t): Promise<Result<BookingFileRS, AvesError>> {\n\t\treturn this.invokeOp({\n\t\t\top: \"createBooking\",\n\t\t\tparams,\n\t\t\tapiSchema: BookingFileApiSchema,\n\t\t\tendpoint: this.endpoints.createBooking,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.BOOKING_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.BOOKING_RESPONSE,\n\t\t\tresponseSchema: BookingFileResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Modify booked services: add/replace lines, assign package, delete/nullify cost items.\n\t * @param params - ModFileServicesRQ body in camelCase ({@link ModFileServicesRQ})\n\t */\n\tasync modBookingServices(\n\t\tparams: ModFileServicesRQ,\n\t): Promise<Result<BookingFileDetailRS, AvesError>> {\n\t\treturn this.invokeOp({\n\t\t\top: \"modBookingServices\",\n\t\t\tparams,\n\t\t\tapiSchema: ModFileServicesApiSchema,\n\t\t\tendpoint: this.endpoints.modBookingServices,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.MOD_FILE_SERVICES_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.BOOKING_RESPONSE,\n\t\t\tresponseSchema: BookingFileDetailResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Modify booking file header (customer, passengers, notes, financial info).\n\t * Does not change package or cost lines.\n\t * @param params - ModFileHeaderRQ body in camelCase ({@link ModFileHeaderRQ})\n\t */\n\tasync modBookingHeader(\n\t\tparams: ModFileHeaderRQ,\n\t): Promise<Result<BookingStatusOnlyRS, AvesError>> {\n\t\treturn this.invokeOp({\n\t\t\top: \"modBookingHeader\",\n\t\t\tparams,\n\t\t\tapiSchema: ModFileHeaderApiSchema,\n\t\t\tendpoint: this.endpoints.modBookingHeader,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.MOD_FILE_HEADER_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.MOD_FILE_HEADER_RESPONSE,\n\t\t\tresponseSchema: BookingStatusOnlyResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Delete a booking file (CancelBookingFile).\n\t * @param params - CancelFileRQ body in camelCase ({@link CancelFileRQ})\n\t */\n\tasync cancelBooking(\n\t\tparams: CancelFileRQ,\n\t): Promise<Result<BookingStatusOnlyRS, AvesError>> {\n\t\treturn this.invokeOp({\n\t\t\top: \"cancelBooking\",\n\t\t\tparams,\n\t\t\tapiSchema: CancelFileApiSchema,\n\t\t\tendpoint: this.endpoints.cancelBooking,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.CANCEL_FILE_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.CANCEL_FILE_RESPONSE,\n\t\t\tresponseSchema: BookingStatusOnlyResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Change booking file status (incl. CANCELED / NULLIFIED).\n\t * @param params - SetStatusRQ body in camelCase ({@link SetFileStatusRQ})\n\t */\n\tasync setBookingStatus(\n\t\tparams: SetFileStatusRQ,\n\t): Promise<Result<BookingFileDetailRS, AvesError>> {\n\t\treturn this.invokeOp({\n\t\t\top: \"setBookingStatus\",\n\t\t\tparams,\n\t\t\tapiSchema: SetFileStatusApiSchema,\n\t\t\tendpoint: this.endpoints.setBookingStatus,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.SET_STATUS_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.SET_STATUS_RESPONSE,\n\t\t\tresponseSchema: BookingFileDetailResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Nullify a single booked service line (SetBookingFileServiceStatus).\n\t * @param params - SetStatusServiceRQ body in camelCase ({@link SetFileServiceStatusRQ})\n\t */\n\tasync setBookingServiceStatus(\n\t\tparams: SetFileServiceStatusRQ,\n\t): Promise<Result<BookingFileDetailRS, AvesError>> {\n\t\treturn this.invokeOp({\n\t\t\top: \"setBookingServiceStatus\",\n\t\t\tparams,\n\t\t\tapiSchema: SetFileServiceStatusApiSchema,\n\t\t\tendpoint: this.endpoints.setBookingServiceStatus,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.SET_STATUS_SERVICE_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.SET_STATUS_SERVICE_RESPONSE,\n\t\t\tresponseSchema: BookingFileDetailResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Register one or more payments on a booking file (InsertFilePaymentList).\n\t * @param params - FilePaymentListRQ body in camelCase ({@link FilePaymentListRQ})\n\t */\n\tasync insertFilePaymentList(\n\t\tparams: FilePaymentListRQ,\n\t): Promise<Result<BookingStatusOnlyRS, AvesError>> {\n\t\treturn this.invokeOp({\n\t\t\top: \"insertFilePaymentList\",\n\t\t\tparams,\n\t\t\tapiSchema: FilePaymentListApiSchema,\n\t\t\tendpoint: this.endpoints.insertFilePaymentList,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.FILE_PAYMENT_LIST_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.FILE_PAYMENT_LIST_RESPONSE,\n\t\t\tresponseSchema: BookingStatusOnlyResponseSchema,\n\t\t});\n\t}\n}\n"],"mappings":"qMAEA,MAAa,EAAc,CAC1B,WAAY,aACZ,IAAK,MACL,QAAS,SACV,EAOA,IAAa,EAAb,cAA+B,KAAM,CAEnB,KACA,QACA,OACA,KAJjB,YACC,EACA,EACA,EACA,EACC,CACD,MAAM,CAAO,EALG,KAAA,KAAA,EACA,KAAA,QAAA,EACA,KAAA,OAAA,EACA,KAAA,KAAA,EAGhB,KAAK,KAAO,YACZ,KAAK,OAAS,GAAQ,YAAY,EAClC,KAAK,KAAO,KAAK,UAAU,CAAI,CAChC,CAEA,UAAkB,EAAgC,CAIjD,OAHI,OAAO,GAAS,SACZ,OAAO,SAAS,EAAM,EAAE,EAEzB,GAAQ,CAChB,CACD,EAEA,SAAgB,EAAgB,EAA4B,CAC3D,OAAO,IAAI,EAAU,EAAY,WAAY,CAAO,CACrD,CAEA,SAAgB,EACf,EACA,EACA,EACY,CACZ,OAAO,IAAI,EAAU,EAAY,IAAK,EAAS,EAAQ,CAAI,CAC5D,CAEA,SAAgB,EAAa,EAA4B,CACxD,OAAO,IAAI,EAAU,EAAY,QAAS,CAAO,CAClD,CAEA,SAAgB,GAAa,EAA+C,CAC3E,OAAO,EAAO,IAAI,CAAW,CAAC,CAAC,KAAK,IAAI,CACzC,CAEA,SAAS,EAAY,EAAmC,CACvD,IAAM,EAAO,GAAW,EAAM,IAAI,EAC5B,EAAU,EAAM,SAAW,gBAEjC,OAAO,EAAO,GAAG,EAAK,IAAI,IAAY,CACvC,CAEA,SAAS,GAAW,EAA+C,CAClE,GAAI,CAAC,GAAQ,EAAK,SAAW,EAAG,OAEhC,IAAM,EAAW,EACf,IAAI,EAAc,CAAC,CACnB,OAAQ,GAA+B,IAAY,IAAA,EAAS,EAE9D,OAAO,EAAS,OAAS,EAAI,EAAS,KAAK,GAAG,EAAI,IAAA,EACnD,CAEA,SAAS,GAAe,EAAsC,CAC7D,GAAI,OAAO,GAAY,UAAY,OAAO,GAAY,SACrD,OAAO,OAAO,CAAO,EAGtB,GAAI,OAAO,GAAY,UAAY,GAAoB,QAAS,EAC/D,OAAO,OAAO,EAAQ,GAAG,CAI3B,CAEA,SAAgB,GAAa,EAAyB,CACrD,OAAO,aAAiB,OAAS,EAAM,OAAS,YACjD,CCVA,SAAS,GAAc,EAAqB,CAC3C,OAAO,EAAI,OAAO,CAAC,CAAC,CAAC,YAAY,EAAI,EAAI,MAAM,CAAC,CACjD,CAEA,SAAS,GAAc,EAAqB,CAC3C,OAAO,EAAI,OAAO,CAAC,CAAC,CAAC,YAAY,EAAI,EAAI,MAAM,CAAC,CACjD,CAKA,SAAS,EAAgB,EAAuB,CAC/C,OACC,aAAe,MACf,aAAe,QACf,aAAe,KACf,aAAe,KACf,aAAe,KAEjB,CAmIA,MAAa,EAAmB,IAAI,IACnC,OAAO,OAAO,CA5Hd,OAAQ,CAAC,SAAU,SAAU,YAAa,WAAY,QAAQ,EAG9D,aAAc,CAAC,aAAc,gBAAgB,EAG7C,gBAAiB,CAChB,eACA,cACA,gBACA,wBACA,gBACA,wBACA,4BACA,yBACD,EAGA,iBAAkB,CACjB,SACA,SACA,kBACA,gBACA,cACA,cACD,EAGA,gBAAiB,CAChB,0BACA,wBACA,0BACD,EAGA,cAAe,CAAC,MAAO,OAAO,EAG9B,OAAQ,CAAC,UAAW,SAAS,EAG7B,kBAAmB,CAAC,QAAS,aAAa,EAC1C,eAAgB,CAAC,SAAU,SAAU,SAAU,SAAU,SAAU,QAAQ,EAC3E,YAAa,CAAC,OAAQ,WAAY,YAAY,EAC9C,eAAgB,CAAC,YAAY,EAC7B,oBAAqB,CAAC,WAAY,iBAAiB,EACnD,wBAAyB,CAAC,mBAAoB,aAAc,aAAa,EACzE,eAAgB,CAAC,eAAgB,cAAe,YAAY,EAC5D,cAAe,CACd,cACA,cACA,SACA,cACA,aACD,EACA,kBAAmB,CAClB,cACA,cACA,kBACA,YACA,SACA,aACD,EACA,sBAAuB,CACtB,QACA,YACA,UACA,wBACD,EACA,sBAAuB,CACtB,QACA,SACA,qBACA,eACA,4BACA,oBACD,EACA,wBAAyB,CACxB,QACA,SACA,qBACA,eACA,4BACA,oBACD,EACA,YAAa,CACZ,eACA,eACA,OACA,UACA,WACA,sBACA,QACA,WACA,WACD,EACA,+BAAgC,CAC/B,sBACA,iBACA,iBACD,EACA,WAAY,CAAC,QAAS,cAAe,8BAA8B,EACnE,QAAS,CAAC,QAAS,cAAc,EACjC,WAAY,CAAC,QAAS,OAAO,EAC7B,gBAAiB,CAAC,MAAO,UAAW,eAAe,EACnD,qBAAsB,CACrB,uBACA,8BACD,EACA,2CAA4C,CAAC,gBAAgB,EAG7D,yBAA0B,CACzB,kBACA,0BACA,aACD,CAQc,CAAiB,CAAC,CAAC,KAAK,CACvC,EAwBM,IACL,EACA,EACA,EAAc,KASV,GAJH,IAAkB,SAClB,IAAkB,UAClB,IAAkB,QAGX,IAAI,IAGL,IAAI,IAIN,EAAqB,IAAI,IAAoB,CAClD,CAAC,gBAAiB,eAAe,EACjC,CAAC,MAAO,KAAK,CACd,CAAC,EAGK,GAAoB,IAAI,IAAoB,CACjD,CAAC,gBAAiB,eAAe,EACjC,CAAC,MAAO,KAAK,CACd,CAAC,EAOD,SAAgB,EACf,EACA,EACe,CACf,GAAI,CAAC,GAAS,OAAO,GAAU,UAAY,EAAgB,CAAK,EAC/D,OAAO,EAGR,GAAI,MAAM,QAAQ,CAAK,EACtB,OAAO,EAAM,IAAK,GAAS,EAAkB,CAAI,CAAC,EAGnD,IAAM,EAAU,GAAS,2BACnB,EAAmB,GAAS,kCAC5B,EAAkC,CAAC,EAEzC,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,CAAK,EAAG,CACjD,IAAM,EAAY,EAAmB,IAAI,CAAG,EACxC,EAAmB,IAAI,CAAG,EAC3B,GAAc,CAAG,EACd,EAAc,EAAiB,IAAI,CAAG,GAAK,CAAC,GAAS,SAAS,CAAG,EACjE,EAAqB,GAC1B,EACA,EACA,GAAkB,SAAS,CAAG,CAC/B,EACM,EAAW,EAAc,EAAqB,EAEpD,EAAO,GAAY,EAAe,EAAQ,GACzC,EAAkB,EAAK,IAAA,EAAS,CACjC,CACD,CAEA,OAAO,CACR,CAMA,SAAgB,EAAqB,EAAuB,CAC3D,GAAsB,OAAO,GAAU,WAAnC,GAA+C,EAAgB,CAAK,EACvE,OAAO,EAGR,GAAI,MAAM,QAAQ,CAAK,EACtB,OAAO,EAAM,IAAK,GAAS,EAAkB,CAAI,CAAC,EAGnD,IAAM,EAAkC,CAAC,EAEzC,IAAK,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,CAAK,EAAG,CACjD,IAAM,EAAY,EAAI,WAAW,GAAG,EAAI,EAAI,MAAM,CAAC,EAAI,EACjD,EAAW,GAAkB,IAAI,CAAS,EAC5C,GAAkB,IAAI,CAAS,EAChC,GAAc,CAAS,EAE1B,EAAO,GAAY,EAAe,EAAO,CAAiB,CAC3D,CAEA,OAAO,CACR,CAEA,SAAS,EACR,EACA,EACU,CASV,MARI,CAAC,GAAS,OAAO,GAAU,UAAY,EAAgB,CAAK,EACxD,EAGJ,MAAM,QAAQ,CAAK,EACf,EAAM,IAAK,GAAS,EAAe,EAAM,CAAe,CAAC,EAG1D,EAAgB,CAAgC,CACxD,CChWA,SAAgB,EAEd,EAAqB,CACtB,OAAO,EAAE,KACR,EACA,EAAE,UAAW,GAAU,EAAkB,CAAK,CAAC,CAChD,CACD,CAKA,SAAgB,EAEd,EAAiB,CAClB,OAAO,EAAE,KACR,EACA,EAAE,UAAW,GAAU,EAAkB,CAAK,CAAC,CAChD,CACD,CAQA,SAAgB,EAGd,EAAiD,CAClD,IAAM,EAA6C,CAAC,EAGpD,IAAK,IAAM,KAAO,EAAY,QAAS,CACtC,IAAM,EAAc,EAAiB,IAAI,CAAG,EACtC,EAAY,EAAI,OAAO,CAAC,CAAC,CAAC,YAAY,EAAI,EAAI,MAAM,CAAC,EACrD,EAAW,EAAc,IAAI,IAAc,EAEjD,EAAkB,GAAY,EAAY,QAAQ,EACnD,CAEA,OAAO,EAAE,OAAO,CAA6B,CAC9C,CCjDA,MAAa,EAAgB,EAAE,MAAM,CACpC,EAAE,QAAQ,MAAM,EAChB,EAAE,QAAQ,OAAO,EACjB,EAAE,QAAQ,CACX,CAAC,EAOY,GAAiC,EAAE,MAAM,CACrD,EAAE,QAAQ,WAAW,EACrB,EAAE,QAAQ,kBAAkB,EAC5B,EAAE,QAAQ,WAAW,EACrB,EAAE,QAAQ,UAAU,EACpB,EAAE,QAAQ,UAAU,CACrB,CAAC,EAGY,GAA2B,EAAE,MAAM,CAC/C,EAAE,QAAQ,WAAW,EACrB,EAAE,QAAQ,kBAAkB,EAC5B,EAAE,QAAQ,WAAW,EACrB,EAAE,QAAQ,UAAU,EACpB,EAAE,QAAQ,WAAW,EACrB,EAAE,QAAQ,UAAU,CACrB,CAAC,EAGY,GAA8B,EAAE,MAAM,CAClD,EAAE,QAAQ,WAAW,EACrB,EAAE,QAAQ,kBAAkB,EAC5B,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,WAAW,EACrB,EAAE,QAAQ,QAAQ,EAClB,EAAE,QAAQ,UAAU,EACpB,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,WAAW,EACrB,EAAE,QAAQ,WAAW,EACrB,EAAE,QAAQ,UAAU,CACrB,CAAC,EAEK,EAAyB,CAC9B,QAAS,YACT,OAAQ,WACR,UAAW,SACZ,EAWA,SAAgB,GACf,EAC6B,CAM7B,OALI,KAAS,EACL,EACN,GAGK,CACR,CAMA,MAAa,GAAwB,EAAE,MAAM,CAC5C,EAAE,QAAQ,KAAK,EACf,EAAE,QAAQ,QAAQ,EAClB,EAAE,QAAQ,KAAK,EACf,EAAE,QAAQ,KAAK,EACf,EAAE,QAAQ,OAAO,CAClB,CAAC,EAEY,EAAsB,EAAE,MAAM,CAC1C,EAAE,QAAQ,cAAc,EACxB,EAAE,QAAQ,WAAW,EACrB,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,UAAU,EACpB,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,OAAO,EACjB,EAAE,QAAQ,QAAQ,EAClB,EAAE,QAAQ,WAAW,EACrB,EAAE,QAAQ,UAAU,EACpB,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,OAAO,EACjB,EAAE,QAAQ,OAAO,EACjB,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,WAAW,CACtB,CAAC,EAEY,GAA4B,EAAE,MAAM,CAChD,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,mBAAmB,EAC7B,EAAE,QAAQ,mBAAmB,EAC7B,EAAE,QAAQ,2BAA2B,EACrC,EAAE,QAAQ,YAAY,EACtB,EAAE,QAAQ,WAAW,EACrB,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,WAAW,EACrB,EAAE,QAAQ,UAAU,EACpB,EAAE,QAAQ,SAAS,CACpB,CAAC,EASD,SAAgB,GAA+B,EAAa,CAC3D,IAAM,EAAQ,GAA2B,CACxC,GAAqB,OAAO,GAAS,WAAjC,EAA2C,OAAO,EACtD,GAAI,MAAM,QAAQ,CAAI,EAAG,OAAO,EAAK,IAAI,CAAI,EAC7C,IAAM,EAAkC,CAAC,EACzC,IAAK,GAAM,CAAC,EAAK,KAAQ,OAAO,QAAQ,CAAI,EAAG,CAC9C,GAAI,IAAQ,iBAAmB,MAAM,QAAQ,CAAG,GAAK,CAAC,EAAI,OAAQ,CACjE,EAAO,GAAO,GACd,QACD,CACA,EAAO,GAAO,EAAK,CAAG,CACvB,CACA,OAAO,CACR,EACA,OAAO,EAAK,CAAK,CAClB,CAMA,SAAgB,GAAoB,EAAU,CAC7C,OAAO,EAAkB,GAA4B,CAAK,EAAG,CAC5D,2BAA4B,CAAC,YAAa,SAAS,EACnD,kCAAmC,CAAC,QAAS,SAAU,OAAO,CAC/D,CAAC,CACF,CAGA,SAAgB,EAEd,EAAqB,CACtB,OAAO,EAAE,KAAK,EAAa,EAAE,UAAU,EAAgB,CAAC,CACzD,CChJA,SAAgB,EAEd,EAAqB,CACtB,OAAO,EAAE,KACR,EAAE,MAAM,CAAC,EAAE,MAAM,CAAU,EAAG,CAAU,CAAC,EACzC,EAAE,UAAW,GACZ,MAAM,QAAQ,CAAK,EAAI,EAAQ,CAAC,CAAK,CACtC,CACD,CACD,CAEA,MAAM,EAAY,EAAE,MAAM,CAAC,EAAE,OAAO,EAAG,EAAE,OAAO,CAAC,CAAC,EAGrC,GAA6B,EAAE,KAC3C,EAAE,OAAO,CACR,SAAU,GACV,eAAgB,EAAE,SAAS,EAAE,OAAO,CAAC,EACrC,cAAe,EAAE,SAAS,EAAE,OAAO,CAAC,CACrC,CAAC,EACD,EAAE,UAAW,IAAY,CACxB,SAAU,GAA8B,EAAO,SAAS,EACxD,eAAgB,EAAO,iBAAmB,EAAO,cAClD,EAAE,CACH,EAEa,GAA6B,EAAE,OAAO,CAClD,UAAW,EAAE,OAAO,EACpB,SAAU,CACX,CAAC,EAEY,GAAwB,EAAE,OAAO,CAC7C,kBAAmB,EAAE,SAAS,EAAU,EAA0B,CAAC,CACpE,CAAC,EAEY,GAAoC,EAAE,OAAO,CACzD,kBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,EACxC,wBAAyB,EAAE,SAAS,CAAS,EAC7C,oBAAqB,EAAE,SAAS,CAAS,EACzC,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,gBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,EACtC,qBAAsB,EAAE,SAAS,CAAS,EAC1C,aAAc,EAAE,SAAS,EAAqB,CAC/C,CAAC,EAEY,GAAwB,EAAE,OAAO,CAC7C,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,SAAU,EAAE,SAAS,EAAE,OAAO,CAAC,EAC/B,gBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CACvC,CAAC,EAEY,GAAwB,EAAE,OAAO,CAC7C,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,eAAgB,EAAE,SAAS,EAAE,OAAO,CAAC,CACtC,CAAC,EAGK,GAAgC,EAAE,OAAO,CAC9C,OAAQ,EAAE,OAAO,EACjB,eAAgB,EAAE,SAAS,EAAE,OAAO,CAAC,EACrC,wBAAyB,EAAE,SAAS,CAAS,EAC7C,0BAA2B,EAAE,SAAS,CAAS,EAC/C,gBAAiB,EAAE,SAAS,EAAqB,EACjD,cAAe,EAAE,SAAS,CAAmB,EAC7C,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,kBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,EACxC,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,kBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,EACxC,cAAe,EAAE,SAAS,EAAyB,EACnD,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,IAAK,EAAE,SAAS,CAAS,EACzB,IAAK,EAAE,SAAS,CAAS,EACzB,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,cAAe,EAAE,SAAS,EAAE,OAAO,CAAC,EACpC,qBAAsB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3C,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,wBAAyB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9C,aAAc,EAAE,SAAS,EAAqB,EAC9C,aAAc,EAAE,SAAS,EAAqB,EAC9C,yBAA0B,EAAE,SAAS,EAAiC,CACvE,CAAC,EAGY,GAA+B,EAAE,KAC7C,GACA,EAAE,UAAW,IAAa,CACzB,OAAQ,EAAQ,QAChB,eAAgB,EAAQ,gBACxB,wBACC,EAAQ,0BAA4B,EAAQ,2BAC7C,gBAAiB,EAAQ,gBACzB,cAAe,EAAQ,cACvB,iBAAkB,EAAQ,iBAC1B,kBAAmB,EAAQ,kBAC3B,iBAAkB,EAAQ,iBAC1B,kBAAmB,EAAQ,kBAC3B,cAAe,EAAQ,cACvB,UAAW,EAAQ,UACnB,QAAS,EAAQ,QACjB,IAAK,EAAQ,IACb,IAAK,EAAQ,IACb,WAAY,EAAQ,WACpB,cAAe,EAAQ,cACvB,qBAAsB,EAAQ,qBAC9B,iBAAkB,EAAQ,iBAC1B,wBAAyB,EAAQ,wBACjC,aAAc,EAAQ,aACtB,aAAc,EAAQ,aACtB,yBAA0B,EAAQ,wBACnC,EAAE,CACH,EAEa,GAA6B,EAAE,OAAO,CAClD,oBAAqB,EAAE,SAAS,EAAU,EAA4B,CAAC,CACxE,CAAC,EAGY,EAA6B,EAAE,OAAO,CAClD,gBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,EACtC,6BAA8B,EAAE,SAAS,CAAS,EAClD,4BAA6B,EAAE,SAAS,CAAS,EACjD,iBAAkB,EAAE,SAAS,CAAS,EACtC,yBAA0B,EAAE,SAAS,CAAS,EAC9C,aAAc,EAAE,SAAS,CAAS,EAClC,eAAgB,EAAE,SAAS,CAAS,EACpC,WAAY,EAAE,SAAS,CAAS,CACjC,CAAC,EAEY,GAA2B,EAAE,OAAO,CAChD,OAAQ,EAAE,OAAO,EACjB,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,iBAAkB,EAAE,SAAS,CAAS,EACtC,KAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3B,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,IAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAC1B,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,gBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,EACtC,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,MAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAC5B,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,CACxC,CAAC,EAEY,GAAyB,EAAE,OAAO,CAC9C,gBAAiB,EAAE,SAAS,EAAU,EAAwB,CAAC,CAChE,CAAC,EAEK,GAAoC,EAAE,OAAO,CAClD,oBAAqB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC1C,cAAe,EAAE,SAAS,EAAE,OAAO,CAAC,EACpC,eAAgB,EAAE,SAAS,CAAS,EACpC,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,YAAa,EAAE,SAAS,CAAS,CAClC,CAAC,EAEY,GAAmC,EAAE,KACjD,GACA,EAAE,UAAW,IAAc,CAC1B,oBACC,EAAS,sBAAwB,EAAS,iBAC3C,cAAe,EAAS,gBAAkB,EAAS,WACnD,eAAgB,EAAS,iBAAmB,EAAS,WACtD,EAAE,CACH,EAEa,GAAiC,EAAE,OAAO,CACtD,eAAgB,EAAE,SAAS,EAAU,EAAgC,CAAC,CACvE,CAAC,EAEY,GAAgC,EAAE,OAAO,CACrD,gBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,EACtC,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,wBAAyB,EAAE,SAAS,EAAE,OAAO,CAAC,CAC/C,CAAC,EAEY,GAA+B,EAAE,OAAO,CACpD,qBAAsB,EAAE,SAAS,EAAU,EAA6B,CAAC,CAC1E,CAAC,EAEY,GAAmC,EAAE,OAAO,CACxD,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,QAAS,EAAE,SAAS,CAAS,CAC9B,CAAC,EAEY,EAAkC,EAAE,OAAO,CACvD,wBAAyB,EAAE,SAC1B,EAAU,EAAgC,CAC3C,CACD,CAAC,EAEK,GAA8B,EAAE,OAAO,CAC5C,mBAAoB,EAAE,SAAS,EAAE,OAAO,CAAC,EACzC,gBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,EACtC,mBAAoB,EAAE,SAAS,EAAE,OAAO,CAAC,EACzC,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,cAAe,EAAE,SAAS,EAAE,OAAO,CAAC,EACpC,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,kBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,EACxC,kBAAmB,EAAE,SAAS,EAA0B,EACxD,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,OAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,EAC7B,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,sBAAuB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC5C,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,kBAAmB,EAAE,SAAS,EAA0B,EACxD,kBAAmB,EAAE,SAAS,CAA0B,EACxD,UAAW,EAAE,SAAS,CAAS,EAC/B,cAAe,EAAE,SAAS,EAAsB,EAChD,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,oBAAqB,EAAE,SAAS,EAA4B,EAC5D,uBAAwB,EAAE,SAAS,CAA+B,EAClE,sBAAuB,EAAE,SAAS,EAA8B,CACjE,CAAC,EAMY,GAA6B,EAAE,KAC3C,GACA,EAAE,UAAW,IAAY,CACxB,mBAAoB,EAAO,qBAAuB,EAAO,gBACzD,mBAAoB,EAAO,mBAC3B,aAAc,EAAO,aACrB,cAAe,EAAO,cACtB,iBAAkB,EAAO,iBACzB,kBAAmB,EAAO,kBAC1B,kBAAmB,EAAO,kBAC1B,YAAa,EAAO,YACpB,OAAQ,EAAO,OACf,YAAa,EAAO,YACpB,aAAc,EAAO,aACrB,sBAAuB,EAAO,sBAC9B,UAAW,EAAO,UAClB,QAAS,EAAO,QAChB,YAAa,EAAO,YACpB,kBAAmB,EAAO,kBAC1B,kBAAmB,EAAO,kBAC1B,UAAW,EAAO,UAClB,cAAe,EAAO,cACtB,UAAW,EAAO,UAClB,UAAW,EAAO,UAClB,oBAAqB,EAAO,oBAC5B,uBAAwB,EAAO,uBAC/B,sBAAuB,EAAO,qBAC/B,EAAE,CACH,ECxQa,EAAiB,EAAE,OAAO,CACtC,UAAW,EAAE,KAAK,EAAE,OAAO,EAAG,EAAE,UAAU,CAAC,EAAG,EAAE,UAAU,CAAC,CAAC,EAC5D,UAAW,EAAE,OAAO,EACpB,aAAc,EAAE,QAAQ,KAAK,EAC7B,YAAa,EAAE,QAAQ,KAAK,EAC5B,gBAAiB,EAAE,SAClB,EAAE,KAAK,EAAE,OAAO,EAAG,EAAE,UAAU,CAAC,EAAG,EAAE,UAAU,CAAC,CAAC,CAClD,CACD,CAAC,EAEK,GAAiB,EAAE,SACxB,EAAE,KACD,EAAE,OAAO,EACT,EAAE,UAAW,GAAU,EAAM,MAAM,GAAG,CAAC,CACxC,CACD,EAKa,EAAiB,EAAE,KAC/B,EAAE,OAAO,CACR,UAAW,EAAE,MAAM,CAClB,EAAE,QAAQ,IAAI,EACd,EAAE,QAAQ,OAAO,EACjB,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,SAAS,CACpB,CAAC,EACD,UAAW,EAAE,SACZ,EAAE,KACD,EAAE,MAAM,CAAC,EAAE,OAAO,EAAG,EAAE,OAAO,CAAC,CAAC,EAChC,EAAE,UAAW,GAAQ,OAAO,CAAG,CAAC,CACjC,CACD,EACA,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,SAAU,EACX,CAAC,EACD,EAAE,UAAW,IACL,CACN,OAAQ,EAAM,WACd,UAAW,EAAM,UACjB,iBAAkB,EAAM,iBACxB,SAAU,EAAM,QACjB,EACA,CACF,EC9BM,GAA+B,EAAE,OAAO,CAC7C,MAAO,GACP,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,CACnC,CAAC,EAMY,GAA4B,EAAE,OAAO,CACjD,OAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EACrD,OAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EACrD,OAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EACrD,OAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EACrD,OAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EACrD,OAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CACtD,CAAC,EAMK,GAAyB,EAAE,OAAO,CACvC,KAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3B,SAAU,EAAE,SAAS,EAAE,OAAO,CAAC,EAC/B,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAClC,CAAC,EAMK,GAA4B,EAAE,OAAO,CAC1C,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAElC,CAAC,EAMK,GAAqB,EAAE,MAAM,CAClC,EAAE,QAAQ,cAAc,EACxB,EAAE,QAAQ,oBAAoB,EAC9B,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,kBAAkB,EAC5B,EAAE,QAAQ,sBAAsB,EAChC,EAAE,QAAQ,uBAAuB,EACjC,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,kBAAkB,EAC5B,EAAE,QAAQ,aAAa,EACvB,EAAE,QAAQ,kBAAkB,EAC5B,EAAE,QAAQ,UAAU,EACpB,EAAE,QAAQ,eAAe,EACzB,EAAE,QAAQ,mBAAmB,EAC7B,EAAE,QAAQ,cAAc,CACzB,CAAC,EAEK,GAAwD,EAAE,OAAO,CACtE,eAAgB,EAAE,SACjB,EAAE,MAAM,CAAC,EAAE,QAAQ,kBAAkB,EAAG,EAAE,QAAQ,iBAAiB,CAAC,CAAC,CACtE,CACD,CAAC,EAEK,GAA0D,EAAE,OAAO,CACxE,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAClC,CAAC,EAEK,GAAiD,EAAE,MAAM,CAC9D,GACA,EACD,CAAC,EAEK,GAAiC,EAAE,OAAO,CAC/C,aAAc,GACd,oCAAqC,EAAE,SACtC,EACD,CACD,CAAC,EAEY,GAAiC,EAAE,OAAO,CACtD,SAAU,EAAE,SAAS,CAAa,EAClC,gBAAiB,EAAE,SAAS,CAAa,EACzC,qBAAsB,EAAE,SAAS,EAAE,MAAM,EAA8B,CAAC,CACzE,CAAC,EAMK,GAAqC,EAAE,OAAO,CACnD,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,CACnC,CAAC,EAEK,GAA4B,EAAE,OAAO,CAC1C,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAClC,CAAC,EAEK,GAA0B,EAAE,MAAM,CACvC,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,CACd,CAAC,EAEK,GAA2B,EAAE,OAAO,CACzC,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,OAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,EAC7B,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,YAAa,EAAE,SAAS,EAAuB,CAChD,CAAC,EAEK,GAAmC,EAAE,OAAO,CACjD,eAAgB,EAAE,SAAS,EAAE,MAAM,EAAkC,CAAC,CACvE,CAAC,EAEK,GAA0B,EAAE,OAAO,CACxC,eAAgB,EAAE,SAAS,EAAE,MAAM,EAAyB,CAAC,CAC9D,CAAC,EAEK,GAAyB,EAAE,OAAO,CACvC,cAAe,EAAE,SAAS,EAAE,MAAM,EAAwB,CAAC,CAC5D,CAAC,EAMK,GAAsB,EAAE,MAAM,CACnC,EAAE,QAAQ,aAAa,EACvB,EAAE,QAAQ,eAAe,EACzB,EAAE,QAAQ,cAAc,EACxB,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,WAAW,EACrB,EAAE,QAAQ,UAAU,EACpB,EAAE,QAAQ,KAAK,EACf,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,WAAW,EACrB,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,KAAK,EACf,EAAE,QAAQ,KAAK,EACf,EAAE,QAAQ,OAAO,EACjB,EAAE,QAAQ,MAAM,EAChB,EAAE,QAAQ,SAAS,CACpB,CAAC,EAGY,GAAyB,EAAE,OAAO,CAC9C,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,KAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3B,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,SAAU,EAAE,SAAS,EAAmB,EACxC,oBAAqB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC1C,MAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAC5B,SAAU,EAAE,SAAS,EAAE,OAAO,CAAC,EAC/B,UAAW,EAAE,SAAS,EAAmB,CAC1C,CAAC,EAEY,GAA6B,EAAE,OAAO,CAClD,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,cAAe,EAAE,SAAS,EAAE,OAAO,CAAC,EACpC,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,kBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,EACxC,cAAe,EAAE,SAAS,EAAE,OAAO,CAAC,EACpC,qBAAsB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3C,YAAa,EAAE,SAAS,EAAsB,CAC/C,CAAC,EAEK,GAAsB,EAAE,OAAO,CAAE,IAAK,EAAE,OAAO,CAAE,CAAC,EAE3C,EAAmC,EAAE,OAAO,CACxD,MAAO,EAAE,OAAO,EAChB,OAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,EAC7B,gBAAiB,GACjB,cAAe,EAAE,SAAS,CAAmB,EAC7C,eAAgB,EAAE,SAAS,EAAE,OAAO,CAAC,EACrC,UAAW,EAAE,OAAO,EACpB,QAAS,EAAE,OAAO,EAClB,IAAK,EAAE,OAAO,EACd,IAAK,EAAE,OAAO,EACd,cAAe,EAAE,SAAS,EAAE,MAAM,EAAmB,CAAC,EACtD,YAAa,EAAE,OAAO,EACtB,gBAAiB,EAAE,SAAS,EAA0B,EACtD,YAAa,EAAE,SAAS,EAAsB,EAC9C,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,mBAAoB,EAAE,SAAS,EAAE,OAAO,CAAC,EACzC,kBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,EACxC,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,qBAAsB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3C,kBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,EACxC,gBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,EACtC,kBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,EACxC,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,SAAU,EAAE,SAAS,EAAE,OAAO,CAAC,EAC/B,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,kBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,CACzC,CAAC,EAEY,EAAmC,EAAE,OAAO,CACxD,MAAO,EAAE,OAAO,EAChB,UAAW,EAAE,OAAO,EACpB,QAAS,EAAE,OAAO,EAClB,uBAAwB,EAAE,SAAS,CAAa,CACjD,CAAC,EAEK,GAAiC,EAAE,OAAO,CAC/C,sBAAuB,EAAE,SAAS,EAAE,MAAM,CAAgC,CAAC,CAC5E,CAAC,EAEK,GAAiC,EAAE,OAAO,CAC/C,sBAAuB,CACxB,CAAC,EAEK,GAAmC,EAAE,OAAO,CACjD,wBAAyB,EAAE,SAC1B,EAAE,MAAM,CAAgC,CACzC,CACD,CAAC,EAMK,EAAwB,EAAE,OAAO,CACtC,MAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAC5B,MAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAC5B,KAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAC5B,CAAC,EAEK,GAAsB,EAAE,OAAO,CACpC,WAAY,EAAE,SAAS,EAAE,MAAM,CAAqB,CAAC,CACtD,CAAC,EAMK,EAA8B,EAAE,MAAM,CAC3C,EAAE,QAAQ,IAAI,EACd,EAAE,QAAQ,IAAI,EACd,EAAE,QAAQ,IAAI,EACd,EAAE,QAAQ,IAAI,CACf,CAAC,EAEK,EAAsB,CAC3B,IAAK,EAAE,OAAO,EACd,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,cAAe,EAAE,SAAS,CAAa,EACvC,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,KAAM,EAAE,OAAO,EACf,IAAK,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,EAAG,EAAE,QAAQ,GAAG,CAAC,CAAC,EAC7C,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,gBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,EACtC,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,MAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAC5B,MAAO,EAAE,SAAS,EAAE,MAAM,CAAqB,CAAC,EAChD,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,UAAW,EAAE,SACZ,EAAE,OAAO,CACR,OAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,EAC7B,OAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,EAC7B,gBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,EACtC,cAAe,EAAE,SAAS,EAAE,OAAO,CAAC,EACpC,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,CACpC,CAAC,CACF,CACD,EAGa,GAAmC,EAAE,OAAO,CACxD,GAAG,EACH,aAAc,CACf,CAAC,EAGY,EAAkC,EAAE,OAAO,CACvD,GAAG,EACH,aAAc,EAAE,SAAS,CAA2B,CACrD,CAAC,EAEK,GAA2B,EAAE,OAAO,CACzC,gBAAiB,EAClB,CAAC,EAMK,GAA4B,EAAE,MAAM,CACzC,EAAE,QAAQ,MAAM,EAChB,EAAE,QAAQ,MAAM,EAChB,EAAE,QAAQ,KAAK,EACf,EAAE,QAAQ,MAAM,EAChB,EAAE,QAAQ,eAAe,EACzB,EAAE,QAAQ,SAAS,CACpB,CAAC,EAEY,EAAkC,EAAE,OAAO,CACvD,qBAAsB,EAAE,SAAS,EAAyB,EAC1D,6BAA8B,EAAE,SAAS,EAAE,OAAO,CAAC,CACpD,CAAC,EAMK,GAA0B,EAAE,MAAM,CACvC,EAAE,QAAQ,aAAa,EACvB,EAAE,QAAQ,iBAAiB,EAC3B,EAAE,QAAQ,cAAc,CACzB,CAAC,EAEK,GAAyB,EAAE,MAAM,CACtC,EAAE,QAAQ,WAAW,EACrB,EAAE,QAAQ,cAAc,EACxB,EAAE,QAAQ,cAAc,CACzB,CAAC,EAqDY,GAAuB,EA3CH,EAAE,OAAO,CACzC,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,mBAAoB,EAAE,SAAS,EAAE,OAAO,CAAC,EACzC,gBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,EACtC,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,eAAgB,GAChB,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,kBAAmB,GACnB,eAAgB,EAAE,SAAS,EAAyB,EACpD,YAAa,EAAE,SAAS,EAAsB,EAC9C,uBAAwB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC7C,UAAW,EAAE,OAAO,EACpB,QAAS,EAAE,OAAO,EAClB,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,qBAAsB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3C,qBAAsB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3C,qBAAsB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3C,oBAAqB,EAAE,SAAS,EAA8B,EAC9D,sBAAuB,EAAE,SAAS,EAAgC,EAClE,aAAc,EAAE,SAAS,EAAuB,EAChD,YAAa,EAAE,SAAS,EAAsB,EAC9C,oBAAqB,EAAE,SAAS,EAA8B,EAC9D,oBAAqB,EAAE,MAAM,EAA8B,EAC3D,kBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,EACxC,sBAAuB,EAAE,SAAS,EAAgC,EAClE,wBAAyB,EAAE,SAAS,CAAa,EACjD,cAAe,EAAE,MAAM,EAAwB,EAC/C,SAAU,EAAE,SAAS,EAAmB,EACxC,qBAAsB,EAAE,SAAS,CAA+B,EAChE,gBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,EACtC,kBAAmB,EAAE,SAAS,EAAuB,EACrD,iBAAkB,EAAE,SAAS,CAAa,EAC1C,iBAAkB,EAAE,SAAS,EAAsB,EACnD,gCAAiC,EAAE,SAAS,CAAa,CAC1D,CAM2D,CAAiB,EAM/D,EAA4B,EACxC,EAAE,OAAO,CACR,SAAU,EACV,kBAAmB,EAAE,SAAS,EAA0B,EACxD,uBAAwB,EAAE,SAAS,CAA+B,EAClE,mCAAoC,EAAE,SAAS,CAA0B,EACzE,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,CACxC,CAAC,CACF,EC5Za,EAAkC,EAC9C,EAAE,OAAO,CAAE,SAAU,CAAe,CAAC,CACtC,EAMa,EAAkC,EAMzC,GAA+B,EAAE,OAAO,CAC7C,iBAAkB,EAAE,OAAO,EAC3B,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAClC,CAAC,EAEY,GAA4C,EAAE,OAAO,CACjE,oBAAqB,EAAE,MAAM,CAAC,EAAE,QAAQ,SAAS,EAAG,EAAE,QAAQ,QAAQ,CAAC,CAAC,EACxE,eAAgB,EAAE,MAAM,CAAC,EAAE,QAAQ,KAAK,EAAG,EAAE,QAAQ,MAAM,CAAC,CAAC,EAC7D,gBAAiB,EAAE,OAAO,CAC3B,CAAC,EAwCY,GAA2B,EA9BH,EAAE,OAAO,CAC7C,mBAAoB,EAAE,OAAO,EAC7B,gBAAiB,EAAE,OAAO,EAC1B,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,aAAc,EAAE,SACf,EAAE,OAAO,CACR,eAAgB,EAAE,SAAS,EAAE,MAAM,EAA4B,CAAC,CACjE,CAAC,CACF,EACA,sBAAuB,EAAE,SAAS,CAAgC,EAClE,oBAAqB,EAAE,OAAO,CAC7B,sBAAuB,EAAE,KACxB,EAAE,MAAM,CAAgC,EACxC,EAAE,UAAU,CAAC,CACd,CACD,CAAC,EACD,6BAA8B,EAAE,SAC/B,EAAE,OAAO,CACR,+BAAgC,EAAE,SACjC,EAAE,MAAM,EAAyC,CAClD,CACD,CAAC,CACF,EACA,cAAe,EAAE,SAChB,EAAE,OAAO,CACR,gBAAiB,EAAE,SAAS,EAAE,MAAM,CAA+B,CAAC,CACrE,CAAC,CACF,CACD,CAGC,CACD,EA6Ca,GAAyB,EAnCH,EAAE,OAAO,CAC3C,gBAAiB,EAAE,OAAO,EAC1B,qBAAsB,EAAE,OAAO,EAC/B,mBAAoB,EAAE,OAAO,EAC7B,sBAAuB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC5C,yBAA0B,EAAE,SAAS,EAAE,OAAO,CAAC,EAC/C,gBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,EACtC,qBAAsB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3C,qBAAsB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3C,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,qBAAsB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3C,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,cAAe,EAAE,SAChB,EAAE,OAAO,CACR,gBAAiB,EAAE,SAAS,EAAE,MAAM,CAA+B,CAAC,CACrE,CAAC,CACF,EACA,eAAgB,EAAE,SAAS,EAAyB,EACpD,qBAAsB,EAAE,SAAS,CAA+B,EAChE,sBAAuB,EAAE,SACxB,EAAE,OAAO,CACR,eAAgB,EAAE,SACjB,EAAE,MACD,EAAE,OAAO,CACR,iBAAkB,EAAE,OAAO,EAC3B,WAAY,EAAE,OAAO,EACrB,YAAa,EAAE,OAAO,CACvB,CAAC,CACF,CACD,CACD,CAAC,CACF,CACD,CAEsD,CAAmB,EAW5D,GAAsB,EALH,EAAE,OAAO,CACxC,gBAAiB,EAAE,OAAO,EAC1B,mBAAoB,EAAE,OAAO,CAC9B,CAEmD,CAAgB,EAM7D,GAA6B,EAAE,MAAM,CAC1C,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,kBAAkB,EAC5B,EAAE,QAAQ,+BAA+B,CAC1C,CAAC,EAyBY,GAAyB,EAnBH,EAAE,OAAO,CAC3C,mBAAoB,EAAE,OAAO,EAC7B,gBAAiB,EAAE,OAAO,EAC1B,WAAY,EAAE,OAAO,CACpB,MAAO,GACP,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,6BAA8B,EAAE,SAAS,EAA0B,CACpE,CAAC,EACD,kBAAmB,EAAE,SAAS,CAAa,EAC3C,oBAAqB,EAAE,SAAS,EAA8B,EAC9D,QAAS,EAAE,SACV,EAAE,OAAO,CACR,MAAO,EAAE,SAAS,CAAa,EAC/B,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,CACpC,CAAC,CACF,EACA,kCAAmC,EAAE,SAAS,CAAa,CAC5D,CAEsD,CAAmB,EAc5D,GAAgC,EARH,EAAE,OAAO,CAClD,mBAAoB,EAAE,OAAO,EAC7B,gBAAiB,EAAE,OAAO,EAC1B,kBAAmB,EAAE,OAAO,EAC5B,yBAA0B,EAAE,QAAQ,WAAW,EAC/C,6BAA8B,EAAE,SAAS,EAAE,OAAO,CAAC,CACpD,CAGC,CACD,EAMM,GAAwB,EAAE,MAAM,CACrC,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,CACd,CAAC,EAEK,GAAiC,EAAE,MAAM,CAC9C,EAAE,QAAQ,0BAA0B,EACpC,EAAE,QAAQ,sBAAsB,EAChC,EAAE,QAAQ,qCAAqC,CAChD,CAAC,EAEY,GAA+B,EAAE,OAAO,CACpD,YAAa,EAAE,OAAO,EACtB,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,gBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,EACtC,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,OAAQ,EAAE,OAAO,EACjB,YAAa,EACd,CAAC,EA2BY,GAA2B,EApBH,EAAE,KACtC,EAAE,OAAO,CACR,gBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,EACtC,mBAAoB,EAAE,SAAS,EAAE,OAAO,CAAC,EACzC,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,uBAAwB,EACxB,cAAe,GACf,gBAAiB,EAAE,OAAO,CACzB,kBAAmB,EAAE,KACpB,EAAE,MAAM,EAA4B,EACpC,EAAE,UAAU,CAAC,CACd,CACD,CAAC,CACF,CAAC,EACD,EAAE,MACA,GAAU,GAAQ,EAAM,iBAAmB,EAAM,oBAClD,mDACD,CAGuD,CAAqB,EChQvE,EAAoB,EAAE,MAAM,CACjC,EAAE,QAAQ,MAAM,EAChB,EAAE,QAAQ,MAAM,EAChB,EAAE,QAAQ,KAAK,EACf,EAAE,QAAQ,MAAM,EAChB,EAAE,QAAQ,eAAe,CAC1B,CAAC,EAEK,EAA6B,EAAE,OAAO,CAC3C,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,cAAe,EAAE,SAAS,CAAiB,EAC3C,sBAAuB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC5C,cAAe,EAAE,SAAS,CAAiB,EAC3C,sBAAuB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC5C,0BAA2B,EAAE,SAC5B,EAAE,MAAM,CAAC,EAAE,QAAQ,MAAM,EAAG,EAAE,QAAQ,OAAO,EAAG,EAAE,QAAQ,CAAC,CAAC,CAC7D,EACA,wBAAyB,EAAE,SAAS,EAAE,OAAO,CAAC,CAC/C,CAAC,EAKoC,EACpC,CACD,EAKA,MAAa,GAAqC,EACjD,CACD,EAEM,EAA8B,EAAE,OAAO,CAC5C,OAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,EAC7B,OAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,EAC7B,gBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,EACtC,cAAe,EAAE,SAAS,EAAE,OAAO,CAAC,EACpC,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,CACpC,CAAC,EAKqC,EACrC,CACD,EAKA,MAAa,GAAsC,EAClD,CACD,EAEM,EAA2B,EAAE,OAAO,CACzC,IAAK,EAAE,OAAO,EACd,MAAO,EAAE,OAAO,CACjB,CAAC,EAKkC,EAClC,EAAE,MAAM,CAAwB,CACjC,EAKA,MAAa,GAAmC,EAC/C,CACD,EAEM,GAAoB,EAAE,MAAM,CACjC,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,QAAQ,EAClB,EAAE,QAAQ,MAAM,EAChB,EAAE,QAAQ,OAAO,EACjB,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,KAAK,EACf,EAAE,QAAQ,UAAU,EACpB,EAAE,QAAQ,UAAU,EACpB,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,mBAAmB,EAC7B,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,aAAa,EACvB,EAAE,QAAQ,aAAa,EACvB,EAAE,QAAQ,eAAe,EACzB,EAAE,QAAQ,cAAc,EACxB,EAAE,QAAQ,OAAO,CAClB,CAAC,EAQK,EAAsC,EAAE,OAAO,CACpD,gBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,EACtC,wBAAyB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9C,YAAa,EAAE,SAAS,EAAiB,CAC1C,CAAC,EAK6C,EAC7C,CACD,EAKA,MAAa,GACZ,EAA0B,CAAmC,EAExD,EAAa,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAEjD,GAAqB,EAAE,MAAM,CAClC,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,UAAU,EACpB,EAAE,QAAQ,SAAS,EACnB,EAAE,QAAQ,aAAa,CACxB,CAAC,EAEK,GAAmB,EAAE,MAAM,CAChC,EAAE,QAAQ,UAAU,EACpB,EAAE,QAAQ,UAAU,EACpB,EAAE,QAAQ,SAAS,CACpB,CAAC,EAEK,GAAuB,EAAE,MAAM,CACpC,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,EACb,EAAE,QAAQ,GAAG,CACd,CAAC,EAEK,EAA6B,EAAE,OAAO,CAC3C,wBAAyB,EAAE,SAAS,CAAU,EAC9C,sBAAuB,EAAE,SAAS,CAAU,EAC5C,yBAA0B,EAAE,SAAS,CAAU,CAChD,CAAC,EAKoC,EACpC,CACD,EAKA,MAAa,GAAqC,EACjD,CACD,EAyCa,GAA8B,EApCH,EAAE,OAAO,CAChD,WAAY,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAG,EAAE,UAAU,CAAC,EAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EACzE,eAAgB,EAAE,SAAS,EAAoB,EAC/C,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,WAAY,EAAE,SAAS,EAAE,MAAM,CAAC,EAAgB,EAAG,UAAU,CAAC,EAC9D,aAAc,EAAE,SAAS,EAAE,MAAM,CAAC,EAAkB,EAAG,SAAS,CAAC,EACjE,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,KAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3B,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,aAAc,EAAE,KAAK,EAAE,OAAO,EAAG,EAAE,UAAU,CAAC,EAAG,EAAE,UAAU,CAAC,CAAC,EAC/D,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,SAAU,EAAE,SAAS,EAAE,OAAO,CAAC,EAC/B,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,kBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,EACxC,MAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAC5B,OAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,EAAG,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,EAC5D,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,oBAAqB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC1C,iBAAkB,EAAE,SAAS,CAA2B,EACxD,gBAAiB,EAAE,SAAS,CAA0B,EACtD,gBAAiB,EAAE,SAAS,CAA0B,EACtD,cAAe,EAAE,SAAS,CAAwB,EAClD,yBAA0B,EAAE,SAAS,CAAmC,CACzE,CAMC,CACD,EAKgD,EAC/C,EACD,EAOA,MAAa,EAAwC,EAAE,OAAO,CAC7D,cAAe,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAG,EAAE,UAAU,CAAC,EAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAC5E,kBAAmB,EAAE,SAAS,EAAoB,EAClD,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,WAAY,EAAE,SACb,EAAE,MAAM,CACP,EAAE,QAAQ,UAAU,EACpB,EAAE,QAAQ,UAAU,EACpB,EAAE,QAAQ,SAAS,CACpB,CAAC,CACF,EACA,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,aAAc,EAAE,SAAS,EAAkB,EAC3C,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,KAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3B,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,aAAc,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAG,EAAE,UAAU,CAAC,EAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAC3E,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,SAAU,EAAE,SAAS,EAAE,OAAO,CAAC,EAC/B,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,aAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EACnC,iBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,EACvC,kBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,EACxC,MAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAC5B,OAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,EAAG,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,EAC5D,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,UAAW,EAAE,SAAS,EAAE,OAAO,CAAC,EAChC,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,kBAAmB,EAAE,SACpB,EAAE,MAAM,CAAC,EAAE,QAAQ,MAAM,EAAG,EAAE,QAAQ,OAAO,EAAG,EAAE,QAAQ,CAAC,CAAC,CAC7D,EACA,WAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EACjC,QAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC9B,oBAAqB,EAAE,SAAS,EAAE,OAAO,CAAC,EAC1C,iBAAkB,EAAE,SAAS,EAAmC,EAChE,mBAAoB,EAAE,SACrB,EAAE,MAAM,CAAC,EAAE,QAAQ,MAAM,EAAG,EAAE,QAAQ,OAAO,EAAG,EAAE,QAAQ,CAAC,CAAC,CAC7D,EACA,yBAA0B,EAAE,SAC3B,EACD,EACA,gBAAiB,EAAE,SAAS,EAAkC,EAC9D,gBAAiB,EAAE,SAAS,EAAkC,EAC9D,cAAe,EAAE,SAAS,EAAgC,CAC3D,CAAC,ECzQK,GAAkC,EAAE,OAAO,CAChD,QAAS,EAAE,OAAO,EAClB,QAAS,EAAE,OAAO,CACnB,CAAC,EAEK,EAAoB,EAAE,SAC3B,EAAE,KAAK,EAAE,OAAO,EAAG,EAAE,UAAU,CAAC,EAAG,EAAE,UAAU,CAAC,CAAC,CAClD,EAKM,GAAmB,EAAE,OAAO,CACjC,WAAY,EAAE,QAAQ,MAAM,EAC5B,WAAY,EAAE,KAAK,EAAE,OAAO,EAAG,EAAE,UAAU,CAAC,EAAG,EAAE,UAAU,CAAC,CAAC,EAC7D,aAAc,CACf,CAAC,EAKK,GAAmB,EAAE,OAAO,CACjC,WAAY,EAAE,QAAQ,MAAM,EAC5B,KAAM,EAAE,OAAO,EACf,KAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3B,aAAc,CACf,CAAC,EAKK,GAAsB,EAAE,OAAO,CACpC,WAAY,EAAE,QAAQ,SAAS,EAC/B,QAAS,EAAE,OAAO,EAClB,YAAa,EAAE,SAAS,EAAE,OAAO,CAAC,EAClC,aAAc,CACf,CAAC,EAKK,GAAmB,EAAE,OAAO,CACjC,WAAY,EAAE,QAAQ,MAAM,EAC5B,QAAS,EAAE,OAAO,EAClB,WAAY,EAAE,OAAO,EACrB,KAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3B,aAAc,CACf,CAAC,EAKK,GAAuB,EAAE,OAAO,CACrC,WAAY,EAAE,QAAQ,UAAU,EAChC,aAAc,EAAE,OAAO,EACvB,aAAc,CACf,CAAC,EAKK,GAAoB,EAAE,OAAO,CAClC,WAAY,EAAE,QAAQ,OAAO,EAC7B,MAAO,EAAE,OAAO,EAChB,aAAc,CACf,CAAC,EAKK,GAA0B,EAAE,OAAO,CACxC,WAAY,EAAE,QAAQ,aAAa,EACnC,qBAAsB,GACtB,aAAc,CACf,CAAC,EAKK,GAA0B,EAAE,OAAO,CACxC,WAAY,EAAE,QAAQ,cAAc,EACpC,iBAAkB,EAAE,OAAO,EAC3B,aAAc,CACf,CAAC,EAKK,GAA8B,EAAE,OAAO,CAC5C,WAAY,EAAE,QAAQ,mBAAmB,EACzC,iBAAkB,EAAE,OAAO,EAC3B,aAAc,CACf,CAAC,EAMY,GAA2B,EAAE,MAAM,CAC/C,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,CAAC,EAEK,GAAuB,GAAmC,CAC/D,GAAI,EAAE,gBAAiB,GAAQ,OAAO,EACtC,IAAM,EAAa,EAAM,eACzB,GAAI,CAAC,EAAY,OAAO,EACxB,GAAM,CAAE,cAAe,EAAU,GAAG,GAAS,EAC7C,MAAO,CACN,GAAG,EACH,WAAY,CACb,CACD,EAKa,GAA8B,EAAE,KAC5C,EAAgB,EAAwB,EACxC,EAAE,UAAW,GAAU,GAAoB,CAAK,CAAC,CAClD,EAMa,GAAkC,EAAE,KAChD,EAAE,OAAO,CACR,SAAU,EACV,mBAAoB,EACrB,CAAC,EACD,EAAE,UAAW,GAAU,CACtB,GAAM,CAAE,mBAAoB,EAAc,WAAU,GAAG,GAAS,EAChE,MAAO,CACN,WACA,GAAG,EACH,GAAG,CACJ,CACD,CAAC,CACF,EAEM,GAA4B,EAAE,OAAO,CAC1C,mBAAoB,EAAE,SACrB,EAAE,KACD,EAAE,MAAM,CACP,EAAE,MAAM,CAAqC,EAC7C,CACD,CAAC,EACD,EAAE,UAAW,GAAU,CACjB,KACL,OAAO,MAAM,QAAQ,CAAK,EAAI,EAAQ,CAAC,CAAK,CAC7C,CAAC,CACF,CACD,CACD,CAAC,EAKY,GAAmC,EAC/C,EAAE,OAAO,CACR,SAAU,EACV,iBAAkB,EAAE,SAAS,EAAyB,CACvD,CAAC,CACF,EC3Ka,GAAkC,EAAE,OAAO,CACvD,SAAU,EACV,mBAAoB,CACrB,CAAC,EAIY,GAAmC,EAC/C,EAAE,OAAO,CACR,SAAU,EACV,mBAAoB,EAAE,SAAS,CAAqC,CACrE,CAAC,CACF,ECVA,SAAgB,GAAM,EAA2B,CAChD,MAAO,CAAE,QAAS,GAAM,MAAK,CAC9B,CAKA,SAAgB,EAAO,EAA4B,CAClD,MAAO,CAAE,QAAS,GAAO,OAAM,CAChC,CAEA,SAAgB,GAAK,EAA6B,CACjD,OAAO,IAAe,GACvB,CCdA,SAAgB,GAAoB,EAAuC,CAC1E,IAAM,EAAa,IAAI,gBAEvB,GAAI,CAAC,GAAa,GAAa,EAC9B,MAAO,CAAE,OAAQ,EAAW,MAAO,EAGpC,IAAM,EAAY,eAAiB,EAAW,MAAM,EAAG,CAAS,EAEhE,MAAO,CACN,OAAQ,EAAW,OACnB,UAAa,aAAa,CAAS,CACpC,CACD,CCpBA,SAAS,GAAS,EAAiB,EAAuB,CACzD,GAAI,CACH,IAAM,EAAO,IAAI,IAAI,CAAO,EAItB,GAHW,EAAK,SAAS,SAAS,GAAG,EACxC,EAAK,SAAS,MAAM,EAAG,EAAE,EACzB,EAAK,UACwB,EAEhC,OAAO,IAAI,IAAI,EAAc,CAAI,CAClC,OAAS,EAAO,CACf,MAAM,IAAI,EACT,aACA,oBAAoB,aAAiB,MAAQ,EAAM,QAAU,sBAC9D,CACD,CACD,CASA,SAAgB,GAAS,EAAiB,EAA0B,CACnE,GAAI,CAAC,EAAS,WAAW,GAAG,EAC3B,MAAM,IAAI,EACT,aACA,2DAA2D,EAAS,EACrE,EAKD,IAAM,EAAM,GAFc,EAAQ,QAAQ,MAAO,EAEZ,EAAG,CAAQ,EAEhD,GAAI,EAAI,WAAa,SAAW,EAAI,WAAa,SAChD,MAAM,IAAI,EACT,aACA,mEAAmE,EAAI,SAAS,EACjF,EAGD,OAAO,EAAI,SAAS,CACrB,CC1CA,MAAM,GAAgB,CACpB,iBAAkB,GAClB,oBAAqB,IACrB,oBAAqB,GACrB,WAAY,GACZ,gBAAiB,GACjB,eAAgB,GAChB,cAAe,EACjB,EAEM,GAAiB,CACrB,iBAAkB,GAClB,oBAAqB,IACrB,kBAAmB,EACrB,EAEM,GAAS,IAAI,EAAU,EAAa,EACpC,GAAU,IAAI,EAAW,EAAc,EAK7C,SAAgB,GAAU,EAAuC,CAC/D,GAAI,CACF,OAAO,GAAQ,MAAM,CAAI,CAC3B,OAAS,EAAO,CACd,MAAM,IAAI,EACR,aACA,kCAAkC,aAAiB,MAAQ,EAAM,QAAU,iBAC7E,CACF,CACF,CAMA,SAAgB,GAAU,EAAsC,CAC9D,GAAI,CACF,OAAO,GAAO,MAAM,CAAG,CACzB,OAAS,EAAO,CACd,MAAM,IAAI,EACR,aACA,kCAAkC,aAAiB,MAAQ,EAAM,QAAU,iBAC7E,CACF,CACF,CClDA,MAAa,EAAoB,CAChC,eAAgB,uBAChB,gBAAiB,uBACjB,eAAgB,uBAChB,gBAAiB,uBACjB,gBAAiB,aACjB,iBAAkB,gBAClB,0BAA2B,oBAC3B,wBAAyB,kBACzB,yBAA0B,kBAC1B,oBAAqB,eACrB,qBAAsB,eACtB,mBAAoB,cACpB,oBAAqB,cACrB,2BAA4B,qBAC5B,4BAA6B,qBAC7B,0BAA2B,oBAC3B,2BAA4B,mBAC7B,EAKA,SAAgB,EAAqB,EAA4B,EAAW,CAC3E,MAAO,EAAG,GAAO,CAAO,CACzB,CC6CA,IAAa,GAAb,KAAwB,CASM,QAA7B,YAAY,EAA6C,CAA5B,KAAA,QAAA,CAA6B,CAE1D,gBAAyB,CACxB,MAAO,CACN,UAAW,KAAK,QAAQ,OACxB,UAAW,KAAK,QAAQ,OACxB,aAAc,MACd,YAAa,MACb,GAAI,KAAK,QAAQ,cAAgB,CAChC,gBAAiB,KAAK,QAAQ,YAC/B,CACD,CACD,CAEA,UAAkB,EAAkB,CACnC,OAAO,GAAS,KAAK,QAAQ,QAAS,CAAQ,CAC/C,CAEA,IAAY,WAAY,CACvB,MAAO,CACN,OAAQ,wCACR,OAAQ,gDACR,cAAe,6CACf,mBAAoB,kDACpB,iBAAkB,gDAClB,cAAe,6CACf,iBAAkB,gDAClB,wBACC,uDACD,sBAAuB,gDACxB,CACD,CAEA,gBACC,EACuB,CACvB,IAAM,EAAW,EAAO,SAClB,EAAS,GAAU,OAYzB,OAVI,IAAW,KAUR,GAAG,CAAM,EATR,EACN,EACC,EAAS,iBACT,EACA,EAAS,SACV,CACD,CAIF,CAEA,YAAoB,EAAgB,EAAmC,CAWtE,OAVI,aAAiB,EACb,EAEJ,aAAiB,EAEb,EAAgB,qBADP,GAAa,EAAM,MACe,GAAG,EAElD,aAAiB,MACb,EAAa,EAAM,OAAO,EAE3B,EAAa,CAAc,CACnC,CAEA,MAAc,QACb,EACA,EACA,EACA,EACgC,CAChC,GAAM,CAAE,SAAQ,SAAU,GACzB,KAAK,QAAQ,WAAa,GAC3B,EAEA,GAAI,CAIH,IAAM,EAAW,MAAMA,EAHX,KAAK,UAAU,CAGA,EAAG,CAC7B,OAAQ,OACR,QAAS,CACR,eAAgB,iBACjB,EACA,KAPe,GAAU,CAOb,EACZ,QACD,CAAC,EAEK,EAAe,MAAM,EAAS,KAAK,KAAK,EAE9C,GAAI,CAAC,GAAK,EAAS,UAAU,EAC5B,OAAO,EAAI,EAAS,EAAc,QAAS,EAAS,UAAU,CAAC,EAIhE,IAAM,EADe,GAAU,CACA,CAAC,CAAC,GAEjC,GAAI,CAAC,EACJ,OAAO,EACN,EACC,qDAAqD,EAAgB,EACtE,CACD,EAGD,IAAM,EAAc,EAAU,EAAgB,CAAW,EAKzD,OAJK,EAAY,QAIV,KAAK,gBAAgB,EAAY,MAAM,EAFtC,EAAI,EAAgB,4BADX,GAAa,EAAY,MACoB,GAAG,CAAC,CAGnE,OAAS,EAAO,CAIf,OAHI,GAAa,CAAK,EACd,EAAI,EAAS,oBAAqB,SAAS,CAAC,EAE7C,EAAI,KAAK,YAAY,EAAO,wBAAwB,CAAC,CAC7D,QAAU,CACT,IAAQ,CACT,CACD,CAKA,MAAc,SAIZ,EAQmC,CACpC,GAAI,CACH,IAAM,EAAU,EAAM,EAAK,UAAW,EAAK,MAAM,EACjD,OAAO,KAAK,QACX,EAAK,SACL,EAAkB,EAAK,YAAa,CACnC,SAAU,KAAK,eAAe,EAC9B,GAAG,CACJ,CAAC,EACD,EAAK,aACL,EAAK,cACN,CACD,OAAS,EAAO,CACf,OAAO,EACN,KAAK,YAAY,EAAO,oCAAoC,EAAK,IAAI,CACtE,CACD,CACD,CAOA,MAAM,OACL,EACmD,CACnD,GAAI,CACH,IAAM,EAAc,EAAM,GAAiC,CAC1D,SAAU,KAAK,eAAe,EAC9B,mBAAoB,CACrB,CAAC,EAEK,EAAc,EACnB,EAAkB,eAClB,CACD,EAEA,OAAO,KAAK,QACX,KAAK,UAAU,OACf,EACA,EAAkB,gBAClB,EACD,CACD,OAAS,EAAO,CACf,OAAO,EACN,KAAK,YAAY,EAAO,yCAAyC,CAClE,CACD,CACD,CAOA,MAAM,aACL,EACmD,CACnD,GAAI,CACH,IAAM,EAAY,EAAM,GAA6B,CAAM,EAErD,EAAc,EAAM,GAAiC,CAC1D,SAAU,KAAK,eAAe,EAC9B,mBAAoB,CACrB,CAAC,EAEK,EAAc,EACnB,EAAkB,eAClB,CACD,EAEA,OAAO,KAAK,QACX,KAAK,UAAU,OACf,EACA,EAAkB,gBAClB,EACD,CACD,OAAS,EAAO,CACf,OAAO,EACN,KAAK,YAAY,EAAO,yCAAyC,CAClE,CACD,CACD,CAMA,MAAM,cACL,EAC4C,CAC5C,OAAO,KAAK,SAAS,CACpB,GAAI,gBACJ,SACA,UAAW,GACX,SAAU,KAAK,UAAU,cACzB,YAAa,EAAkB,gBAC/B,aAAc,EAAkB,iBAChC,eAAgB,CACjB,CAAC,CACF,CAMA,MAAM,mBACL,EACkD,CAClD,OAAO,KAAK,SAAS,CACpB,GAAI,qBACJ,SACA,UAAW,GACX,SAAU,KAAK,UAAU,mBACzB,YAAa,EAAkB,0BAC/B,aAAc,EAAkB,iBAChC,eAAgB,CACjB,CAAC,CACF,CAOA,MAAM,iBACL,EACkD,CAClD,OAAO,KAAK,SAAS,CACpB,GAAI,mBACJ,SACA,UAAW,GACX,SAAU,KAAK,UAAU,iBACzB,YAAa,EAAkB,wBAC/B,aAAc,EAAkB,yBAChC,eAAgB,CACjB,CAAC,CACF,CAMA,MAAM,cACL,EACkD,CAClD,OAAO,KAAK,SAAS,CACpB,GAAI,gBACJ,SACA,UAAW,GACX,SAAU,KAAK,UAAU,cACzB,YAAa,EAAkB,oBAC/B,aAAc,EAAkB,qBAChC,eAAgB,CACjB,CAAC,CACF,CAMA,MAAM,iBACL,EACkD,CAClD,OAAO,KAAK,SAAS,CACpB,GAAI,mBACJ,SACA,UAAW,GACX,SAAU,KAAK,UAAU,iBACzB,YAAa,EAAkB,mBAC/B,aAAc,EAAkB,oBAChC,eAAgB,CACjB,CAAC,CACF,CAMA,MAAM,wBACL,EACkD,CAClD,OAAO,KAAK,SAAS,CACpB,GAAI,0BACJ,SACA,UAAW,GACX,SAAU,KAAK,UAAU,wBACzB,YAAa,EAAkB,2BAC/B,aAAc,EAAkB,4BAChC,eAAgB,CACjB,CAAC,CACF,CAMA,MAAM,sBACL,EACkD,CAClD,OAAO,KAAK,SAAS,CACpB,GAAI,wBACJ,SACA,UAAW,GACX,SAAU,KAAK,UAAU,sBACzB,YAAa,EAAkB,0BAC/B,aAAc,EAAkB,2BAChC,eAAgB,CACjB,CAAC,CACF,CACD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aves-sdk",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "TypeScript SDK for AVES XML REST",
|
|
5
5
|
"homepage": "https://github.com/simoneguglielmi/aves-sdk#readme",
|
|
6
6
|
"repository": [
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
},
|
|
54
54
|
"packageManager": "yarn@1.22.22",
|
|
55
55
|
"dependencies": {
|
|
56
|
+
"fast-xml-builder": "^1.2.0",
|
|
56
57
|
"fast-xml-parser": "^5.10.1",
|
|
57
58
|
"undici": "^8.9.0",
|
|
58
59
|
"valibot": "^1.4.2"
|