@actschurch/ccms-sdk 0.0.26 → 0.0.27

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 (87) hide show
  1. package/dist/models/accounselling/ModelView/CareSessionModelView.d.ts +7 -0
  2. package/dist/models/accounselling/ModelView/CareSessionModelView.d.ts.map +1 -1
  3. package/dist/models/analytics/KnowledgeSearch.d.ts +10 -0
  4. package/dist/models/analytics/KnowledgeSearch.d.ts.map +1 -1
  5. package/dist/models/dashboard/index.d.ts +282 -3
  6. package/dist/models/dashboard/index.d.ts.map +1 -1
  7. package/dist/models/dashboard/index.js +315 -3
  8. package/dist/models/dashboard/index.js.map +1 -1
  9. package/dist/models/resources/ModelView/CourseModelView.d.ts +17 -0
  10. package/dist/models/resources/ModelView/CourseModelView.d.ts.map +1 -1
  11. package/dist/models/resources/ResourceSettings.d.ts +31 -0
  12. package/dist/models/resources/ResourceSettings.d.ts.map +1 -0
  13. package/dist/models/resources/ResourceSettings.js +2 -0
  14. package/dist/models/resources/ResourceSettings.js.map +1 -0
  15. package/dist/models/resources/SessionNote.d.ts +30 -0
  16. package/dist/models/resources/SessionNote.d.ts.map +1 -0
  17. package/dist/models/resources/SessionNote.js +2 -0
  18. package/dist/models/resources/SessionNote.js.map +1 -0
  19. package/dist/models/resources/index.d.ts +2 -0
  20. package/dist/models/resources/index.d.ts.map +1 -1
  21. package/dist/models/resources/index.js +3 -0
  22. package/dist/models/resources/index.js.map +1 -1
  23. package/dist/react/hooks/services/useResourcesServices.d.ts +5 -1
  24. package/dist/react/hooks/services/useResourcesServices.d.ts.map +1 -1
  25. package/dist/react/hooks/services/useResourcesServices.js +6 -0
  26. package/dist/react/hooks/services/useResourcesServices.js.map +1 -1
  27. package/dist/realtime/dashboards/DashboardAggregatorClient.d.ts +48 -0
  28. package/dist/realtime/dashboards/DashboardAggregatorClient.d.ts.map +1 -0
  29. package/dist/realtime/dashboards/DashboardAggregatorClient.js +65 -0
  30. package/dist/realtime/dashboards/DashboardAggregatorClient.js.map +1 -0
  31. package/dist/realtime/dashboards/index.d.ts +1 -0
  32. package/dist/realtime/dashboards/index.d.ts.map +1 -1
  33. package/dist/realtime/dashboards/index.js +3 -0
  34. package/dist/realtime/dashboards/index.js.map +1 -1
  35. package/dist/services/accounselling/CareCaseService.d.ts +45 -1
  36. package/dist/services/accounselling/CareCaseService.d.ts.map +1 -1
  37. package/dist/services/accounselling/CareCaseService.js +65 -0
  38. package/dist/services/accounselling/CareCaseService.js.map +1 -1
  39. package/dist/services/dashboard/DashboardAggregatorService.d.ts +73 -0
  40. package/dist/services/dashboard/DashboardAggregatorService.d.ts.map +1 -0
  41. package/dist/services/dashboard/DashboardAggregatorService.js +145 -0
  42. package/dist/services/dashboard/DashboardAggregatorService.js.map +1 -0
  43. package/dist/services/dashboard/DashboardLayoutService.d.ts +46 -0
  44. package/dist/services/dashboard/DashboardLayoutService.d.ts.map +1 -0
  45. package/dist/services/dashboard/DashboardLayoutService.js +75 -0
  46. package/dist/services/dashboard/DashboardLayoutService.js.map +1 -0
  47. package/dist/services/dashboard/DashboardServices.d.ts +38 -0
  48. package/dist/services/dashboard/DashboardServices.d.ts.map +1 -0
  49. package/dist/services/dashboard/DashboardServices.js +28 -0
  50. package/dist/services/dashboard/DashboardServices.js.map +1 -0
  51. package/dist/services/dashboard/index.d.ts +11 -0
  52. package/dist/services/dashboard/index.d.ts.map +1 -0
  53. package/dist/services/dashboard/index.js +10 -0
  54. package/dist/services/dashboard/index.js.map +1 -0
  55. package/dist/services/index.d.ts +1 -0
  56. package/dist/services/index.d.ts.map +1 -1
  57. package/dist/services/index.js +2 -0
  58. package/dist/services/index.js.map +1 -1
  59. package/dist/services/knowledgebase/KnowledgeBaseQAService.d.ts +7 -1
  60. package/dist/services/knowledgebase/KnowledgeBaseQAService.d.ts.map +1 -1
  61. package/dist/services/knowledgebase/KnowledgeBaseQAService.js +11 -0
  62. package/dist/services/knowledgebase/KnowledgeBaseQAService.js.map +1 -1
  63. package/dist/services/members/MemberService.d.ts +17 -0
  64. package/dist/services/members/MemberService.d.ts.map +1 -1
  65. package/dist/services/members/MemberService.js +27 -0
  66. package/dist/services/members/MemberService.js.map +1 -1
  67. package/dist/services/resources/PublicCoursesService.d.ts +7 -0
  68. package/dist/services/resources/PublicCoursesService.d.ts.map +1 -1
  69. package/dist/services/resources/PublicCoursesService.js +12 -0
  70. package/dist/services/resources/PublicCoursesService.js.map +1 -1
  71. package/dist/services/resources/ResourceSettingsService.d.ts +26 -0
  72. package/dist/services/resources/ResourceSettingsService.d.ts.map +1 -0
  73. package/dist/services/resources/ResourceSettingsService.js +43 -0
  74. package/dist/services/resources/ResourceSettingsService.js.map +1 -0
  75. package/dist/services/resources/SessionNoteService.d.ts +27 -0
  76. package/dist/services/resources/SessionNoteService.d.ts.map +1 -0
  77. package/dist/services/resources/SessionNoteService.js +44 -0
  78. package/dist/services/resources/SessionNoteService.js.map +1 -0
  79. package/dist/services/resources/UserCourseProgressService.d.ts +9 -0
  80. package/dist/services/resources/UserCourseProgressService.d.ts.map +1 -1
  81. package/dist/services/resources/UserCourseProgressService.js +13 -0
  82. package/dist/services/resources/UserCourseProgressService.js.map +1 -1
  83. package/dist/services/resources/index.d.ts +6 -0
  84. package/dist/services/resources/index.d.ts.map +1 -1
  85. package/dist/services/resources/index.js +6 -0
  86. package/dist/services/resources/index.js.map +1 -1
  87. package/package.json +1 -1
