@markstiles/sitecore-search-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/AUTHENTICATION.md +337 -0
  2. package/LICENSE +21 -0
  3. package/README.md +606 -0
  4. package/dist/client/base-client.d.ts +34 -0
  5. package/dist/client/base-client.d.ts.map +1 -0
  6. package/dist/client/base-client.js +117 -0
  7. package/dist/client/base-client.js.map +1 -0
  8. package/dist/client/events-client.d.ts +77 -0
  9. package/dist/client/events-client.d.ts.map +1 -0
  10. package/dist/client/events-client.js +32 -0
  11. package/dist/client/events-client.js.map +1 -0
  12. package/dist/client/ingestion-client.d.ts +76 -0
  13. package/dist/client/ingestion-client.d.ts.map +1 -0
  14. package/dist/client/ingestion-client.js +73 -0
  15. package/dist/client/ingestion-client.js.map +1 -0
  16. package/dist/client/search-client.d.ts +97 -0
  17. package/dist/client/search-client.d.ts.map +1 -0
  18. package/dist/client/search-client.js +18 -0
  19. package/dist/client/search-client.js.map +1 -0
  20. package/dist/config.d.ts +99 -0
  21. package/dist/config.d.ts.map +1 -0
  22. package/dist/config.js +75 -0
  23. package/dist/config.js.map +1 -0
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +312 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/tools/events/track-event.d.ts +394 -0
  29. package/dist/tools/events/track-event.d.ts.map +1 -0
  30. package/dist/tools/events/track-event.js +80 -0
  31. package/dist/tools/events/track-event.js.map +1 -0
  32. package/dist/tools/events/validate-event.d.ts +94 -0
  33. package/dist/tools/events/validate-event.d.ts.map +1 -0
  34. package/dist/tools/events/validate-event.js +51 -0
  35. package/dist/tools/events/validate-event.js.map +1 -0
  36. package/dist/tools/ingestion/check-status.d.ts +50 -0
  37. package/dist/tools/ingestion/check-status.d.ts.map +1 -0
  38. package/dist/tools/ingestion/check-status.js +27 -0
  39. package/dist/tools/ingestion/check-status.js.map +1 -0
  40. package/dist/tools/ingestion/create-document.d.ts +50 -0
  41. package/dist/tools/ingestion/create-document.d.ts.map +1 -0
  42. package/dist/tools/ingestion/create-document.js +27 -0
  43. package/dist/tools/ingestion/create-document.js.map +1 -0
  44. package/dist/tools/ingestion/delete-document.d.ts +50 -0
  45. package/dist/tools/ingestion/delete-document.d.ts.map +1 -0
  46. package/dist/tools/ingestion/delete-document.js +27 -0
  47. package/dist/tools/ingestion/delete-document.js.map +1 -0
  48. package/dist/tools/ingestion/ingest-from-source.d.ts +234 -0
  49. package/dist/tools/ingestion/ingest-from-source.d.ts.map +1 -0
  50. package/dist/tools/ingestion/ingest-from-source.js +48 -0
  51. package/dist/tools/ingestion/ingest-from-source.js.map +1 -0
  52. package/dist/tools/ingestion/update-document.d.ts +62 -0
  53. package/dist/tools/ingestion/update-document.d.ts.map +1 -0
  54. package/dist/tools/ingestion/update-document.js +34 -0
  55. package/dist/tools/ingestion/update-document.js.map +1 -0
  56. package/dist/tools/search/ai-search.d.ts +132 -0
  57. package/dist/tools/search/ai-search.d.ts.map +1 -0
  58. package/dist/tools/search/ai-search.js +65 -0
  59. package/dist/tools/search/ai-search.js.map +1 -0
  60. package/dist/tools/search/basic-search.d.ts +98 -0
  61. package/dist/tools/search/basic-search.d.ts.map +1 -0
  62. package/dist/tools/search/basic-search.js +51 -0
  63. package/dist/tools/search/basic-search.js.map +1 -0
  64. package/dist/tools/search/faceted-search.d.ts +114 -0
  65. package/dist/tools/search/faceted-search.d.ts.map +1 -0
  66. package/dist/tools/search/faceted-search.js +52 -0
  67. package/dist/tools/search/faceted-search.js.map +1 -0
  68. package/dist/tools/search/recommendations.d.ts +62 -0
  69. package/dist/tools/search/recommendations.d.ts.map +1 -0
  70. package/dist/tools/search/recommendations.js +50 -0
  71. package/dist/tools/search/recommendations.js.map +1 -0
  72. package/dist/utils/auth-manager.d.ts +60 -0
  73. package/dist/utils/auth-manager.d.ts.map +1 -0
  74. package/dist/utils/auth-manager.js +184 -0
  75. package/dist/utils/auth-manager.js.map +1 -0
  76. package/dist/utils/errors.d.ts +18 -0
  77. package/dist/utils/errors.d.ts.map +1 -0
  78. package/dist/utils/errors.js +58 -0
  79. package/dist/utils/errors.js.map +1 -0
  80. package/dist/utils/logger.d.ts +12 -0
  81. package/dist/utils/logger.d.ts.map +1 -0
  82. package/dist/utils/logger.js +50 -0
  83. package/dist/utils/logger.js.map +1 -0
  84. package/dist/utils/schema.d.ts +6 -0
  85. package/dist/utils/schema.d.ts.map +1 -0
  86. package/dist/utils/schema.js +14 -0
  87. package/dist/utils/schema.js.map +1 -0
  88. package/package.json +58 -0
