generated from thegrind/laravel-dockerized
325 lines
12 KiB
JavaScript
325 lines
12 KiB
JavaScript
// builds/fetch.ts
|
|
import { createMemoryCache, createNullCache, createNullLogger } from "@algolia/client-common";
|
|
import { createFetchRequester } from "@algolia/requester-fetch";
|
|
|
|
// src/personalizationClient.ts
|
|
import { createAuth, createTransporter, getAlgoliaAgent } from "@algolia/client-common";
|
|
var apiClientVersion = "5.35.0";
|
|
var REGIONS = ["eu", "us"];
|
|
function getDefaultHosts(region) {
|
|
const url = "personalization.{region}.algolia.com".replace("{region}", region);
|
|
return [{ url, accept: "readWrite", protocol: "https" }];
|
|
}
|
|
function createPersonalizationClient({
|
|
appId: appIdOption,
|
|
apiKey: apiKeyOption,
|
|
authMode,
|
|
algoliaAgents,
|
|
region: regionOption,
|
|
...options
|
|
}) {
|
|
const auth = createAuth(appIdOption, apiKeyOption, authMode);
|
|
const transporter = createTransporter({
|
|
hosts: getDefaultHosts(regionOption),
|
|
...options,
|
|
algoliaAgent: getAlgoliaAgent({
|
|
algoliaAgents,
|
|
client: "Personalization",
|
|
version: apiClientVersion
|
|
}),
|
|
baseHeaders: {
|
|
"content-type": "text/plain",
|
|
...auth.headers(),
|
|
...options.baseHeaders
|
|
},
|
|
baseQueryParameters: {
|
|
...auth.queryParameters(),
|
|
...options.baseQueryParameters
|
|
}
|
|
});
|
|
return {
|
|
transporter,
|
|
/**
|
|
* The `appId` currently in use.
|
|
*/
|
|
appId: appIdOption,
|
|
/**
|
|
* The `apiKey` currently in use.
|
|
*/
|
|
apiKey: apiKeyOption,
|
|
/**
|
|
* Clears the cache of the transporter for the `requestsCache` and `responsesCache` properties.
|
|
*/
|
|
clearCache() {
|
|
return Promise.all([transporter.requestsCache.clear(), transporter.responsesCache.clear()]).then(() => void 0);
|
|
},
|
|
/**
|
|
* Get the value of the `algoliaAgent`, used by our libraries internally and telemetry system.
|
|
*/
|
|
get _ua() {
|
|
return transporter.algoliaAgent.value;
|
|
},
|
|
/**
|
|
* Adds a `segment` to the `x-algolia-agent` sent with every requests.
|
|
*
|
|
* @param segment - The algolia agent (user-agent) segment to add.
|
|
* @param version - The version of the agent.
|
|
*/
|
|
addAlgoliaAgent(segment, version) {
|
|
transporter.algoliaAgent.add({ segment, version });
|
|
},
|
|
/**
|
|
* Helper method to switch the API key used to authenticate the requests.
|
|
*
|
|
* @param params - Method params.
|
|
* @param params.apiKey - The new API Key to use.
|
|
*/
|
|
setClientApiKey({ apiKey }) {
|
|
if (!authMode || authMode === "WithinHeaders") {
|
|
transporter.baseHeaders["x-algolia-api-key"] = apiKey;
|
|
} else {
|
|
transporter.baseQueryParameters["x-algolia-api-key"] = apiKey;
|
|
}
|
|
},
|
|
/**
|
|
* This method lets you send requests to the Algolia REST API.
|
|
* @param customDelete - The customDelete object.
|
|
* @param customDelete.path - Path of the endpoint, for example `1/newFeature`.
|
|
* @param customDelete.parameters - Query parameters to apply to the current query.
|
|
* @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.
|
|
*/
|
|
customDelete({ path, parameters }, requestOptions) {
|
|
if (!path) {
|
|
throw new Error("Parameter `path` is required when calling `customDelete`.");
|
|
}
|
|
const requestPath = "/{path}".replace("{path}", path);
|
|
const headers = {};
|
|
const queryParameters = parameters ? parameters : {};
|
|
const request = {
|
|
method: "DELETE",
|
|
path: requestPath,
|
|
queryParameters,
|
|
headers
|
|
};
|
|
return transporter.request(request, requestOptions);
|
|
},
|
|
/**
|
|
* This method lets you send requests to the Algolia REST API.
|
|
* @param customGet - The customGet object.
|
|
* @param customGet.path - Path of the endpoint, for example `1/newFeature`.
|
|
* @param customGet.parameters - Query parameters to apply to the current query.
|
|
* @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.
|
|
*/
|
|
customGet({ path, parameters }, requestOptions) {
|
|
if (!path) {
|
|
throw new Error("Parameter `path` is required when calling `customGet`.");
|
|
}
|
|
const requestPath = "/{path}".replace("{path}", path);
|
|
const headers = {};
|
|
const queryParameters = parameters ? parameters : {};
|
|
const request = {
|
|
method: "GET",
|
|
path: requestPath,
|
|
queryParameters,
|
|
headers
|
|
};
|
|
return transporter.request(request, requestOptions);
|
|
},
|
|
/**
|
|
* This method lets you send requests to the Algolia REST API.
|
|
* @param customPost - The customPost object.
|
|
* @param customPost.path - Path of the endpoint, for example `1/newFeature`.
|
|
* @param customPost.parameters - Query parameters to apply to the current query.
|
|
* @param customPost.body - Parameters to send with the custom request.
|
|
* @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.
|
|
*/
|
|
customPost({ path, parameters, body }, requestOptions) {
|
|
if (!path) {
|
|
throw new Error("Parameter `path` is required when calling `customPost`.");
|
|
}
|
|
const requestPath = "/{path}".replace("{path}", path);
|
|
const headers = {};
|
|
const queryParameters = parameters ? parameters : {};
|
|
const request = {
|
|
method: "POST",
|
|
path: requestPath,
|
|
queryParameters,
|
|
headers,
|
|
data: body ? body : {}
|
|
};
|
|
return transporter.request(request, requestOptions);
|
|
},
|
|
/**
|
|
* This method lets you send requests to the Algolia REST API.
|
|
* @param customPut - The customPut object.
|
|
* @param customPut.path - Path of the endpoint, for example `1/newFeature`.
|
|
* @param customPut.parameters - Query parameters to apply to the current query.
|
|
* @param customPut.body - Parameters to send with the custom request.
|
|
* @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.
|
|
*/
|
|
customPut({ path, parameters, body }, requestOptions) {
|
|
if (!path) {
|
|
throw new Error("Parameter `path` is required when calling `customPut`.");
|
|
}
|
|
const requestPath = "/{path}".replace("{path}", path);
|
|
const headers = {};
|
|
const queryParameters = parameters ? parameters : {};
|
|
const request = {
|
|
method: "PUT",
|
|
path: requestPath,
|
|
queryParameters,
|
|
headers,
|
|
data: body ? body : {}
|
|
};
|
|
return transporter.request(request, requestOptions);
|
|
},
|
|
/**
|
|
* Deletes a user profile. The response includes a date and time when the user profile can safely be considered deleted.
|
|
*
|
|
* Required API Key ACLs:
|
|
* - recommendation
|
|
* @param deleteUserProfile - The deleteUserProfile object.
|
|
* @param deleteUserProfile.userToken - Unique identifier representing a user for which to fetch the personalization profile.
|
|
* @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.
|
|
*/
|
|
deleteUserProfile({ userToken }, requestOptions) {
|
|
if (!userToken) {
|
|
throw new Error("Parameter `userToken` is required when calling `deleteUserProfile`.");
|
|
}
|
|
const requestPath = "/1/profiles/{userToken}".replace("{userToken}", encodeURIComponent(userToken));
|
|
const headers = {};
|
|
const queryParameters = {};
|
|
const request = {
|
|
method: "DELETE",
|
|
path: requestPath,
|
|
queryParameters,
|
|
headers
|
|
};
|
|
return transporter.request(request, requestOptions);
|
|
},
|
|
/**
|
|
* Retrieves the current personalization strategy.
|
|
*
|
|
* Required API Key ACLs:
|
|
* - recommendation
|
|
* @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.
|
|
*/
|
|
getPersonalizationStrategy(requestOptions) {
|
|
const requestPath = "/1/strategies/personalization";
|
|
const headers = {};
|
|
const queryParameters = {};
|
|
const request = {
|
|
method: "GET",
|
|
path: requestPath,
|
|
queryParameters,
|
|
headers
|
|
};
|
|
return transporter.request(request, requestOptions);
|
|
},
|
|
/**
|
|
* Retrieves a user profile and their affinities for different facets.
|
|
*
|
|
* Required API Key ACLs:
|
|
* - recommendation
|
|
* @param getUserTokenProfile - The getUserTokenProfile object.
|
|
* @param getUserTokenProfile.userToken - Unique identifier representing a user for which to fetch the personalization profile.
|
|
* @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.
|
|
*/
|
|
getUserTokenProfile({ userToken }, requestOptions) {
|
|
if (!userToken) {
|
|
throw new Error("Parameter `userToken` is required when calling `getUserTokenProfile`.");
|
|
}
|
|
const requestPath = "/1/profiles/personalization/{userToken}".replace(
|
|
"{userToken}",
|
|
encodeURIComponent(userToken)
|
|
);
|
|
const headers = {};
|
|
const queryParameters = {};
|
|
const request = {
|
|
method: "GET",
|
|
path: requestPath,
|
|
queryParameters,
|
|
headers
|
|
};
|
|
return transporter.request(request, requestOptions);
|
|
},
|
|
/**
|
|
* Creates a new personalization strategy.
|
|
*
|
|
* Required API Key ACLs:
|
|
* - recommendation
|
|
* @param personalizationStrategyParams - The personalizationStrategyParams object.
|
|
* @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.
|
|
*/
|
|
setPersonalizationStrategy(personalizationStrategyParams, requestOptions) {
|
|
if (!personalizationStrategyParams) {
|
|
throw new Error(
|
|
"Parameter `personalizationStrategyParams` is required when calling `setPersonalizationStrategy`."
|
|
);
|
|
}
|
|
if (!personalizationStrategyParams.eventsScoring) {
|
|
throw new Error(
|
|
"Parameter `personalizationStrategyParams.eventsScoring` is required when calling `setPersonalizationStrategy`."
|
|
);
|
|
}
|
|
if (!personalizationStrategyParams.facetsScoring) {
|
|
throw new Error(
|
|
"Parameter `personalizationStrategyParams.facetsScoring` is required when calling `setPersonalizationStrategy`."
|
|
);
|
|
}
|
|
if (!personalizationStrategyParams.personalizationImpact) {
|
|
throw new Error(
|
|
"Parameter `personalizationStrategyParams.personalizationImpact` is required when calling `setPersonalizationStrategy`."
|
|
);
|
|
}
|
|
const requestPath = "/1/strategies/personalization";
|
|
const headers = {};
|
|
const queryParameters = {};
|
|
const request = {
|
|
method: "POST",
|
|
path: requestPath,
|
|
queryParameters,
|
|
headers,
|
|
data: personalizationStrategyParams
|
|
};
|
|
return transporter.request(request, requestOptions);
|
|
}
|
|
};
|
|
}
|
|
|
|
// builds/fetch.ts
|
|
function personalizationClient(appId, apiKey, region, options) {
|
|
if (!appId || typeof appId !== "string") {
|
|
throw new Error("`appId` is missing.");
|
|
}
|
|
if (!apiKey || typeof apiKey !== "string") {
|
|
throw new Error("`apiKey` is missing.");
|
|
}
|
|
if (!region || region && (typeof region !== "string" || !REGIONS.includes(region))) {
|
|
throw new Error(`\`region\` is required and must be one of the following: ${REGIONS.join(", ")}`);
|
|
}
|
|
return {
|
|
...createPersonalizationClient({
|
|
appId,
|
|
apiKey,
|
|
region,
|
|
timeouts: {
|
|
connect: 2e3,
|
|
read: 5e3,
|
|
write: 3e4
|
|
},
|
|
logger: createNullLogger(),
|
|
requester: createFetchRequester(),
|
|
algoliaAgents: [{ segment: "Fetch" }],
|
|
responsesCache: createNullCache(),
|
|
requestsCache: createNullCache(),
|
|
hostsCache: createMemoryCache(),
|
|
...options
|
|
})
|
|
};
|
|
}
|
|
export {
|
|
apiClientVersion,
|
|
personalizationClient
|
|
};
|
|
//# sourceMappingURL=fetch.js.map
|