@remkoj/optimizely-graph-client 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +13 -0
- package/README.md +135 -0
- package/dist/admin-api/client/OptimizelyGraphAdminApi.d.ts +22 -0
- package/dist/admin-api/client/OptimizelyGraphAdminApi.js +31 -0
- package/dist/admin-api/client/OptimizelyGraphAdminApi.js.map +1 -0
- package/dist/admin-api/client/core/ApiError.d.ts +10 -0
- package/dist/admin-api/client/core/ApiError.js +12 -0
- package/dist/admin-api/client/core/ApiError.js.map +1 -0
- package/dist/admin-api/client/core/ApiRequestOptions.d.ts +13 -0
- package/dist/admin-api/client/core/ApiRequestOptions.js +2 -0
- package/dist/admin-api/client/core/ApiRequestOptions.js.map +1 -0
- package/dist/admin-api/client/core/ApiResult.d.ts +7 -0
- package/dist/admin-api/client/core/ApiResult.js +2 -0
- package/dist/admin-api/client/core/ApiResult.js.map +1 -0
- package/dist/admin-api/client/core/BaseHttpRequest.d.ts +8 -0
- package/dist/admin-api/client/core/BaseHttpRequest.js +6 -0
- package/dist/admin-api/client/core/BaseHttpRequest.js.map +1 -0
- package/dist/admin-api/client/core/CancelablePromise.d.ts +20 -0
- package/dist/admin-api/client/core/CancelablePromise.js +112 -0
- package/dist/admin-api/client/core/CancelablePromise.js.map +1 -0
- package/dist/admin-api/client/core/FetchHttpRequest.d.ts +14 -0
- package/dist/admin-api/client/core/FetchHttpRequest.js +17 -0
- package/dist/admin-api/client/core/FetchHttpRequest.js.map +1 -0
- package/dist/admin-api/client/core/OpenAPI.d.ts +16 -0
- package/dist/admin-api/client/core/OpenAPI.js +12 -0
- package/dist/admin-api/client/core/OpenAPI.js.map +1 -0
- package/dist/admin-api/client/core/request.d.ts +30 -0
- package/dist/admin-api/client/core/request.js +276 -0
- package/dist/admin-api/client/core/request.js.map +1 -0
- package/dist/admin-api/client/index.d.ts +45 -0
- package/dist/admin-api/client/index.js +17 -0
- package/dist/admin-api/client/index.js.map +1 -0
- package/dist/admin-api/client/models/CacheInvalidationConfig.d.ts +3 -0
- package/dist/admin-api/client/models/CacheInvalidationConfig.js +2 -0
- package/dist/admin-api/client/models/CacheInvalidationConfig.js.map +1 -0
- package/dist/admin-api/client/models/ContentTypeDefinition_V2.d.ts +10 -0
- package/dist/admin-api/client/models/ContentTypeDefinition_V2.js +2 -0
- package/dist/admin-api/client/models/ContentTypeDefinition_V2.js.map +1 -0
- package/dist/admin-api/client/models/ContentTypeDefinition_V3.d.ts +11 -0
- package/dist/admin-api/client/models/ContentTypeDefinition_V3.js +2 -0
- package/dist/admin-api/client/models/ContentTypeDefinition_V3.js.map +1 -0
- package/dist/admin-api/client/models/ContentTypeMap_V3.d.ts +2 -0
- package/dist/admin-api/client/models/ContentTypeMap_V3.js +2 -0
- package/dist/admin-api/client/models/ContentTypeMap_V3.js.map +1 -0
- package/dist/admin-api/client/models/ContentTypeProperty_V2.d.ts +5 -0
- package/dist/admin-api/client/models/ContentTypeProperty_V2.js +2 -0
- package/dist/admin-api/client/models/ContentTypeProperty_V2.js.map +1 -0
- package/dist/admin-api/client/models/ContentTypeProperty_V3.d.ts +7 -0
- package/dist/admin-api/client/models/ContentTypeProperty_V3.js +2 -0
- package/dist/admin-api/client/models/ContentTypeProperty_V3.js.map +1 -0
- package/dist/admin-api/client/models/ContentType_V2.d.ts +12 -0
- package/dist/admin-api/client/models/ContentType_V2.js +2 -0
- package/dist/admin-api/client/models/ContentType_V2.js.map +1 -0
- package/dist/admin-api/client/models/ContentType_V3.d.ts +11 -0
- package/dist/admin-api/client/models/ContentType_V3.js +2 -0
- package/dist/admin-api/client/models/ContentType_V3.js.map +1 -0
- package/dist/admin-api/client/models/FilterMap.d.ts +2 -0
- package/dist/admin-api/client/models/FilterMap.js +2 -0
- package/dist/admin-api/client/models/FilterMap.js.map +1 -0
- package/dist/admin-api/client/models/GraphQLRequest.d.ts +6 -0
- package/dist/admin-api/client/models/GraphQLRequest.js +2 -0
- package/dist/admin-api/client/models/GraphQLRequest.js.map +1 -0
- package/dist/admin-api/client/models/GraphQLResponse.d.ts +5 -0
- package/dist/admin-api/client/models/GraphQLResponse.js +2 -0
- package/dist/admin-api/client/models/GraphQLResponse.js.map +1 -0
- package/dist/admin-api/client/models/LinkMap.d.ts +2 -0
- package/dist/admin-api/client/models/LinkMap.js +2 -0
- package/dist/admin-api/client/models/LinkMap.js.map +1 -0
- package/dist/admin-api/client/models/LinkProperty.d.ts +4 -0
- package/dist/admin-api/client/models/LinkProperty.js +2 -0
- package/dist/admin-api/client/models/LinkProperty.js.map +1 -0
- package/dist/admin-api/client/models/OperationMap.d.ts +4 -0
- package/dist/admin-api/client/models/OperationMap.js +2 -0
- package/dist/admin-api/client/models/OperationMap.js.map +1 -0
- package/dist/admin-api/client/models/Optional_string_.d.ts +1 -0
- package/dist/admin-api/client/models/Optional_string_.js +2 -0
- package/dist/admin-api/client/models/Optional_string_.js.map +1 -0
- package/dist/admin-api/client/models/Partial_Record_FieldKeys_OperationMap__.d.ts +8 -0
- package/dist/admin-api/client/models/Partial_Record_FieldKeys_OperationMap__.js +2 -0
- package/dist/admin-api/client/models/Partial_Record_FieldKeys_OperationMap__.js.map +1 -0
- package/dist/admin-api/client/models/PropertyTypeMap_V3.d.ts +2 -0
- package/dist/admin-api/client/models/PropertyTypeMap_V3.js +2 -0
- package/dist/admin-api/client/models/PropertyTypeMap_V3.js.map +1 -0
- package/dist/admin-api/client/models/PropertyType_V2.d.ts +5 -0
- package/dist/admin-api/client/models/PropertyType_V2.js +2 -0
- package/dist/admin-api/client/models/PropertyType_V2.js.map +1 -0
- package/dist/admin-api/client/models/PropertyType_V3.d.ts +4 -0
- package/dist/admin-api/client/models/PropertyType_V3.js +2 -0
- package/dist/admin-api/client/models/PropertyType_V3.js.map +1 -0
- package/dist/admin-api/client/models/Property_V2.d.ts +6 -0
- package/dist/admin-api/client/models/Property_V2.js +2 -0
- package/dist/admin-api/client/models/Property_V2.js.map +1 -0
- package/dist/admin-api/client/models/Property_V3.d.ts +5 -0
- package/dist/admin-api/client/models/Property_V3.js +2 -0
- package/dist/admin-api/client/models/Property_V3.js.map +1 -0
- package/dist/admin-api/client/models/Record_string_any_.d.ts +4 -0
- package/dist/admin-api/client/models/Record_string_any_.js +2 -0
- package/dist/admin-api/client/models/Record_string_any_.js.map +1 -0
- package/dist/admin-api/client/models/Record_string_string_.d.ts +4 -0
- package/dist/admin-api/client/models/Record_string_string_.js +2 -0
- package/dist/admin-api/client/models/Record_string_string_.js.map +1 -0
- package/dist/admin-api/client/models/Request.d.ts +6 -0
- package/dist/admin-api/client/models/Request.js +2 -0
- package/dist/admin-api/client/models/Request.js.map +1 -0
- package/dist/admin-api/client/models/RequestLog.d.ts +15 -0
- package/dist/admin-api/client/models/RequestLog.js +2 -0
- package/dist/admin-api/client/models/RequestLog.js.map +1 -0
- package/dist/admin-api/client/models/SourceInfo.d.ts +5 -0
- package/dist/admin-api/client/models/SourceInfo.js +2 -0
- package/dist/admin-api/client/models/SourceInfo.js.map +1 -0
- package/dist/admin-api/client/models/SourceInfoMap.d.ts +2 -0
- package/dist/admin-api/client/models/SourceInfoMap.js +2 -0
- package/dist/admin-api/client/models/SourceInfoMap.js.map +1 -0
- package/dist/admin-api/client/models/StopwordsBody.d.ts +1 -0
- package/dist/admin-api/client/models/StopwordsBody.js +2 -0
- package/dist/admin-api/client/models/StopwordsBody.js.map +1 -0
- package/dist/admin-api/client/models/SynonymsBody.d.ts +1 -0
- package/dist/admin-api/client/models/SynonymsBody.js +2 -0
- package/dist/admin-api/client/models/SynonymsBody.js.map +1 -0
- package/dist/admin-api/client/models/TokenClaims.d.ts +4 -0
- package/dist/admin-api/client/models/TokenClaims.js +2 -0
- package/dist/admin-api/client/models/TokenClaims.js.map +1 -0
- package/dist/admin-api/client/models/Webhook.d.ts +4 -0
- package/dist/admin-api/client/models/Webhook.js +2 -0
- package/dist/admin-api/client/models/Webhook.js.map +1 -0
- package/dist/admin-api/client/models/WebhookPayload.d.ts +12 -0
- package/dist/admin-api/client/models/WebhookPayload.js +2 -0
- package/dist/admin-api/client/models/WebhookPayload.js.map +1 -0
- package/dist/admin-api/client/services/DefinitionV2Service.d.ts +34 -0
- package/dist/admin-api/client/services/DefinitionV2Service.js +62 -0
- package/dist/admin-api/client/services/DefinitionV2Service.js.map +1 -0
- package/dist/admin-api/client/services/DefinitionV3Service.d.ts +51 -0
- package/dist/admin-api/client/services/DefinitionV3Service.js +97 -0
- package/dist/admin-api/client/services/DefinitionV3Service.js.map +1 -0
- package/dist/admin-api/client/services/LogsService.d.ts +19 -0
- package/dist/admin-api/client/services/LogsService.js +30 -0
- package/dist/admin-api/client/services/LogsService.js.map +1 -0
- package/dist/admin-api/client/services/OidcService.d.ts +22 -0
- package/dist/admin-api/client/services/OidcService.js +33 -0
- package/dist/admin-api/client/services/OidcService.js.map +1 -0
- package/dist/admin-api/client/services/QueryGraphQlService.d.ts +27 -0
- package/dist/admin-api/client/services/QueryGraphQlService.js +43 -0
- package/dist/admin-api/client/services/QueryGraphQlService.js.map +1 -0
- package/dist/admin-api/client/services/ResourcesService.d.ts +30 -0
- package/dist/admin-api/client/services/ResourcesService.js +49 -0
- package/dist/admin-api/client/services/ResourcesService.js.map +1 -0
- package/dist/admin-api/client/services/WebhooksService.d.ts +42 -0
- package/dist/admin-api/client/services/WebhooksService.js +70 -0
- package/dist/admin-api/client/services/WebhooksService.js.map +1 -0
- package/dist/admin-api/index.d.ts +6 -0
- package/dist/admin-api/index.js +25 -0
- package/dist/admin-api/index.js.map +1 -0
- package/dist/admin-api/request.d.ts +5 -0
- package/dist/admin-api/request.js +32 -0
- package/dist/admin-api/request.js.map +1 -0
- package/dist/client/client.d.ts +36 -0
- package/dist/client/client.js +200 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/hmac-fetch.d.ts +3 -0
- package/dist/client/hmac-fetch.js +52 -0
- package/dist/client/hmac-fetch.js.map +1 -0
- package/dist/client/index.d.ts +4 -0
- package/dist/client/index.js +5 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/types.d.ts +67 -0
- package/dist/client/types.js +8 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/utils.d.ts +6 -0
- package/dist/client/utils.js +32 -0
- package/dist/client/utils.js.map +1 -0
- package/dist/codegen.d.ts +10 -0
- package/dist/codegen.js +18 -0
- package/dist/codegen.js.map +1 -0
- package/dist/config.d.ts +12 -0
- package/dist/config.js +97 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/services/channel-repository/definition.d.ts +86 -0
- package/dist/services/channel-repository/definition.js +125 -0
- package/dist/services/channel-repository/definition.js.map +1 -0
- package/dist/services/channel-repository/index.d.ts +2 -0
- package/dist/services/channel-repository/index.js +3 -0
- package/dist/services/channel-repository/index.js.map +1 -0
- package/dist/services/channel-repository/queries.d.ts +3 -0
- package/dist/services/channel-repository/queries.js +93 -0
- package/dist/services/channel-repository/queries.js.map +1 -0
- package/dist/services/channel-repository/repository.d.ts +15 -0
- package/dist/services/channel-repository/repository.js +75 -0
- package/dist/services/channel-repository/repository.js.map +1 -0
- package/dist/services/channel-repository/types.d.ts +26 -0
- package/dist/services/channel-repository/types.js +2 -0
- package/dist/services/channel-repository/types.js.map +1 -0
- package/dist/services/index.d.ts +4 -0
- package/dist/services/index.js +3 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/routing/index.d.ts +83 -0
- package/dist/services/routing/index.js +243 -0
- package/dist/services/routing/index.js.map +1 -0
- package/dist/services/routing/types.d.ts +25 -0
- package/dist/services/routing/types.js +2 -0
- package/dist/services/routing/types.js.map +1 -0
- package/dist/types.d.ts +39 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export class QueryGraphQlService {
|
|
2
|
+
constructor(httpRequest) {
|
|
3
|
+
this.httpRequest = httpRequest;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Execute graphql query
|
|
7
|
+
* Retrieve content respect to graphql query
|
|
8
|
+
* @param query
|
|
9
|
+
* @param mutation
|
|
10
|
+
* @param operationName
|
|
11
|
+
* @param variables
|
|
12
|
+
* @returns GraphQLResponse Returns query result
|
|
13
|
+
* @throws ApiError
|
|
14
|
+
*/
|
|
15
|
+
getGraphQlv2Handler(query, mutation, operationName, variables) {
|
|
16
|
+
return this.httpRequest.request({
|
|
17
|
+
method: 'GET',
|
|
18
|
+
url: '/content/v2',
|
|
19
|
+
query: {
|
|
20
|
+
'query': query,
|
|
21
|
+
'mutation': mutation,
|
|
22
|
+
'operationName': operationName,
|
|
23
|
+
'variables': variables,
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Execute graphql query
|
|
29
|
+
* Retrieve content respect to graphql query
|
|
30
|
+
* @param requestBody
|
|
31
|
+
* @returns GraphQLResponse Returns query result
|
|
32
|
+
* @throws ApiError
|
|
33
|
+
*/
|
|
34
|
+
postGraphQlv2Handler(requestBody) {
|
|
35
|
+
return this.httpRequest.request({
|
|
36
|
+
method: 'POST',
|
|
37
|
+
url: '/content/v2',
|
|
38
|
+
body: requestBody,
|
|
39
|
+
mediaType: 'application/json',
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=QueryGraphQlService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryGraphQlService.js","sourceRoot":"","sources":["../../../../src/admin-api/client/services/QueryGraphQlService.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,mBAAmB;IAC5B,YAA4B,WAA4B;QAA5B,gBAAW,GAAX,WAAW,CAAiB;IAAG,CAAC;IAC5D;;;;;;;;;OASG;IACI,mBAAmB,CACtB,KAAc,EACd,QAAiB,EACjB,aAAsB,EACtB,SAAkB;QAElB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAC5B,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,aAAa;YAClB,KAAK,EAAE;gBACH,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,QAAQ;gBACpB,eAAe,EAAE,aAAa;gBAC9B,WAAW,EAAE,SAAS;aACzB;SACJ,CAAC,CAAC;IACP,CAAC;IACD;;;;;;OAMG;IACI,oBAAoB,CACvB,WAA4B;QAE5B,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAC5B,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,aAAa;YAClB,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,kBAAkB;SAChC,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { StopwordsBody } from '../models/StopwordsBody.js';
|
|
2
|
+
import type { SynonymsBody } from '../models/SynonymsBody.js';
|
|
3
|
+
import type { CancelablePromise } from '../core/CancelablePromise.js';
|
|
4
|
+
import type { BaseHttpRequest } from '../core/BaseHttpRequest.js';
|
|
5
|
+
export declare class ResourcesService {
|
|
6
|
+
readonly httpRequest: BaseHttpRequest;
|
|
7
|
+
constructor(httpRequest: BaseHttpRequest);
|
|
8
|
+
/**
|
|
9
|
+
* Store stop words
|
|
10
|
+
* Stop words are the words in a stop list (or stop list or negative dictionary) which are filtered out (stopped) before or after processing of natural language data (text) because they are insignificant
|
|
11
|
+
* @param requestBody
|
|
12
|
+
* @param languageRouting
|
|
13
|
+
* @returns void
|
|
14
|
+
* @throws ApiError
|
|
15
|
+
*/
|
|
16
|
+
upsertStopwordHandler(requestBody: StopwordsBody, languageRouting?: string): CancelablePromise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Store synonyms
|
|
19
|
+
* When you write a query, you can use synonyms to expand the keywords to get results that users otherwise may not have found.
|
|
20
|
+
* This reduces the problem of getting too few or no results, leading to fewer chances of conversions or even search abandonment.
|
|
21
|
+
* For example, if you search for "H2O", you mat want to find results that contain "water".
|
|
22
|
+
* This happens when you store synonyms in Optimizely Graph and enable them per field in your query. Otherwise, many relevant results may not be retrieved.
|
|
23
|
+
* @param requestBody
|
|
24
|
+
* @param languageRouting
|
|
25
|
+
* @param synonymSlot
|
|
26
|
+
* @returns void
|
|
27
|
+
* @throws ApiError
|
|
28
|
+
*/
|
|
29
|
+
upsertSynonymHandler(requestBody: SynonymsBody, languageRouting?: string, synonymSlot?: 'one' | 'two'): CancelablePromise<void>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export class ResourcesService {
|
|
2
|
+
constructor(httpRequest) {
|
|
3
|
+
this.httpRequest = httpRequest;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Store stop words
|
|
7
|
+
* Stop words are the words in a stop list (or stop list or negative dictionary) which are filtered out (stopped) before or after processing of natural language data (text) because they are insignificant
|
|
8
|
+
* @param requestBody
|
|
9
|
+
* @param languageRouting
|
|
10
|
+
* @returns void
|
|
11
|
+
* @throws ApiError
|
|
12
|
+
*/
|
|
13
|
+
upsertStopwordHandler(requestBody, languageRouting) {
|
|
14
|
+
return this.httpRequest.request({
|
|
15
|
+
method: 'PUT',
|
|
16
|
+
url: '/resources/stopwords',
|
|
17
|
+
query: {
|
|
18
|
+
'language_routing': languageRouting,
|
|
19
|
+
},
|
|
20
|
+
body: requestBody,
|
|
21
|
+
mediaType: 'text/plain',
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Store synonyms
|
|
26
|
+
* When you write a query, you can use synonyms to expand the keywords to get results that users otherwise may not have found.
|
|
27
|
+
* This reduces the problem of getting too few or no results, leading to fewer chances of conversions or even search abandonment.
|
|
28
|
+
* For example, if you search for "H2O", you mat want to find results that contain "water".
|
|
29
|
+
* This happens when you store synonyms in Optimizely Graph and enable them per field in your query. Otherwise, many relevant results may not be retrieved.
|
|
30
|
+
* @param requestBody
|
|
31
|
+
* @param languageRouting
|
|
32
|
+
* @param synonymSlot
|
|
33
|
+
* @returns void
|
|
34
|
+
* @throws ApiError
|
|
35
|
+
*/
|
|
36
|
+
upsertSynonymHandler(requestBody, languageRouting, synonymSlot = 'one') {
|
|
37
|
+
return this.httpRequest.request({
|
|
38
|
+
method: 'PUT',
|
|
39
|
+
url: '/resources/synonyms',
|
|
40
|
+
query: {
|
|
41
|
+
'language_routing': languageRouting,
|
|
42
|
+
'synonym_slot': synonymSlot,
|
|
43
|
+
},
|
|
44
|
+
body: requestBody,
|
|
45
|
+
mediaType: 'text/plain',
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=ResourcesService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResourcesService.js","sourceRoot":"","sources":["../../../../src/admin-api/client/services/ResourcesService.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,gBAAgB;IACzB,YAA4B,WAA4B;QAA5B,gBAAW,GAAX,WAAW,CAAiB;IAAG,CAAC;IAC5D;;;;;;;OAOG;IACI,qBAAqB,CACxB,WAA0B,EAC1B,eAAwB;QAExB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAC5B,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,sBAAsB;YAC3B,KAAK,EAAE;gBACH,kBAAkB,EAAE,eAAe;aACtC;YACD,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,YAAY;SAC1B,CAAC,CAAC;IACP,CAAC;IACD;;;;;;;;;;;OAWG;IACI,oBAAoB,CACvB,WAAyB,EACzB,eAAwB,EACxB,cAA6B,KAAK;QAElC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAC5B,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,qBAAqB;YAC1B,KAAK,EAAE;gBACH,kBAAkB,EAAE,eAAe;gBACnC,cAAc,EAAE,WAAW;aAC9B;YACD,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,YAAY;SAC1B,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Webhook } from '../models/Webhook.js';
|
|
2
|
+
import type { WebhookPayload } from '../models/WebhookPayload.js';
|
|
3
|
+
import type { CancelablePromise } from '../core/CancelablePromise.js';
|
|
4
|
+
import type { BaseHttpRequest } from '../core/BaseHttpRequest.js';
|
|
5
|
+
export declare class WebhooksService {
|
|
6
|
+
readonly httpRequest: BaseHttpRequest;
|
|
7
|
+
constructor(httpRequest: BaseHttpRequest);
|
|
8
|
+
/**
|
|
9
|
+
* List all registered webhooks
|
|
10
|
+
* List all registered webhooks
|
|
11
|
+
* @returns Webhook Ok
|
|
12
|
+
* @throws ApiError
|
|
13
|
+
*/
|
|
14
|
+
listWebhookHandler(): CancelablePromise<Array<Webhook>>;
|
|
15
|
+
/**
|
|
16
|
+
* Register a webhook
|
|
17
|
+
* Register a webhook and listen events respect to filter definition.
|
|
18
|
+
*
|
|
19
|
+
* If no filter is provided then all events will be listened.
|
|
20
|
+
* @param requestBody
|
|
21
|
+
* @returns void
|
|
22
|
+
* @throws ApiError
|
|
23
|
+
*/
|
|
24
|
+
createWebhookHandler(requestBody: WebhookPayload): CancelablePromise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Delete a registered webhook
|
|
27
|
+
* Delete a registered webhook respect to `id` parameter
|
|
28
|
+
* @param id
|
|
29
|
+
* @returns void
|
|
30
|
+
* @throws ApiError
|
|
31
|
+
*/
|
|
32
|
+
deleteWebhookHandler(id: string): CancelablePromise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Update a registered webhook
|
|
35
|
+
* Update a registered webhook respect to `id` parameter
|
|
36
|
+
* @param id
|
|
37
|
+
* @param requestBody
|
|
38
|
+
* @returns void
|
|
39
|
+
* @throws ApiError
|
|
40
|
+
*/
|
|
41
|
+
updateWebhookHandler(id: string, requestBody: WebhookPayload): CancelablePromise<void>;
|
|
42
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
export class WebhooksService {
|
|
2
|
+
constructor(httpRequest) {
|
|
3
|
+
this.httpRequest = httpRequest;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* List all registered webhooks
|
|
7
|
+
* List all registered webhooks
|
|
8
|
+
* @returns Webhook Ok
|
|
9
|
+
* @throws ApiError
|
|
10
|
+
*/
|
|
11
|
+
listWebhookHandler() {
|
|
12
|
+
return this.httpRequest.request({
|
|
13
|
+
method: 'GET',
|
|
14
|
+
url: '/api/webhooks',
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Register a webhook
|
|
19
|
+
* Register a webhook and listen events respect to filter definition.
|
|
20
|
+
*
|
|
21
|
+
* If no filter is provided then all events will be listened.
|
|
22
|
+
* @param requestBody
|
|
23
|
+
* @returns void
|
|
24
|
+
* @throws ApiError
|
|
25
|
+
*/
|
|
26
|
+
createWebhookHandler(requestBody) {
|
|
27
|
+
return this.httpRequest.request({
|
|
28
|
+
method: 'POST',
|
|
29
|
+
url: '/api/webhooks',
|
|
30
|
+
body: requestBody,
|
|
31
|
+
mediaType: 'application/json',
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Delete a registered webhook
|
|
36
|
+
* Delete a registered webhook respect to `id` parameter
|
|
37
|
+
* @param id
|
|
38
|
+
* @returns void
|
|
39
|
+
* @throws ApiError
|
|
40
|
+
*/
|
|
41
|
+
deleteWebhookHandler(id) {
|
|
42
|
+
return this.httpRequest.request({
|
|
43
|
+
method: 'DELETE',
|
|
44
|
+
url: '/api/webhooks/{id}',
|
|
45
|
+
path: {
|
|
46
|
+
'id': id,
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Update a registered webhook
|
|
52
|
+
* Update a registered webhook respect to `id` parameter
|
|
53
|
+
* @param id
|
|
54
|
+
* @param requestBody
|
|
55
|
+
* @returns void
|
|
56
|
+
* @throws ApiError
|
|
57
|
+
*/
|
|
58
|
+
updateWebhookHandler(id, requestBody) {
|
|
59
|
+
return this.httpRequest.request({
|
|
60
|
+
method: 'PUT',
|
|
61
|
+
url: '/api/webhooks/{id}',
|
|
62
|
+
path: {
|
|
63
|
+
'id': id,
|
|
64
|
+
},
|
|
65
|
+
body: requestBody,
|
|
66
|
+
mediaType: 'application/json',
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=WebhooksService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebhooksService.js","sourceRoot":"","sources":["../../../../src/admin-api/client/services/WebhooksService.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,eAAe;IACxB,YAA4B,WAA4B;QAA5B,gBAAW,GAAX,WAAW,CAAiB;IAAG,CAAC;IAC5D;;;;;OAKG;IACI,kBAAkB;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAC5B,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,eAAe;SACvB,CAAC,CAAC;IACP,CAAC;IACD;;;;;;;;OAQG;IACI,oBAAoB,CACvB,WAA2B;QAE3B,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAC5B,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,eAAe;YACpB,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,kBAAkB;SAChC,CAAC,CAAC;IACP,CAAC;IACD;;;;;;OAMG;IACI,oBAAoB,CACvB,EAAU;QAEV,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAC5B,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,oBAAoB;YACzB,IAAI,EAAE;gBACF,IAAI,EAAE,EAAE;aACX;SACJ,CAAC,CAAC;IACP,CAAC;IACD;;;;;;;OAOG;IACI,oBAAoB,CACvB,EAAU,EACV,WAA2B;QAE3B,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAC5B,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,oBAAoB;YACzB,IAAI,EAAE;gBACF,IAAI,EAAE,EAAE;aACX;YACD,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,kBAAkB;SAChC,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type OptimizelyGraphConfig } from '../config.js';
|
|
2
|
+
import { OptimizelyGraphAdminApi, type ApiError } from './client/index.js';
|
|
3
|
+
export * from './client/index.js';
|
|
4
|
+
export declare function isApiError(error: any): error is ApiError;
|
|
5
|
+
export declare function createClient(config?: OptimizelyGraphConfig): OptimizelyGraphAdminApi;
|
|
6
|
+
export default createClient;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { readEnvironmentVariables, applyConfigDefaults, validateConfig } from '../config.js';
|
|
2
|
+
import { OptimizelyGraphAdminApi } from './client/index.js';
|
|
3
|
+
export * from './client/index.js';
|
|
4
|
+
export function isApiError(error) {
|
|
5
|
+
if (typeof error != 'object' || error == null)
|
|
6
|
+
return false;
|
|
7
|
+
return typeof error.status == 'number' && typeof error.url == 'string';
|
|
8
|
+
}
|
|
9
|
+
export function createClient(config) {
|
|
10
|
+
const graphConfig = applyConfigDefaults(config ?? readEnvironmentVariables());
|
|
11
|
+
if (!validateConfig(graphConfig, true))
|
|
12
|
+
throw new Error("The Optimizely Graph Admin API requires the App Key and Secret to be defined");
|
|
13
|
+
const client = new OptimizelyGraphAdminApi({
|
|
14
|
+
BASE: graphConfig.gateway,
|
|
15
|
+
CREDENTIALS: "include",
|
|
16
|
+
USERNAME: graphConfig.app_key,
|
|
17
|
+
PASSWORD: graphConfig.secret,
|
|
18
|
+
HEADERS: {
|
|
19
|
+
"X-Client": "@RemkoJ/OptimizelyGraphClient",
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
return client;
|
|
23
|
+
}
|
|
24
|
+
export default createClient;
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin-api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,cAAc,EAA8B,MAAM,cAAc,CAAA;AACxH,OAAO,EAAE,uBAAuB,EAAiB,MAAM,mBAAmB,CAAA;AAE1E,cAAe,mBAAmB,CAAA;AAElC,MAAM,UAAU,UAAU,CAAC,KAAU;IAEjC,IAAI,OAAO,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,IAAI;QACzC,OAAO,KAAK,CAAA;IAChB,OAAO,OAAQ,KAAkB,CAAC,MAAM,IAAI,QAAQ,IAAI,OAAQ,KAAkB,CAAC,GAAG,IAAI,QAAQ,CAAA;AACtG,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAA8B;IAEvD,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,IAAI,wBAAwB,EAAE,CAAC,CAAA;IAC7E,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;IAEnG,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC;QACvC,IAAI,EAAE,WAAW,CAAC,OAAO;QACzB,WAAW,EAAE,SAAS;QACtB,QAAQ,EAAE,WAAW,CAAC,OAAO;QAC7B,QAAQ,EAAE,WAAW,CAAC,MAAM;QAC5B,OAAO,EAAE;YACL,UAAU,EAAE,+BAA+B;SAC9C;KACJ,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,eAAe,YAAY,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ApiRequestOptions } from './client/core/ApiRequestOptions.js';
|
|
2
|
+
import { CancelablePromise } from './client/core/CancelablePromise.js';
|
|
3
|
+
import type { OpenAPIConfig } from './client/core/OpenAPI.js';
|
|
4
|
+
export declare const request: <T>(config: OpenAPIConfig, options: ApiRequestOptions) => CancelablePromise<T>;
|
|
5
|
+
export default request;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { CancelablePromise } from './client/core/CancelablePromise.js';
|
|
2
|
+
export const request = (config, options) => {
|
|
3
|
+
return new CancelablePromise((resolve, reject, onCancel) => {
|
|
4
|
+
const cancelToken = new AbortController();
|
|
5
|
+
onCancel(() => cancelToken.abort("Request aborted"));
|
|
6
|
+
/*
|
|
7
|
+
// Get the request URL. Depending on your needs, this might need additional processing,
|
|
8
|
+
// @see ./src/templates/core/functions/getUrl.hbs
|
|
9
|
+
const url = `${config.BASE}${options.path}`;
|
|
10
|
+
|
|
11
|
+
// Optional: Get and link the cancelation token, so the request can be aborted.
|
|
12
|
+
const source = axiosInstance.CancelToken.source();
|
|
13
|
+
onCancel(() => source.cancel('The user aborted a request.'));
|
|
14
|
+
|
|
15
|
+
// Execute the request. This is a minimal example, in real world scenarios
|
|
16
|
+
// you will need to add headers, process form data, etc.
|
|
17
|
+
// @see ./src/templates/core/axios/request.hbs
|
|
18
|
+
axiosInstance.request({
|
|
19
|
+
url,
|
|
20
|
+
data: options.body,
|
|
21
|
+
method: options.method,
|
|
22
|
+
cancelToken: source.token,
|
|
23
|
+
}).then(data => {
|
|
24
|
+
resolve(data);
|
|
25
|
+
}).catch(error => {
|
|
26
|
+
reject(error);
|
|
27
|
+
});
|
|
28
|
+
*/
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
export default request;
|
|
32
|
+
//# sourceMappingURL=request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/admin-api/request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAKtE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,MAAqB,EAAE,OAA0B,EAAwB,EAAE;IAClG,OAAO,IAAI,iBAAiB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;QAEvD,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAA;QACzC,QAAQ,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAA;QAEpD;;;;;;;;;;;;;;;;;;;;;;UAsBE;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,eAAe,OAAO,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type OptimizelyGraphConfigInternal, type OptimizelyGraphConfig } from "../config.js";
|
|
2
|
+
import { GraphQLClient } from "graphql-request";
|
|
3
|
+
import { AuthMode, type RequestMethod, type IOptiGraphClient, type OptiGraphSiteInfo, type IOptiGraphClientFlags } from "./types.js";
|
|
4
|
+
import { type FetchAPI } from "./hmac-fetch.js";
|
|
5
|
+
export declare class ContentGraphClient extends GraphQLClient implements IOptiGraphClient {
|
|
6
|
+
static readonly ForceHmacToken: string;
|
|
7
|
+
static readonly ForceBasicAuth: string;
|
|
8
|
+
protected readonly _config: Readonly<OptimizelyGraphConfigInternal>;
|
|
9
|
+
private _token;
|
|
10
|
+
private _hmacFetch;
|
|
11
|
+
private _flags;
|
|
12
|
+
get debug(): boolean;
|
|
13
|
+
protected get token(): string | undefined;
|
|
14
|
+
protected set token(newValue: string | undefined);
|
|
15
|
+
protected get hmacFetch(): FetchAPI;
|
|
16
|
+
get siteInfo(): OptiGraphSiteInfo;
|
|
17
|
+
get currentAuthMode(): AuthMode;
|
|
18
|
+
constructor(config?: OptimizelyGraphConfig, token?: AuthMode | string | undefined, flags?: Partial<IOptiGraphClientFlags>);
|
|
19
|
+
/**
|
|
20
|
+
* Update the authentication data for this client.
|
|
21
|
+
* - Set to AuthMode.HMAC or AuthMode.Basic to use that authentication scheme, this requires the AppKey and Secret to be part of the configuration
|
|
22
|
+
* - Set to the actual token to be used to switch to AuthMode.Token
|
|
23
|
+
* - Set to undefined or AuthMode.Public to switch to public, read-only mode. (i.e. using the SingleKey)
|
|
24
|
+
*
|
|
25
|
+
* @param tokenOrAuthmode The authentication mode/token to be used
|
|
26
|
+
* @returns The client itself
|
|
27
|
+
*/
|
|
28
|
+
updateAuthentication(tokenOrAuthmode?: string | AuthMode | undefined): ContentGraphClient;
|
|
29
|
+
query: RequestMethod;
|
|
30
|
+
private _oldFlags;
|
|
31
|
+
updateFlags(newFlags: Partial<IOptiGraphClientFlags>, temporary?: boolean): IOptiGraphClient;
|
|
32
|
+
restoreFlags(): IOptiGraphClient;
|
|
33
|
+
protected updateRequestConfig(): void;
|
|
34
|
+
}
|
|
35
|
+
export declare const createClient: (config?: OptimizelyGraphConfig, token?: string | undefined) => IOptiGraphClient;
|
|
36
|
+
export default ContentGraphClient;
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { readEnvironmentVariables, applyConfigDefaults, validateConfig } from "../config.js";
|
|
2
|
+
import { GraphQLClient } from "graphql-request";
|
|
3
|
+
import { AuthMode } from "./types.js";
|
|
4
|
+
import createHmacFetch from "./hmac-fetch.js";
|
|
5
|
+
import { base64encode, isError, validateToken, getAuthMode } from "./utils.js";
|
|
6
|
+
const defaultFlags = {
|
|
7
|
+
queryCache: true,
|
|
8
|
+
cache: true,
|
|
9
|
+
recursive: false
|
|
10
|
+
};
|
|
11
|
+
export class ContentGraphClient extends GraphQLClient {
|
|
12
|
+
get debug() {
|
|
13
|
+
return this._config.debug ?? false;
|
|
14
|
+
}
|
|
15
|
+
get token() {
|
|
16
|
+
return this._token;
|
|
17
|
+
}
|
|
18
|
+
set token(newValue) {
|
|
19
|
+
if (!validateToken(newValue))
|
|
20
|
+
throw new Error("Invalid ContentGraph token");
|
|
21
|
+
const newMode = getAuthMode(newValue);
|
|
22
|
+
if ((newMode == AuthMode.Basic || newMode == AuthMode.HMAC) && !validateConfig(this._config, false)) {
|
|
23
|
+
throw new Error("[Optimizely Graph] Configuration is invalid for selected authentication mode");
|
|
24
|
+
}
|
|
25
|
+
if (this.debug)
|
|
26
|
+
console.log(`[Optimizely Graph] Updating token to ${newValue}`);
|
|
27
|
+
this._token = newValue;
|
|
28
|
+
}
|
|
29
|
+
get hmacFetch() {
|
|
30
|
+
if (!this._hmacFetch) {
|
|
31
|
+
if (this._config.app_key == undefined || this._config.secret == undefined)
|
|
32
|
+
throw new Error("Unable to create an authenticated connection, make sure both the AppKey & Secret are configured");
|
|
33
|
+
this._hmacFetch = createHmacFetch(this._config.app_key, this._config.secret);
|
|
34
|
+
}
|
|
35
|
+
return this._hmacFetch;
|
|
36
|
+
}
|
|
37
|
+
get siteInfo() {
|
|
38
|
+
return {
|
|
39
|
+
frontendDomain: this._config.deploy_domain,
|
|
40
|
+
cmsURL: this._config.dxp_url
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
get currentAuthMode() {
|
|
44
|
+
return getAuthMode(this._token);
|
|
45
|
+
}
|
|
46
|
+
constructor(config, token = undefined, flags) {
|
|
47
|
+
const configFlags = { ...defaultFlags, ...flags };
|
|
48
|
+
// Validate inputs
|
|
49
|
+
const optiConfig = applyConfigDefaults(config ?? readEnvironmentVariables());
|
|
50
|
+
if (!validateToken(token))
|
|
51
|
+
throw new Error("Invalid ContentGraph token");
|
|
52
|
+
const authMode = getAuthMode(token);
|
|
53
|
+
if (!validateConfig(optiConfig, authMode == AuthMode.Public || authMode == AuthMode.Token, true))
|
|
54
|
+
throw new Error("Invalid ContentGraph configuration");
|
|
55
|
+
// Create instance
|
|
56
|
+
const QUERY_LOG = optiConfig.query_log ?? false;
|
|
57
|
+
const serviceUrl = new URL("/content/v2", optiConfig.gateway);
|
|
58
|
+
if (configFlags.queryCache)
|
|
59
|
+
serviceUrl.searchParams.set('stored', 'true');
|
|
60
|
+
super(serviceUrl.href, {
|
|
61
|
+
credentials: "include",
|
|
62
|
+
method: "post",
|
|
63
|
+
requestMiddleware: request => {
|
|
64
|
+
if (QUERY_LOG) {
|
|
65
|
+
console.log(`[Optimizely Graph] [Request Query] ${request.body}`);
|
|
66
|
+
console.log(`[Optimizely Graph] [Request Variables] ${JSON.stringify(request.variables)}`);
|
|
67
|
+
}
|
|
68
|
+
return request;
|
|
69
|
+
},
|
|
70
|
+
responseMiddleware: response => {
|
|
71
|
+
if (isError(response)) {
|
|
72
|
+
console.error(`[Optimizely Graph] [Error] ${response.name} => ${response.message}`);
|
|
73
|
+
}
|
|
74
|
+
else if (response.errors) {
|
|
75
|
+
response.errors.forEach(({ message, locations, path, name, source }) => {
|
|
76
|
+
const locationList = (locations ?? []).map(loc => {
|
|
77
|
+
return `[Line: ${loc.line}, Column: ${loc.column}]`;
|
|
78
|
+
}).join("; ");
|
|
79
|
+
const errorName = name && name != 'undefined' ? ` ${name}` : "";
|
|
80
|
+
const sourceInfo = source?.body ?? "";
|
|
81
|
+
const sourceName = source?.name ? ` in ${source.name}` : "";
|
|
82
|
+
console.error(`[Optimizely Graph] [GraphQL${errorName} error${sourceName}]:\n Message: ${message}\n Location: ${locationList}\n Path: ${path}\n Query: ${sourceInfo}`);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
else if (QUERY_LOG) {
|
|
86
|
+
console.log(`[Optimizely Graph] [Response Data] ${JSON.stringify(response.data)}`);
|
|
87
|
+
console.log(`[Optimizely Graph] [Response Cost] ${JSON.stringify(response.extensions?.cost || 0)}`);
|
|
88
|
+
}
|
|
89
|
+
return response;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
this.query = (...args) => {
|
|
93
|
+
//@ts-expect-error
|
|
94
|
+
return this.request(...args);
|
|
95
|
+
};
|
|
96
|
+
this._oldFlags = undefined;
|
|
97
|
+
// Set variables
|
|
98
|
+
this._config = optiConfig;
|
|
99
|
+
this._token = token;
|
|
100
|
+
this._flags = configFlags;
|
|
101
|
+
this.updateRequestConfig();
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Update the authentication data for this client.
|
|
105
|
+
* - Set to AuthMode.HMAC or AuthMode.Basic to use that authentication scheme, this requires the AppKey and Secret to be part of the configuration
|
|
106
|
+
* - Set to the actual token to be used to switch to AuthMode.Token
|
|
107
|
+
* - Set to undefined or AuthMode.Public to switch to public, read-only mode. (i.e. using the SingleKey)
|
|
108
|
+
*
|
|
109
|
+
* @param tokenOrAuthmode The authentication mode/token to be used
|
|
110
|
+
* @returns The client itself
|
|
111
|
+
*/
|
|
112
|
+
updateAuthentication(tokenOrAuthmode) {
|
|
113
|
+
if (tokenOrAuthmode == AuthMode.Token)
|
|
114
|
+
throw new Error("Provide the authentication token to switch to AuthMode.Token");
|
|
115
|
+
this.token = tokenOrAuthmode == AuthMode.Public ? undefined : tokenOrAuthmode;
|
|
116
|
+
this.updateRequestConfig();
|
|
117
|
+
return this;
|
|
118
|
+
}
|
|
119
|
+
updateFlags(newFlags, temporary = false) {
|
|
120
|
+
// Determine the new flags
|
|
121
|
+
if (this._oldFlags)
|
|
122
|
+
throw new Error("There's a temporary flag update in progress, revert that one first prior to updating the flags");
|
|
123
|
+
if (temporary)
|
|
124
|
+
this._oldFlags = this._flags;
|
|
125
|
+
this._flags = { ...this._flags, ...newFlags };
|
|
126
|
+
if (this.debug)
|
|
127
|
+
console.log(`🔵 [Optimizely Graph] ${temporary ? 'Temporary updating' : 'Updating'} the feature configuration of the client`);
|
|
128
|
+
// Update the request configuration
|
|
129
|
+
this.updateRequestConfig();
|
|
130
|
+
return this;
|
|
131
|
+
}
|
|
132
|
+
restoreFlags() {
|
|
133
|
+
// Restore the flags
|
|
134
|
+
if (!this._oldFlags)
|
|
135
|
+
return this;
|
|
136
|
+
this._flags = this._oldFlags;
|
|
137
|
+
this._oldFlags = undefined;
|
|
138
|
+
if (this.debug)
|
|
139
|
+
console.log(`🔵 [Optimizely Graph] Rolling back the feature configuration of the client`);
|
|
140
|
+
// Update the request configuration
|
|
141
|
+
this.updateRequestConfig();
|
|
142
|
+
return this;
|
|
143
|
+
}
|
|
144
|
+
updateRequestConfig() {
|
|
145
|
+
// Build headers that are shared across authentication modes
|
|
146
|
+
const headers = {
|
|
147
|
+
"X-Client": "@RemkoJ/OptimizelyGraphClient"
|
|
148
|
+
};
|
|
149
|
+
if (this._flags.recursive)
|
|
150
|
+
headers["cg-recursive-enabled"] = "true";
|
|
151
|
+
// Update headers & fetch method
|
|
152
|
+
switch (this.currentAuthMode) {
|
|
153
|
+
case AuthMode.HMAC:
|
|
154
|
+
this.setHeaders(headers);
|
|
155
|
+
this.requestConfig.cache = 'no-store';
|
|
156
|
+
this.requestConfig.fetch = this.hmacFetch;
|
|
157
|
+
break;
|
|
158
|
+
case AuthMode.Basic:
|
|
159
|
+
this.setHeaders({
|
|
160
|
+
...headers,
|
|
161
|
+
Authorization: `Basic ${base64encode(this._config.app_key + ":" + this._config.secret)}`
|
|
162
|
+
});
|
|
163
|
+
this.requestConfig.cache = 'no-store';
|
|
164
|
+
this.requestConfig.fetch = fetch;
|
|
165
|
+
break;
|
|
166
|
+
case AuthMode.Token:
|
|
167
|
+
this.setHeaders({
|
|
168
|
+
...headers,
|
|
169
|
+
Authorization: `Bearer ${this.token}`
|
|
170
|
+
});
|
|
171
|
+
this.requestConfig.cache = 'no-store';
|
|
172
|
+
this.requestConfig.fetch = fetch;
|
|
173
|
+
break;
|
|
174
|
+
default:
|
|
175
|
+
this.setHeaders({
|
|
176
|
+
...headers,
|
|
177
|
+
Authorization: `epi-single ${this._config.single_key}`
|
|
178
|
+
});
|
|
179
|
+
this.requestConfig.fetch = fetch;
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
this.requestConfig.keepalive = false;
|
|
183
|
+
this.requestConfig.credentials = 'omit';
|
|
184
|
+
if (!this._flags.cache) {
|
|
185
|
+
this.requestConfig.cache = 'no-store';
|
|
186
|
+
}
|
|
187
|
+
// Update endpoint
|
|
188
|
+
const serviceUrl = new URL("/content/v2", this._config.gateway);
|
|
189
|
+
serviceUrl.searchParams.set('stored', this._flags.queryCache ? 'true' : 'false');
|
|
190
|
+
serviceUrl.searchParams.set('cache', this._flags.cache ? 'true' : 'false');
|
|
191
|
+
if (this.debug)
|
|
192
|
+
console.log(`🔗 [Optimizely Graph] Setting service endpoint to: ${serviceUrl.href}`);
|
|
193
|
+
this.setEndpoint(serviceUrl.href);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
ContentGraphClient.ForceHmacToken = 'use-hmac';
|
|
197
|
+
ContentGraphClient.ForceBasicAuth = 'use-basic';
|
|
198
|
+
export const createClient = (config, token = undefined) => new ContentGraphClient(config, token);
|
|
199
|
+
export default ContentGraphClient;
|
|
200
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import Base64 from 'crypto-js/enc-base64.js';
|
|
2
|
+
import hmacSHA256 from 'crypto-js/hmac-sha256.js';
|
|
3
|
+
import md5 from 'crypto-js/md5.js';
|
|
4
|
+
export function createHmacFetch(appKey, secret) {
|
|
5
|
+
function isRequest(toTest) {
|
|
6
|
+
if (typeof (toTest) != 'object' || toTest == null)
|
|
7
|
+
return false;
|
|
8
|
+
return toTest.url ? true : false;
|
|
9
|
+
}
|
|
10
|
+
function readStream(stream) {
|
|
11
|
+
return new Promise((resolve, reject) => {
|
|
12
|
+
console.warn("Using readStream");
|
|
13
|
+
const reader = stream.getReader();
|
|
14
|
+
const data = [];
|
|
15
|
+
reader.read().then(({ value, done }) => {
|
|
16
|
+
if (value != undefined)
|
|
17
|
+
data.push(value);
|
|
18
|
+
if (done) {
|
|
19
|
+
reader.releaseLock();
|
|
20
|
+
resolve(data);
|
|
21
|
+
}
|
|
22
|
+
}).catch(e => {
|
|
23
|
+
try {
|
|
24
|
+
reader.releaseLock();
|
|
25
|
+
}
|
|
26
|
+
catch { }
|
|
27
|
+
reject(e);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return async function newFetch(input, init) {
|
|
32
|
+
//#region HMAC Signature
|
|
33
|
+
const url = new URL(isRequest(input) ? input.url : input.toString());
|
|
34
|
+
const method = (isRequest(input) ? input.method : init?.method) ?? 'get';
|
|
35
|
+
const secretBytes = Base64.parse(secret);
|
|
36
|
+
const target = url.pathname + url.search;
|
|
37
|
+
const timestamp = new Date().getTime();
|
|
38
|
+
const nonce = Math.random().toString(36).substring(7);
|
|
39
|
+
const body = isRequest(input) ? (input.body ? (await readStream(input.body)).map(x => new TextDecoder().decode(x)).join("") : "") : String(init?.body);
|
|
40
|
+
const body_b64 = md5(String(body || "")).toString(Base64);
|
|
41
|
+
const message = appKey + method + target + timestamp + nonce + body_b64;
|
|
42
|
+
const hmac = hmacSHA256(message, secretBytes);
|
|
43
|
+
const signature = Base64.stringify(hmac);
|
|
44
|
+
const authHeaderValue = `epi-hmac ${appKey}:${timestamp}:${nonce}:${signature}`;
|
|
45
|
+
//#endregion
|
|
46
|
+
const newRequest = (isRequest(input) ? input.clone() : new Request(input, init));
|
|
47
|
+
newRequest.headers.set('Authorization', authHeaderValue);
|
|
48
|
+
return fetch(newRequest);
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export default createHmacFetch;
|
|
52
|
+
//# sourceMappingURL=hmac-fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmac-fetch.js","sourceRoot":"","sources":["../../src/client/hmac-fetch.ts"],"names":[],"mappings":"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"}
|