@actschurch/ccms-sdk 0.0.25 → 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 (123) 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/accourses/FacilitatorCourse.d.ts +22 -0
  4. package/dist/models/accourses/FacilitatorCourse.d.ts.map +1 -0
  5. package/dist/models/accourses/FacilitatorCourse.js +2 -0
  6. package/dist/models/accourses/FacilitatorCourse.js.map +1 -0
  7. package/dist/models/accourses/FacilitatorDocument.d.ts +30 -0
  8. package/dist/models/accourses/FacilitatorDocument.d.ts.map +1 -0
  9. package/dist/models/accourses/FacilitatorDocument.js +2 -0
  10. package/dist/models/accourses/FacilitatorDocument.js.map +1 -0
  11. package/dist/models/accourses/FacilitatorLocation.d.ts +22 -0
  12. package/dist/models/accourses/FacilitatorLocation.d.ts.map +1 -0
  13. package/dist/models/accourses/FacilitatorLocation.js +2 -0
  14. package/dist/models/accourses/FacilitatorLocation.js.map +1 -0
  15. package/dist/models/accourses/ModelView/ACCourseModelView.d.ts +2 -0
  16. package/dist/models/accourses/ModelView/ACCourseModelView.d.ts.map +1 -1
  17. package/dist/models/accourses/ModelView/CourseFileModelView.d.ts +15 -0
  18. package/dist/models/accourses/ModelView/CourseFileModelView.d.ts.map +1 -1
  19. package/dist/models/accourses/ModelView/FacilitatorAssociationViews.d.ts +118 -0
  20. package/dist/models/accourses/ModelView/FacilitatorAssociationViews.d.ts.map +1 -0
  21. package/dist/models/accourses/ModelView/FacilitatorAssociationViews.js +7 -0
  22. package/dist/models/accourses/ModelView/FacilitatorAssociationViews.js.map +1 -0
  23. package/dist/models/accourses/ModelView/index.d.ts +1 -0
  24. package/dist/models/accourses/ModelView/index.d.ts.map +1 -1
  25. package/dist/models/accourses/ModelView/index.js +1 -0
  26. package/dist/models/accourses/ModelView/index.js.map +1 -1
  27. package/dist/models/accourses/index.d.ts +3 -0
  28. package/dist/models/accourses/index.d.ts.map +1 -1
  29. package/dist/models/accourses/index.js +3 -0
  30. package/dist/models/accourses/index.js.map +1 -1
  31. package/dist/models/analytics/KnowledgeSearch.d.ts +10 -0
  32. package/dist/models/analytics/KnowledgeSearch.d.ts.map +1 -1
  33. package/dist/models/dashboard/index.d.ts +282 -3
  34. package/dist/models/dashboard/index.d.ts.map +1 -1
  35. package/dist/models/dashboard/index.js +315 -3
  36. package/dist/models/dashboard/index.js.map +1 -1
  37. package/dist/models/resources/ModelView/CourseModelView.d.ts +17 -0
  38. package/dist/models/resources/ModelView/CourseModelView.d.ts.map +1 -1
  39. package/dist/models/resources/ResourceSettings.d.ts +31 -0
  40. package/dist/models/resources/ResourceSettings.d.ts.map +1 -0
  41. package/dist/models/resources/ResourceSettings.js +2 -0
  42. package/dist/models/resources/ResourceSettings.js.map +1 -0
  43. package/dist/models/resources/SessionNote.d.ts +30 -0
  44. package/dist/models/resources/SessionNote.d.ts.map +1 -0
  45. package/dist/models/resources/SessionNote.js +2 -0
  46. package/dist/models/resources/SessionNote.js.map +1 -0
  47. package/dist/models/resources/index.d.ts +2 -0
  48. package/dist/models/resources/index.d.ts.map +1 -1
  49. package/dist/models/resources/index.js +3 -0
  50. package/dist/models/resources/index.js.map +1 -1
  51. package/dist/react/hooks/services/useResourcesServices.d.ts +5 -1
  52. package/dist/react/hooks/services/useResourcesServices.d.ts.map +1 -1
  53. package/dist/react/hooks/services/useResourcesServices.js +6 -0
  54. package/dist/react/hooks/services/useResourcesServices.js.map +1 -1
  55. package/dist/realtime/dashboards/DashboardAggregatorClient.d.ts +48 -0
  56. package/dist/realtime/dashboards/DashboardAggregatorClient.d.ts.map +1 -0
  57. package/dist/realtime/dashboards/DashboardAggregatorClient.js +65 -0
  58. package/dist/realtime/dashboards/DashboardAggregatorClient.js.map +1 -0
  59. package/dist/realtime/dashboards/index.d.ts +1 -0
  60. package/dist/realtime/dashboards/index.d.ts.map +1 -1
  61. package/dist/realtime/dashboards/index.js +3 -0
  62. package/dist/realtime/dashboards/index.js.map +1 -1
  63. package/dist/services/accounselling/CareCaseService.d.ts +45 -1
  64. package/dist/services/accounselling/CareCaseService.d.ts.map +1 -1
  65. package/dist/services/accounselling/CareCaseService.js +65 -0
  66. package/dist/services/accounselling/CareCaseService.js.map +1 -1
  67. package/dist/services/accourses/ACCourseService.d.ts +61 -1
  68. package/dist/services/accourses/ACCourseService.d.ts.map +1 -1
  69. package/dist/services/accourses/ACCourseService.js +198 -0
  70. package/dist/services/accourses/ACCourseService.js.map +1 -1
  71. package/dist/services/accourses/FacilitatorService.d.ts +37 -1
  72. package/dist/services/accourses/FacilitatorService.d.ts.map +1 -1
  73. package/dist/services/accourses/FacilitatorService.js +135 -0
  74. package/dist/services/accourses/FacilitatorService.js.map +1 -1
  75. package/dist/services/dashboard/DashboardAggregatorService.d.ts +73 -0
  76. package/dist/services/dashboard/DashboardAggregatorService.d.ts.map +1 -0
  77. package/dist/services/dashboard/DashboardAggregatorService.js +145 -0
  78. package/dist/services/dashboard/DashboardAggregatorService.js.map +1 -0
  79. package/dist/services/dashboard/DashboardLayoutService.d.ts +46 -0
  80. package/dist/services/dashboard/DashboardLayoutService.d.ts.map +1 -0
  81. package/dist/services/dashboard/DashboardLayoutService.js +75 -0
  82. package/dist/services/dashboard/DashboardLayoutService.js.map +1 -0
  83. package/dist/services/dashboard/DashboardServices.d.ts +38 -0
  84. package/dist/services/dashboard/DashboardServices.d.ts.map +1 -0
  85. package/dist/services/dashboard/DashboardServices.js +28 -0
  86. package/dist/services/dashboard/DashboardServices.js.map +1 -0
  87. package/dist/services/dashboard/index.d.ts +11 -0
  88. package/dist/services/dashboard/index.d.ts.map +1 -0
  89. package/dist/services/dashboard/index.js +10 -0
  90. package/dist/services/dashboard/index.js.map +1 -0
  91. package/dist/services/index.d.ts +1 -0
  92. package/dist/services/index.d.ts.map +1 -1
  93. package/dist/services/index.js +2 -0
  94. package/dist/services/index.js.map +1 -1
  95. package/dist/services/knowledgebase/KnowledgeBaseQAService.d.ts +7 -1
  96. package/dist/services/knowledgebase/KnowledgeBaseQAService.d.ts.map +1 -1
  97. package/dist/services/knowledgebase/KnowledgeBaseQAService.js +11 -0
  98. package/dist/services/knowledgebase/KnowledgeBaseQAService.js.map +1 -1
  99. package/dist/services/members/MemberService.d.ts +17 -0
  100. package/dist/services/members/MemberService.d.ts.map +1 -1
  101. package/dist/services/members/MemberService.js +27 -0
  102. package/dist/services/members/MemberService.js.map +1 -1
  103. package/dist/services/resources/PublicCoursesService.d.ts +7 -0
  104. package/dist/services/resources/PublicCoursesService.d.ts.map +1 -1
  105. package/dist/services/resources/PublicCoursesService.js +12 -0
  106. package/dist/services/resources/PublicCoursesService.js.map +1 -1
  107. package/dist/services/resources/ResourceSettingsService.d.ts +26 -0
  108. package/dist/services/resources/ResourceSettingsService.d.ts.map +1 -0
  109. package/dist/services/resources/ResourceSettingsService.js +43 -0
  110. package/dist/services/resources/ResourceSettingsService.js.map +1 -0
  111. package/dist/services/resources/SessionNoteService.d.ts +27 -0
  112. package/dist/services/resources/SessionNoteService.d.ts.map +1 -0
  113. package/dist/services/resources/SessionNoteService.js +44 -0
  114. package/dist/services/resources/SessionNoteService.js.map +1 -0
  115. package/dist/services/resources/UserCourseProgressService.d.ts +9 -0
  116. package/dist/services/resources/UserCourseProgressService.d.ts.map +1 -1
  117. package/dist/services/resources/UserCourseProgressService.js +13 -0
  118. package/dist/services/resources/UserCourseProgressService.js.map +1 -1
  119. package/dist/services/resources/index.d.ts +6 -0
  120. package/dist/services/resources/index.d.ts.map +1 -1
  121. package/dist/services/resources/index.js +6 -0
  122. package/dist/services/resources/index.js.map +1 -1
  123. package/package.json +1 -1
