@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.
Files changed (207) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +135 -0
  3. package/dist/admin-api/client/OptimizelyGraphAdminApi.d.ts +22 -0
  4. package/dist/admin-api/client/OptimizelyGraphAdminApi.js +31 -0
  5. package/dist/admin-api/client/OptimizelyGraphAdminApi.js.map +1 -0
  6. package/dist/admin-api/client/core/ApiError.d.ts +10 -0
  7. package/dist/admin-api/client/core/ApiError.js +12 -0
  8. package/dist/admin-api/client/core/ApiError.js.map +1 -0
  9. package/dist/admin-api/client/core/ApiRequestOptions.d.ts +13 -0
  10. package/dist/admin-api/client/core/ApiRequestOptions.js +2 -0
  11. package/dist/admin-api/client/core/ApiRequestOptions.js.map +1 -0
  12. package/dist/admin-api/client/core/ApiResult.d.ts +7 -0
  13. package/dist/admin-api/client/core/ApiResult.js +2 -0
  14. package/dist/admin-api/client/core/ApiResult.js.map +1 -0
  15. package/dist/admin-api/client/core/BaseHttpRequest.d.ts +8 -0
  16. package/dist/admin-api/client/core/BaseHttpRequest.js +6 -0
  17. package/dist/admin-api/client/core/BaseHttpRequest.js.map +1 -0
  18. package/dist/admin-api/client/core/CancelablePromise.d.ts +20 -0
  19. package/dist/admin-api/client/core/CancelablePromise.js +112 -0
  20. package/dist/admin-api/client/core/CancelablePromise.js.map +1 -0
  21. package/dist/admin-api/client/core/FetchHttpRequest.d.ts +14 -0
  22. package/dist/admin-api/client/core/FetchHttpRequest.js +17 -0
  23. package/dist/admin-api/client/core/FetchHttpRequest.js.map +1 -0
  24. package/dist/admin-api/client/core/OpenAPI.d.ts +16 -0
  25. package/dist/admin-api/client/core/OpenAPI.js +12 -0
  26. package/dist/admin-api/client/core/OpenAPI.js.map +1 -0
  27. package/dist/admin-api/client/core/request.d.ts +30 -0
  28. package/dist/admin-api/client/core/request.js +276 -0
  29. package/dist/admin-api/client/core/request.js.map +1 -0
  30. package/dist/admin-api/client/index.d.ts +45 -0
  31. package/dist/admin-api/client/index.js +17 -0
  32. package/dist/admin-api/client/index.js.map +1 -0
  33. package/dist/admin-api/client/models/CacheInvalidationConfig.d.ts +3 -0
  34. package/dist/admin-api/client/models/CacheInvalidationConfig.js +2 -0
  35. package/dist/admin-api/client/models/CacheInvalidationConfig.js.map +1 -0
  36. package/dist/admin-api/client/models/ContentTypeDefinition_V2.d.ts +10 -0
  37. package/dist/admin-api/client/models/ContentTypeDefinition_V2.js +2 -0
  38. package/dist/admin-api/client/models/ContentTypeDefinition_V2.js.map +1 -0
  39. package/dist/admin-api/client/models/ContentTypeDefinition_V3.d.ts +11 -0
  40. package/dist/admin-api/client/models/ContentTypeDefinition_V3.js +2 -0
  41. package/dist/admin-api/client/models/ContentTypeDefinition_V3.js.map +1 -0
  42. package/dist/admin-api/client/models/ContentTypeMap_V3.d.ts +2 -0
  43. package/dist/admin-api/client/models/ContentTypeMap_V3.js +2 -0
  44. package/dist/admin-api/client/models/ContentTypeMap_V3.js.map +1 -0
  45. package/dist/admin-api/client/models/ContentTypeProperty_V2.d.ts +5 -0
  46. package/dist/admin-api/client/models/ContentTypeProperty_V2.js +2 -0
  47. package/dist/admin-api/client/models/ContentTypeProperty_V2.js.map +1 -0
  48. package/dist/admin-api/client/models/ContentTypeProperty_V3.d.ts +7 -0
  49. package/dist/admin-api/client/models/ContentTypeProperty_V3.js +2 -0
  50. package/dist/admin-api/client/models/ContentTypeProperty_V3.js.map +1 -0
  51. package/dist/admin-api/client/models/ContentType_V2.d.ts +12 -0
  52. package/dist/admin-api/client/models/ContentType_V2.js +2 -0
  53. package/dist/admin-api/client/models/ContentType_V2.js.map +1 -0
  54. package/dist/admin-api/client/models/ContentType_V3.d.ts +11 -0
  55. package/dist/admin-api/client/models/ContentType_V3.js +2 -0
  56. package/dist/admin-api/client/models/ContentType_V3.js.map +1 -0
  57. package/dist/admin-api/client/models/FilterMap.d.ts +2 -0
  58. package/dist/admin-api/client/models/FilterMap.js +2 -0
  59. package/dist/admin-api/client/models/FilterMap.js.map +1 -0
  60. package/dist/admin-api/client/models/GraphQLRequest.d.ts +6 -0
  61. package/dist/admin-api/client/models/GraphQLRequest.js +2 -0
  62. package/dist/admin-api/client/models/GraphQLRequest.js.map +1 -0
  63. package/dist/admin-api/client/models/GraphQLResponse.d.ts +5 -0
  64. package/dist/admin-api/client/models/GraphQLResponse.js +2 -0
  65. package/dist/admin-api/client/models/GraphQLResponse.js.map +1 -0
  66. package/dist/admin-api/client/models/LinkMap.d.ts +2 -0
  67. package/dist/admin-api/client/models/LinkMap.js +2 -0
  68. package/dist/admin-api/client/models/LinkMap.js.map +1 -0
  69. package/dist/admin-api/client/models/LinkProperty.d.ts +4 -0
  70. package/dist/admin-api/client/models/LinkProperty.js +2 -0
  71. package/dist/admin-api/client/models/LinkProperty.js.map +1 -0
  72. package/dist/admin-api/client/models/OperationMap.d.ts +4 -0
  73. package/dist/admin-api/client/models/OperationMap.js +2 -0
  74. package/dist/admin-api/client/models/OperationMap.js.map +1 -0
  75. package/dist/admin-api/client/models/Optional_string_.d.ts +1 -0
  76. package/dist/admin-api/client/models/Optional_string_.js +2 -0
  77. package/dist/admin-api/client/models/Optional_string_.js.map +1 -0
  78. package/dist/admin-api/client/models/Partial_Record_FieldKeys_OperationMap__.d.ts +8 -0
  79. package/dist/admin-api/client/models/Partial_Record_FieldKeys_OperationMap__.js +2 -0
  80. package/dist/admin-api/client/models/Partial_Record_FieldKeys_OperationMap__.js.map +1 -0
  81. package/dist/admin-api/client/models/PropertyTypeMap_V3.d.ts +2 -0
  82. package/dist/admin-api/client/models/PropertyTypeMap_V3.js +2 -0
  83. package/dist/admin-api/client/models/PropertyTypeMap_V3.js.map +1 -0
  84. package/dist/admin-api/client/models/PropertyType_V2.d.ts +5 -0
  85. package/dist/admin-api/client/models/PropertyType_V2.js +2 -0
  86. package/dist/admin-api/client/models/PropertyType_V2.js.map +1 -0
  87. package/dist/admin-api/client/models/PropertyType_V3.d.ts +4 -0
  88. package/dist/admin-api/client/models/PropertyType_V3.js +2 -0
  89. package/dist/admin-api/client/models/PropertyType_V3.js.map +1 -0
  90. package/dist/admin-api/client/models/Property_V2.d.ts +6 -0
  91. package/dist/admin-api/client/models/Property_V2.js +2 -0
  92. package/dist/admin-api/client/models/Property_V2.js.map +1 -0
  93. package/dist/admin-api/client/models/Property_V3.d.ts +5 -0
  94. package/dist/admin-api/client/models/Property_V3.js +2 -0
  95. package/dist/admin-api/client/models/Property_V3.js.map +1 -0
  96. package/dist/admin-api/client/models/Record_string_any_.d.ts +4 -0
  97. package/dist/admin-api/client/models/Record_string_any_.js +2 -0
  98. package/dist/admin-api/client/models/Record_string_any_.js.map +1 -0
  99. package/dist/admin-api/client/models/Record_string_string_.d.ts +4 -0
  100. package/dist/admin-api/client/models/Record_string_string_.js +2 -0
  101. package/dist/admin-api/client/models/Record_string_string_.js.map +1 -0
  102. package/dist/admin-api/client/models/Request.d.ts +6 -0
  103. package/dist/admin-api/client/models/Request.js +2 -0
  104. package/dist/admin-api/client/models/Request.js.map +1 -0
  105. package/dist/admin-api/client/models/RequestLog.d.ts +15 -0
  106. package/dist/admin-api/client/models/RequestLog.js +2 -0
  107. package/dist/admin-api/client/models/RequestLog.js.map +1 -0
  108. package/dist/admin-api/client/models/SourceInfo.d.ts +5 -0
  109. package/dist/admin-api/client/models/SourceInfo.js +2 -0
  110. package/dist/admin-api/client/models/SourceInfo.js.map +1 -0
  111. package/dist/admin-api/client/models/SourceInfoMap.d.ts +2 -0
  112. package/dist/admin-api/client/models/SourceInfoMap.js +2 -0
  113. package/dist/admin-api/client/models/SourceInfoMap.js.map +1 -0
  114. package/dist/admin-api/client/models/StopwordsBody.d.ts +1 -0
  115. package/dist/admin-api/client/models/StopwordsBody.js +2 -0
  116. package/dist/admin-api/client/models/StopwordsBody.js.map +1 -0
  117. package/dist/admin-api/client/models/SynonymsBody.d.ts +1 -0
  118. package/dist/admin-api/client/models/SynonymsBody.js +2 -0
  119. package/dist/admin-api/client/models/SynonymsBody.js.map +1 -0
  120. package/dist/admin-api/client/models/TokenClaims.d.ts +4 -0
  121. package/dist/admin-api/client/models/TokenClaims.js +2 -0
  122. package/dist/admin-api/client/models/TokenClaims.js.map +1 -0
  123. package/dist/admin-api/client/models/Webhook.d.ts +4 -0
  124. package/dist/admin-api/client/models/Webhook.js +2 -0
  125. package/dist/admin-api/client/models/Webhook.js.map +1 -0
  126. package/dist/admin-api/client/models/WebhookPayload.d.ts +12 -0
  127. package/dist/admin-api/client/models/WebhookPayload.js +2 -0
  128. package/dist/admin-api/client/models/WebhookPayload.js.map +1 -0
  129. package/dist/admin-api/client/services/DefinitionV2Service.d.ts +34 -0
  130. package/dist/admin-api/client/services/DefinitionV2Service.js +62 -0
  131. package/dist/admin-api/client/services/DefinitionV2Service.js.map +1 -0
  132. package/dist/admin-api/client/services/DefinitionV3Service.d.ts +51 -0
  133. package/dist/admin-api/client/services/DefinitionV3Service.js +97 -0
  134. package/dist/admin-api/client/services/DefinitionV3Service.js.map +1 -0
  135. package/dist/admin-api/client/services/LogsService.d.ts +19 -0
  136. package/dist/admin-api/client/services/LogsService.js +30 -0
  137. package/dist/admin-api/client/services/LogsService.js.map +1 -0
  138. package/dist/admin-api/client/services/OidcService.d.ts +22 -0
  139. package/dist/admin-api/client/services/OidcService.js +33 -0
  140. package/dist/admin-api/client/services/OidcService.js.map +1 -0
  141. package/dist/admin-api/client/services/QueryGraphQlService.d.ts +27 -0
  142. package/dist/admin-api/client/services/QueryGraphQlService.js +43 -0
  143. package/dist/admin-api/client/services/QueryGraphQlService.js.map +1 -0
  144. package/dist/admin-api/client/services/ResourcesService.d.ts +30 -0
  145. package/dist/admin-api/client/services/ResourcesService.js +49 -0
  146. package/dist/admin-api/client/services/ResourcesService.js.map +1 -0
  147. package/dist/admin-api/client/services/WebhooksService.d.ts +42 -0
  148. package/dist/admin-api/client/services/WebhooksService.js +70 -0
  149. package/dist/admin-api/client/services/WebhooksService.js.map +1 -0
  150. package/dist/admin-api/index.d.ts +6 -0
  151. package/dist/admin-api/index.js +25 -0
  152. package/dist/admin-api/index.js.map +1 -0
  153. package/dist/admin-api/request.d.ts +5 -0
  154. package/dist/admin-api/request.js +32 -0
  155. package/dist/admin-api/request.js.map +1 -0
  156. package/dist/client/client.d.ts +36 -0
  157. package/dist/client/client.js +200 -0
  158. package/dist/client/client.js.map +1 -0
  159. package/dist/client/hmac-fetch.d.ts +3 -0
  160. package/dist/client/hmac-fetch.js +52 -0
  161. package/dist/client/hmac-fetch.js.map +1 -0
  162. package/dist/client/index.d.ts +4 -0
  163. package/dist/client/index.js +5 -0
  164. package/dist/client/index.js.map +1 -0
  165. package/dist/client/types.d.ts +67 -0
  166. package/dist/client/types.js +8 -0
  167. package/dist/client/types.js.map +1 -0
  168. package/dist/client/utils.d.ts +6 -0
  169. package/dist/client/utils.js +32 -0
  170. package/dist/client/utils.js.map +1 -0
  171. package/dist/codegen.d.ts +10 -0
  172. package/dist/codegen.js +18 -0
  173. package/dist/codegen.js.map +1 -0
  174. package/dist/config.d.ts +12 -0
  175. package/dist/config.js +97 -0
  176. package/dist/config.js.map +1 -0
  177. package/dist/index.d.ts +5 -0
  178. package/dist/index.js +9 -0
  179. package/dist/index.js.map +1 -0
  180. package/dist/services/channel-repository/definition.d.ts +86 -0
  181. package/dist/services/channel-repository/definition.js +125 -0
  182. package/dist/services/channel-repository/definition.js.map +1 -0
  183. package/dist/services/channel-repository/index.d.ts +2 -0
  184. package/dist/services/channel-repository/index.js +3 -0
  185. package/dist/services/channel-repository/index.js.map +1 -0
  186. package/dist/services/channel-repository/queries.d.ts +3 -0
  187. package/dist/services/channel-repository/queries.js +93 -0
  188. package/dist/services/channel-repository/queries.js.map +1 -0
  189. package/dist/services/channel-repository/repository.d.ts +15 -0
  190. package/dist/services/channel-repository/repository.js +75 -0
  191. package/dist/services/channel-repository/repository.js.map +1 -0
  192. package/dist/services/channel-repository/types.d.ts +26 -0
  193. package/dist/services/channel-repository/types.js +2 -0
  194. package/dist/services/channel-repository/types.js.map +1 -0
  195. package/dist/services/index.d.ts +4 -0
  196. package/dist/services/index.js +3 -0
  197. package/dist/services/index.js.map +1 -0
  198. package/dist/services/routing/index.d.ts +83 -0
  199. package/dist/services/routing/index.js +243 -0
  200. package/dist/services/routing/index.js.map +1 -0
  201. package/dist/services/routing/types.d.ts +25 -0
  202. package/dist/services/routing/types.js +2 -0
  203. package/dist/services/routing/types.js.map +1 -0
  204. package/dist/types.d.ts +39 -0
  205. package/dist/types.js +2 -0
  206. package/dist/types.js.map +1 -0
  207. 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,3 @@
1
+ export type FetchAPI = typeof fetch;
2
+ export declare function createHmacFetch(appKey: string, secret: string): FetchAPI;
3
+ export default createHmacFetch;
@@ -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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"}