@@ -1,8 +1,320 @@
1
1
  /**
2
2
  * Dashboard models
3
3
  *
4
- * This file is a placeholder for future dashboard-related models.
5
- * Currently, no backend models exist in the Dashboard directory.
4
+ * TypeScript-SDK mirror of the cross-domain "my day at CCMS" dashboard
5
+ * contract kept byte-for-byte in step with the iOS (`CCMSSDK`) and Android
6
+ * (`com.ccms.sdk`) SDKs and the backend
7
+ * `CCMS.Api.DashboardAggregator` / `CCMSLib.Dashboard` types.
8
+ *
9
+ * The Hub renders a dashboard widget purely from its JSON payload — it never
10
+ * links the owning domain's binary — so these shapes are the locked
11
+ * cross-platform contract (`05_DASHBOARD_EXPERIENCE.md`). Unknown renderer /
12
+ * container kinds (a newer server talking to an older client) must degrade
13
+ * gracefully rather than blank-out or crash.
14
+ *
15
+ * Wire form is camelCase, matching Swift/Kotlin exactly.
16
+ */
17
+ /** Every known renderer kind, in declaration order. */
18
+ export const WIDGET_RENDERER_KINDS = [
19
+ 'stat',
20
+ 'list',
21
+ 'progress',
22
+ 'calendar-strip',
23
+ 'custom',
24
+ ];
25
+ /**
26
+ * Parse a wire value to a {@link WidgetRendererKind}. Unknown / undefined
27
+ * values fall back to `'custom'` — the graceful-degradation contract (a widget
28
+ * always renders something, never blank, never a crash).
29
+ */
30
+ export function parseWidgetRendererKind(value) {
31
+ switch (value?.trim().toLowerCase()) {
32
+ case 'stat':
33
+ return 'stat';
34
+ case 'list':
35
+ return 'list';
36
+ case 'progress':
37
+ return 'progress';
38
+ case 'calendar-strip':
39
+ return 'calendar-strip';
40
+ case 'custom':
41
+ return 'custom';
42
+ default:
43
+ return 'custom';
44
+ }
45
+ }
46
+ /** Every known container type, in declaration order. */
47
+ export const WIDGET_CONTAINER_TYPES = [
48
+ 'kpi-grid',
49
+ 'kpi-two-col',
50
+ 'kpi-single',
51
+ 'horizontal-cards',
52
+ 'stack',
53
+ ];
54
+ /**
55
+ * Parse a wire value to a {@link WidgetContainerType}. Unknown / undefined
56
+ * values fall back to `'stack'`.
57
+ */
58
+ export function parseWidgetContainerType(value) {
59
+ switch (value?.trim().toLowerCase()) {
60
+ case 'kpi-grid':
61
+ return 'kpi-grid';
62
+ case 'kpi-two-col':
63
+ return 'kpi-two-col';
64
+ case 'kpi-single':
65
+ return 'kpi-single';
66
+ case 'horizontal-cards':
67
+ return 'horizontal-cards';
68
+ case 'stack':
69
+ return 'stack';
70
+ default:
71
+ return 'stack';
72
+ }
73
+ }
74
+ /**
75
+ * The widgets the user has switched on, in their chosen `order`.
76
+ */
77
+ export function enabledWidgetsInOrder(layout) {
78
+ return (layout.widgets ?? [])
79
+ .filter((w) => w.enabled)
80
+ .slice()
81
+ .sort((a, b) => a.order - b.order);
82
+ }
83
+ /**
84
+ * The sections to render: the saved {@link DashboardLayout.sections} (enabled,
85
+ * ordered, each trimmed to its enabled widgets and dropped when empty) when
86
+ * present, else a single synthesized `stack` section over
87
+ * {@link enabledWidgetsInOrder} — back-compat with pre-container layouts.
88
+ *
89
+ * Mirrors the Swift `resolvedSections` / Kotlin `resolvedSections()` logic.
90
+ */
91
+ export function resolvedSections(layout) {
92
+ const ordered = enabledWidgetsInOrder(layout);
93
+ const enabledIds = new Set(ordered.map((w) => w.widgetId));
94
+ const saved = layout.sections;
95
+ if (saved && saved.length > 0) {
96
+ return saved
97
+ .filter((s) => s.enabled)
98
+ .slice()
99
+ .sort((a, b) => a.order - b.order)
100
+ .map((s) => ({
101
+ ...s,
102
+ widgetIds: s.widgetIds.filter((id) => enabledIds.has(id)),
103
+ }))
104
+ .filter((s) => s.widgetIds.length > 0);
105
+ }
106
+ return [
107
+ {
108
+ id: 'all',
109
+ title: undefined,
110
+ containerType: 'stack',
111
+ order: 0,
112
+ enabled: true,
113
+ widgetIds: ordered.map((w) => w.widgetId),
114
+ },
115
+ ];
116
+ }
117
+ /**
118
+ * The pages to render: the saved {@link DashboardLayout.pages} (sorted by
119
+ * order, each page's sections filtered to enabled and trimmed to the layout's
120
+ * enabled widget ids, then dropped when empty) when present, else a single
121
+ * `home` page wrapping {@link resolvedSections} — back-compat with pre-page
122
+ * layouts.
123
+ *
124
+ * Mirrors the Swift `resolvedPages` / Kotlin `resolvedPages()` logic.
125
+ */
126
+ export function resolvedPages(layout) {
127
+ const enabledIds = new Set(enabledWidgetsInOrder(layout).map((w) => w.widgetId));
128
+ const saved = layout.pages;
129
+ if (saved && saved.length > 0) {
130
+ return saved
131
+ .slice()
132
+ .sort((a, b) => a.order - b.order)
133
+ .map((page) => ({
134
+ ...page,
135
+ sections: page.sections
136
+ .filter((s) => s.enabled)
137
+ .slice()
138
+ .sort((a, b) => a.order - b.order)
139
+ .map((s) => ({
140
+ ...s,
141
+ widgetIds: s.widgetIds.filter((id) => enabledIds.has(id)),
142
+ }))
143
+ .filter((s) => s.widgetIds.length > 0),
144
+ }))
145
+ .filter((page) => page.sections.length > 0);
146
+ }
147
+ return [
148
+ {
149
+ id: 'home',
150
+ title: undefined,
151
+ order: 0,
152
+ sections: resolvedSections(layout),
153
+ },
154
+ ];
155
+ }
156
+ // ───────────────────────────────────────────────────────────────────────────
157
+ // Bundled catalog fallback
158
+ // ───────────────────────────────────────────────────────────────────────────
159
+ /**
160
+ * A **bundled, client-side mirror** of the backend `WidgetCatalogMeta` — the
161
+ * fallback the Hub uses when `GET /api/dashboard/widgets` is unavailable (e.g. an
162
+ * aggregator deployment that predates the catalog endpoint). It keeps the
163
+ * Add-Widget picker, type badges and per-widget settings working before the
164
+ * server catalog ships.
165
+ *
166
+ * Kept byte-identical to the backend `WidgetCatalogMeta` and the iOS
167
+ * `WidgetCatalogItem.bundled` / Kotlin `BUNDLED_WIDGET_CATALOG` (ids, kinds,
168
+ * categories, descriptions, accent hexes, settings schema).
169
+ */
170
+ // ---- categories (domain-based, mirroring the backend) ----
171
+ const CAT_TASKS = 'Tasks';
172
+ const CAT_HR = 'HR & People';
173
+ const CAT_BOOKINGS = 'Bookings';
174
+ const CAT_PROCUREMENT = 'Procurement';
175
+ const CAT_LEARNING = 'Learning';
176
+ const CAT_ANNOUNCEMENTS = 'Announcements';
177
+ const CAT_MEETINGS = 'Meetings';
178
+ const CAT_MESSAGES = 'Messages';
179
+ const CAT_APPS = 'My Apps';
180
+ const STAT_CONTAINERS = ['kpi-grid', 'kpi-two-col', 'kpi-single', 'stack'];
181
+ const LIST_CONTAINERS = ['stack', 'horizontal-cards'];
182
+ const STACK_ONLY = ['stack'];
183
+ const customTitleSetting = () => ({
184
+ key: 'customTitle',
185
+ type: 'string',
186
+ label: 'Custom title',
187
+ });
188
+ const countSetting = (max = 20, def = 5) => ({
189
+ key: 'count',
190
+ type: 'int',
191
+ label: 'How many to show',
192
+ default: def,
193
+ min: 1,
194
+ max,
195
+ });
196
+ const accentColorSetting = () => ({
197
+ key: 'color',
198
+ type: 'enum',
199
+ label: 'Accent colour',
200
+ default: 'default',
201
+ options: ['default', 'blue', 'green', 'amber', 'purple', 'pink', 'teal', 'red', 'cyan'],
202
+ });
203
+ const statItem = (id, title, description, category, accent) => ({
204
+ id,
205
+ title,
206
+ description,
207
+ kind: 'stat',
208
+ category,
209
+ defaultContainer: 'kpi-grid',
210
+ supportedContainers: STAT_CONTAINERS,
211
+ defaultAccentColor: accent,
212
+ settings: [customTitleSetting(), accentColorSetting()],
213
+ });
214
+ const listItem = (id, title, description, category) => ({
215
+ id,
216
+ title,
217
+ description,
218
+ kind: 'list',
219
+ category,
220
+ defaultContainer: 'stack',
221
+ supportedContainers: LIST_CONTAINERS,
222
+ settings: [customTitleSetting(), countSetting()],
223
+ });
224
+ const progressItem = (id, title, description, category) => ({
225
+ id,
226
+ title,
227
+ description,
228
+ kind: 'progress',
229
+ category,
230
+ defaultContainer: 'stack',
231
+ supportedContainers: STACK_ONLY,
232
+ settings: [customTitleSetting()],
233
+ });
234
+ const calendarItem = (id, title, description, category) => ({
235
+ id,
236
+ title,
237
+ description,
238
+ kind: 'calendar-strip',
239
+ category,
240
+ defaultContainer: 'stack',
241
+ supportedContainers: STACK_ONLY,
242
+ settings: [customTitleSetting()],
243
+ });
244
+ const customItem = (id, title, description, category) => ({
245
+ id,
246
+ title,
247
+ description,
248
+ kind: 'custom',
249
+ category,
250
+ defaultContainer: 'stack',
251
+ supportedContainers: STACK_ONLY,
252
+ settings: [],
253
+ });
254
+ /**
255
+ * The bundled catalog — same set + order as the backend `WidgetCatalogMeta.All`,
256
+ * the iOS `WidgetCatalogItem.bundled`, and the Kotlin `BUNDLED_WIDGET_CATALOG`.
6
257
  */
