@blazeo.com/appointment-client 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/dist/calendar/blazeoCalendarRelationMethods.d.ts +40 -0
  2. package/dist/calendar/blazeoCalendarRelationMethods.d.ts.map +1 -0
  3. package/dist/calendar/blazeoCalendarRelationMethods.js +17 -0
  4. package/dist/calendar/blazeoCalendarRelationMethods.js.map +1 -0
  5. package/dist/calendar/calendarCreationFacade.d.ts +37 -0
  6. package/dist/calendar/calendarCreationFacade.d.ts.map +1 -0
  7. package/dist/calendar/calendarCreationFacade.js +174 -0
  8. package/dist/calendar/calendarCreationFacade.js.map +1 -0
  9. package/dist/calendar/createCalendar.d.ts +51 -0
  10. package/dist/calendar/createCalendar.d.ts.map +1 -0
  11. package/dist/calendar/createCalendar.js +208 -0
  12. package/dist/calendar/createCalendar.js.map +1 -0
  13. package/dist/calendar/mapCalendarBoToBlazeoSnapshot.d.ts +10 -0
  14. package/dist/calendar/mapCalendarBoToBlazeoSnapshot.d.ts.map +1 -0
  15. package/dist/calendar/mapCalendarBoToBlazeoSnapshot.js +44 -0
  16. package/dist/calendar/mapCalendarBoToBlazeoSnapshot.js.map +1 -0
  17. package/dist/calendar/mapCalendarToBlazeoSnapshot.d.ts +10 -0
  18. package/dist/calendar/mapCalendarToBlazeoSnapshot.d.ts.map +1 -0
  19. package/dist/calendar/mapCalendarToBlazeoSnapshot.js +44 -0
  20. package/dist/calendar/mapCalendarToBlazeoSnapshot.js.map +1 -0
  21. package/dist/config/applyBlazeoClientConfig.d.ts +3 -0
  22. package/dist/config/applyBlazeoClientConfig.d.ts.map +1 -0
  23. package/dist/config/applyBlazeoClientConfig.js +14 -0
  24. package/dist/config/applyBlazeoClientConfig.js.map +1 -0
  25. package/dist/config/applyBlazeoDefaults.d.ts +3 -0
  26. package/dist/config/applyBlazeoDefaults.d.ts.map +1 -0
  27. package/dist/config/applyBlazeoDefaults.js +14 -0
  28. package/dist/config/applyBlazeoDefaults.js.map +1 -0
  29. package/dist/config/blazeo.config.d.ts +11 -0
  30. package/dist/config/blazeo.config.d.ts.map +1 -0
  31. package/dist/config/blazeo.config.js +11 -0
  32. package/dist/config/blazeo.config.js.map +1 -0
  33. package/dist/config/blazeoClientDefaults.d.ts +12 -0
  34. package/dist/config/blazeoClientDefaults.d.ts.map +1 -0
  35. package/dist/config/blazeoClientDefaults.js +12 -0
  36. package/dist/config/blazeoClientDefaults.js.map +1 -0
  37. package/dist/config/initializeAppointmentClient.d.ts +28 -0
  38. package/dist/config/initializeAppointmentClient.d.ts.map +1 -0
  39. package/dist/config/initializeAppointmentClient.js +23 -0
  40. package/dist/config/initializeAppointmentClient.js.map +1 -0
  41. package/dist/events/appointmentEventFacade.d.ts +44 -0
  42. package/dist/events/appointmentEventFacade.d.ts.map +1 -0
  43. package/dist/events/appointmentEventFacade.js +130 -0
  44. package/dist/events/appointmentEventFacade.js.map +1 -0
  45. package/dist/events/mapAppointmentToEventSnapshot.d.ts +8 -0
  46. package/dist/events/mapAppointmentToEventSnapshot.d.ts.map +1 -0
  47. package/dist/events/mapAppointmentToEventSnapshot.js +56 -0
  48. package/dist/events/mapAppointmentToEventSnapshot.js.map +1 -0
  49. package/dist/exampleData.d.ts +15 -0
  50. package/dist/exampleData.d.ts.map +1 -0
  51. package/dist/exampleData.js +72 -0
  52. package/dist/exampleData.js.map +1 -0
  53. package/dist/facade/calendarCreationFacade.d.ts +40 -0
  54. package/dist/facade/calendarCreationFacade.d.ts.map +1 -0
  55. package/dist/facade/calendarCreationFacade.js +96 -0
  56. package/dist/facade/calendarCreationFacade.js.map +1 -0
  57. package/dist/facade/mapCalendarBOToSnapshot.d.ts +10 -0
  58. package/dist/facade/mapCalendarBOToSnapshot.d.ts.map +1 -0
  59. package/dist/facade/mapCalendarBOToSnapshot.js +44 -0
  60. package/dist/facade/mapCalendarBOToSnapshot.js.map +1 -0
  61. package/dist/facades/index.d.ts +12 -0
  62. package/dist/facades/index.d.ts.map +1 -0
  63. package/dist/facades/index.js +12 -0
  64. package/dist/facades/index.js.map +1 -0
  65. package/dist/index.d.ts +92 -0
  66. package/dist/index.d.ts.map +1 -0
  67. package/dist/index.js +37 -0
  68. package/dist/index.js.map +1 -0
  69. package/dist/models/CalendarRootModel.d.ts +31 -0
  70. package/dist/models/CalendarRootModel.d.ts.map +1 -0
  71. package/dist/models/CalendarRootModel.js +37 -0
  72. package/dist/models/CalendarRootModel.js.map +1 -0
  73. package/dist/models/CalendarSlotModel.d.ts +9 -0
  74. package/dist/models/CalendarSlotModel.d.ts.map +1 -0
  75. package/dist/models/CalendarSlotModel.js +8 -0
  76. package/dist/models/CalendarSlotModel.js.map +1 -0
  77. package/dist/models/EventModel.d.ts +11 -0
  78. package/dist/models/EventModel.d.ts.map +1 -0
  79. package/dist/models/EventModel.js +10 -0
  80. package/dist/models/EventModel.js.map +1 -0
  81. package/dist/models/ParticipantModel.d.ts +9 -0
  82. package/dist/models/ParticipantModel.d.ts.map +1 -0
  83. package/dist/models/ParticipantModel.js +8 -0
  84. package/dist/models/ParticipantModel.js.map +1 -0
  85. package/dist/models/index.d.ts +5 -0
  86. package/dist/models/index.d.ts.map +1 -0
  87. package/dist/models/index.js +5 -0
  88. package/dist/models/index.js.map +1 -0
  89. package/dist/types/appointment.d.ts +27 -0
  90. package/dist/types/appointment.d.ts.map +1 -0
  91. package/dist/types/appointment.js +6 -0
  92. package/dist/types/appointment.js.map +1 -0
  93. package/dist/types/calendar.d.ts +62 -0
  94. package/dist/types/calendar.d.ts.map +1 -0
  95. package/dist/types/calendar.js +6 -0
  96. package/dist/types/calendar.js.map +1 -0
  97. package/dist/types/calendarBo.d.ts +62 -0
  98. package/dist/types/calendarBo.d.ts.map +1 -0
  99. package/dist/types/calendarBo.js +6 -0
  100. package/dist/types/calendarBo.js.map +1 -0
  101. package/package.json +34 -7
  102. package/blazeo.com-appointment-client-1.0.0.tgz +0 -0
