@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.
- package/AUTHENTICATION.md +337 -0
- package/LICENSE +21 -0
- package/README.md +606 -0
- package/dist/client/base-client.d.ts +34 -0
- package/dist/client/base-client.d.ts.map +1 -0
- package/dist/client/base-client.js +117 -0
- package/dist/client/base-client.js.map +1 -0
- package/dist/client/events-client.d.ts +77 -0
- package/dist/client/events-client.d.ts.map +1 -0
- package/dist/client/events-client.js +32 -0
- package/dist/client/events-client.js.map +1 -0
- package/dist/client/ingestion-client.d.ts +76 -0
- package/dist/client/ingestion-client.d.ts.map +1 -0
- package/dist/client/ingestion-client.js +73 -0
- package/dist/client/ingestion-client.js.map +1 -0
- package/dist/client/search-client.d.ts +97 -0
- package/dist/client/search-client.d.ts.map +1 -0
- package/dist/client/search-client.js +18 -0
- package/dist/client/search-client.js.map +1 -0
- package/dist/config.d.ts +99 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +75 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +312 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/events/track-event.d.ts +394 -0
- package/dist/tools/events/track-event.d.ts.map +1 -0
- package/dist/tools/events/track-event.js +80 -0
- package/dist/tools/events/track-event.js.map +1 -0
- package/dist/tools/events/validate-event.d.ts +94 -0
- package/dist/tools/events/validate-event.d.ts.map +1 -0
- package/dist/tools/events/validate-event.js +51 -0
- package/dist/tools/events/validate-event.js.map +1 -0
- package/dist/tools/ingestion/check-status.d.ts +50 -0
- package/dist/tools/ingestion/check-status.d.ts.map +1 -0
- package/dist/tools/ingestion/check-status.js +27 -0
- package/dist/tools/ingestion/check-status.js.map +1 -0
- package/dist/tools/ingestion/create-document.d.ts +50 -0
- package/dist/tools/ingestion/create-document.d.ts.map +1 -0
- package/dist/tools/ingestion/create-document.js +27 -0
- package/dist/tools/ingestion/create-document.js.map +1 -0
- package/dist/tools/ingestion/delete-document.d.ts +50 -0
- package/dist/tools/ingestion/delete-document.d.ts.map +1 -0
- package/dist/tools/ingestion/delete-document.js +27 -0
- package/dist/tools/ingestion/delete-document.js.map +1 -0
- package/dist/tools/ingestion/ingest-from-source.d.ts +234 -0
- package/dist/tools/ingestion/ingest-from-source.d.ts.map +1 -0
- package/dist/tools/ingestion/ingest-from-source.js +48 -0
- package/dist/tools/ingestion/ingest-from-source.js.map +1 -0
- package/dist/tools/ingestion/update-document.d.ts +62 -0
- package/dist/tools/ingestion/update-document.d.ts.map +1 -0
- package/dist/tools/ingestion/update-document.js +34 -0
- package/dist/tools/ingestion/update-document.js.map +1 -0
- package/dist/tools/search/ai-search.d.ts +132 -0
- package/dist/tools/search/ai-search.d.ts.map +1 -0
- package/dist/tools/search/ai-search.js +65 -0
- package/dist/tools/search/ai-search.js.map +1 -0
- package/dist/tools/search/basic-search.d.ts +98 -0
- package/dist/tools/search/basic-search.d.ts.map +1 -0
- package/dist/tools/search/basic-search.js +51 -0
- package/dist/tools/search/basic-search.js.map +1 -0
- package/dist/tools/search/faceted-search.d.ts +114 -0
- package/dist/tools/search/faceted-search.d.ts.map +1 -0
- package/dist/tools/search/faceted-search.js +52 -0
- package/dist/tools/search/faceted-search.js.map +1 -0
- package/dist/tools/search/recommendations.d.ts +62 -0
- package/dist/tools/search/recommendations.d.ts.map +1 -0
- package/dist/tools/search/recommendations.js +50 -0
- package/dist/tools/search/recommendations.js.map +1 -0
- package/dist/utils/auth-manager.d.ts +60 -0
- package/dist/utils/auth-manager.d.ts.map +1 -0
- package/dist/utils/auth-manager.js +184 -0
- package/dist/utils/auth-manager.js.map +1 -0
- package/dist/utils/errors.d.ts +18 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +58 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +12 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +50 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/schema.d.ts +6 -0
- package/dist/utils/schema.d.ts.map +1 -0
- package/dist/utils/schema.js +14 -0
- package/dist/utils/schema.js.map +1 -0
- 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":"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"}
|
|
@@ -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"}
|
package/dist/config.d.ts
ADDED
|
@@ -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"}
|