sabre-client 0.4.1 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.es.md +226 -21
- package/README.md +226 -21
- package/dist/anonymize.d.ts +54 -0
- package/dist/anonymize.js +111 -0
- package/dist/anonymize.js.map +1 -0
- package/dist/index.d.ts +2726 -693
- package/dist/index.js +497 -115
- package/dist/index.js.map +1 -1
- package/dist/reservation-history-BKRFlxpA.d.ts +792 -0
- package/dist/testing.d.ts +84 -7
- package/dist/testing.js +475 -57
- package/dist/testing.js.map +1 -1
- package/package.json +5 -1
- package/dist/queue-ref-BDGh8FrV.d.ts +0 -11
package/dist/testing.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Q as QueueRef } from './
|
|
1
|
+
import { Q as QueueRef, a as QueueActivityCounters, R as ReservationHistoryTransaction, b as ReservationHistoryFlightSegment, c as ReservationHistoryText, d as ReservationHistoryAccounting } from './reservation-history-BKRFlxpA.js';
|
|
2
|
+
export { Anonymizer, AnonymizerLeak, AnonymizerOptions, createAnonymizer, isSafeHostLine } from './anonymize.js';
|
|
2
3
|
|
|
3
4
|
/** Un PNR del fake, con los campos que Sabre manda en `Line`. */
|
|
4
5
|
interface QueueFakePnr {
|
|
@@ -20,32 +21,70 @@ interface QueueFakePnr {
|
|
|
20
21
|
/** `Line/PassengerName`. Solo llega en `list` con `primaryPassenger: true`. */
|
|
21
22
|
primaryPassenger?: string;
|
|
22
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Los contadores de `queue.activity` que se siembran para una cola. `numMessages` no va: sale
|
|
26
|
+
* siempre de lo que hay en la cola del fake.
|
|
27
|
+
*/
|
|
28
|
+
type QueueFakeActivity = Partial<Omit<QueueActivityCounters, 'numMessages'>>;
|
|
29
|
+
/**
|
|
30
|
+
* Una transacción del historial de un PNR, como la devuelve `reservation.history`. Las listas que
|
|
31
|
+
* falten van vacías.
|
|
32
|
+
*/
|
|
33
|
+
type QueueFakeHistoryTransaction = Omit<ReservationHistoryTransaction, 'flightSegments' | 'generalInfo' | 'remarks' | 'accounting'> & {
|
|
34
|
+
flightSegments?: readonly ReservationHistoryFlightSegment[];
|
|
35
|
+
generalInfo?: readonly ReservationHistoryText[];
|
|
36
|
+
remarks?: readonly ReservationHistoryText[];
|
|
37
|
+
accounting?: readonly ReservationHistoryAccounting[];
|
|
38
|
+
};
|
|
23
39
|
/** Un PNR: sus campos, o solo el párrafo. Con solo el párrafo, el localizador sale de la línea de firma. */
|
|
24
40
|
type QueueFakeItem = QueueFakePnr | readonly string[];
|
|
25
41
|
interface QueueFakeOptions {
|
|
26
42
|
/**
|
|
27
|
-
* El contenido de cada cola, en orden. La clave es el número de cola (`'12'`, de 0 a 511)
|
|
28
|
-
*
|
|
29
|
-
*
|
|
43
|
+
* El contenido de cada cola, en orden. La clave es el número de cola (`'12'`, de 0 a 511), una
|
|
44
|
+
* cola alfabética (`'S'`, una o dos letras mayúsculas) o una cola con nombre (`'name:HOTELS'`, o
|
|
45
|
+
* `'HOTELS'` sin el prefijo). La alfabética y la con nombre viajan por atributos distintos
|
|
46
|
+
* (`Number` y `Name`, ADR-028). El fake no distingue PCC: las colas son las mismas para cualquier
|
|
47
|
+
* `pcc`.
|
|
48
|
+
*
|
|
49
|
+
* La `'S'` es la cola de mensajes: cada elemento es el texto de un mensaje (`string[]`), no un
|
|
50
|
+
* PNR. `access` lo muestra sin `Line`, como Sabre en CERT, e `ignore` lo deja en la cola. Que
|
|
51
|
+
* `remove` lo saque es un supuesto del fake: no se probó con Sabre.
|
|
30
52
|
*/
|
|
31
53
|
queues?: Readonly<Record<string, readonly QueueFakeItem[]>>;
|
|
32
54
|
/** PNR que no están en ninguna cola, para colocarlos con `place({ locators })`. */
|
|
33
55
|
pnrs?: readonly QueueFakeItem[];
|
|
56
|
+
/**
|
|
57
|
+
* Los contadores de `queue.activity` por cola, con las mismas claves que `queues`. `numMessages`
|
|
58
|
+
* sale del estado del fake, como en `count`: sin el PNR en pantalla (CERT, #167). Los demás valen
|
|
59
|
+
* lo que se siembre aquí, o 0. Las acciones del fake (`ignore`, `remove`, `place`, `exit`) **no**
|
|
60
|
+
* los cambian: no se probó qué contador sube Sabre con cada una (Q-097).
|
|
61
|
+
*/
|
|
62
|
+
activity?: Readonly<Record<string, QueueFakeActivity>>;
|
|
63
|
+
/**
|
|
64
|
+
* El historial de cada PNR para `reservation.history`, por localizador. Un PNR que el fake
|
|
65
|
+
* conoce y no está aquí devuelve una transacción sintética (la creación). Un localizador que
|
|
66
|
+
* el fake no conoce da un error de host marcado como no simulado.
|
|
67
|
+
*/
|
|
68
|
+
histories?: Readonly<Record<string, readonly QueueFakeHistoryTransaction[]>>;
|
|
34
69
|
/** Reloj de las fechas de `count` y de `place`. Por defecto, `new Date()`. Las fechas van en UTC. */
|
|
35
70
|
now?: () => Date;
|
|
36
71
|
}
|
|
37
72
|
/** Qué le pidió el SDK al fake. */
|
|
38
|
-
type QueueFakeCommand = 'open' | 'close' | 'ping' | 'count' | 'access' | 'list' | 'ignore' | 'remove' | 'exit' | 'place';
|
|
73
|
+
type QueueFakeCommand = 'open' | 'close' | 'ping' | 'count' | 'access' | 'list' | 'ignore' | 'remove' | 'exit' | 'place' | 'activity' | 'history';
|
|
39
74
|
interface QueueFakeCall {
|
|
40
75
|
command: QueueFakeCommand;
|
|
41
76
|
/** La cola de `access` y `list`. */
|
|
42
77
|
queue?: QueueRef;
|
|
78
|
+
/** El localizador de `history`. */
|
|
79
|
+
locator?: string;
|
|
43
80
|
}
|
|
44
81
|
interface QueueFake {
|
|
45
82
|
/** Se pasa como `config.fetch` de `SabreLegacy`. */
|
|
46
83
|
readonly fetch: typeof fetch;
|
|
47
84
|
/** Los localizadores de una cola, en orden, con lo que el recorrido haya sacado o colocado. */
|
|
48
85
|
locators(queue: QueueRef): string[];
|
|
86
|
+
/** El texto de los mensajes que siguen en la cola `S`, en orden. */
|
|
87
|
+
messages(): string[][];
|
|
49
88
|
/** Las llamadas recibidas, en orden. */
|
|
50
89
|
readonly calls: readonly QueueFakeCall[];
|
|
51
90
|
/** Cuántas sesiones siguen abiertas: sirve para comprobar que el consumidor las cierra. */
|
|
@@ -73,13 +112,21 @@ interface RecordedFixture {
|
|
|
73
112
|
responses: readonly RecordedResponse[];
|
|
74
113
|
}
|
|
75
114
|
/**
|
|
76
|
-
* Las corridas de producción del Tier 3
|
|
115
|
+
* Las corridas de producción del Tier 3. Cada una usa sus propios alias de localizador, así que
|
|
116
|
+
* se pueden juntar en un fake con `queueFakePnrs` sin que choquen:
|
|
117
|
+
* - `walk`: `AAAAAA`–`AAAAAD`; `place`: `AAAAAE`–`AAAAAF`;
|
|
118
|
+
* `placeWithoutInstructionCodeInside`: `AAAAAG`–`AAAAAH`.
|
|
119
|
+
*
|
|
120
|
+
* Qué trae cada una:
|
|
77
121
|
* - `walk`: `count`, `list`, `access` y `ignore` sobre una cola de 4 PNR hasta el fin de cola,
|
|
78
122
|
* más `I` y `QXI` fuera de una cola;
|
|
79
123
|
* - `emptyQueue`: `access` y `list` sobre una cola vacía (`QUEUE SELECTED WAS EMPTY`);
|
|
80
124
|
* - `place`: `place` fuera y dentro de una cola, y `remove` hasta el fin de cola;
|
|
81
125
|
* - `placeWithoutInstructionCode` y `placeWithoutInstructionCodeInside`: `place` sin PIC, fuera
|
|
82
126
|
* (`INSTRUCTION NUMBER NOT IN RANGE`) y dentro de una cola (`NEED INSTRUCTION NUMBER`).
|
|
127
|
+
*
|
|
128
|
+
* El `list` de `walk` se grabó sin `primaryPassenger: true` (sin `/LN`), así que ningún `Line`
|
|
129
|
+
* trae `PassengerName` (#193).
|
|
83
130
|
*/
|
|
84
131
|
declare const queueFixtures: Readonly<{
|
|
85
132
|
walk: RecordedFixture;
|
|
@@ -89,4 +136,34 @@ declare const queueFixtures: Readonly<{
|
|
|
89
136
|
placeWithoutInstructionCodeInside: RecordedFixture;
|
|
90
137
|
}>;
|
|
91
138
|
|
|
92
|
-
|
|
139
|
+
/**
|
|
140
|
+
* Los PNR de una corrida grabada, listos para `createQueueFake`: primero los de `queue.list`, en
|
|
141
|
+
* su orden, y después los que aparecen en las demás respuestas de cola (`access`, `ignore`,
|
|
142
|
+
* `remove`, `place`), en el orden en que aparecen. Cada localizador sale una sola vez.
|
|
143
|
+
*
|
|
144
|
+
* - `placedAt`, `placedBy` y `primaryPassenger` salen del `Line` de `list`. Si el PNR no está en la
|
|
145
|
+
* lista, salen del `Line` del primer `access`, `ignore` o `remove` que lo trae (ahí `placedAt` es
|
|
146
|
+
* la última modificación del PNR, no su colocación en la cola).
|
|
147
|
+
* - `primaryPassenger` solo sale si el `Line` trae `PassengerName`, y Sabre solo lo manda en un
|
|
148
|
+
* `list` con `primaryPassenger: true` (`/LN`). Las fixtures de `queueFixtures` se grabaron sin
|
|
149
|
+
* `/LN`, así que sus PNR van sin pasajero. Si el consumidor necesita uno, lo agrega con un
|
|
150
|
+
* `map`; el helper no inventa datos que la grabación no tiene (#193).
|
|
151
|
+
* - `paragraph` es el del primer `access`, `ignore`, `remove` o `place` que muestra el PNR, tal
|
|
152
|
+
* cual. El localizador del párrafo sale del `Line`, o de la línea de firma si no hay `Line`
|
|
153
|
+
* (`place` dentro de una cola).
|
|
154
|
+
* - Un PNR que solo aparece como colocado (`place` fuera de una cola) va sin párrafo, y el fake le
|
|
155
|
+
* agrega una línea de firma.
|
|
156
|
+
*
|
|
157
|
+
* La cola en la que van los decide quien lo usa:
|
|
158
|
+
*
|
|
159
|
+
* ```ts
|
|
160
|
+
* createQueueFake({ queues: { '9': queueFakePnrs(queueFixtures.walk) } })
|
|
161
|
+
* ```
|
|
162
|
+
*
|
|
163
|
+
* Las fixtures de `queueFixtures` usan alias distintos (`walk`: `AAAAAA`–`AAAAAD`, `place`:
|
|
164
|
+
* `AAAAAE`–`AAAAAF`, `placeWithoutInstructionCodeInside`: `AAAAAG`–`AAAAAH`), así que los PNR de
|
|
165
|
+
* varias se pueden juntar en un mismo fake.
|
|
166
|
+
*/
|
|
167
|
+
declare function queueFakePnrs(fixture: RecordedFixture): QueueFakePnr[];
|
|
168
|
+
|
|
169
|
+
export { type QueueFake, type QueueFakeActivity, type QueueFakeCall, type QueueFakeCommand, type QueueFakeHistoryTransaction, type QueueFakeItem, type QueueFakeOptions, type QueueFakePnr, type RecordedFixture, type RecordedResponse, createQueueFake, queueFakePnrs, queueFixtures };
|