sabre-client 0.3.0-next.0 → 0.3.0-next.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.
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Una cola: su número, de 0 a 511, o su nombre (colas alfabéticas de las tablas QN y QNB, p. ej.
3
+ * `{ name: 'S' }`). Lo que devuelve `queue.count` se pasa tal cual a las demás operaciones.
4
+ *
5
+ * Las colas 0–49 son del sistema: el SDK no las restringe.
6
+ */
7
+ type QueueRef = number | {
8
+ name: string;
9
+ };
10
+
11
+ export type { QueueRef as Q };
@@ -0,0 +1,92 @@
1
+ import { Q as QueueRef } from './queue-ref-BDGh8FrV.js';
2
+
3
+ /** Un PNR del fake, con los campos que Sabre manda en `Line`. */
4
+ interface QueueFakePnr {
5
+ /** Localizador de 6 caracteres alfanuméricos. */
6
+ locator: string;
7
+ /**
8
+ * Las líneas del PNR en formato de host, como el `Paragraph` de Access Queue. Si no termina en
9
+ * una línea de firma (`… HHMM/DDMMMYY <localizador> H`), el fake agrega una: `place` dentro de
10
+ * una cola saca el localizador de ahí, igual que con Sabre.
11
+ */
12
+ paragraph?: readonly string[];
13
+ /** `Line/DateTime`, tal cual. */
14
+ placedAt?: string;
15
+ /** `Line/POS/Source`. */
16
+ placedBy?: {
17
+ agentSine?: string;
18
+ pseudoCityCode?: string;
19
+ };
20
+ /** `Line/PassengerName`. Solo llega en `list` con `primaryPassenger: true`. */
21
+ primaryPassenger?: string;
22
+ }
23
+ /** Un PNR: sus campos, o solo el párrafo. Con solo el párrafo, el localizador sale de la línea de firma. */
24
+ type QueueFakeItem = QueueFakePnr | readonly string[];
25
+ interface QueueFakeOptions {
26
+ /**
27
+ * El contenido de cada cola, en orden. La clave es el número de cola (`'12'`, de 0 a 511) o el
28
+ * nombre de una cola alfabética (`'S'`). El fake no distingue PCC: las colas son las mismas para
29
+ * cualquier `pcc`.
30
+ */
31
+ queues?: Readonly<Record<string, readonly QueueFakeItem[]>>;
32
+ /** PNR que no están en ninguna cola, para colocarlos con `place({ locators })`. */
33
+ pnrs?: readonly QueueFakeItem[];
34
+ /** Reloj de las fechas de `count` y de `place`. Por defecto, `new Date()`. Las fechas van en UTC. */
35
+ now?: () => Date;
36
+ }
37
+ /** Qué le pidió el SDK al fake. */
38
+ type QueueFakeCommand = 'open' | 'close' | 'ping' | 'count' | 'access' | 'list' | 'ignore' | 'remove' | 'exit' | 'place';
39
+ interface QueueFakeCall {
40
+ command: QueueFakeCommand;
41
+ /** La cola de `access` y `list`. */
42
+ queue?: QueueRef;
43
+ }
44
+ interface QueueFake {
45
+ /** Se pasa como `config.fetch` de `SabreLegacy`. */
46
+ readonly fetch: typeof fetch;
47
+ /** Los localizadores de una cola, en orden, con lo que el recorrido haya sacado o colocado. */
48
+ locators(queue: QueueRef): string[];
49
+ /** Las llamadas recibidas, en orden. */
50
+ readonly calls: readonly QueueFakeCall[];
51
+ /** Cuántas sesiones siguen abiertas: sirve para comprobar que el consumidor las cierra. */
52
+ readonly openSessions: number;
53
+ /**
54
+ * Vence todas las sesiones abiertas. La siguiente llamada de cada una recibe el fault de una
55
+ * sesión vencida (`USG_INVALID_SECURITY_TOKEN`), y el SDK la convierte en `SabreSessionError`
56
+ * con `kind: 'expired'`.
57
+ */
58
+ expireSessions(): void;
59
+ }
60
+ declare function createQueueFake(options?: QueueFakeOptions): QueueFake;
61
+
62
+ /** Una respuesta grabada: la operación del SDK, el HTTP status y el sobre SOAP tal cual llegó. */
63
+ interface RecordedResponse {
64
+ /** `operation` de `onRawResponse` (`'openSession'`, `'queue.access'`…) o `probe.*` si el script la mandó crudo. */
65
+ operation: string;
66
+ status: number;
67
+ body: string;
68
+ }
69
+ /** Una corrida grabada: sus respuestas en el orden en que llegaron. */
70
+ interface RecordedFixture {
71
+ /** Fecha de la corrida, `YYYY-MM-DD` en UTC. */
72
+ recordedAt: string;
73
+ responses: readonly RecordedResponse[];
74
+ }
75
+ /**
76
+ * Las corridas de producción del Tier 3:
77
+ * - `walk`: `count`, `list`, `access` y `ignore` sobre una cola de 4 PNR hasta el fin de cola,
78
+ * más `I` y `QXI` fuera de una cola;
79
+ * - `emptyQueue`: `access` y `list` sobre una cola vacía (`QUEUE SELECTED WAS EMPTY`);
80
+ * - `place`: `place` fuera y dentro de una cola, y `remove` hasta el fin de cola;
81
+ * - `placeWithoutInstructionCode` y `placeWithoutInstructionCodeInside`: `place` sin PIC, fuera
82
+ * (`INSTRUCTION NUMBER NOT IN RANGE`) y dentro de una cola (`NEED INSTRUCTION NUMBER`).
83
+ */
84
+ declare const queueFixtures: Readonly<{
85
+ walk: RecordedFixture;
86
+ emptyQueue: RecordedFixture;
87
+ place: RecordedFixture;
88
+ placeWithoutInstructionCode: RecordedFixture;
89
+ placeWithoutInstructionCodeInside: RecordedFixture;
90
+ }>;
91
+
92
+ export { type QueueFake, type QueueFakeCall, type QueueFakeCommand, type QueueFakeItem, type QueueFakeOptions, type QueueFakePnr, type RecordedFixture, type RecordedResponse, createQueueFake, queueFixtures };