@dv4resi/dvss-backend-module-offering-im 0.0.4 → 0.0.5

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.js CHANGED
@@ -603,10 +603,10 @@ var BaseAuth = class {
603
603
  }
604
604
  };
605
605
 
606
- // ../../packages/dvss-integration-libs/src/integration-operation-skeletons/capabilities/wellness/appointment-booking.base.ts
607
- var BaseWellnessAppointmentBooking = class {
606
+ // ../../packages/dvss-integration-libs/src/integration-operation-skeletons/capabilities/wellness/wellness-management.base.ts
607
+ var BaseWellnessManagement = class {
608
608
  static {
609
- __name(this, "BaseWellnessAppointmentBooking");
609
+ __name(this, "BaseWellnessManagement");
610
610
  }
611
611
  };
612
612
 
@@ -739,6 +739,29 @@ var INTEGRATION_PROVIDER_ENUM = /* @__PURE__ */ (function(INTEGRATION_PROVIDER_E
739
739
  INTEGRATION_PROVIDER_ENUM2["TRYBE"] = "TRYBE";
740
740
  return INTEGRATION_PROVIDER_ENUM2;
741
741
  })({});
742
+
743
+ // ../../packages/dvss-integration-libs/src/integration-common-utils/models/wellness-management.model.ts
744
+ var BOOKABLE_ITEM_TYPE_ENUM = /* @__PURE__ */ (function(BOOKABLE_ITEM_TYPE_ENUM2) {
745
+ BOOKABLE_ITEM_TYPE_ENUM2["APPOINTMENT"] = "APPOINTMENT";
746
+ BOOKABLE_ITEM_TYPE_ENUM2["SESSION"] = "SESSION";
747
+ BOOKABLE_ITEM_TYPE_ENUM2["COURSE"] = "COURSE";
748
+ return BOOKABLE_ITEM_TYPE_ENUM2;
749
+ })({});
750
+ var BOOKABLE_ITEM_STATUS_ENUM = /* @__PURE__ */ (function(BOOKABLE_ITEM_STATUS_ENUM2) {
751
+ BOOKABLE_ITEM_STATUS_ENUM2["ACTIVE"] = "ACTIVE";
752
+ BOOKABLE_ITEM_STATUS_ENUM2["INACTIVE"] = "INACTIVE";
753
+ return BOOKABLE_ITEM_STATUS_ENUM2;
754
+ })({});
755
+ var DAY_OF_WEEK = /* @__PURE__ */ (function(DAY_OF_WEEK2) {
756
+ DAY_OF_WEEK2["MON"] = "MON";
757
+ DAY_OF_WEEK2["TUE"] = "TUE";
758
+ DAY_OF_WEEK2["WED"] = "WED";
759
+ DAY_OF_WEEK2["THU"] = "THU";
760
+ DAY_OF_WEEK2["FRI"] = "FRI";
761
+ DAY_OF_WEEK2["SAT"] = "SAT";
762
+ DAY_OF_WEEK2["SUN"] = "SUN";
763
+ return DAY_OF_WEEK2;
764
+ })({});
742
765
  function _ts_decorate11(decorators, target, key, desc) {
743
766
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
744
767
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -959,10 +982,12 @@ function mapTrybeCreditsToSystem(res, integration) {
959
982
  groups.set(key, list);
960
983
  }
961
984
  const records = [];
985
+ let index = 0;
962
986
  for (const [, items] of groups) {
963
987
  const first = items[0];
964
988
  const couponCodes = items.map((i) => i.coupon_code);
965
989
  records.push({
990
+ id: BigInt(index + 1),
966
991
  capabilityIntegrationId: integration.id,
967
992
  projectId: integration.projectId,
968
993
  name: first.coupon_name,
@@ -986,6 +1011,7 @@ function mapTrybeCreditsToSystem(res, integration) {
986
1011
  }
987
1012
  }
988
1013
  });
1014
+ index++;
989
1015
  }
990
1016
  return {
991
1017
  totalCount: records.length,
@@ -1073,7 +1099,438 @@ exports.TrybeCreditBooking = _ts_decorate13([
1073
1099
  ])
1074
1100
  ], exports.TrybeCreditBooking);
1075
1101
 