@@ -0,0 +1,145 @@
1
+ /**
2
+ * DashboardAggregatorService
3
+ *
4
+ * Reads the cross-domain "my day at CCMS" dashboard composed by the new
5
+ * `CCMS.Api.DashboardAggregator` service. The TS mirror of the Kotlin
6
+ * `DashboardAggregatorService` / Swift `DashboardAggregatorService`.
7
+ *
8
+ * Like the {@link ApplicationCatalogueService}, the aggregator is **not** behind
9
+ * a microservice path prefix — it is reached directly at `/api/dashboard`
10
+ * (nginx `location /api/dashboard/`). It therefore does not extend
11
+ * {@link BaseService}; it builds its own paths.
12
+ *
13
+ * Routes:
14
+ * - GET /api/dashboard/me?widgets=&refresh=
15
+ * - GET /api/dashboard/detail?widget=&item=
16
+ *
17
+ * The aggregator always answers `200` — per-widget failures are isolated inside
18
+ * the payload as {@link DashboardWidget.error}, so the Hub renders an error tile
19
+ * for one widget without losing the whole dashboard.
20
+ *
21
+ * Decoding tolerates both the standard {@link ResponseData} envelope (the
22
+ * documented shape) and a bare-object payload (a deployment that drops the
23
+ * envelope) — matching the Kotlin/Swift unknown-tolerant decoding.
24
+ */
25
+ import { BUNDLED_WIDGET_CATALOG } from '../../models/dashboard';
26
+ /** Default base path of the dashboard API (not microservice-prefixed). */
27
+ const DEFAULT_BASE_PATH = 'api/dashboard';
28
+ export class DashboardAggregatorService {
29
+ constructor(http, config) {
30
+ this.http = http;
31
+ this.basePath =
32
+ config?.servicePath && config.servicePath.trim() !== ''
33
+ ? config.servicePath
34
+ : DEFAULT_BASE_PATH;
35
+ }
36
+ /**
37
+ * Fetch the calling user's composed dashboard via `GET /api/dashboard/me`.
38
+ *
39
+ * @param widgets - The widget ids to request. An empty list omits the
40
+ * `widgets` query param entirely, so the server returns the role-based
41
+ * Phase-1 defaults (`task.my-open-count`, `task.due-today`,
42
+ * `task.recently-assigned`, `hr.next-leave`, `proc.pending-approvals`).
43
+ * @param refresh - When `true`, appends `refresh=true` to bypass the server
44
+ * cache — the pull-to-refresh path.
45
+ */
46
+ async fetchDashboard(widgets = [], refresh = false) {
47
+ const params = [];
48
+ const cleaned = widgets.filter((w) => w.trim() !== '');
49
+ if (cleaned.length > 0) {
50
+ params.push(`widgets=${encodeURIComponent(cleaned.join(','))}`);
51
+ }
52
+ if (refresh) {
53
+ params.push('refresh=true');
54
+ }
55
+ const suffix = params.length === 0 ? '' : `?${params.join('&')}`;
56
+ const url = `/${this.basePath}/me${suffix}`;
57
+ return this.fetchTolerant(url);
58
+ }
59
+ /**
60
+ * Fetch the enriched detail for one tapped widget row via
61
+ * `GET /api/dashboard/detail?widget=&item=`. Resolves to `null` when the domain
62
+ * has no richer detail (HTTP 404) — the Hub keeps the inline row detail.
63
+ */
64
+ async fetchWidgetDetail(widgetId, itemId) {
65
+ const url = `/${this.basePath}/detail` +
66
+ `?widget=${encodeURIComponent(widgetId)}&item=${encodeURIComponent(itemId)}`;
67
+ try {
68
+ const raw = await this.http.getRaw(url);
69
+ const maybeEnvelope = raw;
70
+ if (typeof maybeEnvelope.success === 'boolean') {
71
+ return maybeEnvelope.data ?? null;
72
+ }
73
+ return raw ?? null;
74
+ }
75
+ catch (err) {
76
+ // 404 = no detail for this item; any other error also degrades to inline.
77
+ const status = err?.status
78
+ ?? err?.statusCode;
79
+ if (status === 404)
80
+ return null;
81
+ throw err;
82
+ }
83
+ }
84
+ /**
85
+ * Fetch the widget catalog via `GET /api/dashboard/widgets` — every addable
86
+ * widget with its title, description, kind, category, supported containers,
87
+ * and settings schema. Drives the Hub's add-picker + settings sheet.
88
+ *
89
+ * Envelope-tolerant exactly like {@link fetchDashboard}: unwraps a
90
+ * {@link ResponseData} envelope's `data`, falls back to a bare array.
91
+ *
92
+ * Falls back to the **bundled catalog** ({@link BUNDLED_WIDGET_CATALOG}) when
93
+ * the server returns nothing or the endpoint is unavailable (e.g. an aggregator
94
+ * deployment that predates `GET /widgets`) — so the editor keeps working before
95
+ * the catalog endpoint ships. Never rejects.
96
+ */
97
+ async fetchWidgetCatalog() {
98
+ try {
99
+ const items = await this.fetchWidgetCatalogFromServer();
100
+ return items.length > 0 ? items : BUNDLED_WIDGET_CATALOG;
101
+ }
102
+ catch {
103
+ return BUNDLED_WIDGET_CATALOG;
104
+ }
105
+ }
106
+ /** Raw server fetch — used by {@link fetchWidgetCatalog}, which adds the bundled fallback. */
107
+ async fetchWidgetCatalogFromServer() {
108
+ const url = `/${this.basePath}/widgets`;
109
+ const raw = await this.http.getRaw(url);
110
+ const maybeEnvelope = raw;
111
+ // Standard CCMS envelope — the documented shape.
112
+ if (typeof maybeEnvelope.success === 'boolean') {
113
+ return maybeEnvelope.data ?? [];
114
+ }
115
+ // Bare-array fallback (a deployment that drops the envelope).
116
+ return Array.isArray(raw) ? raw : [];
117
+ }
118
+ // ---- Decoding helper (tolerates both enveloped and bare payloads) ----
119
+ /**
120
+ * GET `url` and decode tolerantly: try the bare/raw body first (which also
121
+ * unwraps a `ResponseData` envelope's `data`), so both the documented
122
+ * envelope and an envelope-less deployment resolve to a {@link DashboardResponse}.
123
+ */
124
+ async fetchTolerant(url) {
125
+ // `getRaw` returns the parsed body without enforcing the envelope, so it
126
+ // tolerates a bare-object payload as well as the standard envelope.
127
+ const raw = await this.http.getRaw(url);
128
+ return unwrapDashboardEnvelope(raw);
129
+ }
130
+ }
131
+ /**
132
+ * Resolve a {@link DashboardResponse} from either the standard
133
+ * {@link ResponseData} envelope or a bare object.
134
+ */
135
+ function unwrapDashboardEnvelope(raw) {
136
+ const maybeEnvelope = raw;
137
+ // Standard CCMS envelope — the documented shape.
138
+ if (typeof maybeEnvelope.success === 'boolean' &&
139
+ maybeEnvelope.data != null) {
140
+ return maybeEnvelope.data;
141
+ }
142
+ // Bare-object fallback (a deployment that drops the envelope).
143
+ return raw;
144
+ }
145
+ //# sourceMappingURL=DashboardAggregatorService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardAggregatorService.js","sourceRoot":"","sources":["../../../src/services/dashboard/DashboardAggregatorService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * DashboardLayoutService
3
+ *
4
+ * Reads and writes the calling user's personalised dashboard layout (widget
5
+ * set, order, per-widget settings) via the new `CCMS.Api.DashboardAggregator`
6
+ * endpoints. The TS mirror of the Kotlin `DashboardLayoutService` / Swift
7
+ * `DashboardLayoutService`.
8
+ *
9
+ * Like {@link DashboardAggregatorService}, this service is **not** behind a
10
+ * microservice path prefix — the layout endpoints sit directly under
11
+ * `/api/dashboard/me/layout` (nginx `location /api/dashboard/`). It therefore
12
+ * does not extend {@link BaseService}; it builds its own paths.
13
+ *
14
+ * Locked cross-platform contract (`05_DASHBOARD_EXPERIENCE.md`):
15
+ * - GET /api/dashboard/me/layout → `ResponseData<DashboardLayout>`
16
+ * - PUT /api/dashboard/me/layout body `DashboardLayout` → `ResponseData<DashboardLayout>`
17
+ *
18
+ * Decoding tolerates both the standard {@link ResponseData} envelope (the
19
+ * documented shape) and a bare-object payload — matching the Kotlin/Swift
20
+ * unknown-tolerant decoding.
21
+ */
22
+ import type { HttpClient } from '../../core/HttpClient';
23
+ import type { ServiceConfig } from '../types';
24
+ import type { DashboardLayout } from '../../models/dashboard';
25
+ export declare class DashboardLayoutService {
26
+ private readonly http;
27
+ /** Base path of the dashboard API. `servicePath` override relocates it. */
28
+ private readonly basePath;
29
+ constructor(http: HttpClient, config?: ServiceConfig);
30
+ /**
31
+ * Fetch the calling user's saved dashboard layout via
32
+ * `GET /api/dashboard/me/layout`.
33
+ *
34
+ * A first-time user with no saved layout still gets a `200` — the server
35
+ * returns the role-based default layout — so callers never special-case a
36
+ * `404`.
37
+ */
38
+ fetchLayout(): Promise<DashboardLayout>;
39
+ /**
40
+ * Persist `layout` via `PUT /api/dashboard/me/layout` and return the
41
+ * server-canonical layout (the server re-stamps {@link DashboardLayout.updatedAt}
42
+ * and may normalise widget order).
43
+ */
44
+ saveLayout(layout: DashboardLayout): Promise<DashboardLayout>;
45
+ }
46
+ //# sourceMappingURL=DashboardLayoutService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardLayoutService.d.ts","sourceRoot":"","sources":["../../../src/services/dashboard/DashboardLayoutService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAK9D,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,2EAA2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,aAAa;IAQpD;;;;;;;OAOG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;IAU7C;;;;OAIG;IACG,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;CASpE"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * DashboardLayoutService
3
+ *
4
+ * Reads and writes the calling user's personalised dashboard layout (widget
5
+ * set, order, per-widget settings) via the new `CCMS.Api.DashboardAggregator`
6
+ * endpoints. The TS mirror of the Kotlin `DashboardLayoutService` / Swift
7
+ * `DashboardLayoutService`.
8
+ *
9
+ * Like {@link DashboardAggregatorService}, this service is **not** behind a
10
+ * microservice path prefix — the layout endpoints sit directly under
11
+ * `/api/dashboard/me/layout` (nginx `location /api/dashboard/`). It therefore
12
+ * does not extend {@link BaseService}; it builds its own paths.
13
+ *
14
+ * Locked cross-platform contract (`05_DASHBOARD_EXPERIENCE.md`):
15
+ * - GET /api/dashboard/me/layout → `ResponseData<DashboardLayout>`
16
+ * - PUT /api/dashboard/me/layout body `DashboardLayout` → `ResponseData<DashboardLayout>`
17
+ *
18
+ * Decoding tolerates both the standard {@link ResponseData} envelope (the
19
+ * documented shape) and a bare-object payload — matching the Kotlin/Swift
20
+ * unknown-tolerant decoding.
21
+ */
22
+ /** Default base path of the dashboard API (not microservice-prefixed). */
23
+ const DEFAULT_BASE_PATH = 'api/dashboard';
24
+ export class DashboardLayoutService {
25
+ constructor(http, config) {
26
+ this.http = http;
27
+ this.basePath =
28
+ config?.servicePath && config.servicePath.trim() !== ''
29
+ ? config.servicePath
30
+ : DEFAULT_BASE_PATH;
31
+ }
32
+ /**
33
+ * Fetch the calling user's saved dashboard layout via
34
+ * `GET /api/dashboard/me/layout`.
35
+ *
36
+ * A first-time user with no saved layout still gets a `200` — the server
37
+ * returns the role-based default layout — so callers never special-case a
38
+ * `404`.
39
+ */
40
+ async fetchLayout() {
41
+ const url = `/${this.basePath}/me/layout`;
42
+ // `getRaw` returns the parsed body without enforcing the envelope, so it
43
+ // tolerates a bare-object payload as well as the standard envelope.
44
+ const raw = await this.http.getRaw(url);
45
+ return unwrapLayoutEnvelope(raw);
46
+ }
47
+ /**
48
+ * Persist `layout` via `PUT /api/dashboard/me/layout` and return the
49
+ * server-canonical layout (the server re-stamps {@link DashboardLayout.updatedAt}
50
+ * and may normalise widget order).
51
+ */
52
+ async saveLayout(layout) {
53
+ const url = `/${this.basePath}/me/layout`;
54
+ // The documented PUT contract is the standard envelope; `put` unwraps it.
55
+ const response = await this.http.put(url, layout);
56
+ if (response.data == null) {
57
+ throw new Error(response.message ?? 'Failed to save dashboard layout');
58
+ }
59
+ return response.data;
60
+ }
61
+ }
62
+ /**
63
+ * Resolve a {@link DashboardLayout} from either the standard
64
+ * {@link ResponseData} envelope or a bare object.
65
+ */
66
+ function unwrapLayoutEnvelope(raw) {
67
+ const maybeEnvelope = raw;
68
+ // Standard CCMS envelope — the documented shape.
69
+ if (typeof maybeEnvelope.success === 'boolean' && maybeEnvelope.data != null) {
70
+ return maybeEnvelope.data;
71
+ }
72
+ // Bare-object fallback (a deployment that drops the envelope).
73
+ return raw;
74
+ }
75
+ //# sourceMappingURL=DashboardLayoutService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardLayoutService.js","sourceRoot":"","sources":["../../../src/services/dashboard/DashboardLayoutService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,0EAA0E;AAC1E,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAE1C,MAAM,OAAO,sBAAsB;IAKjC,YAAY,IAAgB,EAAE,MAAsB;QAClD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ;YACX,MAAM,EAAE,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;gBACrD,CAAC,CAAC,MAAM,CAAC,WAAW;gBACpB,CAAC,CAAC,iBAAiB,CAAC;IAC1B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,QAAQ,YAAY,CAAC;QAC1C,yEAAyE;QACzE,oEAAoE;QACpE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAEhC,GAAG,CAAC,CAAC;QACP,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,MAAuB;QACtC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,QAAQ,YAAY,CAAC;QAC1C,0EAA0E;QAC1E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAkB,GAAG,EAAE,MAAM,CAAC,CAAC;QACnE,IAAI,QAAQ,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,iCAAiC,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;CACF;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAC3B,GAAoD;IAEpD,MAAM,aAAa,GAAG,GAA6C,CAAC;IACpE,iDAAiD;IACjD,IAAI,OAAO,aAAa,CAAC,OAAO,KAAK,SAAS,IAAI,aAAa,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QAC7E,OAAO,aAAa,CAAC,IAAI,CAAC;IAC5B,CAAC;IACD,+DAA+D;IAC/D,OAAO,GAAsB,CAAC;AAChC,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Dashboard Services
3
+ *
4
+ * Bundle of Dashboard Aggregator services, consistent with the other
5
+ * `*Services` aggregators (`createApplicationCatalogueServices`, …). The TS
6
+ * mirror of the Kotlin `DashboardServices` / Swift `CCMSDashboardServices`.
7
+ *
8
+ * The dashboard API is not microservice-path-prefixed, so the {@link ServiceConfig}
9
+ * is honoured only for an optional `servicePath` override (lets a deployment
10
+ * relocate `api/dashboard`); endpoint overrides do not apply.
11
+ */
12
+ import type { HttpClient } from '../../core/HttpClient';
13
+ import type { ServiceConfig } from '../types';
14
+ import { DashboardAggregatorService } from './DashboardAggregatorService';
15
+ import { DashboardLayoutService } from './DashboardLayoutService';
16
+ /**
17
+ * Interface for all dashboard aggregator services.
18
+ */
19
+ export interface DashboardServices {
20
+ /** Cross-domain "my day at CCMS" dashboard aggregator. */
21
+ aggregator: DashboardAggregatorService;
22
+ /**
23
+ * The per-user dashboard *layout* service (widget set / order / settings).
24
+ * Phase 2 addition — additive: existing callers that only used `aggregator`
25
+ * are unaffected.
26
+ */
27
+ layout: DashboardLayoutService;
28
+ }
29
+ /**
30
+ * Create all dashboard aggregator services.
31
+ * Mirrors the other `createXxxServices()` aggregator factories.
32
+ *
33
+ * @param http - HttpClient instance
34
+ * @param config - Optional service configuration (`servicePath` override only)
35
+ * @returns Object containing all dashboard services
36
+ */
37
+ export declare function createDashboardServices(http: HttpClient, config?: ServiceConfig): DashboardServices;
38
+ //# sourceMappingURL=DashboardServices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardServices.d.ts","sourceRoot":"","sources":["../../../src/services/dashboard/DashboardServices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,UAAU,EAAE,0BAA0B,CAAC;IACvC;;;;OAIG;IACH,MAAM,EAAE,sBAAsB,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,EAChB,MAAM,CAAC,EAAE,aAAa,GACrB,iBAAiB,CAKnB"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Dashboard Services
3
+ *
4
+ * Bundle of Dashboard Aggregator services, consistent with the other
5
+ * `*Services` aggregators (`createApplicationCatalogueServices`, …). The TS
6
+ * mirror of the Kotlin `DashboardServices` / Swift `CCMSDashboardServices`.
7
+ *
8
+ * The dashboard API is not microservice-path-prefixed, so the {@link ServiceConfig}
9
+ * is honoured only for an optional `servicePath` override (lets a deployment
10
+ * relocate `api/dashboard`); endpoint overrides do not apply.
11
+ */
12
+ import { DashboardAggregatorService } from './DashboardAggregatorService';
13
+ import { DashboardLayoutService } from './DashboardLayoutService';
14
+ /**
15
+ * Create all dashboard aggregator services.
16
+ * Mirrors the other `createXxxServices()` aggregator factories.
17
+ *
18
+ * @param http - HttpClient instance
19
+ * @param config - Optional service configuration (`servicePath` override only)
20
+ * @returns Object containing all dashboard services
21
+ */
22
+ export function createDashboardServices(http, config) {
23
+ return {
24
+ aggregator: new DashboardAggregatorService(http, config),
25
+ layout: new DashboardLayoutService(http, config),
26
+ };
27
+ }
28
+ //# sourceMappingURL=DashboardServices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardServices.js","sourceRoot":"","sources":["../../../src/services/dashboard/DashboardServices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAgBlE;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAgB,EAChB,MAAsB;IAEtB,OAAO;QACL,UAAU,EAAE,IAAI,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC;QACxD,MAAM,EAAE,IAAI,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC;KACjD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Dashboard Services
3
+ *
4
+ * Services for the cross-domain "my day at CCMS" dashboard aggregator
5
+ * (`CCMS.Api.DashboardAggregator`): the read aggregator and the per-user layout.
6
+ */
7
+ export { DashboardAggregatorService } from './DashboardAggregatorService';
8
+ export { DashboardLayoutService } from './DashboardLayoutService';
9
+ export { createDashboardServices } from './DashboardServices';
10
+ export type { DashboardServices } from './DashboardServices';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/dashboard/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Dashboard Services
3
+ *
4
+ * Services for the cross-domain "my day at CCMS" dashboard aggregator
5
+ * (`CCMS.Api.DashboardAggregator`): the read aggregator and the per-user layout.
6
+ */
7
+ export { DashboardAggregatorService } from './DashboardAggregatorService';
8
+ export { DashboardLayoutService } from './DashboardLayoutService';
9
+ export { createDashboardServices } from './DashboardServices';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/dashboard/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -41,4 +41,5 @@ export * from './ai';
41
41
  export * from './knowledgebase';
