@voyantjs/bookings 0.25.0 → 0.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/pii.d.ts CHANGED
@@ -5,11 +5,37 @@ export interface UpsertBookingTravelerTravelDetailInput {
5
5
  nationality?: string | null;
6
6
  passportNumber?: string | null;
7
7
  passportExpiry?: string | null;
8
+ passportIssuingCountry?: string | null;
9
+ passportIssuingAuthority?: string | null;
10
+ /** Provenance of the snapshot (id of the `crm.person_documents` row that seeded it). */
11
+ passportPersonDocumentId?: string | null;
8
12
  dateOfBirth?: string | null;
9
13
  dietaryRequirements?: string | null;
10
14
  accessibilityNeeds?: string | null;
11
15
  isLeadTraveler?: boolean | null;
12
16
  }
17
+ /**
18
+ * Plaintext fields a booking-traveler can pre-fill from the
19
+ * traveler's `crm.people` record on creation. Mirrors
20
+ * `PersonTravelSnapshot` in `@voyantjs/crm` so the two stay in sync.
21
+ */
22
+ export interface BookingTravelerSnapshot {
23
+ dateOfBirth?: string | null;
24
+ dietaryRequirements?: string | null;
25
+ accessibilityNeeds?: string | null;
26
+ passportNumber?: string | null;
27
+ passportExpiry?: string | null;
28
+ passportIssuingCountry?: string | null;
29
+ passportIssuingAuthority?: string | null;
30
+ passportPersonDocumentId?: string | null;
31
+ }
32
+ /**
33
+ * Apply a person-derived snapshot to a booking-traveler input,
34
+ * preserving the snapshot semantic: explicit input always wins,
35
+ * snapshot only fills the gaps. Pure (no I/O) so callers can compose
36
+ * it freely.
37
+ */
38
+ export declare function applyTravelDetailSnapshot(input: UpsertBookingTravelerTravelDetailInput, snapshot: BookingTravelerSnapshot | null | undefined): UpsertBookingTravelerTravelDetailInput;
13
39
  export interface BookingPiiAuditEvent {
14
40
  action: "encrypt" | "decrypt" | "delete";
15
41
  travelerId: string;
package/dist/pii.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pii.d.ts","sourceRoot":"","sources":["../src/pii.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAG1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAKL,KAAK,oCAAoC,EAC1C,MAAM,4BAA4B,CAAA;AAGnC,MAAM,WAAW,sCAAsC;IACrD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,cAAc,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CAChC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,WAAW,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChE;AAED,MAAM,WAAW,iBAAiB;IAChC,wBAAwB,CACtB,EAAE,EAAE,kBAAkB,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,oCAAoC,GAAG,IAAI,CAAC,CAAA;IACvD,2BAA2B,CACzB,EAAE,EAAE,kBAAkB,EACtB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,sCAAsC,EAC7C,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,oCAAoC,GAAG,IAAI,CAAC,CAAA;IACvD,2BAA2B,CACzB,EAAE,EAAE,kBAAkB,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;CAC1C;AA4HD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,iBAAiB,CAqI5F"}
1
+ {"version":3,"file":"pii.d.ts","sourceRoot":"","sources":["../src/pii.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAG1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAKL,KAAK,oCAAoC,EAC1C,MAAM,4BAA4B,CAAA;AAGnC,MAAM,WAAW,sCAAsC;IACrD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,wFAAwF;IACxF,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,cAAc,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACzC;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,sCAAsC,EAC7C,QAAQ,EAAE,uBAAuB,GAAG,IAAI,GAAG,SAAS,GACnD,sCAAsC,CAkBxC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,WAAW,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChE;AAED,MAAM,WAAW,iBAAiB;IAChC,wBAAwB,CACtB,EAAE,EAAE,kBAAkB,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,oCAAoC,GAAG,IAAI,CAAC,CAAA;IACvD,2BAA2B,CACzB,EAAE,EAAE,kBAAkB,EACtB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,sCAAsC,EAC7C,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,oCAAoC,GAAG,IAAI,CAAC,CAAA;IACvD,2BAA2B,CACzB,EAAE,EAAE,kBAAkB,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;CAC1C;AA+ID,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,iBAAiB,CA0I5F"}
package/dist/pii.js CHANGED
@@ -2,16 +2,46 @@ import { decryptOptionalJsonEnvelope, encryptOptionalJsonEnvelope } from "@voyan
2
2
  import { eq } from "drizzle-orm";
3
3
  import { bookingTravelerAccessibilitySchema, bookingTravelerDietarySchema, bookingTravelerIdentitySchema, bookingTravelerTravelDetails, } from "./schema/travel-details.js";
4
4
  import { bookingTravelers } from "./schema.js";
5
+ /**
6
+ * Apply a person-derived snapshot to a booking-traveler input,
7
+ * preserving the snapshot semantic: explicit input always wins,
8
+ * snapshot only fills the gaps. Pure (no I/O) so callers can compose
9
+ * it freely.
10
+ */
11
+ export function applyTravelDetailSnapshot(input, snapshot) {
12
+ if (!snapshot)
13
+ return input;
14
+ const merged = { ...input };
15
+ for (const key of [
16
+ "dateOfBirth",
17
+ "dietaryRequirements",
18
+ "accessibilityNeeds",
19
+ "passportNumber",
20
+ "passportExpiry",
21
+ "passportIssuingCountry",
22
+ "passportIssuingAuthority",
23
+ "passportPersonDocumentId",
24
+ ]) {
25
+ if (merged[key] === undefined && snapshot[key] != null) {
26
+ merged[key] = snapshot[key];
27
+ }
28
+ }
29
+ return merged;
30
+ }
5
31
  function buildIdentityPayload(input) {
6
32
  const payload = bookingTravelerIdentitySchema.parse({
7
33
  nationality: input.nationality ?? null,
8
34
  passportNumber: input.passportNumber ?? null,
9
35
  passportExpiry: input.passportExpiry ?? null,
36
+ passportIssuingCountry: input.passportIssuingCountry ?? null,
37
+ passportIssuingAuthority: input.passportIssuingAuthority ?? null,
10
38
  dateOfBirth: input.dateOfBirth ?? null,
11
39
  });
12
40
  if (!payload.nationality &&
13
41
  !payload.passportNumber &&
14
42
  !payload.passportExpiry &&
43
+ !payload.passportIssuingCountry &&
44
+ !payload.passportIssuingAuthority &&
15
45
  !payload.dateOfBirth) {
16
46
  return null;
17
47
  }
@@ -51,6 +81,9 @@ async function loadExistingTravelDetails(db, travelerId, options, keyRef) {
51
81
  nationality: identity?.nationality ?? null,
52
82
  passportNumber: identity?.passportNumber ?? null,
53
83
  passportExpiry: identity?.passportExpiry ?? null,
84
+ passportIssuingCountry: identity?.passportIssuingCountry ?? null,
85
+ passportIssuingAuthority: identity?.passportIssuingAuthority ?? null,
86
+ passportPersonDocumentId: row.passportPersonDocumentId ?? null,
54
87
  dateOfBirth: identity?.dateOfBirth ?? null,
55
88
  dietaryRequirements: dietary?.dietaryRequirements ?? null,
56
89
  accessibilityNeeds: accessibility?.accessibilityNeeds ?? null,
@@ -66,6 +99,15 @@ function mergeTravelDetailInput(existing, input) {
66
99
  passportExpiry: input.passportExpiry === undefined
67
100
  ? (existing?.passportExpiry ?? null)
68
101
  : input.passportExpiry,
102
+ passportIssuingCountry: input.passportIssuingCountry === undefined
103
+ ? (existing?.passportIssuingCountry ?? null)
104
+ : input.passportIssuingCountry,
105
+ passportIssuingAuthority: input.passportIssuingAuthority === undefined
106
+ ? (existing?.passportIssuingAuthority ?? null)
107
+ : input.passportIssuingAuthority,
108
+ passportPersonDocumentId: input.passportPersonDocumentId === undefined
109
+ ? (existing?.passportPersonDocumentId ?? null)
110
+ : input.passportPersonDocumentId,
69
111
  dateOfBirth: input.dateOfBirth === undefined ? (existing?.dateOfBirth ?? null) : input.dateOfBirth,
70
112
  dietaryRequirements: input.dietaryRequirements === undefined
71
113
  ? (existing?.dietaryRequirements ?? null)
@@ -99,6 +141,9 @@ export function createBookingPiiService(options) {
99
141
  nationality: identity?.nationality ?? null,
100
142
  passportNumber: identity?.passportNumber ?? null,
101
143
  passportExpiry: identity?.passportExpiry ?? null,
144
+ passportIssuingCountry: identity?.passportIssuingCountry ?? null,
145
+ passportIssuingAuthority: identity?.passportIssuingAuthority ?? null,
146
+ passportPersonDocumentId: row.passportPersonDocumentId ?? null,
102
147
  dateOfBirth: identity?.dateOfBirth ?? null,
103
148
  dietaryRequirements: dietary?.dietaryRequirements ?? null,
104
149
  accessibilityNeeds: accessibility?.accessibilityNeeds ?? null,
@@ -129,6 +174,7 @@ export function createBookingPiiService(options) {
129
174
  identityEncrypted,
130
175
  dietaryEncrypted,
131
176
  accessibilityEncrypted,
177
+ passportPersonDocumentId: mergedInput.passportPersonDocumentId ?? null,
132
178
  isLeadTraveler: mergedInput.isLeadTraveler ?? false,
133
179
  updatedAt: now,
134
180
  })
@@ -138,6 +184,7 @@ export function createBookingPiiService(options) {
138
184
  identityEncrypted,
139
185
  dietaryEncrypted,
140
186
  accessibilityEncrypted,
187
+ passportPersonDocumentId: mergedInput.passportPersonDocumentId ?? null,
141
188
  isLeadTraveler: mergedInput.isLeadTraveler ?? false,
142
189
  updatedAt: now,
143
190
  },
@@ -1,8 +1,23 @@
1
1
  import { type KmsProvider } from "@voyantjs/utils";
2
+ import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
3
+ import type { BookingTravelerSnapshot } from "./pii.js";
2
4
  import type { KmsBindings } from "./routes-shared.js";
3
5
  export declare const BOOKING_ROUTE_RUNTIME_CONTAINER_KEY = "runtime.bookings.routes";
6
+ /**
7
+ * Resolver invoked by the booking-traveler "with travel details"
8
+ * route when `data.personId` is provided. Returns a plaintext
9
+ * snapshot of the linked person's dietary / accessibility / primary
10
+ * passport values, decrypted server-side via the same KMS provider
11
+ * the route already resolved. Templates wire this from
12
+ * `crmService.loadPersonTravelSnapshot` so the bookings package
13
+ * stays free of any direct CRM dependency.
14
+ */
15
+ export type ResolveBookingTravelSnapshot = (db: PostgresJsDatabase, personId: string, ctx: {
16
+ kms: KmsProvider;
17
+ }) => Promise<BookingTravelerSnapshot | null>;
4
18
  export interface BookingRouteRuntime {
5
19
  getKmsProvider(): Promise<KmsProvider>;
20
+ resolveTravelSnapshot?: ResolveBookingTravelSnapshot;
6
21
  }
7
22
  /**
8
23
  * Hook for apps that source their KMS key material from somewhere other than
@@ -14,6 +29,7 @@ export interface BookingRouteRuntime {
14
29
  export type ResolveBookingKmsProvider = (env: Record<string, string | undefined>) => KmsProvider | Promise<KmsProvider>;
15
30
  export interface BookingRouteRuntimeOptions {
16
31
  resolveKmsProvider?: ResolveBookingKmsProvider;
32
+ resolveTravelSnapshot?: ResolveBookingTravelSnapshot;
17
33
  }
18
34
  export declare function buildBookingRouteRuntime(bindings: KmsBindings, options?: BookingRouteRuntimeOptions): BookingRouteRuntime;
19
35
  //# sourceMappingURL=route-runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route-runtime.d.ts","sourceRoot":"","sources":["../src/route-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAErD,eAAO,MAAM,mCAAmC,4BAA4B,CAAA;AAE5E,MAAM,WAAW,mBAAmB;IAClC,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;CACvC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,yBAAyB,GAAG,CACtC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KACpC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;AAEvC,MAAM,WAAW,0BAA0B;IACzC,kBAAkB,CAAC,EAAE,yBAAyB,CAAA;CAC/C;AAgBD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,WAAW,EACrB,OAAO,GAAE,0BAA+B,GACvC,mBAAmB,CAWrB"}
1
+ {"version":3,"file":"route-runtime.d.ts","sourceRoot":"","sources":["../src/route-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAEjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAErD,eAAO,MAAM,mCAAmC,4BAA4B,CAAA;AAE5E;;;;;;;;GAQG;AACH,MAAM,MAAM,4BAA4B,GAAG,CACzC,EAAE,EAAE,kBAAkB,EACtB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE;IAAE,GAAG,EAAE,WAAW,CAAA;CAAE,KACtB,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAA;AAE5C,MAAM,WAAW,mBAAmB;IAClC,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;IACtC,qBAAqB,CAAC,EAAE,4BAA4B,CAAA;CACrD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,yBAAyB,GAAG,CACtC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KACpC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;AAEvC,MAAM,WAAW,0BAA0B;IACzC,kBAAkB,CAAC,EAAE,yBAAyB,CAAA;IAC9C,qBAAqB,CAAC,EAAE,4BAA4B,CAAA;CACrD;AAgBD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,WAAW,EACrB,OAAO,GAAE,0BAA+B,GACvC,mBAAmB,CAYrB"}
@@ -16,5 +16,6 @@ export function buildBookingRouteRuntime(bindings, options = {}) {
16
16
  }
17
17
  return createKmsProviderFromEnv(runtimeEnv);
18
18
  },
19
+ resolveTravelSnapshot: options.resolveTravelSnapshot,
19
20
  };
20
21
  }
@@ -92,7 +92,7 @@ export declare const bookingGroupRoutes: import("hono/hono-base").HonoBase<Env,
92
92
  endDate: string | null;
93
93
  bookingNumber: string;
94
94
  personId: string | null;
95
- sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
95
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
96
96
  externalBookingRef: string | null;
97
97
  communicationLanguage: string | null;
98
98
  contactFirstName: string | null;
@@ -232,7 +232,7 @@ export declare const bookingGroupRoutes: import("hono/hono-base").HonoBase<Env,
232
232
  endDate: string | null;
233
233
  bookingNumber: string;
234
234
  personId: string | null;
235
- sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
235
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
236
236
  externalBookingRef: string | null;
237
237
  communicationLanguage: string | null;
238
238
  contactFirstName: string | null;
@@ -361,8 +361,8 @@ export declare const bookingGroupRoutes: import("hono/hono-base").HonoBase<Env,
361
361
  email: string | null;
362
362
  firstName: string;
363
363
  lastName: string;
364
- bookingId: string;
365
364
  personId: string | null;
365
+ bookingId: string;
366
366
  participantType: "other" | "traveler" | "occupant";
367
367
  travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null;
368
368
  phone: string | null;
@@ -99,7 +99,7 @@ export declare const publicBookingRoutes: import("hono/hono-base").HonoBase<Env,
99
99
  pricingCategoryId: string | null;
100
100
  availabilitySlotId: string | null;
101
101
  quantity: number;
102
- allocationType: "unit" | "resource" | "pickup";
102
+ allocationType: "unit" | "pickup" | "resource";
103
103
  status: "cancelled" | "confirmed" | "expired" | "fulfilled" | "held" | "released";
104
104
  holdExpiresAt: string | null;
105
105
  confirmedAt: string | null;
@@ -384,7 +384,7 @@ export declare const publicBookingRoutes: import("hono/hono-base").HonoBase<Env,
384
384
  pricingCategoryId: string | null;
385
385
  availabilitySlotId: string | null;
386
386
  quantity: number;
387
- allocationType: "unit" | "resource" | "pickup";
387
+ allocationType: "unit" | "pickup" | "resource";
388
388
  status: "cancelled" | "confirmed" | "expired" | "fulfilled" | "held" | "released";
389
389
  holdExpiresAt: string | null;
390
390
  confirmedAt: string | null;
@@ -562,7 +562,7 @@ export declare const publicBookingRoutes: import("hono/hono-base").HonoBase<Env,
562
562
  travelerId: string | null;
563
563
  fulfillmentType: "other" | "voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile";
564
564
  deliveryChannel: "email" | "other" | "download" | "api" | "wallet";
565
- status: "pending" | "failed" | "issued" | "reissued" | "revoked";
565
+ status: "pending" | "issued" | "reissued" | "revoked" | "failed";
566
566
  artifactUrl: string | null;
567
567
  }[];
568
568
  };
package/dist/routes.d.ts CHANGED
@@ -13,7 +13,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
13
13
  status: "cancelled" | "draft" | "on_hold" | "awaiting_payment" | "confirmed" | "in_progress" | "completed" | "expired";
14
14
  personId: string | null;
15
15
  organizationId: string | null;
16
- sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
16
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
17
17
  externalBookingRef: string | null;
18
18
  communicationLanguage: string | null;
19
19
  contactFirstName: string | null;
@@ -212,7 +212,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
212
212
  travelerId: string | null;
213
213
  fulfillmentType: "other" | "voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile";
214
214
  deliveryChannel: "email" | "other" | "download" | "api" | "wallet";
215
- status: "pending" | "failed" | "issued" | "reissued" | "revoked";
215
+ status: "pending" | "issued" | "reissued" | "revoked" | "failed";
216
216
  artifactUrl: string | null;
217
217
  }[];
218
218
  };
@@ -247,7 +247,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
247
247
  status: "cancelled" | "draft" | "on_hold" | "awaiting_payment" | "confirmed" | "in_progress" | "completed" | "expired";
248
248
  personId: string | null;
249
249
  organizationId: string | null;
250
- sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
250
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
251
251
  externalBookingRef: string | null;
252
252
  communicationLanguage: string | null;
253
253
  contactFirstName: string | null;
@@ -305,7 +305,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
305
305
  endDate: string | null;
306
306
  bookingNumber: string;
307
307
  personId: string | null;
308
- sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
308
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
309
309
  externalBookingRef: string | null;
310
310
  communicationLanguage: string | null;
311
311
  contactFirstName: string | null;
@@ -386,7 +386,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
386
386
  endDate: string | null;
387
387
  bookingNumber: string;
388
388
  personId: string | null;
389
- sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
389
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
390
390
  externalBookingRef: string | null;
391
391
  communicationLanguage: string | null;
392
392
  contactFirstName: string | null;
@@ -535,7 +535,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
535
535
  endDate: string | null;
536
536
  bookingNumber: string;
537
537
  personId: string | null;
538
- sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
538
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
539
539
  externalBookingRef: string | null;
540
540
  communicationLanguage: string | null;
541
541
  contactFirstName: string | null;
@@ -606,7 +606,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
606
606
  status: "cancelled" | "draft" | "on_hold" | "awaiting_payment" | "confirmed" | "in_progress" | "completed" | "expired";
607
607
  personId: string | null;
608
608
  organizationId: string | null;
609
- sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
609
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
610
610
  externalBookingRef: string | null;
611
611
  communicationLanguage: string | null;
612
612
  contactFirstName: string | null;
@@ -711,7 +711,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
711
711
  status: "cancelled" | "draft" | "on_hold" | "awaiting_payment" | "confirmed" | "in_progress" | "completed" | "expired";
712
712
  personId: string | null;
713
713
  organizationId: string | null;
714
- sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
714
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
715
715
  externalBookingRef: string | null;
716
716
  communicationLanguage: string | null;
717
717
  contactFirstName: string | null;
@@ -801,7 +801,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
801
801
  status: "cancelled" | "draft" | "on_hold" | "awaiting_payment" | "confirmed" | "in_progress" | "completed" | "expired";
802
802
  personId: string | null;
803
803
  organizationId: string | null;
804
- sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
804
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
805
805
  externalBookingRef: string | null;
806
806
  communicationLanguage: string | null;
807
807
  contactFirstName: string | null;
@@ -891,7 +891,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
891
891
  status: "cancelled" | "draft" | "on_hold" | "awaiting_payment" | "confirmed" | "in_progress" | "completed" | "expired";
892
892
  personId: string | null;
893
893
  organizationId: string | null;
894
- sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
894
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
895
895
  externalBookingRef: string | null;
896
896
  communicationLanguage: string | null;
897
897
  contactFirstName: string | null;
@@ -994,7 +994,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
994
994
  status: "cancelled" | "draft" | "on_hold" | "awaiting_payment" | "confirmed" | "in_progress" | "completed" | "expired";
995
995
  personId: string | null;
996
996
  organizationId: string | null;
997
- sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
997
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
998
998
  externalBookingRef: string | null;
999
999
  communicationLanguage: string | null;
1000
1000
  contactFirstName: string | null;
@@ -1084,7 +1084,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
1084
1084
  status: "cancelled" | "draft" | "on_hold" | "awaiting_payment" | "confirmed" | "in_progress" | "completed" | "expired";
1085
1085
  personId: string | null;
1086
1086
  organizationId: string | null;
1087
- sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
1087
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
1088
1088
  externalBookingRef: string | null;
1089
1089
  communicationLanguage: string | null;
1090
1090
  contactFirstName: string | null;
@@ -1174,7 +1174,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
1174
1174
  status: "cancelled" | "draft" | "on_hold" | "awaiting_payment" | "confirmed" | "in_progress" | "completed" | "expired";
1175
1175
  personId: string | null;
1176
1176
  organizationId: string | null;
1177
- sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
1177
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
1178
1178
  externalBookingRef: string | null;
1179
1179
  communicationLanguage: string | null;
1180
1180
  contactFirstName: string | null;
@@ -1253,7 +1253,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
1253
1253
  status: "cancelled" | "draft" | "on_hold" | "awaiting_payment" | "confirmed" | "in_progress" | "completed" | "expired";
1254
1254
  personId: string | null;
1255
1255
  organizationId: string | null;
1256
- sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
1256
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
1257
1257
  externalBookingRef: string | null;
1258
1258
  communicationLanguage: string | null;
1259
1259
  contactFirstName: string | null;
@@ -1325,7 +1325,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
1325
1325
  pricingCategoryId: string | null;
1326
1326
  availabilitySlotId: string | null;
1327
1327
  quantity: number;
1328
- allocationType: "unit" | "resource" | "pickup";
1328
+ allocationType: "unit" | "pickup" | "resource";
1329
1329
  status: "cancelled" | "confirmed" | "expired" | "fulfilled" | "held" | "released";
1330
1330
  holdExpiresAt: string | null;
1331
1331
  confirmedAt: string | null;
@@ -1442,6 +1442,152 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
1442
1442
  status: 201;
1443
1443
  };
1444
1444
  };
1445
+ } & {
1446
+ "/:id/travelers/with-travel-details": {
1447
+ $post: {
1448
+ input: {
1449
+ param: {
1450
+ id: string;
1451
+ };
1452
+ };
1453
+ output: {
1454
+ error: string;
1455
+ };
1456
+ outputFormat: "json";
1457
+ status: 500;
1458
+ } | {
1459
+ input: {
1460
+ param: {
1461
+ id: string;
1462
+ };
1463
+ };
1464
+ output: {
1465
+ error: string;
1466
+ };
1467
+ outputFormat: "json";
1468
+ status: 404;
1469
+ } | {
1470
+ input: {
1471
+ param: {
1472
+ id: string;
1473
+ };
1474
+ };
1475
+ output: {
1476
+ data: {
1477
+ traveler: {
1478
+ id: string;
1479
+ notes: string | null;
1480
+ createdAt: string;
1481
+ updatedAt: string;
1482
+ email: string | null;
1483
+ firstName: string;
1484
+ lastName: string;
1485
+ personId: string | null;
1486
+ bookingId: string;
1487
+ participantType: "other" | "traveler" | "occupant";
1488
+ travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null;
1489
+ phone: string | null;
1490
+ preferredLanguage: string | null;
1491
+ specialRequests: string | null;
1492
+ isPrimary: boolean;
1493
+ };
1494
+ travelDetails: {
1495
+ travelerId: string;
1496
+ nationality: string | null;
1497
+ passportNumber: string | null;
1498
+ passportExpiry: string | null;
1499
+ passportIssuingCountry: string | null;
1500
+ passportIssuingAuthority: string | null;
1501
+ passportPersonDocumentId: string | null;
1502
+ dateOfBirth: string | null;
1503
+ dietaryRequirements: string | null;
1504
+ accessibilityNeeds: string | null;
1505
+ isLeadTraveler: boolean;
1506
+ createdAt: string;
1507
+ updatedAt: string;
1508
+ } | null;
1509
+ };
1510
+ };
1511
+ outputFormat: "json";
1512
+ status: 201;
1513
+ };
1514
+ };
1515
+ } & {
1516
+ "/:id/travelers/:travelerId/with-travel-details": {
1517
+ $patch: {
1518
+ input: {
1519
+ param: {
1520
+ id: string;
1521
+ } & {
1522
+ travelerId: string;
1523
+ };
1524
+ };
1525
+ output: {
1526
+ error: string;
1527
+ };
1528
+ outputFormat: "json";
1529
+ status: 500;
1530
+ } | {
1531
+ input: {
1532
+ param: {
1533
+ id: string;
1534
+ } & {
1535
+ travelerId: string;
1536
+ };
1537
+ };
1538
+ output: {
1539
+ error: string;
1540
+ };
1541
+ outputFormat: "json";
1542
+ status: 404;
1543
+ } | {
1544
+ input: {
1545
+ param: {
1546
+ id: string;
1547
+ } & {
1548
+ travelerId: string;
1549
+ };
1550
+ };
1551
+ output: {
1552
+ data: {
1553
+ traveler: {
1554
+ id: string;
1555
+ bookingId: string;
1556
+ personId: string | null;
1557
+ participantType: "other" | "traveler" | "occupant";
1558
+ travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null;
1559
+ firstName: string;
1560
+ lastName: string;
1561
+ email: string | null;
1562
+ phone: string | null;
1563
+ preferredLanguage: string | null;
1564
+ specialRequests: string | null;
1565
+ isPrimary: boolean;
1566
+ notes: string | null;
1567
+ createdAt: string;
1568
+ updatedAt: string;
1569
+ };
1570
+ travelDetails: {
1571
+ travelerId: string;
1572
+ nationality: string | null;
1573
+ passportNumber: string | null;
1574
+ passportExpiry: string | null;
1575
+ passportIssuingCountry: string | null;
1576
+ passportIssuingAuthority: string | null;
1577
+ passportPersonDocumentId: string | null;
1578
+ dateOfBirth: string | null;
1579
+ dietaryRequirements: string | null;
1580
+ accessibilityNeeds: string | null;
1581
+ isLeadTraveler: boolean;
1582
+ createdAt: string;
1583
+ updatedAt: string;
1584
+ } | null;
1585
+ };
1586
+ };
1587
+ outputFormat: "json";
1588
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1589
+ };
1590
+ };
1445
1591
  } & {
1446
1592
  "/:id/travelers/:travelerId/travel-details": {
1447
1593
  $patch: {
@@ -1624,11 +1770,11 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
1624
1770
  metadata: {
1625
1771
  [x: string]: import("hono/utils/types").JSONValue;
1626
1772
  } | null;
1627
- description: string | null;
1628
- bookingId: string;
1629
1773
  sellCurrency: string;
1774
+ bookingId: string;
1630
1775
  optionUnitId: string | null;
1631
1776
  title: string;
1777
+ description: string | null;
1632
1778
  itemType: "service" | "unit" | "other" | "extra" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport";
1633
1779
  serviceDate: string | null;
1634
1780
  quantity: number;
@@ -1884,9 +2030,9 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
1884
2030
  notes: string | null;
1885
2031
  createdAt: string;
1886
2032
  updatedAt: string;
1887
- bookingId: string;
1888
2033
  costAmountCents: number;
1889
2034
  confirmedAt: string | null;
2035
+ bookingId: string;
1890
2036
  costCurrency: string;
1891
2037
  supplierServiceId: string | null;
1892
2038
  serviceName: string;
@@ -1956,7 +2102,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
1956
2102
  travelerId: string | null;
1957
2103
  fulfillmentType: "other" | "voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile";
1958
2104
  deliveryChannel: "email" | "other" | "download" | "api" | "wallet";
1959
- status: "pending" | "failed" | "issued" | "reissued" | "revoked";
2105
+ status: "pending" | "issued" | "reissued" | "revoked" | "failed";
1960
2106
  artifactUrl: string | null;
1961
2107
  payload: {
1962
2108
  [x: string]: import("hono/utils/types").JSONValue;
@@ -1993,7 +2139,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
1993
2139
  output: {
1994
2140
  data: {
1995
2141
  id: string;
1996
- status: "pending" | "failed" | "issued" | "reissued" | "revoked";
2142
+ status: "pending" | "issued" | "reissued" | "revoked" | "failed";
1997
2143
  createdAt: string;
1998
2144
  updatedAt: string;
1999
2145
  bookingId: string;
@@ -2044,7 +2190,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
2044
2190
  travelerId: string | null;
2045
2191
  fulfillmentType: "other" | "voucher" | "ticket" | "pdf" | "qr_code" | "barcode" | "mobile";
2046
2192
  deliveryChannel: "email" | "other" | "download" | "api" | "wallet";
2047
- status: "pending" | "failed" | "issued" | "reissued" | "revoked";
2193
+ status: "pending" | "issued" | "reissued" | "revoked" | "failed";
2048
2194
  artifactUrl: string | null;
2049
2195
  payload: {
2050
2196
  [x: string]: import("hono/utils/types").JSONValue;
@@ -2446,7 +2592,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
2446
2592
  endDate: string | null;
2447
2593
  bookingNumber: string;
2448
2594
  personId: string | null;
2449
- sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
2595
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
2450
2596
  externalBookingRef: string | null;
2451
2597
  communicationLanguage: string | null;
2452
2598
  contactFirstName: string | null;
@@ -2586,7 +2732,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
2586
2732
  endDate: string | null;
2587
2733
  bookingNumber: string;
2588
2734
  personId: string | null;
2589
- sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
2735
+ sourceType: "internal" | "direct" | "manual" | "affiliate" | "ota" | "reseller" | "api_partner";
2590
2736
  externalBookingRef: string | null;
2591
2737
  communicationLanguage: string | null;
2592
2738
  contactFirstName: string | null;
@@ -2715,8 +2861,8 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
2715
2861
  email: string | null;
2716
2862
  firstName: string;
2717
2863
  lastName: string;
2718
- bookingId: string;
2719
2864
  personId: string | null;
2865
+ bookingId: string;
2720
2866
  participantType: "other" | "traveler" | "occupant";
2721
2867
  travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null;
2722
2868
  phone: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAwM7C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAo/Ba,CAAA;AAEvC,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAA;AAChD,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAA"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AA0M7C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDA+jCa,CAAA;AAEvC,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAA;AAChD,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAA"}