7
- export {};
258
+ export const BUNDLED_WIDGET_CATALOG = [
259
+ // My Apps (special client-rendered launcher)
260
+ customItem('hub.my-apps', 'My apps', 'Quick-launch the CCMS apps you use.', CAT_APPS),
261
+ // Tasks
262
+ statItem('task.my-open-count', 'Open tasks', 'How many tasks you have open right now.', CAT_TASKS, '#3B82F6'),
263
+ listItem('task.due-today', 'Due today', 'Tasks due today, by priority.', CAT_TASKS),
264
+ listItem('task.overdue', 'Overdue tasks', 'Tasks past their due date.', CAT_TASKS),
265
+ listItem('task.recently-assigned', 'Recently assigned', 'The latest tasks assigned to you.', CAT_TASKS),
266
+ listItem('task.high-priority', 'High priority', 'Your open high-priority tasks.', CAT_TASKS),
267
+ listItem('task.due-this-week', 'Due this week', 'Tasks due in the next seven days.', CAT_TASKS),
268
+ progressItem('task.completion-rate', 'Completion rate', 'Your task completion this week.', CAT_TASKS),
269
+ // HR & People
270
+ calendarItem('hr.next-leave', 'My next leave', 'Your next upcoming approved or pending leave.', CAT_HR),
271
+ listItem('hr.upcoming-birthdays', 'Upcoming birthdays', "Celebrate the team's upcoming birthdays.", CAT_HR),
272
+ listItem('hr.team-leave', 'Team leave', 'Colleagues currently on or about to start leave.', CAT_HR),
273
+ listItem('hr.pending-leave', 'My pending leave', 'Your leave requests awaiting approval.', CAT_HR),
274
+ statItem('hr.headcount', 'Headcount', 'Total active employees.', CAT_HR, '#16A34A'),
275
+ listItem('hr.birthdays-this-month', 'Birthdays this month', 'Everyone celebrating this month.', CAT_HR),
276
+ // Procurement
277
+ listItem('proc.pending-approvals', 'Pending approvals', 'Purchase requests waiting on you to approve.', CAT_PROCUREMENT),
278
+ listItem('proc.my-requests', 'My requests', 'Purchase requests you submitted and their status.', CAT_PROCUREMENT),
279
+ listItem('proc.high-value-pending', 'High-value pending', 'Pending approvals over a value threshold.', CAT_PROCUREMENT),
280
+ // Bookings
281
+ {
282
+ id: 'booking.my-upcoming',
283
+ title: 'My bookings',
284
+ description: 'Your upcoming bookings; filterable by resource type.',
285
+ kind: 'list',
286
+ category: CAT_BOOKINGS,
287
+ defaultContainer: 'stack',
288
+ supportedContainers: LIST_CONTAINERS,
289
+ settings: [
290
+ customTitleSetting(),
291
+ countSetting(),
292
+ {
293
+ key: 'resourceTypeId',
294
+ type: 'int',
295
+ label: 'Resource type id (0 = all)',
296
+ default: 0,
297
+ min: 0,
298
+ max: 9999,
299
+ },
300
+ ],
301
+ },
302
+ listItem('booking.today', "Today's bookings", 'Bookings happening today.', CAT_BOOKINGS),
303
+ listItem('booking.pending-approval', 'Pending bookings', 'Bookings awaiting approval.', CAT_BOOKINGS),
304
+ // Learning
305
+ progressItem('resource.in-progress-course', 'Course in progress', 'Pick up your most recent course.', CAT_LEARNING),
306
+ statItem('resource.completed-courses', 'Completed courses', "Courses you've finished.", CAT_LEARNING, '#8B5CF6'),
307
+ listItem('resource.recommended', 'Recommended for you', "Courses suggested from what you've started.", CAT_LEARNING),
308
+ // Announcements
309
+ statItem('announcement.unread', 'Unread announcements', "How many announcements you haven't read.", CAT_ANNOUNCEMENTS, '#F97316'),
310
+ listItem('announcement.latest-feed', 'Latest announcements', 'The newest announcements, pinned first.', CAT_ANNOUNCEMENTS),
311
+ listItem('announcement.pinned', 'Pinned announcements', 'Important pinned announcements.', CAT_ANNOUNCEMENTS),
312
+ listItem('announcement.high-priority', 'High-priority notices', 'Urgent and high-priority announcements.', CAT_ANNOUNCEMENTS),
313
+ // Meetings
314
+ statItem('meeting.next-meeting', 'Next meeting', 'Your next upcoming meeting.', CAT_MEETINGS, '#EC4899'),
315
+ listItem('meeting.today', "Today's meetings", 'Meetings on your calendar today.', CAT_MEETINGS),
316
+ statItem('meeting.invites-pending', 'Pending invites', 'Meeting invites awaiting your reply.', CAT_MEETINGS, '#EC4899'),
317
+ // Messages
318
+ statItem('chat.unread', 'Unread messages', 'Unread conversations across your chats.', CAT_MESSAGES, '#2563EB'),
319
+ ];
8
320
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/dashboard/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/dashboard/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { CoursePrerequisiteModelView } from './CoursePrerequisiteModelView';
2
+ import { SessionModelView } from './SessionModelView';
1
3
  /**
2
4
  * Course Model View
3
5
  */