42
42
  export * from './analytics';
43
43
  export * from './applicationcatalogue';
44
+ export * from './dashboard';
44
45
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,cAAc,SAAS,CAAC;AAGxB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,cAAc,QAAQ,CAAC;AAGvB,cAAc,iBAAiB,CAAC;AAGhC,cAAc,aAAa,CAAC;AAG5B,OAAO,EAAE,aAAa,IAAI,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAGpE,cAAc,aAAa,CAAC;AAG5B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,YAAY,CAAC;AAG3B,cAAc,UAAU,CAAC;AAGzB,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,YAAY,CAAC;AAG3B,cAAc,YAAY,CAAC;AAG3B,cAAc,MAAM,CAAC;AAGrB,cAAc,YAAY,CAAC;AAG3B,cAAc,eAAe,CAAC;AAG9B,cAAc,cAAc,CAAC;AAG7B,cAAc,aAAa,CAAC;AAG5B,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,UAAU,CAAC;AAGzB,cAAc,iBAAiB,CAAC;AAGhC,cAAc,eAAe,CAAC;AAG9B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,YAAY,CAAC;AAG3B,cAAc,aAAa,CAAC;AAG5B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,MAAM,CAAC;AAGrB,cAAc,iBAAiB,CAAC;AAGhC,cAAc,aAAa,CAAC;AAG5B,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,cAAc,SAAS,CAAC;AAGxB,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,cAAc,QAAQ,CAAC;AAGvB,cAAc,iBAAiB,CAAC;AAGhC,cAAc,aAAa,CAAC;AAG5B,OAAO,EAAE,aAAa,IAAI,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAGpE,cAAc,aAAa,CAAC;AAG5B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,YAAY,CAAC;AAG3B,cAAc,UAAU,CAAC;AAGzB,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,YAAY,CAAC;AAG3B,cAAc,YAAY,CAAC;AAG3B,cAAc,MAAM,CAAC;AAGrB,cAAc,YAAY,CAAC;AAG3B,cAAc,eAAe,CAAC;AAG9B,cAAc,cAAc,CAAC;AAG7B,cAAc,aAAa,CAAC;AAG5B,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,UAAU,CAAC;AAGzB,cAAc,iBAAiB,CAAC;AAGhC,cAAc,eAAe,CAAC;AAG9B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,YAAY,CAAC;AAG3B,cAAc,aAAa,CAAC;AAG5B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,MAAM,CAAC;AAGrB,cAAc,iBAAiB,CAAC;AAGhC,cAAc,aAAa,CAAC;AAG5B,cAAc,wBAAwB,CAAC;AAGvC,cAAc,aAAa,CAAC"}
@@ -88,4 +88,6 @@ export * from './knowledgebase';
88
88
  export * from './analytics';