@@ -0,0 +1,10 @@
1
+ import type { CalendarInput } from "../types/calendar.js";
2
+ /**
3
+ * Maps Apex `CalendarBO`-shaped input to a snapshot for
4
+ * {@link CalendarModel.create} from `@blazeo.com/calendar-client`.
5
+ *
6
+ * Only fields that exist on Blazeo's `Calendar` model are included so MST does not receive
7
+ * unknown keys or invalid `null`s on optional numbers.
8
+ */
9
+ export declare function mapCalendarBOToSnapshot(bo: CalendarInput): Record<string, unknown>;
10
+ //# sourceMappingURL=mapCalendarToBlazeoSnapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapCalendarToBlazeoSnapshot.d.ts","sourceRoot":"","sources":["../../src/calendar/mapCalendarToBlazeoSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAc1D;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,aAAa,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA8BzB"}
@@ -0,0 +1,44 @@
1
+ /** Default enum values aligned with ApexFlows / Blazeo (`AssignmentMethod`, `Unit`). */
2
+ const DEFAULT_ASSIGNMENT_METHOD = 1;
3
+ const DEFAULT_UNIT_MINUTES = 1;
4
+ /**
5
+ * For Blazeo `Calendar` MST: `types.optional(types.number)` accepts `undefined` (uses default)
6
+ * but not `null`. Coerce null/absent to `undefined`.
7
+ */
8
+ function optionalNumber(v) {
9
+ return v == null ? undefined : v;
10
+ }
11
+ /**
12
+ * Maps Apex `CalendarBO`-shaped input to a snapshot for
13
+ * {@link CalendarModel.create} from `@blazeo.com/calendar-client`.
14
+ *
15
+ * Only fields that exist on Blazeo's `Calendar` model are included so MST does not receive
16
+ * unknown keys or invalid `null`s on optional numbers.
17
+ */
18
+ export function mapCalendarBOToSnapshot(bo) {
19
+ const calendarId = bo.calendarId ?? bo.thirdPartyCalendarId ?? "new";
20
+ return {
21
+ id: bo.serverId == null ? undefined : bo.serverId,
22
+ companyKey: bo.companyKey ?? null,
23
+ calendarId,
24
+ name: bo.name ?? null,
25
+ timeZoneId: bo.timeZoneId ?? null,
26
+ purpose: bo.purpose ?? bo.bookingPageTitle ?? "",
27
+ description: bo.description ?? null,
28
+ assignmentMethod: bo.assignmentMethod ?? bo.assignmentType ?? DEFAULT_ASSIGNMENT_METHOD,
29
+ duration: optionalNumber(bo.duration) ?? 30,
30
+ durationUnit: optionalNumber(bo.durationUnit) ?? DEFAULT_UNIT_MINUTES,
31
+ minimumBookingNotice: optionalNumber(bo.minimumBookingNotice) ?? 0,
32
+ minimumBookingNoticeUnit: optionalNumber(bo.minimumBookingNoticeUnit) ?? DEFAULT_UNIT_MINUTES,
33
+ minimumCancelationNotice: optionalNumber(bo.minimumCancelationNotice) ?? 0,
34
+ minimumCancelationNoticeUnit: optionalNumber(bo.minimumCancelationNoticeUnit) ?? DEFAULT_UNIT_MINUTES,
35
+ futureLimit: optionalNumber(bo.futureLimit) ?? 0,
36
+ futureLimitUnit: optionalNumber(bo.futureLimitUnit) ?? 3,
37
+ bufferTime: optionalNumber(bo.bufferTime),
38
+ bufferTimeUnit: optionalNumber(bo.bufferTimeUnit) ?? DEFAULT_UNIT_MINUTES,
39
+ bookingLimit: optionalNumber(bo.bookingLimit),
40
+ createdOn: bo.createdOn ?? null,
41
+ modifiedOn: bo.modifiedOn ?? null,
42
+ };
43
+ }
44
+ //# sourceMappingURL=mapCalendarToBlazeoSnapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapCalendarToBlazeoSnapshot.js","sourceRoot":"","sources":["../../src/calendar/mapCalendarToBlazeoSnapshot.ts"],"names":[],"mappings":"AAEA,wFAAwF;AACxF,MAAM,yBAAyB,GAAG,CAAC,CAAC;AACpC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B;;;GAGG;AACH,SAAS,cAAc,CAAC,CAA4B;IAClD,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,EAAiB;IAEjB,MAAM,UAAU,GACd,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC;IAEpD,OAAO;QACL,EAAE,EAAE,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ;QACjD,UAAU,EAAE,EAAE,CAAC,UAAU,IAAI,IAAI;QACjC,UAAU;QACV,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI;QACrB,UAAU,EAAE,EAAE,CAAC,UAAU,IAAI,IAAI;QACjC,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,gBAAgB,IAAI,EAAE;QAChD,WAAW,EAAE,EAAE,CAAC,WAAW,IAAI,IAAI;QACnC,gBAAgB,EACd,EAAE,CAAC,gBAAgB,IAAI,EAAE,CAAC,cAAc,IAAI,yBAAyB;QACvE,QAAQ,EAAE,cAAc,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC3C,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,oBAAoB;QACrE,oBAAoB,EAAE,cAAc,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;QAClE,wBAAwB,EACtB,cAAc,CAAC,EAAE,CAAC,wBAAwB,CAAC,IAAI,oBAAoB;QACrE,wBAAwB,EAAE,cAAc,CAAC,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC;QAC1E,4BAA4B,EAC1B,cAAc,CAAC,EAAE,CAAC,4BAA4B,CAAC,IAAI,oBAAoB;QACzE,WAAW,EAAE,cAAc,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;QAChD,eAAe,EAAE,cAAc,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QACxD,UAAU,EAAE,cAAc,CAAC,EAAE,CAAC,UAAU,CAAC;QACzC,cAAc,EAAE,cAAc,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,oBAAoB;QACzE,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC,YAAY,CAAC;QAC7C,SAAS,EAAE,EAAE,CAAC,SAAS,IAAI,IAAI;QAC/B,UAAU,EAAE,EAAE,CAAC,UAAU,IAAI,IAAI;KAClC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Push {@link blazeoClientConfig} into `@blazeo.com/calendar-client` (global store). */
2
+ export declare function applyBlazeoClientConfig(): void;
3
+ //# sourceMappingURL=applyBlazeoClientConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyBlazeoClientConfig.d.ts","sourceRoot":"","sources":["../../src/config/applyBlazeoClientConfig.ts"],"names":[],"mappings":"AAGA,yFAAyF;AACzF,wBAAgB,uBAAuB,IAAI,IAAI,CAS9C"}
@@ -0,0 +1,14 @@
1
+ import { configure } from "@blazeo.com/calendar-client";
2
+ import { blazeoClientConfig } from "./blazeo.config.js";
3
+ /** Push {@link blazeoClientConfig} into `@blazeo.com/calendar-client` (global store). */
4
+ export function applyBlazeoClientConfig() {
5
+ const baseUrl = blazeoClientConfig.baseUrl?.trim().replace(/\/+$/, "");
6
+ if (!baseUrl)
7
+ return;
8
+ const consumer = blazeoClientConfig.consumer?.trim();
9
+ configure({
10
+ baseUrl,
11
+ ...(consumer ? { consumer } : {}),
12
+ });
13
+ }
14
+ //# sourceMappingURL=applyBlazeoClientConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyBlazeoClientConfig.js","sourceRoot":"","sources":["../../src/config/applyBlazeoClientConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,yFAAyF;AACzF,MAAM,UAAU,uBAAuB;IACrC,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACrD,SAAS,CAAC;QACR,OAAO;QACP,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Push {@link blazeoClientConfig} into `@blazeo.com/calendar-client` (global store). Call explicitly if you use file defaults; otherwise use {@link initializeAppointmentClient}. */
2
+ export declare function applyBlazeoClientConfig(): void;
3
+ //# sourceMappingURL=applyBlazeoDefaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyBlazeoDefaults.d.ts","sourceRoot":"","sources":["../../src/config/applyBlazeoDefaults.ts"],"names":[],"mappings":"AAGA,sLAAsL;AACtL,wBAAgB,uBAAuB,IAAI,IAAI,CAS9C"}
@@ -0,0 +1,14 @@
1
+ import { configure } from "@blazeo.com/calendar-client";
2
+ import { blazeoClientConfig } from "./blazeoClientDefaults.js";
3
+ /** Push {@link blazeoClientConfig} into `@blazeo.com/calendar-client` (global store). Call explicitly if you use file defaults; otherwise use {@link initializeAppointmentClient}. */
4
+ export function applyBlazeoClientConfig() {
5
+ const baseUrl = blazeoClientConfig.baseUrl?.trim().replace(/\/+$/, "");
6
+ if (!baseUrl)
7
+ return;
8
+ const consumer = blazeoClientConfig.consumer?.trim();
9
+ configure({
10
+ baseUrl,
11
+ ...(consumer ? { consumer } : {}),
12
+ });
13
+ }
14
+ //# sourceMappingURL=applyBlazeoDefaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyBlazeoDefaults.js","sourceRoot":"","sources":["../../src/config/applyBlazeoDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,sLAAsL;AACtL,MAAM,UAAU,uBAAuB;IACrC,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACrD,SAAS,CAAC;QACR,OAAO;QACP,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Central Blazeo API settings for `appointment-client`.
3
+ * Edit once; `configure()` runs when you import this package (see `index.ts`).
4
+ *
5
+ * @example baseUrl: "https://apptscheduling.azurewebsites.net"
6
+ */
7
+ export declare const blazeoClientConfig: {
8
+ baseUrl: string;
9
+ consumer?: string;
10
+ };
11
+ //# sourceMappingURL=blazeo.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blazeo.config.d.ts","sourceRoot":"","sources":["../../src/config/blazeo.config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAInB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Central Blazeo API settings for `appointment-client`.
3
+ * Edit once; `configure()` runs when you import this package (see `index.ts`).
4
+ *
5
+ * @example baseUrl: "https://apptscheduling.azurewebsites.net"
6
+ */
7
+ export const blazeoClientConfig = {
8
+ baseUrl: "",
9
+ consumer: "",
10
+ };
11
+ //# sourceMappingURL=blazeo.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blazeo.config.js","sourceRoot":"","sources":["../../src/config/blazeo.config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAG3B;IACF,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,EAAE;CACb,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Optional file-based defaults for local development or publishing a fork.
3
+ * Host apps should prefer {@link initializeAppointmentClient} with env-driven `baseUrl` / `consumer`.
4
+ * To apply these values, call {@link applyBlazeoClientConfig} during bootstrap (not automatic on import).
5
+ *
6
+ * @example baseUrl: "https://apptscheduling.azurewebsites.net"
7
+ */
8
+ export declare const blazeoClientConfig: {
9
+ baseUrl: string;
10
+ consumer?: string;
11
+ };
12
+ //# sourceMappingURL=blazeoClientDefaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blazeoClientDefaults.d.ts","sourceRoot":"","sources":["../../src/config/blazeoClientDefaults.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAInB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Optional file-based defaults for local development or publishing a fork.
3
+ * Host apps should prefer {@link initializeAppointmentClient} with env-driven `baseUrl` / `consumer`.
4
+ * To apply these values, call {@link applyBlazeoClientConfig} during bootstrap (not automatic on import).
5
+ *
6
+ * @example baseUrl: "https://apptscheduling.azurewebsites.net"
7
+ */
8
+ export const blazeoClientConfig = {
9
+ baseUrl: "",
10
+ consumer: "",
11
+ };
12
+ //# sourceMappingURL=blazeoClientDefaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blazeoClientDefaults.js","sourceRoot":"","sources":["../../src/config/blazeoClientDefaults.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAG3B;IACF,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,EAAE;CACb,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Required once per host app before calling any facade that hits the Blazeo HTTP API.
3
+ * Wraps `@blazeo.com/calendar-client` {@link configure} with validation.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import { initializeAppointmentClient } from "@blazeo.com/appointment-client";
8
+ *
9
+ * initializeAppointmentClient({
10
+ * baseUrl: import.meta.env.VITE_APPOINTMENT_API_URL,
11
+ * consumer: "crmflow",
12
+ * });
13
+ * ```
14
+ */
15
+ export type AppointmentClientConnectOptions = {
16
+ /** Blazeo / appointment API base URL (trailing slashes are normalized away). */
17
+ baseUrl: string;
18
+ /** Optional `Consumer` header value (matches Apex / Blazeo clients). */
19
+ consumer?: string;
20
+ /** Optional custom fetch (e.g. authenticated wrapper). */
21
+ fetch?: typeof fetch;
22
+ /** Optional offset helper for event endpoints (minutes). */
23
+ getDefaultOffset?: () => number;
24
+ };
25
+ export declare function initializeAppointmentClient(options: AppointmentClientConnectOptions): void;
26
+ /** True when global Blazeo config has a non-empty `baseUrl` (after {@link configure}). */
27
+ export declare function isAppointmentClientConfigured(): boolean;
28
+ //# sourceMappingURL=initializeAppointmentClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initializeAppointmentClient.d.ts","sourceRoot":"","sources":["../../src/config/initializeAppointmentClient.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;CACjC,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,+BAA+B,GACvC,IAAI,CAiBN;AAED,0FAA0F;AAC1F,wBAAgB,6BAA6B,IAAI,OAAO,CAGvD"}
@@ -0,0 +1,23 @@
1
+ import { configure, getConfig } from "@blazeo.com/calendar-client";
2
+ export function initializeAppointmentClient(options) {
3
+ const baseUrl = options.baseUrl?.trim().replace(/\/+$/, "");
4
+ if (!baseUrl) {
5
+ throw new Error("initializeAppointmentClient: `baseUrl` is required and cannot be empty.");
6
+ }
7
+ configure({
8
+ baseUrl,
9
+ ...(options.consumer?.trim()
10
+ ? { consumer: options.consumer.trim() }
11
+ : {}),
12
+ ...(options.fetch ? { fetch: options.fetch } : {}),
13
+ ...(options.getDefaultOffset
14
+ ? { getDefaultOffset: options.getDefaultOffset }
15
+ : {}),
16
+ });
17
+ }
18
+ /** True when global Blazeo config has a non-empty `baseUrl` (after {@link configure}). */
19
+ export function isAppointmentClientConfigured() {
20
+ const cfg = getConfig();
21
+ return Boolean(cfg?.baseUrl?.trim());
22
+ }
23
+ //# sourceMappingURL=initializeAppointmentClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initializeAppointmentClient.js","sourceRoot":"","sources":["../../src/config/initializeAppointmentClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AA2BnE,MAAM,UAAU,2BAA2B,CACzC,OAAwC;IAExC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E,CAAC;IACJ,CAAC;IACD,SAAS,CAAC;QACR,OAAO;QACP,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE;YAC1B,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;YACvC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,OAAO,CAAC,gBAAgB;YAC1B,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE;YAChD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;AACL,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,6BAA6B;IAC3C,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,44 @@
1
+ import type { IStateTreeNode } from "mobx-state-tree";
2
+ import type { ApexAppointmentInput } from "../types/appointment.js";
3
+ import { type CreateCalendarOptions } from "../calendar/createCalendar.js";
4
+ /** Options for event calls — same connection rules as calendar + Blazeo `offset` header. */
5
+ export type AppointmentEventOptions = CreateCalendarOptions & {
6
+ /**
7
+ * Minutes offset for `POST /event/create` and `POST /event/reschedule` (matches Apex adapter `offset`).
8
+ * Omitted uses Blazeo env `getDefaultOffset` when configured.
9
+ */
10
+ offsetMinutes?: number;
11
+ };
12
+ export type BlazeoEventApiResponse = {
13
+ status: string;
14
+ message?: string;
15
+ data?: unknown;
16
+ };
17
+ export type AppointmentEventSuccess = {
18
+ ok: true;
19
+ /** Present after create/reschedule when an MST node was used; omit after cancel. */
20
+ event?: IStateTreeNode;
21
+ apiResponse?: BlazeoEventApiResponse;
22
+ };
23
+ export type AppointmentEventFailure = {
24
+ ok: false;
25
+ error: string;
26
+ apiResponse?: BlazeoEventApiResponse;
27
+ };
28
+ export type AppointmentEventResult = AppointmentEventSuccess | AppointmentEventFailure;
29
+ /**
30
+ * Creates an appointment event — `Event.create()` → `POST /event/create`
31
+ * (aligned with `AppointmentAPIAdapter.Create`).
32
+ */
33
+ export declare function createAppointmentEventAsync(input: ApexAppointmentInput, options?: AppointmentEventOptions): Promise<AppointmentEventResult>;
34
+ /**
35
+ * Reschedules an appointment — `Event.reschedule()` → `POST /event/reschedule`
36
+ * (aligned with `AppointmentAPIAdapter.Reschedule`).
37
+ */
38
+ export declare function rescheduleAppointmentEventAsync(input: ApexAppointmentInput, options?: AppointmentEventOptions): Promise<AppointmentEventResult>;
39
+ /**
40
+ * Cancels an appointment — `EventModel.cancel` → `GET /event/cancel`
41
+ * (aligned with `AppointmentAPIAdapter.Cancel`).
42
+ */
43
+ export declare function cancelAppointmentEventAsync(appointmentEventId: string, options?: CreateCalendarOptions): Promise<AppointmentEventResult>;
44
+ //# sourceMappingURL=appointmentEventFacade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appointmentEventFacade.d.ts","sourceRoot":"","sources":["../../src/events/appointmentEventFacade.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,+BAA+B,CAAC;AAMvC,4FAA4F;AAC5F,MAAM,MAAM,uBAAuB,GAAG,qBAAqB,GAAG;IAC5D;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,IAAI,CAAC;IACT,oFAAoF;IACpF,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,uBAAuB,GAAG,uBAAuB,CAAC;AAkGvF;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,oBAAoB,EAC3B,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,sBAAsB,CAAC,CAOjC;AAED;;;GAGG;AACH,wBAAsB,+BAA+B,CACnD,KAAK,EAAE,oBAAoB,EAC3B,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,sBAAsB,CAAC,CAOjC;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,kBAAkB,EAAE,MAAM,EAC1B,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,sBAAsB,CAAC,CA+CjC"}
@@ -0,0 +1,130 @@
1
+ import { EventModel, configure } from "@blazeo.com/calendar-client";
2
+ import { buildModelEnv, resolveBlazeoConnection, } from "../calendar/createCalendar.js";
3
+ import { mapAppointmentToEventSnapshot, } from "./mapAppointmentToEventSnapshot.js";
4
+ function isFailureStatus(res) {
5
+ return res.status !== "success" && res.status !== "Success";
6
+ }
7
+ function ensureConfigure(resolvedBase, resolvedConsumer) {
8
+ if (resolvedBase) {
9
+ configure({
10
+ baseUrl: resolvedBase,
11
+ ...(resolvedConsumer ? { consumer: resolvedConsumer } : {}),
12
+ });
13
+ }
14
+ }
15
+ async function runEventMutation(input, mode, options) {
16
+ const { baseUrl: resolvedBase, consumer: resolvedConsumer } = resolveBlazeoConnection(options);
17
+ ensureConfigure(resolvedBase, resolvedConsumer);
18
+ const baseUrl = resolvedBase;
19
+ const consumer = resolvedConsumer;
20
+ if (!options.localOnly && !baseUrl) {
21
+ return {
22
+ ok: false,
23
+ error: "baseUrl is missing. Set `blazeoClientConfig.baseUrl` in `appointment-client/src/config/blazeoClientDefaults.ts` or call `configure({ baseUrl })`.",
24
+ };
25
+ }
26
+ const snapshot = mapAppointmentToEventSnapshot(input, mode);
27
+ const eventIdForApi = snapshot.eventId;
28
+ if (mode === "reschedule" && (!eventIdForApi || eventIdForApi === "new")) {
29
+ return {
30
+ ok: false,
31
+ error: "thirdPartyAppointmentId is required for reschedule (existing Blazeo event id).",
32
+ };
33
+ }
34
+ const env = buildModelEnv(baseUrl, consumer, Boolean(options.localOnly));
35
+ if (!options.localOnly && env.baseUrl == null) {
36
+ return {
37
+ ok: false,
38
+ error: "Model env requires baseUrl. Set `blazeoClientConfig` or pass `baseUrl` in options.",
39
+ };
40
+ }
41
+ const eventNode = EventModel.create(snapshot, env);
42
+ if (options.localOnly) {
43
+ return { ok: true, event: eventNode };
44
+ }
45
+ debugger;
46
+ const offset = options.offsetMinutes;
47
+ const apiRes = mode === "create"
48
+ ? await eventNode.create(offset)
49
+ : await eventNode.reschedule(offset);
50
+ if (isFailureStatus(apiRes)) {
51
+ const msg = apiRes.message ??
52
+ (typeof apiRes.data === "string" ? apiRes.data : undefined) ??
53
+ JSON.stringify(apiRes);
54
+ return {
55
+ ok: false,
56
+ error: mode === "create"
57
+ ? msg || "Event create failed"
58
+ : msg || "Event reschedule failed",
59
+ apiResponse: apiRes,
60
+ };
61
+ }
62
+ return { ok: true, event: eventNode, apiResponse: apiRes };
63
+ }
64
+ /**
65
+ * Creates an appointment event — `Event.create()` → `POST /event/create`
66
+ * (aligned with `AppointmentAPIAdapter.Create`).
67
+ */
68
+ export async function createAppointmentEventAsync(input, options = {}) {
69
+ try {
70
+ return await runEventMutation(input, "create", options);
71
+ }
72
+ catch (err) {
73
+ const message = err instanceof Error ? err.message : String(err);
74
+ return { ok: false, error: message };
75
+ }
76
+ }
77
+ /**
78
+ * Reschedules an appointment — `Event.reschedule()` → `POST /event/reschedule`
79
+ * (aligned with `AppointmentAPIAdapter.Reschedule`).
80
+ */
81
+ export async function rescheduleAppointmentEventAsync(input, options = {}) {
82
+ try {
83
+ return await runEventMutation(input, "reschedule", options);
84
+ }
85
+ catch (err) {
86
+ const message = err instanceof Error ? err.message : String(err);
87
+ return { ok: false, error: message };
88
+ }
89
+ }
90
+ /**
91
+ * Cancels an appointment — `EventModel.cancel` → `GET /event/cancel`
92
+ * (aligned with `AppointmentAPIAdapter.Cancel`).
93
+ */
94
+ export async function cancelAppointmentEventAsync(appointmentEventId, options = {}) {
95
+ try {
96
+ const id = appointmentEventId.trim();
97
+ if (!id) {
98
+ return { ok: false, error: "appointmentEventId is required for cancel." };
99
+ }
100
+ const { baseUrl: resolvedBase, consumer: resolvedConsumer } = resolveBlazeoConnection(options);
101
+ ensureConfigure(resolvedBase, resolvedConsumer);
102
+ const baseUrl = resolvedBase;
103
+ if (!options.localOnly && !baseUrl) {
104
+ return {
105
+ ok: false,
106
+ error: "baseUrl is missing. Set `blazeoClientConfig.baseUrl` in `appointment-client/src/config/blazeoClientDefaults.ts` or call `configure({ baseUrl })`.",
107
+ };
108
+ }
109
+ if (options.localOnly) {
110
+ return { ok: true, apiResponse: undefined };
111
+ }
112
+ const apiRes = (await EventModel.cancel(id));
113
+ if (isFailureStatus(apiRes)) {
114
+ const msg = apiRes.message ??
115
+ (typeof apiRes.data === "string" ? apiRes.data : undefined) ??
116
+ JSON.stringify(apiRes);
117
+ return {
118
+ ok: false,
119
+ error: msg || "Event cancel failed",
120
+ apiResponse: apiRes,
121
+ };
122
+ }
123
+ return { ok: true, apiResponse: apiRes };
124
+ }
125
+ catch (err) {
126
+ const message = err instanceof Error ? err.message : String(err);
127
+ return { ok: false, error: message };
128
+ }
129
+ }
130
+ //# sourceMappingURL=appointmentEventFacade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appointmentEventFacade.js","sourceRoot":"","sources":["../../src/events/appointmentEventFacade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ApexAppointmentInput } from "../types/appointment.js";
2
+ export type AppointmentEventMappingMode = "create" | "reschedule";
3
+ /**
4
+ * Maps Apex appointment input to a Blazeo `Event` MST snapshot for
5
+ * {@link EventModel.create} from `@blazeo.com/calendar-client`.
6
+ */
7
+ export declare function mapAppointmentToEventSnapshot(input: ApexAppointmentInput, mode: AppointmentEventMappingMode): Record<string, unknown>;
8
+ //# sourceMappingURL=mapAppointmentToEventSnapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapAppointmentToEventSnapshot.d.ts","sourceRoot":"","sources":["../../src/events/mapAppointmentToEventSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAqBpE,MAAM,MAAM,2BAA2B,GAAG,QAAQ,GAAG,YAAY,CAAC;AAElE;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,oBAAoB,EAC3B,IAAI,EAAE,2BAA2B,GAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0CzB"}
@@ -0,0 +1,56 @@
1
+ function parseDate(value) {
2
+ const d = value instanceof Date ? value : new Date(value);
3
+ if (Number.isNaN(d.getTime())) {
4
+ throw new Error("Invalid startDate or endDate");
5
+ }
6
+ return d;
7
+ }
8
+ function formatYmd(d) {
9
+ const y = d.getFullYear();
10
+ const m = String(d.getMonth() + 1).padStart(2, "0");
11
+ const day = String(d.getDate()).padStart(2, "0");
12
+ return `${y}-${m}-${day}`;
13
+ }
14
+ function normalizeParticipantId(id) {
15
+ return id.trim().replace(/^\{|\}$/g, "");
16
+ }
17
+ /**
18
+ * Maps Apex appointment input to a Blazeo `Event` MST snapshot for
19
+ * {@link EventModel.create} from `@blazeo.com/calendar-client`.
20
+ */
21
+ export function mapAppointmentToEventSnapshot(input, mode) {
22
+ const start = parseDate(input.startDate);
23
+ const end = parseDate(input.endDate);
24
+ const description = mode === "create"
25
+ ? (input.description ?? null)
26
+ : (input.description ?? input.notes ?? null);
27
+ const eventIdRaw = input.thirdPartyAppointmentId?.trim();
28
+ const eventId = eventIdRaw && eventIdRaw !== "new" ? eventIdRaw : "new";
29
+ const email = input.email ?? input.visitorEmail ?? null;
30
+ const phone = input.phone ?? input.visitorPhone ?? null;
31
+ const snap = {
32
+ eventId,
33
+ calendarId: input.thirdPartyCalendarId?.trim() ?? "",
34
+ participantId: normalizeParticipantId(input.participantId),
35
+ title: input.title ?? null,
36
+ description,
37
+ startDate: formatYmd(start),
38
+ endDate: formatYmd(end),
39
+ startHour: start.getHours(),
40
+ startMinute: start.getMinutes(),
41
+ endHour: end.getHours(),
42
+ endMinute: end.getMinutes(),
43
+ visitorEmail: email,
44
+ visitorPhone: phone,
45
+ rescheduleLink: input.rescheduleUrl ?? null,
46
+ cancelLink: input.cancelUrl ?? null,
47
+ timeZone: input.timeZone ?? null,
48
+ };
49
+ if (mode === "create") {
50
+ const now = new Date().toISOString();
51
+ snap.createdOn = now;
52
+ snap.modifiedOn = now;
53
+ }
54
+ return snap;
55
+ }
56
+ //# sourceMappingURL=mapAppointmentToEventSnapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapAppointmentToEventSnapshot.js","sourceRoot":"","sources":["../../src/events/mapAppointmentToEventSnapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type CalendarSlot } from "./models/CalendarSlotModel.js";
2
+ import { type CalendarRoot, type CalendarRootSnapshotIn } from "./models/CalendarRootModel.js";
3
+ import { type Event } from "./models/EventModel.js";
4
+ import { type Participant } from "./models/ParticipantModel.js";
5
+ /** Example slot nodes (MST instances). */
6
+ export declare function getExampleSlots(): CalendarSlot[];
7
+ /** Example event nodes. */
8
+ export declare function getExampleEvents(): Event[];
9
+ /** Example participant nodes. */
10
+ export declare function getExampleParticipants(): Participant[];
11
+ /** Full root store snapshot suitable for `createCalendarRoot(snapshot)`. */
12
+ export declare function getExampleCalendarRootSnapshot(): CalendarRootSnapshotIn;
13
+ /** Root store with example slots, events, and participants. */
14
+ export declare function getExampleCalendarRoot(): CalendarRoot;
15
+ //# sourceMappingURL=exampleData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exampleData.d.ts","sourceRoot":"","sources":["../src/exampleData.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAc,KAAK,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,8BAA8B,CAAC;AAgDtC,0CAA0C;AAC1C,wBAAgB,eAAe,IAAI,YAAY,EAAE,CAEhD;AAED,2BAA2B;AAC3B,wBAAgB,gBAAgB,IAAI,KAAK,EAAE,CAE1C;AAED,iCAAiC;AACjC,wBAAgB,sBAAsB,IAAI,WAAW,EAAE,CAEtD;AAED,4EAA4E;AAC5E,wBAAgB,8BAA8B,IAAI,sBAAsB,CAMvE;AAED,+DAA+D;AAC/D,wBAAgB,sBAAsB,IAAI,YAAY,CAErD"}
@@ -0,0 +1,72 @@
1
+ import { CalendarSlotModel } from "./models/CalendarSlotModel.js";
2
+ import { CalendarRootModel, } from "./models/CalendarRootModel.js";
3
+ import { EventModel } from "./models/EventModel.js";
4
+ import { ParticipantModel, } from "./models/ParticipantModel.js";
5
+ const EXAMPLE_SLOT_SNAPSHOTS = [
6
+ {
7
+ id: "slot-1",
8
+ title: "Team standup",
9
+ start: "09:00",
10
+ end: "09:15",
11
+ },
12
+ {
13
+ id: "slot-2",
14
+ title: "Focus block",
15
+ start: "10:00",
16
+ end: "12:00",
17
+ },
18
+ {
19
+ id: "slot-3",
20
+ title: "1:1 with design",
21
+ start: "14:00",
22
+ end: "14:30",
23
+ },
24
+ ];
25
+ const EXAMPLE_EVENT_SNAPSHOTS = [
26
+ {
27
+ id: "ev-1",
28
+ title: "Product roadmap review",
29
+ calendarId: "cal-eng",
30
+ startsAt: "2026-04-02T15:00:00.000Z",
31
+ endsAt: "2026-04-02T16:00:00.000Z",
32
+ participantIds: ["p-1", "p-2"],
33
+ },
34
+ {
35
+ id: "ev-2",
36
+ title: "Customer onboarding call",
37
+ calendarId: "cal-sales",
38
+ startsAt: "2026-04-03T10:30:00.000Z",
39
+ endsAt: "2026-04-03T11:00:00.000Z",
40
+ participantIds: ["p-3"],
41
+ },
42
+ ];
43
+ const EXAMPLE_PARTICIPANT_SNAPSHOTS = [
44
+ { id: "p-1", name: "Alex Morgan", email: "alex@example.com", role: "Organizer" },
45
+ { id: "p-2", name: "Jordan Lee", email: "jordan@example.com", role: "Required" },
46
+ { id: "p-3", name: "Sam Rivera", email: "sam@example.com", role: "Optional" },
47
+ ];
48
+ /** Example slot nodes (MST instances). */
49
+ export function getExampleSlots() {
50
+ return EXAMPLE_SLOT_SNAPSHOTS.map((s) => CalendarSlotModel.create(s));
51
+ }
52
+ /** Example event nodes. */
53
+ export function getExampleEvents() {
54
+ return EXAMPLE_EVENT_SNAPSHOTS.map((s) => EventModel.create(s));
55
+ }
56
+ /** Example participant nodes. */
57
+ export function getExampleParticipants() {
58
+ return EXAMPLE_PARTICIPANT_SNAPSHOTS.map((s) => ParticipantModel.create(s));
59
+ }
60
+ /** Full root store snapshot suitable for `createCalendarRoot(snapshot)`. */
61
+ export function getExampleCalendarRootSnapshot() {
62
+ return {
63
+ slots: EXAMPLE_SLOT_SNAPSHOTS,
64
+ events: EXAMPLE_EVENT_SNAPSHOTS,
65
+ participants: EXAMPLE_PARTICIPANT_SNAPSHOTS,
66
+ };
67
+ }
68
+ /** Root store with example slots, events, and participants. */
69
+ export function getExampleCalendarRoot() {
70
+ return CalendarRootModel.create(getExampleCalendarRootSnapshot());
71
+ }
72
+ //# sourceMappingURL=exampleData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exampleData.js","sourceRoot":"","sources":["../src/exampleData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAqB,MAAM,+BAA+B,CAAC;AACrF,OAAO,EACL,iBAAiB,GAGlB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAc,MAAM,wBAAwB,CAAC;AAChE,OAAO,EACL,gBAAgB,GAEjB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,sBAAsB,GAA2C;IACrE;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,OAAO;KACb;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,OAAO;KACb;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,OAAO;KACb;CACF,CAAC;AAEF,MAAM,uBAAuB,GAAoC;IAC/D;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,wBAAwB;QAC/B,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE,0BAA0B;QACpC,MAAM,EAAE,0BAA0B;QAClC,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;KAC/B;IACD;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,0BAA0B;QACjC,UAAU,EAAE,WAAW;QACvB,QAAQ,EAAE,0BAA0B;QACpC,MAAM,EAAE,0BAA0B;QAClC,cAAc,EAAE,CAAC,KAAK,CAAC;KACxB;CACF,CAAC;AAEF,MAAM,6BAA6B,GAA0C;IAC3E,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE;IAChF,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,EAAE;IAChF,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAE;CAC9E,CAAC;AAEF,0CAA0C;AAC1C,MAAM,UAAU,eAAe;IAC7B,OAAO,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,2BAA2B;AAC3B,MAAM,UAAU,gBAAgB;IAC9B,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,sBAAsB;IACpC,OAAO,6BAA6B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,8BAA8B;IAC5C,OAAO;QACL,KAAK,EAAE,sBAAsB;QAC7B,MAAM,EAAE,uBAAuB;QAC/B,YAAY,EAAE,6BAA6B;KAC5C,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,sBAAsB;IACpC,OAAO,iBAAiB,CAAC,MAAM,CAAC,8BAA8B,EAAE,CAAC,CAAC;AACpE,CAAC"}