// src/insightsClient.ts import { createAuth, createTransporter, getAlgoliaAgent } from "@algolia/client-common"; var apiClientVersion = "5.20.3"; var REGIONS = ["de", "us"]; function getDefaultHosts(region) { const url = !region ? "insights.algolia.io" : "insights.{region}.algolia.io".replace("{region}", region); return [{ url, accept: "readWrite", protocol: "https" }]; } function createInsightsClient({ 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: "Insights", 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 allow you to send requests to the Algolia REST API. * @param customDelete - The customDelete object. * @param customDelete.path - Path of the endpoint, anything after \"/1\" must be specified. * @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 allow you to send requests to the Algolia REST API. * @param customGet - The customGet object. * @param customGet.path - Path of the endpoint, anything after \"/1\" must be specified. * @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 allow you to send requests to the Algolia REST API. * @param customPost - The customPost object. * @param customPost.path - Path of the endpoint, anything after \"/1\" must be specified. * @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 allow you to send requests to the Algolia REST API. * @param customPut - The customPut object. * @param customPut.path - Path of the endpoint, anything after \"/1\" must be specified. * @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 all events related to the specified user token from events metrics and analytics. The deletion is asynchronous, and processed within 48 hours. To delete a personalization user profile, see `Delete a user profile` in the Personalization API. * @param deleteUserToken - The deleteUserToken object. * @param deleteUserToken.userToken - User token for which to delete all associated events. * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions. */ deleteUserToken({ userToken }, requestOptions) { if (!userToken) { throw new Error("Parameter `userToken` is required when calling `deleteUserToken`."); } const requestPath = "/1/usertokens/{userToken}".replace("{userToken}", encodeURIComponent(userToken)); const headers = {}; const queryParameters = {}; const request = { method: "DELETE", path: requestPath, queryParameters, headers }; return transporter.request(request, requestOptions); }, /** * Sends a list of events to the Insights API. You can include up to 1,000 events in a single request, but the request body must be smaller than 2 MB. * @param insightsEvents - The insightsEvents object. * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions. */ pushEvents(insightsEvents, requestOptions) { if (!insightsEvents) { throw new Error("Parameter `insightsEvents` is required when calling `pushEvents`."); } if (!insightsEvents.events) { throw new Error("Parameter `insightsEvents.events` is required when calling `pushEvents`."); } const requestPath = "/1/events"; const headers = {}; const queryParameters = {}; const request = { method: "POST", path: requestPath, queryParameters, headers, data: insightsEvents }; return transporter.request(request, requestOptions); } }; } export { REGIONS, apiClientVersion, createInsightsClient }; //# sourceMappingURL=insightsClient.js.map