{"version":3,"sources":["../src/common/utils/get-sub-string.ts","../package.json","../src/config.ts","../src/common/helpers/binary-security-token.helper.ts","../src/common/helpers/message-header.helper.ts","../src/common/helpers/security.helper.ts","../src/common/helpers/header.helper.ts","../src/common/helpers/soap-env.helper.ts","../src/common/helpers/request.helper.ts","../src/authentication/requests/ping.request.ts","../src/authentication/helpers/username-token.helper.ts","../src/authentication/requests/session-create.request.ts","../src/authentication/requests/session-close.request.ts","../src/authentication/requests/token-create.request.ts","../src/authentication/authentication.ts","../src/currency/helpers/get-month-name-sabre.helper.ts","../src/queue/common/utils/find-queue-line.ts","../src/common/config/xml-parser.config.ts","../src/queue/common/utils/parse-xml-to-queue-access.ts","../src/queue/common/utils/parse-xml-to-queue-count.ts","../src/queue/common/utils/parse-xml-to-queue-place.ts","../src/queue/common/utils/parse-sabre-date.ts","../src/queue/common/utils/classify-paragraph.ts","../src/queue/common/utils/parse-paragraph-to-warnings.ts","../src/queue/common/utils/parse-warnings-to-notifications.ts","../src/queue/common/utils/parse-access-rs-to-access.ts","../src/queue/common/utils/parse-place-rs-to-access.ts","../src/queue/common/utils/parse-xml-to-queue-access-list.ts","../src/queue/common/utils/get-queue-booking-info.ts","../src/queue/common/utils/parse-access-list-rs-to-list.ts","../src/queue/common/helpers/queue-access.helper.ts","../src/queue/common/utils/parse-identifier-options-to-queue-identifier.ts","../src/queue/common/utils/builder-queue-identifier.ts","../src/queue/common/requests/access-list.request.ts","../src/queue/common/requests/access.request.ts","../src/queue/common/helpers/queue-count.helper.ts","../src/queue/common/requests/count.request.ts","../src/queue/common/helpers/navigation-action.helper.ts","../src/queue/common/requests/exit.request.ts","../src/queue/common/requests/ignore.request.ts","../src/queue/common/helpers/queue-place.helper.ts","../src/queue/common/requests/place.request.ts","../src/queue/common/requests/remove.request.ts","../src/queue/queue.ts","../src/daily-sales/common/requests/report.request.ts","../src/daily-sales/common/utils/parse-summary-options-to-selection-criteria.ts","../src/daily-sales/common/utils/parse-summary-options-to-xml.ts","../src/daily-sales/common/requests/summary.request.ts","../src/daily-sales/common/utils/parse-xml-to-daily-sales-summary.ts","../src/daily-sales/common/utils/parse-xml-to-daily-sales-report.ts","../src/daily-sales/daily-sales.ts","../src/common/utils/fault-error.ts","../src/common/utils/error-in-response.ts","../src/common/utils/parse-xml-to-sabre-command.ts","../src/common/helpers/sabre-command.helper.ts","../src/currency/helpers/format-date-sabre.helper.ts","../src/currency/helpers/format-currency-command.helper.ts","../src/currency/requests/currency.request.ts","../src/currency/currency.ts","../src/sabre.ts"],"names":["conversationId","header","options","domain","ListMonth","XMLParser","XMLBuilder","queueAccess","queuePlace"],"mappings":"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","file":"index.cjs","sourcesContent":["export function getSubString (strSearch: string, strBegin: string, strEnd: string, withEnd: boolean): string {\n  let strSub = ''\n  const intBegin = strSearch.indexOf(strBegin)\n  if (intBegin !== -1) {\n    const startIndex = withEnd ? intBegin : intBegin + strBegin.length\n    const endIndex = strSearch.indexOf(strEnd, startIndex)\n    if (endIndex !== -1) strSub = strSearch.substring(startIndex, endIndex + (withEnd ? strEnd.length : 0))\n  }\n  return strSub\n}","{\n  \"name\": \"sabre-legacy-client\",\n  \"version\": \"1.0.7\",\n  \"description\": \"Sabre Legacy Node.js SDK\",\n  \"type\": \"module\",\n  \"keywords\": [\n    \"sabre\",\n    \"legacy\",\n    \"client\",\n    \"soap\"\n  ],\n  \"homepage\": \"https://github.com/CarlosIvanSoto/sabre-legacy#readme\",\n  \"bugs\": {\n    \"url\": \"https://github.com/CarlosIvanSoto/sabre-legacy/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/CarlosIvanSoto/sabre-legacy.git\"\n  },\n  \"license\": \"MIT\",\n  \"author\": \"Carlos Ivan Soto <csoto_99@outlook.com>\",\n  \"main\": \"./dist/index.cjs\",\n  \"module\": \"./dist/index.js\",\n  \"types\": \"./dist/index.d.ts\",\n  \"files\": [\n    \"dist/**\"\n  ],\n  \"exports\": {\n    \".\": {\n      \"import\": \"./dist/index.js\",\n      \"require\": \"./dist/index.cjs\",\n      \"types\": \"./dist/index.d.ts\"\n    }\n  },\n  \"scripts\": {\n    \"build\": \"tsup\",\n    \"link\": \"npm run build & npm link\",\n    \"test\": \"jest\",\n    \"test:watch\": \"jest --watch\",\n    \"prepublish\": \"npm run build\",\n    \"example:create-session\": \"node --env-file=.env --import=tsx examples/create-session.ts\",\n    \"example:get-summary\": \"node --env-file=.env --import=tsx examples/get-summary.ts\",\n    \"example:queue-count\": \"node --env-file=.env --import=tsx examples/queue-count.ts\",\n    \"example:refresh-session\": \"node --env-file=.env --import=tsx examples/refresh-session.ts\",\n    \"example:queue-access\": \"node --env-file=.env --import=tsx examples/queue-access.ts\",\n    \"example:queue-access-list\": \"node --env-file=.env --import=tsx examples/queue-access-list.ts\",\n    \"example:go-queue\": \"node --env-file=.env --import=tsx examples/go-queue.ts\"\n  },\n  \"devDependencies\": {\n    \"@eslint/js\": \"^10.0.1\",\n    \"@types/jest\": \"^30.0.0\",\n    \"@types/node\": \"^25.3.5\",\n    \"eslint\": \"^10.0.3\",\n    \"globals\": \"^17.4.0\",\n    \"jest\": \"^30.2.0\",\n    \"ts-jest\": \"^29.4.6\",\n    \"ts-node\": \"^10.9.2\",\n    \"tsup\": \"^8.5.1\",\n    \"tsx\": \"^4.21.0\",\n    \"typescript\": \"^5.9.3\",\n    \"typescript-eslint\": \"^8.56.1\"\n  },\n  \"dependencies\": {\n    \"fast-xml-parser\": \"^5.4.2\"\n  }\n}","import { version } from '../package.json';\n\nconst defaultBaseUrl = 'https://webservices.platform.sabre.com';\nconst defaultUserAgent = `sabre-client-node:${version}`;\nconst defaultConversationId = `sabre.client.node:${version}`\nconst defaultDomain = 'AA'\n\nconst baseUrl =\n  typeof process !== 'undefined' && process.env\n    ? process.env.SABRE_SOAP_URL || defaultBaseUrl\n    : defaultBaseUrl;\n\nconst userAgent =\n  typeof process !== 'undefined' && process.env\n    ? process.env.SABRE_USER_AGENT || defaultUserAgent\n    : defaultUserAgent;\n\nconst domain =\n  typeof process !== 'undefined' && process.env\n    ? process.env.SABRE_DOMAIN || defaultDomain\n    : defaultDomain;\n\nconst conversationId = \n  typeof process !== 'undefined' && process.env\n    ? process.env.SABRE_CONVERSATION_ID || defaultConversationId\n    : defaultConversationId\n\nexport { baseUrl, userAgent, domain, conversationId };","export function binarySecurityToken(token: string) {\n  return `<BinarySecurityToken EncodingType=\"Base64Binary\" valueType=\"String\">${token}</BinarySecurityToken>`\n}","import { MessageHeaderOptions } from \"../interfaces/message-header-options.interface\";\n\n/**\n * <MessageHeader xmlns=\"http://www.ebxml.org/namespaces/messageHeader\">\n *  <From>\n *    <PartyId>{{from}}</PartyId>\n *  </From>\n *  <To>\n *    <PartyId>{{to}}</PartyId>\n *  </To>\n *  <ConversationId>{{conversationId}}</ConversationId>\n *  <Action>{{action}}</Action>\n * </MessageHeader>\n * @param payload \n * @returns string\n */\nfunction messageHeader(payload: MessageHeaderOptions) {\n  const {\n    from = 'Agency',\n    to = 'SWS',\n    conversationId = '2021.01.DevStudio',\n    action,\n  } = payload;\n  return `<MessageHeader xmlns=\"http://www.ebxml.org/namespaces/messageHeader\"><From><PartyId>${from}</PartyId></From><To><PartyId>${to}</PartyId></To><ConversationId>${conversationId}</ConversationId><Action>${action}</Action></MessageHeader>`\n}\n\nexport { messageHeader }","/**\n * <Security xmlns=\"http://schemas.xmlsoap.org/ws/2002/12/secext\">\n *  {{authorization}}\n * </Security>\n * @param authorization\n * @returns \n */\nfunction security (authorization: string): string {\n  return `<Security xmlns=\"http://schemas.xmlsoap.org/ws/2002/12/secext\">${authorization}</Security>`\n}\n\nexport { security }","import { HeaderOptions } from \"../interfaces/header-options.interface\"\nimport { binarySecurityToken } from \"./binary-security-token.helper\"\nimport { messageHeader } from \"./message-header.helper\"\nimport { security } from \"./security.helper\"\n\n/**\n * \n * {{messageHeader({ action, conversationId }) + security(authorization)}}\n * \n * @param payload HeaderOptions\n * @returns string\n */\nfunction header (payload: HeaderOptions) {\n  const { action, conversationId, authorization } = payload\n  const binarySecurity = binarySecurityToken(authorization)\n  return messageHeader({ action, conversationId }) + security(binarySecurity)\n}\nexport { header }","import { SoapEnvOptions } from \"../interfaces/soap-env-options.interface\"\n\n/**\n * <SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\">\n *  <SOAP-ENV:Header>\n *    {{header}}\n *  </SOAP-ENV:Header>\n  * <SOAP-ENV:Body>\n  *   {{body}}\n  * </SOAP-ENV:Body>\n * </SOAP-ENV:Envelope>\n * @param payload \n * @returns string\n */\nfunction soapEnv (payload: SoapEnvOptions) {\n  const { header, body } = payload\n  return `<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"><SOAP-ENV:Header>${header}</SOAP-ENV:Header><SOAP-ENV:Body>${body}</SOAP-ENV:Body></SOAP-ENV:Envelope>`\n}\n\nexport { soapEnv }","import { RequestOptions } from \"../interfaces/request-options.interface\";\nimport { header } from \"./header.helper\";\nimport { soapEnv } from \"./soap-env.helper\";\n\n/**\n * {{header({ action, authorization })}}\n * \n *  {{body}}\n * \n * {{footer}}\n * @param payload \n * @returns string\n */\nfunction request(payload: RequestOptions) {\n  const { action, conversationId, authorization, body } = payload;\n  return soapEnv({\n    header: header({ action, conversationId, authorization }),\n    body\n  })\n}\n\nexport { request }","import { request } from \"../../common/helpers/request.helper\"\nimport { ActionsRQ } from \"../../common/interfaces/actions.interface\"\nimport { PingOptions } from \"./interfaces/ping-options.interface\"\n\n/**\n * {{header}}\n * \n * <OTA_PingRQ Version=\"1.0.0\" xmlns=\"http://www.opentravel.org/OTA/2003/05\"/>\n * \n * {{footer}}\n * @param payload PingOptions\n * @returns string\n */\nfunction pingRequest(payload: PingOptions): string {\n  const body = '<OTA_PingRQ Version=\"1.0.0\" xmlns=\"http://www.opentravel.org/OTA/2003/05\"/>'\n  return request({ body, action: ActionsRQ.PING, ...payload })\n}\n\nexport { pingRequest }","import { UsernameTokenOptions } from \"../requests/interfaces/username-token-options.interface\"\n/**\n * <UsernameToken>\n *  <Username>{{username}}</Username>\n *  <Password>{{password}}</Password>\n *  <Organization>{{pcc}}</Organization>\n *  <Domain>{{domain}}</Domain>\n *  <ClientId>{{clientId}}</ClientId>\n *  <ClientSecret>{{clientSecret}}</ClientSecret>\n * </UsernameToken>\n * @param options \n * @returns string\n */\nfunction usernameToken (options: UsernameTokenOptions): string {\n  const { username, password, pcc, domain } = options\n  return `<UsernameToken><Username>${username}</Username><Password>${password}</Password><Organization>${pcc}</Organization><Domain>${domain}</Domain></UsernameToken>`\n}\nexport { usernameToken }","import { ActionsRQ } from \"../../common/interfaces/actions.interface\"\nimport { messageHeader } from \"../../common/helpers/message-header.helper\"\nimport { security } from \"../../common/helpers/security.helper\"\nimport { soapEnv } from \"../../common/helpers/soap-env.helper\"\nimport { usernameToken } from \"../helpers/username-token.helper\"\nimport { SessionCreateOptions } from \"./interfaces/session-create-options.interface\"\n\n/**\n * {{header = message + security ( usernameToken )}}\n * \n * <SessionCreateRQ returnContextID=\"true\" Version=\"1.0.0\" xmlns=\"http://www.opentravel.org/OTA/2002/11\"/>\n * \n * {{footer}}\n * @param payload SessionCreateOptions\n * @returns string\n */\nfunction sessionCreateRequest(payload: SessionCreateOptions): string {\n  const { conversationId, authorization } = payload\n  const message = messageHeader({\n    action: ActionsRQ.SESSION_CREATE,\n    conversationId: conversationId,\n    to: 'Sabre_API',\n  });\n  const header = message + security(usernameToken(authorization))\n  const body = '<SessionCreateRQ returnContextID=\"true\" Version=\"1.0.0\" xmlns=\"http://www.opentravel.org/OTA/2002/11\"/>'\n  return soapEnv({ header, body })\n}\n\nexport { sessionCreateRequest }","import { ActionsRQ } from './../../common/interfaces/actions.interface';\nimport { request } from \"../../common/helpers/request.helper\"\nimport { SessionCloseOptions } from \"./interfaces/session-close-options.interface\"\n\n/**\n * {{header}}\n * \n * <SessionCloseRQ Version=\"1.0.0\" xmlns=\"http://www.opentravel.org/OTA/2002/11\"/>\n * \n * {{footer}}\n * @param payload SessionCloseOptions \n * @returns string\n */\nfunction sessionCloseRequest (payload: SessionCloseOptions): string {\n  const body = '<SessionCloseRQ Version=\"1.0.0\" xmlns=\"http://www.opentravel.org/OTA/2002/11\"/>'\n  return request({ body, action: ActionsRQ.SESSION_CLOSE, ...payload })\n}\n\nexport { sessionCloseRequest }","import { ActionsRQ } from \"../../common/interfaces/actions.interface\"\nimport { messageHeader } from \"../../common/helpers/message-header.helper\"\nimport { security } from \"../../common/helpers/security.helper\"\nimport { soapEnv } from \"../../common/helpers/soap-env.helper\"\nimport { usernameToken } from \"../helpers/username-token.helper\"\nimport { TokenCreateOptions } from \"./interfaces/token-create-options.interface\"\n\n/**\n * {{header}}\n * \n * <TokenCreateRQ Version=\"1.0.0\" xmlns=\"http://webservices.sabre.com\"/>\n * \n * {{footer}}\n * @param payload TokenCreateOptions\n * @returns string\n */\nfunction tokenCreateRequest(payload: TokenCreateOptions): string {\n  const { conversationId, authorization } = payload\n  const message = messageHeader({\n    action: ActionsRQ.TOKEN_CREATE,\n    conversationId: conversationId,\n    to: 'Sabre_API',\n  });\n  const header = message + security(usernameToken(authorization))\n  const body = '<TokenCreateRQ Version=\"1.0.0\" xmlns=\"http://webservices.sabre.com\"/>'\n  return soapEnv({ header, body })\n}\n\nexport { tokenCreateRequest }","import { Sabre } from \"../sabre\";\nimport { ActionsRQ } from \"../common/interfaces/actions.interface\";\nimport { pingRequest, sessionCloseRequest, sessionCreateRequest, tokenCreateRequest } from \"./requests\";\n\nexport class Authentication {\n  constructor(private readonly sabre: Sabre) {}\n\n  /**\n   * See https://developer.sabre.com/docs/soap_apis/session_management/create_session\n   * @returns string\n   */\n  async sessionCreate(): Promise<string> {\n    this.sabre.setAction(ActionsRQ.SESSION_CREATE);\n    const xml = await this.sabre.auth(sessionCreateRequest);\n    return xml\n  }\n\n  /**\n   * See https://developer.sabre.com/docs/soap_apis/session_management/close_session\n   * @returns string\n   */\n  async sessionClose(): Promise<string> {\n    this.sabre.setAction(ActionsRQ.SESSION_CLOSE);\n    const xml = await this.sabre.post(sessionCloseRequest);\n    return xml\n  }\n\n  /**\n   * See https://developer.sabre.com/docs/soap_apis/session_management/refresh_session\n   * @returns string\n   */\n  async ping(): Promise<string> {\n    this.sabre.setAction(ActionsRQ.PING);\n    const xml = await this.sabre.post(pingRequest);\n    return xml\n  }\n\n  /**\n   * See https://developer.sabre.com/docs/soap_apis/session_management/create_access_token\n   * @returns string\n   */\n  async tokenCreate(): Promise<string> {\n    this.sabre.setAction(ActionsRQ.TOKEN_CREATE);\n    const xml = await this.sabre.auth(tokenCreateRequest);\n    return xml\n  }\n}","export enum ListMonth {\n  'JAN' = 1,\n  'FEB',\n  'MAR',\n  'APR',\n  'MAY',\n  'JUN',\n  'JUL',\n  'AUG',\n  'SEP',\n  'OCT',\n  'NOV',\n  'DEC',\n}\nexport type MonthNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 \nexport type Month = keyof typeof ListMonth\nexport const getMonthName = (month: MonthNumber) => ListMonth[month];\nexport const formatMonth = (month: Month) => String(ListMonth[month]).padStart(2, '0');\n","import { formatMonth, Month } from \"../../../currency/helpers/get-month-name-sabre.helper\"\nimport { QueueLine } from \"./interfaces\"\n\nfunction findQueueLine(text?: string): QueueLine {\n  if (!text) throw new Error('Missing text.')\n  // example: 8AYC.8AYC*AGH 1341/29JUN24 YWDSRL H\n  const LINE_REGEX = /(\\w{4})\\.(\\w{4})\\*(A{1}[A-Z0-9]{2})\\s(\\d{4})\\/(\\d{2}[A-Z]{3}\\d{2})\\s([A-Z0-9]{6})/g\n  const found = LINE_REGEX.exec(text)\n  if (!found) throw new Error('Queue line not found')\n  const [_, workPcc, homePcc, agent, time, date, bookingId ] = found\n  return { workPcc, homePcc, agent, dateTime: `20${date.slice(5)}-${formatMonth(date.slice(2,5) as Month)}-${date.slice(0,2)}T${time.slice(0,2)}:${time.slice(2)}`, bookingId }\n}\nexport { findQueueLine }","import { X2jOptions, XMLParser } from \"fast-xml-parser\";\n\nconst options: X2jOptions = {\n  textNodeName: \"content\",\n  attributeNamePrefix : \"\",\n  removeNSPrefix: true,\n  ignoreAttributes: [/^xmlns:/, /^eb:/, /^soap-env:/, /^xmlns/, /^Version/],\n  transformTagName: (tagName) => tagName[0].toLowerCase() + tagName.slice(1),\n  transformAttributeName: (attributeName) => attributeName[0].toLowerCase() + attributeName.slice(1)\n};\n\n// function parseXML<T>(xml: string): T {\n//   return new XMLParser(options).parse(xml)\n// } \n// export { parseXML }\n\nexport const parseXML = (() => {\n  const parser = new XMLParser(options);\n  return <T>(xml: string):T => parser.parse(xml);\n})();\n","import { parseXML } from \"../../../common/config/xml-parser.config\"\nimport { QueueAccessResponseSuccess, QueueAccessRS } from \"./interfaces/queue-access.interface\"\n\nfunction parseXMLToQueueAccess(body: string): QueueAccessRS {\n  const { queueAccessRS } = parseXML<QueueAccessResponseSuccess>(body)\n  return queueAccessRS\n}\n\nexport { parseXMLToQueueAccess }","import { parseXML } from \"../../../common/config/xml-parser.config\"\nimport { QueueCountResponseSuccess, QueueCountRS } from \"./interfaces/queue-count.interface\"\n\nfunction parseXMLToQueueCount(body: string): QueueCountRS {\n  const { queueCountRS } = parseXML<QueueCountResponseSuccess>(body)\n  return queueCountRS\n}\n\nexport { parseXMLToQueueCount }","import { parseXML } from \"../../../common/config/xml-parser.config\";\nimport { QueuePlaceResponseSuccess, QueuePlaceRS } from \"./interfaces\";\n\nfunction parseXMLToQueuePlace(body: string): QueuePlaceRS {\n  return parseXML<QueuePlaceResponseSuccess>(body).queuePlaceRS\n}\n\nexport { parseXMLToQueuePlace }","const MONTH_MAP: Record<string, number> = {\n  JAN: 0, FEB: 1, MAR: 2, APR: 3, MAY: 4, JUN: 5,\n  JUL: 6, AUG: 7, SEP: 8, OCT: 9, NOV: 10, DEC: 11,\n}\nexport function parseSabreDate(dateStr: string, referenceYear?: number): Date {\n  const day = parseInt(dateStr.slice(0, 2), 10)\n  const month = MONTH_MAP[dateStr.slice(2, 5)]\n  const year = dateStr.length > 5\n    ? 2000 + parseInt(dateStr.slice(5), 10)\n    : (referenceYear ?? new Date().getFullYear())\n  return new Date(year, month, day, 23, 59, 59)\n}","import { BookingClassify } from './interfaces'\nimport { parseSabreDate } from './parse-sabre-date'\n\n// Sabre expresa el deadline de emisión en varios formatos:\n//   T-16SEP / T-16SEP25     → marcador explícito\n//   TAW8AYC16SEP009/1000A/  → entrada en cola de ticketing (TAW + PCC + DDMON + queue)\n//   ADTK BY 17SEP25         → SSR advisory con año\n//   BEFORE 16SEP25          → SSR advisory con año\nconst DEADLINE_PATTERNS = [\n  /\\bT-(\\d{2}[A-Z]{3}(?:\\d{2})?)\\b/,\n  /\\bADTK BY (\\d{2}[A-Z]{3}\\d{2})\\b/,\n  /\\bBEFORE (\\d{2}[A-Z]{3}\\d{2})\\b/,\n  /\\bTAW[A-Z0-9]{4}(\\d{2}[A-Z]{3})(?=\\d{3})/,\n]\n\nfunction extractTicketingDeadline(full: string, referenceYear?: number): Date | null {\n  for (const pattern of DEADLINE_PATTERNS) {\n    const m = full.match(pattern)\n    if (m) return parseSabreDate(m[1], referenceYear)\n  }\n  return null\n}\n\nfunction classifyParagraph(text: string[], referenceDate?: string): BookingClassify {\n  const safeText = text.map(line => String(line))\n  const full = safeText.join('\\n')\n  const referenceYear = referenceDate ? new Date(referenceDate).getFullYear() : undefined\n\n  const isTicketed =\n    safeText.some(line => line.trim() === 'INVOICED') ||\n    /\\bTKTED\\b/i.test(full)\n\n  // Solo captura statuses de líneas de segmento real (carrier+vuelo+clase + par de ciudades).\n  // Excluye OTH (no tiene flight# con dígitos) y líneas SSR/OSI (no comienzan con número).\n  const SEGMENT_LINE_REGEX = /^\\d+\\s+[A-Z]{2}\\s*\\d+[A-Z]?\\s+\\d{2}[A-Z]{3}\\s+[A-Z]\\s+\\w{6}[*\\s]+(HK|HX|KK|GK|UC|UN|WK|WL|TK|SC|PN)\\d+/gm\n  const flightStatuses = [...full.matchAll(SEGMENT_LINE_REGEX)].map(m => m[1])\n  const allCancelled =\n    flightStatuses.length > 0 && flightStatuses.every(s => s === 'HX')\n\n  const ticketingDeadline = extractTicketingDeadline(full, referenceYear)\n  const deadlineExpired = ticketingDeadline ? ticketingDeadline < new Date() : false\n\n  const noSegments = flightStatuses.length === 0\n\n  const action: 'place' | 'remove' =\n    noSegments || (!isTicketed && (allCancelled || deadlineExpired)) ? 'remove' : 'place'\n\n  return { isTicketed, flightStatuses, allCancelled, ticketingDeadline, deadlineExpired, action }\n}\n\nexport { classifyParagraph }\n","import { Warning } from \"../interfaces\"\nimport { BookingText } from \"./interfaces\"\n\nfunction parseParagraphToWarnings(payload: BookingText): Array<Warning> {\n  const raw = Array.isArray(payload.text) ? payload.text : [payload.text]\n  const lines = raw.map(line => String(line))\n\n  const LIMIT_NOTIFICATIONS = 5\n  const WARNING_REGEX = /\\d{3}\\s{2}.+/g\n\n  return lines\n    .slice(0, LIMIT_NOTIFICATIONS)\n    .filter(text => text.match(WARNING_REGEX))\n    .map(warningInLine => {\n      const [code, message] = warningInLine.split('  ')\n      return { code, message }\n    })\n}\nexport { parseParagraphToWarnings }","import { Notification } from \"../interfaces\"\nimport { parseWarningsNotificationsOptions } from \"./interfaces\"\n\nfunction parseWarningsToNotifications(payload: parseWarningsNotificationsOptions): Array<Notification> {\n  return payload.warnings.map(warning => ({ queue: payload.queue, warning }))\n}\nexport { parseWarningsToNotifications }","import { QueueAccess, QueueAccessRS } from \"./interfaces\"\nimport { QueueContext } from \"./interfaces/queue-context.interface\"\nimport { classifyParagraph } from \"./classify-paragraph\"\nimport { parseParagraphToWarnings } from \"./parse-paragraph-to-warnings\"\nimport { parseWarningsToNotifications } from \"./parse-warnings-to-notifications\"\n\nfunction parseAccessResponseToAccess(\n  context: QueueContext,\n  accessResponse: QueueAccessRS\n): QueueAccess {\n  if (!accessResponse.paragraph.text) {\n    throw new Error(accessResponse.applicationResults.error?.systemSpecificResults?.message || 'Paragraph text is empty');\n  }\n  const { paragraph, line } = accessResponse;\n  const firstLine = Array.isArray(paragraph.text) ? paragraph.text[0] : paragraph.text\n  if (firstLine === 'END OF DISPLAY FOR REQUESTED DATA') {\n    throw new Error('End of display')\n  }\n  const warnings = parseParagraphToWarnings(paragraph)\n  const { queueNumber: queue } = context\n  const notifications = parseWarningsToNotifications({ queue, warnings })\n\n  if (!line?.uniqueID?.iD) {\n    throw new Error(accessResponse.applicationResults.error?.systemSpecificResults?.message || 'Unknown error');\n  }\n  const classify = classifyParagraph(paragraph.text, line.dateTime)\n  return {\n    bookingId: line.uniqueID.iD,\n    dateTime: line.dateTime,\n    source: {\n      agentSine: line.pOS.source.agentSine,\n      pseudoCityCode: line.pOS.source.pseudoCityCode\n    },\n    notifications,\n    paragraph,\n    context,\n    classify,\n  }\n}\nexport { parseAccessResponseToAccess }","import { classifyParagraph } from \"./classify-paragraph\";\nimport { findQueueLine } from \"./find-queue-line\";\nimport { QueueAccess, QueuePlaceRS } from \"./interfaces\"\nimport { QueueContext } from \"./interfaces/queue-context.interface\"\nimport { parseParagraphToWarnings } from \"./parse-paragraph-to-warnings\"\nimport { parseWarningsToNotifications } from \"./parse-warnings-to-notifications\"\n\nfunction parsePlaceResponseToAccess(\n  context: QueueContext,\n  placeResponse: QueuePlaceRS\n): QueueAccess {\n  const { queueNumber: queue } = context\n  const warnings = parseParagraphToWarnings(placeResponse)\n  const notifications = parseWarningsToNotifications({ queue, warnings })\n\n  const warningMessage = placeResponse.applicationResults.warning?.systemSpecificResults?.message\n  if (warningMessage === 'END OF DISPLAY FOR REQUESTED DATA') {\n    throw new Error('End of display')\n  }\n\n  if (!placeResponse.text) {\n    throw new Error(placeResponse.applicationResults.error?.systemSpecificResults?.message || 'Unknown error');\n  }\n  const { dateTime, agent, homePcc, bookingId } = findQueueLine(placeResponse.text.pop())\n\n  const classify = classifyParagraph(placeResponse.text)\n  return {\n    bookingId,\n    dateTime,\n    source: {\n      agentSine: agent,\n      pseudoCityCode: homePcc,\n    },\n    notifications,\n    paragraph: placeResponse,\n    context,\n    classify,\n  }\n}\nexport { parsePlaceResponseToAccess }","import { parseXML } from \"../../../common/config/xml-parser.config\"\nimport { QueueAccessListResponseSuccess } from \"./interfaces/queue-access-list.interface\"\n\nfunction parseXMLToQueueAccessList(body: string) {\n  const { queueAccessRS } = parseXML<QueueAccessListResponseSuccess>(body)\n  return queueAccessRS\n}\n\nexport { parseXMLToQueueAccessList }","import { formatMonth, Month } from \"../../../currency/helpers/get-month-name-sabre.helper\"\nimport { QueueBookingInfo } from \"./interfaces\"\n\nfunction getQueueBookingInfo(text?: string): QueueBookingInfo {\n  if (!text) throw new Error('Missing text.')\n  //          NUM   PNR       LOCATOR PLACED BY  DATE  TIME    GROUP\n  // example: \"1   JGKGPN        PLT  MAM     15FEB25  2100  1QUIROZ ARREOLA\"\n  const BOOKING_INFO_REGEX = /(\\d+)\\s+([A-Z0-9]{6})\\s+(\\w{3,})[\\s|\\/]+(\\w{3,})\\s+(\\d{2}[A-Z]{3}\\d{2})\\s+(\\d{4})(?:\\s+[1](.+))?/g\n  const found = BOOKING_INFO_REGEX.exec(text)\n  if (!found) throw new Error('Queue booking info not found')\n  const [_, num, bookingId, pcc, agent, date, time, name] = found\n  return { num, bookingId, placeBy: `${pcc} ${agent}`, date: `20${date.slice(5)}-${formatMonth(date.slice(2, 5) as Month)}-${date.slice(0, 2)}T${time.slice(0, 2)}:${time.slice(2)}`, name }\n}\nexport { getQueueBookingInfo }","import { getQueueBookingInfo } from \"./get-queue-booking-info\";\nimport { QueueAccessList, QueueAccessListRS } from \"./interfaces/queue-access-list.interface\";\nimport { QueueContext } from \"./interfaces/queue-context.interface\"\n\nfunction parseAccessListResponseToList(\n  context: QueueContext,\n  accessListResponse: QueueAccessListRS\n): QueueAccessList {\n  if (!accessListResponse.applicationResults?.success) {\n    throw new Error(accessListResponse.applicationResults.error?.systemSpecificResults?.message || 'Unknown error');\n  }\n  const { queueNumber: queue } = context\n  const { paragraph, line } = accessListResponse;\n  const lines = line && !Array.isArray(line) ? [line] : line\n  return { \n    lines: lines \n      ? lines.map(qall => ({ \n          index: qall.number,\n          dateTime: qall.dateTime,\n          passengerName: qall.passengerName,\n          agent: qall.pOS.source.agentSine,\n          pcc: qall.pOS.source.pseudoCityCode,\n          bookingId: qall.uniqueID.iD\n        }))\n      : undefined,\n    list: paragraph.text.slice(2, -1).map(text => getQueueBookingInfo(text)),\n    paragraph,\n    queue\n  }\n}\nexport { parseAccessListResponseToList }","/**\n * <QueueAccessRQ ReturnHostCommand=\"true\" Version=\"2.1.0\" xmlns=\"http://webservices.sabre.com/sabreXML/2011/10\">\n *  {{queueInfo}}\n * </QueueAccessRQ>\n * @param queueInfo string\n * @returns string\n */\nfunction queueAccess(queueInfo: string): string {\n  return `<QueueAccessRQ ReturnHostCommand=\"false\" Version=\"2.1.0\" xmlns=\"http://webservices.sabre.com/sabreXML/2011/10\">${queueInfo}</QueueAccessRQ>`\n}\nexport { queueAccess }","import { QueueIdentifierOptions } from \"../helpers/interfaces/queue-identifier-options.interface\"\n\nfunction parseIdentifierOptionsToQueueIdentifier(payload: QueueIdentifierOptions) {\n  return {\n    QueueIdentifier: {\n      \"$Number\": payload.number,\n      \"$PrefatoryInstructionCode\": payload.code,\n      \"$PseudoCityCode\": payload.pcc,\n\n      List: payload.ind \n      ? {\n        \"$Ind\": payload.ind,\n        \"$PrimaryPassenger\": payload.primaryPassenger\n      }\n      : undefined\n    }\n  }\n}\n\nexport { parseIdentifierOptionsToQueueIdentifier }","import { QueueIdentifierOptions } from \"../helpers/interfaces/queue-identifier-options.interface\";\nimport { parseIdentifierOptionsToQueueIdentifier } from \"./parse-identifier-options-to-queue-identifier\";\nimport { XMLBuilder } from 'fast-xml-parser';\n/**\n * \n * <QueueIdentifier PseudoCityCode=\"{{pcc}}\"/>\n * or \n * <QueueIdentifier Number=\"{{number}}\" PseudoCityCode=\"{{pcc}}\"/>\n * or \n * <QueueIdentifier Number=\"{{number}}\" PseudoCityCode=\"{{pcc}}\"/>\n * or\n * <QueueIdentifier Number=\"{{number}}\" PrefatoryInstructionCode=\"{{code}}\" PseudoCityCode=\"{{pcc}}\">\n *  <List Ind=\"true\" PrimaryPassenger=\"true\" />\n * </QueueIdentifier>\n * \n * @param options QueueIdentifierOptions\n * @returns string\n */\n\nfunction builderQueueIdentifier(payload: QueueIdentifierOptions): string {\n  const QueueIdentifierObj = parseIdentifierOptionsToQueueIdentifier(payload)\n  const options = {\n    ignoreAttributes: false,\n    attributeNamePrefix: \"$\",\n    suppressBooleanAttributes: false,\n    suppressEmptyNode: true\n  }\n  const builder = new XMLBuilder(options);\n  return builder.build(QueueIdentifierObj);\n}\n\nexport { builderQueueIdentifier }","import { request } from \"../../../common/helpers/request.helper\";\nimport { ActionsRQ } from \"../../../common/interfaces/actions.interface\";\nimport { queueAccess } from \"../../common/helpers/queue-access.helper\";\nimport { builderQueueIdentifier } from \"../utils/builder-queue-identifier\";\nimport { AccessListOptions } from \"./interfaces/access-list-options.interface\";\n\n/**\n * {{header}}\n * \n * {{queueAccess(queueInfo)}}\n * \n * {{footer}}\n * @param options AccessOptions\n * @returns string\n */\nfunction accessListRequest(options: AccessListOptions): string {\n  const { pcc, number, authorization, conversationId, primaryPassenger } = options;\n  const queueInfo = builderQueueIdentifier({ pcc, number, ind: true, primaryPassenger });\n  const body = queueAccess(queueInfo);\n  return request({\n    body, authorization, conversationId, action: ActionsRQ.QUEUE_ACCESS\n  })\n}\n\nexport { accessListRequest }","import { request } from \"../../../common/helpers/request.helper\";\nimport { ActionsRQ } from \"../../../common/interfaces/actions.interface\";\nimport { queueAccess } from \"../../common/helpers/queue-access.helper\";\nimport { builderQueueIdentifier } from \"../utils/builder-queue-identifier\";\nimport { AccessOptions } from \"./interfaces/access-options.interface\";\n\n/**\n * {{header}}\n * \n * {{queueAccess(queueInfo)}}\n * \n * {{footer}}\n * @param options AccessOptions\n * @returns string\n */\nfunction accessRequest(options: AccessOptions): string {\n  const { pcc, number, authorization, conversationId } = options;\n  const queueInfo = builderQueueIdentifier({ pcc, number });\n  const body = queueAccess(queueInfo);\n  return request({\n    body, authorization, conversationId, action: ActionsRQ.QUEUE_ACCESS\n  })\n}\n\nexport { accessRequest }","/**\n * <QueueCountRQ xmlns=\"http://webservices.sabre.com/sabreXML/2011/10\" ReturnHostCommand=\"true\" Version=\"2.2.1\">\n *  <QueueInfo>{{queueInfo}}</QueueInfo>\n * </QueueCountRQ>\n * \n * @param queueInfo string\n * @returns string\n */\nfunction queueCount(queueInfo: string): string {\n  return `<QueueCountRQ xmlns=\"http://webservices.sabre.com/sabreXML/2011/10\" ReturnHostCommand=\"false\" Version=\"2.2.1\"><QueueInfo>${queueInfo}</QueueInfo></QueueCountRQ>`\n}\n\nexport { queueCount }","import { request } from \"../../../common/helpers/request.helper\";\nimport { ActionsRQ } from \"../../../common/interfaces/actions.interface\";\nimport { queueCount } from \"../../common/helpers/queue-count.helper\";\nimport { builderQueueIdentifier } from \"../utils/builder-queue-identifier\";\nimport { CountOptions } from \"./interfaces/count-options.interface\";\n\n/**\n * {{header}}\n * \n * {{queueCount(queueInfo)}}\n * \n * {{footer}}\n * @param options QueueCountOptions\n * @returns string\n */\nfunction countRequest(options: CountOptions): string {\n  const { authorization, conversationId, pcc } = options;\n  const queueInfo = builderQueueIdentifier({ pcc });\n  const body = queueCount(queueInfo)\n  return request({ \n    body,\n    authorization,\n    conversationId,\n    action: ActionsRQ.QUEUE_COUNT\n  })\n}\nexport { countRequest }","import { NavigationAction } from \"./interfaces/navigation-actions.interface\";\nimport { queueAccess } from \"./queue-access.helper\"\n\nfunction navigationAction(action: NavigationAction): string {\n  const queueInfo = `<Navigation Action=\"${action}\"/>`;\n  const body = queueAccess(queueInfo);\n  return body\n}\nexport { navigationAction }","import { request } from \"../../../common/helpers/request.helper\";\nimport { ActionsRQ } from \"../../../common/interfaces/actions.interface\";\nimport { navigationAction } from \"../../common/helpers/navigation-action.helper\"\nimport { ExitOptions } from \"./interfaces/exit-options.interface\";\nimport { NavigationAction } from \"../../common/helpers/interfaces/navigation-actions.interface\"\n\n/**\n * {{header}}\n * \n * {{navigationAction(action)}}\n * \n * {{footer}}\n * @param options ExitOptions\n * @returns string\n */\nfunction exitRequest(options: ExitOptions): string {\n  const { authorization, conversationId } = options \n  const body = navigationAction(NavigationAction.EXIT);\n  return request({ authorization, conversationId, body, action: ActionsRQ.QUEUE_ACCESS })\n}\n\nexport { exitRequest }","import { request } from \"../../../common/helpers/request.helper\";\nimport { ActionsRQ } from \"../../../common/interfaces/actions.interface\";\nimport { navigationAction } from \"../../common/helpers/navigation-action.helper\"\nimport { IgnoreOptions } from \"./interfaces/ignore-options.interface\";\nimport { NavigationAction } from \"../../common/helpers/interfaces/navigation-actions.interface\"\n\n/**\n * {{header}}\n * \n * {{navigationAction(action)}}\n * \n * {{footer}}\n * @param options IgnoreOptions\n * @returns string\n */\nfunction ignoreRequest(options: IgnoreOptions): string {\n  const { authorization, conversationId } = options \n  const body = navigationAction(NavigationAction.IGNORE);\n  return request({ authorization, conversationId, body, action: ActionsRQ.QUEUE_ACCESS })\n}\n\nexport { ignoreRequest }","\n/**\n * <QueuePlaceRQ ReturnHostCommand=\"true\" Version=\"2.0.4\" xmlns=\"http://webservices.sabre.com/sabreXML/2011/10\">\n *  <QueueInfo>{{queueInfo}}</QueueInfo>\n * </QueuePlaceRQ>\n * \n * @param queueInfo string\n * @returns string\n */\nfunction queuePlace(queueInfo: string): string {\n  return `<QueuePlaceRQ ReturnHostCommand=\"false\" Version=\"2.0.4\" xmlns=\"http://webservices.sabre.com/sabreXML/2011/10\"><QueueInfo>${queueInfo}</QueueInfo></QueuePlaceRQ>`\n}\nexport { queuePlace }","\nimport { request } from \"../../../common/helpers/request.helper\";\nimport { ActionsRQ } from \"../../../common/interfaces/actions.interface\";\nimport { queuePlace } from \"../helpers/queue-place.helper\";\nimport { builderQueueIdentifier } from \"../utils/builder-queue-identifier\";\nimport { PlaceOptions } from \"./interfaces/place-options.inferface\"\n\n/**\n * {{header}}\n * \n * {{queuePlace(queueInfo)}}\n * \n * {{footer}}\n * @param options PlaceOptions\n * @returns string\n */\nfunction placeRequest(options: PlaceOptions): string {\n  const { number, pcc, authorization, conversationId } = options; \n  const queueInfo = builderQueueIdentifier({ number, code: '11', pcc });\n  const body = queuePlace(queueInfo);\n  return request({ body, authorization, conversationId, action: ActionsRQ.QUEUE_PLACE })\n}\n\nexport { placeRequest }","import { request } from \"../../../common/helpers/request.helper\";\nimport { ActionsRQ } from \"../../../common/interfaces/actions.interface\";\nimport { navigationAction } from \"../../common/helpers/navigation-action.helper\"\nimport { NavigationAction } from \"../../common/helpers/interfaces/navigation-actions.interface\"\nimport { RemoveOptions } from \"./interfaces/remove-options.interface\";\n\n/**\n * {{header}}\n * \n * {{navigationAction(action)}}\n * \n * {{footer}}\n * @param options RemoveOptions\n * @returns string\n */\nfunction removeRequest(options: RemoveOptions): string {\n  const { authorization, conversationId } = options\n  const body = navigationAction(NavigationAction.REMOVE);\n  return request({ authorization, conversationId, body, action: ActionsRQ.QUEUE_ACCESS })\n}\n\nexport { removeRequest }","import { parseXMLToQueueCount, parseXMLToQueueAccess, parseXMLToQueuePlace, parseXMLToQueueAccessList, parseAccessListResponseToList, parseAccessResponseToAccess, parsePlaceResponseToAccess } from \"./common/utils\";\nimport { QueueAccessListOptions, QueueAccessListResponse, QueueAccessOptions, QueueAccessResponse, QueueCountResponse, QueueExitResponse, QueueIgnoreResponse, QueuePlaceOptions, QueuePlaceResponse, QueueRemoveResponse } from \"./interfaces\";\nimport { countRequest, accessRequest, ignoreRequest, removeRequest, exitRequest, placeRequest, accessListRequest } from \"./common/requests\";\nimport { ActionsRQ, ActionsRS } from \"../common/interfaces/actions.interface\";\nimport { Sabre } from \"../sabre\";\n\nexport class Queue {\n  private readonly meta = {\n    queue: '',\n  }\n  constructor(private readonly sabre: Sabre) { }\n\n  /**\n   * List Queues\n   * \n   * See https://developer.sabre.com/docs/soap_apis/management/queue/Get_Queue_Count\n   * @param pcc string\n   * @returns QueueCountResponse\n   */\n  async count(pcc?: string): Promise<QueueCountResponse> {\n    if (!pcc) {\n      if (typeof process !== 'undefined' && process.env) {\n        pcc = process.env.SABRE_ORGANIZATION;\n      }\n    }\n    if (!pcc) throw new Error('Missing pcc. Set it in count(\"PCC\")')\n\n    this.sabre.setAction(ActionsRQ.QUEUE_COUNT)\n    const xml = await this.sabre.post((opts) => countRequest({\n      pcc, ...opts\n    }))\n    return parseXMLToQueueCount(xml)\n  }\n\n  /**\n   * Access queue \n   * \n   * See https://developer.sabre.com/docs/soap_apis/management/queue/Access_Queue\n   * @param payload QueueAccessOptions\n   * @returns QueueAccessResponse\n   */\n  async access(payload: QueueAccessOptions): Promise<QueueAccessResponse> {\n    if (!payload.pcc) {\n      if (typeof process !== 'undefined' && process.env) {\n        payload.pcc = process.env.SABRE_ORGANIZATION;\n      }\n    }\n    if (!payload.pcc) throw new Error('Missing pcc. Set it in access({ pcc, number })')\n    const { number, pcc } = payload\n    this.sabre.setAction(ActionsRS.QUEUE_ACCESS)\n    const xml = await this.sabre.post((opts) => accessRequest({\n      number, pcc, ...opts\n    }))\n    this.meta.queue = number\n    const queueAccess = parseXMLToQueueAccess(xml)\n    return parseAccessResponseToAccess({ queueNumber: this.meta.queue }, queueAccess)\n  }\n  /**\n   * Get PNR list from queue (Stateless)\n   * \n   * See https://developer.sabre.com/docs/soap_apis/management/queue/Access_Queue\n   * @param payload QueueAccessListOptions\n   * @returns QueueAccessListResponse\n   */\n  async accessList(payload: QueueAccessListOptions): Promise<QueueAccessListResponse> {\n    if (!payload.pcc) {\n      if (typeof process !== 'undefined' && process.env) {\n        payload.pcc = process.env.SABRE_ORGANIZATION;\n      }\n    }\n    if (!payload.pcc) throw new Error('Missing pcc. Set it in access({ pcc, number })')\n    const { number, pcc, primaryPassenger } = payload\n    this.sabre.setAction(ActionsRS.QUEUE_ACCESS)\n    const xml = await this.sabre.post((opts) => accessListRequest({\n      number, pcc, primaryPassenger, ...opts\n    }))\n    const queueAccessList = parseXMLToQueueAccessList(xml)\n    return parseAccessListResponseToList({ queueNumber: number }, queueAccessList)\n  }\n\n  /**\n   * Ignore PNR & Next\n   * \n   * See https://developer.sabre.com/docs/soap_apis/management/queue/Access_Queue\n   * @returns QueueIgnoreResponse\n   */\n  async ignore(): Promise<QueueIgnoreResponse> {\n    this.sabre.setAction(ActionsRS.QUEUE_ACCESS)\n    const xml = await this.sabre.post(ignoreRequest)\n    const queueAccess = parseXMLToQueueAccess(xml)\n    return parseAccessResponseToAccess({ queueNumber: this.meta.queue }, queueAccess)\n  }\n\n  /**\n   * Remove PNR & Next\n   * \n   * See https://developer.sabre.com/docs/soap_apis/management/queue/Access_Queue\n   * @returns QueueRemoveResponse\n   */\n  async remove(): Promise<QueueRemoveResponse> {\n    this.sabre.setAction(ActionsRS.QUEUE_ACCESS)\n    const xml = await this.sabre.post(removeRequest)\n    const queueAccess = parseXMLToQueueAccess(xml)\n    return parseAccessResponseToAccess({ queueNumber: this.meta.queue }, queueAccess)\n  }\n\n  /**\n   * Ignore PNR & Exit\n   * \n   * See https://developer.sabre.com/docs/soap_apis/management/queue/Access_Queue\n   * @returns QueueExitResponse\n   */\n  async exit(): Promise<QueueExitResponse> {\n    this.sabre.setAction(ActionsRS.QUEUE_ACCESS)\n    const xml = await this.sabre.post(exitRequest)\n    const queueAccess = parseXMLToQueueAccess(xml)\n    if (queueAccess.applicationResults.error) {\n      throw new Error(queueAccess.applicationResults.error?.systemSpecificResults?.message);\n    }\n    return {\n      paragraph: queueAccess.paragraph,\n    }\n  }\n\n  /**\n   * Queue Place \"Stateful Single Queue\"\n   * \n   * See https://developer.sabre.com/docs/soap_apis/management/queue/Place_Queue_Message\n   * @param payload QueuePlaceOptions\n   * @returns QueuePlaceResponse\n   */\n  async place(payload: QueuePlaceOptions): Promise<QueuePlaceResponse> {\n    if (!payload.pcc) {\n      if (typeof process !== 'undefined' && process.env) {\n        payload.pcc = process.env.SABRE_ORGANIZATION;\n      }\n    }\n    if (!payload.pcc) throw new Error('Missing pcc. Set it in place({ pcc, number })')\n    const { number, pcc } = payload\n    this.sabre.setAction(ActionsRQ.QUEUE_PLACE)\n    const xml = await this.sabre.post((opts) => placeRequest({\n      number, pcc, ...opts\n    }))\n    const queuePlace = parseXMLToQueuePlace(xml)\n    return parsePlaceResponseToAccess({ queueNumber: this.meta.queue }, queuePlace)\n  }\n}","\nimport { request } from \"../../../common/helpers/request.helper\"\nimport { ActionsRQ } from \"../../../common/interfaces\"\nimport { ReportRequestOptions } from \"./interfaces/report-options.interface\"\n\n/**\n * <DailySalesReportRQ ReturnHostCommand=\"false\" Version=\"2.0.0\" xmlns=\"http://webservices.sabre.com/sabreXML/2011/10\">\n *  <SalesReport PseudoCityCode=\"{{pcc_tkt}}\" StartDate=\"{{date}}\"/>\n * </DailySalesReportRQ>\n * @param options ReportOptions\n * @returns string\n */\nfunction reportRequest(options: ReportRequestOptions): string {\n  const { pcc, date, authorization, conversationId } = options\n  const body = `<DailySalesReportRQ ReturnHostCommand=\"false\" Version=\"2.0.0\" xmlns=\"http://webservices.sabre.com/sabreXML/2011/10\"><SalesReport PseudoCityCode=\"${pcc}\" StartDate=\"${date}\"/></DailySalesReportRQ>`\n  return request({\n    body, action: ActionsRQ.DAILY_SALES_REPORT, authorization, conversationId\n  })\n}\n\nexport { reportRequest }","import { SummaryOptions } from \"../requests/interfaces/summary-options.interface\";\nimport { SelectionCriteria } from \"../interfaces\";\n\nfunction parseSummaryOptionsToSelectionCriteria(payload: SummaryOptions): SelectionCriteria {\n  return {\n    PseudoCityCode: payload.pcc,\n    ReportDate: payload.date,\n    DocumentNumber: payload.documentNumber,\n    SettlementType: payload.settlementType,\n    DocumentType: payload.documentType,\n    Airline: payload.airline?.code || payload.airline?.number\n      ? {\n        AirlineCode: payload.airline.code,\n        AirlineNumber: payload.airline.number\n      }\n      : undefined\n  }\n}\nexport { parseSummaryOptionsToSelectionCriteria }","import { SummaryOptions } from \"../requests/interfaces/summary-options.interface\";\nimport { parseSummaryOptionsToSelectionCriteria } from \"./parse-summary-options-to-selection-criteria\";\nimport { XMLBuilder } from 'fast-xml-parser';\n\nfunction parseSummaryOptionsToXML(payload: SummaryOptions): string {\n  const SelectionCriteria = parseSummaryOptionsToSelectionCriteria(payload)\n  const builder = new XMLBuilder();\n  return builder.build({ SelectionCriteria });\n}\n\nexport { parseSummaryOptionsToXML }","import { request } from \"../../../common/helpers/request.helper\"\nimport { ActionsRQ } from \"../../../common/interfaces/actions.interface\"\nimport { parseSummaryOptionsToXML } from \"../utils/parse-summary-options-to-xml\"\nimport { SummaryRequestOptions } from \"./interfaces/summary-options.interface\"\n\n/**\n * <DailySalesSummaryRQ version=\"1.2.2\" xmlns=\"http://www.sabre.com/ns/Ticketing/AsrServices/1.0\">\n *  <Header/>\n *  <SelectionCriteria>\n *    <PseudoCityCode>{{pccTkt}}</PseudoCityCode>\n *    <ReportDate>{{date}}</ReportDate>\n *  </SelectionCriteria>\n * </DailySalesSummaryRQ>\n * \n * @param options SummaryOptions\n * @returns string\n */\nfunction summaryRequest(options: SummaryRequestOptions): string {\n  const { authorization, conversationId, ...summaryOptions } = options\n  const selectionCriteria = parseSummaryOptionsToXML(summaryOptions)\n  const body = `<DailySalesSummaryRQ version=\"1.2.2\" xmlns=\"http://www.sabre.com/ns/Ticketing/AsrServices/1.0\"><Header/>${selectionCriteria}</DailySalesSummaryRQ>`\n  return request({\n    body, action: ActionsRQ.AGENCY_REPORT, authorization, conversationId\n  })\n}\n\nexport { summaryRequest }","import { parseXML } from \"../../../common/config/xml-parser.config\"\nimport { DailySalesSummaryResponseSuccess } from \"../../interfaces/daily-sales-summary-options.interface\"\n\nfunction parseXMLToDailySalesSummary(payload: string) {\n  return parseXML<DailySalesSummaryResponseSuccess>(payload).dailySalesSummaryRS\n}\n\nexport { parseXMLToDailySalesSummary }","import { parseXML } from \"../../../common/config/xml-parser.config\"\nimport { DailySalesReportResponseSuccess } from \"../../interfaces/daily-sales-report-options.interface\"\n\nfunction parseXMLToDailySalesReport(payload: string) {\n  return parseXML<DailySalesReportResponseSuccess>(payload).dailySalesReportRS\n}\n\nexport { parseXMLToDailySalesReport }","import { Sabre } from \"../sabre\";\nimport { ActionsRQ } from \"../common/interfaces/actions.interface\";\nimport { reportRequest } from \"./common/requests/report.request\";\nimport { summaryRequest } from \"./common/requests/summary.request\";\nimport { parseXMLToDailySalesSummary } from \"./common/utils/parse-xml-to-daily-sales-summary\";\nimport { parseXMLToDailySalesReport } from \"./common/utils/parse-xml-to-daily-sales-report\";\nimport { DailySalesReportRS, ReportOptions } from \"./interfaces/daily-sales-report-options.interface\";\nimport { DailySalesSummaryRS, SummaryOptions } from \"./interfaces/daily-sales-summary-options.interface\";\n\nexport class DailySales {\n  constructor(private readonly sabre: Sabre) {}\n\n  /**\n   * See https://developer.sabre.com/docs/soap_apis/air/fulfill/Get_Sales_Reports\n   * @param payload ReportOptions\n   * @returns DailySalesReportRS\n   */\n  async report(payload: ReportOptions): Promise<DailySalesReportRS> {\n    if (!payload.pcc) {\n      if (typeof process !== 'undefined' && process.env) {\n        payload.pcc = process.env.SABRE_ORGANIZATION;\n      }\n    }\n    if (!payload.pcc) throw new Error('Missing pcc. Set it in report({ pcc, number })')\n\n    const { pcc, date } = payload\n    this.sabre.setAction(ActionsRQ.DAILY_SALES_REPORT)\n    const xml = await this.sabre.post((headersPayload) => reportRequest({ pcc, date, ...headersPayload }))\n    return parseXMLToDailySalesReport(xml)\n  }\n\n  /**\n   * See https://developer.sabre.com/docs/soap_apis/air/fulfill/display_audit_trail\n   * @param payload \n   * @returns DailySalesSummaryRS\n   */\n  async summary(payload: SummaryOptions): Promise<DailySalesSummaryRS> {\n    if (!payload.pcc) {\n      if (typeof process !== 'undefined' && process.env) {\n        payload.pcc = process.env.SABRE_ORGANIZATION;\n      }\n    }\n    if (!payload.pcc) throw new Error('Missing pcc. Set it in summary({ pcc, ... })')\n      \n    const { pcc } = payload\n    this.sabre.setAction(ActionsRQ.DAILY_SALES_REPORT)\n    const xml = await this.sabre.post((headersPayload) => summaryRequest({ pcc, ...payload, ...headersPayload }))\n    return parseXMLToDailySalesSummary(xml)\n  }\n}","export class FaultError extends Error {\n  constructor(message: string) {\n    super(message); // (1)\n    this.name = \"FaultError\"; // (2)\n  };\n}\n","export class ErrorInResponse extends Error {\n  constructor(message: string) {\n    super(message); // (1)\n    this.name = \"ErrorInResponse\"; // (2)\n  };\n}\n","import { parseXML } from '../config/xml-parser.config';\nimport { SabreCommandResponseSuccess } from '../interfaces/sabre-command.interface';\n\nfunction parseXMLToSabreCommand(payload: string) {\n    return parseXML<SabreCommandResponseSuccess>(payload).sabreCommandLLSRS\n} \n\nexport {parseXMLToSabreCommand}","/**\n * @param command\n * @returns \n */\nfunction sabreCommand (command: string): string {\n    return `<SabreCommandLLSRQ xmlns=\"http://webservices.sabre.com/sabreXML/2011/10\" ReturnHostCommand=\"true\" Version=\"2.0.0\"><Request Output=\"SCREEN\"><HostCommand>${command}</HostCommand></Request></SabreCommandLLSRQ>`;\n  }\n  \n  export { sabreCommand }","import { getMonthName, MonthNumber } from './get-month-name-sabre.helper';\n\nexport function formatDateSabre(date: string): string {\n    const dateSplit = date.split('-');\n    const monthNumber = parseInt(dateSplit[1]);\n    const numberValid = (monthNumber >= 1 && monthNumber <= 12);\n    if (!numberValid) {\n       throw new Error('Month is not valid:' + monthNumber); \n    }\n    const month: MonthNumber = monthNumber as MonthNumber;\n    const year = dateSplit[0].slice(2,4);\n\n    return dateSplit[2]+getMonthName(month) + year;\n}","\nimport { CurrencyConversionOptions } from \"../interfaces/currency-conversion-options.interface\";\nimport { formatDateSabre } from \"./format-date-sabre.helper\";\n\nexport function formatCurrencyCommand(options: CurrencyConversionOptions): string {\n    const { from, to, date } = options;\n    const dateFormatted = formatDateSabre(date);\n    const command = `DC¥${from}1/${to}/${dateFormatted}`;\n    return command;\n}","import { request } from \"../../common/helpers/request.helper\";\nimport { sabreCommand } from \"../../common/helpers/sabre-command.helper\";\nimport { ActionsRQ } from \"../../common/interfaces/actions.interface\";\nimport { formatCurrencyCommand } from \"../helpers/format-currency-command.helper\";\nimport { CurrencyOptions } from \"../requests/interfaces/currency-options.interface\";\n\n/**\n * {{header}}\n * \n * {{currencyRequest(options)}}\n * \n * {{footer}}\n * @param options CurrencyOptions\n * @returns string\n */\nfunction currencyRequest(options: CurrencyOptions): string {\n    const { authorization, conversationId } = options;\n    const body = sabreCommand(formatCurrencyCommand(options))\n    return request({\n        body,\n        authorization,\n        conversationId,\n        action: ActionsRQ.SABRE_COMMAND\n    })\n}\n\nexport { currencyRequest }\n","import { ActionsRQ } from \"../common/interfaces/actions.interface\";\nimport { SabreCommandLLSRS } from \"../common/interfaces/sabre-command.interface\";\nimport { parseXMLToSabreCommand } from \"../common/utils/parse-xml-to-sabre-command\";\nimport { Sabre } from \"../sabre\";\nimport { CurrencyConversionOptions } from \"./interfaces/currency-conversion-options.interface\";\nimport { currencyRequest } from \"./requests/currency.request\";\n\nexport class Currency {\n  constructor(private readonly sabre: Sabre) {}\n\n  /**\n   * See https://developer.sabre.com/docs/soap_apis/management/utility/Send_Sabre_Command\n   * Sabre equivalent command -> DC¥USD1/MXN/19MAR25\n   */\n  async conversion(payload: CurrencyConversionOptions): Promise<SabreCommandLLSRS> {\n    this.sabre.setAction(ActionsRQ.SABRE_COMMAND);\n    const {from, to, date} = payload;\n    const xml = await this.sabre.post((headersPayload) => currencyRequest({ from, to, date, ...headersPayload }))\n    return parseXMLToSabreCommand(xml)\n  }\n}","\nimport type { Actions, FetchRequestOptions, SabreOptions } from \"./interfaces\";\nimport { getSubString } from \"./common/utils/get-sub-string\";\nimport { baseUrl, conversationId, domain, userAgent } from \"./config\";\nimport type { PostOptions } from \"./common/interfaces/post-options.interface\";\nimport type { HeadersRequestOptions } from \"./common/interfaces/headers-request-options.interface\";\nimport { Authentication } from \"./authentication/authentication\";\nimport { Queue } from \"./queue/queue\";\nimport { DailySales } from \"./daily-sales/daily-sales\";\nimport type { SessionCreateOptions } from \"./authentication/requests/interfaces/session-create-options.interface\";\nimport { ActionsRQ } from \"./common/interfaces/actions.interface\";\nimport { ErrorInResponse, FaultError } from \"./common/utils\";\nimport { Currency } from \"./currency/currency\";\n\nexport class Sabre {\n  private readonly headers: Headers;\n  private readonly headersRequest: HeadersRequestOptions\n  private lastReq: FetchRequestOptions | {} = {};\n  private lastRes: string = '';\n\n  readonly authentication = new Authentication(this)\n  readonly queue = new Queue(this)\n  readonly dailySales = new DailySales(this)\n  readonly currency = new Currency(this)\n\n  constructor(private readonly options: SabreOptions = {}) {\n    const processEnv = typeof process !== 'undefined' && process.env\n    if (!this.options.username && processEnv) \n      this.options.username = processEnv.SABRE_USERNAME\n    if (!this.options.password && processEnv)\n      this.options.password = processEnv.SABRE_PASSWORD\n    if (!this.options.organization && processEnv)\n      this.options.organization = processEnv.SABRE_ORGANIZATION\n    if (!this.options.token && processEnv)\n      this.options.token = processEnv.SABRE_SESSION_TOKEN\n\n    if (!this.options.username || !this.options.password || !this.options.organization) {\n      if (!this.options.token) {\n        throw new Error(`Pass it to the constructor new SabreLegacy({\n          username: '773400', \n          password: 'PASSWORD_GOES_HERE',\n          organization: '7TZA', // pcc\n        });})`)\n      }\n    }\n\n    this.headers = new Headers({\n      'User-Agent': userAgent,\n      'Content-Type': 'text/xml; charset=\"utf-8\"',\n      'Content-Encoding': 'deflate',\n      'Authorization': this.options.token ? `Bearer ${this.options.token}` : '',\n    });\n    this.headersRequest = {\n      conversationId, \n      authorization: this.options.token || '',\n    }\n  }\n  \n  setAction(action: Actions) {\n    this.headers.set('SOAPAction', action)\n  }\n  setAuthorization(token: string) {\n    this.headersRequest.authorization = token;\n    this.headers.set('Authorization', `Bearer ${token}`)\n  }\n  getAuthorization() {\n    return this.headersRequest.authorization\n  }\n  getLastRequest() {\n    return this.lastReq;\n  }\n  getLastResponse() {\n    return this.lastRes;\n  }\n\n  async fetchRequest(\n    options: FetchRequestOptions | {} = {},\n  ): Promise<string> {\n    this.lastReq = options\n    try {\n      const response = await fetch(baseUrl, options);\n      const xml = await response.text()\n  \n      if (!response.ok) {\n        const fault = getSubString(xml, '<faultstring>', '</faultstring>', false)\n        throw new FaultError(fault)\n      }\n      const body = getSubString(xml, '<soap-env:Body>', '</soap-env:Body>', false)\n      const error = getSubString(body, '<stl:Error>', '</stl:Error>', false) \n      if (error) {\n        const message = getSubString(error, '<stl:Message>', '</stl:Message>', false)\n        throw new ErrorInResponse(message)\n      }\n      const action = this.headers.get('SOAPAction')\n      // AUTHORIZATION INTERNAL MANAGEMENT\n      // Change authorization internal for the reason: token no exported - vie 14 de mar del 25\n      if (action === ActionsRQ.SESSION_CREATE || action === ActionsRQ.TOKEN_CREATE) {\n        const token = getSubString(xml, '<wsse:BinarySecurityToken valueType=\"String\" EncodingType=\"wsse:Base64Binary\">', '</wsse:BinarySecurityToken>', false);\n        this.setAuthorization(token)\n      } else if (action === ActionsRQ.SESSION_CLOSE) {\n        this.headersRequest.authorization = '';\n        this.headers.delete('Authorization')\n      }\n      this.lastRes = body;\n      return body;\n    } catch (error) {\n      if (error instanceof FaultError || error instanceof ErrorInResponse) {\n        throw error;\n      }\n      throw error instanceof Error \n        ? error \n        : new Error('Unknown error');\n    }\n  }\n\n  async post(handlerRequest: (payload: HeadersRequestOptions) => string, options: PostOptions = {}): Promise<string> {\n    if (!this.headersRequest.authorization) throw new Error('Missing authorization. Set it in setAuthorization(\"TOKEN\")')\n    const requestOptions = {\n      method: 'POST',\n      headers: this.headers,\n      body: handlerRequest(this.headersRequest),\n      ...options,\n    };\n\n    return this.fetchRequest(requestOptions);\n  }\n\n  async auth(handlerRequest:(payload: SessionCreateOptions) => string, options: PostOptions = {}): Promise<string> {\n    if (!this.options.username || !this.options.password || !this.options.organization)\n      throw new Error(`Missing SabreLegacy authorization. Pass it to the constructor new SabreLegacy({\n        username: '773400', \n        password: 'PASSWORD_GOES_HERE',\n        organization: '7TZA', // pcc\n      });})`)\n\n    const requestOptions = {\n      method: 'POST',\n      headers: this.headers,\n      body: handlerRequest({\n        conversationId: conversationId,\n        authorization: {\n          username: this.options.username,\n          password: this.options.password,\n          pcc: this.options.organization,\n          domain: domain\n        }\n      }),\n      ...options,\n    };\n\n    return this.fetchRequest(requestOptions);\n  }\n}"]}