@@ -30,6 +32,21 @@ export interface CourseModelView {
30
32
  visibilityIcon?: string | null;
31
33
  slug?: string | null;
32
34
  publishedDateTime?: number | null;
35
+ sessions?: SessionModelView[] | null;
36
+ viewerStatusID?: number | null;
37
+ viewerStatusName?: string | null;
38
+ viewerStatusColor?: string | null;
39
+ viewerStatusIcon?: string | null;
40
+ viewerPercentComplete?: number | null;
41
+ viewerCompletedSessionCount?: number | null;
42
+ viewerLastSessionID?: number | null;
43
+ viewerStartedAt?: number | null;
44
+ viewerLastAccessedAt?: number | null;
45
+ viewerCompletedAt?: number | null;
46
+ canStart?: boolean | null;
47
+ requiredPrerequisites?: CoursePrerequisiteModelView[] | null;
48
+ unmetPrerequisites?: CoursePrerequisiteModelView[] | null;
49
+ recommendedPrerequisites?: CoursePrerequisiteModelView[] | null;
33
50
  }
34
51
  /**
35
52
  * Course Filter Model
@@ -1 +1 @@
1
- {"version":3,"file":"CourseModelView.d.ts","sourceRoot":"","sources":["../../../../src/models/resources/ModelView/CourseModelView.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"CourseModelView.d.ts","sourceRoot":"","sources":["../../../../src/models/resources/ModelView/CourseModelView.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Resource Settings Entity
3
+ *
4
+ * Single-row settings entity holding the admin-managed Resource Centre feature
5
+ * toggles enforced inside the ResourceManagement service.
6
+ *
7
+ * Note: the AI Search / AI Chat (RAG) toggles are NOT here — they live in AI
8
+ * Management as AIFeatureFlag rows (see {@link AiFeatureFlag}). Mirror of the
9
+ * backend `CCMSLib.Models.Resources.ResourceSettings`.
10
+ */
11
+ export interface ResourceSettings {
12
+ /** Primary key (single-row table) */
13
+ settingsID: number;
14
+ /** When false, the public course/KB catalogue endpoints return nothing. */
15
+ enablePublicCatalogue: boolean;
16
+ /** Default CourseVisibility lookup id applied to newly created courses/articles. */
17
+ defaultCourseVisibilityID: number;
18
+ /** When true, newly created courses/articles publish immediately (no Draft). */
19
+ autoPublishNewResources: boolean;
20
+ /** Optional support/contact email surfaced in the public Resource Centre. */
21
+ adminContactEmail?: string | null;
22
+ /** yyyyMMddHHmmss numeric timestamps. */
23
+ modifiedDateTime: number;
24
+ createdDateTime: number;
25
+ }
26
+ /** Anonymous-safe subset returned by GET api/resource-settings/public. */
27
+ export interface PublicResourceSettings {
28
+ enablePublicCatalogue: boolean;
29
+ adminContactEmail?: string | null;
30
+ }
31
+ //# sourceMappingURL=ResourceSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourceSettings.d.ts","sourceRoot":"","sources":["../../../src/models/resources/ResourceSettings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IAEnB,2EAA2E;IAC3E,qBAAqB,EAAE,OAAO,CAAC;IAE/B,oFAAoF;IACpF,yBAAyB,EAAE,MAAM,CAAC;IAElC,gFAAgF;IAChF,uBAAuB,EAAE,OAAO,CAAC;IAEjC,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAElC,yCAAyC;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,0EAA0E;AAC1E,MAAM,WAAW,sBAAsB;IACrC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ResourceSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourceSettings.js","sourceRoot":"","sources":["../../../src/models/resources/ResourceSettings.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Session Note
3
+ * A server-synced free-text study note a viewer keeps against a single
4
+ * CourseSession. One active note per (sessionID, viewer) — the viewer is the
5
+ * signed-in user (userID) or, for anonymous visitors, the client-supplied
6
+ * anonymousID. Content travels as plain text; the backend persists it
7
+ * Base64-encoded at rest. Timestamps are numeric yyyyMMddHHmmss.
8
+ */
9
+ export interface SessionNote {
10
+ sessionNoteID: number;
11
+ sessionID: number;
12
+ courseID?: number | null;
13
+ userID?: string | null;
14
+ anonymousID?: string | null;
15
+ content: string;
16
+ createdDateTime: number;
17
+ modifiedDateTime: number;
18
+ isActive: boolean;
19
+ }
20
+ /**
21
+ * Request body for upserting the caller's session note.
22
+ * Matches POST api/session-notes.
23
+ */
24
+ export interface SessionNoteUpsertRequest {
25
+ sessionID: number;
26
+ courseID?: number | null;
27
+ content: string;
28
+ anonymousID?: string | null;
29
+ }
30
+ //# sourceMappingURL=SessionNote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionNote.d.ts","sourceRoot":"","sources":["../../../src/models/resources/SessionNote.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SessionNote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionNote.js","sourceRoot":"","sources":["../../../src/models/resources/SessionNote.ts"],"names":[],"mappings":""}
@@ -16,8 +16,10 @@ export * from './ResourceUsageAction';
16
16
  export * from './UserCourseProgress';