89
89
  // Application Catalogue services (mobile constellation app manifests)
90
90
  export * from './applicationcatalogue';
91
+ // Dashboard aggregator services (cross-domain "my day at CCMS" dashboard + layout)
92
+ export * from './dashboard';
91
93
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8DAA8D;AAC9D,6BAA6B;AAC7B,mCAAmC;AACnC,6BAA6B;AAC7B,iCAAiC;AACjC,gCAAgC;AAChC,+BAA+B;AAC/B,6BAA6B;AAE7B,gBAAgB;AAChB,cAAc,SAAS,CAAC;AAExB,uBAAuB;AACvB,cAAc,QAAQ,CAAC;AAEvB,8BAA8B;AAC9B,cAAc,QAAQ,CAAC;AAEvB,8BAA8B;AAC9B,cAAc,SAAS,CAAC;AAExB,qDAAqD;AACrD,cAAc,UAAU,CAAC;AAEzB,8BAA8B;AAC9B,cAAc,QAAQ,CAAC;AAEvB,uCAAuC;AACvC,cAAc,iBAAiB,CAAC;AAEhC,kCAAkC;AAClC,cAAc,aAAa,CAAC;AAE5B,gCAAgC;AAChC,OAAO,EAAE,aAAa,IAAI,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAEpE,mCAAmC;AACnC,cAAc,aAAa,CAAC;AAE5B,qCAAqC;AACrC,cAAc,gBAAgB,CAAC;AAE/B,kCAAkC;AAClC,cAAc,YAAY,CAAC;AAE3B,+BAA+B;AAC/B,cAAc,UAAU,CAAC;AAEzB,gCAAgC;AAChC,cAAc,WAAW,CAAC;AAE1B,iCAAiC;AACjC,cAAc,YAAY,CAAC;AAE3B,iCAAiC;AACjC,cAAc,YAAY,CAAC;AAE3B,kCAAkC;AAClC,cAAc,YAAY,CAAC;AAE3B,4BAA4B;AAC5B,cAAc,MAAM,CAAC;AAErB,kCAAkC;AAClC,cAAc,YAAY,CAAC;AAE3B,qCAAqC;AACrC,cAAc,eAAe,CAAC;AAE9B,oCAAoC;AACpC,cAAc,cAAc,CAAC;AAE7B,mCAAmC;AACnC,cAAc,aAAa,CAAC;AAE5B,sCAAsC;AACtC,cAAc,eAAe,CAAC;AAE9B,gCAAgC;AAChC,cAAc,WAAW,CAAC;AAE1B,uCAAuC;AACvC,cAAc,gBAAgB,CAAC;AAE/B,wCAAwC;AACxC,cAAc,iBAAiB,CAAC;AAEhC,+BAA+B;AAC/B,cAAc,UAAU,CAAC;AAEzB,+CAA+C;AAC/C,cAAc,iBAAiB,CAAC;AAEhC,4DAA4D;AAC5D,cAAc,eAAe,CAAC;AAE9B,gDAAgD;AAChD,cAAc,gBAAgB,CAAC;AAE/B,sCAAsC;AACtC,cAAc,iBAAiB,CAAC;AAEhC,4CAA4C;AAC5C,cAAc,YAAY,CAAC;AAE3B,uDAAuD;AACvD,cAAc,aAAa,CAAC;AAE5B,qEAAqE;AACrE,cAAc,iBAAiB,CAAC;AAEhC,0CAA0C;AAC1C,cAAc,mBAAmB,CAAC;AAElC,cAAc;AACd,cAAc,MAAM,CAAC;AAErB,0BAA0B;AAC1B,cAAc,iBAAiB,CAAC;AAEhC,qBAAqB;AACrB,cAAc,aAAa,CAAC;AAE5B,sEAAsE;AACtE,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8DAA8D;AAC9D,6BAA6B;AAC7B,mCAAmC;AACnC,6BAA6B;AAC7B,iCAAiC;AACjC,gCAAgC;AAChC,+BAA+B;AAC/B,6BAA6B;AAE7B,gBAAgB;AAChB,cAAc,SAAS,CAAC;AAExB,uBAAuB;AACvB,cAAc,QAAQ,CAAC;AAEvB,8BAA8B;AAC9B,cAAc,QAAQ,CAAC;AAEvB,8BAA8B;AAC9B,cAAc,SAAS,CAAC;AAExB,qDAAqD;AACrD,cAAc,UAAU,CAAC;AAEzB,8BAA8B;AAC9B,cAAc,QAAQ,CAAC;AAEvB,uCAAuC;AACvC,cAAc,iBAAiB,CAAC;AAEhC,kCAAkC;AAClC,cAAc,aAAa,CAAC;AAE5B,gCAAgC;AAChC,OAAO,EAAE,aAAa,IAAI,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAEpE,mCAAmC;AACnC,cAAc,aAAa,CAAC;AAE5B,qCAAqC;AACrC,cAAc,gBAAgB,CAAC;AAE/B,kCAAkC;AAClC,cAAc,YAAY,CAAC;AAE3B,+BAA+B;AAC/B,cAAc,UAAU,CAAC;AAEzB,gCAAgC;AAChC,cAAc,WAAW,CAAC;AAE1B,iCAAiC;AACjC,cAAc,YAAY,CAAC;AAE3B,iCAAiC;AACjC,cAAc,YAAY,CAAC;AAE3B,kCAAkC;AAClC,cAAc,YAAY,CAAC;AAE3B,4BAA4B;AAC5B,cAAc,MAAM,CAAC;AAErB,kCAAkC;AAClC,cAAc,YAAY,CAAC;AAE3B,qCAAqC;AACrC,cAAc,eAAe,CAAC;AAE9B,oCAAoC;AACpC,cAAc,cAAc,CAAC;AAE7B,mCAAmC;AACnC,cAAc,aAAa,CAAC;AAE5B,sCAAsC;AACtC,cAAc,eAAe,CAAC;AAE9B,gCAAgC;AAChC,cAAc,WAAW,CAAC;AAE1B,uCAAuC;AACvC,cAAc,gBAAgB,CAAC;AAE/B,wCAAwC;AACxC,cAAc,iBAAiB,CAAC;AAEhC,+BAA+B;AAC/B,cAAc,UAAU,CAAC;AAEzB,+CAA+C;AAC/C,cAAc,iBAAiB,CAAC;AAEhC,4DAA4D;AAC5D,cAAc,eAAe,CAAC;AAE9B,gDAAgD;AAChD,cAAc,gBAAgB,CAAC;AAE/B,sCAAsC;AACtC,cAAc,iBAAiB,CAAC;AAEhC,4CAA4C;AAC5C,cAAc,YAAY,CAAC;AAE3B,uDAAuD;AACvD,cAAc,aAAa,CAAC;AAE5B,qEAAqE;AACrE,cAAc,iBAAiB,CAAC;AAEhC,0CAA0C;AAC1C,cAAc,mBAAmB,CAAC;AAElC,cAAc;AACd,cAAc,MAAM,CAAC;AAErB,0BAA0B;AAC1B,cAAc,iBAAiB,CAAC;AAEhC,qBAAqB;AACrB,cAAc,aAAa,CAAC;AAE5B,sEAAsE;AACtE,cAAc,wBAAwB,CAAC;AAEvC,mFAAmF;AACnF,cAAc,aAAa,CAAC"}
@@ -12,7 +12,7 @@ import { HttpClient } from '../../core/HttpClient';
12
12
  import { ResponseData } from '../../models/common/ResponseData';
