sabre-legacy-client 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +15 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +15 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -15,7 +15,7 @@ function getSubString(strSearch, strBegin, strEnd, withEnd) {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
// package.json
|
|
18
|
-
var version = "0.1
|
|
18
|
+
var version = "1.0.1";
|
|
19
19
|
|
|
20
20
|
// src/config.ts
|
|
21
21
|
var defaultBaseUrl = "https://webservices.platform.sabre.com";
|
|
@@ -238,14 +238,26 @@ function parseSabreDate(dateStr) {
|
|
|
238
238
|
}
|
|
239
239
|
|
|
240
240
|
// src/queue/common/utils/classify-paragraph.ts
|
|
241
|
+
var DEADLINE_PATTERNS = [
|
|
242
|
+
/\bT-(\d{2}[A-Z]{3}(?:\d{2})?)\b/,
|
|
243
|
+
/\bADTK BY (\d{2}[A-Z]{3}\d{2})\b/,
|
|
244
|
+
/\bBEFORE (\d{2}[A-Z]{3}\d{2})\b/,
|
|
245
|
+
/\bTAW[A-Z0-9]{4}(\d{2}[A-Z]{3})(?=\d{3})/
|
|
246
|
+
];
|
|
247
|
+
function extractTicketingDeadline(full) {
|
|
248
|
+
for (const pattern of DEADLINE_PATTERNS) {
|
|
249
|
+
const m = full.match(pattern);
|
|
250
|
+
if (m) return parseSabreDate(m[1]);
|
|
251
|
+
}
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
241
254
|
function classifyParagraph(text) {
|
|
242
255
|
const full = text.join("\n");
|
|
243
256
|
const isTicketed = text.some((line) => line.trim() === "INVOICED") || /\bTKTED\b/i.test(full);
|
|
244
257
|
const statusPattern = /\b(HK|HX|KK|GK|UC|UN|WK|WL|TK|SC|PN)\d+/g;
|
|
245
258
|
const flightStatuses = [...full.matchAll(statusPattern)].map((m) => m[1]);
|
|
246
259
|
const allCancelled = flightStatuses.length > 0 && flightStatuses.every((s) => s === "HX");
|
|
247
|
-
const
|
|
248
|
-
const ticketingDeadline = timeLimitMatch ? parseSabreDate(timeLimitMatch[1]) : null;
|
|
260
|
+
const ticketingDeadline = extractTicketingDeadline(full);
|
|
249
261
|
const deadlineExpired = ticketingDeadline ? ticketingDeadline < /* @__PURE__ */ new Date() : false;
|
|
250
262
|
const action = !isTicketed && (allCancelled || deadlineExpired) ? "remove" : "place";
|
|
251
263
|
return { isTicketed, flightStatuses, allCancelled, ticketingDeadline, deadlineExpired, action };
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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":";;;;;AAAO,SAAS,YAAc,CAAA,SAAA,EAAmB,QAAkB,EAAA,MAAA,EAAgB,OAA0B,EAAA;AAC3G,EAAA,IAAI,MAAS,GAAA,EAAA;AACb,EAAM,MAAA,QAAA,GAAW,SAAU,CAAA,OAAA,CAAQ,QAAQ,CAAA;AAC3C,EAAA,IAAI,aAAa,EAAI,EAAA;AACnB,IAAA,MAAM,UAAa,GAAqB,QAAA,GAAW,QAAS,CAAA,MAAA;AAC5D,IAAA,MAAM,QAAW,GAAA,SAAA,CAAU,OAAQ,CAAA,MAAA,EAAQ,UAAU,CAAA;AACrD,IAAI,IAAA,QAAA,KAAa,EAAI,EAAA,MAAA,GAAS,SAAU,CAAA,SAAA,CAAU,YAAY,QAAY,IAA0B,CAAE,CAAA,CAAA;AAAA;AAExG,EAAO,OAAA,MAAA;AACT;;;ACPE,IAAW,OAAA,GAAA,QAAA;;;ACAb,IAAM,cAAiB,GAAA,wCAAA;AACvB,IAAM,gBAAA,GAAmB,qBAAqB,OAAO,CAAA,CAAA;AACrD,IAAM,qBAAA,GAAwB,qBAAqB,OAAO,CAAA,CAAA;AAC1D,IAAM,aAAgB,GAAA,IAAA;AAEtB,IAAM,OAAA,GACJ,OAAO,OAAY,KAAA,WAAA,IAAe,QAAQ,GACtC,GAAA,OAAA,CAAQ,GAAI,CAAA,cAAA,IAAkB,cAC9B,GAAA,cAAA;AAEN,IAAM,SAAA,GACJ,OAAO,OAAY,KAAA,WAAA,IAAe,QAAQ,GACtC,GAAA,OAAA,CAAQ,GAAI,CAAA,gBAAA,IAAoB,gBAChC,GAAA,gBAAA;AAEN,IAAM,MAAA,GACJ,OAAO,OAAY,KAAA,WAAA,IAAe,QAAQ,GACtC,GAAA,OAAA,CAAQ,GAAI,CAAA,YAAA,IAAgB,aAC5B,GAAA,aAAA;AAEN,IAAM,cAAA,GACJ,OAAO,OAAY,KAAA,WAAA,IAAe,QAAQ,GACtC,GAAA,OAAA,CAAQ,GAAI,CAAA,qBAAA,IAAyB,qBACrC,GAAA,qBAAA;;;ACzBC,SAAS,oBAAoB,KAAe,EAAA;AACjD,EAAA,OAAO,uEAAuE,KAAK,CAAA,sBAAA,CAAA;AACrF;;;ACcA,SAAS,cAAc,OAA+B,EAAA;AACpD,EAAM,MAAA;AAAA,IACJ,IAAO,GAAA,QAAA;AAAA,IACP,EAAK,GAAA,KAAA;AAAA,IACL,gBAAAA,eAAiB,GAAA,mBAAA;AAAA,IACjB;AAAA,GACE,GAAA,OAAA;AACJ,EAAA,OAAO,uFAAuF,IAAI,CAAA,8BAAA,EAAiC,EAAE,CAAkCA,+BAAAA,EAAAA,eAAc,4BAA4B,MAAM,CAAA,yBAAA,CAAA;AACzN;;;ACjBA,SAAS,SAAU,aAA+B,EAAA;AAChD,EAAA,OAAO,kEAAkE,aAAa,CAAA,WAAA,CAAA;AACxF;;;ACGA,SAAS,OAAQ,OAAwB,EAAA;AACvC,EAAA,MAAM,EAAE,MAAA,EAAQ,cAAAA,EAAAA,eAAAA,EAAgB,eAAkB,GAAA,OAAA;AAClD,EAAM,MAAA,cAAA,GAAiB,oBAAoB,aAAa,CAAA;AACxD,EAAO,OAAA,aAAA,CAAc,EAAE,MAAQ,EAAA,cAAA,EAAAA,iBAAgB,CAAA,GAAI,SAAS,cAAc,CAAA;AAC5E;;;ACFA,SAAS,QAAS,OAAyB,EAAA;AACzC,EAAA,MAAM,EAAE,MAAA,EAAAC,OAAQ,EAAA,IAAA,EAAS,GAAA,OAAA;AACzB,EAAO,OAAA,CAAA,+FAAA,EAAkGA,OAAM,CAAA,iCAAA,EAAoC,IAAI,CAAA,oCAAA,CAAA;AACzJ;;;ACJA,SAAS,QAAQ,OAAyB,EAAA;AACxC,EAAA,MAAM,EAAE,MAAQ,EAAA,cAAA,EAAAD,eAAgB,EAAA,aAAA,EAAe,MAAS,GAAA,OAAA;AACxD,EAAA,OAAO,OAAQ,CAAA;AAAA,IACb,QAAQ,MAAO,CAAA,EAAE,QAAQ,cAAAA,EAAAA,eAAAA,EAAgB,eAAe,CAAA;AAAA,IACxD;AAAA,GACD,CAAA;AACH;;;ACNA,SAAS,YAAY,OAA8B,EAAA;AACjD,EAAA,MAAM,IAAO,GAAA,6EAAA;AACb,EAAA,OAAO,QAAQ,EAAE,IAAA,EAAM,MAAwB,EAAA,YAAA,aAAA,GAAG,SAAS,CAAA;AAC7D;;;ACHA,SAAS,cAAeE,QAAuC,EAAA;AAC7D,EAAA,MAAM,EAAE,QAAU,EAAA,QAAA,EAAU,GAAK,EAAA,MAAA,EAAAC,SAAWD,GAAAA,QAAAA;AAC5C,EAAA,OAAO,4BAA4B,QAAQ,CAAA,qBAAA,EAAwB,QAAQ,CAA4B,yBAAA,EAAA,GAAG,0BAA0BC,OAAM,CAAA,yBAAA,CAAA;AAC5I;;;ACAA,SAAS,qBAAqB,OAAuC,EAAA;AACnE,EAAA,MAAM,EAAE,cAAA,EAAAH,eAAgB,EAAA,aAAA,EAAkB,GAAA,OAAA;AAC1C,EAAA,MAAM,UAAU,aAAc,CAAA;AAAA,IAC5B,MAAA,EAAA,iBAAA;AAAA,IACA,cAAgBA,EAAAA,eAAAA;AAAA,IAChB,EAAI,EAAA;AAAA,GACL,CAAA;AACD,EAAA,MAAMC,OAAS,GAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,aAAa,CAAC,CAAA;AAC9D,EAAA,MAAM,IAAO,GAAA,yGAAA;AACb,EAAA,OAAO,OAAQ,CAAA,EAAE,MAAAA,EAAAA,OAAAA,EAAQ,MAAM,CAAA;AACjC;;;ACbA,SAAS,oBAAqB,OAAsC,EAAA;AAClE,EAAA,MAAM,IAAO,GAAA,iFAAA;AACb,EAAA,OAAO,QAAQ,EAAE,IAAA,EAAM,MAAiC,EAAA,gBAAA,sBAAA,GAAG,SAAS,CAAA;AACtE;;;ACAA,SAAS,mBAAmB,OAAqC,EAAA;AAC/D,EAAA,MAAM,EAAE,cAAA,EAAAD,eAAgB,EAAA,aAAA,EAAkB,GAAA,OAAA;AAC1C,EAAA,MAAM,UAAU,aAAc,CAAA;AAAA,IAC5B,MAAA,EAAA,eAAA;AAAA,IACA,cAAgBA,EAAAA,eAAAA;AAAA,IAChB,EAAI,EAAA;AAAA,GACL,CAAA;AACD,EAAA,MAAMC,OAAS,GAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,aAAa,CAAC,CAAA;AAC9D,EAAA,MAAM,IAAO,GAAA,uEAAA;AACb,EAAA,OAAO,OAAQ,CAAA,EAAE,MAAAA,EAAAA,OAAAA,EAAQ,MAAM,CAAA;AACjC;;;ACtBO,IAAM,iBAAN,MAAqB;AAAA,EAC1B,YAA6B,KAAc,EAAA;AAAd,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAAA;AAAe;AAAA;AAAA;AAAA;AAAA,EAM5C,MAAM,aAAiC,GAAA;AACrC,IAAA,IAAA,CAAK,MAAM,SAAkC,CAAA,iBAAA,sBAAA;AAC7C,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,oBAAoB,CAAA;AACtD,IAAO,OAAA,GAAA;AAAA;AACT;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAgC,GAAA;AACpC,IAAA,IAAA,CAAK,MAAM,SAAiC,CAAA,gBAAA,qBAAA;AAC5C,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,mBAAmB,CAAA;AACrD,IAAO,OAAA,GAAA;AAAA;AACT;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,IAAwB,GAAA;AAC5B,IAAA,IAAA,CAAK,MAAM,SAAwB,CAAA,YAAA,YAAA;AACnC,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,WAAW,CAAA;AAC7C,IAAO,OAAA,GAAA;AAAA;AACT;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAA+B,GAAA;AACnC,IAAA,IAAA,CAAK,MAAM,SAAgC,CAAA,eAAA,oBAAA;AAC3C,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,kBAAkB,CAAA;AACpD,IAAO,OAAA,GAAA;AAAA;AAEX,CAAA;;;AC9CO,IAAK,SAAA,qBAAAG,UAAL,KAAA;AACL,EAAAA,UAAAA,CAAAA,UAAAA,CAAA,SAAQ,CAAR,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,KAAA;AAZU,EAAAA,OAAAA,UAAAA;AAAA,CAAA,EAAA,SAAA,IAAA,EAAA,CAAA;AAgBL,IAAM,YAAe,GAAA,CAAC,KAAuB,KAAA,SAAA,CAAU,KAAK,CAAA;AAC5D,IAAM,WAAA,GAAc,CAAC,KAAA,KAAiB,MAAO,CAAA,SAAA,CAAU,KAAK,CAAC,CAAA,CAAE,QAAS,CAAA,CAAA,EAAG,GAAG,CAAA;;;ACdrF,SAAS,cAAc,IAA0B,EAAA;AAC/C,EAAA,IAAI,CAAC,IAAA,EAAY,MAAA,IAAI,MAAM,eAAe,CAAA;AAE1C,EAAA,MAAM,UAAa,GAAA,oFAAA;AACnB,EAAM,MAAA,KAAA,GAAQ,UAAW,CAAA,IAAA,CAAK,IAAI,CAAA;AAClC,EAAA,IAAI,CAAC,KAAA,EAAa,MAAA,IAAI,MAAM,sBAAsB,CAAA;AAClD,EAAM,MAAA,CAAC,GAAG,OAAS,EAAA,OAAA,EAAS,OAAO,IAAM,EAAA,IAAA,EAAM,SAAU,CAAI,GAAA,KAAA;AAC7D,EAAA,OAAO,EAAE,OAAS,EAAA,OAAA,EAAS,KAAO,EAAA,QAAA,EAAU,KAAK,IAAK,CAAA,KAAA,CAAM,CAAC,CAAC,IAAI,WAAY,CAAA,IAAA,CAAK,KAAM,CAAA,CAAA,EAAE,CAAC,CAAU,CAAC,CAAI,CAAA,EAAA,IAAA,CAAK,MAAM,CAAE,EAAA,CAAC,CAAC,CAAA,CAAA,EAAI,KAAK,KAAM,CAAA,CAAA,EAAE,CAAC,CAAC,IAAI,IAAK,CAAA,KAAA,CAAM,CAAC,CAAC,IAAI,SAAU,EAAA;AAC9K;ACTA,IAAM,OAAsB,GAAA;AAAA,EAC1B,YAAc,EAAA,SAAA;AAAA,EACd,mBAAsB,EAAA,EAAA;AAAA,EACtB,cAAgB,EAAA,IAAA;AAAA,EAChB,kBAAkB,CAAC,SAAA,EAAW,MAAQ,EAAA,YAAA,EAAc,UAAU,UAAU,CAAA;AAAA,EACxE,gBAAA,EAAkB,CAAC,OAAA,KAAY,OAAQ,CAAA,CAAC,EAAE,WAAY,EAAA,GAAI,OAAQ,CAAA,KAAA,CAAM,CAAC,CAAA;AAAA,EACzE,sBAAA,EAAwB,CAAC,aAAA,KAAkB,aAAc,CAAA,CAAC,EAAE,WAAY,EAAA,GAAI,aAAc,CAAA,KAAA,CAAM,CAAC;AACnG,CAAA;AAOO,IAAM,YAAY,MAAM;AAC7B,EAAM,MAAA,MAAA,GAAS,IAAIC,uBAAA,CAAU,OAAO,CAAA;AACpC,EAAA,OAAO,CAAI,GAAA,KAAkB,MAAO,CAAA,KAAA,CAAM,GAAG,CAAA;AAC/C,CAAG,GAAA;;;AChBH,SAAS,sBAAsB,IAA6B,EAAA;AAC1D,EAAA,MAAM,EAAE,aAAA,EAAkB,GAAA,QAAA,CAAqC,IAAI,CAAA;AACnE,EAAO,OAAA,aAAA;AACT;;;ACHA,SAAS,qBAAqB,IAA4B,EAAA;AACxD,EAAA,MAAM,EAAE,YAAA,EAAiB,GAAA,QAAA,CAAoC,IAAI,CAAA;AACjE,EAAO,OAAA,YAAA;AACT;;;ACHA,SAAS,qBAAqB,IAA4B,EAAA;AACxD,EAAO,OAAA,QAAA,CAAoC,IAAI,CAAE,CAAA,YAAA;AACnD;;;ACLA,IAAM,SAAoC,GAAA;AAAA,EACxC,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,CAAA;AAAA,EAC7C,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,EAAA;AAAA,EAAI,GAAK,EAAA;AAChD,CAAA;AACO,SAAS,eAAe,OAAuB,EAAA;AACpD,EAAA,MAAM,MAAM,QAAS,CAAA,OAAA,CAAQ,MAAM,CAAG,EAAA,CAAC,GAAG,EAAE,CAAA;AAC5C,EAAA,MAAM,QAAQ,SAAU,CAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,EAAG,CAAC,CAAC,CAAA;AAC3C,EAAA,MAAM,IAAO,GAAA,OAAA,CAAQ,MAAS,GAAA,CAAA,GAC1B,MAAO,QAAS,CAAA,OAAA,CAAQ,KAAM,CAAA,CAAC,GAAG,EAAE,CAAA,GAAA,iBAChC,IAAA,IAAA,IAAO,WAAY,EAAA;AAC3B,EAAA,OAAO,IAAI,IAAK,CAAA,IAAA,EAAM,OAAO,GAAK,EAAA,EAAA,EAAI,IAAI,EAAE,CAAA;AAC9C;;;ACRA,SAAS,kBAAkB,IAAiC,EAAA;AAC1D,EAAM,MAAA,IAAA,GAAO,IAAK,CAAA,IAAA,CAAK,IAAI,CAAA;AAE3B,EAAM,MAAA,UAAA,GACJ,IAAK,CAAA,IAAA,CAAK,CAAQ,IAAA,KAAA,IAAA,CAAK,IAAK,EAAA,KAAM,UAAU,CAAA,IAC5C,YAAa,CAAA,IAAA,CAAK,IAAI,CAAA;AAExB,EAAA,MAAM,aAAgB,GAAA,0CAAA;AACtB,EAAA,MAAM,cAAiB,GAAA,CAAC,GAAG,IAAA,CAAK,QAAS,CAAA,aAAa,CAAC,CAAA,CAAE,GAAI,CAAA,CAAA,CAAA,KAAK,CAAE,CAAA,CAAC,CAAC,CAAA;AACtE,EAAM,MAAA,YAAA,GACJ,eAAe,MAAS,GAAA,CAAA,IAAK,eAAe,KAAM,CAAA,CAAA,CAAA,KAAK,MAAM,IAAI,CAAA;AAEnE,EAAM,MAAA,cAAA,GAAiB,IAAK,CAAA,KAAA,CAAM,iCAAiC,CAAA;AACnE,EAAA,MAAM,oBAAoB,cAAiB,GAAA,cAAA,CAAe,cAAe,CAAA,CAAC,CAAC,CAAI,GAAA,IAAA;AAC/E,EAAA,MAAM,eAAkB,GAAA,iBAAA,GAAoB,iBAAoB,mBAAA,IAAI,MAAS,GAAA,KAAA;AAE7E,EAAA,MAAM,MACJ,GAAA,CAAC,UAAe,KAAA,YAAA,IAAgB,mBAAmB,QAAW,GAAA,OAAA;AAEhE,EAAA,OAAO,EAAE,UAAY,EAAA,cAAA,EAAgB,YAAc,EAAA,iBAAA,EAAmB,iBAAiB,MAAO,EAAA;AAChG;;;ACpBA,SAAS,yBAAyB,OAAsC,EAAA;AACtE,EAAM,MAAA,KAAA,GAAQ,KAAM,CAAA,OAAA,CAAQ,OAAQ,CAAA,IAAI,IAAI,OAAQ,CAAA,IAAA,GAAO,CAAC,OAAA,CAAQ,IAAI,CAAA;AAExE,EAAI,IAAA,KAAA,CAAM,CAAC,CAAA,KAAM,mCAAoC,EAAA;AACnD,IAAM,MAAA,IAAI,MAAM,iBAAiB,CAAA;AAAA;AAGnC,EAAA,MAAM,mBAAsB,GAAA,CAAA;AAC5B,EAAA,MAAM,aAAgB,GAAA,eAAA;AAEtB,EAAA,OAAO,KACJ,CAAA,KAAA,CAAM,CAAG,EAAA,mBAAmB,CAC5B,CAAA,MAAA,CAAO,CAAQ,IAAA,KAAA,IAAA,CAAK,KAAM,CAAA,aAAa,CAAC,CAAA,CACxC,IAAI,CAAiB,aAAA,KAAA;AACpB,IAAA,MAAM,CAAC,IAAM,EAAA,OAAO,CAAI,GAAA,aAAA,CAAc,MAAM,IAAI,CAAA;AAChD,IAAO,OAAA,EAAE,MAAM,OAAQ,EAAA;AAAA,GACxB,CAAA;AACL;;;ACjBA,SAAS,6BAA6B,OAAiE,EAAA;AACrG,EAAO,OAAA,OAAA,CAAQ,SAAS,GAAI,CAAA,CAAA,OAAA,MAAY,EAAE,KAAO,EAAA,OAAA,CAAQ,KAAO,EAAA,OAAA,EAAU,CAAA,CAAA;AAC5E;;;ACCA,SAAS,2BAAA,CACP,SACA,cACa,EAAA;AACb,EAAI,IAAA,CAAC,cAAe,CAAA,SAAA,CAAU,IAAM,EAAA;AAClC,IAAA,MAAM,IAAI,KAAM,CAAA,cAAA,CAAe,mBAAmB,KAAO,EAAA,qBAAA,EAAuB,WAAW,yBAAyB,CAAA;AAAA;AAEtH,EAAM,MAAA,EAAE,SAAW,EAAA,IAAA,EAAS,GAAA,cAAA;AAC5B,EAAM,MAAA,QAAA,GAAW,yBAAyB,SAAS,CAAA;AACnD,EAAM,MAAA,EAAE,WAAa,EAAA,KAAA,EAAU,GAAA,OAAA;AAC/B,EAAA,MAAM,aAAgB,GAAA,4BAAA,CAA6B,EAAE,KAAA,EAAO,UAAU,CAAA;AAEtE,EAAI,IAAA,CAAC,IAAM,EAAA,QAAA,EAAU,EAAI,EAAA;AACvB,IAAA,MAAM,IAAI,KAAM,CAAA,cAAA,CAAe,mBAAmB,KAAO,EAAA,qBAAA,EAAuB,WAAW,eAAe,CAAA;AAAA;AAE5G,EAAM,MAAA,QAAA,GAAW,iBAAkB,CAAA,SAAA,CAAU,IAAI,CAAA;AACjD,EAAO,OAAA;AAAA,IACL,SAAA,EAAW,KAAK,QAAS,CAAA,EAAA;AAAA,IACzB,UAAU,IAAK,CAAA,QAAA;AAAA,IACf,MAAQ,EAAA;AAAA,MACN,SAAA,EAAW,IAAK,CAAA,GAAA,CAAI,MAAO,CAAA,SAAA;AAAA,MAC3B,cAAA,EAAgB,IAAK,CAAA,GAAA,CAAI,MAAO,CAAA;AAAA,KAClC;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF;;;AC3BA,SAAS,0BAAA,CACP,SACA,aACa,EAAA;AACb,EAAM,MAAA,EAAE,WAAa,EAAA,KAAA,EAAU,GAAA,OAAA;AAC/B,EAAM,MAAA,QAAA,GAAW,yBAAyB,aAAa,CAAA;AACvD,EAAA,MAAM,aAAgB,GAAA,4BAAA,CAA6B,EAAE,KAAA,EAAO,UAAU,CAAA;AAEtE,EAAI,IAAA,CAAC,cAAc,IAAM,EAAA;AACvB,IAAA,MAAM,IAAI,KAAM,CAAA,aAAA,CAAc,mBAAmB,KAAO,EAAA,qBAAA,EAAuB,WAAW,eAAe,CAAA;AAAA;AAE3G,EAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAO,OAAS,EAAA,SAAA,KAAc,aAAc,CAAA,aAAA,CAAc,IAAK,CAAA,GAAA,EAAK,CAAA;AAEtF,EAAM,MAAA,QAAA,GAAW,iBAAkB,CAAA,aAAA,CAAc,IAAI,CAAA;AACrD,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,SAAW,EAAA,KAAA;AAAA,MACX,cAAgB,EAAA;AAAA,KAClB;AAAA,IACA,aAAA;AAAA,IACA,SAAW,EAAA,aAAA;AAAA,IACX,OAAA;AAAA,IACA;AAAA,GACF;AACF;;;AC9BA,SAAS,0BAA0B,IAAc,EAAA;AAC/C,EAAA,MAAM,EAAE,aAAA,EAAkB,GAAA,QAAA,CAAyC,IAAI,CAAA;AACvE,EAAO,OAAA,aAAA;AACT;;;ACHA,SAAS,oBAAoB,IAAiC,EAAA;AAC5D,EAAA,IAAI,CAAC,IAAA,EAAY,MAAA,IAAI,MAAM,eAAe,CAAA;AAG1C,EAAA,MAAM,kBAAqB,GAAA,mGAAA;AAC3B,EAAM,MAAA,KAAA,GAAQ,kBAAmB,CAAA,IAAA,CAAK,IAAI,CAAA;AAC1C,EAAA,IAAI,CAAC,KAAA,EAAa,MAAA,IAAI,MAAM,8BAA8B,CAAA;AAC1D,EAAM,MAAA,CAAC,GAAG,GAAK,EAAA,SAAA,EAAW,KAAK,KAAO,EAAA,IAAA,EAAM,IAAM,EAAA,IAAI,CAAI,GAAA,KAAA;AAC1D,EAAA,OAAO,EAAE,GAAK,EAAA,SAAA,EAAW,SAAS,CAAG,EAAA,GAAG,IAAI,KAAK,CAAA,CAAA,EAAI,IAAM,EAAA,CAAA,EAAA,EAAK,KAAK,KAAM,CAAA,CAAC,CAAC,CAAI,CAAA,EAAA,WAAA,CAAY,KAAK,KAAM,CAAA,CAAA,EAAG,CAAC,CAAU,CAAC,CAAI,CAAA,EAAA,IAAA,CAAK,MAAM,CAAG,EAAA,CAAC,CAAC,CAAI,CAAA,EAAA,IAAA,CAAK,MAAM,CAAG,EAAA,CAAC,CAAC,CAAI,CAAA,EAAA,IAAA,CAAK,MAAM,CAAC,CAAC,IAAI,IAAK,EAAA;AAC3L;;;ACRA,SAAS,6BAAA,CACP,SACA,kBACiB,EAAA;AACjB,EAAI,IAAA,CAAC,kBAAmB,CAAA,kBAAA,EAAoB,OAAS,EAAA;AACnD,IAAA,MAAM,IAAI,KAAM,CAAA,kBAAA,CAAmB,mBAAmB,KAAO,EAAA,qBAAA,EAAuB,WAAW,eAAe,CAAA;AAAA;AAEhH,EAAM,MAAA,EAAE,WAAa,EAAA,KAAA,EAAU,GAAA,OAAA;AAC/B,EAAM,MAAA,EAAE,SAAW,EAAA,IAAA,EAAS,GAAA,kBAAA;AAC5B,EAAM,MAAA,KAAA,GAAQ,QAAQ,CAAC,KAAA,CAAM,QAAQ,IAAI,CAAA,GAAI,CAAC,IAAI,CAAI,GAAA,IAAA;AACtD,EAAO,OAAA;AAAA,IACL,KAAO,EAAA,KAAA,GACH,KAAM,CAAA,GAAA,CAAI,CAAS,IAAA,MAAA;AAAA,MACjB,OAAO,IAAK,CAAA,MAAA;AAAA,MACZ,UAAU,IAAK,CAAA,QAAA;AAAA,MACf,eAAe,IAAK,CAAA,aAAA;AAAA,MACpB,KAAA,EAAO,IAAK,CAAA,GAAA,CAAI,MAAO,CAAA,SAAA;AAAA,MACvB,GAAA,EAAK,IAAK,CAAA,GAAA,CAAI,MAAO,CAAA,cAAA;AAAA,MACrB,SAAA,EAAW,KAAK,QAAS,CAAA;AAAA,MACzB,CACF,GAAA,MAAA;AAAA,IACJ,IAAA,EAAM,SAAU,CAAA,IAAA,CAAK,KAAM,CAAA,CAAA,EAAG,EAAE,CAAA,CAAE,GAAI,CAAA,CAAA,IAAA,KAAQ,mBAAoB,CAAA,IAAI,CAAC,CAAA;AAAA,IACvE,SAAA;AAAA,IACA;AAAA,GACF;AACF;;;ACtBA,SAAS,YAAY,SAA2B,EAAA;AAC9C,EAAA,OAAO,kHAAkH,SAAS,CAAA,gBAAA,CAAA;AACpI;;;ACPA,SAAS,wCAAwC,OAAiC,EAAA;AAChF,EAAO,OAAA;AAAA,IACL,eAAiB,EAAA;AAAA,MACf,WAAW,OAAQ,CAAA,MAAA;AAAA,MACnB,6BAA6B,OAAQ,CAAA,IAAA;AAAA,MACrC,mBAAmB,OAAQ,CAAA,GAAA;AAAA,MAE3B,IAAA,EAAM,QAAQ,GACZ,GAAA;AAAA,QACA,QAAQ,OAAQ,CAAA,GAAA;AAAA,QAChB,qBAAqB,OAAQ,CAAA;AAAA,OAE7B,GAAA;AAAA;AACJ,GACF;AACF;ACEA,SAAS,uBAAuB,OAAyC,EAAA;AACvE,EAAM,MAAA,kBAAA,GAAqB,wCAAwC,OAAO,CAAA;AAC1E,EAAA,MAAMH,QAAU,GAAA;AAAA,IACd,gBAAkB,EAAA,KAAA;AAAA,IAClB,mBAAqB,EAAA,GAAA;AAAA,IACrB,yBAA2B,EAAA,KAAA;AAAA,IAC3B,iBAAmB,EAAA;AAAA,GACrB;AACA,EAAM,MAAA,OAAA,GAAU,IAAII,wBAAA,CAAWJ,QAAO,CAAA;AACtC,EAAO,OAAA,OAAA,CAAQ,MAAM,kBAAkB,CAAA;AACzC;;;ACdA,SAAS,kBAAkBA,QAAoC,EAAA;AAC7D,EAAA,MAAM,EAAE,GAAK,EAAA,MAAA,EAAQ,eAAe,cAAAF,EAAAA,eAAAA,EAAgB,kBAAqBE,GAAAA,QAAAA;AACzE,EAAM,MAAA,SAAA,GAAY,uBAAuB,EAAE,GAAA,EAAK,QAAQ,GAAK,EAAA,IAAA,EAAM,kBAAkB,CAAA;AACrF,EAAM,MAAA,IAAA,GAAO,YAAY,SAAS,CAAA;AAClC,EAAA,OAAO,OAAQ,CAAA;AAAA,IACb,IAAA;AAAA,IAAM,aAAA;AAAA,IAAe,cAAAF,EAAAA,eAAAA;AAAA,IAAgB,MAAA,EAAA,kBAAA;AAAA,GACtC,CAAA;AACH;;;ACPA,SAAS,cAAcE,QAAgC,EAAA;AACrD,EAAA,MAAM,EAAE,GAAK,EAAA,MAAA,EAAQ,aAAe,EAAA,cAAA,EAAAF,iBAAmBE,GAAAA,QAAAA;AACvD,EAAA,MAAM,SAAY,GAAA,sBAAA,CAAuB,EAAE,GAAA,EAAK,QAAQ,CAAA;AACxD,EAAM,MAAA,IAAA,GAAO,YAAY,SAAS,CAAA;AAClC,EAAA,OAAO,OAAQ,CAAA;AAAA,IACb,IAAA;AAAA,IAAM,aAAA;AAAA,IAAe,cAAAF,EAAAA,eAAAA;AAAA,IAAgB,MAAA,EAAA,kBAAA;AAAA,GACtC,CAAA;AACH;;;ACdA,SAAS,WAAW,SAA2B,EAAA;AAC7C,EAAA,OAAO,4HAA4H,SAAS,CAAA,2BAAA,CAAA;AAC9I;;;ACKA,SAAS,aAAaE,QAA+B,EAAA;AACnD,EAAA,MAAM,EAAE,aAAA,EAAe,cAAAF,EAAAA,eAAAA,EAAgB,KAAQE,GAAAA,QAAAA;AAC/C,EAAA,MAAM,SAAY,GAAA,sBAAA,CAAuB,EAAE,GAAA,EAAK,CAAA;AAChD,EAAM,MAAA,IAAA,GAAO,WAAW,SAAS,CAAA;AACjC,EAAA,OAAO,OAAQ,CAAA;AAAA,IACb,IAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAAF,EAAAA,eAAAA;AAAA,IACA,MAAA,EAAA,iBAAA;AAAA,GACD,CAAA;AACH;;;ACtBA,SAAS,iBAAiB,MAAkC,EAAA;AAC1D,EAAM,MAAA,SAAA,GAAY,uBAAuB,MAAM,CAAA,GAAA,CAAA;AAC/C,EAAM,MAAA,IAAA,GAAO,YAAY,SAAS,CAAA;AAClC,EAAO,OAAA,IAAA;AACT;;;ACQA,SAAS,YAAYE,QAA8B,EAAA;AACjD,EAAA,MAAM,EAAE,aAAA,EAAe,cAAAF,EAAAA,eAAAA,EAAmBE,GAAAA,QAAAA;AAC1C,EAAA,MAAM,OAAO,gBAAsC,CAAA,KAAA,YAAA;AACnD,EAAA,OAAO,QAAQ,EAAE,aAAA,EAAe,gBAAAF,eAAgB,EAAA,IAAA,EAAM,+CAAgC,CAAA;AACxF;;;ACJA,SAAS,cAAcE,QAAgC,EAAA;AACrD,EAAA,MAAM,EAAE,aAAA,EAAe,cAAAF,EAAAA,eAAAA,EAAmBE,GAAAA,QAAAA;AAC1C,EAAA,MAAM,OAAO,gBAAwC,CAAA,GAAA,cAAA;AACrD,EAAA,OAAO,QAAQ,EAAE,aAAA,EAAe,gBAAAF,eAAgB,EAAA,IAAA,EAAM,+CAAgC,CAAA;AACxF;;;ACVA,SAAS,WAAW,SAA2B,EAAA;AAC7C,EAAA,OAAO,4HAA4H,SAAS,CAAA,2BAAA,CAAA;AAC9I;;;ACKA,SAAS,aAAaE,QAA+B,EAAA;AACnD,EAAA,MAAM,EAAE,MAAQ,EAAA,GAAA,EAAK,aAAe,EAAA,cAAA,EAAAF,iBAAmBE,GAAAA,QAAAA;AACvD,EAAA,MAAM,YAAY,sBAAuB,CAAA,EAAE,QAAQ,IAAM,EAAA,IAAA,EAAM,KAAK,CAAA;AACpE,EAAM,MAAA,IAAA,GAAO,WAAW,SAAS,CAAA;AACjC,EAAA,OAAO,QAAQ,EAAE,IAAA,EAAM,eAAe,cAAAF,EAAAA,eAAAA,EAAgB,6CAA+B,CAAA;AACvF;;;ACNA,SAAS,cAAcE,QAAgC,EAAA;AACrD,EAAA,MAAM,EAAE,aAAA,EAAe,cAAAF,EAAAA,eAAAA,EAAmBE,GAAAA,QAAAA;AAC1C,EAAA,MAAM,OAAO,gBAAwC,CAAA,GAAA,cAAA;AACrD,EAAA,OAAO,QAAQ,EAAE,aAAA,EAAe,gBAAAF,eAAgB,EAAA,IAAA,EAAM,+CAAgC,CAAA;AACxF;;;ACbO,IAAM,QAAN,MAAY;AAAA,EAIjB,YAA6B,KAAc,EAAA;AAAd,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAAA;AAAgB,EAH5B,IAAO,GAAA;AAAA,IACtB,KAAO,EAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,MAAM,GAA2C,EAAA;AACrD,IAAA,IAAI,CAAC,GAAK,EAAA;AACR,MAAA,IAAI,OAAO,OAAA,KAAY,WAAe,IAAA,OAAA,CAAQ,GAAK,EAAA;AACjD,QAAA,GAAA,GAAM,QAAQ,GAAI,CAAA,kBAAA;AAAA;AACpB;AAEF,IAAA,IAAI,CAAC,GAAA,EAAW,MAAA,IAAI,MAAM,qCAAqC,CAAA;AAE/D,IAAA,IAAA,CAAK,MAAM,SAA+B,CAAA,iBAAA,mBAAA;AAC1C,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAM,IAAK,CAAA,CAAC,SAAS,YAAa,CAAA;AAAA,MACvD,GAAA;AAAA,MAAK,GAAG;AAAA,KACT,CAAC,CAAA;AACF,IAAA,OAAO,qBAAqB,GAAG,CAAA;AAAA;AACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,OAAO,OAA2D,EAAA;AACtE,IAAI,IAAA,CAAC,QAAQ,GAAK,EAAA;AAChB,MAAA,IAAI,OAAO,OAAA,KAAY,WAAe,IAAA,OAAA,CAAQ,GAAK,EAAA;AACjD,QAAQ,OAAA,CAAA,GAAA,GAAM,QAAQ,GAAI,CAAA,kBAAA;AAAA;AAC5B;AAEF,IAAA,IAAI,CAAC,OAAQ,CAAA,GAAA,EAAW,MAAA,IAAI,MAAM,gDAAgD,CAAA;AAClF,IAAM,MAAA,EAAE,MAAQ,EAAA,GAAA,EAAQ,GAAA,OAAA;AACxB,IAAA,IAAA,CAAK,MAAM,SAAgC,CAAA,kBAAA,oBAAA;AAC3C,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAM,IAAK,CAAA,CAAC,SAAS,aAAc,CAAA;AAAA,MACxD,MAAA;AAAA,MAAQ,GAAA;AAAA,MAAK,GAAG;AAAA,KACjB,CAAC,CAAA;AACF,IAAA,IAAA,CAAK,KAAK,KAAQ,GAAA,MAAA;AAClB,IAAMO,MAAAA,YAAAA,GAAc,sBAAsB,GAAG,CAAA;AAC7C,IAAA,OAAO,4BAA4B,EAAE,WAAA,EAAa,KAAK,IAAK,CAAA,KAAA,IAASA,YAAW,CAAA;AAAA;AAClF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,WAAW,OAAmE,EAAA;AAClF,IAAI,IAAA,CAAC,QAAQ,GAAK,EAAA;AAChB,MAAA,IAAI,OAAO,OAAA,KAAY,WAAe,IAAA,OAAA,CAAQ,GAAK,EAAA;AACjD,QAAQ,OAAA,CAAA,GAAA,GAAM,QAAQ,GAAI,CAAA,kBAAA;AAAA;AAC5B;AAEF,IAAA,IAAI,CAAC,OAAQ,CAAA,GAAA,EAAW,MAAA,IAAI,MAAM,gDAAgD,CAAA;AAClF,IAAA,MAAM,EAAE,MAAA,EAAQ,GAAK,EAAA,gBAAA,EAAqB,GAAA,OAAA;AAC1C,IAAA,IAAA,CAAK,MAAM,SAAgC,CAAA,kBAAA,oBAAA;AAC3C,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAM,IAAK,CAAA,CAAC,SAAS,iBAAkB,CAAA;AAAA,MAC5D,MAAA;AAAA,MAAQ,GAAA;AAAA,MAAK,gBAAA;AAAA,MAAkB,GAAG;AAAA,KACnC,CAAC,CAAA;AACF,IAAM,MAAA,eAAA,GAAkB,0BAA0B,GAAG,CAAA;AACrD,IAAA,OAAO,6BAA8B,CAAA,EAAE,WAAa,EAAA,MAAA,IAAU,eAAe,CAAA;AAAA;AAC/E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,MAAuC,GAAA;AAC3C,IAAA,IAAA,CAAK,MAAM,SAAgC,CAAA,kBAAA,oBAAA;AAC3C,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,aAAa,CAAA;AAC/C,IAAMA,MAAAA,YAAAA,GAAc,sBAAsB,GAAG,CAAA;AAC7C,IAAA,OAAO,4BAA4B,EAAE,WAAA,EAAa,KAAK,IAAK,CAAA,KAAA,IAASA,YAAW,CAAA;AAAA;AAClF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,MAAuC,GAAA;AAC3C,IAAA,IAAA,CAAK,MAAM,SAAgC,CAAA,kBAAA,oBAAA;AAC3C,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,aAAa,CAAA;AAC/C,IAAMA,MAAAA,YAAAA,GAAc,sBAAsB,GAAG,CAAA;AAC7C,IAAA,OAAO,4BAA4B,EAAE,WAAA,EAAa,KAAK,IAAK,CAAA,KAAA,IAASA,YAAW,CAAA;AAAA;AAClF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,IAAmC,GAAA;AACvC,IAAA,IAAA,CAAK,MAAM,SAAgC,CAAA,kBAAA,oBAAA;AAC3C,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,WAAW,CAAA;AAC7C,IAAMA,MAAAA,YAAAA,GAAc,sBAAsB,GAAG,CAAA;AAC7C,IAAIA,IAAAA,YAAAA,CAAY,mBAAmB,KAAO,EAAA;AACxC,MAAA,MAAM,IAAI,KAAMA,CAAAA,YAAAA,CAAY,kBAAmB,CAAA,KAAA,EAAO,uBAAuB,OAAO,CAAA;AAAA;AAEtF,IAAO,OAAA;AAAA,MACL,WAAWA,YAAY,CAAA;AAAA,KACzB;AAAA;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,MAAM,OAAyD,EAAA;AACnE,IAAI,IAAA,CAAC,QAAQ,GAAK,EAAA;AAChB,MAAA,IAAI,OAAO,OAAA,KAAY,WAAe,IAAA,OAAA,CAAQ,GAAK,EAAA;AACjD,QAAQ,OAAA,CAAA,GAAA,GAAM,QAAQ,GAAI,CAAA,kBAAA;AAAA;AAC5B;AAEF,IAAA,IAAI,CAAC,OAAQ,CAAA,GAAA,EAAW,MAAA,IAAI,MAAM,+CAA+C,CAAA;AACjF,IAAM,MAAA,EAAE,MAAQ,EAAA,GAAA,EAAQ,GAAA,OAAA;AACxB,IAAA,IAAA,CAAK,MAAM,SAA+B,CAAA,iBAAA,mBAAA;AAC1C,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAM,IAAK,CAAA,CAAC,SAAS,YAAa,CAAA;AAAA,MACvD,MAAA;AAAA,MAAQ,GAAA;AAAA,MAAK,GAAG;AAAA,KACjB,CAAC,CAAA;AACF,IAAMC,MAAAA,WAAAA,GAAa,qBAAqB,GAAG,CAAA;AAC3C,IAAA,OAAO,2BAA2B,EAAE,WAAA,EAAa,KAAK,IAAK,CAAA,KAAA,IAASA,WAAU,CAAA;AAAA;AAElF,CAAA;;;ACtIA,SAAS,cAAcN,QAAuC,EAAA;AAC5D,EAAA,MAAM,EAAE,GAAK,EAAA,IAAA,EAAM,aAAe,EAAA,cAAA,EAAAF,iBAAmBE,GAAAA,QAAAA;AACrD,EAAA,MAAM,IAAO,GAAA,CAAA,iJAAA,EAAoJ,GAAG,CAAA,aAAA,EAAgB,IAAI,CAAA,wBAAA,CAAA;AACxL,EAAA,OAAO,OAAQ,CAAA;AAAA,IACb,IAAA;AAAA,IAAM,MAAA,EAAA,uBAAA;AAAA,IAAsC,aAAA;AAAA,IAAe,cAAAF,EAAAA;AAAA,GAC5D,CAAA;AACH;;;ACfA,SAAS,uCAAuC,OAA4C,EAAA;AAC1F,EAAO,OAAA;AAAA,IACL,gBAAgB,OAAQ,CAAA,GAAA;AAAA,IACxB,YAAY,OAAQ,CAAA,IAAA;AAAA,IACpB,gBAAgB,OAAQ,CAAA,cAAA;AAAA,IACxB,gBAAgB,OAAQ,CAAA,cAAA;AAAA,IACxB,cAAc,OAAQ,CAAA,YAAA;AAAA,IACtB,SAAS,OAAQ,CAAA,OAAA,EAAS,IAAQ,IAAA,OAAA,CAAQ,SAAS,MAC/C,GAAA;AAAA,MACA,WAAA,EAAa,QAAQ,OAAQ,CAAA,IAAA;AAAA,MAC7B,aAAA,EAAe,QAAQ,OAAQ,CAAA;AAAA,KAE/B,GAAA;AAAA,GACN;AACF;ACbA,SAAS,yBAAyB,OAAiC,EAAA;AACjE,EAAM,MAAA,iBAAA,GAAoB,uCAAuC,OAAO,CAAA;AACxE,EAAM,MAAA,OAAA,GAAU,IAAIM,wBAAW,EAAA;AAC/B,EAAA,OAAO,OAAQ,CAAA,KAAA,CAAM,EAAE,iBAAA,EAAmB,CAAA;AAC5C;;;ACSA,SAAS,eAAeJ,QAAwC,EAAA;AAC9D,EAAA,MAAM,EAAE,aAAe,EAAA,cAAA,EAAAF,eAAgB,EAAA,GAAG,gBAAmBE,GAAAA,QAAAA;AAC7D,EAAM,MAAA,iBAAA,GAAoB,yBAAyB,cAAc,CAAA;AACjE,EAAM,MAAA,IAAA,GAAO,2GAA2G,iBAAiB,CAAA,sBAAA,CAAA;AACzI,EAAA,OAAO,OAAQ,CAAA;AAAA,IACb,IAAA;AAAA,IAAM,MAAA,EAAA,2BAAA;AAAA,IAAiC,aAAA;AAAA,IAAe,cAAAF,EAAAA;AAAA,GACvD,CAAA;AACH;;;ACrBA,SAAS,4BAA4B,OAAiB,EAAA;AACpD,EAAO,OAAA,QAAA,CAA2C,OAAO,CAAE,CAAA,mBAAA;AAC7D;;;ACFA,SAAS,2BAA2B,OAAiB,EAAA;AACnD,EAAO,OAAA,QAAA,CAA0C,OAAO,CAAE,CAAA,kBAAA;AAC5D;;;ACIO,IAAM,aAAN,MAAiB;AAAA,EACtB,YAA6B,KAAc,EAAA;AAAd,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAAA;AAAe;AAAA;AAAA;AAAA;AAAA;AAAA,EAO5C,MAAM,OAAO,OAAqD,EAAA;AAChE,IAAI,IAAA,CAAC,QAAQ,GAAK,EAAA;AAChB,MAAA,IAAI,OAAO,OAAA,KAAY,WAAe,IAAA,OAAA,CAAQ,GAAK,EAAA;AACjD,QAAQ,OAAA,CAAA,GAAA,GAAM,QAAQ,GAAI,CAAA,kBAAA;AAAA;AAC5B;AAEF,IAAA,IAAI,CAAC,OAAQ,CAAA,GAAA,EAAW,MAAA,IAAI,MAAM,gDAAgD,CAAA;AAElF,IAAM,MAAA,EAAE,GAAK,EAAA,IAAA,EAAS,GAAA,OAAA;AACtB,IAAA,IAAA,CAAK,MAAM,SAAsC,CAAA,uBAAA,0BAAA;AACjD,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,CAAC,cAAA,KAAmB,aAAc,CAAA,EAAE,GAAK,EAAA,IAAA,EAAM,GAAG,cAAA,EAAgB,CAAC,CAAA;AACrG,IAAA,OAAO,2BAA2B,GAAG,CAAA;AAAA;AACvC;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,QAAQ,OAAuD,EAAA;AACnE,IAAI,IAAA,CAAC,QAAQ,GAAK,EAAA;AAChB,MAAA,IAAI,OAAO,OAAA,KAAY,WAAe,IAAA,OAAA,CAAQ,GAAK,EAAA;AACjD,QAAQ,OAAA,CAAA,GAAA,GAAM,QAAQ,GAAI,CAAA,kBAAA;AAAA;AAC5B;AAEF,IAAA,IAAI,CAAC,OAAQ,CAAA,GAAA,EAAW,MAAA,IAAI,MAAM,8CAA8C,CAAA;AAEhF,IAAM,MAAA,EAAE,KAAQ,GAAA,OAAA;AAChB,IAAA,IAAA,CAAK,MAAM,SAAsC,CAAA,uBAAA,0BAAA;AACjD,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,CAAC,cAAA,KAAmB,cAAe,CAAA,EAAE,KAAK,GAAG,OAAA,EAAS,GAAG,cAAA,EAAgB,CAAC,CAAA;AAC5G,IAAA,OAAO,4BAA4B,GAAG,CAAA;AAAA;AAE1C,CAAA;;;ACjDa,IAAA,UAAA,GAAN,cAAyB,KAAM,CAAA;AAAA,EACpC,YAAY,OAAiB,EAAA;AAC3B,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAO,GAAA,YAAA;AAAA;AAEhB;;;ACLa,IAAA,eAAA,GAAN,cAA8B,KAAM,CAAA;AAAA,EACzC,YAAY,OAAiB,EAAA;AAC3B,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAO,GAAA,iBAAA;AAAA;AAEhB;;;ACFA,SAAS,uBAAuB,OAAiB,EAAA;AAC7C,EAAO,OAAA,QAAA,CAAsC,OAAO,CAAE,CAAA,iBAAA;AAC1D;;;ACDA,SAAS,aAAc,OAAyB,EAAA;AAC5C,EAAA,OAAO,2JAA2J,OAAO,CAAA,4CAAA,CAAA;AAC3K;;;ACJK,SAAS,gBAAgB,IAAsB,EAAA;AAClD,EAAM,MAAA,SAAA,GAAY,IAAK,CAAA,KAAA,CAAM,GAAG,CAAA;AAChC,EAAA,MAAM,WAAc,GAAA,QAAA,CAAS,SAAU,CAAA,CAAC,CAAC,CAAA;AACzC,EAAM,MAAA,WAAA,GAAe,WAAe,IAAA,CAAA,IAAK,WAAe,IAAA,EAAA;AACxD,EAAA,IAAI,CAAC,WAAa,EAAA;AACf,IAAM,MAAA,IAAI,KAAM,CAAA,qBAAA,GAAwB,WAAW,CAAA;AAAA;AAEtD,EAAA,MAAM,KAAqB,GAAA,WAAA;AAC3B,EAAA,MAAM,OAAO,SAAU,CAAA,CAAC,CAAE,CAAA,KAAA,CAAM,GAAE,CAAC,CAAA;AAEnC,EAAA,OAAO,SAAU,CAAA,CAAC,CAAE,GAAA,YAAA,CAAa,KAAK,CAAI,GAAA,IAAA;AAC9C;;;ACTO,SAAS,sBAAsBE,QAA4C,EAAA;AAC9E,EAAA,MAAM,EAAE,IAAA,EAAM,EAAI,EAAA,IAAA,EAASA,GAAAA,QAAAA;AAC3B,EAAM,MAAA,aAAA,GAAgB,gBAAgB,IAAI,CAAA;AAC1C,EAAA,MAAM,UAAU,CAAM,MAAA,EAAA,IAAI,CAAK,EAAA,EAAA,EAAE,IAAI,aAAa,CAAA,CAAA;AAClD,EAAO,OAAA,OAAA;AACX;;;ACMA,SAAS,gBAAgBA,QAAkC,EAAA;AACvD,EAAA,MAAM,EAAE,aAAA,EAAe,cAAAF,EAAAA,eAAAA,EAAmBE,GAAAA,QAAAA;AAC1C,EAAA,MAAM,IAAO,GAAA,YAAA,CAAa,qBAAsBA,CAAAA,QAAO,CAAC,CAAA;AACxD,EAAA,OAAO,OAAQ,CAAA;AAAA,IACX,IAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAAF,EAAAA,eAAAA;AAAA,IACA,MAAA,EAAA,mBAAA;AAAA,GACH,CAAA;AACL;;;ACjBO,IAAM,WAAN,MAAe;AAAA,EACpB,YAA6B,KAAc,EAAA;AAAd,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAAA;AAAe;AAAA;AAAA;AAAA;AAAA,EAM5C,MAAM,WAAW,OAAgE,EAAA;AAC/E,IAAA,IAAA,CAAK,MAAM,SAAiC,CAAA,mBAAA,qBAAA;AAC5C,IAAA,MAAM,EAAC,IAAA,EAAM,EAAI,EAAA,IAAA,EAAQ,GAAA,OAAA;AACzB,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,CAAC,cAAA,KAAmB,eAAgB,CAAA,EAAE,MAAM,EAAI,EAAA,IAAA,EAAM,GAAG,cAAA,EAAgB,CAAC,CAAA;AAC5G,IAAA,OAAO,uBAAuB,GAAG,CAAA;AAAA;AAErC,CAAA;;;ACNO,IAAM,QAAN,MAAY;AAAA,EAWjB,WAAA,CAA6BE,QAAwB,GAAA,EAAI,EAAA;AAA5B,IAAAA,IAAAA,CAAAA,OAAAA,GAAAA,QAAAA;AAC3B,IAAA,MAAM,UAAa,GAAA,OAAO,OAAY,KAAA,WAAA,IAAe,OAAQ,CAAA,GAAA;AAC7D,IAAI,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,QAAY,IAAA,UAAA;AAC5B,MAAK,IAAA,CAAA,OAAA,CAAQ,WAAW,UAAW,CAAA,cAAA;AACrC,IAAI,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,QAAY,IAAA,UAAA;AAC5B,MAAK,IAAA,CAAA,OAAA,CAAQ,WAAW,UAAW,CAAA,cAAA;AACrC,IAAI,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,YAAgB,IAAA,UAAA;AAChC,MAAK,IAAA,CAAA,OAAA,CAAQ,eAAe,UAAW,CAAA,kBAAA;AACzC,IAAI,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,KAAS,IAAA,UAAA;AACzB,MAAK,IAAA,CAAA,OAAA,CAAQ,QAAQ,UAAW,CAAA,mBAAA;AAElC,IAAI,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,QAAY,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,QAAY,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,YAAc,EAAA;AAClF,MAAI,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,KAAO,EAAA;AACvB,QAAA,MAAM,IAAI,KAAM,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA,aAIV,CAAA,CAAA;AAAA;AACR;AAGF,IAAK,IAAA,CAAA,OAAA,GAAU,IAAI,OAAQ,CAAA;AAAA,MACzB,YAAc,EAAA,SAAA;AAAA,MACd,cAAgB,EAAA,2BAAA;AAAA,MAChB,kBAAoB,EAAA,SAAA;AAAA,MACpB,eAAA,EAAiB,KAAK,OAAQ,CAAA,KAAA,GAAQ,UAAU,IAAK,CAAA,OAAA,CAAQ,KAAK,CAAK,CAAA,GAAA;AAAA,KACxE,CAAA;AACD,IAAA,IAAA,CAAK,cAAiB,GAAA;AAAA,MACpB,cAAA;AAAA,MACA,aAAA,EAAe,IAAK,CAAA,OAAA,CAAQ,KAAS,IAAA;AAAA,KACvC;AAAA;AACF,EAzCiB,OAAA;AAAA,EACA,cAAA;AAAA,EACT,UAAoC,EAAC;AAAA,EACrC,OAAkB,GAAA,EAAA;AAAA,EAEjB,cAAA,GAAiB,IAAI,cAAA,CAAe,IAAI,CAAA;AAAA,EACxC,KAAA,GAAQ,IAAI,KAAA,CAAM,IAAI,CAAA;AAAA,EACtB,UAAA,GAAa,IAAI,UAAA,CAAW,IAAI,CAAA;AAAA,EAChC,QAAA,GAAW,IAAI,QAAA,CAAS,IAAI,CAAA;AAAA,EAmCrC,UAAU,MAAiB,EAAA;AACzB,IAAK,IAAA,CAAA,OAAA,CAAQ,GAAI,CAAA,YAAA,EAAc,MAAM,CAAA;AAAA;AACvC,EACA,iBAAiB,KAAe,EAAA;AAC9B,IAAA,IAAA,CAAK,eAAe,aAAgB,GAAA,KAAA;AACpC,IAAA,IAAA,CAAK,OAAQ,CAAA,GAAA,CAAI,eAAiB,EAAA,CAAA,OAAA,EAAU,KAAK,CAAE,CAAA,CAAA;AAAA;AACrD,EACA,gBAAmB,GAAA;AACjB,IAAA,OAAO,KAAK,cAAe,CAAA,aAAA;AAAA;AAC7B,EACA,cAAiB,GAAA;AACf,IAAA,OAAO,IAAK,CAAA,OAAA;AAAA;AACd,EACA,eAAkB,GAAA;AAChB,IAAA,OAAO,IAAK,CAAA,OAAA;AAAA;AACd,EAEA,MAAM,YAAA,CACJA,QAAoC,GAAA,EACnB,EAAA;AACjB,IAAA,IAAA,CAAK,OAAUA,GAAAA,QAAAA;AACf,IAAI,IAAA;AACF,MAAA,MAAM,QAAW,GAAA,MAAM,KAAM,CAAA,OAAA,EAASA,QAAO,CAAA;AAC7C,MAAM,MAAA,GAAA,GAAM,MAAM,QAAA,CAAS,IAAK,EAAA;AAEhC,MAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AAChB,QAAA,MAAM,KAAQ,GAAA,YAAA,CAAa,GAAK,EAAA,eAAA,EAAiB,kBAAkB,KAAK,CAAA;AACxE,QAAM,MAAA,IAAI,WAAW,KAAK,CAAA;AAAA;AAE5B,MAAA,MAAM,IAAO,GAAA,YAAA,CAAa,GAAK,EAAA,iBAAA,EAAmB,oBAAoB,KAAK,CAAA;AAC3E,MAAA,MAAM,KAAQ,GAAA,YAAA,CAAa,IAAM,EAAA,aAAA,EAAe,gBAAgB,KAAK,CAAA;AACrE,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,MAAM,OAAU,GAAA,YAAA,CAAa,KAAO,EAAA,eAAA,EAAiB,kBAAkB,KAAK,CAAA;AAC5E,QAAM,MAAA,IAAI,gBAAgB,OAAO,CAAA;AAAA;AAEnC,MAAA,MAAM,MAAS,GAAA,IAAA,CAAK,OAAQ,CAAA,GAAA,CAAI,YAAY,CAAA;AAG5C,MAAA,IAAI,qDAAuC,MAAmC,KAAA,eAAA,qBAAA;AAC5E,QAAA,MAAM,KAAQ,GAAA,YAAA,CAAa,GAAK,EAAA,gFAAA,EAAkF,+BAA+B,KAAK,CAAA;AACtJ,QAAA,IAAA,CAAK,iBAAiB,KAAK,CAAA;AAAA,iBAClB,MAAoC,KAAA,gBAAA,sBAAA;AAC7C,QAAA,IAAA,CAAK,eAAe,aAAgB,GAAA,EAAA;AACpC,QAAK,IAAA,CAAA,OAAA,CAAQ,OAAO,eAAe,CAAA;AAAA;AAErC,MAAA,IAAA,CAAK,OAAU,GAAA,IAAA;AACf,MAAO,OAAA,IAAA;AAAA,aACA,KAAO,EAAA;AACd,MAAI,IAAA,KAAA,YAAiB,UAAc,IAAA,KAAA,YAAiB,eAAiB,EAAA;AACnE,QAAM,MAAA,KAAA;AAAA;AAER,MAAA,MAAM,KAAiB,YAAA,KAAA,GACnB,KACA,GAAA,IAAI,MAAM,eAAe,CAAA;AAAA;AAC/B;AACF,EAEA,MAAM,IAAA,CAAK,cAA4DA,EAAAA,QAAAA,GAAuB,EAAqB,EAAA;AACjH,IAAA,IAAI,CAAC,IAAK,CAAA,cAAA,CAAe,eAAqB,MAAA,IAAI,MAAM,4DAA4D,CAAA;AACpH,IAAA,MAAM,cAAiB,GAAA;AAAA,MACrB,MAAQ,EAAA,MAAA;AAAA,MACR,SAAS,IAAK,CAAA,OAAA;AAAA,MACd,IAAA,EAAM,cAAe,CAAA,IAAA,CAAK,cAAc,CAAA;AAAA,MACxC,GAAGA;AAAA,KACL;AAEA,IAAO,OAAA,IAAA,CAAK,aAAa,cAAc,CAAA;AAAA;AACzC,EAEA,MAAM,IAAA,CAAK,cAA0DA,EAAAA,QAAAA,GAAuB,EAAqB,EAAA;AAC/G,IAAI,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,QAAY,IAAA,CAAC,KAAK,OAAQ,CAAA,QAAA,IAAY,CAAC,IAAA,CAAK,OAAQ,CAAA,YAAA;AACpE,MAAA,MAAM,IAAI,KAAM,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA,WAIV,CAAA,CAAA;AAER,IAAA,MAAM,cAAiB,GAAA;AAAA,MACrB,MAAQ,EAAA,MAAA;AAAA,MACR,SAAS,IAAK,CAAA,OAAA;AAAA,MACd,MAAM,cAAe,CAAA;AAAA,QACnB,cAAA;AAAA,QACA,aAAe,EAAA;AAAA,UACb,QAAA,EAAU,KAAK,OAAQ,CAAA,QAAA;AAAA,UACvB,QAAA,EAAU,KAAK,OAAQ,CAAA,QAAA;AAAA,UACvB,GAAA,EAAK,KAAK,OAAQ,CAAA,YAAA;AAAA,UAClB;AAAA;AACF,OACD,CAAA;AAAA,MACD,GAAGA;AAAA,KACL;AAEA,IAAO,OAAA,IAAA,CAAK,aAAa,cAAc,CAAA;AAAA;AAE3C","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\": \"0.1.17\",\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-list\": \"node --env-file=.env --import=tsx examples/queue-access-list.ts\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.39.2\",\n \"@types/jest\": \"^30.0.0\",\n \"@types/node\": \"^25.2.0\",\n \"eslint\": \"^9.39.2\",\n \"globals\": \"^17.3.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.54.0\"\n },\n \"dependencies\": {\n \"fast-xml-parser\": \"^5.3.4\"\n }\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): 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 : 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\nfunction classifyParagraph(text: string[]): BookingClassify {\n const full = text.join('\\n')\n\n const isTicketed =\n text.some(line => line.trim() === 'INVOICED') ||\n /\\bTKTED\\b/i.test(full)\n\n const statusPattern = /\\b(HK|HX|KK|GK|UC|UN|WK|WL|TK|SC|PN)\\d+/g\n const flightStatuses = [...full.matchAll(statusPattern)].map(m => m[1])\n const allCancelled =\n flightStatuses.length > 0 && flightStatuses.every(s => s === 'HX')\n\n const timeLimitMatch = full.match(/\\bT-(\\d{2}[A-Z]{3}(?:\\d{2})?)\\b/)\n const ticketingDeadline = timeLimitMatch ? parseSabreDate(timeLimitMatch[1]) : null\n const deadlineExpired = ticketingDeadline ? ticketingDeadline < new Date() : false\n\n const action: 'place' | 'remove' =\n !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 lines = Array.isArray(payload.text) ? payload.text : [payload.text]\n\n if (lines[0] === 'END OF DISPLAY FOR REQUESTED DATA'){\n throw new Error('End of display.')\n }\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 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)\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 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.IGNORE);\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}"]}
|
|
1
|
+
{"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.1\",\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-list\": \"node --env-file=.env --import=tsx examples/queue-access-list.ts\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.39.2\",\n \"@types/jest\": \"^30.0.0\",\n \"@types/node\": \"^25.2.0\",\n \"eslint\": \"^9.39.2\",\n \"globals\": \"^17.3.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.54.0\"\n },\n \"dependencies\": {\n \"fast-xml-parser\": \"^5.3.4\"\n }\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): 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 : 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): Date | null {\n for (const pattern of DEADLINE_PATTERNS) {\n const m = full.match(pattern)\n if (m) return parseSabreDate(m[1])\n }\n return null\n}\n\nfunction classifyParagraph(text: string[]): BookingClassify {\n const full = text.join('\\n')\n\n const isTicketed =\n text.some(line => line.trim() === 'INVOICED') ||\n /\\bTKTED\\b/i.test(full)\n\n const statusPattern = /\\b(HK|HX|KK|GK|UC|UN|WK|WL|TK|SC|PN)\\d+/g\n const flightStatuses = [...full.matchAll(statusPattern)].map(m => m[1])\n const allCancelled =\n flightStatuses.length > 0 && flightStatuses.every(s => s === 'HX')\n\n const ticketingDeadline = extractTicketingDeadline(full)\n const deadlineExpired = ticketingDeadline ? ticketingDeadline < new Date() : false\n\n const action: 'place' | 'remove' =\n !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 lines = Array.isArray(payload.text) ? payload.text : [payload.text]\n\n if (lines[0] === 'END OF DISPLAY FOR REQUESTED DATA'){\n throw new Error('End of display.')\n }\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 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)\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 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.IGNORE);\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}"]}
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ function getSubString(strSearch, strBegin, strEnd, withEnd) {
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
// package.json
|
|
16
|
-
var version = "0.1
|
|
16
|
+
var version = "1.0.1";
|
|
17
17
|
|
|
18
18
|
// src/config.ts
|
|
19
19
|
var defaultBaseUrl = "https://webservices.platform.sabre.com";
|
|
@@ -236,14 +236,26 @@ function parseSabreDate(dateStr) {
|
|
|
236
236
|
}
|
|
237
237
|
|
|
238
238
|
// src/queue/common/utils/classify-paragraph.ts
|
|
239
|
+
var DEADLINE_PATTERNS = [
|
|
240
|
+
/\bT-(\d{2}[A-Z]{3}(?:\d{2})?)\b/,
|
|
241
|
+
/\bADTK BY (\d{2}[A-Z]{3}\d{2})\b/,
|
|
242
|
+
/\bBEFORE (\d{2}[A-Z]{3}\d{2})\b/,
|
|
243
|
+
/\bTAW[A-Z0-9]{4}(\d{2}[A-Z]{3})(?=\d{3})/
|
|
244
|
+
];
|
|
245
|
+
function extractTicketingDeadline(full) {
|
|
246
|
+
for (const pattern of DEADLINE_PATTERNS) {
|
|
247
|
+
const m = full.match(pattern);
|
|
248
|
+
if (m) return parseSabreDate(m[1]);
|
|
249
|
+
}
|
|
250
|
+
return null;
|
|
251
|
+
}
|
|
239
252
|
function classifyParagraph(text) {
|
|
240
253
|
const full = text.join("\n");
|
|
241
254
|
const isTicketed = text.some((line) => line.trim() === "INVOICED") || /\bTKTED\b/i.test(full);
|
|
242
255
|
const statusPattern = /\b(HK|HX|KK|GK|UC|UN|WK|WL|TK|SC|PN)\d+/g;
|
|
243
256
|
const flightStatuses = [...full.matchAll(statusPattern)].map((m) => m[1]);
|
|
244
257
|
const allCancelled = flightStatuses.length > 0 && flightStatuses.every((s) => s === "HX");
|
|
245
|
-
const
|
|
246
|
-
const ticketingDeadline = timeLimitMatch ? parseSabreDate(timeLimitMatch[1]) : null;
|
|
258
|
+
const ticketingDeadline = extractTicketingDeadline(full);
|
|
247
259
|
const deadlineExpired = ticketingDeadline ? ticketingDeadline < /* @__PURE__ */ new Date() : false;
|
|
248
260
|
const action = !isTicketed && (allCancelled || deadlineExpired) ? "remove" : "place";
|
|
249
261
|
return { isTicketed, flightStatuses, allCancelled, ticketingDeadline, deadlineExpired, action };
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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","queueAccess","queuePlace","XMLBuilder"],"mappings":"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","file":"index.js","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\": \"0.1.17\",\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-list\": \"node --env-file=.env --import=tsx examples/queue-access-list.ts\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.39.2\",\n \"@types/jest\": \"^30.0.0\",\n \"@types/node\": \"^25.2.0\",\n \"eslint\": \"^9.39.2\",\n \"globals\": \"^17.3.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.54.0\"\n },\n \"dependencies\": {\n \"fast-xml-parser\": \"^5.3.4\"\n }\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): 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 : 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\nfunction classifyParagraph(text: string[]): BookingClassify {\n const full = text.join('\\n')\n\n const isTicketed =\n text.some(line => line.trim() === 'INVOICED') ||\n /\\bTKTED\\b/i.test(full)\n\n const statusPattern = /\\b(HK|HX|KK|GK|UC|UN|WK|WL|TK|SC|PN)\\d+/g\n const flightStatuses = [...full.matchAll(statusPattern)].map(m => m[1])\n const allCancelled =\n flightStatuses.length > 0 && flightStatuses.every(s => s === 'HX')\n\n const timeLimitMatch = full.match(/\\bT-(\\d{2}[A-Z]{3}(?:\\d{2})?)\\b/)\n const ticketingDeadline = timeLimitMatch ? parseSabreDate(timeLimitMatch[1]) : null\n const deadlineExpired = ticketingDeadline ? ticketingDeadline < new Date() : false\n\n const action: 'place' | 'remove' =\n !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 lines = Array.isArray(payload.text) ? payload.text : [payload.text]\n\n if (lines[0] === 'END OF DISPLAY FOR REQUESTED DATA'){\n throw new Error('End of display.')\n }\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 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)\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 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.IGNORE);\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}"]}
|
|
1
|
+
{"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","queueAccess","queuePlace","XMLBuilder"],"mappings":";;;AAAO,SAAS,YAAc,CAAA,SAAA,EAAmB,QAAkB,EAAA,MAAA,EAAgB,OAA0B,EAAA;AAC3G,EAAA,IAAI,MAAS,GAAA,EAAA;AACb,EAAM,MAAA,QAAA,GAAW,SAAU,CAAA,OAAA,CAAQ,QAAQ,CAAA;AAC3C,EAAA,IAAI,aAAa,EAAI,EAAA;AACnB,IAAA,MAAM,UAAa,GAAqB,QAAA,GAAW,QAAS,CAAA,MAAA;AAC5D,IAAA,MAAM,QAAW,GAAA,SAAA,CAAU,OAAQ,CAAA,MAAA,EAAQ,UAAU,CAAA;AACrD,IAAI,IAAA,QAAA,KAAa,EAAI,EAAA,MAAA,GAAS,SAAU,CAAA,SAAA,CAAU,YAAY,QAAY,IAA0B,CAAE,CAAA,CAAA;AAAA;AAExG,EAAO,OAAA,MAAA;AACT;;;ACPE,IAAW,OAAA,GAAA,OAAA;;;ACAb,IAAM,cAAiB,GAAA,wCAAA;AACvB,IAAM,gBAAA,GAAmB,qBAAqB,OAAO,CAAA,CAAA;AACrD,IAAM,qBAAA,GAAwB,qBAAqB,OAAO,CAAA,CAAA;AAC1D,IAAM,aAAgB,GAAA,IAAA;AAEtB,IAAM,OAAA,GACJ,OAAO,OAAY,KAAA,WAAA,IAAe,QAAQ,GACtC,GAAA,OAAA,CAAQ,GAAI,CAAA,cAAA,IAAkB,cAC9B,GAAA,cAAA;AAEN,IAAM,SAAA,GACJ,OAAO,OAAY,KAAA,WAAA,IAAe,QAAQ,GACtC,GAAA,OAAA,CAAQ,GAAI,CAAA,gBAAA,IAAoB,gBAChC,GAAA,gBAAA;AAEN,IAAM,MAAA,GACJ,OAAO,OAAY,KAAA,WAAA,IAAe,QAAQ,GACtC,GAAA,OAAA,CAAQ,GAAI,CAAA,YAAA,IAAgB,aAC5B,GAAA,aAAA;AAEN,IAAM,cAAA,GACJ,OAAO,OAAY,KAAA,WAAA,IAAe,QAAQ,GACtC,GAAA,OAAA,CAAQ,GAAI,CAAA,qBAAA,IAAyB,qBACrC,GAAA,qBAAA;;;ACzBC,SAAS,oBAAoB,KAAe,EAAA;AACjD,EAAA,OAAO,uEAAuE,KAAK,CAAA,sBAAA,CAAA;AACrF;;;ACcA,SAAS,cAAc,OAA+B,EAAA;AACpD,EAAM,MAAA;AAAA,IACJ,IAAO,GAAA,QAAA;AAAA,IACP,EAAK,GAAA,KAAA;AAAA,IACL,gBAAAA,eAAiB,GAAA,mBAAA;AAAA,IACjB;AAAA,GACE,GAAA,OAAA;AACJ,EAAA,OAAO,uFAAuF,IAAI,CAAA,8BAAA,EAAiC,EAAE,CAAkCA,+BAAAA,EAAAA,eAAc,4BAA4B,MAAM,CAAA,yBAAA,CAAA;AACzN;;;ACjBA,SAAS,SAAU,aAA+B,EAAA;AAChD,EAAA,OAAO,kEAAkE,aAAa,CAAA,WAAA,CAAA;AACxF;;;ACGA,SAAS,OAAQ,OAAwB,EAAA;AACvC,EAAA,MAAM,EAAE,MAAA,EAAQ,cAAAA,EAAAA,eAAAA,EAAgB,eAAkB,GAAA,OAAA;AAClD,EAAM,MAAA,cAAA,GAAiB,oBAAoB,aAAa,CAAA;AACxD,EAAO,OAAA,aAAA,CAAc,EAAE,MAAQ,EAAA,cAAA,EAAAA,iBAAgB,CAAA,GAAI,SAAS,cAAc,CAAA;AAC5E;;;ACFA,SAAS,QAAS,OAAyB,EAAA;AACzC,EAAA,MAAM,EAAE,MAAA,EAAAC,OAAQ,EAAA,IAAA,EAAS,GAAA,OAAA;AACzB,EAAO,OAAA,CAAA,+FAAA,EAAkGA,OAAM,CAAA,iCAAA,EAAoC,IAAI,CAAA,oCAAA,CAAA;AACzJ;;;ACJA,SAAS,QAAQ,OAAyB,EAAA;AACxC,EAAA,MAAM,EAAE,MAAQ,EAAA,cAAA,EAAAD,eAAgB,EAAA,aAAA,EAAe,MAAS,GAAA,OAAA;AACxD,EAAA,OAAO,OAAQ,CAAA;AAAA,IACb,QAAQ,MAAO,CAAA,EAAE,QAAQ,cAAAA,EAAAA,eAAAA,EAAgB,eAAe,CAAA;AAAA,IACxD;AAAA,GACD,CAAA;AACH;;;ACNA,SAAS,YAAY,OAA8B,EAAA;AACjD,EAAA,MAAM,IAAO,GAAA,6EAAA;AACb,EAAA,OAAO,QAAQ,EAAE,IAAA,EAAM,MAAwB,EAAA,YAAA,aAAA,GAAG,SAAS,CAAA;AAC7D;;;ACHA,SAAS,cAAeE,QAAuC,EAAA;AAC7D,EAAA,MAAM,EAAE,QAAU,EAAA,QAAA,EAAU,GAAK,EAAA,MAAA,EAAAC,SAAWD,GAAAA,QAAAA;AAC5C,EAAA,OAAO,4BAA4B,QAAQ,CAAA,qBAAA,EAAwB,QAAQ,CAA4B,yBAAA,EAAA,GAAG,0BAA0BC,OAAM,CAAA,yBAAA,CAAA;AAC5I;;;ACAA,SAAS,qBAAqB,OAAuC,EAAA;AACnE,EAAA,MAAM,EAAE,cAAA,EAAAH,eAAgB,EAAA,aAAA,EAAkB,GAAA,OAAA;AAC1C,EAAA,MAAM,UAAU,aAAc,CAAA;AAAA,IAC5B,MAAA,EAAA,iBAAA;AAAA,IACA,cAAgBA,EAAAA,eAAAA;AAAA,IAChB,EAAI,EAAA;AAAA,GACL,CAAA;AACD,EAAA,MAAMC,OAAS,GAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,aAAa,CAAC,CAAA;AAC9D,EAAA,MAAM,IAAO,GAAA,yGAAA;AACb,EAAA,OAAO,OAAQ,CAAA,EAAE,MAAAA,EAAAA,OAAAA,EAAQ,MAAM,CAAA;AACjC;;;ACbA,SAAS,oBAAqB,OAAsC,EAAA;AAClE,EAAA,MAAM,IAAO,GAAA,iFAAA;AACb,EAAA,OAAO,QAAQ,EAAE,IAAA,EAAM,MAAiC,EAAA,gBAAA,sBAAA,GAAG,SAAS,CAAA;AACtE;;;ACAA,SAAS,mBAAmB,OAAqC,EAAA;AAC/D,EAAA,MAAM,EAAE,cAAA,EAAAD,eAAgB,EAAA,aAAA,EAAkB,GAAA,OAAA;AAC1C,EAAA,MAAM,UAAU,aAAc,CAAA;AAAA,IAC5B,MAAA,EAAA,eAAA;AAAA,IACA,cAAgBA,EAAAA,eAAAA;AAAA,IAChB,EAAI,EAAA;AAAA,GACL,CAAA;AACD,EAAA,MAAMC,OAAS,GAAA,OAAA,GAAU,QAAS,CAAA,aAAA,CAAc,aAAa,CAAC,CAAA;AAC9D,EAAA,MAAM,IAAO,GAAA,uEAAA;AACb,EAAA,OAAO,OAAQ,CAAA,EAAE,MAAAA,EAAAA,OAAAA,EAAQ,MAAM,CAAA;AACjC;;;ACtBO,IAAM,iBAAN,MAAqB;AAAA,EAC1B,YAA6B,KAAc,EAAA;AAAd,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAAA;AAAe;AAAA;AAAA;AAAA;AAAA,EAM5C,MAAM,aAAiC,GAAA;AACrC,IAAA,IAAA,CAAK,MAAM,SAAkC,CAAA,iBAAA,sBAAA;AAC7C,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,oBAAoB,CAAA;AACtD,IAAO,OAAA,GAAA;AAAA;AACT;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAgC,GAAA;AACpC,IAAA,IAAA,CAAK,MAAM,SAAiC,CAAA,gBAAA,qBAAA;AAC5C,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,mBAAmB,CAAA;AACrD,IAAO,OAAA,GAAA;AAAA;AACT;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,IAAwB,GAAA;AAC5B,IAAA,IAAA,CAAK,MAAM,SAAwB,CAAA,YAAA,YAAA;AACnC,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,WAAW,CAAA;AAC7C,IAAO,OAAA,GAAA;AAAA;AACT;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAA+B,GAAA;AACnC,IAAA,IAAA,CAAK,MAAM,SAAgC,CAAA,eAAA,oBAAA;AAC3C,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,kBAAkB,CAAA;AACpD,IAAO,OAAA,GAAA;AAAA;AAEX,CAAA;;;AC9CO,IAAK,SAAA,qBAAAG,UAAL,KAAA;AACL,EAAAA,UAAAA,CAAAA,UAAAA,CAAA,SAAQ,CAAR,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,KAAA;AACA,EAAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,KAAA;AAZU,EAAAA,OAAAA,UAAAA;AAAA,CAAA,EAAA,SAAA,IAAA,EAAA,CAAA;AAgBL,IAAM,YAAe,GAAA,CAAC,KAAuB,KAAA,SAAA,CAAU,KAAK,CAAA;AAC5D,IAAM,WAAA,GAAc,CAAC,KAAA,KAAiB,MAAO,CAAA,SAAA,CAAU,KAAK,CAAC,CAAA,CAAE,QAAS,CAAA,CAAA,EAAG,GAAG,CAAA;;;ACdrF,SAAS,cAAc,IAA0B,EAAA;AAC/C,EAAA,IAAI,CAAC,IAAA,EAAY,MAAA,IAAI,MAAM,eAAe,CAAA;AAE1C,EAAA,MAAM,UAAa,GAAA,oFAAA;AACnB,EAAM,MAAA,KAAA,GAAQ,UAAW,CAAA,IAAA,CAAK,IAAI,CAAA;AAClC,EAAA,IAAI,CAAC,KAAA,EAAa,MAAA,IAAI,MAAM,sBAAsB,CAAA;AAClD,EAAM,MAAA,CAAC,GAAG,OAAS,EAAA,OAAA,EAAS,OAAO,IAAM,EAAA,IAAA,EAAM,SAAU,CAAI,GAAA,KAAA;AAC7D,EAAA,OAAO,EAAE,OAAS,EAAA,OAAA,EAAS,KAAO,EAAA,QAAA,EAAU,KAAK,IAAK,CAAA,KAAA,CAAM,CAAC,CAAC,IAAI,WAAY,CAAA,IAAA,CAAK,KAAM,CAAA,CAAA,EAAE,CAAC,CAAU,CAAC,CAAI,CAAA,EAAA,IAAA,CAAK,MAAM,CAAE,EAAA,CAAC,CAAC,CAAA,CAAA,EAAI,KAAK,KAAM,CAAA,CAAA,EAAE,CAAC,CAAC,IAAI,IAAK,CAAA,KAAA,CAAM,CAAC,CAAC,IAAI,SAAU,EAAA;AAC9K;ACTA,IAAM,OAAsB,GAAA;AAAA,EAC1B,YAAc,EAAA,SAAA;AAAA,EACd,mBAAsB,EAAA,EAAA;AAAA,EACtB,cAAgB,EAAA,IAAA;AAAA,EAChB,kBAAkB,CAAC,SAAA,EAAW,MAAQ,EAAA,YAAA,EAAc,UAAU,UAAU,CAAA;AAAA,EACxE,gBAAA,EAAkB,CAAC,OAAA,KAAY,OAAQ,CAAA,CAAC,EAAE,WAAY,EAAA,GAAI,OAAQ,CAAA,KAAA,CAAM,CAAC,CAAA;AAAA,EACzE,sBAAA,EAAwB,CAAC,aAAA,KAAkB,aAAc,CAAA,CAAC,EAAE,WAAY,EAAA,GAAI,aAAc,CAAA,KAAA,CAAM,CAAC;AACnG,CAAA;AAOO,IAAM,YAAY,MAAM;AAC7B,EAAM,MAAA,MAAA,GAAS,IAAI,SAAA,CAAU,OAAO,CAAA;AACpC,EAAA,OAAO,CAAI,GAAA,KAAkB,MAAO,CAAA,KAAA,CAAM,GAAG,CAAA;AAC/C,CAAG,GAAA;;;AChBH,SAAS,sBAAsB,IAA6B,EAAA;AAC1D,EAAA,MAAM,EAAE,aAAA,EAAkB,GAAA,QAAA,CAAqC,IAAI,CAAA;AACnE,EAAO,OAAA,aAAA;AACT;;;ACHA,SAAS,qBAAqB,IAA4B,EAAA;AACxD,EAAA,MAAM,EAAE,YAAA,EAAiB,GAAA,QAAA,CAAoC,IAAI,CAAA;AACjE,EAAO,OAAA,YAAA;AACT;;;ACHA,SAAS,qBAAqB,IAA4B,EAAA;AACxD,EAAO,OAAA,QAAA,CAAoC,IAAI,CAAE,CAAA,YAAA;AACnD;;;ACLA,IAAM,SAAoC,GAAA;AAAA,EACxC,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,CAAA;AAAA,EAC7C,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,CAAA;AAAA,EAAG,GAAK,EAAA,EAAA;AAAA,EAAI,GAAK,EAAA;AAChD,CAAA;AACO,SAAS,eAAe,OAAuB,EAAA;AACpD,EAAA,MAAM,MAAM,QAAS,CAAA,OAAA,CAAQ,MAAM,CAAG,EAAA,CAAC,GAAG,EAAE,CAAA;AAC5C,EAAA,MAAM,QAAQ,SAAU,CAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,EAAG,CAAC,CAAC,CAAA;AAC3C,EAAA,MAAM,IAAO,GAAA,OAAA,CAAQ,MAAS,GAAA,CAAA,GAC1B,MAAO,QAAS,CAAA,OAAA,CAAQ,KAAM,CAAA,CAAC,GAAG,EAAE,CAAA,GAAA,iBAChC,IAAA,IAAA,IAAO,WAAY,EAAA;AAC3B,EAAA,OAAO,IAAI,IAAK,CAAA,IAAA,EAAM,OAAO,GAAK,EAAA,EAAA,EAAI,IAAI,EAAE,CAAA;AAC9C;;;ACHA,IAAM,iBAAoB,GAAA;AAAA,EACxB,iCAAA;AAAA,EACA,kCAAA;AAAA,EACA,iCAAA;AAAA,EACA;AACF,CAAA;AAEA,SAAS,yBAAyB,IAA2B,EAAA;AAC3D,EAAA,KAAA,MAAW,WAAW,iBAAmB,EAAA;AACvC,IAAM,MAAA,CAAA,GAAI,IAAK,CAAA,KAAA,CAAM,OAAO,CAAA;AAC5B,IAAA,IAAI,CAAG,EAAA,OAAO,cAAe,CAAA,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA;AAEnC,EAAO,OAAA,IAAA;AACT;AAEA,SAAS,kBAAkB,IAAiC,EAAA;AAC1D,EAAM,MAAA,IAAA,GAAO,IAAK,CAAA,IAAA,CAAK,IAAI,CAAA;AAE3B,EAAM,MAAA,UAAA,GACJ,IAAK,CAAA,IAAA,CAAK,CAAQ,IAAA,KAAA,IAAA,CAAK,IAAK,EAAA,KAAM,UAAU,CAAA,IAC5C,YAAa,CAAA,IAAA,CAAK,IAAI,CAAA;AAExB,EAAA,MAAM,aAAgB,GAAA,0CAAA;AACtB,EAAA,MAAM,cAAiB,GAAA,CAAC,GAAG,IAAA,CAAK,QAAS,CAAA,aAAa,CAAC,CAAA,CAAE,GAAI,CAAA,CAAA,CAAA,KAAK,CAAE,CAAA,CAAC,CAAC,CAAA;AACtE,EAAM,MAAA,YAAA,GACJ,eAAe,MAAS,GAAA,CAAA,IAAK,eAAe,KAAM,CAAA,CAAA,CAAA,KAAK,MAAM,IAAI,CAAA;AAEnE,EAAM,MAAA,iBAAA,GAAoB,yBAAyB,IAAI,CAAA;AACvD,EAAA,MAAM,eAAkB,GAAA,iBAAA,GAAoB,iBAAoB,mBAAA,IAAI,MAAS,GAAA,KAAA;AAE7E,EAAA,MAAM,MACJ,GAAA,CAAC,UAAe,KAAA,YAAA,IAAgB,mBAAmB,QAAW,GAAA,OAAA;AAEhE,EAAA,OAAO,EAAE,UAAY,EAAA,cAAA,EAAgB,YAAc,EAAA,iBAAA,EAAmB,iBAAiB,MAAO,EAAA;AAChG;;;ACvCA,SAAS,yBAAyB,OAAsC,EAAA;AACtE,EAAM,MAAA,KAAA,GAAQ,KAAM,CAAA,OAAA,CAAQ,OAAQ,CAAA,IAAI,IAAI,OAAQ,CAAA,IAAA,GAAO,CAAC,OAAA,CAAQ,IAAI,CAAA;AAExE,EAAI,IAAA,KAAA,CAAM,CAAC,CAAA,KAAM,mCAAoC,EAAA;AACnD,IAAM,MAAA,IAAI,MAAM,iBAAiB,CAAA;AAAA;AAGnC,EAAA,MAAM,mBAAsB,GAAA,CAAA;AAC5B,EAAA,MAAM,aAAgB,GAAA,eAAA;AAEtB,EAAA,OAAO,KACJ,CAAA,KAAA,CAAM,CAAG,EAAA,mBAAmB,CAC5B,CAAA,MAAA,CAAO,CAAQ,IAAA,KAAA,IAAA,CAAK,KAAM,CAAA,aAAa,CAAC,CAAA,CACxC,IAAI,CAAiB,aAAA,KAAA;AACpB,IAAA,MAAM,CAAC,IAAM,EAAA,OAAO,CAAI,GAAA,aAAA,CAAc,MAAM,IAAI,CAAA;AAChD,IAAO,OAAA,EAAE,MAAM,OAAQ,EAAA;AAAA,GACxB,CAAA;AACL;;;ACjBA,SAAS,6BAA6B,OAAiE,EAAA;AACrG,EAAO,OAAA,OAAA,CAAQ,SAAS,GAAI,CAAA,CAAA,OAAA,MAAY,EAAE,KAAO,EAAA,OAAA,CAAQ,KAAO,EAAA,OAAA,EAAU,CAAA,CAAA;AAC5E;;;ACCA,SAAS,2BAAA,CACP,SACA,cACa,EAAA;AACb,EAAI,IAAA,CAAC,cAAe,CAAA,SAAA,CAAU,IAAM,EAAA;AAClC,IAAA,MAAM,IAAI,KAAM,CAAA,cAAA,CAAe,mBAAmB,KAAO,EAAA,qBAAA,EAAuB,WAAW,yBAAyB,CAAA;AAAA;AAEtH,EAAM,MAAA,EAAE,SAAW,EAAA,IAAA,EAAS,GAAA,cAAA;AAC5B,EAAM,MAAA,QAAA,GAAW,yBAAyB,SAAS,CAAA;AACnD,EAAM,MAAA,EAAE,WAAa,EAAA,KAAA,EAAU,GAAA,OAAA;AAC/B,EAAA,MAAM,aAAgB,GAAA,4BAAA,CAA6B,EAAE,KAAA,EAAO,UAAU,CAAA;AAEtE,EAAI,IAAA,CAAC,IAAM,EAAA,QAAA,EAAU,EAAI,EAAA;AACvB,IAAA,MAAM,IAAI,KAAM,CAAA,cAAA,CAAe,mBAAmB,KAAO,EAAA,qBAAA,EAAuB,WAAW,eAAe,CAAA;AAAA;AAE5G,EAAM,MAAA,QAAA,GAAW,iBAAkB,CAAA,SAAA,CAAU,IAAI,CAAA;AACjD,EAAO,OAAA;AAAA,IACL,SAAA,EAAW,KAAK,QAAS,CAAA,EAAA;AAAA,IACzB,UAAU,IAAK,CAAA,QAAA;AAAA,IACf,MAAQ,EAAA;AAAA,MACN,SAAA,EAAW,IAAK,CAAA,GAAA,CAAI,MAAO,CAAA,SAAA;AAAA,MAC3B,cAAA,EAAgB,IAAK,CAAA,GAAA,CAAI,MAAO,CAAA;AAAA,KAClC;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF;;;AC3BA,SAAS,0BAAA,CACP,SACA,aACa,EAAA;AACb,EAAM,MAAA,EAAE,WAAa,EAAA,KAAA,EAAU,GAAA,OAAA;AAC/B,EAAM,MAAA,QAAA,GAAW,yBAAyB,aAAa,CAAA;AACvD,EAAA,MAAM,aAAgB,GAAA,4BAAA,CAA6B,EAAE,KAAA,EAAO,UAAU,CAAA;AAEtE,EAAI,IAAA,CAAC,cAAc,IAAM,EAAA;AACvB,IAAA,MAAM,IAAI,KAAM,CAAA,aAAA,CAAc,mBAAmB,KAAO,EAAA,qBAAA,EAAuB,WAAW,eAAe,CAAA;AAAA;AAE3G,EAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAO,OAAS,EAAA,SAAA,KAAc,aAAc,CAAA,aAAA,CAAc,IAAK,CAAA,GAAA,EAAK,CAAA;AAEtF,EAAM,MAAA,QAAA,GAAW,iBAAkB,CAAA,aAAA,CAAc,IAAI,CAAA;AACrD,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,SAAW,EAAA,KAAA;AAAA,MACX,cAAgB,EAAA;AAAA,KAClB;AAAA,IACA,aAAA;AAAA,IACA,SAAW,EAAA,aAAA;AAAA,IACX,OAAA;AAAA,IACA;AAAA,GACF;AACF;;;AC9BA,SAAS,0BAA0B,IAAc,EAAA;AAC/C,EAAA,MAAM,EAAE,aAAA,EAAkB,GAAA,QAAA,CAAyC,IAAI,CAAA;AACvE,EAAO,OAAA,aAAA;AACT;;;ACHA,SAAS,oBAAoB,IAAiC,EAAA;AAC5D,EAAA,IAAI,CAAC,IAAA,EAAY,MAAA,IAAI,MAAM,eAAe,CAAA;AAG1C,EAAA,MAAM,kBAAqB,GAAA,mGAAA;AAC3B,EAAM,MAAA,KAAA,GAAQ,kBAAmB,CAAA,IAAA,CAAK,IAAI,CAAA;AAC1C,EAAA,IAAI,CAAC,KAAA,EAAa,MAAA,IAAI,MAAM,8BAA8B,CAAA;AAC1D,EAAM,MAAA,CAAC,GAAG,GAAK,EAAA,SAAA,EAAW,KAAK,KAAO,EAAA,IAAA,EAAM,IAAM,EAAA,IAAI,CAAI,GAAA,KAAA;AAC1D,EAAA,OAAO,EAAE,GAAK,EAAA,SAAA,EAAW,SAAS,CAAG,EAAA,GAAG,IAAI,KAAK,CAAA,CAAA,EAAI,IAAM,EAAA,CAAA,EAAA,EAAK,KAAK,KAAM,CAAA,CAAC,CAAC,CAAI,CAAA,EAAA,WAAA,CAAY,KAAK,KAAM,CAAA,CAAA,EAAG,CAAC,CAAU,CAAC,CAAI,CAAA,EAAA,IAAA,CAAK,MAAM,CAAG,EAAA,CAAC,CAAC,CAAI,CAAA,EAAA,IAAA,CAAK,MAAM,CAAG,EAAA,CAAC,CAAC,CAAI,CAAA,EAAA,IAAA,CAAK,MAAM,CAAC,CAAC,IAAI,IAAK,EAAA;AAC3L;;;ACRA,SAAS,6BAAA,CACP,SACA,kBACiB,EAAA;AACjB,EAAI,IAAA,CAAC,kBAAmB,CAAA,kBAAA,EAAoB,OAAS,EAAA;AACnD,IAAA,MAAM,IAAI,KAAM,CAAA,kBAAA,CAAmB,mBAAmB,KAAO,EAAA,qBAAA,EAAuB,WAAW,eAAe,CAAA;AAAA;AAEhH,EAAM,MAAA,EAAE,WAAa,EAAA,KAAA,EAAU,GAAA,OAAA;AAC/B,EAAM,MAAA,EAAE,SAAW,EAAA,IAAA,EAAS,GAAA,kBAAA;AAC5B,EAAM,MAAA,KAAA,GAAQ,QAAQ,CAAC,KAAA,CAAM,QAAQ,IAAI,CAAA,GAAI,CAAC,IAAI,CAAI,GAAA,IAAA;AACtD,EAAO,OAAA;AAAA,IACL,KAAO,EAAA,KAAA,GACH,KAAM,CAAA,GAAA,CAAI,CAAS,IAAA,MAAA;AAAA,MACjB,OAAO,IAAK,CAAA,MAAA;AAAA,MACZ,UAAU,IAAK,CAAA,QAAA;AAAA,MACf,eAAe,IAAK,CAAA,aAAA;AAAA,MACpB,KAAA,EAAO,IAAK,CAAA,GAAA,CAAI,MAAO,CAAA,SAAA;AAAA,MACvB,GAAA,EAAK,IAAK,CAAA,GAAA,CAAI,MAAO,CAAA,cAAA;AAAA,MACrB,SAAA,EAAW,KAAK,QAAS,CAAA;AAAA,MACzB,CACF,GAAA,MAAA;AAAA,IACJ,IAAA,EAAM,SAAU,CAAA,IAAA,CAAK,KAAM,CAAA,CAAA,EAAG,EAAE,CAAA,CAAE,GAAI,CAAA,CAAA,IAAA,KAAQ,mBAAoB,CAAA,IAAI,CAAC,CAAA;AAAA,IACvE,SAAA;AAAA,IACA;AAAA,GACF;AACF;;;ACtBA,SAAS,YAAY,SAA2B,EAAA;AAC9C,EAAA,OAAO,kHAAkH,SAAS,CAAA,gBAAA,CAAA;AACpI;;;ACPA,SAAS,wCAAwC,OAAiC,EAAA;AAChF,EAAO,OAAA;AAAA,IACL,eAAiB,EAAA;AAAA,MACf,WAAW,OAAQ,CAAA,MAAA;AAAA,MACnB,6BAA6B,OAAQ,CAAA,IAAA;AAAA,MACrC,mBAAmB,OAAQ,CAAA,GAAA;AAAA,MAE3B,IAAA,EAAM,QAAQ,GACZ,GAAA;AAAA,QACA,QAAQ,OAAQ,CAAA,GAAA;AAAA,QAChB,qBAAqB,OAAQ,CAAA;AAAA,OAE7B,GAAA;AAAA;AACJ,GACF;AACF;ACEA,SAAS,uBAAuB,OAAyC,EAAA;AACvE,EAAM,MAAA,kBAAA,GAAqB,wCAAwC,OAAO,CAAA;AAC1E,EAAA,MAAMF,QAAU,GAAA;AAAA,IACd,gBAAkB,EAAA,KAAA;AAAA,IAClB,mBAAqB,EAAA,GAAA;AAAA,IACrB,yBAA2B,EAAA,KAAA;AAAA,IAC3B,iBAAmB,EAAA;AAAA,GACrB;AACA,EAAM,MAAA,OAAA,GAAU,IAAI,UAAA,CAAWA,QAAO,CAAA;AACtC,EAAO,OAAA,OAAA,CAAQ,MAAM,kBAAkB,CAAA;AACzC;;;ACdA,SAAS,kBAAkBA,QAAoC,EAAA;AAC7D,EAAA,MAAM,EAAE,GAAK,EAAA,MAAA,EAAQ,eAAe,cAAAF,EAAAA,eAAAA,EAAgB,kBAAqBE,GAAAA,QAAAA;AACzE,EAAM,MAAA,SAAA,GAAY,uBAAuB,EAAE,GAAA,EAAK,QAAQ,GAAK,EAAA,IAAA,EAAM,kBAAkB,CAAA;AACrF,EAAM,MAAA,IAAA,GAAO,YAAY,SAAS,CAAA;AAClC,EAAA,OAAO,OAAQ,CAAA;AAAA,IACb,IAAA;AAAA,IAAM,aAAA;AAAA,IAAe,cAAAF,EAAAA,eAAAA;AAAA,IAAgB,MAAA,EAAA,kBAAA;AAAA,GACtC,CAAA;AACH;;;ACPA,SAAS,cAAcE,QAAgC,EAAA;AACrD,EAAA,MAAM,EAAE,GAAK,EAAA,MAAA,EAAQ,aAAe,EAAA,cAAA,EAAAF,iBAAmBE,GAAAA,QAAAA;AACvD,EAAA,MAAM,SAAY,GAAA,sBAAA,CAAuB,EAAE,GAAA,EAAK,QAAQ,CAAA;AACxD,EAAM,MAAA,IAAA,GAAO,YAAY,SAAS,CAAA;AAClC,EAAA,OAAO,OAAQ,CAAA;AAAA,IACb,IAAA;AAAA,IAAM,aAAA;AAAA,IAAe,cAAAF,EAAAA,eAAAA;AAAA,IAAgB,MAAA,EAAA,kBAAA;AAAA,GACtC,CAAA;AACH;;;ACdA,SAAS,WAAW,SAA2B,EAAA;AAC7C,EAAA,OAAO,4HAA4H,SAAS,CAAA,2BAAA,CAAA;AAC9I;;;ACKA,SAAS,aAAaE,QAA+B,EAAA;AACnD,EAAA,MAAM,EAAE,aAAA,EAAe,cAAAF,EAAAA,eAAAA,EAAgB,KAAQE,GAAAA,QAAAA;AAC/C,EAAA,MAAM,SAAY,GAAA,sBAAA,CAAuB,EAAE,GAAA,EAAK,CAAA;AAChD,EAAM,MAAA,IAAA,GAAO,WAAW,SAAS,CAAA;AACjC,EAAA,OAAO,OAAQ,CAAA;AAAA,IACb,IAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAAF,EAAAA,eAAAA;AAAA,IACA,MAAA,EAAA,iBAAA;AAAA,GACD,CAAA;AACH;;;ACtBA,SAAS,iBAAiB,MAAkC,EAAA;AAC1D,EAAM,MAAA,SAAA,GAAY,uBAAuB,MAAM,CAAA,GAAA,CAAA;AAC/C,EAAM,MAAA,IAAA,GAAO,YAAY,SAAS,CAAA;AAClC,EAAO,OAAA,IAAA;AACT;;;ACQA,SAAS,YAAYE,QAA8B,EAAA;AACjD,EAAA,MAAM,EAAE,aAAA,EAAe,cAAAF,EAAAA,eAAAA,EAAmBE,GAAAA,QAAAA;AAC1C,EAAA,MAAM,OAAO,gBAAsC,CAAA,KAAA,YAAA;AACnD,EAAA,OAAO,QAAQ,EAAE,aAAA,EAAe,gBAAAF,eAAgB,EAAA,IAAA,EAAM,+CAAgC,CAAA;AACxF;;;ACJA,SAAS,cAAcE,QAAgC,EAAA;AACrD,EAAA,MAAM,EAAE,aAAA,EAAe,cAAAF,EAAAA,eAAAA,EAAmBE,GAAAA,QAAAA;AAC1C,EAAA,MAAM,OAAO,gBAAwC,CAAA,GAAA,cAAA;AACrD,EAAA,OAAO,QAAQ,EAAE,aAAA,EAAe,gBAAAF,eAAgB,EAAA,IAAA,EAAM,+CAAgC,CAAA;AACxF;;;ACVA,SAAS,WAAW,SAA2B,EAAA;AAC7C,EAAA,OAAO,4HAA4H,SAAS,CAAA,2BAAA,CAAA;AAC9I;;;ACKA,SAAS,aAAaE,QAA+B,EAAA;AACnD,EAAA,MAAM,EAAE,MAAQ,EAAA,GAAA,EAAK,aAAe,EAAA,cAAA,EAAAF,iBAAmBE,GAAAA,QAAAA;AACvD,EAAA,MAAM,YAAY,sBAAuB,CAAA,EAAE,QAAQ,IAAM,EAAA,IAAA,EAAM,KAAK,CAAA;AACpE,EAAM,MAAA,IAAA,GAAO,WAAW,SAAS,CAAA;AACjC,EAAA,OAAO,QAAQ,EAAE,IAAA,EAAM,eAAe,cAAAF,EAAAA,eAAAA,EAAgB,6CAA+B,CAAA;AACvF;;;ACNA,SAAS,cAAcE,QAAgC,EAAA;AACrD,EAAA,MAAM,EAAE,aAAA,EAAe,cAAAF,EAAAA,eAAAA,EAAmBE,GAAAA,QAAAA;AAC1C,EAAA,MAAM,OAAO,gBAAwC,CAAA,GAAA,cAAA;AACrD,EAAA,OAAO,QAAQ,EAAE,aAAA,EAAe,gBAAAF,eAAgB,EAAA,IAAA,EAAM,+CAAgC,CAAA;AACxF;;;ACbO,IAAM,QAAN,MAAY;AAAA,EAIjB,YAA6B,KAAc,EAAA;AAAd,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAAA;AAAgB,EAH5B,IAAO,GAAA;AAAA,IACtB,KAAO,EAAA;AAAA,GACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,MAAM,GAA2C,EAAA;AACrD,IAAA,IAAI,CAAC,GAAK,EAAA;AACR,MAAA,IAAI,OAAO,OAAA,KAAY,WAAe,IAAA,OAAA,CAAQ,GAAK,EAAA;AACjD,QAAA,GAAA,GAAM,QAAQ,GAAI,CAAA,kBAAA;AAAA;AACpB;AAEF,IAAA,IAAI,CAAC,GAAA,EAAW,MAAA,IAAI,MAAM,qCAAqC,CAAA;AAE/D,IAAA,IAAA,CAAK,MAAM,SAA+B,CAAA,iBAAA,mBAAA;AAC1C,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAM,IAAK,CAAA,CAAC,SAAS,YAAa,CAAA;AAAA,MACvD,GAAA;AAAA,MAAK,GAAG;AAAA,KACT,CAAC,CAAA;AACF,IAAA,OAAO,qBAAqB,GAAG,CAAA;AAAA;AACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,OAAO,OAA2D,EAAA;AACtE,IAAI,IAAA,CAAC,QAAQ,GAAK,EAAA;AAChB,MAAA,IAAI,OAAO,OAAA,KAAY,WAAe,IAAA,OAAA,CAAQ,GAAK,EAAA;AACjD,QAAQ,OAAA,CAAA,GAAA,GAAM,QAAQ,GAAI,CAAA,kBAAA;AAAA;AAC5B;AAEF,IAAA,IAAI,CAAC,OAAQ,CAAA,GAAA,EAAW,MAAA,IAAI,MAAM,gDAAgD,CAAA;AAClF,IAAM,MAAA,EAAE,MAAQ,EAAA,GAAA,EAAQ,GAAA,OAAA;AACxB,IAAA,IAAA,CAAK,MAAM,SAAgC,CAAA,kBAAA,oBAAA;AAC3C,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAM,IAAK,CAAA,CAAC,SAAS,aAAc,CAAA;AAAA,MACxD,MAAA;AAAA,MAAQ,GAAA;AAAA,MAAK,GAAG;AAAA,KACjB,CAAC,CAAA;AACF,IAAA,IAAA,CAAK,KAAK,KAAQ,GAAA,MAAA;AAClB,IAAMK,MAAAA,YAAAA,GAAc,sBAAsB,GAAG,CAAA;AAC7C,IAAA,OAAO,4BAA4B,EAAE,WAAA,EAAa,KAAK,IAAK,CAAA,KAAA,IAASA,YAAW,CAAA;AAAA;AAClF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,WAAW,OAAmE,EAAA;AAClF,IAAI,IAAA,CAAC,QAAQ,GAAK,EAAA;AAChB,MAAA,IAAI,OAAO,OAAA,KAAY,WAAe,IAAA,OAAA,CAAQ,GAAK,EAAA;AACjD,QAAQ,OAAA,CAAA,GAAA,GAAM,QAAQ,GAAI,CAAA,kBAAA;AAAA;AAC5B;AAEF,IAAA,IAAI,CAAC,OAAQ,CAAA,GAAA,EAAW,MAAA,IAAI,MAAM,gDAAgD,CAAA;AAClF,IAAA,MAAM,EAAE,MAAA,EAAQ,GAAK,EAAA,gBAAA,EAAqB,GAAA,OAAA;AAC1C,IAAA,IAAA,CAAK,MAAM,SAAgC,CAAA,kBAAA,oBAAA;AAC3C,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAM,IAAK,CAAA,CAAC,SAAS,iBAAkB,CAAA;AAAA,MAC5D,MAAA;AAAA,MAAQ,GAAA;AAAA,MAAK,gBAAA;AAAA,MAAkB,GAAG;AAAA,KACnC,CAAC,CAAA;AACF,IAAM,MAAA,eAAA,GAAkB,0BAA0B,GAAG,CAAA;AACrD,IAAA,OAAO,6BAA8B,CAAA,EAAE,WAAa,EAAA,MAAA,IAAU,eAAe,CAAA;AAAA;AAC/E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,MAAuC,GAAA;AAC3C,IAAA,IAAA,CAAK,MAAM,SAAgC,CAAA,kBAAA,oBAAA;AAC3C,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,aAAa,CAAA;AAC/C,IAAMA,MAAAA,YAAAA,GAAc,sBAAsB,GAAG,CAAA;AAC7C,IAAA,OAAO,4BAA4B,EAAE,WAAA,EAAa,KAAK,IAAK,CAAA,KAAA,IAASA,YAAW,CAAA;AAAA;AAClF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,MAAuC,GAAA;AAC3C,IAAA,IAAA,CAAK,MAAM,SAAgC,CAAA,kBAAA,oBAAA;AAC3C,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,aAAa,CAAA;AAC/C,IAAMA,MAAAA,YAAAA,GAAc,sBAAsB,GAAG,CAAA;AAC7C,IAAA,OAAO,4BAA4B,EAAE,WAAA,EAAa,KAAK,IAAK,CAAA,KAAA,IAASA,YAAW,CAAA;AAAA;AAClF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,IAAmC,GAAA;AACvC,IAAA,IAAA,CAAK,MAAM,SAAgC,CAAA,kBAAA,oBAAA;AAC3C,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,WAAW,CAAA;AAC7C,IAAMA,MAAAA,YAAAA,GAAc,sBAAsB,GAAG,CAAA;AAC7C,IAAIA,IAAAA,YAAAA,CAAY,mBAAmB,KAAO,EAAA;AACxC,MAAA,MAAM,IAAI,KAAMA,CAAAA,YAAAA,CAAY,kBAAmB,CAAA,KAAA,EAAO,uBAAuB,OAAO,CAAA;AAAA;AAEtF,IAAO,OAAA;AAAA,MACL,WAAWA,YAAY,CAAA;AAAA,KACzB;AAAA;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,MAAM,OAAyD,EAAA;AACnE,IAAI,IAAA,CAAC,QAAQ,GAAK,EAAA;AAChB,MAAA,IAAI,OAAO,OAAA,KAAY,WAAe,IAAA,OAAA,CAAQ,GAAK,EAAA;AACjD,QAAQ,OAAA,CAAA,GAAA,GAAM,QAAQ,GAAI,CAAA,kBAAA;AAAA;AAC5B;AAEF,IAAA,IAAI,CAAC,OAAQ,CAAA,GAAA,EAAW,MAAA,IAAI,MAAM,+CAA+C,CAAA;AACjF,IAAM,MAAA,EAAE,MAAQ,EAAA,GAAA,EAAQ,GAAA,OAAA;AACxB,IAAA,IAAA,CAAK,MAAM,SAA+B,CAAA,iBAAA,mBAAA;AAC1C,IAAA,MAAM,MAAM,MAAM,IAAA,CAAK,MAAM,IAAK,CAAA,CAAC,SAAS,YAAa,CAAA;AAAA,MACvD,MAAA;AAAA,MAAQ,GAAA;AAAA,MAAK,GAAG;AAAA,KACjB,CAAC,CAAA;AACF,IAAMC,MAAAA,WAAAA,GAAa,qBAAqB,GAAG,CAAA;AAC3C,IAAA,OAAO,2BAA2B,EAAE,WAAA,EAAa,KAAK,IAAK,CAAA,KAAA,IAASA,WAAU,CAAA;AAAA;AAElF,CAAA;;;ACtIA,SAAS,cAAcJ,QAAuC,EAAA;AAC5D,EAAA,MAAM,EAAE,GAAK,EAAA,IAAA,EAAM,aAAe,EAAA,cAAA,EAAAF,iBAAmBE,GAAAA,QAAAA;AACrD,EAAA,MAAM,IAAO,GAAA,CAAA,iJAAA,EAAoJ,GAAG,CAAA,aAAA,EAAgB,IAAI,CAAA,wBAAA,CAAA;AACxL,EAAA,OAAO,OAAQ,CAAA;AAAA,IACb,IAAA;AAAA,IAAM,MAAA,EAAA,uBAAA;AAAA,IAAsC,aAAA;AAAA,IAAe,cAAAF,EAAAA;AAAA,GAC5D,CAAA;AACH;;;ACfA,SAAS,uCAAuC,OAA4C,EAAA;AAC1F,EAAO,OAAA;AAAA,IACL,gBAAgB,OAAQ,CAAA,GAAA;AAAA,IACxB,YAAY,OAAQ,CAAA,IAAA;AAAA,IACpB,gBAAgB,OAAQ,CAAA,cAAA;AAAA,IACxB,gBAAgB,OAAQ,CAAA,cAAA;AAAA,IACxB,cAAc,OAAQ,CAAA,YAAA;AAAA,IACtB,SAAS,OAAQ,CAAA,OAAA,EAAS,IAAQ,IAAA,OAAA,CAAQ,SAAS,MAC/C,GAAA;AAAA,MACA,WAAA,EAAa,QAAQ,OAAQ,CAAA,IAAA;AAAA,MAC7B,aAAA,EAAe,QAAQ,OAAQ,CAAA;AAAA,KAE/B,GAAA;AAAA,GACN;AACF;ACbA,SAAS,yBAAyB,OAAiC,EAAA;AACjE,EAAM,MAAA,iBAAA,GAAoB,uCAAuC,OAAO,CAAA;AACxE,EAAM,MAAA,OAAA,GAAU,IAAIO,UAAW,EAAA;AAC/B,EAAA,OAAO,OAAQ,CAAA,KAAA,CAAM,EAAE,iBAAA,EAAmB,CAAA;AAC5C;;;ACSA,SAAS,eAAeL,QAAwC,EAAA;AAC9D,EAAA,MAAM,EAAE,aAAe,EAAA,cAAA,EAAAF,eAAgB,EAAA,GAAG,gBAAmBE,GAAAA,QAAAA;AAC7D,EAAM,MAAA,iBAAA,GAAoB,yBAAyB,cAAc,CAAA;AACjE,EAAM,MAAA,IAAA,GAAO,2GAA2G,iBAAiB,CAAA,sBAAA,CAAA;AACzI,EAAA,OAAO,OAAQ,CAAA;AAAA,IACb,IAAA;AAAA,IAAM,MAAA,EAAA,2BAAA;AAAA,IAAiC,aAAA;AAAA,IAAe,cAAAF,EAAAA;AAAA,GACvD,CAAA;AACH;;;ACrBA,SAAS,4BAA4B,OAAiB,EAAA;AACpD,EAAO,OAAA,QAAA,CAA2C,OAAO,CAAE,CAAA,mBAAA;AAC7D;;;ACFA,SAAS,2BAA2B,OAAiB,EAAA;AACnD,EAAO,OAAA,QAAA,CAA0C,OAAO,CAAE,CAAA,kBAAA;AAC5D;;;ACIO,IAAM,aAAN,MAAiB;AAAA,EACtB,YAA6B,KAAc,EAAA;AAAd,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAAA;AAAe;AAAA;AAAA;AAAA;AAAA;AAAA,EAO5C,MAAM,OAAO,OAAqD,EAAA;AAChE,IAAI,IAAA,CAAC,QAAQ,GAAK,EAAA;AAChB,MAAA,IAAI,OAAO,OAAA,KAAY,WAAe,IAAA,OAAA,CAAQ,GAAK,EAAA;AACjD,QAAQ,OAAA,CAAA,GAAA,GAAM,QAAQ,GAAI,CAAA,kBAAA;AAAA;AAC5B;AAEF,IAAA,IAAI,CAAC,OAAQ,CAAA,GAAA,EAAW,MAAA,IAAI,MAAM,gDAAgD,CAAA;AAElF,IAAM,MAAA,EAAE,GAAK,EAAA,IAAA,EAAS,GAAA,OAAA;AACtB,IAAA,IAAA,CAAK,MAAM,SAAsC,CAAA,uBAAA,0BAAA;AACjD,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,CAAC,cAAA,KAAmB,aAAc,CAAA,EAAE,GAAK,EAAA,IAAA,EAAM,GAAG,cAAA,EAAgB,CAAC,CAAA;AACrG,IAAA,OAAO,2BAA2B,GAAG,CAAA;AAAA;AACvC;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,QAAQ,OAAuD,EAAA;AACnE,IAAI,IAAA,CAAC,QAAQ,GAAK,EAAA;AAChB,MAAA,IAAI,OAAO,OAAA,KAAY,WAAe,IAAA,OAAA,CAAQ,GAAK,EAAA;AACjD,QAAQ,OAAA,CAAA,GAAA,GAAM,QAAQ,GAAI,CAAA,kBAAA;AAAA;AAC5B;AAEF,IAAA,IAAI,CAAC,OAAQ,CAAA,GAAA,EAAW,MAAA,IAAI,MAAM,8CAA8C,CAAA;AAEhF,IAAM,MAAA,EAAE,KAAQ,GAAA,OAAA;AAChB,IAAA,IAAA,CAAK,MAAM,SAAsC,CAAA,uBAAA,0BAAA;AACjD,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,CAAC,cAAA,KAAmB,cAAe,CAAA,EAAE,KAAK,GAAG,OAAA,EAAS,GAAG,cAAA,EAAgB,CAAC,CAAA;AAC5G,IAAA,OAAO,4BAA4B,GAAG,CAAA;AAAA;AAE1C,CAAA;;;ACjDa,IAAA,UAAA,GAAN,cAAyB,KAAM,CAAA;AAAA,EACpC,YAAY,OAAiB,EAAA;AAC3B,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAO,GAAA,YAAA;AAAA;AAEhB;;;ACLa,IAAA,eAAA,GAAN,cAA8B,KAAM,CAAA;AAAA,EACzC,YAAY,OAAiB,EAAA;AAC3B,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAO,GAAA,iBAAA;AAAA;AAEhB;;;ACFA,SAAS,uBAAuB,OAAiB,EAAA;AAC7C,EAAO,OAAA,QAAA,CAAsC,OAAO,CAAE,CAAA,iBAAA;AAC1D;;;ACDA,SAAS,aAAc,OAAyB,EAAA;AAC5C,EAAA,OAAO,2JAA2J,OAAO,CAAA,4CAAA,CAAA;AAC3K;;;ACJK,SAAS,gBAAgB,IAAsB,EAAA;AAClD,EAAM,MAAA,SAAA,GAAY,IAAK,CAAA,KAAA,CAAM,GAAG,CAAA;AAChC,EAAA,MAAM,WAAc,GAAA,QAAA,CAAS,SAAU,CAAA,CAAC,CAAC,CAAA;AACzC,EAAM,MAAA,WAAA,GAAe,WAAe,IAAA,CAAA,IAAK,WAAe,IAAA,EAAA;AACxD,EAAA,IAAI,CAAC,WAAa,EAAA;AACf,IAAM,MAAA,IAAI,KAAM,CAAA,qBAAA,GAAwB,WAAW,CAAA;AAAA;AAEtD,EAAA,MAAM,KAAqB,GAAA,WAAA;AAC3B,EAAA,MAAM,OAAO,SAAU,CAAA,CAAC,CAAE,CAAA,KAAA,CAAM,GAAE,CAAC,CAAA;AAEnC,EAAA,OAAO,SAAU,CAAA,CAAC,CAAE,GAAA,YAAA,CAAa,KAAK,CAAI,GAAA,IAAA;AAC9C;;;ACTO,SAAS,sBAAsBE,QAA4C,EAAA;AAC9E,EAAA,MAAM,EAAE,IAAA,EAAM,EAAI,EAAA,IAAA,EAASA,GAAAA,QAAAA;AAC3B,EAAM,MAAA,aAAA,GAAgB,gBAAgB,IAAI,CAAA;AAC1C,EAAA,MAAM,UAAU,CAAM,MAAA,EAAA,IAAI,CAAK,EAAA,EAAA,EAAE,IAAI,aAAa,CAAA,CAAA;AAClD,EAAO,OAAA,OAAA;AACX;;;ACMA,SAAS,gBAAgBA,QAAkC,EAAA;AACvD,EAAA,MAAM,EAAE,aAAA,EAAe,cAAAF,EAAAA,eAAAA,EAAmBE,GAAAA,QAAAA;AAC1C,EAAA,MAAM,IAAO,GAAA,YAAA,CAAa,qBAAsBA,CAAAA,QAAO,CAAC,CAAA;AACxD,EAAA,OAAO,OAAQ,CAAA;AAAA,IACX,IAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAAF,EAAAA,eAAAA;AAAA,IACA,MAAA,EAAA,mBAAA;AAAA,GACH,CAAA;AACL;;;ACjBO,IAAM,WAAN,MAAe;AAAA,EACpB,YAA6B,KAAc,EAAA;AAAd,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAAA;AAAe;AAAA;AAAA;AAAA;AAAA,EAM5C,MAAM,WAAW,OAAgE,EAAA;AAC/E,IAAA,IAAA,CAAK,MAAM,SAAiC,CAAA,mBAAA,qBAAA;AAC5C,IAAA,MAAM,EAAC,IAAA,EAAM,EAAI,EAAA,IAAA,EAAQ,GAAA,OAAA;AACzB,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,CAAC,cAAA,KAAmB,eAAgB,CAAA,EAAE,MAAM,EAAI,EAAA,IAAA,EAAM,GAAG,cAAA,EAAgB,CAAC,CAAA;AAC5G,IAAA,OAAO,uBAAuB,GAAG,CAAA;AAAA;AAErC,CAAA;;;ACNO,IAAM,QAAN,MAAY;AAAA,EAWjB,WAAA,CAA6BE,QAAwB,GAAA,EAAI,EAAA;AAA5B,IAAAA,IAAAA,CAAAA,OAAAA,GAAAA,QAAAA;AAC3B,IAAA,MAAM,UAAa,GAAA,OAAO,OAAY,KAAA,WAAA,IAAe,OAAQ,CAAA,GAAA;AAC7D,IAAI,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,QAAY,IAAA,UAAA;AAC5B,MAAK,IAAA,CAAA,OAAA,CAAQ,WAAW,UAAW,CAAA,cAAA;AACrC,IAAI,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,QAAY,IAAA,UAAA;AAC5B,MAAK,IAAA,CAAA,OAAA,CAAQ,WAAW,UAAW,CAAA,cAAA;AACrC,IAAI,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,YAAgB,IAAA,UAAA;AAChC,MAAK,IAAA,CAAA,OAAA,CAAQ,eAAe,UAAW,CAAA,kBAAA;AACzC,IAAI,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,KAAS,IAAA,UAAA;AACzB,MAAK,IAAA,CAAA,OAAA,CAAQ,QAAQ,UAAW,CAAA,mBAAA;AAElC,IAAI,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,QAAY,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,QAAY,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,YAAc,EAAA;AAClF,MAAI,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,KAAO,EAAA;AACvB,QAAA,MAAM,IAAI,KAAM,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA,aAIV,CAAA,CAAA;AAAA;AACR;AAGF,IAAK,IAAA,CAAA,OAAA,GAAU,IAAI,OAAQ,CAAA;AAAA,MACzB,YAAc,EAAA,SAAA;AAAA,MACd,cAAgB,EAAA,2BAAA;AAAA,MAChB,kBAAoB,EAAA,SAAA;AAAA,MACpB,eAAA,EAAiB,KAAK,OAAQ,CAAA,KAAA,GAAQ,UAAU,IAAK,CAAA,OAAA,CAAQ,KAAK,CAAK,CAAA,GAAA;AAAA,KACxE,CAAA;AACD,IAAA,IAAA,CAAK,cAAiB,GAAA;AAAA,MACpB,cAAA;AAAA,MACA,aAAA,EAAe,IAAK,CAAA,OAAA,CAAQ,KAAS,IAAA;AAAA,KACvC;AAAA;AACF,EAzCiB,OAAA;AAAA,EACA,cAAA;AAAA,EACT,UAAoC,EAAC;AAAA,EACrC,OAAkB,GAAA,EAAA;AAAA,EAEjB,cAAA,GAAiB,IAAI,cAAA,CAAe,IAAI,CAAA;AAAA,EACxC,KAAA,GAAQ,IAAI,KAAA,CAAM,IAAI,CAAA;AAAA,EACtB,UAAA,GAAa,IAAI,UAAA,CAAW,IAAI,CAAA;AAAA,EAChC,QAAA,GAAW,IAAI,QAAA,CAAS,IAAI,CAAA;AAAA,EAmCrC,UAAU,MAAiB,EAAA;AACzB,IAAK,IAAA,CAAA,OAAA,CAAQ,GAAI,CAAA,YAAA,EAAc,MAAM,CAAA;AAAA;AACvC,EACA,iBAAiB,KAAe,EAAA;AAC9B,IAAA,IAAA,CAAK,eAAe,aAAgB,GAAA,KAAA;AACpC,IAAA,IAAA,CAAK,OAAQ,CAAA,GAAA,CAAI,eAAiB,EAAA,CAAA,OAAA,EAAU,KAAK,CAAE,CAAA,CAAA;AAAA;AACrD,EACA,gBAAmB,GAAA;AACjB,IAAA,OAAO,KAAK,cAAe,CAAA,aAAA;AAAA;AAC7B,EACA,cAAiB,GAAA;AACf,IAAA,OAAO,IAAK,CAAA,OAAA;AAAA;AACd,EACA,eAAkB,GAAA;AAChB,IAAA,OAAO,IAAK,CAAA,OAAA;AAAA;AACd,EAEA,MAAM,YAAA,CACJA,QAAoC,GAAA,EACnB,EAAA;AACjB,IAAA,IAAA,CAAK,OAAUA,GAAAA,QAAAA;AACf,IAAI,IAAA;AACF,MAAA,MAAM,QAAW,GAAA,MAAM,KAAM,CAAA,OAAA,EAASA,QAAO,CAAA;AAC7C,MAAM,MAAA,GAAA,GAAM,MAAM,QAAA,CAAS,IAAK,EAAA;AAEhC,MAAI,IAAA,CAAC,SAAS,EAAI,EAAA;AAChB,QAAA,MAAM,KAAQ,GAAA,YAAA,CAAa,GAAK,EAAA,eAAA,EAAiB,kBAAkB,KAAK,CAAA;AACxE,QAAM,MAAA,IAAI,WAAW,KAAK,CAAA;AAAA;AAE5B,MAAA,MAAM,IAAO,GAAA,YAAA,CAAa,GAAK,EAAA,iBAAA,EAAmB,oBAAoB,KAAK,CAAA;AAC3E,MAAA,MAAM,KAAQ,GAAA,YAAA,CAAa,IAAM,EAAA,aAAA,EAAe,gBAAgB,KAAK,CAAA;AACrE,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,MAAM,OAAU,GAAA,YAAA,CAAa,KAAO,EAAA,eAAA,EAAiB,kBAAkB,KAAK,CAAA;AAC5E,QAAM,MAAA,IAAI,gBAAgB,OAAO,CAAA;AAAA;AAEnC,MAAA,MAAM,MAAS,GAAA,IAAA,CAAK,OAAQ,CAAA,GAAA,CAAI,YAAY,CAAA;AAG5C,MAAA,IAAI,qDAAuC,MAAmC,KAAA,eAAA,qBAAA;AAC5E,QAAA,MAAM,KAAQ,GAAA,YAAA,CAAa,GAAK,EAAA,gFAAA,EAAkF,+BAA+B,KAAK,CAAA;AACtJ,QAAA,IAAA,CAAK,iBAAiB,KAAK,CAAA;AAAA,iBAClB,MAAoC,KAAA,gBAAA,sBAAA;AAC7C,QAAA,IAAA,CAAK,eAAe,aAAgB,GAAA,EAAA;AACpC,QAAK,IAAA,CAAA,OAAA,CAAQ,OAAO,eAAe,CAAA;AAAA;AAErC,MAAA,IAAA,CAAK,OAAU,GAAA,IAAA;AACf,MAAO,OAAA,IAAA;AAAA,aACA,KAAO,EAAA;AACd,MAAI,IAAA,KAAA,YAAiB,UAAc,IAAA,KAAA,YAAiB,eAAiB,EAAA;AACnE,QAAM,MAAA,KAAA;AAAA;AAER,MAAA,MAAM,KAAiB,YAAA,KAAA,GACnB,KACA,GAAA,IAAI,MAAM,eAAe,CAAA;AAAA;AAC/B;AACF,EAEA,MAAM,IAAA,CAAK,cAA4DA,EAAAA,QAAAA,GAAuB,EAAqB,EAAA;AACjH,IAAA,IAAI,CAAC,IAAK,CAAA,cAAA,CAAe,eAAqB,MAAA,IAAI,MAAM,4DAA4D,CAAA;AACpH,IAAA,MAAM,cAAiB,GAAA;AAAA,MACrB,MAAQ,EAAA,MAAA;AAAA,MACR,SAAS,IAAK,CAAA,OAAA;AAAA,MACd,IAAA,EAAM,cAAe,CAAA,IAAA,CAAK,cAAc,CAAA;AAAA,MACxC,GAAGA;AAAA,KACL;AAEA,IAAO,OAAA,IAAA,CAAK,aAAa,cAAc,CAAA;AAAA;AACzC,EAEA,MAAM,IAAA,CAAK,cAA0DA,EAAAA,QAAAA,GAAuB,EAAqB,EAAA;AAC/G,IAAI,IAAA,CAAC,IAAK,CAAA,OAAA,CAAQ,QAAY,IAAA,CAAC,KAAK,OAAQ,CAAA,QAAA,IAAY,CAAC,IAAA,CAAK,OAAQ,CAAA,YAAA;AACpE,MAAA,MAAM,IAAI,KAAM,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA,WAIV,CAAA,CAAA;AAER,IAAA,MAAM,cAAiB,GAAA;AAAA,MACrB,MAAQ,EAAA,MAAA;AAAA,MACR,SAAS,IAAK,CAAA,OAAA;AAAA,MACd,MAAM,cAAe,CAAA;AAAA,QACnB,cAAA;AAAA,QACA,aAAe,EAAA;AAAA,UACb,QAAA,EAAU,KAAK,OAAQ,CAAA,QAAA;AAAA,UACvB,QAAA,EAAU,KAAK,OAAQ,CAAA,QAAA;AAAA,UACvB,GAAA,EAAK,KAAK,OAAQ,CAAA,YAAA;AAAA,UAClB;AAAA;AACF,OACD,CAAA;AAAA,MACD,GAAGA;AAAA,KACL;AAEA,IAAO,OAAA,IAAA,CAAK,aAAa,cAAc,CAAA;AAAA;AAE3C","file":"index.js","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.1\",\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-list\": \"node --env-file=.env --import=tsx examples/queue-access-list.ts\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.39.2\",\n \"@types/jest\": \"^30.0.0\",\n \"@types/node\": \"^25.2.0\",\n \"eslint\": \"^9.39.2\",\n \"globals\": \"^17.3.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.54.0\"\n },\n \"dependencies\": {\n \"fast-xml-parser\": \"^5.3.4\"\n }\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): 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 : 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): Date | null {\n for (const pattern of DEADLINE_PATTERNS) {\n const m = full.match(pattern)\n if (m) return parseSabreDate(m[1])\n }\n return null\n}\n\nfunction classifyParagraph(text: string[]): BookingClassify {\n const full = text.join('\\n')\n\n const isTicketed =\n text.some(line => line.trim() === 'INVOICED') ||\n /\\bTKTED\\b/i.test(full)\n\n const statusPattern = /\\b(HK|HX|KK|GK|UC|UN|WK|WL|TK|SC|PN)\\d+/g\n const flightStatuses = [...full.matchAll(statusPattern)].map(m => m[1])\n const allCancelled =\n flightStatuses.length > 0 && flightStatuses.every(s => s === 'HX')\n\n const ticketingDeadline = extractTicketingDeadline(full)\n const deadlineExpired = ticketingDeadline ? ticketingDeadline < new Date() : false\n\n const action: 'place' | 'remove' =\n !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 lines = Array.isArray(payload.text) ? payload.text : [payload.text]\n\n if (lines[0] === 'END OF DISPLAY FOR REQUESTED DATA'){\n throw new Error('End of display.')\n }\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 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)\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 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.IGNORE);\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}"]}
|