17
17
  export * from './UserProgressStatus';
18
18
  export * from './UserSessionProgress';
19
+ export * from './SessionNote';
19
20
  export * from './UpdateCourseRequest';
20
21
  export * from './UpdateCourseCategoryRequest';
22
+ export * from './ResourceSettings';
21
23
  export * from './ModelView';
22
24
  export * from './CacheKeys';
23
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAG9C,cAAc,aAAa,CAAC;AAG5B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAG9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAG9C,cAAc,oBAAoB,CAAC;AAGnC,cAAc,aAAa,CAAC;AAG5B,cAAc,aAAa,CAAC"}
@@ -17,9 +17,12 @@ export * from './ResourceUsageAction';
17
17
  export * from './UserCourseProgress';
18
18
  export * from './UserProgressStatus';
19
19
  export * from './UserSessionProgress';
20
+ export * from './SessionNote';
20
21
  // Partial-update request DTOs
21
22
  export * from './UpdateCourseRequest';
22
23
  export * from './UpdateCourseCategoryRequest';
24
+ // Settings
25
+ export * from './ResourceSettings';
23
26
  // Model Views
24
27
  export * from './ModelView';
25
28
  // Cache Keys
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gBAAgB;AAChB,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AAEtC,8BAA8B;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAE9C,cAAc;AACd,cAAc,aAAa,CAAC;AAE5B,aAAa;AACb,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gBAAgB;AAChB,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAE9B,8BAA8B;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAE9C,WAAW;AACX,cAAc,oBAAoB,CAAC;AAEnC,cAAc;AACd,cAAc,aAAa,CAAC;AAE5B,aAAa;AACb,cAAc,aAAa,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Resources Service Hooks
3
3
  * React hooks for accessing resource management services