13
13
  import { BaseService } from '../base/BaseService';
14
14
  import { ServiceConfig } from '../types';
15
- import { KnowledgeSearchRequest, KnowledgeSearchResponse, KnowledgeChatRequest, KnowledgeChatResponse } from '../../models/analytics/KnowledgeSearch';
15
+ import { KnowledgeSearchRequest, KnowledgeSearchResponse, KnowledgeChatRequest, KnowledgeChatResponse, KnowledgeAvailability } from '../../models/analytics/KnowledgeSearch';
16
16
  export declare class KnowledgeBaseQAService extends BaseService {
17
17
  /** AIManagement micro-service routes by default under "ai-management". */
18
18
  private static readonly DEFAULT_SERVICE_PATH;
@@ -28,5 +28,11 @@ export declare class KnowledgeBaseQAService extends BaseService {
28
28
  */
29
29
  chat(request: KnowledgeChatRequest): Promise<KnowledgeChatResponse | null>;
30
30
  chatRaw(request: KnowledgeChatRequest): Promise<ResponseData<KnowledgeChatResponse>>;
31
+ /**
32
+ * Effective on/off state of the AI search/chat features (anonymous-capable).
33
+ * The public Resource Centre uses this to show/hide the Ask AI / Chat tabs.
34
+ */
35
+ getAvailability(): Promise<KnowledgeAvailability | null>;
36
+ getAvailabilityRaw(): Promise<ResponseData<KnowledgeAvailability>>;
31
37
  }
32
38
  //# sourceMappingURL=KnowledgeBaseQAService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"KnowledgeBaseQAService.d.ts","sourceRoot":"","sources":["../../../src/services/knowledgebase/KnowledgeBaseQAService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,wCAAwC,CAAC;AAEhD,qBAAa,sBAAuB,SAAQ,WAAW;IACrD,0EAA0E;IAC1E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAmB;IAC/D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAsB;gBAE3C,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,aAAa;IAQ9C,MAAM,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IAKtF,SAAS,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;IAI1F;;;;;OAKG;IACG,IAAI,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAKhF,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;CAGrF"}
1
+ {"version":3,"file":"KnowledgeBaseQAService.d.ts","sourceRoot":"","sources":["../../../src/services/knowledgebase/KnowledgeBaseQAService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,wCAAwC,CAAC;AAEhD,qBAAa,sBAAuB,SAAQ,WAAW;IACrD,0EAA0E;IAC1E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAmB;IAC/D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAsB;gBAE3C,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,aAAa;IAQ9C,MAAM,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IAKtF,SAAS,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;IAI1F;;;;;OAKG;IACG,IAAI,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAKhF,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;IAIpF;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAK9D,kBAAkB,IAAI,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;CAGnE"}
@@ -37,6 +37,17 @@ export class KnowledgeBaseQAService extends BaseService {
37
37
  chatRaw(request) {
38
38
  return this.http.post(this.buildUrl('chat'), request);
39
39
  }
40
+ /**
41
+ * Effective on/off state of the AI search/chat features (anonymous-capable).
42
+ * The public Resource Centre uses this to show/hide the Ask AI / Chat tabs.
43
+ */
44
+ async getAvailability() {
45
+ const response = await this.getAvailabilityRaw();
46
+ return response.data ?? null;
47
+ }
48
+ getAvailabilityRaw() {
49
+ return this.http.get(this.buildUrl('availability'));
50
+ }
40
51
  }
41
52
  /** AIManagement micro-service routes by default under "ai-management". */
42
53
  KnowledgeBaseQAService.DEFAULT_SERVICE_PATH = 'ai-management';
@@ -1 +1 @@
1
- {"version":3,"file":"KnowledgeBaseQAService.js","sourceRoot":"","sources":["../../../src/services/knowledgebase/KnowledgeBaseQAService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AASlD,MAAM,OAAO,sBAAuB,SAAQ,WAAW;IAKrD,YAAY,IAAgB,EAAE,MAAsB;QAClD,KAAK,CAAC,IAAI,EAAE;YACV,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,sBAAsB,CAAC,oBAAoB;YAC/E,QAAQ,EAAE,sBAAsB,CAAC,SAAS;YAC1C,SAAS,EAAE,MAAM,EAAE,SAAS;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAA+B;QAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC;IAC/B,CAAC;IAED,SAAS,CAAC,OAA+B;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAA0B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,OAA6B;QACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,OAA6B;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAwB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/E,CAAC;;AAlCD,0EAA0E;AAClD,2CAAoB,GAAG,eAAe,CAAC;AACvC,gCAAS,GAAG,kBAAkB,CAAC"}
1
+ {"version":3,"file":"KnowledgeBaseQAService.js","sourceRoot":"","sources":["../../../src/services/knowledgebase/KnowledgeBaseQAService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAUlD,MAAM,OAAO,sBAAuB,SAAQ,WAAW;IAKrD,YAAY,IAAgB,EAAE,MAAsB;QAClD,KAAK,CAAC,IAAI,EAAE;YACV,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,sBAAsB,CAAC,oBAAoB;YAC/E,QAAQ,EAAE,sBAAsB,CAAC,SAAS;YAC1C,SAAS,EAAE,MAAM,EAAE,SAAS;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAA+B;QAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC;IAC/B,CAAC;IAED,SAAS,CAAC,OAA+B;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAA0B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,OAA6B;QACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,OAA6B;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAwB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACjD,OAAO,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC;IAC/B,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAwB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;IAC7E,CAAC;;AA/CD,0EAA0E;AAClD,2CAAoB,GAAG,eAAe,CAAC;AACvC,gCAAS,GAAG,kBAAkB,CAAC"}
@@ -90,6 +90,23 @@ export declare class MemberService extends CrudService<Member, Member, Partial<M
90
90
  * @returns ResponseData with array of members
91
91
  */
92
92
  getBirthdaysRaw(): Promise<ResponseData<Member[]>>;
93
+ /**
94
+ * Search members by a single term across first name, surname, middle name, email,
95
+ * cellphone, alternate contact, member ID, user ID and member code (case-insensitive
96
+ * substring match).
97
+ * GET /api/members/search?term={term}&limit={limit}
98
+ * @param term - Search term (required)
99
+ * @param limit - Max results (default 50, max 200)
100
+ * @returns Array of matching members
101
+ */
102
+ searchMembers(term: string, limit?: number): Promise<Member[]>;
103
+ /**
104
+ * Search members (raw)
105
+ * @param term - Search term
106
+ * @param limit - Max results
107
+ * @returns ResponseData with array of matching members
108
+ */
109
+ searchMembersRaw(term: string, limit?: number): Promise<ResponseData<Member[]>>;
93
110
  /**
94
111
  * Update member active status
95
112
  * PATCH /api/members/{id}/status
@@ -1 +1 @@
1
- {"version":3,"file":"MemberService.d.ts","sourceRoot":"","sources":["../../../src/services/members/MemberService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MemberService.d.ts","sourceRoot":"","sources":["../../../src/services/members/MemberService.ts"],"names":[],"mappings":"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"}
@@ -119,6 +119,33 @@ export class MemberService extends CrudService {
119
119
  const url = this.buildUrl(endpoint);
120
120
  return this.http.get(url);
121
121
  }
122
+ /**
123
+ * Search members by a single term across first name, surname, middle name, email,
124
+ * cellphone, alternate contact, member ID, user ID and member code (case-insensitive
125
+ * substring match).
126
+ * GET /api/members/search?term={term}&limit={limit}
127
+ * @param term - Search term (required)
128
+ * @param limit - Max results (default 50, max 200)
129
+ * @returns Array of matching members
130
+ */
131
+ async searchMembers(term, limit = 50) {
132
+ const response = await this.searchMembersRaw(term, limit);
133
+ return response.data ?? [];
134
+ }
135
+ /**
136
+ * Search members (raw)
137
+ * @param term - Search term
138
+ * @param limit - Max results
139
+ * @returns ResponseData with array of matching members
140
+ */
141
+ searchMembersRaw(term, limit = 50) {
142
+ const params = new URLSearchParams();
143
+ params.append('term', term);
144
+ params.append('limit', limit.toString());
145
+ const endpoint = this.getEndpoint('searchMembers', `search?${params.toString()}`);
146
+ const url = this.buildUrl(endpoint);
147
+ return this.http.get(url);
148
+ }
122
149
  // ==================== CUSTOM UPDATE METHODS ====================
123
150
  /**
124
151
  * Update member active status
@@ -1 +1 @@
1
- {"version":3,"file":"MemberService.js","sourceRoot":"","sources":["../../../src/services/members/MemberService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MemberService.js","sourceRoot":"","sources":["../../../src/services/members/MemberService.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,13 @@ export declare class PublicCoursesService extends BaseService {
40
40
  /** Enriched single course by id — sessions + prereqs metadata inline. */
41
41
  getViewById(courseId: number): Promise<CourseModelView | null>;
42
42
  getViewByIdRaw(courseId: number): Promise<ResponseData<CourseModelView>>;
43
+ /**
44
+ * Enriched single course by slug — same payload as {@link getViewById}
45
+ * (sessions + required/recommended/unmet prerequisites + viewer progress +
46
+ * canStart), resolved from the URL slug.
47
+ */
48
+ getViewBySlug(slug: string): Promise<CourseModelView | null>;
49
+ getViewBySlugRaw(slug: string): Promise<ResponseData<CourseModelView>>;
43
50
  }
44
51
  /**
45
52
  * Anonymous-safe categories with MinistryName, StatusName, course counts.
@@ -1 +1 @@
1
- {"version":3,"file":"PublicCoursesService.d.ts","sourceRoot":"","sources":["../../../src/services/resources/PublicCoursesService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,0DAA0D,CAAC;AAEnG,qBAAa,oBAAqB,SAAQ,WAAW;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAe;IAC3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAwB;gBAE7C,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,aAAa;IAQ9C,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIlD,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAKvD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKrD;;;;OAIG;IACG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAIvE,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC;IAIlF,4FAA4F;IACtF,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAIjF,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAI5F;;;;OAIG;IACG,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAI/D,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC;IAK1E,yEAAyE;IACnE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAIpE,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;CAGzE;AAED;;;;GAIG;AACH,qBAAa,+BAAgC,SAAQ,WAAW;IAC9D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAe;IAC3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAA2B;gBAEhD,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,aAAa;IAQ9C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAIvE,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,uBAAuB,EAAE,CAAC,CAAC;CAInF"}
1
+ {"version":3,"file":"PublicCoursesService.d.ts","sourceRoot":"","sources":["../../../src/services/resources/PublicCoursesService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,0DAA0D,CAAC;AAEnG,qBAAa,oBAAqB,SAAQ,WAAW;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAe;IAC3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAwB;gBAE7C,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,aAAa;IAQ9C,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIlD,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAKvD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKrD;;;;OAIG;IACG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAIvE,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC;IAIlF,4FAA4F;IACtF,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAIjF,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAI5F;;;;OAIG;IACG,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAI/D,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC;IAK1E,yEAAyE;IACnE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAIpE,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAIxE;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAIlE,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;CAGvE;AAED;;;;GAIG;AACH,qBAAa,+BAAgC,SAAQ,WAAW;IAC9D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAe;IAC3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAA2B;gBAEhD,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,aAAa;IAQ9C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAIvE,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,uBAAuB,EAAE,CAAC,CAAC;CAInF"}