@voyantjs/bookings 0.9.0 → 0.11.0

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.
Files changed (51) hide show
  1. package/dist/index.d.ts +3 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -1
  4. package/dist/markets-ref.d.ts +151 -0
  5. package/dist/markets-ref.d.ts.map +1 -0
  6. package/dist/markets-ref.js +19 -0
  7. package/dist/pii-redaction.d.ts +89 -0
  8. package/dist/pii-redaction.d.ts.map +1 -0
  9. package/dist/pii-redaction.js +120 -0
  10. package/dist/pii.d.ts +1 -0
  11. package/dist/pii.d.ts.map +1 -1
  12. package/dist/pii.js +20 -1
  13. package/dist/routes-groups.d.ts +3 -2
  14. package/dist/routes-groups.d.ts.map +1 -1
  15. package/dist/routes-public.d.ts +11 -13
  16. package/dist/routes-public.d.ts.map +1 -1
  17. package/dist/routes-public.js +3 -3
  18. package/dist/routes.d.ts +232 -22
  19. package/dist/routes.d.ts.map +1 -1
  20. package/dist/routes.js +100 -24
  21. package/dist/schema/travel-details.d.ts +37 -0
  22. package/dist/schema/travel-details.d.ts.map +1 -1
  23. package/dist/schema/travel-details.js +6 -0
  24. package/dist/schema-core.d.ts +17 -17
  25. package/dist/schema-core.d.ts.map +1 -1
  26. package/dist/schema-core.js +8 -2
  27. package/dist/schema-items.d.ts.map +1 -1
  28. package/dist/schema-items.js +6 -1
  29. package/dist/schema-operations.d.ts +2 -2
  30. package/dist/schema-shared.d.ts +1 -1
  31. package/dist/schema-shared.d.ts.map +1 -1
  32. package/dist/schema-shared.js +3 -0
  33. package/dist/service-public.d.ts +0 -6
  34. package/dist/service-public.d.ts.map +1 -1
  35. package/dist/service-public.js +0 -4
  36. package/dist/service.d.ts +232 -56
  37. package/dist/service.d.ts.map +1 -1
  38. package/dist/service.js +469 -137
  39. package/dist/state-machine.d.ts +29 -0
  40. package/dist/state-machine.d.ts.map +1 -0
  41. package/dist/state-machine.js +39 -0
  42. package/dist/validation-public.d.ts +0 -6
  43. package/dist/validation-public.d.ts.map +1 -1
  44. package/dist/validation-public.js +0 -2
  45. package/dist/validation.d.ts +25 -16
  46. package/dist/validation.d.ts.map +1 -1
  47. package/dist/validation.js +17 -6
  48. package/dist/workflows/refund-booking.d.ts +87 -0
  49. package/dist/workflows/refund-booking.d.ts.map +1 -0
  50. package/dist/workflows/refund-booking.js +210 -0
  51. package/package.json +7 -6
@@ -1,4 +1,4 @@
1
- import { parseJsonBody, parseQuery } from "@voyantjs/hono";
1
+ import { idempotencyKey, parseJsonBody, parseQuery } from "@voyantjs/hono";
2
2
  import { Hono } from "hono";
3
3
  import { notFound } from "./routes-shared.js";
4
4
  import { publicBookingsService } from "./service-public.js";
@@ -27,7 +27,7 @@ function sessionConflictError(status) {
27
27
  }
28
28
  }
29
29
  export const publicBookingRoutes = new Hono()
30
- .post("/sessions", async (c) => {
30
+ .post("/sessions", idempotencyKey({ scope: "POST /v1/public/bookings/sessions" }), async (c) => {
31
31
  const result = await publicBookingsService.createSession(c.get("db"), await parseJsonBody(c, publicCreateBookingSessionSchema), c.get("userId"));
32
32
  if (result.status === "slot_not_found") {
33
33
  return notFound(c, "Availability slot not found");
@@ -80,7 +80,7 @@ export const publicBookingRoutes = new Hono()
80
80
  },
81
81
  });
82
82
  })