4
4
  */
5
- import { ResourcesServices, CourseService, CourseCategoryService, CourseSessionService, UsageLogService, CourseStatusService, CourseCategoryStatusService, CourseSessionStatusService, CourseSessionTypeService, PublicCoursesService, PublicCategoriesService, PublicCategoriesEnrichedService, UserCourseProgressService, UserSessionProgressService, UserProgressStatusService, CourseVisibilityService, CoursePrerequisiteService, ResourceUsageActionService } from '../../../services/resources';
5
+ import { ResourcesServices, CourseService, CourseCategoryService, CourseSessionService, UsageLogService, CourseStatusService, CourseCategoryStatusService, CourseSessionStatusService, CourseSessionTypeService, PublicCoursesService, PublicCategoriesService, PublicCategoriesEnrichedService, UserCourseProgressService, UserSessionProgressService, UserProgressStatusService, CourseVisibilityService, CoursePrerequisiteService, ResourceUsageActionService, ResourceSettingsService } from '../../../services/resources';
6
6
  /**
7
7
  * Hook to access all resources-related services
8
8
  * @returns ResourcesServices object containing all resources service instances
@@ -84,4 +84,8 @@ export declare function useCoursePrerequisiteService(): CoursePrerequisiteServic
84
84
  * Hook to access ResourceUsageActionService
85
85
  */
