@foxscheduling/shared 0.1.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 (260) hide show
  1. package/README.md +56 -0
  2. package/dist/cjs/constants/emailUnsubscribeReasons.cjs +13 -0
  3. package/dist/cjs/constants/emailUnsubscribeReasons.d.ts +4 -0
  4. package/dist/cjs/constants/emailUnsubscribeReasons.d.ts.map +1 -0
  5. package/dist/cjs/index.cjs +24 -0
  6. package/dist/cjs/index.d.ts +9 -0
  7. package/dist/cjs/index.d.ts.map +1 -0
  8. package/dist/cjs/types/db.availability.cjs +12 -0
  9. package/dist/cjs/types/db.availability.d.ts +33 -0
  10. package/dist/cjs/types/db.availability.d.ts.map +1 -0
  11. package/dist/cjs/types/db.booking.cjs +2 -0
  12. package/dist/cjs/types/db.booking.d.ts +101 -0
  13. package/dist/cjs/types/db.booking.d.ts.map +1 -0
  14. package/dist/cjs/types/db.cjs +2 -0
  15. package/dist/cjs/types/db.customers.cjs +2 -0
  16. package/dist/cjs/types/db.customers.d.ts +14 -0
  17. package/dist/cjs/types/db.customers.d.ts.map +1 -0
  18. package/dist/cjs/types/db.d.ts +11 -0
  19. package/dist/cjs/types/db.d.ts.map +1 -0
  20. package/dist/cjs/types/db.directory.cjs +2 -0
  21. package/dist/cjs/types/db.directory.d.ts +38 -0
  22. package/dist/cjs/types/db.directory.d.ts.map +1 -0
  23. package/dist/cjs/types/db.emailFlow.cjs +2 -0
  24. package/dist/cjs/types/db.emailFlow.d.ts +29 -0
  25. package/dist/cjs/types/db.emailFlow.d.ts.map +1 -0
  26. package/dist/cjs/types/db.mcpUserContext.cjs +2 -0
  27. package/dist/cjs/types/db.mcpUserContext.d.ts +29 -0
  28. package/dist/cjs/types/db.mcpUserContext.d.ts.map +1 -0
  29. package/dist/cjs/types/db.notification.cjs +2 -0
  30. package/dist/cjs/types/db.notification.d.ts +27 -0
  31. package/dist/cjs/types/db.notification.d.ts.map +1 -0
  32. package/dist/cjs/types/db.oauth.cjs +2 -0
  33. package/dist/cjs/types/db.oauth.d.ts +55 -0
  34. package/dist/cjs/types/db.oauth.d.ts.map +1 -0
  35. package/dist/cjs/types/db.partnerApiKey.cjs +2 -0
  36. package/dist/cjs/types/db.partnerApiKey.d.ts +15 -0
  37. package/dist/cjs/types/db.partnerApiKey.d.ts.map +1 -0
  38. package/dist/cjs/types/db.paymentPending.cjs +2 -0
  39. package/dist/cjs/types/db.paymentPending.d.ts +16 -0
  40. package/dist/cjs/types/db.paymentPending.d.ts.map +1 -0
  41. package/dist/cjs/types/db.service.cjs +15 -0
  42. package/dist/cjs/types/db.service.d.ts +145 -0
  43. package/dist/cjs/types/db.service.d.ts.map +1 -0
  44. package/dist/cjs/types/db.tax.cjs +2 -0
  45. package/dist/cjs/types/db.tax.d.ts.map +1 -0
  46. package/dist/cjs/types/db.tenant.cjs +2 -0
  47. package/dist/cjs/types/db.tenant.d.ts +118 -0
  48. package/dist/cjs/types/db.tenant.d.ts.map +1 -0
  49. package/dist/cjs/types/db.tenantGroupedStat.cjs +2 -0
  50. package/dist/cjs/types/db.tenantGroupedStat.d.ts +13 -0
  51. package/dist/cjs/types/db.tenantGroupedStat.d.ts.map +1 -0
  52. package/dist/cjs/types/db.user.cjs +7 -0
  53. package/dist/cjs/types/db.user.d.ts +81 -0
  54. package/dist/cjs/types/db.user.d.ts.map +1 -0
  55. package/dist/cjs/types/db.userConfirmation.cjs +2 -0
  56. package/dist/cjs/types/db.userConfirmation.d.ts +17 -0
  57. package/dist/cjs/types/db.userConfirmation.d.ts.map +1 -0
  58. package/dist/cjs/types/db.userLoginSession.cjs +2 -0
  59. package/dist/cjs/types/db.userLoginSession.d.ts +28 -0
  60. package/dist/cjs/types/db.userLoginSession.d.ts.map +1 -0
  61. package/dist/cjs/types/db.webhook.cjs +10 -0
  62. package/dist/cjs/types/db.webhook.d.ts +16 -0
  63. package/dist/cjs/types/db.webhook.d.ts.map +1 -0
  64. package/dist/cjs/types/discover.cjs +2 -0
  65. package/dist/cjs/types/discover.d.ts +45 -0
  66. package/dist/cjs/types/discover.d.ts.map +1 -0
  67. package/dist/cjs/types/errorCodes.cjs +150 -0
  68. package/dist/cjs/types/errorCodes.d.ts +147 -0
  69. package/dist/cjs/types/errorCodes.d.ts.map +1 -0
  70. package/dist/cjs/types/index.cjs +44 -0
  71. package/dist/cjs/types/index.d.ts +84 -0
  72. package/dist/cjs/types/index.d.ts.map +1 -0
  73. package/dist/cjs/types/oauthScopes.cjs +33 -0
  74. package/dist/cjs/types/oauthScopes.d.ts +7 -0
  75. package/dist/cjs/types/oauthScopes.d.ts.map +1 -0
  76. package/dist/cjs/types/partnerDto.cjs +2 -0
  77. package/dist/cjs/types/partnerDto.d.ts +69 -0
  78. package/dist/cjs/types/partnerDto.d.ts.map +1 -0
  79. package/dist/cjs/types/pricing.cjs +2 -0
  80. package/dist/cjs/types/pricing.d.ts +31 -0
  81. package/dist/cjs/types/pricing.d.ts.map +1 -0
  82. package/dist/cjs/types/requestResponse.cjs +2 -0
  83. package/dist/cjs/types/requestResponse.d.ts +93 -0
  84. package/dist/cjs/types/requestResponse.d.ts.map +1 -0
  85. package/dist/cjs/types/subscription.cjs +2 -0
  86. package/dist/cjs/types/subscription.d.ts +50 -0
  87. package/dist/cjs/types/subscription.d.ts.map +1 -0
  88. package/dist/cjs/utils/bookingEmbed.cjs +178 -0
  89. package/dist/cjs/utils/bookingEmbed.d.ts +61 -0
  90. package/dist/cjs/utils/bookingEmbed.d.ts.map +1 -0
  91. package/dist/cjs/utils/bookingPageIcons.cjs +218 -0
  92. package/dist/cjs/utils/bookingPageIcons.d.ts +160 -0
  93. package/dist/cjs/utils/bookingPageIcons.d.ts.map +1 -0
  94. package/dist/cjs/utils/bookingProviders.cjs +27 -0
  95. package/dist/cjs/utils/bookingProviders.d.ts +25 -0
  96. package/dist/cjs/utils/bookingProviders.d.ts.map +1 -0
  97. package/dist/cjs/utils/currencies.cjs +148 -0
  98. package/dist/cjs/utils/currencies.d.ts +6 -0
  99. package/dist/cjs/utils/currencies.d.ts.map +1 -0
  100. package/dist/cjs/utils/dateTime.cjs +192 -0
  101. package/dist/cjs/utils/dateTime.d.ts +57 -0
  102. package/dist/cjs/utils/dateTime.d.ts.map +1 -0
  103. package/dist/cjs/utils/embedFrameLoader.cjs +76 -0
  104. package/dist/cjs/utils/embedFrameLoader.d.ts +15 -0
  105. package/dist/cjs/utils/embedFrameLoader.d.ts.map +1 -0
  106. package/dist/cjs/utils/extensionToContentType.cjs +24 -0
  107. package/dist/cjs/utils/extensionToContentType.d.ts +21 -0
  108. package/dist/cjs/utils/extensionToContentType.d.ts.map +1 -0
  109. package/dist/cjs/utils/generateUsername.cjs +7 -0
  110. package/dist/cjs/utils/generateUsername.d.ts.map +1 -0
  111. package/dist/cjs/utils/index.cjs +65 -0
  112. package/dist/cjs/utils/index.d.ts +26 -0
  113. package/dist/cjs/utils/index.d.ts.map +1 -0
  114. package/dist/cjs/utils/random.cjs +13 -0
  115. package/dist/cjs/utils/random.d.ts +3 -0
  116. package/dist/cjs/utils/random.d.ts.map +1 -0
  117. package/dist/cjs/utils/serviceReminderLabels.cjs +22 -0
  118. package/dist/cjs/utils/serviceReminderLabels.d.ts +5 -0
  119. package/dist/cjs/utils/serviceReminderLabels.d.ts.map +1 -0
  120. package/dist/cjs/utils/tenantSlug.cjs +299 -0
  121. package/dist/cjs/utils/tenantSlug.d.ts +7 -0
  122. package/dist/cjs/utils/tenantSlug.d.ts.map +1 -0
  123. package/dist/cjs/utils/textSlug.cjs +14 -0
  124. package/dist/cjs/utils/textSlug.d.ts +3 -0
  125. package/dist/cjs/utils/textSlug.d.ts.map +1 -0
  126. package/dist/cjs/utils/timezone.cjs +96 -0
  127. package/dist/cjs/utils/timezone.d.ts +2 -0
  128. package/dist/cjs/utils/timezone.d.ts.map +1 -0
  129. package/dist/cjs/utils/ucfirst.cjs +9 -0
  130. package/dist/cjs/utils/ucfirst.d.ts +2 -0
  131. package/dist/cjs/utils/ucfirst.d.ts.map +1 -0
  132. package/dist/constants/emailUnsubscribeReasons.d.ts +4 -0
  133. package/dist/constants/emailUnsubscribeReasons.d.ts.map +1 -0
  134. package/dist/constants/emailUnsubscribeReasons.js +10 -0
  135. package/dist/index.d.ts +9 -0
  136. package/dist/index.d.ts.map +1 -0
  137. package/dist/index.js +8 -0
  138. package/dist/types/db.availability.d.ts +33 -0
  139. package/dist/types/db.availability.d.ts.map +1 -0
  140. package/dist/types/db.availability.js +9 -0
  141. package/dist/types/db.booking.d.ts +101 -0
  142. package/dist/types/db.booking.d.ts.map +1 -0
  143. package/dist/types/db.booking.js +1 -0
  144. package/dist/types/db.customers.d.ts +14 -0
  145. package/dist/types/db.customers.d.ts.map +1 -0
  146. package/dist/types/db.customers.js +1 -0
  147. package/dist/types/db.d.ts +11 -0
  148. package/dist/types/db.d.ts.map +1 -0
  149. package/dist/types/db.directory.d.ts +38 -0
  150. package/dist/types/db.directory.d.ts.map +1 -0
  151. package/dist/types/db.directory.js +1 -0
  152. package/dist/types/db.emailFlow.d.ts +29 -0
  153. package/dist/types/db.emailFlow.d.ts.map +1 -0
  154. package/dist/types/db.emailFlow.js +1 -0
  155. package/dist/types/db.js +1 -0
  156. package/dist/types/db.mcpUserContext.d.ts +29 -0
  157. package/dist/types/db.mcpUserContext.d.ts.map +1 -0
  158. package/dist/types/db.mcpUserContext.js +1 -0
  159. package/dist/types/db.notification.d.ts +27 -0
  160. package/dist/types/db.notification.d.ts.map +1 -0
  161. package/dist/types/db.notification.js +1 -0
  162. package/dist/types/db.oauth.d.ts +55 -0
  163. package/dist/types/db.oauth.d.ts.map +1 -0
  164. package/dist/types/db.oauth.js +1 -0
  165. package/dist/types/db.partnerApiKey.d.ts +15 -0
  166. package/dist/types/db.partnerApiKey.d.ts.map +1 -0
  167. package/dist/types/db.partnerApiKey.js +1 -0
  168. package/dist/types/db.paymentPending.d.ts +16 -0
  169. package/dist/types/db.paymentPending.d.ts.map +1 -0
  170. package/dist/types/db.paymentPending.js +1 -0
  171. package/dist/types/db.service.d.ts +145 -0
  172. package/dist/types/db.service.d.ts.map +1 -0
  173. package/dist/types/db.service.js +12 -0
  174. package/dist/types/db.tax.d.ts.map +1 -0
  175. package/dist/types/db.tenant.d.ts +118 -0
  176. package/dist/types/db.tenant.d.ts.map +1 -0
  177. package/dist/types/db.tenant.js +1 -0
  178. package/dist/types/db.tenantGroupedStat.d.ts +13 -0
  179. package/dist/types/db.tenantGroupedStat.d.ts.map +1 -0
  180. package/dist/types/db.tenantGroupedStat.js +1 -0
  181. package/dist/types/db.user.d.ts +81 -0
  182. package/dist/types/db.user.d.ts.map +1 -0
  183. package/dist/types/db.user.js +4 -0
  184. package/dist/types/db.userConfirmation.d.ts +17 -0
  185. package/dist/types/db.userConfirmation.d.ts.map +1 -0
  186. package/dist/types/db.userConfirmation.js +1 -0
  187. package/dist/types/db.userLoginSession.d.ts +28 -0
  188. package/dist/types/db.userLoginSession.d.ts.map +1 -0
  189. package/dist/types/db.userLoginSession.js +1 -0
  190. package/dist/types/db.webhook.d.ts +16 -0
  191. package/dist/types/db.webhook.d.ts.map +1 -0
  192. package/dist/types/db.webhook.js +7 -0
  193. package/dist/types/discover.d.ts +45 -0
  194. package/dist/types/discover.d.ts.map +1 -0
  195. package/dist/types/discover.js +1 -0
  196. package/dist/types/errorCodes.d.ts +147 -0
  197. package/dist/types/errorCodes.d.ts.map +1 -0
  198. package/dist/types/errorCodes.js +147 -0
  199. package/dist/types/index.d.ts +84 -0
  200. package/dist/types/index.d.ts.map +1 -0
  201. package/dist/types/index.js +28 -0
  202. package/dist/types/oauthScopes.d.ts +7 -0
  203. package/dist/types/oauthScopes.d.ts.map +1 -0
  204. package/dist/types/oauthScopes.js +28 -0
  205. package/dist/types/partnerDto.d.ts +69 -0
  206. package/dist/types/partnerDto.d.ts.map +1 -0
  207. package/dist/types/partnerDto.js +1 -0
  208. package/dist/types/pricing.d.ts +31 -0
  209. package/dist/types/pricing.d.ts.map +1 -0
  210. package/dist/types/pricing.js +1 -0
  211. package/dist/types/requestResponse.d.ts +93 -0
  212. package/dist/types/requestResponse.d.ts.map +1 -0
  213. package/dist/types/requestResponse.js +1 -0
  214. package/dist/types/subscription.d.ts +50 -0
  215. package/dist/types/subscription.d.ts.map +1 -0
  216. package/dist/types/subscription.js +1 -0
  217. package/dist/utils/bookingEmbed.d.ts +61 -0
  218. package/dist/utils/bookingEmbed.d.ts.map +1 -0
  219. package/dist/utils/bookingEmbed.js +161 -0
  220. package/dist/utils/bookingPageIcons.d.ts +160 -0
  221. package/dist/utils/bookingPageIcons.d.ts.map +1 -0
  222. package/dist/utils/bookingPageIcons.js +214 -0
  223. package/dist/utils/bookingProviders.d.ts +25 -0
  224. package/dist/utils/bookingProviders.d.ts.map +1 -0
  225. package/dist/utils/bookingProviders.js +23 -0
  226. package/dist/utils/currencies.d.ts +6 -0
  227. package/dist/utils/currencies.d.ts.map +1 -0
  228. package/dist/utils/currencies.js +145 -0
  229. package/dist/utils/dateTime.d.ts +57 -0
  230. package/dist/utils/dateTime.d.ts.map +1 -0
  231. package/dist/utils/dateTime.js +150 -0
  232. package/dist/utils/embedFrameLoader.d.ts +15 -0
  233. package/dist/utils/embedFrameLoader.d.ts.map +1 -0
  234. package/dist/utils/embedFrameLoader.js +70 -0
  235. package/dist/utils/extensionToContentType.d.ts +21 -0
  236. package/dist/utils/extensionToContentType.d.ts.map +1 -0
  237. package/dist/utils/extensionToContentType.js +20 -0
  238. package/dist/utils/generateUsername.d.ts.map +1 -0
  239. package/dist/utils/index.d.ts +26 -0
  240. package/dist/utils/index.d.ts.map +1 -0
  241. package/dist/utils/index.js +45 -0
  242. package/dist/utils/random.d.ts +3 -0
  243. package/dist/utils/random.d.ts.map +1 -0
  244. package/dist/utils/random.js +8 -0
  245. package/dist/utils/serviceReminderLabels.d.ts +5 -0
  246. package/dist/utils/serviceReminderLabels.d.ts.map +1 -0
  247. package/dist/utils/serviceReminderLabels.js +18 -0
  248. package/dist/utils/tenantSlug.d.ts +7 -0
  249. package/dist/utils/tenantSlug.d.ts.map +1 -0
  250. package/dist/utils/tenantSlug.js +293 -0
  251. package/dist/utils/textSlug.d.ts +3 -0
  252. package/dist/utils/textSlug.d.ts.map +1 -0
  253. package/dist/utils/textSlug.js +10 -0
  254. package/dist/utils/timezone.d.ts +2 -0
  255. package/dist/utils/timezone.d.ts.map +1 -0
  256. package/dist/utils/timezone.js +93 -0
  257. package/dist/utils/ucfirst.d.ts +2 -0
  258. package/dist/utils/ucfirst.d.ts.map +1 -0
  259. package/dist/utils/ucfirst.js +5 -0
  260. package/package.json +46 -0
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FALLBACK_TIMEZONES = void 0;
4
+ exports.FALLBACK_TIMEZONES = [
5
+ "Africa/Abidjan", "Africa/Accra", "Africa/Addis_Ababa", "Africa/Algiers", "Africa/Asmara",
6
+ "Africa/Bamako", "Africa/Bangui", "Africa/Banjul", "Africa/Bissau", "Africa/Blantyre",
7
+ "Africa/Brazzaville", "Africa/Bujumbura", "Africa/Cairo", "Africa/Casablanca", "Africa/Ceuta",
8
+ "Africa/Conakry", "Africa/Dakar", "Africa/Dar_es_Salaam", "Africa/Djibouti", "Africa/Douala",
9
+ "Africa/El_Aaiun", "Africa/Freetown", "Africa/Gaborone", "Africa/Harare", "Africa/Johannesburg",
10
+ "Africa/Juba", "Africa/Kampala", "Africa/Khartoum", "Africa/Kigali", "Africa/Kinshasa",
11
+ "Africa/Lagos", "Africa/Libreville", "Africa/Lome", "Africa/Luanda", "Africa/Lubumbashi",
12
+ "Africa/Lusaka", "Africa/Malabo", "Africa/Maputo", "Africa/Maseru", "Africa/Mbabane",
13
+ "Africa/Mogadishu", "Africa/Monrovia", "Africa/Nairobi", "Africa/Ndjamena", "Africa/Niamey",
14
+ "Africa/Nouakchott", "Africa/Ouagadougou", "Africa/Porto-Novo", "Africa/Sao_Tome", "Africa/Tripoli",
15
+ "Africa/Tunis", "Africa/Windhoek", "America/Adak", "America/Anchorage", "America/Anguilla",
16
+ "America/Antigua", "America/Araguaina", "America/Argentina/Buenos_Aires", "America/Argentina/Catamarca",
17
+ "America/Argentina/Cordoba", "America/Argentina/Jujuy", "America/Argentina/La_Rioja",
18
+ "America/Argentina/Mendoza", "America/Argentina/Rio_Gallegos", "America/Argentina/Salta",
19
+ "America/Argentina/San_Juan", "America/Argentina/San_Luis", "America/Argentina/Tucuman",
20
+ "America/Argentina/Ushuaia", "America/Aruba", "America/Asuncion", "America/Atikokan",
21
+ "America/Bahia", "America/Bahia_Banderas", "America/Barbados", "America/Belem", "America/Belize",
22
+ "America/Blanc-Sablon", "America/Boa_Vista", "America/Bogota", "America/Boise", "America/Cambridge_Bay",
23
+ "America/Campo_Grande", "America/Cancun", "America/Caracas", "America/Cayenne", "America/Cayman",
24
+ "America/Chicago", "America/Chihuahua", "America/Costa_Rica", "America/Creston", "America/Cuiaba",
25
+ "America/Curacao", "America/Danmarkshavn", "America/Dawson", "America/Dawson_Creek",
26
+ "America/Denver", "America/Detroit", "America/Dominica", "America/Edmonton", "America/Eirunepe",
27
+ "America/El_Salvador", "America/Fort_Nelson", "America/Fortaleza", "America/Glace_Bay",
28
+ "America/Goose_Bay", "America/Grand_Turk", "America/Grenada", "America/Guadeloupe",
29
+ "America/Guatemala", "America/Guayaquil", "America/Guyana", "America/Halifax", "America/Havana",
30
+ "America/Hermosillo", "America/Indiana/Indianapolis", "America/Indiana/Knox", "America/Indiana/Marengo",
31
+ "America/Indiana/Petersburg", "America/Indiana/Tell_City", "America/Indiana/Vevay",
32
+ "America/Indiana/Vincennes", "America/Indiana/Winamac", "America/Inuvik", "America/Iqaluit",
33
+ "America/Jamaica", "America/Juneau", "America/Kentucky/Louisville", "America/Kentucky/Monticello",
34
+ "America/Kralendijk", "America/La_Paz", "America/Lima", "America/Los_Angeles", "America/Lower_Princes",
35
+ "America/Maceio", "America/Managua", "America/Manaus", "America/Marigot", "America/Martinique",
36
+ "America/Matamoros", "America/Mazatlan", "America/Menominee", "America/Merida", "America/Metlakatla",
37
+ "America/Mexico_City", "America/Miquelon", "America/Moncton", "America/Monterrey", "America/Montevideo",
38
+ "America/Montserrat", "America/Nassau", "America/New_York", "America/Nipigon", "America/Nome",
39
+ "America/Noronha", "America/North_Dakota/Beulah", "America/North_Dakota/Center",
40
+ "America/North_Dakota/New_Salem", "America/Nuuk", "America/Ojinaga", "America/Panama",
41
+ "America/Pangnirtung", "America/Paramaribo", "America/Phoenix", "America/Port-au-Prince",
42
+ "America/Port_of_Spain", "America/Porto_Velho", "America/Puerto_Rico", "America/Punta_Arenas",
43
+ "America/Rainy_River", "America/Rankin_Inlet", "America/Recife", "America/Regina",
44
+ "America/Resolute", "America/Rio_Branco", "America/Santarem", "America/Santiago",
45
+ "America/Santo_Domingo", "America/Sao_Paulo", "America/Scoresbysund", "America/Sitka",
46
+ "America/St_Barthelemy", "America/St_Johns", "America/St_Kitts", "America/St_Lucia",
47
+ "America/St_Thomas", "America/St_Vincent", "America/Swift_Current", "America/Tegucigalpa",
48
+ "America/Thule", "America/Thunder_Bay", "America/Tijuana", "America/Toronto", "America/Tortola",
49
+ "America/Vancouver", "America/Whitehorse", "America/Winnipeg", "America/Yakutat", "America/Yellowknife",
50
+ "Antarctica/Casey", "Antarctica/Davis", "Antarctica/DumontDUrville", "Antarctica/Macquarie",
51
+ "Antarctica/Mawson", "Antarctica/McMurdo", "Antarctica/Palmer", "Antarctica/Rothera",
52
+ "Antarctica/Syowa", "Antarctica/Troll", "Antarctica/Vostok", "Arctic/Longyearbyen",
53
+ "Asia/Aden", "Asia/Almaty", "Asia/Amman", "Asia/Anadyr", "Asia/Aqtau", "Asia/Aqtobe",
54
+ "Asia/Ashgabat", "Asia/Atyrau", "Asia/Baghdad", "Asia/Bahrain", "Asia/Baku", "Asia/Bangkok",
55
+ "Asia/Barnaul", "Asia/Beirut", "Asia/Bishkek", "Asia/Brunei", "Asia/Chita", "Asia/Choibalsan",
56
+ "Asia/Colombo", "Asia/Damascus", "Asia/Dhaka", "Asia/Dili", "Asia/Dubai", "Asia/Dushanbe",
57
+ "Asia/Famagusta", "Asia/Gaza", "Asia/Hebron", "Asia/Ho_Chi_Minh", "Asia/Hong_Kong",
58
+ "Asia/Hovd", "Asia/Irkutsk", "Asia/Jakarta", "Asia/Jayapura", "Asia/Jerusalem", "Asia/Kabul",
59
+ "Asia/Kamchatka", "Asia/Karachi", "Asia/Kathmandu", "Asia/Khandyga", "Asia/Kolkata",
60
+ "Asia/Krasnoyarsk", "Asia/Kuala_Lumpur", "Asia/Kuching", "Asia/Kuwait", "Asia/Macau",
61
+ "Asia/Magadan", "Asia/Makassar", "Asia/Manila", "Asia/Muscat", "Asia/Nicosia", "Asia/Novokuznetsk",
62
+ "Asia/Novosibirsk", "Asia/Omsk", "Asia/Oral", "Asia/Phnom_Penh", "Asia/Pontianak",
63
+ "Asia/Pyongyang", "Asia/Qatar", "Asia/Qostanay", "Asia/Qyzylorda", "Asia/Riyadh",
64
+ "Asia/Sakhalin", "Asia/Samarkand", "Asia/Seoul", "Asia/Shanghai", "Asia/Singapore",
65
+ "Asia/Srednekolymsk", "Asia/Taipei", "Asia/Tashkent", "Asia/Tbilisi", "Asia/Tehran",
66
+ "Asia/Thimphu", "Asia/Tokyo", "Asia/Tomsk", "Asia/Ulaanbaatar", "Asia/Urumqi", "Asia/Ust-Nera",
67
+ "Asia/Vientiane", "Asia/Vladivostok", "Asia/Yakutsk", "Asia/Yangon", "Asia/Yekaterinburg",
68
+ "Asia/Yerevan", "Atlantic/Azores", "Atlantic/Bermuda", "Atlantic/Canary", "Atlantic/Cape_Verde",
69
+ "Atlantic/Faroe", "Atlantic/Madeira", "Atlantic/Reykjavik", "Atlantic/South_Georgia",
70
+ "Atlantic/St_Helena", "Atlantic/Stanley", "Australia/Adelaide", "Australia/Brisbane",
71
+ "Australia/Broken_Hill", "Australia/Darwin", "Australia/Eucla", "Australia/Hobart",
72
+ "Australia/Lindeman", "Australia/Lord_Howe", "Australia/Melbourne", "Australia/Perth",
73
+ "Australia/Sydney", "Europe/Amsterdam", "Europe/Andorra", "Europe/Astrakhan", "Europe/Athens",
74
+ "Europe/Belgrade", "Europe/Berlin", "Europe/Bratislava", "Europe/Brussels", "Europe/Bucharest",
75
+ "Europe/Budapest", "Europe/Busingen", "Europe/Chisinau", "Europe/Copenhagen", "Europe/Dublin",
76
+ "Europe/Gibraltar", "Europe/Guernsey", "Europe/Helsinki", "Europe/Isle_of_Man", "Europe/Istanbul",
77
+ "Europe/Jersey", "Europe/Kaliningrad", "Europe/Kiev", "Europe/Kirov", "Europe/Lisbon",
78
+ "Europe/Ljubljana", "Europe/London", "Europe/Luxembourg", "Europe/Madrid", "Europe/Malta",
79
+ "Europe/Mariehamn", "Europe/Minsk", "Europe/Monaco", "Europe/Moscow", "Europe/Oslo",
80
+ "Europe/Paris", "Europe/Podgorica", "Europe/Prague", "Europe/Riga", "Europe/Rome",
81
+ "Europe/Samara", "Europe/San_Marino", "Europe/Sarajevo", "Europe/Saratov", "Europe/Simferopol",
82
+ "Europe/Skopje", "Europe/Sofia", "Europe/Stockholm", "Europe/Tallinn", "Europe/Tirane",
83
+ "Europe/Ulyanovsk", "Europe/Uzhgorod", "Europe/Vaduz", "Europe/Vatican", "Europe/Vienna",
84
+ "Europe/Vilnius", "Europe/Volgograd", "Europe/Warsaw", "Europe/Zagreb", "Europe/Zaporozhye",
85
+ "Europe/Zurich", "Indian/Antananarivo", "Indian/Chagos", "Indian/Christmas", "Indian/Cocos",
86
+ "Indian/Comoro", "Indian/Kerguelen", "Indian/Mahe", "Indian/Maldives", "Indian/Mauritius",
87
+ "Indian/Mayotte", "Indian/Reunion", "Pacific/Apia", "Pacific/Auckland", "Pacific/Bougainville",
88
+ "Pacific/Chatham", "Pacific/Chuuk", "Pacific/Easter", "Pacific/Efate", "Pacific/Enderbury",
89
+ "Pacific/Fakaofo", "Pacific/Fiji", "Pacific/Funafuti", "Pacific/Galapagos", "Pacific/Gambier",
90
+ "Pacific/Guadalcanal", "Pacific/Guam", "Pacific/Honolulu", "Pacific/Kiritimati", "Pacific/Kosrae",
91
+ "Pacific/Kwajalein", "Pacific/Majuro", "Pacific/Marquesas", "Pacific/Midway", "Pacific/Nauru",
92
+ "Pacific/Niue", "Pacific/Norfolk", "Pacific/Noumea", "Pacific/Pago_Pago", "Pacific/Palau",
93
+ "Pacific/Pitcairn", "Pacific/Pohnpei", "Pacific/Port_Moresby", "Pacific/Rarotonga",
94
+ "Pacific/Saipan", "Pacific/Tahiti", "Pacific/Tarawa", "Pacific/Tongatapu", "Pacific/Wake",
95
+ "Pacific/Wallis", "UTC",
96
+ ];
@@ -0,0 +1,2 @@
1
+ export declare const FALLBACK_TIMEZONES: string[];
2
+ //# sourceMappingURL=timezone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timezone.d.ts","sourceRoot":"","sources":["../../../src/utils/timezone.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,UA4F9B,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ucfirst = void 0;
4
+ const ucfirst = (str) => {
5
+ if (!str)
6
+ return "";
7
+ return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
8
+ };
9
+ exports.ucfirst = ucfirst;
@@ -0,0 +1,2 @@
1
+ export declare const ucfirst: (str: string) => string;
2
+ //# sourceMappingURL=ucfirst.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ucfirst.d.ts","sourceRoot":"","sources":["../../../src/utils/ucfirst.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,WAGlC,CAAA"}
@@ -0,0 +1,4 @@
1
+ /** Stable ids sent to the API when a user picks an unsubscribe reason. */
2
+ export declare const EMAIL_UNSUBSCRIBE_REASON_IDS: readonly ["too_many_emails", "not_relevant", "never_signed_up", "privacy_concerns", "found_alternative", "no_longer_using", "other"];
3
+ export type EmailUnsubscribeReasonId = (typeof EMAIL_UNSUBSCRIBE_REASON_IDS)[number];
4
+ //# sourceMappingURL=emailUnsubscribeReasons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emailUnsubscribeReasons.d.ts","sourceRoot":"","sources":["../../src/constants/emailUnsubscribeReasons.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,eAAO,MAAM,4BAA4B,sIAQ/B,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /** Stable ids sent to the API when a user picks an unsubscribe reason. */
2
+ export const EMAIL_UNSUBSCRIBE_REASON_IDS = [
3
+ "too_many_emails",
4
+ "not_relevant",
5
+ "never_signed_up",
6
+ "privacy_concerns",
7
+ "found_alternative",
8
+ "no_longer_using",
9
+ "other",
10
+ ];
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @foxscheduling/shared
3
+ *
4
+ * Shared utilities and interfaces for FoxScheduling backend and frontend.
5
+ */
6
+ export * from "./types/index.js";
7
+ export * from "./utils/index.js";
8
+ export * from "./constants/emailUnsubscribeReasons.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wCAAwC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @foxscheduling/shared
3
+ *
4
+ * Shared utilities and interfaces for FoxScheduling backend and frontend.
5
+ */
6
+ export * from "./types/index.js";
7
+ export * from "./utils/index.js";
8
+ export * from "./constants/emailUnsubscribeReasons.js";
@@ -0,0 +1,33 @@
1
+ import { DBRecord } from "./db.js";
2
+ export interface TimeWindow {
3
+ open: string;
4
+ close: string;
5
+ }
6
+ /** For specific_dates: each date has its own schedule */
7
+ export interface SpecificDateEntry {
8
+ date: string;
9
+ schedule: TimeWindow;
10
+ }
11
+ /** Per-day schedule: each weekday has its own time windows */
12
+ export type WeeklySchedule = Record<number, TimeWindow[]>;
13
+ /** Block-off override for weekly: closed or custom hours on specific dates */
14
+ export interface BlockOffOverride {
15
+ date: string;
16
+ type: "closed" | "custom";
17
+ schedule?: TimeWindow;
18
+ }
19
+ export interface Availability extends DBRecord {
20
+ name: string;
21
+ recordType: "AVAILABILITY";
22
+ isDefault: boolean;
23
+ tenantId: string;
24
+ type: "weekly" | "specific_dates";
25
+ /** For weekly: per-day schedule (each day has own windows) */
26
+ days?: WeeklySchedule;
27
+ /** For weekly: block off specific dates (override) */
28
+ blockOffOverrides?: BlockOffOverride[];
29
+ /** For specific_dates type */
30
+ specificDates?: SpecificDateEntry[];
31
+ }
32
+ export declare const WEEKDAY_LABELS: Record<number, string>;
33
+ //# sourceMappingURL=db.availability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.availability.d.ts","sourceRoot":"","sources":["../../src/types/db.availability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,CAAC;CACxB;AAED,8DAA8D;AAC9D,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AAE1D,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,QAAQ,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,QAAQ,GAAG,gBAAgB,CAAC;IAClC,8DAA8D;IAC9D,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,8BAA8B;IAC9B,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACvC;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQjD,CAAC"}
@@ -0,0 +1,9 @@
1
+ export const WEEKDAY_LABELS = {
2
+ 0: "Sun",
3
+ 1: "Mon",
4
+ 2: "Tue",
5
+ 3: "Wed",
6
+ 4: "Thu",
7
+ 5: "Fri",
8
+ 6: "Sat",
9
+ };
@@ -0,0 +1,101 @@
1
+ import { DBRecord } from "./db.js";
2
+ import { DurationUnit, ServiceSlot } from "./db.service.js";
3
+ import type { Service, ServiceLocationType, ServiceReminderOffset } from "./db.service.js";
4
+ export type BookingActionRequired = "deposit" | "confirmation";
5
+ export interface BookingPaymentEntry {
6
+ id: string;
7
+ paid: boolean;
8
+ returnUrl?: string;
9
+ provider?: string;
10
+ stripePaymentIntentId?: string;
11
+ }
12
+ export interface Booking extends DBRecord {
13
+ name: string;
14
+ slug: string;
15
+ email: string;
16
+ /**
17
+ * The timezone of the booking. This is the timezone of the booking slot.
18
+ * This could be different from the tenant timezone.
19
+ */
20
+ timezone: string;
21
+ tenantId: string;
22
+ duration: number;
23
+ serviceId: string;
24
+ eventDate: string;
25
+ /**
26
+ * The slot of the booking. This is the slot of the booking.
27
+ * This is in UTC.
28
+ */
29
+ slot: ServiceSlot;
30
+ providerIds: string[];
31
+ customerId: string;
32
+ recordType: "BOOKING";
33
+ payments: {
34
+ full?: BookingPaymentEntry;
35
+ deposit?: BookingPaymentEntry;
36
+ reminder?: BookingPaymentEntry;
37
+ };
38
+ locationType: ServiceLocationType;
39
+ /** Google Meet or other video meeting URL when service uses google_meet */
40
+ meetingLink?: string;
41
+ meetingInPersonLocation?: string;
42
+ /** Google Calendar event id when `locationType` is google_meet (for attendee updates / cancel). */
43
+ googleCalendarEventId?: string;
44
+ /** Graph `onlineMeetings` id when `locationType` is microsoft_teams (for cancel/delete). */
45
+ microsoftOnlineMeetingId?: string;
46
+ /** Zoom meeting id when `locationType` is zoom (for cancel/delete). */
47
+ zoomMeetingId?: string;
48
+ reservedUntil?: string;
49
+ durationUnit: DurationUnit;
50
+ providerAutoAssigned: boolean;
51
+ actionsRequired: Array<BookingActionRequired>;
52
+ status: "booked" | "cancelled" | "pendingApproval" | "reserved";
53
+ cancelledByUserOrCustomerId?: string;
54
+ lastUpdatedByUserOrCustomerId?: string;
55
+ bookingCancellerType?: "customer" | "serviceProvider" | "system";
56
+ remindersSent?: Array<{
57
+ sentOn: string;
58
+ offset: ServiceReminderOffset;
59
+ }>;
60
+ questionAnswers?: Array<{
61
+ questionId: string;
62
+ question: string;
63
+ answer: string;
64
+ }>;
65
+ /** 1–5 star rating from the booker after the appointment (set once) */
66
+ customerRating?: number;
67
+ /** When the customer submitted their rating (ISO) */
68
+ customerRatedOn?: string;
69
+ /** Per email-flow template id → when that follow-up was sent (ISO) */
70
+ emailFlowSends?: Record<string, string>;
71
+ /**
72
+ * When staff triggered the no-show email flow for this booking (ISO).
73
+ * Used only with flowType `no_show` templates.
74
+ */
75
+ noShowFlowTriggeredAt?: string;
76
+ }
77
+ /** Booking enriched with service and provider display info for list views */
78
+ export interface BookingWithDetails extends Booking {
79
+ serviceName?: string;
80
+ serviceIconId?: Service["iconId"];
81
+ /** Display names for each assigned provider (same order as `providerIds` / normalized assignees). */
82
+ providerNames?: string[];
83
+ /** Profile image URLs for each assigned provider (parallel to `providerNames`). */
84
+ providerPictureUrls?: (string | undefined)[];
85
+ /** For group bookings: number booked into this exact slot (same service + provider). */
86
+ slotBookedCount?: number;
87
+ /** For group bookings: max participants allowed for this slot. */
88
+ slotMaxParticipants?: number;
89
+ /** For group bookings: slotMaxParticipants - slotBookedCount. */
90
+ slotRemainingSeats?: number;
91
+ }
92
+ export interface BookingSummary {
93
+ id: string;
94
+ meetingLink?: string;
95
+ /** Copied from the booking so the success UI can show address vs link. */
96
+ locationType?: ServiceLocationType;
97
+ meetingInPersonLocation?: string;
98
+ status: Booking["status"];
99
+ actionsRequired: Array<BookingActionRequired>;
100
+ }
101
+ //# sourceMappingURL=db.booking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.booking.d.ts","sourceRoot":"","sources":["../../src/types/db.booking.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ import { DBRecord } from "./db.js";
2
+ export interface Customer extends DBRecord {
3
+ name: string;
4
+ email: string;
5
+ tenantId: string;
6
+ /**
7
+ * Customer ID on JASDK
8
+ */
9
+ customerId?: string;
10
+ /** When true, this customer cannot book or reschedule via the public booking flow */
11
+ blacklisted?: boolean;
12
+ recordType: "CUSTOMER";
13
+ }
14
+ //# sourceMappingURL=db.customers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.customers.d.ts","sourceRoot":"","sources":["../../src/types/db.customers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,WAAW,QAAS,SAAQ,QAAQ;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;CAC1B"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ export interface DBRecord {
2
+ id?: string;
3
+ ttl?: number;
4
+ sortKey?: string;
5
+ updatedOn?: string;
6
+ creationDate?: string;
7
+ schemaVersion?: string;
8
+ recordType?: DBRecordTypes;
9
+ }
10
+ export type DBRecordTypes = "TAX" | "USER" | "TENANT" | "BOOKING" | "SERVICE" | "CUSTOMER" | "DIRECTORY" | "EMAIL_FLOW" | "NOTIFICATION" | "AVAILABILITY" | "USER_CONFIRMATION" | "USER_LOGIN_SESSION" | "TENANT_GROUPED_STAT" | "MCP_USER_CONTEXT" | "PAYMENT_PENDING" | "OAUTH_CLIENT" | "OAUTH_CODE" | "OAUTH_REFRESH_TOKEN" | "OAUTH_CONSENT" | "WEBHOOK_SUBSCRIPTION" | "PARTNER_API_KEY";
11
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/types/db.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED,MAAM,MAAM,aAAa,GACrB,KAAK,GACL,MAAM,GACN,QAAQ,GACR,SAAS,GACT,SAAS,GACT,UAAU,GACV,WAAW,GACX,YAAY,GACZ,cAAc,GACd,cAAc,GACd,mBAAmB,GACnB,oBAAoB,GACpB,qBAAqB,GACrB,kBAAkB,GAClB,iBAAiB,GACjB,cAAc,GACd,YAAY,GACZ,qBAAqB,GACrB,eAAe,GACf,sBAAsB,GACtB,iBAAiB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { DBRecord } from "./db.js";
2
+ import { DurationUnit, ServiceCategory, ServiceLocationType, ServiceRatingSummary } from "./db.service.js";
3
+ import type { DiscoverBusinessAddress } from "./discover.js";
4
+ import { BOOKING_PAGE_ICONS } from "../utils/bookingPageIcons.js";
5
+ export interface Directory extends DBRecord {
6
+ tenantId: string;
7
+ serviceId: string;
8
+ data: {
9
+ business: {
10
+ name: string;
11
+ logoUrl: string;
12
+ accentColor: string;
13
+ customColor?: string;
14
+ };
15
+ /** Optional for backward compatibility with existing records */
16
+ category?: ServiceCategory;
17
+ timezone: string;
18
+ duration: {
19
+ value: number;
20
+ unit: DurationUnit;
21
+ };
22
+ price: {
23
+ value: number;
24
+ currency: string;
25
+ };
26
+ url: string;
27
+ title: string;
28
+ description: string;
29
+ iconId: keyof typeof BOOKING_PAGE_ICONS;
30
+ /** Copied from service when ratings exist (for directory cards) */
31
+ rating?: ServiceRatingSummary;
32
+ locationType?: ServiceLocationType;
33
+ businessAddress?: DiscoverBusinessAddress;
34
+ tenantSlug?: string;
35
+ };
36
+ recordType: "DIRECTORY";
37
+ }
38
+ //# sourceMappingURL=db.directory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.directory.d.ts","sourceRoot":"","sources":["../../src/types/db.directory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC3G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACF,QAAQ,EAAE;YACN,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,CAAC;YAChB,WAAW,EAAE,MAAM,CAAC;YACpB,WAAW,CAAC,EAAE,MAAM,CAAC;SACxB,CAAC;QACF,gEAAgE;QAChE,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE;YACN,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,YAAY,CAAC;SACtB,CAAC;QACF,KAAK,EAAE;YACH,KAAK,EAAE,MAAM,CAAC;YACd,QAAQ,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,OAAO,kBAAkB,CAAC;QACxC,mEAAmE;QACnE,MAAM,CAAC,EAAE,oBAAoB,CAAC;QAC9B,YAAY,CAAC,EAAE,mBAAmB,CAAC;QACnC,eAAe,CAAC,EAAE,uBAAuB,CAAC;QAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,UAAU,EAAE,WAAW,CAAC;CAC3B"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,29 @@
1
+ import { DBRecord } from "./db.js";
2
+ export type EmailFlowType = "no_show" | "after_care";
3
+ /** API / UI shape for one configurable email automation template */
4
+ export interface EmailFlowTemplate {
5
+ id: string;
6
+ name: string;
7
+ flowType: EmailFlowType;
8
+ enabled: boolean;
9
+ subject: string;
10
+ bodyTemplate: string;
11
+ sendAfterMinutes: number;
12
+ }
13
+ /**
14
+ * Persisted email automation template (DynamoDB item).
15
+ */
16
+ export interface EmailFlow extends DBRecord {
17
+ recordType: "EMAIL_FLOW";
18
+ tenantId: string;
19
+ id: string;
20
+ /** Label for the dashboard list only */
21
+ name: string;
22
+ flowType: EmailFlowType;
23
+ enabled: boolean;
24
+ subject: string;
25
+ /** HTML body with Handlebars variables */
26
+ bodyTemplate: string;
27
+ sendAfterMinutes: number;
28
+ }
29
+ //# sourceMappingURL=db.emailFlow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.emailFlow.d.ts","sourceRoot":"","sources":["../../src/types/db.emailFlow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,YAAY,CAAC;AAErD,oEAAoE;AACpE,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACvC,UAAU,EAAE,YAAY,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC5B"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,29 @@
1
+ import { DBRecord } from "./db.js";
2
+ export interface McpRecentBooking {
3
+ tenantId: string;
4
+ serviceId: string;
5
+ businessName: string;
6
+ serviceTitle: string;
7
+ bookedAt: string;
8
+ }
9
+ export interface McpUserLocation {
10
+ lat?: number;
11
+ lng?: number;
12
+ city?: string;
13
+ state?: string;
14
+ country?: string;
15
+ timezone?: string;
16
+ }
17
+ export interface McpUserContext extends DBRecord {
18
+ recordType: "MCP_USER_CONTEXT";
19
+ /** Normalized email (lowercase trim) */
20
+ email: string;
21
+ name?: string;
22
+ defaultLocation?: McpUserLocation;
23
+ /** Boost only on discover — not a scope lock */
24
+ savedTenantId?: string;
25
+ savedServiceId?: string;
26
+ recentBookings?: McpRecentBooking[];
27
+ linkedAt: string;
28
+ }
29
+ //# sourceMappingURL=db.mcpUserContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.mcpUserContext.d.ts","sourceRoot":"","sources":["../../src/types/db.mcpUserContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC5C,UAAU,EAAE,kBAAkB,CAAC;IAC/B,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
1
+ import { DBRecord } from "./db.js";
2
+ export type NotificationType = "newBookingConfirmed" | "bookingCancelled" | "bookingPendingApproval" | "bookingReserved" | "bookingDeleted" | "bookingReminder" | "bookingUpdated" | "integrationDisconnected";
3
+ export type IntegrationDisconnectReason = "oauth_revoked" | "user_disconnect";
4
+ export type IntegrationNotificationKey = "google" | "microsoft" | "zoom";
5
+ export interface Notification extends DBRecord {
6
+ recordType: "NOTIFICATION";
7
+ tenantId: string;
8
+ userId: string;
9
+ type: NotificationType;
10
+ status: "read" | "unread";
11
+ sendEmail: boolean;
12
+ group: "notification" | "announcement";
13
+ titleKey: string;
14
+ messageKey: string;
15
+ actionUrl?: string;
16
+ actionLabelKey?: string;
17
+ bookingSortKey?: string;
18
+ serviceId?: string;
19
+ customerId?: string;
20
+ serviceProviderId?: string;
21
+ priority?: "info" | "low" | "medium" | "high";
22
+ readOn?: string;
23
+ expiresOn?: string;
24
+ metadata: Record<string, string | number | boolean>;
25
+ groupReminderSentAt?: string;
26
+ }
27
+ //# sourceMappingURL=db.notification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.notification.d.ts","sourceRoot":"","sources":["../../src/types/db.notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,MAAM,MAAM,gBAAgB,GACtB,qBAAqB,GACrB,kBAAkB,GAClB,wBAAwB,GACxB,iBAAiB,GACjB,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,yBAAyB,CAAC;AAEhC,MAAM,MAAM,2BAA2B,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAC9E,MAAM,MAAM,0BAA0B,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AAEzE,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC1C,UAAU,EAAE,cAAc,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IAGf,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IAEnB,KAAK,EAAE,cAAc,GAAG,cAAc,CAAC;IAGvC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IAGnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IAInB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAG3B,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IAEpD,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,55 @@
1
+ import { DBRecord } from "./db.js";
2
+ import type { OAuthScope } from "./oauthScopes.js";
3
+ export interface OAuthClient extends DBRecord {
4
+ recordType: "OAUTH_CLIENT";
5
+ id: string;
6
+ userId: string;
7
+ name: string;
8
+ clientSecretHash: string;
9
+ redirectUris: string[];
10
+ allowedScopes: OAuthScope[];
11
+ }
12
+ export interface OAuthConsent extends DBRecord {
13
+ recordType: "OAUTH_CONSENT";
14
+ id: string;
15
+ userId: string;
16
+ clientId: string;
17
+ tenantId: string;
18
+ scopes: OAuthScope[];
19
+ grantedAt: string;
20
+ }
21
+ export interface OAuthAuthorizationCode extends DBRecord {
22
+ recordType: "OAUTH_CODE";
23
+ id: string;
24
+ code: string;
25
+ userId: string;
26
+ clientId: string;
27
+ tenantId: string;
28
+ scopes: OAuthScope[];
29
+ redirectUri: string;
30
+ codeChallenge: string;
31
+ codeChallengeMethod: "S256";
32
+ expiresAt: string;
33
+ }
34
+ export interface OAuthRefreshToken extends DBRecord {
35
+ recordType: "OAUTH_REFRESH_TOKEN";
36
+ id: string;
37
+ tokenHash: string;
38
+ userId: string;
39
+ clientId: string;
40
+ tenantId: string;
41
+ scopes: OAuthScope[];
42
+ expiresAt: string;
43
+ }
44
+ export interface PartnerAccessTokenClaims {
45
+ sub: string;
46
+ client_id: string;
47
+ tenant_id: string;
48
+ scope: string;
49
+ aud: string;
50
+ iss: string;
51
+ exp: number;
52
+ iat: number;
53
+ jti: string;
54
+ }
55
+ //# sourceMappingURL=db.oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.oauth.d.ts","sourceRoot":"","sources":["../../src/types/db.oauth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,WAAY,SAAQ,QAAQ;IAC3C,UAAU,EAAE,cAAc,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,UAAU,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC5C,UAAU,EAAE,eAAe,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAuB,SAAQ,QAAQ;IACtD,UAAU,EAAE,YAAY,CAAC;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,QAAQ;IACjD,UAAU,EAAE,qBAAqB,CAAC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ import { DBRecord } from "./db.js";
2
+ import type { OAuthScope } from "./oauthScopes.js";
3
+ export interface PartnerApiKey extends DBRecord {
4
+ recordType: "PARTNER_API_KEY";
5
+ id: string;
6
+ tenantId: string;
7
+ userId: string;
8
+ name: string;
9
+ keyPrefix: string;
10
+ keyHash: string;
11
+ allowedScopes: OAuthScope[];
12
+ lastUsedAt?: string;
13
+ revokedAt?: string;
14
+ }
15
+ //# sourceMappingURL=db.partnerApiKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.partnerApiKey.d.ts","sourceRoot":"","sources":["../../src/types/db.partnerApiKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C,UAAU,EAAE,iBAAiB,CAAC;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}