@@ -0,0 +1,117 @@
1
+ import axios from 'axios';
2
+ import { handleApiError } from '../utils/errors.js';
3
+ import { Logger } from '../utils/logger.js';
4
+ /**
5
+ * Base HTTP client for all Sitecore API requests
6
+ * Provides common functionality: error handling, logging, retry logic, authentication
7
+ */
8
+ export class BaseClient {
9
+ axios;
10
+ logger;
11
+ authManager;
12
+ constructor(baseURL, context, authManager) {
13
+ this.logger = new Logger(context);
14
+ this.authManager = authManager;
15
+ this.axios = axios.create({
16
+ baseURL,
17
+ timeout: 30000,
18
+ headers: {
19
+ 'Content-Type': 'application/json',
20
+ },
21
+ });
22
+ // Request interceptor for logging and authentication
23
+ this.axios.interceptors.request.use(async (config) => {
24
+ // Add authentication headers
25
+ if (this.authManager && config.headers) {
26
+ const authHeaders = await this.authManager.getAuthHeader();
27
+ Object.entries(authHeaders).forEach(([key, value]) => {
28
+ config.headers.set(key, value);
29
+ });
30
+ }
31
+ this.logger.debug('API Request', {
32
+ method: config.method,
33
+ url: config.url,
34
+ params: config.params,
35
+ });
36
+ return config;
37
+ }, (error) => {
38
+ this.logger.error('Request error', error);
39
+ return Promise.reject(error);
40
+ });
41
+ // Response interceptor for logging and error handling
42
+ this.axios.interceptors.response.use((response) => {
43
+ this.logger.debug('API Response', {
44
+ status: response.status,
45
+ url: response.config.url,
46
+ });
47
+ return response;
48
+ }, (error) => {
49
+ this.logger.error('Response error', error, {
50
+ url: error.config?.url,
51
+ status: error.response?.status,
52
+ });
53
+ return Promise.reject(error);
54
+ });
55
+ }
56
+ /**
57
+ * Make a GET request
58
+ */
59
+ async get(url, config) {
60
+ try {
61
+ const response = await this.axios.get(url, config);
62
+ return response.data;
63
+ }
64
+ catch (error) {
65
+ handleApiError(error);
66
+ }
67
+ }
68
+ /**
69
+ * Make a POST request
70
+ */
71
+ async post(url, data, config) {
72
+ try {
73
+ const response = await this.axios.post(url, data, config);
74
+ return response.data;
75
+ }
76
+ catch (error) {
77
+ handleApiError(error);
78
+ }
79
+ }
80
+ /**
81
+ * Make a PUT request
82
+ */
83
+ async put(url, data, config) {
84
+ try {
85
+ const response = await this.axios.put(url, data, config);
86
+ return response.data;
87
+ }
88
+ catch (error) {
89
+ handleApiError(error);
90
+ }
91
+ }
92
+ /**
93
+ * Make a PATCH request
94
+ */
95
+ async patch(url, data, config) {
96
+ try {
97
+ const response = await this.axios.patch(url, data, config);
98
+ return response.data;
99
+ }
100
+ catch (error) {
101
+ handleApiError(error);
102
+ }
103
+ }
104
+ /**
105
+ * Make a DELETE request
106
+ */
107
+ async delete(url, config) {
108
+ try {
109
+ const response = await this.axios.delete(url, config);
110
+ return response.data;
111
+ }
112
+ catch (error) {
113
+ handleApiError(error);
114
+ }
115
+ }
116
+ }
117
+ //# sourceMappingURL=base-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../src/client/base-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C;;;GAGG;AACH,MAAM,OAAO,UAAU;IACX,KAAK,CAAgB;IACrB,MAAM,CAAS;IACf,WAAW,CAAe;IAEpC,YACE,OAAe,EACf,OAAe,EACf,WAAyB;QAEzB,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;YACxB,OAAO;YACP,OAAO,EAAE,KAAK;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;QAEH,qDAAqD;QACrD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CACjC,KAAK,EAAE,MAAM,EAAE,EAAE;YACf,6BAA6B;YAC7B,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACvC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;gBAC3D,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;oBACnD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACjC,CAAC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE;gBAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YAC1C,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CACF,CAAC;QAEF,sDAAsD;QACtD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAClC,CAAC,QAAQ,EAAE,EAAE;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE;gBAChC,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG;aACzB,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QAClB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,EAAE;gBACzC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG;gBACtB,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM;aAC/B,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,MAA2B;QAC7D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAqB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACrE,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,IAAI,CAAI,GAAW,EAAE,IAAc,EAAE,MAA2B;QAC9E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAqB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC5E,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,IAAc,EAAE,MAA2B;QAC7E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAqB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC3E,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,KAAK,CAAI,GAAW,EAAE,IAAc,EAAE,MAA2B;QAC/E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAqB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7E,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,MAAM,CAAI,GAAW,EAAE,MAA2B;QAChE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAqB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACxE,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,77 @@
1
+ import { BaseClient } from './base-client.js';
2
+ import { AuthManager } from '../utils/auth-manager.js';
3
+ /**
4
+ * Client for Sitecore Events API
5
+ * Handles event tracking for analytics, personalization, and metrics
6
+ */
7
+ export declare class EventsClient extends BaseClient {
8
+ constructor(baseURL: string, authManager?: AuthManager);
9
+ /**
10
+ * Track an event (v4 recommended endpoint)
11
+ * POST /event/v4/publish/{ckey}
12
+ */
13
+ trackEvent(customerKey: string, event: EventPayload): Promise<EventResponse>;
14
+ /**
15
+ * Track a content event (v3 endpoint)
16
+ * POST /event/v3/publish/{ckey}
17
+ */
18
+ trackContentEvent(customerKey: string, event: EventPayload): Promise<EventResponse>;
19
+ /**
20
+ * Validate event payload
21
+ * POST /event/v4/validate
22
+ */
23
+ validateEvent(event: EventPayload): Promise<ValidationResponse>;
24
+ }
25
+ /**
26
+ * Type definitions for Events API
27
+ */
28
+ export interface EventPayload {
29
+ event: EventType;
30
+ value?: EventValue;
31
+ browser?: BrowserContext;
32
+ geo?: GeoContext;
33
+ page?: PageContext;
34
+ user?: UserContext;
35
+ }
36
+ export type EventType = 'view' | 'click' | 'add' | 'remove' | 'identify' | 'order' | 'download' | 'bookmark' | 'review' | 'widget' | 'request';
37
+ export interface EventValue {
38
+ entity?: string;
39
+ entity_id?: string;
40
+ widget?: string;
41
+ action?: string;
42
+ [key: string]: unknown;
43
+ }
44
+ export interface BrowserContext {
45
+ user_agent?: string;
46
+ ip?: string;
47
+ }
48
+ export interface GeoContext {
49
+ country?: string;
50
+ region?: string;
51
+ city?: string;
52
+ latitude?: number;
53
+ longitude?: number;
54
+ }
55
+ export interface PageContext {
56
+ uri?: string;
57
+ title?: string;
58
+ locale?: string;
59
+ referrer?: string;
60
+ }
61
+ export interface UserContext {
62
+ uuid?: string;
63
+ email?: string;
64
+ [key: string]: unknown;
65
+ }
66
+ export interface EventResponse {
67
+ message?: string;
68
+ status?: string;
69
+ }
70
+ export interface ValidationResponse {
71
+ valid: boolean;
72
+ errors?: Array<{
73
+ field: string;
74
+ message: string;
75
+ }>;
76
+ }
77
+ //# sourceMappingURL=events-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events-client.d.ts","sourceRoot":"","sources":["../../src/client/events-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;GAGG;AACH,qBAAa,YAAa,SAAQ,UAAU;gBAC9B,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW;IAItD;;;OAGG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAIlF;;;OAGG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAIzF;;;OAGG;IACG,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAGtE;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,OAAO,GACP,KAAK,GACL,QAAQ,GACR,UAAU,GACV,OAAO,GACP,UAAU,GACV,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ"}
@@ -0,0 +1,32 @@
1
+ import { BaseClient } from './base-client.js';
2
+ /**
3
+ * Client for Sitecore Events API
4
+ * Handles event tracking for analytics, personalization, and metrics
5
+ */
6
+ export class EventsClient extends BaseClient {
7
+ constructor(baseURL, authManager) {
8
+ super(baseURL, 'EventsClient', authManager);
9
+ }
10
+ /**
11
+ * Track an event (v4 recommended endpoint)
12
+ * POST /event/v4/publish/{ckey}
13
+ */
14
+ async trackEvent(customerKey, event) {
15
+ return this.post(`/event/v4/publish/${customerKey}`, event);
16
+ }
17
+ /**
18
+ * Track a content event (v3 endpoint)
19
+ * POST /event/v3/publish/{ckey}
20
+ */
21
+ async trackContentEvent(customerKey, event) {
22
+ return this.post(`/event/v3/publish/${customerKey}`, event);
23
+ }
24
+ /**
25
+ * Validate event payload
26
+ * POST /event/v4/validate
27
+ */
28
+ async validateEvent(event) {
29
+ return this.post('/event/v4/validate', event);
30
+ }
31
+ }
32
+ //# sourceMappingURL=events-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events-client.js","sourceRoot":"","sources":["../../src/client/events-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C;;;GAGG;AACH,MAAM,OAAO,YAAa,SAAQ,UAAU;IAC1C,YAAY,OAAe,EAAE,WAAyB;QACpD,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,WAAmB,EAAE,KAAmB;QACvD,OAAO,IAAI,CAAC,IAAI,CAAgB,qBAAqB,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CAAC,WAAmB,EAAE,KAAmB;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAgB,qBAAqB,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,KAAmB;QACrC,OAAO,IAAI,CAAC,IAAI,CAAqB,oBAAoB,EAAE,KAAK,CAAC,CAAC;IACpE,CAAC;CACF"}
@@ -0,0 +1,76 @@
1
+ import { BaseClient } from './base-client.js';
2
+ import { AuthManager } from '../utils/auth-manager.js';
3
+ /**
4
+ * Client for Sitecore Ingestion API
5
+ * Handles document CRUD operations, file uploads, and status checks
6
+ */
7
+ export declare class IngestionClient extends BaseClient {
8
+ constructor(baseURL: string, authManager?: AuthManager);
9
+ /**
10
+ * Create a new document
11
+ * POST /ingestion/v1/domains/{domain}/sources/{source}/entities/{entity}/documents
12
+ */
13
+ createDocument(domain: string, source: string, entity: string, document: DocumentPayload): Promise<IngestionResponse>;
14
+ /**
15
+ * Update a document (full replacement)
16
+ * PUT /ingestion/v1/domains/{domain}/sources/{source}/entities/{entity}/documents/{documentId}
17
+ */
18
+ updateDocument(domain: string, source: string, entity: string, documentId: string, document: DocumentPayload): Promise<IngestionResponse>;
19
+ /**
20
+ * Partially update a document
21
+ * PATCH /ingestion/v1/domains/{domain}/sources/{source}/entities/{entity}/documents/{documentId}
22
+ */
23
+ patchDocument(domain: string, source: string, entity: string, documentId: string, patch: Partial<DocumentPayload>): Promise<IngestionResponse>;
24
+ /**
25
+ * Delete a document
26
+ * DELETE /ingestion/v1/domains/{domain}/sources/{source}/entities/{entity}/documents/{documentId}
27
+ */
28
+ deleteDocument(domain: string, source: string, entity: string, documentId: string): Promise<IngestionResponse>;
29
+ /**
30
+ * Create document from file upload
31
+ * POST /ingestion/v1/domains/{domain}/sources/{source}/entities/{entity}/file/{documentId}
32
+ */
33
+ createDocumentFromFile(domain: string, source: string, entity: string, documentId: string, fileUrl: string, extractors?: DocumentExtractors): Promise<IngestionResponse>;
34
+ /**
35
+ * Create document from URL
36
+ * POST /ingestion/v1/domains/{domain}/sources/{source}/entities/{entity}/url/{documentId}
37
+ */
38
+ createDocumentFromUrl(domain: string, source: string, entity: string, documentId: string, url: string, extractors?: DocumentExtractors): Promise<IngestionResponse>;
39
+ /**
40
+ * Check status of an incremental update
41
+ * GET /ingestion/v1/domains/{domain}/sources/{source}/entities/{entity}/status/{incrementalUpdateId}
42
+ */
43
+ getStatus(domain: string, source: string, entity: string, incrementalUpdateId: string): Promise<StatusResponse>;
44
+ }
45
+ /**
46
+ * Type definitions for Ingestion API
47
+ */
48
+ export interface DocumentPayload {
49
+ id?: string;
50
+ [key: string]: unknown;
51
+ }
52
+ export interface DocumentExtractors {
53
+ xpath?: Array<{
54
+ name: string;
55
+ expression: string;
56
+ }>;
57
+ javascript?: Array<{
58
+ name: string;
59
+ expression: string;
60
+ }>;
61
+ css?: Array<{
62
+ name: string;
63
+ selector: string;
64
+ }>;
65
+ }
66
+ export interface IngestionResponse {
67
+ message?: string;
68
+ incremental_update_id?: string;
69
+ status?: string;
70
+ }
71
+ export interface StatusResponse {
72
+ status: 'pending' | 'processing' | 'completed' | 'failed';
73
+ message?: string;
74
+ progress?: number;
75
+ }
76
+ //# sourceMappingURL=ingestion-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingestion-client.d.ts","sourceRoot":"","sources":["../../src/client/ingestion-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,UAAU;gBACjC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW;IAItD;;;OAGG;IACG,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,iBAAiB,CAAC;IAK7B;;;OAGG;IACG,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,iBAAiB,CAAC;IAK7B;;;OAGG;IACG,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAC9B,OAAO,CAAC,iBAAiB,CAAC;IAK7B;;;OAGG;IACG,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC;IAK7B;;;OAGG;IACG,sBAAsB,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,kBAAkB,GAC9B,OAAO,CAAC,iBAAiB,CAAC;IAQ7B;;;OAGG;IACG,qBAAqB,CACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,kBAAkB,GAC9B,OAAO,CAAC,iBAAiB,CAAC;IAQ7B;;;OAGG;IACG,SAAS,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,MAAM,GAC1B,OAAO,CAAC,cAAc,CAAC;CAI3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,GAAG,CAAC,EAAE,KAAK,CAAC;QACV,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,73 @@
1
+ import { BaseClient } from './base-client.js';
2
+ /**
3
+ * Client for Sitecore Ingestion API
4
+ * Handles document CRUD operations, file uploads, and status checks
5
+ */
6
+ export class IngestionClient extends BaseClient {
7
+ constructor(baseURL, authManager) {
8
+ super(baseURL, 'IngestionClient', authManager);
9
+ }
10
+ /**
11
+ * Create a new document
12
+ * POST /ingestion/v1/domains/{domain}/sources/{source}/entities/{entity}/documents
13
+ */
14
+ async createDocument(domain, source, entity, document) {
15
+ const url = `/ingestion/v1/domains/${domain}/sources/${source}/entities/${entity}/documents`;
16
+ return this.post(url, document);
17
+ }
18
+ /**
19
+ * Update a document (full replacement)
20
+ * PUT /ingestion/v1/domains/{domain}/sources/{source}/entities/{entity}/documents/{documentId}
21
+ */
22
+ async updateDocument(domain, source, entity, documentId, document) {
23
+ const url = `/ingestion/v1/domains/${domain}/sources/${source}/entities/${entity}/documents/${documentId}`;
24
+ return this.put(url, document);
25
+ }
26
+ /**
27
+ * Partially update a document
28
+ * PATCH /ingestion/v1/domains/{domain}/sources/{source}/entities/{entity}/documents/{documentId}
29
+ */
30
+ async patchDocument(domain, source, entity, documentId, patch) {
31
+ const url = `/ingestion/v1/domains/${domain}/sources/${source}/entities/${entity}/documents/${documentId}`;
32
+ return this.patch(url, patch);
33
+ }
34
+ /**
35
+ * Delete a document
36
+ * DELETE /ingestion/v1/domains/{domain}/sources/{source}/entities/{entity}/documents/{documentId}
37
+ */
38
+ async deleteDocument(domain, source, entity, documentId) {
39
+ const url = `/ingestion/v1/domains/${domain}/sources/${source}/entities/${entity}/documents/${documentId}`;
40
+ return this.delete(url);
41
+ }
42
+ /**
43
+ * Create document from file upload
44
+ * POST /ingestion/v1/domains/{domain}/sources/{source}/entities/{entity}/file/{documentId}
45
+ */
46
+ async createDocumentFromFile(domain, source, entity, documentId, fileUrl, extractors) {
47
+ const url = `/ingestion/v1/domains/${domain}/sources/${source}/entities/${entity}/file/${documentId}`;
48
+ return this.post(url, {
49
+ file_url: fileUrl,
50
+ extractors,
51
+ });
52
+ }
53
+ /**
54
+ * Create document from URL
55
+ * POST /ingestion/v1/domains/{domain}/sources/{source}/entities/{entity}/url/{documentId}
56
+ */
57
+ async createDocumentFromUrl(domain, source, entity, documentId, url, extractors) {
58
+ const endpoint = `/ingestion/v1/domains/${domain}/sources/${source}/entities/${entity}/url/${documentId}`;
59
+ return this.post(endpoint, {
60
+ url,
61
+ extractors,
62
+ });
63
+ }
64
+ /**
65
+ * Check status of an incremental update
66
+ * GET /ingestion/v1/domains/{domain}/sources/{source}/entities/{entity}/status/{incrementalUpdateId}
67
+ */
68
+ async getStatus(domain, source, entity, incrementalUpdateId) {
69
+ const url = `/ingestion/v1/domains/${domain}/sources/${source}/entities/${entity}/status/${incrementalUpdateId}`;
70
+ return this.get(url);
71
+ }
72
+ }
73
+ //# sourceMappingURL=ingestion-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingestion-client.js","sourceRoot":"","sources":["../../src/client/ingestion-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C;;;GAGG;AACH,MAAM,OAAO,eAAgB,SAAQ,UAAU;IAC7C,YAAY,OAAe,EAAE,WAAyB;QACpD,KAAK,CAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAClB,MAAc,EACd,MAAc,EACd,MAAc,EACd,QAAyB;QAEzB,MAAM,GAAG,GAAG,yBAAyB,MAAM,YAAY,MAAM,aAAa,MAAM,YAAY,CAAC;QAC7F,OAAO,IAAI,CAAC,IAAI,CAAoB,GAAG,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAClB,MAAc,EACd,MAAc,EACd,MAAc,EACd,UAAkB,EAClB,QAAyB;QAEzB,MAAM,GAAG,GAAG,yBAAyB,MAAM,YAAY,MAAM,aAAa,MAAM,cAAc,UAAU,EAAE,CAAC;QAC3G,OAAO,IAAI,CAAC,GAAG,CAAoB,GAAG,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CACjB,MAAc,EACd,MAAc,EACd,MAAc,EACd,UAAkB,EAClB,KAA+B;QAE/B,MAAM,GAAG,GAAG,yBAAyB,MAAM,YAAY,MAAM,aAAa,MAAM,cAAc,UAAU,EAAE,CAAC;QAC3G,OAAO,IAAI,CAAC,KAAK,CAAoB,GAAG,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAClB,MAAc,EACd,MAAc,EACd,MAAc,EACd,UAAkB;QAElB,MAAM,GAAG,GAAG,yBAAyB,MAAM,YAAY,MAAM,aAAa,MAAM,cAAc,UAAU,EAAE,CAAC;QAC3G,OAAO,IAAI,CAAC,MAAM,CAAoB,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,sBAAsB,CAC1B,MAAc,EACd,MAAc,EACd,MAAc,EACd,UAAkB,EAClB,OAAe,EACf,UAA+B;QAE/B,MAAM,GAAG,GAAG,yBAAyB,MAAM,YAAY,MAAM,aAAa,MAAM,SAAS,UAAU,EAAE,CAAC;QACtG,OAAO,IAAI,CAAC,IAAI,CAAoB,GAAG,EAAE;YACvC,QAAQ,EAAE,OAAO;YACjB,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,qBAAqB,CACzB,MAAc,EACd,MAAc,EACd,MAAc,EACd,UAAkB,EAClB,GAAW,EACX,UAA+B;QAE/B,MAAM,QAAQ,GAAG,yBAAyB,MAAM,YAAY,MAAM,aAAa,MAAM,QAAQ,UAAU,EAAE,CAAC;QAC1G,OAAO,IAAI,CAAC,IAAI,CAAoB,QAAQ,EAAE;YAC5C,GAAG;YACH,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CACb,MAAc,EACd,MAAc,EACd,MAAc,EACd,mBAA2B;QAE3B,MAAM,GAAG,GAAG,yBAAyB,MAAM,YAAY,MAAM,aAAa,MAAM,WAAW,mBAAmB,EAAE,CAAC;QACjH,OAAO,IAAI,CAAC,GAAG,CAAiB,GAAG,CAAC,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,97 @@
1
+ import { BaseClient } from './base-client.js';
2
+ import { AuthManager } from '../utils/auth-manager.js';
3
+ /**
4
+ * Client for Sitecore Search & Recommendation API
5
+ * Handles search queries, faceted search, personalization, and recommendations
6
+ */
7
+ export declare class SearchClient extends BaseClient {
8
+ constructor(baseURL: string, authManager?: AuthManager);
9
+ /**
10
+ * Execute a search query with full widget support
11
+ * POST /discover/v2/{domainId}
12
+ */
13
+ search(domainId: string, request: SearchRequest): Promise<SearchResponse>;
14
+ }
15
+ /**
16
+ * Type definitions for Search API
17
+ * These are simplified versions - full types should be generated from OpenAPI specs
18
+ */
19
+ export interface SearchRequest {
20
+ widget: SearchWidget;
21
+ context?: SearchContext;
22
+ questions?: QuestionsRequest;
23
+ }
24
+ export interface SearchWidget {
25
+ items: SearchWidgetItem[];
26
+ }
27
+ export interface SearchWidgetItem {
28
+ rfk_id: string;
29
+ entity?: string;
30
+ search?: {
31
+ query?: {
32
+ keyphrase?: string;
33
+ };
34
+ facet?: Array<{
35
+ name: string;
36
+ type?: string;
37
+ values?: string[];
38
+ }>;
39
+ filter?: Record<string, unknown>;
40
+ sort?: {
41
+ [key: string]: 'asc' | 'desc';
42
+ };
43
+ offset?: number;
44
+ limit?: number;
45
+ };
46
+ recommendation?: {
47
+ id?: string;
48
+ };
49
+ ai?: {
50
+ type?: 'answer' | 'question';
51
+ };
52
+ }
53
+ export interface SearchContext {
54
+ user?: {
55
+ uuid?: string;
56
+ };
57
+ page?: {
58
+ uri?: string;
59
+ };
60
+ locale?: {
61
+ country?: string;
62
+ language?: string;
63
+ };
64
+ }
65
+ export interface QuestionsRequest {
66
+ keyphrase: string;
67
+ exact_answer?: {
68
+ include_sources?: boolean;
69
+ query_types?: Array<'question' | 'statement' | 'keyword'>;
70
+ };
71
+ related_questions?: {
72
+ include_sources?: boolean;
73
+ limit?: number;
74
+ offset?: number;
75
+ };
76
+ }
77
+ export interface SearchResponse {
78
+ widgets: SearchWidgetResponse[];
79
+ context?: {
80
+ request_id?: string;
81
+ };
82
+ }
83
+ export interface SearchWidgetResponse {
84
+ rfkId: string;
85
+ content?: Array<Record<string, unknown>>;
86
+ total_item?: number;
87
+ facet?: Array<{
88
+ name: string;
89
+ value?: Array<{
90
+ id: string;
91
+ count?: number;
92
+ }>;
93
+ }>;
94
+ sort?: Record<string, unknown>;
95
+ suggestion?: Record<string, unknown>;
96
+ }
97
+ //# sourceMappingURL=search-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-client.d.ts","sourceRoot":"","sources":["../../src/client/search-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { BaseClient } from './base-client.js';
2
+ /**
3
+ * Client for Sitecore Search & Recommendation API
4
+ * Handles search queries, faceted search, personalization, and recommendations
5
+ */
6
+ export class SearchClient extends BaseClient {
7
+ constructor(baseURL, authManager) {
8
+ super(baseURL, 'SearchClient', authManager);
9
+ }
10
+ /**
11
+ * Execute a search query with full widget support
12
+ * POST /discover/v2/{domainId}
13
+ */
14
+ async search(domainId, request) {
15
+ return this.post(`/discover/v2/${domainId}`, request);
16
+ }
17
+ }
18
+ //# sourceMappingURL=search-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-client.js","sourceRoot":"","sources":["../../src/client/search-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C;;;GAGG;AACH,MAAM,OAAO,YAAa,SAAQ,UAAU;IAC1C,YAAY,OAAe,EAAE,WAAyB;QACpD,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,OAAsB;QACnD,OAAO,IAAI,CAAC,IAAI,CAAiB,gBAAgB,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;CACF"}
@@ -0,0 +1,99 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Configuration schema for Sitecore Search MCP Server
4
+ */
5
+ export declare const DomainConfigSchema: z.ZodObject<{
6
+ searchBaseUrl: z.ZodDefault<z.ZodOptional<z.ZodString>>;
7
+ ingestionBaseUrl: z.ZodDefault<z.ZodOptional<z.ZodString>>;
8
+ eventsBaseUrl: z.ZodDefault<z.ZodOptional<z.ZodString>>;
9
+ apiKey: z.ZodOptional<z.ZodString>;
10
+ clientKey: z.ZodOptional<z.ZodString>;
11
+ accessTokenExpiry: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
12
+ refreshTokenExpiry: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
13
+ authScopes: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodEnum<["discover", "event", "ingestion"]>, "many">>>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ searchBaseUrl: string;
16
+ ingestionBaseUrl: string;
17
+ eventsBaseUrl: string;
18
+ accessTokenExpiry: number;
19
+ refreshTokenExpiry: number;
20
+ authScopes: ("discover" | "event" | "ingestion")[];
21
+ apiKey?: string | undefined;
22
+ clientKey?: string | undefined;
23
+ }, {
24
+ searchBaseUrl?: string | undefined;
25
+ ingestionBaseUrl?: string | undefined;
26
+ eventsBaseUrl?: string | undefined;
27
+ apiKey?: string | undefined;
28
+ clientKey?: string | undefined;
29
+ accessTokenExpiry?: number | undefined;
30
+ refreshTokenExpiry?: number | undefined;
31
+ authScopes?: ("discover" | "event" | "ingestion")[] | undefined;
32
+ }>;
33
+ export declare const ConfigSchema: z.ZodObject<{
34
+ domains: z.ZodRecord<z.ZodString, z.ZodObject<{
35
+ searchBaseUrl: z.ZodDefault<z.ZodOptional<z.ZodString>>;
36
+ ingestionBaseUrl: z.ZodDefault<z.ZodOptional<z.ZodString>>;
37
+ eventsBaseUrl: z.ZodDefault<z.ZodOptional<z.ZodString>>;
38
+ apiKey: z.ZodOptional<z.ZodString>;
39
+ clientKey: z.ZodOptional<z.ZodString>;
40
+ accessTokenExpiry: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
41
+ refreshTokenExpiry: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
42
+ authScopes: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodEnum<["discover", "event", "ingestion"]>, "many">>>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ searchBaseUrl: string;
45
+ ingestionBaseUrl: string;
46
+ eventsBaseUrl: string;
47
+ accessTokenExpiry: number;
48
+ refreshTokenExpiry: number;
49
+ authScopes: ("discover" | "event" | "ingestion")[];
50
+ apiKey?: string | undefined;
51
+ clientKey?: string | undefined;
52
+ }, {
53
+ searchBaseUrl?: string | undefined;
54
+ ingestionBaseUrl?: string | undefined;
55
+ eventsBaseUrl?: string | undefined;
56
+ apiKey?: string | undefined;
57
+ clientKey?: string | undefined;
58
+ accessTokenExpiry?: number | undefined;
59
+ refreshTokenExpiry?: number | undefined;
60
+ authScopes?: ("discover" | "event" | "ingestion")[] | undefined;
61
+ }>>;
62
+ defaultDomain: z.ZodOptional<z.ZodString>;
63
+ }, "strip", z.ZodTypeAny, {
64
+ domains: Record<string, {
65
+ searchBaseUrl: string;
66
+ ingestionBaseUrl: string;
67
+ eventsBaseUrl: string;
68
+ accessTokenExpiry: number;
69
+ refreshTokenExpiry: number;
70
+ authScopes: ("discover" | "event" | "ingestion")[];
71
+ apiKey?: string | undefined;
72
+ clientKey?: string | undefined;
73
+ }>;
74
+ defaultDomain?: string | undefined;
75
+ }, {
76
+ domains: Record<string, {
77
+ searchBaseUrl?: string | undefined;
78
+ ingestionBaseUrl?: string | undefined;
79
+ eventsBaseUrl?: string | undefined;
80
+ apiKey?: string | undefined;
81
+ clientKey?: string | undefined;
82
+ accessTokenExpiry?: number | undefined;
83
+ refreshTokenExpiry?: number | undefined;
84
+ authScopes?: ("discover" | "event" | "ingestion")[] | undefined;
85
+ }>;
86
+ defaultDomain?: string | undefined;
87
+ }>;
88
+ export type DomainConfig = z.infer<typeof DomainConfigSchema>;
89
+ export type Config = z.infer<typeof ConfigSchema>;
90
+ /**
91
+ * Load configuration from environment variables
92
+ * Supports multiple domains via SITECORE_DOMAIN_{NAME}_* pattern
93
+ */
94
+ export declare function loadConfig(): Config;
95
+ /**
96
+ * Get domain configuration by domain ID
97
+ */
98
+ export declare function getDomainConfig(config: Config, domainId?: string): DomainConfig;
99
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW7B,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGvB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAqCnC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,CAa/E"}