1076
- // ../../packages/dvss-integration-trybe/src/app.module.ts
1102
+ // ../../packages/dvss-integration-trybe/src/utils/date.util.ts
1103
+ function formatDateForTrybe(date, isStartOfDay) {
1104
+ const year = date.getFullYear();
1105
+ const month = String(date.getMonth() + 1).padStart(2, "0");
1106
+ const day = String(date.getDate()).padStart(2, "0");
1107
+ const hours = isStartOfDay ? "00" : "23";
1108
+ const minutes = isStartOfDay ? "00" : "59";
1109
+ const seconds = isStartOfDay ? "00" : "59";
1110
+ const offset = -date.getTimezoneOffset();
1111
+ const offsetHours = String(Math.floor(Math.abs(offset) / 60)).padStart(2, "0");
1112
+ const offsetMinutes = String(Math.abs(offset) % 60).padStart(2, "0");
1113
+ const offsetSign = offset >= 0 ? "+" : "-";
1114
+ return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}${offsetSign}${offsetHours}:${offsetMinutes}`;
1115
+ }
1116
+ __name(formatDateForTrybe, "formatDateForTrybe");
1117
+ function extractTimeFromIsoString(isoString) {
1118
+ const timeMatch = isoString.match(/T(\d{2}:\d{2})/);
1119
+ return timeMatch ? timeMatch[1] : "";
1120
+ }
1121
+ __name(extractTimeFromIsoString, "extractTimeFromIsoString");
1122
+ function snakeToCamel(str) {
1123
+ return str.replaceAll(/_([a-z])/g, (_, letter) => letter.toUpperCase());
1124
+ }
1125
+ __name(snakeToCamel, "snakeToCamel");
1126
+ function convertKeysToCamelCase(object) {
1127
+ if (object === null || object === void 0) {
1128
+ return object;
1129
+ }
1130
+ if (Array.isArray(object)) {
1131
+ return object.map((item) => convertKeysToCamelCase(item));
1132
+ }
1133
+ if (typeof object === "object") {
1134
+ const converted = {};
1135
+ for (const [key, value] of Object.entries(object)) {
1136
+ converted[snakeToCamel(key)] = convertKeysToCamelCase(value);
1137
+ }
1138
+ return converted;
1139
+ }
1140
+ return object;
1141
+ }
1142
+ __name(convertKeysToCamelCase, "convertKeysToCamelCase");
1143
+
1144
+ // ../../packages/dvss-integration-trybe/src/utils/pagination.util.ts
1145
+ var fetchAllPages = /* @__PURE__ */ __name(async (firstPageResponse, shouldFetchAll, fetchPage) => {
1146
+ const items = [];
1147
+ items.push(...firstPageResponse.data);
1148
+ if (!shouldFetchAll) {
1149
+ return items;
1150
+ }
1151
+ const lastPage = firstPageResponse.meta.last_page;
1152
+ for (let page = 2; page <= lastPage; page += 1) {
1153
+ const pageResponse = await fetchPage(page);
1154
+ items.push(...pageResponse.data);
1155
+ }
1156
+ return items;
1157
+ }, "fetchAllPages");
1158
+
1159
+ // ../../packages/dvss-integration-trybe/src/models/wellness-management.model.ts
1160
+ var TRYBE_OFFERING_TYPE_ENUM = /* @__PURE__ */ (function(TRYBE_OFFERING_TYPE_ENUM2) {
1161
+ TRYBE_OFFERING_TYPE_ENUM2["APPOINTMENT"] = "APPOINTMENT";
1162
+ TRYBE_OFFERING_TYPE_ENUM2["SESSION"] = "SESSION";
1163
+ TRYBE_OFFERING_TYPE_ENUM2["COURSE"] = "COURSE";
1164
+ return TRYBE_OFFERING_TYPE_ENUM2;
1165
+ })({});
1166
+
1167
+ // ../../packages/dvss-integration-trybe/src/capabilities/wellness/wellness-management.mapper.ts
1168
+ var TRYBE_WEEKDAYS_MAPPING = {
1169
+ monday: DAY_OF_WEEK.MON,
1170
+ tuesday: DAY_OF_WEEK.TUE,
1171
+ wednesday: DAY_OF_WEEK.WED,
1172
+ thursday: DAY_OF_WEEK.THU,
1173
+ friday: DAY_OF_WEEK.FRI,
1174
+ saturday: DAY_OF_WEEK.SAT,
1175
+ sunday: DAY_OF_WEEK.SUN
1176
+ };
1177
+ function mapTrybeImageToMedia(image) {
1178
+ if (!image) return void 0;
1179
+ return {
1180
+ id: image.id,
1181
+ url: image.url,
1182
+ originalUrl: image.original_url,
1183
+ fileName: image.file_name,
1184
+ mimeType: image.mime_type
1185
+ };
1186
+ }
1187
+ __name(mapTrybeImageToMedia, "mapTrybeImageToMedia");
1188
+ function mapTrybeWeekdays(weekdays) {
1189
+ return weekdays.map((day) => TRYBE_WEEKDAYS_MAPPING[day.toLowerCase()]);
1190
+ }
1191
+ __name(mapTrybeWeekdays, "mapTrybeWeekdays");
1192
+ function mapTrybePriceRuleToPriceMeta(priceRule, currency, index) {
1193
+ const normalizedCurrency = currency ? currency.toUpperCase() : "USD";
1194
+ if (!priceRule.weekdays || priceRule.weekdays.length === 0) {
1195
+ return [
1196
+ {
1197
+ id: BigInt(index),
1198
+ externalId: priceRule.id,
1199
+ status: BOOKABLE_ITEM_STATUS_ENUM.ACTIVE,
1200
+ price: priceRule.price,
1201
+ currency: normalizedCurrency,
1202
+ config: priceRule
1203
+ }
1204
+ ];
1205
+ }
1206
+ return [
1207
+ {
1208
+ id: BigInt(index),
1209
+ externalId: priceRule.id,
1210
+ status: BOOKABLE_ITEM_STATUS_ENUM.ACTIVE,
1211
+ price: priceRule.price,
1212
+ currency: normalizedCurrency,
1213
+ configuredForDays: mapTrybeWeekdays(priceRule.weekdays)
1214
+ }
1215
+ ];
1216
+ }
1217
+ __name(mapTrybePriceRuleToPriceMeta, "mapTrybePriceRuleToPriceMeta");
1218
+ function mapTrybePriceRulesToPrices(priceRules, currency, externalResourceId) {
1219
+ const normalizedCurrency = currency ? currency.toUpperCase() : "USD";
1220
+ return priceRules.map((priceRule, index) => ({
1221
+ id: BigInt(index + 1),
1222
+ label: void 0,
1223
+ currency: normalizedCurrency,
1224
+ price: priceRule.price,
1225
+ externalResourceId,
1226
+ configuredForDays: priceRule.weekdays ? mapTrybeWeekdays(priceRule.weekdays) : void 0,
1227
+ pricesMeta: mapTrybePriceRuleToPriceMeta(priceRule, currency, index + 1),
1228
+ config: priceRule
1229
+ }));
1230
+ }
1231
+ __name(mapTrybePriceRulesToPrices, "mapTrybePriceRulesToPrices");
1232
+ function mapTrybeAppointmentToBookableItem(appointment, index, linkedItems) {
1233
+ return {
1234
+ id: BigInt(index + 1),
1235
+ externalId: appointment.id,
1236
+ name: appointment.name,
1237
+ description: appointment.description,
1238
+ type: BOOKABLE_ITEM_TYPE_ENUM.APPOINTMENT,
1239
+ status: BOOKABLE_ITEM_STATUS_ENUM.ACTIVE,
1240
+ icon: mapTrybeImageToMedia(appointment.image),
1241
+ primaryAsset: mapTrybeImageToMedia(appointment.image),
1242
+ prices: mapTrybePriceRulesToPrices(appointment.price_rules, appointment.currency, appointment.id),
1243
+ linkedBookableItems: linkedItems,
1244
+ updatedAt: appointment.updated_at ? new Date(appointment.updated_at) : void 0,
1245
+ meta: {
1246
+ // All Trybe-specific fields that don't map to system response
1247
+ externalId: appointment.id,
1248
+ productCode: appointment.product_code,
1249
+ siteIds: appointment.site_ids,
1250
+ roomIds: appointment.room_ids,
1251
+ equipmentIds: appointment.equipment_ids,
1252
+ practitionerIds: appointment.practitioner_ids,
1253
+ durations: appointment.durations,
1254
+ endBuffer: appointment.end_buffer,
1255
+ startTimeInterval: appointment.start_time_interval,
1256
+ maxAdvanceBookingsInterval: appointment.max_advance_bookings_interval,
1257
+ minAdvanceBookingsInterval: appointment.min_advance_bookings_interval,
1258
+ tagIds: appointment.tag_ids,
1259
+ tags: appointment.tags,
1260
+ categoryIds: appointment.category_ids,
1261
+ offeredOnline: appointment.offered_online,
1262
+ private: appointment.private,
1263
+ visibility: appointment.visibility,
1264
+ customersOnly: appointment.customers_only,
1265
+ membersOnly: appointment.members_only,
1266
+ membershipBookingWindowsEnabled: appointment.membership_booking_windows_enabled,
1267
+ membershipBookingWindows: appointment.membership_booking_windows,
1268
+ trybeMeta: appointment.meta,
1269
+ upsellOfferings: appointment.upsell_offerings,
1270
+ crossSellOfferings: appointment.cross_sell_offerings,
1271
+ relatedRetailOfferings: appointment.related_retail_offerings,
1272
+ customerCancellationPermitted: appointment.customer_cancellation_permitted,
1273
+ customerCancellationMinDuration: appointment.customer_cancellation_min_duration,
1274
+ minGuests: appointment.min_guests,
1275
+ maxGuests: appointment.max_guests,
1276
+ allocateMultiCapacityRooms: appointment.allocate_multi_capacity_rooms,
1277
+ enquiriesEnabled: appointment.enquiries_enabled,
1278
+ revenueCentre: appointment.revenue_centre,
1279
+ includePricingOnCalendar: appointment.include_pricing_on_calendar,
1280
+ maxPerBasket: appointment.max_per_basket,
1281
+ maxPerGuest: appointment.max_per_guest,
1282
+ shopPractitionerSelectionEnabled: appointment.shop_practitioner_selection_enabled,
1283
+ deletedAt: appointment.deleted_at
1284
+ }
1285
+ };
1286
+ }
1287
+ __name(mapTrybeAppointmentToBookableItem, "mapTrybeAppointmentToBookableItem");
1288
+ function mapTrybeSessionToBookableItem(session, index, linkedItems) {
1289
+ return {
1290
+ id: BigInt(index + 1),
1291
+ externalId: session.id,
1292
+ name: session.name,
1293
+ description: session.description,
1294
+ type: BOOKABLE_ITEM_TYPE_ENUM.SESSION,
1295
+ status: BOOKABLE_ITEM_STATUS_ENUM.ACTIVE,
1296
+ icon: mapTrybeImageToMedia(session.image),
1297
+ primaryAsset: mapTrybeImageToMedia(session.image),
1298
+ prices: mapTrybePriceRulesToPrices(session.price_rules, session.currency, session.id),
1299
+ linkedBookableItems: linkedItems,
1300
+ updatedAt: session.updated_at ? new Date(session.updated_at) : void 0,
1301
+ meta: {
1302
+ // All Trybe-specific fields
1303
+ externalId: session.id,
1304
+ productCode: session.product_code,
1305
+ siteId: session.site_id,
1306
+ duration: session.duration,
1307
+ categoryIds: session.category_ids,
1308
+ offeredOnline: session.offered_online,
1309
+ private: session.private,
1310
+ visibility: session.visibility,
1311
+ customersOnly: session.customers_only,
1312
+ membersOnly: session.members_only,
1313
+ membershipBookingWindowsEnabled: session.membership_booking_windows_enabled,
1314
+ membershipBookingWindows: session.membership_booking_windows,
1315
+ maxBookingsPerMember: session.max_bookings_per_member,
1316
+ trybeMeta: session.meta,
1317
+ upsellOfferings: session.upsell_offerings,
1318
+ crossSellOfferings: session.cross_sell_offerings,
1319
+ relatedRetailOfferings: session.related_retail_offerings,
1320
+ customerCancellationPermitted: session.customer_cancellation_permitted,
1321
+ customerCancellationMinDuration: session.customer_cancellation_min_duration,
1322
+ waitlistEnabled: session.waitlist_enabled,
1323
+ maxAdvanceBookingsInterval: session.max_advance_bookings_interval,
1324
+ minAdvanceBookingsInterval: session.min_advance_bookings_interval,
1325
+ minGuests: session.min_guests,
1326
+ maxGuests: session.max_guests,
1327
+ maxBasketsPerSession: session.max_baskets_per_session,
1328
+ recurrenceGroups: session.recurrence_groups,
1329
+ revenueCentre: session.revenue_centre,
1330
+ includePricingOnCalendar: session.include_pricing_on_calendar,
1331
+ maxPerBasket: session.max_per_basket,
1332
+ maxPerGuest: session.max_per_guest,
1333
+ deletedAt: session.deleted_at
1334
+ }
1335
+ };
1336
+ }
1337
+ __name(mapTrybeSessionToBookableItem, "mapTrybeSessionToBookableItem");
1338
+ function mapTrybeCourseToBookableItem(course, index) {
1339
+ return {
1340
+ id: BigInt(index + 1),
1341
+ externalId: course.id,
1342
+ name: course.name,
1343
+ description: course.description,
1344
+ type: BOOKABLE_ITEM_TYPE_ENUM.COURSE,
1345
+ status: BOOKABLE_ITEM_STATUS_ENUM.ACTIVE,
1346
+ icon: mapTrybeImageToMedia(course.image),
1347
+ primaryAsset: mapTrybeImageToMedia(course.image),
1348
+ prices: mapTrybePriceRulesToPrices(course.price_rules, course.currency, course.id),
1349
+ updatedAt: course.updated_at ? new Date(course.updated_at) : void 0,
1350
+ meta: {
1351
+ // All Trybe-specific fields
1352
+ externalId: course.id,
1353
+ productCode: course.product_code,
1354
+ couponId: course.coupon_id,
1355
+ offerings: course.offerings.map((offering) => ({
1356
+ offeringType: offering.offering_type,
1357
+ offeringId: offering.offering_id,
1358
+ offeringName: offering.offering_name
1359
+ })),
1360
+ offeringType: course.offering_type,
1361
+ offeringId: course.offering_id,
1362
+ quantity: course.quantity,
1363
+ creditsValidityInterval: course.credits_validity_interval,
1364
+ siteId: course.site_id,
1365
+ categoryIds: course.category_ids,
1366
+ offeredOnline: course.offered_online,
1367
+ private: course.private,
1368
+ visibility: course.visibility,
1369
+ customersOnly: course.customers_only,
1370
+ membersOnly: course.members_only,
1371
+ trybeMeta: course.meta,
1372
+ upsellOfferings: course.upsell_offerings,
1373
+ crossSellOfferings: course.cross_sell_offerings,
1374
+ relatedRetailOfferings: course.related_retail_offerings,
1375
+ availabilityRules: course.availability_rules,
1376
+ revenueCentre: course.revenue_centre,
1377
+ deletedAt: course.deleted_at
1378
+ }
1379
+ };
1380
+ }
1381
+ __name(mapTrybeCourseToBookableItem, "mapTrybeCourseToBookableItem");
1382
+ function mapTrybeCategoryToBookableItemCategory(category, index) {
1383
+ return {
1384
+ id: BigInt(index + 1),
1385
+ externalId: category.id,
1386
+ name: category.name,
1387
+ meta: {
1388
+ voucherApplicable: category.voucher_applicable
1389
+ }
1390
+ };
1391
+ }
1392
+ __name(mapTrybeCategoryToBookableItemCategory, "mapTrybeCategoryToBookableItemCategory");
1393
+ function mapTrybeAppointmentsToSystemResponse(appointments, totalCount, courseLookup) {
1394
+ const records = appointments.map((apt, index) => {
1395
+ const linkedCourses = courseLookup?.get(apt.id) ?? [];
1396
+ const linkedItems = linkedCourses.map((course, courseIndex) => mapTrybeCourseToBookableItem(course, courseIndex));
1397
+ return mapTrybeAppointmentToBookableItem(apt, index, linkedItems.length > 0 ? linkedItems : void 0);
1398
+ });
1399
+ return {
1400
+ totalCount,
1401
+ records
1402
+ };
1403
+ }
1404
+ __name(mapTrybeAppointmentsToSystemResponse, "mapTrybeAppointmentsToSystemResponse");
1405
+ function mapTrybeSessionsToSystemResponse(sessions, totalCount, courseLookup) {
1406
+ const records = sessions.map((session, index) => {
1407
+ const linkedCourses = courseLookup?.get(session.id) ?? [];
1408
+ const linkedItems = linkedCourses.map((course, courseIndex) => mapTrybeCourseToBookableItem(course, courseIndex));
1409
+ return mapTrybeSessionToBookableItem(session, index, linkedItems.length > 0 ? linkedItems : void 0);
1410
+ });
1411
+ return {
1412
+ totalCount,
1413
+ records
1414
+ };
1415
+ }
1416
+ __name(mapTrybeSessionsToSystemResponse, "mapTrybeSessionsToSystemResponse");
1417
+ function mapTrybeCoursesToSystemResponse(courses, totalCount) {
1418
+ const records = courses.map((course, index) => mapTrybeCourseToBookableItem(course, index));
1419
+ return {
1420
+ totalCount,
1421
+ records
1422
+ };
1423
+ }
1424
+ __name(mapTrybeCoursesToSystemResponse, "mapTrybeCoursesToSystemResponse");
1425
+ function mapTrybeCategoriesToSystemResponse(categories, totalCount) {
1426
+ const records = categories.map((category, index) => mapTrybeCategoryToBookableItemCategory(category, index));
1427
+ return {
1428
+ totalCount,
1429
+ records
1430
+ };
1431
+ }
1432
+ __name(mapTrybeCategoriesToSystemResponse, "mapTrybeCategoriesToSystemResponse");
1433
+ function mapTrybeOfferingTypeToBookableItemType(offeringType) {
1434
+ switch (offeringType) {
1435
+ case TRYBE_OFFERING_TYPE_ENUM.APPOINTMENT:
1436
+ return BOOKABLE_ITEM_TYPE_ENUM.APPOINTMENT;
1437
+ case TRYBE_OFFERING_TYPE_ENUM.SESSION:
1438
+ return BOOKABLE_ITEM_TYPE_ENUM.SESSION;
1439
+ case TRYBE_OFFERING_TYPE_ENUM.COURSE:
1440
+ return BOOKABLE_ITEM_TYPE_ENUM.COURSE;
1441
+ default:
1442
+ return BOOKABLE_ITEM_TYPE_ENUM.APPOINTMENT;
1443
+ }
1444
+ }
1445
+ __name(mapTrybeOfferingTypeToBookableItemType, "mapTrybeOfferingTypeToBookableItemType");
1446
+ function mapTrybeCouponCodeOfferingToBookableItem(offering, index) {
1447
+ return {
1448
+ id: BigInt(index + 1),
1449
+ externalId: offering.offering_id,
1450
+ name: offering.offering_name,
1451
+ type: mapTrybeOfferingTypeToBookableItemType(offering.offering_type),
1452
+ status: BOOKABLE_ITEM_STATUS_ENUM.ACTIVE
1453
+ };
1454
+ }
1455
+ __name(mapTrybeCouponCodeOfferingToBookableItem, "mapTrybeCouponCodeOfferingToBookableItem");
1456
+ function mapTrybeCouponCodeOfferingsToSystemResponse(offerings) {
1457
+ const records = offerings.map((offering, index) => mapTrybeCouponCodeOfferingToBookableItem(offering, index));
1458
+ return {
1459
+ totalCount: records.length,
1460
+ records
1461
+ };
1462
+ }
1463
+ __name(mapTrybeCouponCodeOfferingsToSystemResponse, "mapTrybeCouponCodeOfferingsToSystemResponse");
1464
+ function groupByDate(items, getDateKey) {
1465
+ const result = {};
1466
+ for (const item of items) {
1467
+ const key = getDateKey(item);
1468
+ if (!result[key]) result[key] = [];
1469
+ result[key].push(item);
1470
+ }
1471
+ return result;
1472
+ }
1473
+ __name(groupByDate, "groupByDate");
1474
+ function mapTrybeSessionAvailabilityToSystemResponse(sessions) {
1475
+ const filtered = sessions.filter((s) => s.remaining_capacity > 0);
1476
+ const grouped = groupByDate(filtered, (s) => {
1477
+ const dateMatch = s.start_time.match(/^(\d{4}-\d{2}-\d{2})/);
1478
+ return dateMatch ? dateMatch[1] : "";
1479
+ });
1480
+ const dates = Object.entries(grouped).filter(([date]) => date !== "").map(([date, sessionList]) => {
1481
+ const time = sessionList.map((session) => {
1482
+ const fromTime = extractTimeFromIsoString(session.start_time);
1483
+ const toTime = extractTimeFromIsoString(session.end_time);
1484
+ const { start_time: _s, end_time: _e, ...meta } = session;
1485
+ const camelCaseMeta = convertKeysToCamelCase(meta);
1486
+ return {
1487
+ fromTime,
1488
+ toTime,
1489
+ meta: camelCaseMeta
1490
+ };
1491
+ });
1492
+ return {
1493
+ date: new Date(date),
1494
+ meta: {},
1495
+ time
1496
+ };
1497
+ }).sort((a, b) => a.date.getTime() - b.date.getTime());
1498
+ return {
1499
+ dates
1500
+ };
1501
+ }
1502
+ __name(mapTrybeSessionAvailabilityToSystemResponse, "mapTrybeSessionAvailabilityToSystemResponse");
1503
+ function mapTrybeAppointmentAvailabilityToSystemResponse(slots) {
1504
+ const filtered = slots.filter((s) => s.quantity_available > 0);
1505
+ const grouped = groupByDate(filtered, (s) => {
1506
+ const dateMatch = s.start_time.match(/^(\d{4}-\d{2}-\d{2})/);
1507
+ return dateMatch ? dateMatch[1] : "";
1508
+ });
1509
+ const dates = Object.entries(grouped).filter(([date]) => date !== "").map(([date, slotList]) => {
1510
+ const time = slotList.map((slot) => {
1511
+ const fromTime = extractTimeFromIsoString(slot.start_time);
1512
+ const toTime = extractTimeFromIsoString(slot.end_time);
1513
+ const { start_time: _s, end_time: _e, ...meta } = slot;
1514
+ const camelCaseMeta = convertKeysToCamelCase(meta);
1515
+ return {
1516
+ fromTime,
1517
+ toTime,
1518
+ meta: camelCaseMeta
1519
+ };
1520
+ });
1521
+ return {
1522
+ date: new Date(date),
1523
+ meta: {},
1524
+ time
1525
+ };
1526
+ }).sort((a, b) => a.date.getTime() - b.date.getTime());
1527
+ return {
1528
+ dates
1529
+ };
1530
+ }
1531
+ __name(mapTrybeAppointmentAvailabilityToSystemResponse, "mapTrybeAppointmentAvailabilityToSystemResponse");
1532
+
1533
+ // ../../packages/dvss-integration-trybe/src/capabilities/wellness/wellness-management.service.ts
1077
1534
  function _ts_decorate14(decorators, target, key, desc) {
1078
1535
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1079
1536
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -1081,12 +1538,250 @@ function _ts_decorate14(decorators, target, key, desc) {
1081
1538
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1082
1539
  }
1083
1540
  __name(_ts_decorate14, "_ts_decorate");
1541
+ function _ts_metadata11(k, v) {
1542
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1543
+ }
1544
+ __name(_ts_metadata11, "_ts_metadata");
1545
+ exports.TrybeWellnessManagement = class _TrybeWellnessManagement {
1546
+ static {
1547
+ __name(this, "TrybeWellnessManagement");
1548
+ }
1549
+ logger;
1550
+ trafficGatewayService;
1551
+ trybeAuthService;
1552
+ fileName = "wellness-management.service";
1553
+ constructor(logger, trafficGatewayService, trybeAuthService) {
1554
+ this.logger = logger;
1555
+ this.trafficGatewayService = trafficGatewayService;
1556
+ this.trybeAuthService = trybeAuthService;
1557
+ }
1558
+ fetchPractitioners() {
1559
+ throw new Error("Method not implemented.");
1560
+ }
1561
+ fetchWellnessAppointmentSession() {
1562
+ throw new Error("Method not implemented.");
1563
+ }
1564
+ checkWellnessAppointmentSessionAvailability() {
1565
+ throw new Error("Method not implemented.");
1566
+ }
1567
+ createWellnessAppointmentSessionOrder() {
1568
+ throw new Error("Method not implemented.");
1569
+ }
1570
+ addWellnessAppointmentSessionOrderItems() {
1571
+ throw new Error("Method not implemented.");
1572
+ }
1573
+ confirmWellnessAppointmentSessionOrder() {
1574
+ throw new Error("Method not implemented.");
1575
+ }
1576
+ async fetchAppointments(request, integration, loggedInUserId) {
1577
+ this.logger.info(loggedInUserId, this.fetchAppointments.name, this.fileName, `${_TrybeWellnessManagement.name} -> ${this.fetchAppointments.name} Called`, {
1578
+ request
1579
+ });
1580
+ const validatedIntegration = this.trybeAuthService.validateConfig(integration, loggedInUserId);
1581
+ const siteId = validatedIntegration.config.integrationConfig.siteId;
1582
+ if (request.shouldFetchAllAppointments && request.options?.page !== void 0) {
1583
+ throw new Error("Pagination options are not supported when fetching all appointments.");
1584
+ }
1585
+ const query = new URLSearchParams();
1586
+ if (request.options?.page != null) {
1587
+ query.set("page", String(request.options.page));
1588
+ }
1589
+ if (request.options?.count != null) {
1590
+ query.set("per_page", String(request.options.count));
1591
+ }
1592
+ const queryString = query.toString();
1593
+ const apiUrl = `/shop/appointment-types?site_id=${siteId}` + (request.practitionerIds && request.practitionerIds.length > 0 ? `&practitioner_id=${request.practitionerIds.join(",")}` : "") + (queryString ? `&${queryString}` : "");
1594
+ const firstPageResponse = await this.trafficGatewayService.executeIntegrationRequest({
1595
+ apiMethod: HTTP_METHOD.GET,
1596
+ url: apiUrl,
1597
+ baseUrl: validatedIntegration.config.platformConfig.baseUrl,
1598
+ headers: validatedIntegration.headers
1599
+ }, validatedIntegration, loggedInUserId);
1600
+ const records = await fetchAllPages(firstPageResponse, request.shouldFetchAllAppointments, (page) => this.trafficGatewayService.executeIntegrationRequest({
1601
+ apiMethod: HTTP_METHOD.GET,
1602
+ url: `${apiUrl}&page=${page}`,
1603
+ baseUrl: validatedIntegration.config.platformConfig.baseUrl,
1604
+ headers: validatedIntegration.headers
1605
+ }, validatedIntegration, loggedInUserId));
1606
+ return mapTrybeAppointmentsToSystemResponse(records, firstPageResponse.meta.total);
1607
+ }
1608
+ async fetchSessions(request, integration, loggedInUserId) {
1609
+ this.logger.info(loggedInUserId, this.fetchSessions.name, this.fileName, `${_TrybeWellnessManagement.name} -> ${this.fetchSessions.name} Called`, {
1610
+ request
1611
+ });
1612
+ const validatedIntegration = this.trybeAuthService.validateConfig(integration, loggedInUserId);
1613
+ const siteId = validatedIntegration.config.integrationConfig.siteId;
1614
+ if (request.shouldFetchAllSessions && request.options?.page !== void 0) {
1615
+ throw new Error("Pagination options are not supported when fetching all sessions.");
1616
+ }
1617
+ const query = new URLSearchParams();
1618
+ if (request.options?.page != null) {
1619
+ query.set("page", String(request.options.page));
1620
+ }
1621
+ if (request.options?.count != null) {
1622
+ query.set("per_page", String(request.options.count));
1623
+ }
1624
+ const queryString = query.toString();
1625
+ const apiUrl = `/shop/session-types?site_id=${siteId}` + (request.practitionerIds && request.practitionerIds.length > 0 ? `&practitioner_id=${request.practitionerIds.join(",")}` : "") + (queryString ? `&${queryString}` : "");
1626
+ const firstPageResponse = await this.trafficGatewayService.executeIntegrationRequest({
1627
+ apiMethod: HTTP_METHOD.GET,
1628
+ url: apiUrl,
1629
+ baseUrl: validatedIntegration.config.platformConfig.baseUrl,
1630
+ headers: validatedIntegration.headers
1631
+ }, validatedIntegration, loggedInUserId);
1632
+ const records = await fetchAllPages(firstPageResponse, request.shouldFetchAllSessions, (page) => this.trafficGatewayService.executeIntegrationRequest({
1633
+ apiMethod: HTTP_METHOD.GET,
1634
+ url: `${apiUrl}&page=${page}`,
1635
+ baseUrl: validatedIntegration.config.platformConfig.baseUrl,
1636
+ headers: validatedIntegration.headers
1637
+ }, validatedIntegration, loggedInUserId));
1638
+ return mapTrybeSessionsToSystemResponse(records, firstPageResponse.meta.total);
1639
+ }
1640
+ async fetchCourses(request, integration, loggedInUserId) {
1641
+ this.logger.info(loggedInUserId, this.fetchCourses.name, this.fileName, `${_TrybeWellnessManagement.name} -> ${this.fetchCourses.name} Called`, {
1642
+ request
1643
+ });
1644
+ const validatedIntegration = this.trybeAuthService.validateConfig(integration, loggedInUserId);
1645
+ const organisationId = validatedIntegration.config.integrationConfig.organisationId;
1646
+ if (request.shouldFetchAllCourses && request.options?.page !== void 0) {
1647
+ throw new Error("Pagination options are not supported when fetching all courses.");
1648
+ }
1649
+ const query = new URLSearchParams();
1650
+ if (request.options?.page != null) {
1651
+ query.set("page", String(request.options.page));
1652
+ }
1653
+ if (request.options?.count != null) {
1654
+ query.set("per_page", String(request.options.count));
1655
+ }
1656
+ const queryString = query.toString();
1657
+ const apiUrl = `/shop/course-types?organisation_id=${organisationId}` + (queryString ? `&${queryString}` : "");
1658
+ const firstPageResponse = await this.trafficGatewayService.executeIntegrationRequest({
1659
+ apiMethod: HTTP_METHOD.GET,
1660
+ url: apiUrl,
1661
+ baseUrl: validatedIntegration.config.platformConfig.baseUrl,
1662
+ headers: validatedIntegration.headers
1663
+ }, validatedIntegration, loggedInUserId);
1664
+ const records = await fetchAllPages(firstPageResponse, request.shouldFetchAllCourses, (page) => this.trafficGatewayService.executeIntegrationRequest({
1665
+ apiMethod: HTTP_METHOD.GET,
1666
+ url: `${apiUrl}&page=${page}`,
1667
+ baseUrl: validatedIntegration.config.platformConfig.baseUrl,
1668
+ headers: validatedIntegration.headers
1669
+ }, validatedIntegration, loggedInUserId));
1670
+ return mapTrybeCoursesToSystemResponse(records, firstPageResponse.meta.total);
1671
+ }
1672
+ async fetchCategories(request, integration, loggedInUserId) {
1673
+ this.logger.info(loggedInUserId, this.fetchCategories.name, this.fileName, `${_TrybeWellnessManagement.name} -> ${this.fetchCategories.name} Called`, {
1674
+ request
1675
+ });
1676
+ const validatedIntegration = this.trybeAuthService.validateConfig(integration, loggedInUserId);
1677
+ const organisationId = validatedIntegration.config.integrationConfig.organisationId;
1678
+ if (request.shouldFetchAllCategories && request.options?.page !== void 0) {
1679
+ throw new Error("Pagination options are not supported when fetching all categories.");
1680
+ }
1681
+ const query = new URLSearchParams();
1682
+ if (request.options?.page != null) {
1683
+ query.set("page", String(request.options.page));
1684
+ }
1685
+ if (request.options?.count != null) {
1686
+ query.set("per_page", String(request.options.count));
1687
+ }
1688
+ const queryString = query.toString();
1689
+ const apiUrl = `/shop/organisations/${organisationId}/categories` + (queryString ? `?${queryString}` : "");
1690
+ const firstPageResponse = await this.trafficGatewayService.executeIntegrationRequest({
1691
+ apiMethod: HTTP_METHOD.GET,
1692
+ url: apiUrl,
1693
+ baseUrl: validatedIntegration.config.platformConfig.baseUrl,
1694
+ headers: validatedIntegration.headers
1695
+ }, validatedIntegration, loggedInUserId);
1696
+ const records = await fetchAllPages(firstPageResponse, request.shouldFetchAllCategories, (page) => this.trafficGatewayService.executeIntegrationRequest({
1697
+ apiMethod: HTTP_METHOD.GET,
1698
+ url: `${apiUrl}${apiUrl.includes("?") ? "&" : "?"}page=${page}`,
1699
+ baseUrl: validatedIntegration.config.platformConfig.baseUrl,
1700
+ headers: validatedIntegration.headers
1701
+ }, validatedIntegration, loggedInUserId));
1702
+ return mapTrybeCategoriesToSystemResponse(records, firstPageResponse.meta.total);
1703
+ }
1704
+ async fetchBookableItemsFromCredit(request, integration, loggedInUserId) {
1705
+ this.logger.info(loggedInUserId, this.fetchBookableItemsFromCredit.name, this.fileName, `${_TrybeWellnessManagement.name} -> ${this.fetchBookableItemsFromCredit.name} Called`, {
1706
+ request
1707
+ });
1708
+ const validatedIntegration = this.trybeAuthService.validateConfig(integration, loggedInUserId);
1709
+ const query = new URLSearchParams();
1710
+ if (request.options?.page != null) {
1711
+ query.set("page", String(request.options.page));
1712
+ }
1713
+ if (request.options?.count != null) {
1714
+ query.set("per_page", String(request.options.count));
1715
+ }
1716
+ const queryString = query.toString();
1717
+ const apiUrl = `/shop/coupon-codes/${request.couponCodeId}/offering-discounts` + (queryString ? `?${queryString}` : "");
1718
+ const response = await this.trafficGatewayService.executeIntegrationRequest({
1719
+ apiMethod: HTTP_METHOD.GET,
1720
+ url: apiUrl,
1721
+ baseUrl: validatedIntegration.config.platformConfig.baseUrl,
1722
+ headers: validatedIntegration.headers
1723
+ }, validatedIntegration, loggedInUserId);
1724
+ return mapTrybeCouponCodeOfferingsToSystemResponse(response.data.offerings);
1725
+ }
1726
+ async fetchSessionAvailabilityForOffering(request, integration, loggedInUserId) {
1727
+ this.logger.info(loggedInUserId, this.fetchSessionAvailabilityForOffering.name, this.fileName, `${_TrybeWellnessManagement.name} -> ${this.fetchSessionAvailabilityForOffering.name} Called`, {
1728
+ request
1729
+ });
1730
+ const validatedIntegration = this.trybeAuthService.validateConfig(integration, loggedInUserId);
1731
+ const siteId = validatedIntegration.config.integrationConfig.siteId;
1732
+ const formattedDateTimeFrom = formatDateForTrybe(request.dateTimeFrom, true);
1733
+ const formattedDateTimeTo = formatDateForTrybe(request.dateTimeTo, false);
1734
+ const apiUrl = `/shop/item-availability/sessions/${siteId}/${request.externalOfferingBookableItemId}?date_time_from=${encodeURIComponent(formattedDateTimeFrom)}&date_time_to=${encodeURIComponent(formattedDateTimeTo)}&offeringId=${request.externalOfferingBookableItemId}`;
1735
+ const response = await this.trafficGatewayService.executeIntegrationRequest({
1736
+ apiMethod: HTTP_METHOD.GET,
1737
+ url: apiUrl,
1738
+ baseUrl: validatedIntegration.config.platformConfig.baseUrl,
1739
+ headers: validatedIntegration.headers
1740
+ }, validatedIntegration, loggedInUserId);
1741
+ return mapTrybeSessionAvailabilityToSystemResponse(response.data);
1742
+ }
1743
+ async fetchAppointmentAvailabilityForOffering(request, integration, loggedInUserId) {
1744
+ this.logger.info(loggedInUserId, this.fetchAppointmentAvailabilityForOffering.name, this.fileName, `${_TrybeWellnessManagement.name} -> ${this.fetchAppointmentAvailabilityForOffering.name} Called`, {
1745
+ request
1746
+ });
1747
+ const validatedIntegration = this.trybeAuthService.validateConfig(integration, loggedInUserId);
1748
+ const siteId = validatedIntegration.config.integrationConfig.siteId;
1749
+ const formattedDateTimeFrom = formatDateForTrybe(request.dateTimeFrom, true);
1750
+ const formattedDateTimeTo = formatDateForTrybe(request.dateTimeTo, false);
1751
+ const apiUrl = `/shop/item-availability/appointment-slots/${siteId}/${request.externalOfferingBookableItemId}?date_time_from=${encodeURIComponent(formattedDateTimeFrom)}&date_time_to=${encodeURIComponent(formattedDateTimeTo)}&OfferingID=${request.externalOfferingBookableItemId}`;
1752
+ const response = await this.trafficGatewayService.executeIntegrationRequest({
1753
+ apiMethod: HTTP_METHOD.GET,
1754
+ url: apiUrl,
1755
+ baseUrl: validatedIntegration.config.platformConfig.baseUrl,
1756
+ headers: validatedIntegration.headers
1757
+ }, validatedIntegration, loggedInUserId);
1758
+ return mapTrybeAppointmentAvailabilityToSystemResponse(response.data);
1759
+ }
1760
+ };
1761
+ exports.TrybeWellnessManagement = _ts_decorate14([
1762
+ common.Injectable(),
1763
+ _ts_metadata11("design:type", Function),
1764
+ _ts_metadata11("design:paramtypes", [
1765
+ typeof dvssBackendModuleUtility.LoggerService === "undefined" ? Object : dvssBackendModuleUtility.LoggerService,
1766
+ typeof exports.TrafficGatewayService === "undefined" ? Object : exports.TrafficGatewayService,
1767
+ typeof exports.TrybeAuthService === "undefined" ? Object : exports.TrybeAuthService
1768
+ ])
1769
+ ], exports.TrybeWellnessManagement);
1770
+
1771
+ // ../../packages/dvss-integration-trybe/src/app.module.ts
1772
+ function _ts_decorate15(decorators, target, key, desc) {
1773
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1774
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1775
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1776
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1777
+ }
1778
+ __name(_ts_decorate15, "_ts_decorate");
1084
1779
  exports.IntegrationTrybeModule = class AppModule2 {
1085
1780
  static {
1086
1781
  __name(this, "AppModule");
1087
1782
  }
1088
1783
  };
1089
- exports.IntegrationTrybeModule = _ts_decorate14([
1784
+ exports.IntegrationTrybeModule = _ts_decorate15([
1090
1785
  common.Module({
1091
1786
  imports: [
1092
1787
  // Load environment variables from root .env file
@@ -1105,44 +1800,32 @@ exports.IntegrationTrybeModule = _ts_decorate14([
1105
1800
  AppService2,
1106
1801
  exports.TrybeAuthService,
1107
1802
  exports.TrybeCustomerManagement,
1108
- exports.TrybeCreditBooking
1803
+ exports.TrybeCreditBooking,
1804
+ exports.TrybeWellnessManagement
1109
1805
  ],
1110
1806
  exports: [
1111
1807
  exports.TrybeAuthService,
1112
1808
  exports.TrybeCustomerManagement,
1113
- exports.TrybeCreditBooking
1809
+ exports.TrybeCreditBooking,
1810
+ exports.TrybeWellnessManagement
1114
1811
  ]
1115
1812
  })
1116
1813
  ], exports.IntegrationTrybeModule);
1117
1814
 
1118
- // ../../packages/dvss-integration-trybe/src/capabilities/package-management/package-management.service.ts
1119
- var TrybePackageManagement = class {
1120
- static {
1121
- __name(this, "TrybePackageManagement");
1122
- }
1123
- };
1124
-
1125
- // ../../packages/dvss-integration-trybe/src/capabilities/wellness/appointment-booking.service.ts
1126
- var TrybeWellnessAppointmentBooking = class extends BaseWellnessAppointmentBooking {
1127
- static {
1128
- __name(this, "TrybeWellnessAppointmentBooking");
1129
- }
1130
- };
1131
-
1132
1815
  // src/app.module.ts
1133
- function _ts_decorate15(decorators, target, key, desc) {
1816
+ function _ts_decorate16(decorators, target, key, desc) {
1134
1817
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1135
1818
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1136
1819
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1137
1820
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1138
1821
  }
1139
- __name(_ts_decorate15, "_ts_decorate");
1822
+ __name(_ts_decorate16, "_ts_decorate");
1140
1823
  exports.OfferingIntegrationManager = class AppModule3 {
1141
1824
  static {
1142
1825
  __name(this, "AppModule");
1143
1826
  }
1144
1827
  };
1145
- exports.OfferingIntegrationManager = _ts_decorate15([
1828
+ exports.OfferingIntegrationManager = _ts_decorate16([
1146
1829
  common.Module({
1147
1830
  imports: [
1148
1831
  exports.IntegrationTrybeModule,
@@ -1163,6 +1846,8 @@ exports.OfferingIntegrationManager = _ts_decorate15([
1163
1846
  })
1164
1847
  ], exports.OfferingIntegrationManager);
1165
1848
 
1849
+ exports.BOOKABLE_ITEM_STATUS_ENUM = BOOKABLE_ITEM_STATUS_ENUM;
1850
+ exports.BOOKABLE_ITEM_TYPE_ENUM = BOOKABLE_ITEM_TYPE_ENUM;
1166
1851
  exports.BaseAccountingContactManagement = BaseAccountingContactManagement;
1167
1852
  exports.BaseAccountingCreditNoteManagement = BaseAccountingCreditNoteManagement;
1168
1853
  exports.BaseAccountingCustomerManagement = BaseAccountingCustomerManagement;
@@ -1179,14 +1864,18 @@ exports.BasePackageManagement = BasePackageManagement;
1179
1864
  exports.BasePayment = BasePayment;
1180
1865
  exports.BasePaymentMethodManagement = BasePaymentMethodManagement;
1181
1866
  exports.BasePaymentUserManagement = BasePaymentUserManagement;
1182
- exports.BaseWellnessAppointmentBooking = BaseWellnessAppointmentBooking;
1867
+ exports.BaseWellnessManagement = BaseWellnessManagement;
1183
1868
  exports.CREDIT_FILTER_BY_ENUM = CREDIT_FILTER_BY_ENUM;
1184
1869
  exports.CREDIT_STATUS_ENUM = CREDIT_STATUS_ENUM;
1185
1870
  exports.CREDIT_TYPE_ENUM = CREDIT_TYPE_ENUM;
1871
+ exports.DAY_OF_WEEK = DAY_OF_WEEK;
1186
1872
  exports.HTTP_METHOD = HTTP_METHOD;
1187
1873
  exports.INTEGRATION_PROVIDER_ENUM = INTEGRATION_PROVIDER_ENUM;
1188
1874
  exports.TRAFFIC_ROUTER_CONFIGURATION_STORE_KEY = TRAFFIC_ROUTER_CONFIGURATION_STORE_KEY;
1189
- exports.TrybePackageManagement = TrybePackageManagement;
1190
- exports.TrybeWellnessAppointmentBooking = TrybeWellnessAppointmentBooking;
1875
+ exports.TRYBE_OFFERING_TYPE_ENUM = TRYBE_OFFERING_TYPE_ENUM;
1876
+ exports.convertKeysToCamelCase = convertKeysToCamelCase;
1877
+ exports.extractTimeFromIsoString = extractTimeFromIsoString;
1878
+ exports.fetchAllPages = fetchAllPages;
1879
+ exports.formatDateForTrybe = formatDateForTrybe;
1191
1880
  //# sourceMappingURL=index.js.map
1192
1881
  //# sourceMappingURL=index.js.map