86
86
  export declare function useResourceUsageActionService(): ResourceUsageActionService;
87
+ /**
88
+ * Hook to access ResourceSettingsService (Resource Centre platform settings)
89
+ */
90
+ export declare function useResourceSettingsService(): ResourceSettingsService;
87
91
  //# sourceMappingURL=useResourcesServices.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useResourcesServices.d.ts","sourceRoot":"","sources":["../../../../src/react/hooks/services/useResourcesServices.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,+BAA+B,EAC/B,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,6BAA6B,CAAC;AAErC;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAMxD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,qBAAqB,CAEhE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,CAE9D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,mBAAmB,CAE5D;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,2BAA2B,CAE5E;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,IAAI,0BAA0B,CAE1E;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,wBAAwB,CAEtE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,CAE9D;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,uBAAuB,CAEpE;AAED;;GAEG;AACH,wBAAgB,kCAAkC,IAAI,+BAA+B,CAEpF;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,yBAAyB,CAExE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,0BAA0B,CAE1E;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,yBAAyB,CAExE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,uBAAuB,CAEpE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,yBAAyB,CAExE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,0BAA0B,CAE1E"}
1
+ {"version":3,"file":"useResourcesServices.d.ts","sourceRoot":"","sources":["../../../../src/react/hooks/services/useResourcesServices.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,+BAA+B,EAC/B,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AAErC;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAMxD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,qBAAqB,CAEhE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,CAE9D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,mBAAmB,CAE5D;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,2BAA2B,CAE5E;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,IAAI,0BAA0B,CAE1E;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,wBAAwB,CAEtE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,CAE9D;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,uBAAuB,CAEpE;AAED;;GAEG;AACH,wBAAgB,kCAAkC,IAAI,+BAA+B,CAEpF;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,yBAAyB,CAExE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,0BAA0B,CAE1E;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,yBAAyB,CAExE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,uBAAuB,CAEpE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,yBAAyB,CAExE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,0BAA0B,CAE1E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,uBAAuB,CAEpE"}
@@ -124,4 +124,10 @@ export function useCoursePrerequisiteService() {
124
124
  export function useResourceUsageActionService() {
125
125
  return useResourcesServices().resourceUsageAction;
126
126
  }
127
+ /**
128
+ * Hook to access ResourceSettingsService (Resource Centre platform settings)
129
+ */
130
+ export function useResourceSettingsService() {
131
+ return useResourcesServices().resourceSettings;
132
+ }
127
133
  //# sourceMappingURL=useResourcesServices.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useResourcesServices.js","sourceRoot":"","sources":["../../../../src/react/hooks/services/useResourcesServices.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAsBrC;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;IAClH,CAAC;IACD,OAAO,QAAQ,CAAC,SAAS,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,oBAAoB,EAAE,CAAC,MAAM,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,oBAAoB,EAAE,CAAC,cAAc,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,oBAAoB,EAAE,CAAC,aAAa,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,oBAAoB,EAAE,CAAC,QAAQ,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,oBAAoB,EAAE,CAAC,YAAY,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B;IAC5C,OAAO,oBAAoB,EAAE,CAAC,oBAAoB,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO,oBAAoB,EAAE,CAAC,mBAAmB,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO,oBAAoB,EAAE,CAAC,iBAAiB,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,oBAAoB,EAAE,CAAC,aAAa,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,oBAAoB,EAAE,CAAC,gBAAgB,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kCAAkC;IAChD,OAAO,oBAAoB,EAAE,CAAC,wBAAwB,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,oBAAoB,EAAE,CAAC,kBAAkB,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO,oBAAoB,EAAE,CAAC,mBAAmB,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,oBAAoB,EAAE,CAAC,kBAAkB,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,oBAAoB,EAAE,CAAC,gBAAgB,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,oBAAoB,EAAE,CAAC,kBAAkB,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO,oBAAoB,EAAE,CAAC,mBAAmB,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"useResourcesServices.js","sourceRoot":"","sources":["../../../../src/react/hooks/services/useResourcesServices.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAuBrC;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;IAClH,CAAC;IACD,OAAO,QAAQ,CAAC,SAAS,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,oBAAoB,EAAE,CAAC,MAAM,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,oBAAoB,EAAE,CAAC,cAAc,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,oBAAoB,EAAE,CAAC,aAAa,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,oBAAoB,EAAE,CAAC,QAAQ,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,oBAAoB,EAAE,CAAC,YAAY,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B;IAC5C,OAAO,oBAAoB,EAAE,CAAC,oBAAoB,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO,oBAAoB,EAAE,CAAC,mBAAmB,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO,oBAAoB,EAAE,CAAC,iBAAiB,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,oBAAoB,EAAE,CAAC,aAAa,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,oBAAoB,EAAE,CAAC,gBAAgB,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kCAAkC;IAChD,OAAO,oBAAoB,EAAE,CAAC,wBAAwB,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,oBAAoB,EAAE,CAAC,kBAAkB,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO,oBAAoB,EAAE,CAAC,mBAAmB,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,oBAAoB,EAAE,CAAC,kBAAkB,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,oBAAoB,EAAE,CAAC,gBAAgB,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,oBAAoB,EAAE,CAAC,kBAAkB,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO,oBAAoB,EAAE,CAAC,mBAAmB,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,oBAAoB,EAAE,CAAC,gBAAgB,CAAC;AACjD,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * DashboardAggregatorClient
3
+ * SignalR client for the Dashboard-Aggregator realtime hub (`/hubs/dashboard`).
4
+ *
5
+ * The aggregator exposes ONE hub the Hub app connects to instead of N per-domain
6
+ * connections. Server → client messages:
7
+ * - `WidgetDelta` — a single refreshed {@link DashboardWidget}; merge by `widgetId`.
8
+ * - `WidgetInvalidated` — `{ widgetIds: string[] }`; re-fetch just those widgets.
9
+ *
10
+ * Mirrors the iOS `DashboardRealtimeClient` and the Kotlin
11
+ * `DashboardAggregatorHubClient`. Distinct from {@link DomainDashboardClient}
12
+ * (the admin per-domain `/hubs/dashboard/{domain}` client) — kept separate.
13
+ *
14
+ * Local events emitted (subscribe via {@link BaseSignalRClient.on}):
15
+ * - `'widgetDelta'` → {@link DashboardWidget}
16
+ * - `'widgetInvalidated'` → `string[]` (the invalidated widget ids)
17
+ */
18
+ import { BaseSignalRClient } from '../shared/BaseSignalRClient';
19
+ import { SignalRClientOptions } from '../shared/types';
20
+ import type { DashboardWidget } from '../../models/dashboard';
21
+ /** Payload shape of the server's `WidgetInvalidated` message. */
22
+ export interface WidgetInvalidatedPayload {
23
+ widgetIds: string[];
24
+ }
25
+ /**
26
+ * Client for the cross-domain dashboard aggregator hub.
27
+ * Connects to `/hubs/dashboard` on the aggregator WebSocket service.
28
+ */
29
+ export declare class DashboardAggregatorClient extends BaseSignalRClient {
30
+ constructor(baseUrl: string, getToken: () => Promise<string | null>, options?: SignalRClientOptions);
31
+ /**
32
+ * Register server-to-client event handlers.
33
+ */
34
+ protected setupServerMethods(): void;
35
+ /**
36
+ * Subscribe to refreshed widgets pushed by the hub.
37
+ * @param handler - Invoked with each refreshed {@link DashboardWidget}.
38
+ * @returns An unsubscribe handle.
39
+ */
40
+ onWidgetDelta(handler: (widget: DashboardWidget) => void): import("../shared/types").SubscriptionHandle;
41
+ /**
42
+ * Subscribe to widget-invalidation notifications pushed by the hub.
43
+ * @param handler - Invoked with the list of invalidated widget ids.
44
+ * @returns An unsubscribe handle.
45
+ */
46
+ onWidgetInvalidated(handler: (widgetIds: string[]) => void): import("../shared/types").SubscriptionHandle;
47
+ }
48
+ //# sourceMappingURL=DashboardAggregatorClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardAggregatorClient.d.ts","sourceRoot":"","sources":["../../../src/realtime/dashboards/DashboardAggregatorClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,iEAAiE;AACjE,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,yBAA0B,SAAQ,iBAAiB;gBAE5D,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,EACtC,OAAO,GAAE,oBAAyB;IAQpC;;OAEG;IACH,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAiBpC;;;;OAIG;IACI,aAAa,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI;IAI/D;;;;OAIG;IACI,mBAAmB,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,IAAI;CAGlE"}