83
- .post("/sessions/:sessionId/confirm", async (c) => {
83
+ .post("/sessions/:sessionId/confirm", idempotencyKey({ scope: "POST /v1/public/bookings/sessions/confirm" }), async (c) => {
84
84
  const result = await publicBookingsService.confirmSession(c.get("db"), c.req.param("sessionId"), await parseJsonBody(c, publicBookingSessionMutationSchema), c.get("userId"));
85
85
  if (result.status === "not_found") {
86
86
  return notFound(c, "Booking session not found");
package/dist/routes.d.ts CHANGED
@@ -26,6 +26,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
26
26
  contactPostalCode: string | null;
27
27
  sellCurrency: string;
28
28
  baseCurrency: string | null;
29
+ fxRateSetId: string | null;
29
30
  sellAmountCents: number | null;
30
31
  baseSellAmountCents: number | null;
31
32
  costAmountCents: number | null;
@@ -115,7 +116,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
115
116
  data: {
116
117
  total: number;
117
118
  countsByStatus: {
118
- status: "cancelled" | "draft" | "on_hold" | "confirmed" | "in_progress" | "completed" | "expired";
119
+ status: import("./state-machine.js").BookingStatus;
119
120
  count: number;
120
121
  }[];
121
122
  monthlyCounts: {
@@ -256,6 +257,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
256
257
  contactPostalCode: string | null;
257
258
  sellCurrency: string;
258
259
  baseCurrency: string | null;
260
+ fxRateSetId: string | null;
259
261
  sellAmountCents: number | null;
260
262
  baseSellAmountCents: number | null;
261
263
  costAmountCents: number | null;
@@ -310,6 +312,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
310
312
  contactPostalCode: string | null;
311
313
  sellCurrency: string;
312
314
  baseCurrency: string | null;
315
+ fxRateSetId: string | null;
313
316
  sellAmountCents: number | null;
314
317
  baseSellAmountCents: number | null;
315
318
  costAmountCents: number | null;
@@ -387,6 +390,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
387
390
  contactPostalCode: string | null;
388
391
  sellCurrency: string;
389
392
  baseCurrency: string | null;
393
+ fxRateSetId: string | null;
390
394
  sellAmountCents: number | null;
391
395
  baseSellAmountCents: number | null;
392
396
  costAmountCents: number | null;
@@ -532,6 +536,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
532
536
  contactPostalCode: string | null;
533
537
  sellCurrency: string;
534
538
  baseCurrency: string | null;
539
+ fxRateSetId: string | null;
535
540
  sellAmountCents: number | null;
536
541
  baseSellAmountCents: number | null;
537
542
  costAmountCents: number | null;
@@ -599,6 +604,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
599
604
  contactPostalCode: string | null;
600
605
  sellCurrency: string;
601
606
  baseCurrency: string | null;
607
+ fxRateSetId: string | null;
602
608
  sellAmountCents: number | null;
603
609
  baseSellAmountCents: number | null;
604
610
  costAmountCents: number | null;
@@ -649,8 +655,8 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
649
655
  };
650
656
  };
651
657
  } & {
652
- "/:id/status": {
653
- $patch: {
658
+ "/:id/confirm": {
659
+ $post: {
654
660
  input: {
655
661
  param: {
656
662
  id: string;
@@ -679,7 +685,46 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
679
685
  };
680
686
  };
681
687
  output: {
682
- data: import("hono/utils/types").JSONValue;
688
+ data: {
689
+ id: string;
690
+ bookingNumber: string;
691
+ status: "cancelled" | "draft" | "on_hold" | "confirmed" | "in_progress" | "completed" | "expired";
692
+ personId: string | null;
693
+ organizationId: string | null;
694
+ sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
695
+ externalBookingRef: string | null;
696
+ communicationLanguage: string | null;
697
+ contactFirstName: string | null;
698
+ contactLastName: string | null;
699
+ contactEmail: string | null;
700
+ contactPhone: string | null;
701
+ contactPreferredLanguage: string | null;
702
+ contactCountry: string | null;
703
+ contactRegion: string | null;
704
+ contactCity: string | null;
705
+ contactAddressLine1: string | null;
706
+ contactPostalCode: string | null;
707
+ sellCurrency: string;
708
+ baseCurrency: string | null;
709
+ fxRateSetId: string | null;
710
+ sellAmountCents: number | null;
711
+ baseSellAmountCents: number | null;
712
+ costAmountCents: number | null;
713
+ baseCostAmountCents: number | null;
714
+ marginPercent: number | null;
715
+ startDate: string | null;
716
+ endDate: string | null;
717
+ pax: number | null;
718
+ internalNotes: string | null;
719
+ holdExpiresAt: string | null;
720
+ confirmedAt: string | null;
721
+ expiredAt: string | null;
722
+ cancelledAt: string | null;
723
+ completedAt: string | null;
724
+ redeemedAt: string | null;
725
+ createdAt: string;
726
+ updatedAt: string;
727
+ } | null;
683
728
  };
684
729
  outputFormat: "json";
685
730
  status: import("hono/utils/http-status").ContentfulStatusCode;
@@ -697,7 +742,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
697
742
  };
698
743
  };
699
744
  } & {
700
- "/:id/confirm": {
745
+ "/:id/extend-hold": {
701
746
  $post: {
702
747
  input: {
703
748
  param: {
@@ -748,6 +793,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
748
793
  contactPostalCode: string | null;
749
794
  sellCurrency: string;
750
795
  baseCurrency: string | null;
796
+ fxRateSetId: string | null;
751
797
  sellAmountCents: number | null;
752
798
  baseSellAmountCents: number | null;
753
799
  costAmountCents: number | null;
@@ -783,7 +829,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
783
829
  };
784
830
  };
785
831
  } & {
786
- "/:id/extend-hold": {
832
+ "/:id/expire": {
787
833
  $post: {
788
834
  input: {
789
835
  param: {
@@ -834,6 +880,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
834
880
  contactPostalCode: string | null;
835
881
  sellCurrency: string;
836
882
  baseCurrency: string | null;
883
+ fxRateSetId: string | null;
837
884
  sellAmountCents: number | null;
838
885
  baseSellAmountCents: number | null;
839
886
  costAmountCents: number | null;
@@ -869,7 +916,20 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
869
916
  };
870
917
  };
871
918
  } & {
872
- "/:id/expire": {
919
+ "/expire-stale": {
920
+ $post: {
921
+ input: {};
922
+ output: {
923
+ expiredIds: string[];
924
+ count: number;
925
+ cutoff: string;
926
+ };
927
+ outputFormat: "json";
928
+ status: import("hono/utils/http-status").ContentfulStatusCode;
929
+ };
930
+ };
931
+ } & {
932
+ "/:id/cancel": {
873
933
  $post: {
874
934
  input: {
875
935
  param: {
@@ -920,6 +980,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
920
980
  contactPostalCode: string | null;
921
981
  sellCurrency: string;
922
982
  baseCurrency: string | null;
983
+ fxRateSetId: string | null;
923
984
  sellAmountCents: number | null;
924
985
  baseSellAmountCents: number | null;
925
986
  costAmountCents: number | null;
@@ -937,7 +998,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
937
998
  redeemedAt: string | null;
938
999
  createdAt: string;
939
1000
  updatedAt: string;
940
- } | null;
1001
+ } | null | undefined;
941
1002
  };
942
1003
  outputFormat: "json";
943
1004
  status: import("hono/utils/http-status").ContentfulStatusCode;
@@ -955,20 +1016,94 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
955
1016
  };
956
1017
  };
957
1018
  } & {
958
- "/expire-stale": {
1019
+ "/:id/start": {
959
1020
  $post: {
960
- input: {};
1021
+ input: {
1022
+ param: {
1023
+ id: string;
1024
+ };
1025
+ };
961
1026
  output: {
962
- expiredIds: string[];
963
- count: number;
964
- cutoff: string;
1027
+ error: string;
1028
+ };
1029
+ outputFormat: "json";
1030
+ status: 404;
1031
+ } | {
1032
+ input: {
1033
+ param: {
1034
+ id: string;
1035
+ };
1036
+ };
1037
+ output: {
1038
+ error: string;
1039
+ };
1040
+ outputFormat: "json";
1041
+ status: 409;
1042
+ } | {
1043
+ input: {
1044
+ param: {
1045
+ id: string;
1046
+ };
1047
+ };
1048
+ output: {
1049
+ data: {
1050
+ id: string;
1051
+ bookingNumber: string;
1052
+ status: "cancelled" | "draft" | "on_hold" | "confirmed" | "in_progress" | "completed" | "expired";
1053
+ personId: string | null;
1054
+ organizationId: string | null;
1055
+ sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
1056
+ externalBookingRef: string | null;
1057
+ communicationLanguage: string | null;
1058
+ contactFirstName: string | null;
1059
+ contactLastName: string | null;
1060
+ contactEmail: string | null;
1061
+ contactPhone: string | null;
1062
+ contactPreferredLanguage: string | null;
1063
+ contactCountry: string | null;
1064
+ contactRegion: string | null;
1065
+ contactCity: string | null;
1066
+ contactAddressLine1: string | null;
1067
+ contactPostalCode: string | null;
1068
+ sellCurrency: string;
1069
+ baseCurrency: string | null;
1070
+ fxRateSetId: string | null;
1071
+ sellAmountCents: number | null;
1072
+ baseSellAmountCents: number | null;
1073
+ costAmountCents: number | null;
1074
+ baseCostAmountCents: number | null;
1075
+ marginPercent: number | null;
1076
+ startDate: string | null;
1077
+ endDate: string | null;
1078
+ pax: number | null;
1079
+ internalNotes: string | null;
1080
+ holdExpiresAt: string | null;
1081
+ confirmedAt: string | null;
1082
+ expiredAt: string | null;
1083
+ cancelledAt: string | null;
1084
+ completedAt: string | null;
1085
+ redeemedAt: string | null;
1086
+ createdAt: string;
1087
+ updatedAt: string;
1088
+ } | null;
965
1089
  };
966
1090
  outputFormat: "json";
967
1091
  status: import("hono/utils/http-status").ContentfulStatusCode;
1092
+ } | {
1093
+ input: {
1094
+ param: {
1095
+ id: string;
1096
+ };
1097
+ };
1098
+ output: {
1099
+ error: string;
1100
+ };
1101
+ outputFormat: "json";
1102
+ status: 400;
968
1103
  };
969
1104
  };
970
1105
  } & {
971
- "/:id/cancel": {
1106
+ "/:id/complete": {
972
1107
  $post: {
973
1108
  input: {
974
1109
  param: {
@@ -1019,6 +1154,83 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
1019
1154
  contactPostalCode: string | null;
1020
1155
  sellCurrency: string;
1021
1156
  baseCurrency: string | null;
1157
+ fxRateSetId: string | null;
1158
+ sellAmountCents: number | null;
1159
+ baseSellAmountCents: number | null;
1160
+ costAmountCents: number | null;
1161
+ baseCostAmountCents: number | null;
1162
+ marginPercent: number | null;
1163
+ startDate: string | null;
1164
+ endDate: string | null;
1165
+ pax: number | null;
1166
+ internalNotes: string | null;
1167
+ holdExpiresAt: string | null;
1168
+ confirmedAt: string | null;
1169
+ expiredAt: string | null;
1170
+ cancelledAt: string | null;
1171
+ completedAt: string | null;
1172
+ redeemedAt: string | null;
1173
+ createdAt: string;
1174
+ updatedAt: string;
1175
+ } | null;
1176
+ };
1177
+ outputFormat: "json";
1178
+ status: import("hono/utils/http-status").ContentfulStatusCode;
1179
+ } | {
1180
+ input: {
1181
+ param: {
1182
+ id: string;
1183
+ };
1184
+ };
1185
+ output: {
1186
+ error: string;
1187
+ };
1188
+ outputFormat: "json";
1189
+ status: 400;
1190
+ };
1191
+ };
1192
+ } & {
1193
+ "/:id/override-status": {
1194
+ $post: {
1195
+ input: {
1196
+ param: {
1197
+ id: string;
1198
+ };
1199
+ };
1200
+ output: {
1201
+ error: string;
1202
+ };
1203
+ outputFormat: "json";
1204
+ status: 404;
1205
+ } | {
1206
+ input: {
1207
+ param: {
1208
+ id: string;
1209
+ };
1210
+ };
1211
+ output: {
1212
+ data: {
1213
+ id: string;
1214
+ bookingNumber: string;
1215
+ status: "cancelled" | "draft" | "on_hold" | "confirmed" | "in_progress" | "completed" | "expired";
1216
+ personId: string | null;
1217
+ organizationId: string | null;
1218
+ sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
1219
+ externalBookingRef: string | null;
1220
+ communicationLanguage: string | null;
1221
+ contactFirstName: string | null;
1222
+ contactLastName: string | null;
1223
+ contactEmail: string | null;
1224
+ contactPhone: string | null;
1225
+ contactPreferredLanguage: string | null;
1226
+ contactCountry: string | null;
1227
+ contactRegion: string | null;
1228
+ contactCity: string | null;
1229
+ contactAddressLine1: string | null;
1230
+ contactPostalCode: string | null;
1231
+ sellCurrency: string;
1232
+ baseCurrency: string | null;
1233
+ fxRateSetId: string | null;
1022
1234
  sellAmountCents: number | null;
1023
1235
  baseSellAmountCents: number | null;
1024
1236
  costAmountCents: number | null;
@@ -1107,7 +1319,6 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
1107
1319
  email: string | null;
1108
1320
  phone: string | null;
1109
1321
  preferredLanguage: string | null;
1110
- accessibilityNeeds: string | null;
1111
1322
  specialRequests: string | null;
1112
1323
  isPrimary: boolean;
1113
1324
  notes: string | null;
@@ -1164,7 +1375,6 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
1164
1375
  email: string | null;
1165
1376
  phone: string | null;
1166
1377
  preferredLanguage: string | null;
1167
- accessibilityNeeds: string | null;
1168
1378
  specialRequests: string | null;
1169
1379
  isPrimary: boolean;
1170
1380
  notes: string | null;
@@ -1225,7 +1435,6 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
1225
1435
  email: string | null;
1226
1436
  phone: string | null;
1227
1437
  preferredLanguage: string | null;
1228
- accessibilityNeeds: string | null;
1229
1438
  specialRequests: string | null;
1230
1439
  isPrimary: boolean;
1231
1440
  notes: string | null;
@@ -1360,8 +1569,8 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
1360
1569
  [x: string]: import("hono/utils/types").JSONValue;
1361
1570
  } | null;
1362
1571
  description: string | null;
1363
- sellCurrency: string;
1364
1572
  bookingId: string;
1573
+ sellCurrency: string;
1365
1574
  optionUnitId: string | null;
1366
1575
  title: string;
1367
1576
  itemType: "service" | "unit" | "other" | "extra" | "fee" | "tax" | "discount" | "adjustment" | "accommodation" | "transport";
@@ -1619,9 +1828,9 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
1619
1828
  notes: string | null;
1620
1829
  createdAt: string;
1621
1830
  updatedAt: string;
1831
+ bookingId: string;
1622
1832
  costAmountCents: number;
1623
1833
  confirmedAt: string | null;
1624
- bookingId: string;
1625
1834
  costCurrency: string;
1626
1835
  supplierServiceId: string | null;
1627
1836
  serviceName: string;
@@ -1874,7 +2083,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
1874
2083
  id: string;
1875
2084
  bookingId: string;
1876
2085
  actorId: string | null;
1877
- activityType: "booking_created" | "booking_reserved" | "booking_converted" | "booking_confirmed" | "hold_extended" | "hold_expired" | "status_change" | "item_update" | "allocation_released" | "fulfillment_issued" | "fulfillment_updated" | "redemption_recorded" | "supplier_update" | "passenger_update" | "note_added";
2086
+ activityType: "booking_created" | "booking_reserved" | "booking_converted" | "booking_confirmed" | "booking_started" | "booking_completed" | "hold_extended" | "hold_expired" | "status_change" | "status_overridden" | "item_update" | "allocation_released" | "fulfillment_issued" | "fulfillment_updated" | "redemption_recorded" | "supplier_update" | "passenger_update" | "note_added";
1878
2087
  description: string;
1879
2088
  metadata: {
1880
2089
  [x: string]: import("hono/utils/types").JSONValue;
@@ -2196,6 +2405,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
2196
2405
  contactPostalCode: string | null;
2197
2406
  sellCurrency: string;
2198
2407
  baseCurrency: string | null;
2408
+ fxRateSetId: string | null;
2199
2409
  sellAmountCents: number | null;
2200
2410
  baseSellAmountCents: number | null;
2201
2411
  costAmountCents: number | null;
@@ -2332,6 +2542,7 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
2332
2542
  contactPostalCode: string | null;
2333
2543
  sellCurrency: string;
2334
2544
  baseCurrency: string | null;
2545
+ fxRateSetId: string | null;
2335
2546
  sellAmountCents: number | null;
2336
2547
  baseSellAmountCents: number | null;
2337
2548
  costAmountCents: number | null;
@@ -2442,13 +2653,12 @@ export declare const bookingRoutes: import("hono/hono-base").HonoBase<Env, ({
2442
2653
  email: string | null;
2443
2654
  firstName: string;
2444
2655
  lastName: string;
2445
- personId: string | null;
2446
2656
  bookingId: string;
2657
+ personId: string | null;
2447
2658
  participantType: "other" | "traveler" | "occupant";
2448
2659
  travelerCategory: "other" | "adult" | "child" | "infant" | "senior" | null;
2449
2660
  phone: string | null;
2450
2661
  preferredLanguage: string | null;
2451
- accessibilityNeeds: string | null;
2452
2662
  specialRequests: string | null;
2453
2663
  isPrimary: boolean;
2454
2664
  }[];
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAqM7C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAi1Ba,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;AAuM7C,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDA27Ba,CAAA;AAEvC,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAA;AAChD,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAA"}