@algolia/abtesting 1.22.0 → 1.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -40,11 +40,11 @@ All of our clients comes with type definition, and are available for both browse
40
40
  ### With a package manager
41
41
 
42
42
  ```bash
43
- yarn add @algolia/abtesting@1.22.0
43
+ yarn add @algolia/abtesting@1.25.0
44
44
  # or
45
- npm install @algolia/abtesting@1.22.0
45
+ npm install @algolia/abtesting@1.25.0
46
46
  # or
47
- pnpm add @algolia/abtesting@1.22.0
47
+ pnpm add @algolia/abtesting@1.25.0
48
48
  ```
49
49
 
50
50
  ### Without a package manager
@@ -52,7 +52,7 @@ pnpm add @algolia/abtesting@1.22.0
52
52
  Add the following JavaScript snippet to the <head> of your website:
53
53
 
54
54
  ```html
55
- <script src="https://cdn.jsdelivr.net/npm/@algolia/abtesting@1.22.0/dist/builds/browser.umd.js"></script>
55
+ <script src="https://cdn.jsdelivr.net/npm/@algolia/abtesting@1.25.0/dist/builds/browser.umd.js"></script>
56
56
  ```
57
57
 
58
58
  ### Usage
package/dist/browser.d.ts CHANGED
@@ -56,6 +56,20 @@ type ABTestConfiguration = {
56
56
  errorCorrection?: ErrorCorrectionType | undefined;
57
57
  };
58
58
 
59
+ /**
60
+ * Outcome of the A/B test once a winner has been declared. Only present when a winning variant has been declared, so its presence indicates the test has been decided.
61
+ */
62
+ type Decision = {
63
+ /**
64
+ * Identifier of the declared winning variant. The control variant is 1.
65
+ */
66
+ winnerVariantId: number;
67
+ /**
68
+ * Date and time when the winning variant was declared, in RFC 3339 format.
69
+ */
70
+ declaredAt: string;
71
+ };
72
+
59
73
  /**
60
74
  * A/B test status. - `active`. The A/B test is live and search traffic is split between the two variants. - `stopped`. You stopped the A/B test. The A/B test data is still available for analysis. - `expired`. The A/B test was automatically stopped after reaching its end date. - `failed`. Creating the A/B test failed.
61
75
  */
@@ -211,10 +225,7 @@ type ABTest = {
211
225
  */
212
226
  variants: Array<Variant>;
213
227
  configuration?: ABTestConfiguration | undefined;
214
- /**
215
- * Unique migrated A/B test identifier.
216
- */
217
- migratedAbTestID?: number | undefined;
228
+ decision?: Decision | undefined;
218
229
  };
219
230
 
220
231
  type ABTestResponse = {
@@ -512,7 +523,7 @@ type StopABTestProps = {
512
523
  id: number;
513
524
  };
514
525
 
515
- declare const apiClientVersion = "1.22.0";
526
+ declare const apiClientVersion = "1.25.0";
516
527
  declare const REGIONS: readonly ["de", "us"];
517
528
  type Region = (typeof REGIONS)[number];
518
529
  type RegionOptions = {
@@ -815,4 +826,4 @@ type ErrorBase = Record<string, any> & {
815
826
  declare function abtestingV3Client(appId: string, apiKey: string, region?: Region | undefined, options?: ClientOptions | undefined): AbtestingV3Client;
816
827
  type AbtestingV3Client = ReturnType<typeof createAbtestingV3Client>;
817
828
 
818
- export { type ABTest, type ABTestConfiguration, type ABTestResponse, type AbTestsVariant, type AbTestsVariantSearchParams, type AbtestingV3Client, type AddABTestsRequest, type AddABTestsVariant, type CreateMetric, type CustomDeleteProps, type CustomGetProps, type CustomPostProps, type CustomPutProps, type CustomSearchParams, type DeleteABTestProps, type Direction, type EffectMetric, type EmptySearchFilter, type ErrorBase, type ErrorCorrectionType, type EstimateABTestRequest, type EstimateABTestResponse, type EstimateConfiguration, type FilterEffects, type GetABTestProps, type GetTimeseriesProps, type ListABTestsProps, type ListABTestsResponse, type MetricDate, type MetricMetadata, type MetricName, type MetricResult, type MetricsFilter, type MinimumDetectableEffect, type OutliersFilter, type Region, type RegionOptions, type Status, type StopABTestProps, type Timeseries, type TimeseriesVariant, type Variant, type VariantMetadata, abtestingV3Client, apiClientVersion };
829
+ export { type ABTest, type ABTestConfiguration, type ABTestResponse, type AbTestsVariant, type AbTestsVariantSearchParams, type AbtestingV3Client, type AddABTestsRequest, type AddABTestsVariant, type CreateMetric, type CustomDeleteProps, type CustomGetProps, type CustomPostProps, type CustomPutProps, type CustomSearchParams, type Decision, type DeleteABTestProps, type Direction, type EffectMetric, type EmptySearchFilter, type ErrorBase, type ErrorCorrectionType, type EstimateABTestRequest, type EstimateABTestResponse, type EstimateConfiguration, type FilterEffects, type GetABTestProps, type GetTimeseriesProps, type ListABTestsProps, type ListABTestsResponse, type MetricDate, type MetricMetadata, type MetricName, type MetricResult, type MetricsFilter, type MinimumDetectableEffect, type OutliersFilter, type Region, type RegionOptions, type Status, type StopABTestProps, type Timeseries, type TimeseriesVariant, type Variant, type VariantMetadata, abtestingV3Client, apiClientVersion };
@@ -9,7 +9,7 @@ import { createXhrRequester } from "@algolia/requester-browser-xhr";
9
9
 
10
10
  // src/abtestingV3Client.ts
11
11
  import { createAuth, createTransporter, getAlgoliaAgent, validateRequired } from "@algolia/client-common";
12
- var apiClientVersion = "1.22.0";
12
+ var apiClientVersion = "1.25.0";
13
13
  var REGIONS = ["de", "us"];
14
14
  function getDefaultHosts(region) {
15
15
  const url = !region ? "analytics.algolia.com" : "analytics.{region}.algolia.com".replace("{region}", region);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../builds/browser.ts","../../src/abtestingV3Client.ts"],"sourcesContent":["// Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT.\n\nimport {\n createBrowserLocalStorageCache,\n createFallbackableCache,\n createMemoryCache,\n createNullLogger,\n} from '@algolia/client-common';\nimport { createXhrRequester } from '@algolia/requester-browser-xhr';\n\nimport type { ClientOptions } from '@algolia/client-common';\n\nimport { apiClientVersion, createAbtestingV3Client } from '../src/abtestingV3Client';\n\nimport type { Region } from '../src/abtestingV3Client';\nimport { REGIONS } from '../src/abtestingV3Client';\n\nexport type { Region, RegionOptions } from '../src/abtestingV3Client';\n\nexport { apiClientVersion } from '../src/abtestingV3Client';\n\nexport * from '../model';\n\nexport function abtestingV3Client(\n appId: string,\n apiKey: string,\n region?: Region | undefined,\n options?: ClientOptions | undefined,\n): AbtestingV3Client {\n if (!appId || typeof appId !== 'string') {\n throw new Error('`appId` is missing.');\n }\n\n if (!apiKey || typeof apiKey !== 'string') {\n throw new Error('`apiKey` is missing.');\n }\n\n if (region && (typeof region !== 'string' || !REGIONS.includes(region))) {\n throw new Error(`\\`region\\` must be one of the following: ${REGIONS.join(', ')}`);\n }\n\n const { compression: _compression, ...browserOptions } = options || {};\n\n return createAbtestingV3Client({\n appId,\n apiKey,\n region,\n timeouts: {\n connect: 1000,\n read: 2000,\n write: 30000,\n },\n logger: createNullLogger(),\n requester: createXhrRequester(),\n algoliaAgents: [{ segment: 'Browser' }],\n authMode: 'WithinQueryParameters',\n responsesCache: createMemoryCache(),\n requestsCache: createMemoryCache({ serializable: false }),\n hostsCache: createFallbackableCache({\n caches: [createBrowserLocalStorageCache({ key: `${apiClientVersion}-${appId}` }), createMemoryCache()],\n }),\n ...browserOptions,\n });\n}\n\nexport type AbtestingV3Client = ReturnType<typeof createAbtestingV3Client>;\n","// Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT.\n\nimport type {\n AlgoliaHttpResponse,\n CreateClientOptions,\n Headers,\n Host,\n QueryParameters,\n Request,\n RequestOptions,\n} from '@algolia/client-common';\nimport { createAuth, createTransporter, getAlgoliaAgent, validateRequired } from '@algolia/client-common';\n\nimport type { ABTest } from '../model/aBTest';\nimport type { ABTestResponse } from '../model/aBTestResponse';\nimport type { AddABTestsRequest } from '../model/addABTestsRequest';\nimport type { EstimateABTestRequest } from '../model/estimateABTestRequest';\nimport type { EstimateABTestResponse } from '../model/estimateABTestResponse';\nimport type { ListABTestsResponse } from '../model/listABTestsResponse';\nimport type { Timeseries } from '../model/timeseries';\n\nimport type {\n CustomDeleteProps,\n CustomGetProps,\n CustomPostProps,\n CustomPutProps,\n DeleteABTestProps,\n GetABTestProps,\n GetTimeseriesProps,\n ListABTestsProps,\n StopABTestProps,\n} from '../model/clientMethodProps';\n\nexport const apiClientVersion = '1.22.0';\n\nexport const REGIONS = ['de', 'us'] as const;\nexport type Region = (typeof REGIONS)[number];\nexport type RegionOptions = { region?: Region | undefined };\n\nfunction getDefaultHosts(region?: Region | undefined): Host[] {\n const url = !region ? 'analytics.algolia.com' : 'analytics.{region}.algolia.com'.replace('{region}', region);\n\n return [{ url, accept: 'readWrite', protocol: 'https' }];\n}\n\nexport function createAbtestingV3Client({\n appId: appIdOption,\n apiKey: apiKeyOption,\n authMode,\n algoliaAgents,\n region: regionOption,\n ...options\n}: CreateClientOptions & RegionOptions) {\n const auth = createAuth(appIdOption, apiKeyOption, authMode);\n const transporter = createTransporter({\n hosts: getDefaultHosts(regionOption),\n ...options,\n algoliaAgent: getAlgoliaAgent({\n algoliaAgents,\n client: 'AbtestingV3',\n version: apiClientVersion,\n }),\n baseHeaders: {\n 'content-type': 'text/plain',\n ...auth.headers(),\n ...options.baseHeaders,\n },\n baseQueryParameters: {\n ...auth.queryParameters(),\n ...options.baseQueryParameters,\n },\n });\n\n return {\n transporter,\n\n /**\n * The `appId` currently in use.\n */\n appId: appIdOption,\n\n /**\n * The `apiKey` currently in use.\n */\n apiKey: apiKeyOption,\n\n /**\n * Clears the cache of the transporter for the `requestsCache` and `responsesCache` properties.\n */\n clearCache(): Promise<void> {\n return Promise.all([transporter.requestsCache.clear(), transporter.responsesCache.clear()]).then(() => undefined);\n },\n\n /**\n * Get the value of the `algoliaAgent`, used by our libraries internally and telemetry system.\n */\n get _ua(): string {\n return transporter.algoliaAgent.value;\n },\n\n /**\n * Adds a `segment` to the `x-algolia-agent` sent with every requests.\n *\n * @param segment - The algolia agent (user-agent) segment to add.\n * @param version - The version of the agent.\n */\n addAlgoliaAgent(segment: string, version?: string | undefined): void {\n transporter.algoliaAgent.add({ segment, version });\n },\n\n /**\n * Helper method to switch the API key used to authenticate the requests.\n *\n * @param params - Method params.\n * @param params.apiKey - The new API Key to use.\n */\n setClientApiKey({ apiKey }: { apiKey: string }): void {\n if (!authMode || authMode === 'WithinHeaders') {\n transporter.baseHeaders['x-algolia-api-key'] = apiKey;\n } else {\n transporter.baseQueryParameters['x-algolia-api-key'] = apiKey;\n }\n },\n\n /**\n * Creates a new A/B test.\n *\n * Required API Key ACLs:\n * - editSettings\n * @param addABTestsRequest - The addABTestsRequest object.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n addABTests(addABTestsRequest: AddABTestsRequest, requestOptions?: RequestOptions): Promise<ABTestResponse> {\n validateRequired('addABTestsRequest', 'addABTests', addABTestsRequest);\n\n validateRequired('addABTestsRequest.name', 'addABTests', addABTestsRequest.name);\n validateRequired('addABTestsRequest.variants', 'addABTests', addABTestsRequest.variants);\n validateRequired('addABTestsRequest.metrics', 'addABTests', addABTestsRequest.metrics);\n validateRequired('addABTestsRequest.endAt', 'addABTests', addABTestsRequest.endAt);\n\n const requestPath = '/3/abtests';\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'POST',\n path: requestPath,\n queryParameters,\n headers,\n data: addABTestsRequest,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * Creates a new A/B test.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n *\n * Required API Key ACLs:\n * - editSettings\n * @param addABTestsRequest - The addABTestsRequest object.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see addABTests for the plain version.\n */\n addABTestsWithHTTPInfo(\n addABTestsRequest: AddABTestsRequest,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<ABTestResponse>> {\n validateRequired('addABTestsRequest', 'addABTestsWithHTTPInfo', addABTestsRequest);\n\n validateRequired('addABTestsRequest.name', 'addABTestsWithHTTPInfo', addABTestsRequest.name);\n validateRequired('addABTestsRequest.variants', 'addABTestsWithHTTPInfo', addABTestsRequest.variants);\n validateRequired('addABTestsRequest.metrics', 'addABTestsWithHTTPInfo', addABTestsRequest.metrics);\n validateRequired('addABTestsRequest.endAt', 'addABTestsWithHTTPInfo', addABTestsRequest.endAt);\n\n const requestPath = '/3/abtests';\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'POST',\n path: requestPath,\n queryParameters,\n headers,\n data: addABTestsRequest,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * This method lets you send requests to the Algolia REST API.\n * @param customDelete - The customDelete object.\n * @param customDelete.path - Path of the endpoint, for example `1/newFeature`.\n * @param customDelete.parameters - Query parameters to apply to the current query.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n customDelete(\n { path, parameters }: CustomDeleteProps,\n requestOptions?: RequestOptions,\n ): Promise<Record<string, unknown>> {\n validateRequired('path', 'customDelete', path);\n\n const requestPath = '/{path}'.replace('{path}', path);\n const headers: Headers = {};\n const queryParameters: QueryParameters = parameters ? parameters : {};\n\n const request: Request = {\n method: 'DELETE',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * This method lets you send requests to the Algolia REST API.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n * @param customDelete - The customDelete object.\n * @param customDelete.path - Path of the endpoint, for example `1/newFeature`.\n * @param customDelete.parameters - Query parameters to apply to the current query.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see customDelete for the plain version.\n */\n customDeleteWithHTTPInfo(\n { path, parameters }: CustomDeleteProps,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<Record<string, unknown>>> {\n validateRequired('path', 'customDeleteWithHTTPInfo', path);\n\n const requestPath = '/{path}'.replace('{path}', path);\n const headers: Headers = {};\n const queryParameters: QueryParameters = parameters ? parameters : {};\n\n const request: Request = {\n method: 'DELETE',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * This method lets you send requests to the Algolia REST API.\n * @param customGet - The customGet object.\n * @param customGet.path - Path of the endpoint, for example `1/newFeature`.\n * @param customGet.parameters - Query parameters to apply to the current query.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n customGet({ path, parameters }: CustomGetProps, requestOptions?: RequestOptions): Promise<Record<string, unknown>> {\n validateRequired('path', 'customGet', path);\n\n const requestPath = '/{path}'.replace('{path}', path);\n const headers: Headers = {};\n const queryParameters: QueryParameters = parameters ? parameters : {};\n\n const request: Request = {\n method: 'GET',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * This method lets you send requests to the Algolia REST API.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n * @param customGet - The customGet object.\n * @param customGet.path - Path of the endpoint, for example `1/newFeature`.\n * @param customGet.parameters - Query parameters to apply to the current query.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see customGet for the plain version.\n */\n customGetWithHTTPInfo(\n { path, parameters }: CustomGetProps,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<Record<string, unknown>>> {\n validateRequired('path', 'customGetWithHTTPInfo', path);\n\n const requestPath = '/{path}'.replace('{path}', path);\n const headers: Headers = {};\n const queryParameters: QueryParameters = parameters ? parameters : {};\n\n const request: Request = {\n method: 'GET',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * This method lets you send requests to the Algolia REST API.\n * @param customPost - The customPost object.\n * @param customPost.path - Path of the endpoint, for example `1/newFeature`.\n * @param customPost.parameters - Query parameters to apply to the current query.\n * @param customPost.body - Parameters to send with the custom request.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n customPost(\n { path, parameters, body }: CustomPostProps,\n requestOptions?: RequestOptions,\n ): Promise<Record<string, unknown>> {\n validateRequired('path', 'customPost', path);\n\n const requestPath = '/{path}'.replace('{path}', path);\n const headers: Headers = {};\n const queryParameters: QueryParameters = parameters ? parameters : {};\n\n const request: Request = {\n method: 'POST',\n path: requestPath,\n queryParameters,\n headers,\n data: body ? body : {},\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * This method lets you send requests to the Algolia REST API.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n * @param customPost - The customPost object.\n * @param customPost.path - Path of the endpoint, for example `1/newFeature`.\n * @param customPost.parameters - Query parameters to apply to the current query.\n * @param customPost.body - Parameters to send with the custom request.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see customPost for the plain version.\n */\n customPostWithHTTPInfo(\n { path, parameters, body }: CustomPostProps,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<Record<string, unknown>>> {\n validateRequired('path', 'customPostWithHTTPInfo', path);\n\n const requestPath = '/{path}'.replace('{path}', path);\n const headers: Headers = {};\n const queryParameters: QueryParameters = parameters ? parameters : {};\n\n const request: Request = {\n method: 'POST',\n path: requestPath,\n queryParameters,\n headers,\n data: body ? body : {},\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * This method lets you send requests to the Algolia REST API.\n * @param customPut - The customPut object.\n * @param customPut.path - Path of the endpoint, for example `1/newFeature`.\n * @param customPut.parameters - Query parameters to apply to the current query.\n * @param customPut.body - Parameters to send with the custom request.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n customPut(\n { path, parameters, body }: CustomPutProps,\n requestOptions?: RequestOptions,\n ): Promise<Record<string, unknown>> {\n validateRequired('path', 'customPut', path);\n\n const requestPath = '/{path}'.replace('{path}', path);\n const headers: Headers = {};\n const queryParameters: QueryParameters = parameters ? parameters : {};\n\n const request: Request = {\n method: 'PUT',\n path: requestPath,\n queryParameters,\n headers,\n data: body ? body : {},\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * This method lets you send requests to the Algolia REST API.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n * @param customPut - The customPut object.\n * @param customPut.path - Path of the endpoint, for example `1/newFeature`.\n * @param customPut.parameters - Query parameters to apply to the current query.\n * @param customPut.body - Parameters to send with the custom request.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see customPut for the plain version.\n */\n customPutWithHTTPInfo(\n { path, parameters, body }: CustomPutProps,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<Record<string, unknown>>> {\n validateRequired('path', 'customPutWithHTTPInfo', path);\n\n const requestPath = '/{path}'.replace('{path}', path);\n const headers: Headers = {};\n const queryParameters: QueryParameters = parameters ? parameters : {};\n\n const request: Request = {\n method: 'PUT',\n path: requestPath,\n queryParameters,\n headers,\n data: body ? body : {},\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * Deletes an A/B test by its ID.\n *\n * Required API Key ACLs:\n * - editSettings\n * @param deleteABTest - The deleteABTest object.\n * @param deleteABTest.id - Unique A/B test identifier.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n deleteABTest({ id }: DeleteABTestProps, requestOptions?: RequestOptions): Promise<ABTestResponse> {\n validateRequired('id', 'deleteABTest', id);\n\n const requestPath = '/3/abtests/{id}'.replace('{id}', encodeURIComponent(id));\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'DELETE',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * Deletes an A/B test by its ID.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n *\n * Required API Key ACLs:\n * - editSettings\n * @param deleteABTest - The deleteABTest object.\n * @param deleteABTest.id - Unique A/B test identifier.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see deleteABTest for the plain version.\n */\n deleteABTestWithHTTPInfo(\n { id }: DeleteABTestProps,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<ABTestResponse>> {\n validateRequired('id', 'deleteABTestWithHTTPInfo', id);\n\n const requestPath = '/3/abtests/{id}'.replace('{id}', encodeURIComponent(id));\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'DELETE',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * Given the traffic percentage and the expected effect size, this endpoint estimates the sample size and duration of an A/B test based on historical traffic.\n *\n * Required API Key ACLs:\n * - analytics\n * @param estimateABTestRequest - The estimateABTestRequest object.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n estimateABTest(\n estimateABTestRequest: EstimateABTestRequest,\n requestOptions?: RequestOptions,\n ): Promise<EstimateABTestResponse> {\n validateRequired('estimateABTestRequest', 'estimateABTest', estimateABTestRequest);\n\n validateRequired('estimateABTestRequest.configuration', 'estimateABTest', estimateABTestRequest.configuration);\n validateRequired('estimateABTestRequest.variants', 'estimateABTest', estimateABTestRequest.variants);\n\n const requestPath = '/3/abtests/estimate';\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'POST',\n path: requestPath,\n queryParameters,\n headers,\n data: estimateABTestRequest,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * Given the traffic percentage and the expected effect size, this endpoint estimates the sample size and duration of an A/B test based on historical traffic.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n *\n * Required API Key ACLs:\n * - analytics\n * @param estimateABTestRequest - The estimateABTestRequest object.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see estimateABTest for the plain version.\n */\n estimateABTestWithHTTPInfo(\n estimateABTestRequest: EstimateABTestRequest,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<EstimateABTestResponse>> {\n validateRequired('estimateABTestRequest', 'estimateABTestWithHTTPInfo', estimateABTestRequest);\n\n validateRequired(\n 'estimateABTestRequest.configuration',\n 'estimateABTestWithHTTPInfo',\n estimateABTestRequest.configuration,\n );\n validateRequired('estimateABTestRequest.variants', 'estimateABTestWithHTTPInfo', estimateABTestRequest.variants);\n\n const requestPath = '/3/abtests/estimate';\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'POST',\n path: requestPath,\n queryParameters,\n headers,\n data: estimateABTestRequest,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * Retrieves the details for an A/B test by its ID.\n *\n * Required API Key ACLs:\n * - analytics\n * @param getABTest - The getABTest object.\n * @param getABTest.id - Unique A/B test identifier.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n getABTest({ id }: GetABTestProps, requestOptions?: RequestOptions): Promise<ABTest> {\n validateRequired('id', 'getABTest', id);\n\n const requestPath = '/3/abtests/{id}'.replace('{id}', encodeURIComponent(id));\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'GET',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * Retrieves the details for an A/B test by its ID.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n *\n * Required API Key ACLs:\n * - analytics\n * @param getABTest - The getABTest object.\n * @param getABTest.id - Unique A/B test identifier.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see getABTest for the plain version.\n */\n getABTestWithHTTPInfo(\n { id }: GetABTestProps,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<ABTest>> {\n validateRequired('id', 'getABTestWithHTTPInfo', id);\n\n const requestPath = '/3/abtests/{id}'.replace('{id}', encodeURIComponent(id));\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'GET',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * Retrieves timeseries for an A/B test by its ID.\n *\n * Required API Key ACLs:\n * - analytics\n * @param getTimeseries - The getTimeseries object.\n * @param getTimeseries.id - Unique A/B test identifier.\n * @param getTimeseries.startDate - Start date of the period to analyze, in `YYYY-MM-DD` format.\n * @param getTimeseries.endDate - End date of the period to analyze, in `YYYY-MM-DD` format.\n * @param getTimeseries.metric - List of metrics to retrieve. If not specified, all metrics are returned.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n getTimeseries(\n { id, startDate, endDate, metric }: GetTimeseriesProps,\n requestOptions?: RequestOptions,\n ): Promise<Timeseries> {\n validateRequired('id', 'getTimeseries', id);\n\n const requestPath = '/3/abtests/{id}/timeseries'.replace('{id}', encodeURIComponent(id));\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n if (startDate !== undefined) {\n queryParameters['startDate'] = startDate.toString();\n }\n\n if (endDate !== undefined) {\n queryParameters['endDate'] = endDate.toString();\n }\n\n if (metric !== undefined) {\n queryParameters['metric'] = metric.toString();\n }\n\n const request: Request = {\n method: 'GET',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * Retrieves timeseries for an A/B test by its ID.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n *\n * Required API Key ACLs:\n * - analytics\n * @param getTimeseries - The getTimeseries object.\n * @param getTimeseries.id - Unique A/B test identifier.\n * @param getTimeseries.startDate - Start date of the period to analyze, in `YYYY-MM-DD` format.\n * @param getTimeseries.endDate - End date of the period to analyze, in `YYYY-MM-DD` format.\n * @param getTimeseries.metric - List of metrics to retrieve. If not specified, all metrics are returned.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see getTimeseries for the plain version.\n */\n getTimeseriesWithHTTPInfo(\n { id, startDate, endDate, metric }: GetTimeseriesProps,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<Timeseries>> {\n validateRequired('id', 'getTimeseriesWithHTTPInfo', id);\n\n const requestPath = '/3/abtests/{id}/timeseries'.replace('{id}', encodeURIComponent(id));\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n if (startDate !== undefined) {\n queryParameters['startDate'] = startDate.toString();\n }\n\n if (endDate !== undefined) {\n queryParameters['endDate'] = endDate.toString();\n }\n\n if (metric !== undefined) {\n queryParameters['metric'] = metric.toString();\n }\n\n const request: Request = {\n method: 'GET',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * Lists all A/B tests you configured for this application.\n *\n * Required API Key ACLs:\n * - analytics\n * @param listABTests - The listABTests object.\n * @param listABTests.offset - Position of the first item to return.\n * @param listABTests.limit - Number of items to return.\n * @param listABTests.indexPrefix - Index name prefix. Only A/B tests for indices starting with this string are included in the response.\n * @param listABTests.indexSuffix - Index name suffix. Only A/B tests for indices ending with this string are included in the response.\n * @param listABTests.direction - Sort order for A/B tests by start date. Use \\'asc\\' for ascending or \\'desc\\' for descending. Active A/B tests are always listed first.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n listABTests(\n { offset, limit, indexPrefix, indexSuffix, direction }: ListABTestsProps = {},\n requestOptions: RequestOptions | undefined = undefined,\n ): Promise<ListABTestsResponse> {\n const requestPath = '/3/abtests';\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n if (offset !== undefined) {\n queryParameters['offset'] = offset.toString();\n }\n\n if (limit !== undefined) {\n queryParameters['limit'] = limit.toString();\n }\n\n if (indexPrefix !== undefined) {\n queryParameters['indexPrefix'] = indexPrefix.toString();\n }\n\n if (indexSuffix !== undefined) {\n queryParameters['indexSuffix'] = indexSuffix.toString();\n }\n\n if (direction !== undefined) {\n queryParameters['direction'] = direction.toString();\n }\n\n const request: Request = {\n method: 'GET',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * Lists all A/B tests you configured for this application.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n *\n * Required API Key ACLs:\n * - analytics\n * @param listABTests - The listABTests object.\n * @param listABTests.offset - Position of the first item to return.\n * @param listABTests.limit - Number of items to return.\n * @param listABTests.indexPrefix - Index name prefix. Only A/B tests for indices starting with this string are included in the response.\n * @param listABTests.indexSuffix - Index name suffix. Only A/B tests for indices ending with this string are included in the response.\n * @param listABTests.direction - Sort order for A/B tests by start date. Use \\'asc\\' for ascending or \\'desc\\' for descending. Active A/B tests are always listed first.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see listABTests for the plain version.\n */\n listABTestsWithHTTPInfo(\n { offset, limit, indexPrefix, indexSuffix, direction }: ListABTestsProps = {},\n requestOptions: RequestOptions | undefined = undefined,\n ): Promise<AlgoliaHttpResponse<ListABTestsResponse>> {\n const requestPath = '/3/abtests';\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n if (offset !== undefined) {\n queryParameters['offset'] = offset.toString();\n }\n\n if (limit !== undefined) {\n queryParameters['limit'] = limit.toString();\n }\n\n if (indexPrefix !== undefined) {\n queryParameters['indexPrefix'] = indexPrefix.toString();\n }\n\n if (indexSuffix !== undefined) {\n queryParameters['indexSuffix'] = indexSuffix.toString();\n }\n\n if (direction !== undefined) {\n queryParameters['direction'] = direction.toString();\n }\n\n const request: Request = {\n method: 'GET',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * Stops an A/B test by its ID. You can\\'t restart stopped A/B tests.\n *\n * Required API Key ACLs:\n * - editSettings\n * @param stopABTest - The stopABTest object.\n * @param stopABTest.id - Unique A/B test identifier.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n stopABTest({ id }: StopABTestProps, requestOptions?: RequestOptions): Promise<ABTestResponse> {\n validateRequired('id', 'stopABTest', id);\n\n const requestPath = '/3/abtests/{id}/stop'.replace('{id}', encodeURIComponent(id));\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'POST',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * Stops an A/B test by its ID. You can\\'t restart stopped A/B tests.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n *\n * Required API Key ACLs:\n * - editSettings\n * @param stopABTest - The stopABTest object.\n * @param stopABTest.id - Unique A/B test identifier.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see stopABTest for the plain version.\n */\n stopABTestWithHTTPInfo(\n { id }: StopABTestProps,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<ABTestResponse>> {\n validateRequired('id', 'stopABTestWithHTTPInfo', id);\n\n const requestPath = '/3/abtests/{id}/stop'.replace('{id}', encodeURIComponent(id));\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'POST',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../builds/browser.ts","../../src/abtestingV3Client.ts"],"sourcesContent":["// Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT.\n\nimport {\n createBrowserLocalStorageCache,\n createFallbackableCache,\n createMemoryCache,\n createNullLogger,\n} from '@algolia/client-common';\nimport { createXhrRequester } from '@algolia/requester-browser-xhr';\n\nimport type { ClientOptions } from '@algolia/client-common';\n\nimport { apiClientVersion, createAbtestingV3Client } from '../src/abtestingV3Client';\n\nimport type { Region } from '../src/abtestingV3Client';\nimport { REGIONS } from '../src/abtestingV3Client';\n\nexport type { Region, RegionOptions } from '../src/abtestingV3Client';\n\nexport { apiClientVersion } from '../src/abtestingV3Client';\n\nexport * from '../model';\n\nexport function abtestingV3Client(\n appId: string,\n apiKey: string,\n region?: Region | undefined,\n options?: ClientOptions | undefined,\n): AbtestingV3Client {\n if (!appId || typeof appId !== 'string') {\n throw new Error('`appId` is missing.');\n }\n\n if (!apiKey || typeof apiKey !== 'string') {\n throw new Error('`apiKey` is missing.');\n }\n\n if (region && (typeof region !== 'string' || !REGIONS.includes(region))) {\n throw new Error(`\\`region\\` must be one of the following: ${REGIONS.join(', ')}`);\n }\n\n const { compression: _compression, ...browserOptions } = options || {};\n\n return createAbtestingV3Client({\n appId,\n apiKey,\n region,\n timeouts: {\n connect: 1000,\n read: 2000,\n write: 30000,\n },\n logger: createNullLogger(),\n requester: createXhrRequester(),\n algoliaAgents: [{ segment: 'Browser' }],\n authMode: 'WithinQueryParameters',\n responsesCache: createMemoryCache(),\n requestsCache: createMemoryCache({ serializable: false }),\n hostsCache: createFallbackableCache({\n caches: [createBrowserLocalStorageCache({ key: `${apiClientVersion}-${appId}` }), createMemoryCache()],\n }),\n ...browserOptions,\n });\n}\n\nexport type AbtestingV3Client = ReturnType<typeof createAbtestingV3Client>;\n","// Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT.\n\nimport type {\n AlgoliaHttpResponse,\n CreateClientOptions,\n Headers,\n Host,\n QueryParameters,\n Request,\n RequestOptions,\n} from '@algolia/client-common';\nimport { createAuth, createTransporter, getAlgoliaAgent, validateRequired } from '@algolia/client-common';\n\nimport type { ABTest } from '../model/aBTest';\nimport type { ABTestResponse } from '../model/aBTestResponse';\nimport type { AddABTestsRequest } from '../model/addABTestsRequest';\nimport type { EstimateABTestRequest } from '../model/estimateABTestRequest';\nimport type { EstimateABTestResponse } from '../model/estimateABTestResponse';\nimport type { ListABTestsResponse } from '../model/listABTestsResponse';\nimport type { Timeseries } from '../model/timeseries';\n\nimport type {\n CustomDeleteProps,\n CustomGetProps,\n CustomPostProps,\n CustomPutProps,\n DeleteABTestProps,\n GetABTestProps,\n GetTimeseriesProps,\n ListABTestsProps,\n StopABTestProps,\n} from '../model/clientMethodProps';\n\nexport const apiClientVersion = '1.25.0';\n\nexport const REGIONS = ['de', 'us'] as const;\nexport type Region = (typeof REGIONS)[number];\nexport type RegionOptions = { region?: Region | undefined };\n\nfunction getDefaultHosts(region?: Region | undefined): Host[] {\n const url = !region ? 'analytics.algolia.com' : 'analytics.{region}.algolia.com'.replace('{region}', region);\n\n return [{ url, accept: 'readWrite', protocol: 'https' }];\n}\n\nexport function createAbtestingV3Client({\n appId: appIdOption,\n apiKey: apiKeyOption,\n authMode,\n algoliaAgents,\n region: regionOption,\n ...options\n}: CreateClientOptions & RegionOptions) {\n const auth = createAuth(appIdOption, apiKeyOption, authMode);\n const transporter = createTransporter({\n hosts: getDefaultHosts(regionOption),\n ...options,\n algoliaAgent: getAlgoliaAgent({\n algoliaAgents,\n client: 'AbtestingV3',\n version: apiClientVersion,\n }),\n baseHeaders: {\n 'content-type': 'text/plain',\n ...auth.headers(),\n ...options.baseHeaders,\n },\n baseQueryParameters: {\n ...auth.queryParameters(),\n ...options.baseQueryParameters,\n },\n });\n\n return {\n transporter,\n\n /**\n * The `appId` currently in use.\n */\n appId: appIdOption,\n\n /**\n * The `apiKey` currently in use.\n */\n apiKey: apiKeyOption,\n\n /**\n * Clears the cache of the transporter for the `requestsCache` and `responsesCache` properties.\n */\n clearCache(): Promise<void> {\n return Promise.all([transporter.requestsCache.clear(), transporter.responsesCache.clear()]).then(() => undefined);\n },\n\n /**\n * Get the value of the `algoliaAgent`, used by our libraries internally and telemetry system.\n */\n get _ua(): string {\n return transporter.algoliaAgent.value;\n },\n\n /**\n * Adds a `segment` to the `x-algolia-agent` sent with every requests.\n *\n * @param segment - The algolia agent (user-agent) segment to add.\n * @param version - The version of the agent.\n */\n addAlgoliaAgent(segment: string, version?: string | undefined): void {\n transporter.algoliaAgent.add({ segment, version });\n },\n\n /**\n * Helper method to switch the API key used to authenticate the requests.\n *\n * @param params - Method params.\n * @param params.apiKey - The new API Key to use.\n */\n setClientApiKey({ apiKey }: { apiKey: string }): void {\n if (!authMode || authMode === 'WithinHeaders') {\n transporter.baseHeaders['x-algolia-api-key'] = apiKey;\n } else {\n transporter.baseQueryParameters['x-algolia-api-key'] = apiKey;\n }\n },\n\n /**\n * Creates a new A/B test.\n *\n * Required API Key ACLs:\n * - editSettings\n * @param addABTestsRequest - The addABTestsRequest object.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n addABTests(addABTestsRequest: AddABTestsRequest, requestOptions?: RequestOptions): Promise<ABTestResponse> {\n validateRequired('addABTestsRequest', 'addABTests', addABTestsRequest);\n\n validateRequired('addABTestsRequest.name', 'addABTests', addABTestsRequest.name);\n validateRequired('addABTestsRequest.variants', 'addABTests', addABTestsRequest.variants);\n validateRequired('addABTestsRequest.metrics', 'addABTests', addABTestsRequest.metrics);\n validateRequired('addABTestsRequest.endAt', 'addABTests', addABTestsRequest.endAt);\n\n const requestPath = '/3/abtests';\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'POST',\n path: requestPath,\n queryParameters,\n headers,\n data: addABTestsRequest,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * Creates a new A/B test.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n *\n * Required API Key ACLs:\n * - editSettings\n * @param addABTestsRequest - The addABTestsRequest object.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see addABTests for the plain version.\n */\n addABTestsWithHTTPInfo(\n addABTestsRequest: AddABTestsRequest,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<ABTestResponse>> {\n validateRequired('addABTestsRequest', 'addABTestsWithHTTPInfo', addABTestsRequest);\n\n validateRequired('addABTestsRequest.name', 'addABTestsWithHTTPInfo', addABTestsRequest.name);\n validateRequired('addABTestsRequest.variants', 'addABTestsWithHTTPInfo', addABTestsRequest.variants);\n validateRequired('addABTestsRequest.metrics', 'addABTestsWithHTTPInfo', addABTestsRequest.metrics);\n validateRequired('addABTestsRequest.endAt', 'addABTestsWithHTTPInfo', addABTestsRequest.endAt);\n\n const requestPath = '/3/abtests';\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'POST',\n path: requestPath,\n queryParameters,\n headers,\n data: addABTestsRequest,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * This method lets you send requests to the Algolia REST API.\n * @param customDelete - The customDelete object.\n * @param customDelete.path - Path of the endpoint, for example `1/newFeature`.\n * @param customDelete.parameters - Query parameters to apply to the current query.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n customDelete(\n { path, parameters }: CustomDeleteProps,\n requestOptions?: RequestOptions,\n ): Promise<Record<string, unknown>> {\n validateRequired('path', 'customDelete', path);\n\n const requestPath = '/{path}'.replace('{path}', path);\n const headers: Headers = {};\n const queryParameters: QueryParameters = parameters ? parameters : {};\n\n const request: Request = {\n method: 'DELETE',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * This method lets you send requests to the Algolia REST API.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n * @param customDelete - The customDelete object.\n * @param customDelete.path - Path of the endpoint, for example `1/newFeature`.\n * @param customDelete.parameters - Query parameters to apply to the current query.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see customDelete for the plain version.\n */\n customDeleteWithHTTPInfo(\n { path, parameters }: CustomDeleteProps,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<Record<string, unknown>>> {\n validateRequired('path', 'customDeleteWithHTTPInfo', path);\n\n const requestPath = '/{path}'.replace('{path}', path);\n const headers: Headers = {};\n const queryParameters: QueryParameters = parameters ? parameters : {};\n\n const request: Request = {\n method: 'DELETE',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * This method lets you send requests to the Algolia REST API.\n * @param customGet - The customGet object.\n * @param customGet.path - Path of the endpoint, for example `1/newFeature`.\n * @param customGet.parameters - Query parameters to apply to the current query.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n customGet({ path, parameters }: CustomGetProps, requestOptions?: RequestOptions): Promise<Record<string, unknown>> {\n validateRequired('path', 'customGet', path);\n\n const requestPath = '/{path}'.replace('{path}', path);\n const headers: Headers = {};\n const queryParameters: QueryParameters = parameters ? parameters : {};\n\n const request: Request = {\n method: 'GET',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * This method lets you send requests to the Algolia REST API.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n * @param customGet - The customGet object.\n * @param customGet.path - Path of the endpoint, for example `1/newFeature`.\n * @param customGet.parameters - Query parameters to apply to the current query.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see customGet for the plain version.\n */\n customGetWithHTTPInfo(\n { path, parameters }: CustomGetProps,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<Record<string, unknown>>> {\n validateRequired('path', 'customGetWithHTTPInfo', path);\n\n const requestPath = '/{path}'.replace('{path}', path);\n const headers: Headers = {};\n const queryParameters: QueryParameters = parameters ? parameters : {};\n\n const request: Request = {\n method: 'GET',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * This method lets you send requests to the Algolia REST API.\n * @param customPost - The customPost object.\n * @param customPost.path - Path of the endpoint, for example `1/newFeature`.\n * @param customPost.parameters - Query parameters to apply to the current query.\n * @param customPost.body - Parameters to send with the custom request.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n customPost(\n { path, parameters, body }: CustomPostProps,\n requestOptions?: RequestOptions,\n ): Promise<Record<string, unknown>> {\n validateRequired('path', 'customPost', path);\n\n const requestPath = '/{path}'.replace('{path}', path);\n const headers: Headers = {};\n const queryParameters: QueryParameters = parameters ? parameters : {};\n\n const request: Request = {\n method: 'POST',\n path: requestPath,\n queryParameters,\n headers,\n data: body ? body : {},\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * This method lets you send requests to the Algolia REST API.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n * @param customPost - The customPost object.\n * @param customPost.path - Path of the endpoint, for example `1/newFeature`.\n * @param customPost.parameters - Query parameters to apply to the current query.\n * @param customPost.body - Parameters to send with the custom request.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see customPost for the plain version.\n */\n customPostWithHTTPInfo(\n { path, parameters, body }: CustomPostProps,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<Record<string, unknown>>> {\n validateRequired('path', 'customPostWithHTTPInfo', path);\n\n const requestPath = '/{path}'.replace('{path}', path);\n const headers: Headers = {};\n const queryParameters: QueryParameters = parameters ? parameters : {};\n\n const request: Request = {\n method: 'POST',\n path: requestPath,\n queryParameters,\n headers,\n data: body ? body : {},\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * This method lets you send requests to the Algolia REST API.\n * @param customPut - The customPut object.\n * @param customPut.path - Path of the endpoint, for example `1/newFeature`.\n * @param customPut.parameters - Query parameters to apply to the current query.\n * @param customPut.body - Parameters to send with the custom request.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n customPut(\n { path, parameters, body }: CustomPutProps,\n requestOptions?: RequestOptions,\n ): Promise<Record<string, unknown>> {\n validateRequired('path', 'customPut', path);\n\n const requestPath = '/{path}'.replace('{path}', path);\n const headers: Headers = {};\n const queryParameters: QueryParameters = parameters ? parameters : {};\n\n const request: Request = {\n method: 'PUT',\n path: requestPath,\n queryParameters,\n headers,\n data: body ? body : {},\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * This method lets you send requests to the Algolia REST API.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n * @param customPut - The customPut object.\n * @param customPut.path - Path of the endpoint, for example `1/newFeature`.\n * @param customPut.parameters - Query parameters to apply to the current query.\n * @param customPut.body - Parameters to send with the custom request.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see customPut for the plain version.\n */\n customPutWithHTTPInfo(\n { path, parameters, body }: CustomPutProps,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<Record<string, unknown>>> {\n validateRequired('path', 'customPutWithHTTPInfo', path);\n\n const requestPath = '/{path}'.replace('{path}', path);\n const headers: Headers = {};\n const queryParameters: QueryParameters = parameters ? parameters : {};\n\n const request: Request = {\n method: 'PUT',\n path: requestPath,\n queryParameters,\n headers,\n data: body ? body : {},\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * Deletes an A/B test by its ID.\n *\n * Required API Key ACLs:\n * - editSettings\n * @param deleteABTest - The deleteABTest object.\n * @param deleteABTest.id - Unique A/B test identifier.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n deleteABTest({ id }: DeleteABTestProps, requestOptions?: RequestOptions): Promise<ABTestResponse> {\n validateRequired('id', 'deleteABTest', id);\n\n const requestPath = '/3/abtests/{id}'.replace('{id}', encodeURIComponent(id));\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'DELETE',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * Deletes an A/B test by its ID.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n *\n * Required API Key ACLs:\n * - editSettings\n * @param deleteABTest - The deleteABTest object.\n * @param deleteABTest.id - Unique A/B test identifier.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see deleteABTest for the plain version.\n */\n deleteABTestWithHTTPInfo(\n { id }: DeleteABTestProps,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<ABTestResponse>> {\n validateRequired('id', 'deleteABTestWithHTTPInfo', id);\n\n const requestPath = '/3/abtests/{id}'.replace('{id}', encodeURIComponent(id));\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'DELETE',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * Given the traffic percentage and the expected effect size, this endpoint estimates the sample size and duration of an A/B test based on historical traffic.\n *\n * Required API Key ACLs:\n * - analytics\n * @param estimateABTestRequest - The estimateABTestRequest object.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n estimateABTest(\n estimateABTestRequest: EstimateABTestRequest,\n requestOptions?: RequestOptions,\n ): Promise<EstimateABTestResponse> {\n validateRequired('estimateABTestRequest', 'estimateABTest', estimateABTestRequest);\n\n validateRequired('estimateABTestRequest.configuration', 'estimateABTest', estimateABTestRequest.configuration);\n validateRequired('estimateABTestRequest.variants', 'estimateABTest', estimateABTestRequest.variants);\n\n const requestPath = '/3/abtests/estimate';\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'POST',\n path: requestPath,\n queryParameters,\n headers,\n data: estimateABTestRequest,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * Given the traffic percentage and the expected effect size, this endpoint estimates the sample size and duration of an A/B test based on historical traffic.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n *\n * Required API Key ACLs:\n * - analytics\n * @param estimateABTestRequest - The estimateABTestRequest object.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see estimateABTest for the plain version.\n */\n estimateABTestWithHTTPInfo(\n estimateABTestRequest: EstimateABTestRequest,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<EstimateABTestResponse>> {\n validateRequired('estimateABTestRequest', 'estimateABTestWithHTTPInfo', estimateABTestRequest);\n\n validateRequired(\n 'estimateABTestRequest.configuration',\n 'estimateABTestWithHTTPInfo',\n estimateABTestRequest.configuration,\n );\n validateRequired('estimateABTestRequest.variants', 'estimateABTestWithHTTPInfo', estimateABTestRequest.variants);\n\n const requestPath = '/3/abtests/estimate';\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'POST',\n path: requestPath,\n queryParameters,\n headers,\n data: estimateABTestRequest,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * Retrieves the details for an A/B test by its ID.\n *\n * Required API Key ACLs:\n * - analytics\n * @param getABTest - The getABTest object.\n * @param getABTest.id - Unique A/B test identifier.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n getABTest({ id }: GetABTestProps, requestOptions?: RequestOptions): Promise<ABTest> {\n validateRequired('id', 'getABTest', id);\n\n const requestPath = '/3/abtests/{id}'.replace('{id}', encodeURIComponent(id));\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'GET',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * Retrieves the details for an A/B test by its ID.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n *\n * Required API Key ACLs:\n * - analytics\n * @param getABTest - The getABTest object.\n * @param getABTest.id - Unique A/B test identifier.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see getABTest for the plain version.\n */\n getABTestWithHTTPInfo(\n { id }: GetABTestProps,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<ABTest>> {\n validateRequired('id', 'getABTestWithHTTPInfo', id);\n\n const requestPath = '/3/abtests/{id}'.replace('{id}', encodeURIComponent(id));\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'GET',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * Retrieves timeseries for an A/B test by its ID.\n *\n * Required API Key ACLs:\n * - analytics\n * @param getTimeseries - The getTimeseries object.\n * @param getTimeseries.id - Unique A/B test identifier.\n * @param getTimeseries.startDate - Start date of the period to analyze, in `YYYY-MM-DD` format.\n * @param getTimeseries.endDate - End date of the period to analyze, in `YYYY-MM-DD` format.\n * @param getTimeseries.metric - List of metrics to retrieve. If not specified, all metrics are returned.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n getTimeseries(\n { id, startDate, endDate, metric }: GetTimeseriesProps,\n requestOptions?: RequestOptions,\n ): Promise<Timeseries> {\n validateRequired('id', 'getTimeseries', id);\n\n const requestPath = '/3/abtests/{id}/timeseries'.replace('{id}', encodeURIComponent(id));\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n if (startDate !== undefined) {\n queryParameters['startDate'] = startDate.toString();\n }\n\n if (endDate !== undefined) {\n queryParameters['endDate'] = endDate.toString();\n }\n\n if (metric !== undefined) {\n queryParameters['metric'] = metric.toString();\n }\n\n const request: Request = {\n method: 'GET',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * Retrieves timeseries for an A/B test by its ID.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n *\n * Required API Key ACLs:\n * - analytics\n * @param getTimeseries - The getTimeseries object.\n * @param getTimeseries.id - Unique A/B test identifier.\n * @param getTimeseries.startDate - Start date of the period to analyze, in `YYYY-MM-DD` format.\n * @param getTimeseries.endDate - End date of the period to analyze, in `YYYY-MM-DD` format.\n * @param getTimeseries.metric - List of metrics to retrieve. If not specified, all metrics are returned.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see getTimeseries for the plain version.\n */\n getTimeseriesWithHTTPInfo(\n { id, startDate, endDate, metric }: GetTimeseriesProps,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<Timeseries>> {\n validateRequired('id', 'getTimeseriesWithHTTPInfo', id);\n\n const requestPath = '/3/abtests/{id}/timeseries'.replace('{id}', encodeURIComponent(id));\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n if (startDate !== undefined) {\n queryParameters['startDate'] = startDate.toString();\n }\n\n if (endDate !== undefined) {\n queryParameters['endDate'] = endDate.toString();\n }\n\n if (metric !== undefined) {\n queryParameters['metric'] = metric.toString();\n }\n\n const request: Request = {\n method: 'GET',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * Lists all A/B tests you configured for this application.\n *\n * Required API Key ACLs:\n * - analytics\n * @param listABTests - The listABTests object.\n * @param listABTests.offset - Position of the first item to return.\n * @param listABTests.limit - Number of items to return.\n * @param listABTests.indexPrefix - Index name prefix. Only A/B tests for indices starting with this string are included in the response.\n * @param listABTests.indexSuffix - Index name suffix. Only A/B tests for indices ending with this string are included in the response.\n * @param listABTests.direction - Sort order for A/B tests by start date. Use \\'asc\\' for ascending or \\'desc\\' for descending. Active A/B tests are always listed first.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n listABTests(\n { offset, limit, indexPrefix, indexSuffix, direction }: ListABTestsProps = {},\n requestOptions: RequestOptions | undefined = undefined,\n ): Promise<ListABTestsResponse> {\n const requestPath = '/3/abtests';\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n if (offset !== undefined) {\n queryParameters['offset'] = offset.toString();\n }\n\n if (limit !== undefined) {\n queryParameters['limit'] = limit.toString();\n }\n\n if (indexPrefix !== undefined) {\n queryParameters['indexPrefix'] = indexPrefix.toString();\n }\n\n if (indexSuffix !== undefined) {\n queryParameters['indexSuffix'] = indexSuffix.toString();\n }\n\n if (direction !== undefined) {\n queryParameters['direction'] = direction.toString();\n }\n\n const request: Request = {\n method: 'GET',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * Lists all A/B tests you configured for this application.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n *\n * Required API Key ACLs:\n * - analytics\n * @param listABTests - The listABTests object.\n * @param listABTests.offset - Position of the first item to return.\n * @param listABTests.limit - Number of items to return.\n * @param listABTests.indexPrefix - Index name prefix. Only A/B tests for indices starting with this string are included in the response.\n * @param listABTests.indexSuffix - Index name suffix. Only A/B tests for indices ending with this string are included in the response.\n * @param listABTests.direction - Sort order for A/B tests by start date. Use \\'asc\\' for ascending or \\'desc\\' for descending. Active A/B tests are always listed first.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see listABTests for the plain version.\n */\n listABTestsWithHTTPInfo(\n { offset, limit, indexPrefix, indexSuffix, direction }: ListABTestsProps = {},\n requestOptions: RequestOptions | undefined = undefined,\n ): Promise<AlgoliaHttpResponse<ListABTestsResponse>> {\n const requestPath = '/3/abtests';\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n if (offset !== undefined) {\n queryParameters['offset'] = offset.toString();\n }\n\n if (limit !== undefined) {\n queryParameters['limit'] = limit.toString();\n }\n\n if (indexPrefix !== undefined) {\n queryParameters['indexPrefix'] = indexPrefix.toString();\n }\n\n if (indexSuffix !== undefined) {\n queryParameters['indexSuffix'] = indexSuffix.toString();\n }\n\n if (direction !== undefined) {\n queryParameters['direction'] = direction.toString();\n }\n\n const request: Request = {\n method: 'GET',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n\n /**\n * Stops an A/B test by its ID. You can\\'t restart stopped A/B tests.\n *\n * Required API Key ACLs:\n * - editSettings\n * @param stopABTest - The stopABTest object.\n * @param stopABTest.id - Unique A/B test identifier.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n stopABTest({ id }: StopABTestProps, requestOptions?: RequestOptions): Promise<ABTestResponse> {\n validateRequired('id', 'stopABTest', id);\n\n const requestPath = '/3/abtests/{id}/stop'.replace('{id}', encodeURIComponent(id));\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'POST',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.request(request, requestOptions);\n },\n /**\n * Stops an A/B test by its ID. You can\\'t restart stopped A/B tests.\n *\n * Resolves with the full HTTP response information: status code, headers (when the requester captures them), raw body and deserialized data. Bypasses the requests and responses caches: always performs the API call.\n *\n * Required API Key ACLs:\n * - editSettings\n * @param stopABTest - The stopABTest object.\n * @param stopABTest.id - Unique A/B test identifier.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n * @see stopABTest for the plain version.\n */\n stopABTestWithHTTPInfo(\n { id }: StopABTestProps,\n requestOptions?: RequestOptions,\n ): Promise<AlgoliaHttpResponse<ABTestResponse>> {\n validateRequired('id', 'stopABTestWithHTTPInfo', id);\n\n const requestPath = '/3/abtests/{id}/stop'.replace('{id}', encodeURIComponent(id));\n const headers: Headers = {};\n const queryParameters: QueryParameters = {};\n\n const request: Request = {\n method: 'POST',\n path: requestPath,\n queryParameters,\n headers,\n };\n\n return transporter.requestWithHttpInfo(request, requestOptions);\n },\n };\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
- function Z(e){let t,o=`algolia-client-js-${e.key}`;function s(){return t===void 0&&(t=e.localStorage||window.localStorage),t}function d(){return JSON.parse(s().getItem(o)||"{}")}function f(r){s().setItem(o,JSON.stringify(r))}function y(){return new Promise(r=>setTimeout(r,0))}function i(){let r=e.timeToLive?e.timeToLive*1e3:null,n=d(),a=new Date().getTime(),c=!1;return{namespace:Object.fromEntries(Object.entries(n).filter(([,u])=>!u||u.timestamp===void 0||r&&u.timestamp+r<a?(c=!0,!1):!0)),changed:c}}return{get(r,n,a={miss:()=>Promise.resolve()}){return y().then(()=>{let{namespace:c,changed:l}=i(),u=c[JSON.stringify(r)];return l&&f(c),u?u.value:n().then(T=>a.miss(T).then(()=>T))})},set(r,n){return y().then(()=>{let a=d();return a[JSON.stringify(r)]={timestamp:new Date().getTime(),value:n},s().setItem(o,JSON.stringify(a)),n})},delete(r){return y().then(()=>{let n=d();delete n[JSON.stringify(r)],s().setItem(o,JSON.stringify(n))})},clear(){return Promise.resolve().then(()=>{s().removeItem(o)})}}}function de(){return{get(e,t,o={miss:()=>Promise.resolve()}){return t().then(d=>Promise.all([d,o.miss(d)])).then(([d])=>d)},set(e,t){return Promise.resolve(t)},delete(e){return Promise.resolve()},clear(){return Promise.resolve()}}}function b(e){let t=[...e.caches],o=t.shift();return o===void 0?de():{get(s,d,f={miss:()=>Promise.resolve()}){return o.get(s,d,f).catch(()=>b({caches:t}).get(s,d,f))},set(s,d){return o.set(s,d).catch(()=>b({caches:t}).set(s,d))},delete(s){return o.delete(s).catch(()=>b({caches:t}).delete(s))},clear(){return o.clear().catch(()=>b({caches:t}).clear())}}}function D(e={serializable:!0}){let t={};return{get(o,s,d={miss:()=>Promise.resolve()}){let f=JSON.stringify(o);if(f in t)return Promise.resolve(e.serializable?JSON.parse(t[f]):t[f]);let y=s();return y.then(i=>d.miss(i)).then(()=>y)},set(o,s){return t[JSON.stringify(o)]=e.serializable?JSON.stringify(s):s,Promise.resolve(s)},delete(o){return delete t[JSON.stringify(o)],Promise.resolve()},clear(){return t={},Promise.resolve()}}}function le(e){let t={value:`Algolia for JavaScript (${e})`,add(o){let s=`; ${o.segment}${o.version!==void 0?` (${o.version})`:""}`;return t.value.indexOf(s)===-1&&(t.value=`${t.value}${s}`),t}};return t}function ee(e,t,o="WithinHeaders"){let s={"x-algolia-api-key":t,"x-algolia-application-id":e};return{headers(){return o==="WithinHeaders"?s:{}},queryParameters(){return o==="WithinQueryParameters"?s:{}}}}function te({algoliaAgents:e,client:t,version:o}){let s=le(o).add({segment:t,version:o});return e.forEach(d=>s.add(d)),s}function re(){return{debug(e,t){return Promise.resolve()},info(e,t){return Promise.resolve()},error(e,t){return Promise.resolve()}}}var me=10*1024*1024;async function*pe(e){let t=e.getReader();try{for(;;){let{done:o,value:s}=await t.read();if(o)return;yield s}}finally{t.releaseLock()}}function he(e){return Symbol.asyncIterator in e?e:pe(e)}async function*fe(e){let t=new TextDecoder("utf-8"),o=[],s=0,d=!1,f=!0;for await(let i of he(e)){let r=t.decode(i,{stream:!0}),n=0;for(d&&(d=!1,r.length>0&&r[0]===`
2
- `&&(n=1));n<r.length;){let a=r.indexOf("\r",n),c=r.indexOf(`
3
- `,n);if(a===-1&&c===-1){let q=r.slice(n);if(o.push(q),s+=q.length,s>me)throw new Error("SSE line buffer exceeded 10MB");break}let l,u;a!==-1&&(c===-1||a<c)?(l=a,a+1<r.length?u=r[a+1]===`
4
- `?2:1:(d=!0,u=1)):(l=c,u=1);let T=r.slice(n,l);o.push(T);let P=o.length===1?o[0]:o.join("");o.length=0,s=0,f&&(P.startsWith("\uFEFF")&&(P=P.slice(1)),f=!1),yield P,n=l+u}}let y=t.decode();if(y&&o.push(y),o.length>0){let i=o.join("");f&&i.startsWith("\uFEFF")&&(i=i.slice(1)),yield i}}var Pe=class{data=[];eventType="";lastEventId=null;retry=null;decode(e){if(e==="")return this.dispatch();if(e[0]===":")return null;let t=e.indexOf(":"),o,s;switch(t===-1?(o=e,s=""):(o=e.slice(0,t),s=e.slice(t+1),s[0]===" "&&(s=s.slice(1))),o){case"data":this.data.push(s);break;case"event":this.eventType=s;break;case"id":s.includes("\0")||(this.lastEventId=s);break;case"retry":/^[0-9]+$/.test(s)&&(this.retry=parseInt(s,10));break}return null}dispatch(){let e=this.eventType;if(this.eventType="",this.data.length===0)return null;let t={data:this.data.join(`
5
- `),event:e,id:this.lastEventId,retry:this.retry};return this.data=[],t}};async function*Te(e){let t=new Pe;for await(let o of fe(e)){let s=t.decode(o);s!==null&&(yield s)}}var ge=750,J=120*1e3;function M(e,t="up"){let o=Date.now();function s(){return t==="up"||Date.now()-o>J}function d(){return t==="timed out"&&Date.now()-o<=J}return{...e,status:t,lastUpdate:o,isUp:s,isTimedOut:d}}var se=class extends Error{name="AlgoliaError";constructor(e,t){super(e),t&&(this.name=t)}};var oe=class extends se{stackTrace;constructor(e,t,o){super(e,o),this.stackTrace=t}},V=class extends oe{constructor(e){super("Unreachable hosts - your application id may be incorrect. If the error persists, please visit our help center https://alg.li/support-unreachable-hosts or reach out to the Algolia Support team: https://alg.li/support",e,"RetryError")}},G=class extends oe{status;constructor(e,t,o,s="ApiError"){super(e,o,s),this.status=t}},ye=class extends se{response;constructor(e,t){super(e,"DeserializationError"),this.response=t}},qe=class extends G{error;constructor(e,t,o,s){super(e,t,s,"DetailedApiError"),this.error=o}};function X(e,t,o){let s=Ae(o),d=`${e.protocol}://${e.url}${e.port?`:${e.port}`:""}/${t.charAt(0)==="/"?t.substring(1):t}`;return s.length&&(d+=`?${s}`),d}function Ae(e){return Object.keys(e).filter(t=>e[t]!==void 0).sort().map(t=>`${t}=${encodeURIComponent(Object.prototype.toString.call(e[t])==="[object Array]"?e[t].join(","):e[t]).replace(/\+/g,"%20")}`).join("&")}function K(e,t){if(e.method==="GET"||e.data===void 0&&t.data===void 0)return;let o=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(o)}function Y(e,t,o){let s={Accept:"application/json",...e,...t,...o},d={};return Object.keys(s).forEach(f=>{let y=s[f];d[f.toLowerCase()]=y}),d}function ne(e){if(!(e.status===204||e.content.length===0))try{return JSON.parse(e.content)}catch(t){throw new ye(t.message,e)}}function Re(e){return{status:e.status,headers:e.headers,content:e.content,data:ne(e)}}function Ee({content:e,status:t},o){try{let s=JSON.parse(e);return"error"in s?new qe(s.message,t,s.error,o):new G(s.message,t,o)}catch{}return new G(e,t,o)}function ve({isTimedOut:e,status:t}){return!e&&~~t===0}function Ie({isTimedOut:e,status:t}){return e||ve({isTimedOut:e,status:t})||~~(t/100)!==2&&~~(t/100)!==4}function He({status:e}){return~~(e/100)===2}function Se(e){return e.map(t=>ae(t))}function ae(e){let t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}function ie({hosts:e,hostsCache:t,baseHeaders:o,logger:s,baseQueryParameters:d,algoliaAgent:f,timeouts:y,requester:i,requestsCache:r,responsesCache:n,compress:a,compression:c}){async function l(m){let h=await Promise.all(m.map(g=>t.get(g,()=>Promise.resolve(M(g))))),I=h.filter(g=>g.isUp()),R=h.filter(g=>g.isTimedOut()),H=[...I,...R];return{hosts:H.length>0?H:m,getTimeout(g,S){return(R.length===0&&g===0?1:R.length+3+g)*S}}}async function u(m,h,I){let R=[],H=K(m,h),A=Y(o,m.headers,h.headers),g=c==="gzip"&&H!==void 0&&H.length>ge&&(m.method==="POST"||m.method==="PUT");g&&a===void 0&&s.info("Compression is disabled because no compress method is available.");let S=g&&a!==void 0,_=S?await a(H):H;S&&(A["content-encoding"]="gzip");let C=m.method==="GET"?{...m.data,...h.data}:{},x={...d,...m.queryParameters,...C};if(f.value&&(x["x-algolia-agent"]=f.value),h&&h.queryParameters)for(let E of Object.keys(h.queryParameters))!h.queryParameters[E]||Object.prototype.toString.call(h.queryParameters[E])==="[object Object]"?x[E]=h.queryParameters[E]:x[E]=h.queryParameters[E].toString();let w=0,W=async(E,N)=>{let O=E.pop();if(O===void 0)throw new V(Se(R));let k={...y,...h.timeouts},j={data:_,headers:A,method:m.method,url:X(O,m.path,x),connectTimeout:N(w,k.connect),responseTimeout:N(w,I?k.read:k.write)},F=U=>{let z={request:j,response:U,host:O,triesLeft:E.length};return R.push(z),z},B=await i.send(j);if(Ie(B)){let U=F(B);return B.isTimedOut&&w++,s.info("Retryable failure",ae(U)),await t.set(O,M(O,B.isTimedOut?"timed out":"down")),W(E,N)}if(He(B))return B;throw F(B),Ee(B,R)},v=e.filter(E=>E.accept==="readWrite"||(I?E.accept==="read":E.accept==="write")),$=await l(v);return W([...$.hosts].reverse(),$.getTimeout)}function T(m,h={}){let I=()=>u(m,h,R).then(g=>ne(g)),R=m.useReadTransporter||m.method==="GET";if((h.cacheable||m.cacheable)!==!0)return I();let A={request:m,requestOptions:h,transporter:{queryParameters:d,headers:o}};return n.get(A,()=>r.get(A,()=>r.set(A,I()).then(g=>Promise.all([r.delete(A),g]),g=>Promise.all([r.delete(A),Promise.reject(g)])).then(([g,S])=>S)),{miss:g=>n.set(A,g)})}function P(m,h={}){let I=m.useReadTransporter||m.method==="GET";return u(m,h,I).then(R=>Re(R))}async function*q(m,h={}){if(!i.sendStream)throw new Error("This requester does not support streaming");let I=K(m,h),R=Y(o,m.headers,h.headers);R.accept="text/event-stream";let H=m.method==="GET"?{...m.data,...h.data}:{},A={...d,...m.queryParameters,...H};if(f.value&&(A["x-algolia-agent"]=f.value),h&&h.queryParameters)for(let v of Object.keys(h.queryParameters))!h.queryParameters[v]||Object.prototype.toString.call(h.queryParameters[v])==="[object Object]"?A[v]=h.queryParameters[v]:A[v]=h.queryParameters[v].toString();let g=m.useReadTransporter||m.method==="GET",S=e.filter(v=>v.accept==="readWrite"||(g?v.accept==="read":v.accept==="write")),C=(await l(S)).hosts[0];if(!C)throw new V([]);let x={...y,...h.timeouts},w={data:I,headers:R,method:m.method,url:X(C,m.path,A),connectTimeout:x.connect,responseTimeout:g?x.read:x.write},W=await i.sendStream(w);yield*Te(W)}return{hostsCache:t,requester:i,timeouts:y,logger:s,algoliaAgent:f,baseHeaders:o,baseQueryParameters:d,hosts:e,request:T,requestWithHttpInfo:P,requestStream:q,requestsCache:r,responsesCache:n}}function p(e,t,o){if(o==null||typeof o=="string"&&o.length===0)throw new Error(`Parameter \`${e}\` is required when calling \`${t}\`.`)}function xe(e){let t={};for(let o of e.trim().split(/[\r\n]+/)){let s=o.indexOf(": ");s>0&&(t[o.slice(0,s).toLowerCase()]=o.slice(s+2))}return t}function ue(){function e(t){return new Promise(o=>{let s=new XMLHttpRequest;s.open(t.method,t.url,!0),Object.keys(t.headers).forEach(i=>s.setRequestHeader(i,t.headers[i]));let d=(i,r)=>setTimeout(()=>{s.abort(),o({status:0,content:r,isTimedOut:!0})},i),f=d(t.connectTimeout,"Connection timeout"),y;s.onreadystatechange=()=>{s.readyState>s.OPENED&&y===void 0&&(clearTimeout(f),y=d(t.responseTimeout,"Socket timeout"))},s.onerror=()=>{s.status===0&&(clearTimeout(f),clearTimeout(y),o({content:s.responseText||"Network request failed",status:s.status,isTimedOut:!1}))},s.onload=()=>{clearTimeout(f),clearTimeout(y),o({content:s.responseText,headers:xe(s.getAllResponseHeaders()),status:s.status,isTimedOut:!1})},s.send(t.data)})}return{send:e}}var L="1.22.0",Q=["de","us"];function Be(e){return[{url:e?"analytics.{region}.algolia.com".replace("{region}",e):"analytics.algolia.com",accept:"readWrite",protocol:"https"}]}function ce({appId:e,apiKey:t,authMode:o,algoliaAgents:s,region:d,...f}){let y=ee(e,t,o),i=ie({hosts:Be(d),...f,algoliaAgent:te({algoliaAgents:s,client:"AbtestingV3",version:L}),baseHeaders:{"content-type":"text/plain",...y.headers(),...f.baseHeaders},baseQueryParameters:{...y.queryParameters(),...f.baseQueryParameters}});return{transporter:i,appId:e,apiKey:t,clearCache(){return Promise.all([i.requestsCache.clear(),i.responsesCache.clear()]).then(()=>{})},get _ua(){return i.algoliaAgent.value},addAlgoliaAgent(r,n){i.algoliaAgent.add({segment:r,version:n})},setClientApiKey({apiKey:r}){!o||o==="WithinHeaders"?i.baseHeaders["x-algolia-api-key"]=r:i.baseQueryParameters["x-algolia-api-key"]=r},addABTests(r,n){p("addABTestsRequest","addABTests",r),p("addABTestsRequest.name","addABTests",r.name),p("addABTestsRequest.variants","addABTests",r.variants),p("addABTestsRequest.metrics","addABTests",r.metrics),p("addABTestsRequest.endAt","addABTests",r.endAt);let u={method:"POST",path:"/3/abtests",queryParameters:{},headers:{},data:r};return i.request(u,n)},addABTestsWithHTTPInfo(r,n){p("addABTestsRequest","addABTestsWithHTTPInfo",r),p("addABTestsRequest.name","addABTestsWithHTTPInfo",r.name),p("addABTestsRequest.variants","addABTestsWithHTTPInfo",r.variants),p("addABTestsRequest.metrics","addABTestsWithHTTPInfo",r.metrics),p("addABTestsRequest.endAt","addABTestsWithHTTPInfo",r.endAt);let u={method:"POST",path:"/3/abtests",queryParameters:{},headers:{},data:r};return i.requestWithHttpInfo(u,n)},customDelete({path:r,parameters:n},a){p("path","customDelete",r);let T={method:"DELETE",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{}};return i.request(T,a)},customDeleteWithHTTPInfo({path:r,parameters:n},a){p("path","customDeleteWithHTTPInfo",r);let T={method:"DELETE",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{}};return i.requestWithHttpInfo(T,a)},customGet({path:r,parameters:n},a){p("path","customGet",r);let T={method:"GET",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{}};return i.request(T,a)},customGetWithHTTPInfo({path:r,parameters:n},a){p("path","customGetWithHTTPInfo",r);let T={method:"GET",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{}};return i.requestWithHttpInfo(T,a)},customPost({path:r,parameters:n,body:a},c){p("path","customPost",r);let P={method:"POST",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{},data:a||{}};return i.request(P,c)},customPostWithHTTPInfo({path:r,parameters:n,body:a},c){p("path","customPostWithHTTPInfo",r);let P={method:"POST",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{},data:a||{}};return i.requestWithHttpInfo(P,c)},customPut({path:r,parameters:n,body:a},c){p("path","customPut",r);let P={method:"PUT",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{},data:a||{}};return i.request(P,c)},customPutWithHTTPInfo({path:r,parameters:n,body:a},c){p("path","customPutWithHTTPInfo",r);let P={method:"PUT",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{},data:a||{}};return i.requestWithHttpInfo(P,c)},deleteABTest({id:r},n){p("id","deleteABTest",r);let u={method:"DELETE",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return i.request(u,n)},deleteABTestWithHTTPInfo({id:r},n){p("id","deleteABTestWithHTTPInfo",r);let u={method:"DELETE",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return i.requestWithHttpInfo(u,n)},estimateABTest(r,n){p("estimateABTestRequest","estimateABTest",r),p("estimateABTestRequest.configuration","estimateABTest",r.configuration),p("estimateABTestRequest.variants","estimateABTest",r.variants);let u={method:"POST",path:"/3/abtests/estimate",queryParameters:{},headers:{},data:r};return i.request(u,n)},estimateABTestWithHTTPInfo(r,n){p("estimateABTestRequest","estimateABTestWithHTTPInfo",r),p("estimateABTestRequest.configuration","estimateABTestWithHTTPInfo",r.configuration),p("estimateABTestRequest.variants","estimateABTestWithHTTPInfo",r.variants);let u={method:"POST",path:"/3/abtests/estimate",queryParameters:{},headers:{},data:r};return i.requestWithHttpInfo(u,n)},getABTest({id:r},n){p("id","getABTest",r);let u={method:"GET",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return i.request(u,n)},getABTestWithHTTPInfo({id:r},n){p("id","getABTestWithHTTPInfo",r);let u={method:"GET",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return i.requestWithHttpInfo(u,n)},getTimeseries({id:r,startDate:n,endDate:a,metric:c},l){p("id","getTimeseries",r);let u="/3/abtests/{id}/timeseries".replace("{id}",encodeURIComponent(r)),T={},P={};n!==void 0&&(P.startDate=n.toString()),a!==void 0&&(P.endDate=a.toString()),c!==void 0&&(P.metric=c.toString());let q={method:"GET",path:u,queryParameters:P,headers:T};return i.request(q,l)},getTimeseriesWithHTTPInfo({id:r,startDate:n,endDate:a,metric:c},l){p("id","getTimeseriesWithHTTPInfo",r);let u="/3/abtests/{id}/timeseries".replace("{id}",encodeURIComponent(r)),T={},P={};n!==void 0&&(P.startDate=n.toString()),a!==void 0&&(P.endDate=a.toString()),c!==void 0&&(P.metric=c.toString());let q={method:"GET",path:u,queryParameters:P,headers:T};return i.requestWithHttpInfo(q,l)},listABTests({offset:r,limit:n,indexPrefix:a,indexSuffix:c,direction:l}={},u=void 0){let T="/3/abtests",P={},q={};r!==void 0&&(q.offset=r.toString()),n!==void 0&&(q.limit=n.toString()),a!==void 0&&(q.indexPrefix=a.toString()),c!==void 0&&(q.indexSuffix=c.toString()),l!==void 0&&(q.direction=l.toString());let m={method:"GET",path:T,queryParameters:q,headers:P};return i.request(m,u)},listABTestsWithHTTPInfo({offset:r,limit:n,indexPrefix:a,indexSuffix:c,direction:l}={},u=void 0){let T="/3/abtests",P={},q={};r!==void 0&&(q.offset=r.toString()),n!==void 0&&(q.limit=n.toString()),a!==void 0&&(q.indexPrefix=a.toString()),c!==void 0&&(q.indexSuffix=c.toString()),l!==void 0&&(q.direction=l.toString());let m={method:"GET",path:T,queryParameters:q,headers:P};return i.requestWithHttpInfo(m,u)},stopABTest({id:r},n){p("id","stopABTest",r);let u={method:"POST",path:"/3/abtests/{id}/stop".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return i.request(u,n)},stopABTestWithHTTPInfo({id:r},n){p("id","stopABTestWithHTTPInfo",r);let u={method:"POST",path:"/3/abtests/{id}/stop".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return i.requestWithHttpInfo(u,n)}}}function Et(e,t,o,s){if(!e||typeof e!="string")throw new Error("`appId` is missing.");if(!t||typeof t!="string")throw new Error("`apiKey` is missing.");if(o&&(typeof o!="string"||!Q.includes(o)))throw new Error(`\`region\` must be one of the following: ${Q.join(", ")}`);let{compression:d,...f}=s||{};return ce({appId:e,apiKey:t,region:o,timeouts:{connect:1e3,read:2e3,write:3e4},logger:re(),requester:ue(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:D(),requestsCache:D({serializable:!1}),hostsCache:b({caches:[Z({key:`${L}-${e}`}),D()]}),...f})}export{Et as abtestingV3Client,L as apiClientVersion};
1
+ function ue(e){let t,s=`algolia-client-js-${e.key}`;function o(){return t===void 0&&(t=e.localStorage||window.localStorage),t}function c(){return JSON.parse(o().getItem(s)||"{}")}function h(r){o().setItem(s,JSON.stringify(r))}function y(){return new Promise(r=>setTimeout(r,0))}function u(){let r=e.timeToLive?e.timeToLive*1e3:null,n=c(),a=new Date().getTime(),d=!1;return{namespace:Object.fromEntries(Object.entries(n).filter(([,i])=>!i||i.timestamp===void 0||r&&i.timestamp+r<a?(d=!0,!1):!0)),changed:d}}return{get(r,n,a={miss:()=>Promise.resolve()}){return y().then(()=>{let{namespace:d,changed:l}=u(),i=d[JSON.stringify(r)];return l&&h(d),i?i.value:n().then(T=>a.miss(T).then(()=>T))})},set(r,n){return y().then(()=>{let a=c();return a[JSON.stringify(r)]={timestamp:new Date().getTime(),value:n},o().setItem(s,JSON.stringify(a)),n})},delete(r){return y().then(()=>{let n=c();delete n[JSON.stringify(r)],o().setItem(s,JSON.stringify(n))})},clear(){return Promise.resolve().then(()=>{o().removeItem(s)})}}}function Ae(){return{get(e,t,s={miss:()=>Promise.resolve()}){return t().then(c=>Promise.all([c,s.miss(c)])).then(([c])=>c)},set(e,t){return Promise.resolve(t)},delete(e){return Promise.resolve()},clear(){return Promise.resolve()}}}function C(e){let t=[...e.caches],s=t.shift();return s===void 0?Ae():{get(o,c,h={miss:()=>Promise.resolve()}){return s.get(o,c,h).catch(()=>C({caches:t}).get(o,c,h))},set(o,c){return s.set(o,c).catch(()=>C({caches:t}).set(o,c))},delete(o){return s.delete(o).catch(()=>C({caches:t}).delete(o))},clear(){return s.clear().catch(()=>C({caches:t}).clear())}}}function Q(e={serializable:!0}){let t={};return{get(s,o,c={miss:()=>Promise.resolve()}){let h=JSON.stringify(s);if(h in t)return Promise.resolve(e.serializable?JSON.parse(t[h]):t[h]);let y=o();return y.then(u=>c.miss(u)).then(()=>y)},set(s,o){return t[JSON.stringify(s)]=e.serializable?JSON.stringify(o):o,Promise.resolve(o)},delete(s){return delete t[JSON.stringify(s)],Promise.resolve()},clear(){return t={},Promise.resolve()}}}function Ee(e){let t={value:`Algolia for JavaScript (${e})`,add(s){let o=`; ${s.segment}${s.version!==void 0?` (${s.version})`:""}`;return t.value.indexOf(o)===-1&&(t.value=`${t.value}${o}`),t}};return t}function ce(e,t,s="WithinHeaders"){let o={"x-algolia-api-key":t,"x-algolia-application-id":e};return{headers(){return s==="WithinHeaders"?o:{}},queryParameters(){return s==="WithinQueryParameters"?o:{}}}}function de({algoliaAgents:e,client:t,version:s}){let o=Ee(s).add({segment:t,version:s});return e.forEach(c=>o.add(c)),o}function le(){return{debug(e,t){return Promise.resolve()},info(e,t){return Promise.resolve()},error(e,t){return Promise.resolve()}}}var ve=10*1024*1024;async function*Ie(e){let t=e.getReader();try{for(;;){let{done:s,value:o}=await t.read();if(s)return;yield o}}finally{t.releaseLock()}}function we(e){return Symbol.asyncIterator in e?e:Ie(e)}async function*Se(e){let t=new TextDecoder("utf-8"),s=[],o=0,c=!1,h=!0;for await(let u of we(e)){let r=t.decode(u,{stream:!0}),n=0;for(c&&(c=!1,r.length>0&&r[0]===`
2
+ `&&(n=1));n<r.length;){let a=r.indexOf("\r",n),d=r.indexOf(`
3
+ `,n);if(a===-1&&d===-1){let q=r.slice(n);if(s.push(q),o+=q.length,o>ve)throw new Error("SSE line buffer exceeded 10MB");break}let l,i;a!==-1&&(d===-1||a<d)?(l=a,a+1<r.length?i=r[a+1]===`
4
+ `?2:1:(c=!0,i=1)):(l=d,i=1);let T=r.slice(n,l);s.push(T);let P=s.length===1?s[0]:s.join("");s.length=0,o=0,h&&(P.startsWith("\uFEFF")&&(P=P.slice(1)),h=!1),yield P,n=l+i}}let y=t.decode();if(y&&s.push(y),s.length>0){let u=s.join("");h&&u.startsWith("\uFEFF")&&(u=u.slice(1)),yield u}}var He=class{data=[];eventType="";lastEventId=null;retry=null;decode(e){if(e==="")return this.dispatch();if(e[0]===":")return null;let t=e.indexOf(":"),s,o;switch(t===-1?(s=e,o=""):(s=e.slice(0,t),o=e.slice(t+1),o[0]===" "&&(o=o.slice(1))),s){case"data":this.data.push(o);break;case"event":this.eventType=o;break;case"id":o.includes("\0")||(this.lastEventId=o);break;case"retry":/^[0-9]+$/.test(o)&&(this.retry=parseInt(o,10));break}return null}dispatch(){let e=this.eventType;if(this.eventType="",this.data.length===0)return null;let t={data:this.data.join(`
5
+ `),event:e,id:this.lastEventId,retry:this.retry};return this.data=[],t}};async function*be(e){let t=new He;for await(let s of Se(e)){let o=t.decode(s);o!==null&&(yield o)}}var xe=750,Z=120*1e3;function ee(e,t="up"){let s=Date.now();function o(){return t==="up"||Date.now()-s>Z}function c(){return t==="timed out"&&Date.now()-s<=Z}return{...e,status:t,lastUpdate:s,isUp:o,isTimedOut:c}}var me=class extends Error{name="AlgoliaError";constructor(e,t){super(e),t&&(this.name=t)}};var fe=class extends me{stackTrace;correlationId;constructor(e,t,s,o){super(o?`${e} (Correlation-ID: ${o})`:e,s),this.stackTrace=t,this.correlationId=o}},te=class extends fe{constructor(e,t){super("Unreachable hosts - your application id may be incorrect. If the error persists, please visit our help center https://alg.li/support-unreachable-hosts or reach out to the Algolia Support team: https://alg.li/support",e,"RetryError",t)}},J=class extends fe{status;constructor(e,t,s,o="ApiError",c){super(e,s,o,c),this.status=t}};var Be=class extends me{response;correlationId;constructor(e,t,s){super(s?`${e} (Correlation-ID: ${s})`:e,"DeserializationError"),this.response=t,this.correlationId=s}},Oe=class extends J{error;constructor(e,t,s,o,c){super(e,t,o,"DetailedApiError",c),this.error=s}};function re(e,t,s){let o=Ce(s),c=`${e.protocol}://${e.url}${e.port?`:${e.port}`:""}/${t.charAt(0)==="/"?t.substring(1):t}`;return o.length&&(c+=`?${o}`),c}function Ce(e){return Object.keys(e).filter(t=>e[t]!==void 0).sort().map(t=>`${t}=${encodeURIComponent(Object.prototype.toString.call(e[t])==="[object Array]"?e[t].join(","):e[t]).replace(/\+/g,"%20")}`).join("&")}function se(e,t){if(e.method==="GET"||e.data===void 0&&t.data===void 0)return;let s=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(s)}function oe(e,t,s){let o={Accept:"application/json",...e,...t,...s},c={};return Object.keys(o).forEach(h=>{let y=o[h];c[h.toLowerCase()]=y}),c}function he(e){if(!(e.status===204||e.content.length===0))try{return JSON.parse(e.content)}catch(t){throw new Be(t.message,e,X(e.headers))}}function We(e){return{status:e.status,headers:e.headers,content:e.content,data:he(e)}}function X(e){if(!e)return;if(e["correlation-id"]!==void 0)return e["correlation-id"];let t=Object.keys(e).find(s=>s.toLowerCase()==="correlation-id");return t===void 0?void 0:e[t]}function Le(e){for(let t=e.length-1;t>=0;t--){let s=X(e[t].response.headers);if(s!==void 0)return s}}function _e(e,t){let{content:s,status:o}=e,c=X(e.headers);try{let h=JSON.parse(s);return"error"in h?new Oe(h.message,o,h.error,t,c):new J(h.message,o,t,"ApiError",c)}catch{}return new J(s,o,t,"ApiError",c)}var G="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",ne=11;function ae(){var e;let t="";if(typeof((e=globalThis.crypto)==null?void 0:e.getRandomValues)=="function"){let s=new Uint8Array(ne);globalThis.crypto.getRandomValues(s);for(let o of s)t+=G[o%G.length];return t}for(let s=0;s<ne;s++)t+=G[Math.floor(Math.random()*G.length)];return t}var z=1e3;function De({isTimedOut:e,status:t}){return!e&&~~t===0}function ke({isTimedOut:e,status:t}){return e||De({isTimedOut:e,status:t})||~~(t/100)!==2&&~~(t/100)!==4}function Ne({status:e}){return~~(e/100)===2}function pe({status:e}){return~~e===429}var Ue=/^HTTP 429(?:\D|$)/;function Ge(e){return typeof e=="object"&&e!==null&&"status"in e?pe(e):e instanceof Error&&Ue.test(e.message)}function Qe(e){if(typeof e=="object"&&e!==null&&"headers"in e)return e.headers}function ie(e){var t;let s=(t=e?.["retry-after"])==null?void 0:t.trim();if(s===void 0||s.length===0||!/^\d+$/.test(s))return z;let o=Number.parseInt(s,10);return o<=0?z:o*1e3}function $e(e){return e.map(t=>V(t))}function V(e){let t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}function Pe({hosts:e,hostsCache:t,baseHeaders:s,logger:o,baseQueryParameters:c,algoliaAgent:h,timeouts:y,requester:u,requestsCache:r,responsesCache:n,compress:a,compression:d,requestIdChannel:l,maxRateLimitRetries:i=3}){function T(m,f){l===void 0||m["request-id"]!==void 0||Object.keys(f).some(I=>I.toLowerCase()==="x-algolia-request-id")||(l==="headers"?m["request-id"]=ae():f["x-algolia-request-id"]=ae())}let P=m=>new Promise(f=>{setTimeout(f,m)});async function q(m){let f=await Promise.all(m.map(g=>t.get(g,()=>Promise.resolve(ee(g))))),I=f.filter(g=>g.isUp()),E=f.filter(g=>g.isTimedOut()),S=[...I,...E];return{hosts:S.length>0?S:m,getTimeout(g,b){return(E.length===0&&g===0?1:E.length+3+g)*b}}}async function B(m,f,I){let E=[],S=se(m,f),R=oe(s,m.headers,f.headers),g=d==="gzip"&&S!==void 0&&S.length>xe&&(m.method==="POST"||m.method==="PUT");g&&a===void 0&&o.info("Compression is disabled because no compress method is available.");let b=g&&a!==void 0,j=b?await a(S):S;b&&(R["content-encoding"]="gzip");let W=m.method==="GET"?{...m.data,...f.data}:{},H={...c,...m.queryParameters,...W};if(h.value&&(H["x-algolia-agent"]=h.value),f&&f.queryParameters)for(let v of Object.keys(f.queryParameters))!f.queryParameters[v]||Object.prototype.toString.call(f.queryParameters[v])==="[object Object]"?H[v]=f.queryParameters[v]:H[v]=f.queryParameters[v].toString();T(R,H);let L=0,x=i,A=async(v,U)=>{let O=v.pop();if(O===void 0)throw new te($e(E),Le(E));let M={...y,...f.timeouts},Y={data:j,headers:R,method:m.method,url:re(O,m.path,H),connectTimeout:U(L,M.connect),responseTimeout:U(L,I?M.read:M.write)},F=k=>{let N={request:Y,response:k,host:O,triesLeft:v.length};return E.push(N),N},w=await u.send(Y);if(pe(w)&&x>0){x--,v.push(O);let k=F(w),N=ie(w.headers);return o.info("Retryable failure",{...V(k),wait:N,rateLimitRetriesLeft:x}),await P(N),A(v,U)}if(ke(w)){let k=F(w);return w.isTimedOut&&L++,o.info("Retryable failure",V(k)),await t.set(O,ee(O,w.isTimedOut?"timed out":"down")),A(v,U)}if(Ne(w))return w;throw F(w),_e(w,E)},_=e.filter(v=>v.accept==="readWrite"||(I?v.accept==="read":v.accept==="write")),D=await q(_);return A([...D.hosts].reverse(),D.getTimeout)}function ye(m,f={}){let I=()=>B(m,f,E).then(g=>he(g)),E=m.useReadTransporter||m.method==="GET";if((f.cacheable||m.cacheable)!==!0)return I();let R={request:m,requestOptions:f,transporter:{queryParameters:c,headers:s}};return n.get(R,()=>r.get(R,()=>r.set(R,I()).then(g=>Promise.all([r.delete(R),g]),g=>Promise.all([r.delete(R),Promise.reject(g)])).then(([g,b])=>b)),{miss:g=>n.set(R,g)})}function qe(m,f={}){let I=m.useReadTransporter||m.method==="GET";return B(m,f,I).then(E=>We(E))}async function*Re(m,f={}){if(!u.sendStream)throw new Error("This requester does not support streaming");let I=se(m,f),E=oe(s,m.headers,f.headers);E.accept="text/event-stream";let S=m.method==="GET"?{...m.data,...f.data}:{},R={...c,...m.queryParameters,...S};if(h.value&&(R["x-algolia-agent"]=h.value),f&&f.queryParameters)for(let A of Object.keys(f.queryParameters))!f.queryParameters[A]||Object.prototype.toString.call(f.queryParameters[A])==="[object Object]"?R[A]=f.queryParameters[A]:R[A]=f.queryParameters[A].toString();T(E,R);let g=m.useReadTransporter||m.method==="GET",b=e.filter(A=>A.accept==="readWrite"||(g?A.accept==="read":A.accept==="write")),W=(await q(b)).hosts[0];if(!W)throw new te([]);let H={...y,...f.timeouts},L={data:I,headers:E,method:m.method,url:re(W,m.path,R),connectTimeout:H.connect,responseTimeout:g?H.read:H.write},x=i;for(;;){let A;try{A=await u.sendStream(L)}catch(_){if(Ge(_)&&x>0){x--;let D=ie(Qe(_));o.info("Retryable failure",{wait:D,rateLimitRetriesLeft:x,host:W}),await P(D);continue}throw _}yield*be(A);return}}return{hostsCache:t,requester:u,timeouts:y,logger:o,algoliaAgent:h,baseHeaders:s,baseQueryParameters:c,requestIdChannel:l,hosts:e,maxRateLimitRetries:i,request:ye,requestWithHttpInfo:qe,requestStream:Re,requestsCache:r,responsesCache:n}}function p(e,t,s){if(s==null||typeof s=="string"&&s.length===0)throw new Error(`Parameter \`${e}\` is required when calling \`${t}\`.`)}function je(e){let t={};for(let s of e.trim().split(/[\r\n]+/)){let o=s.indexOf(": ");o>0&&(t[s.slice(0,o).toLowerCase()]=s.slice(o+2))}return t}function Te(){function e(t){return new Promise(s=>{let o=new XMLHttpRequest;o.open(t.method,t.url,!0),Object.keys(t.headers).forEach(u=>o.setRequestHeader(u,t.headers[u]));let c=(u,r)=>setTimeout(()=>{o.abort(),s({status:0,content:r,isTimedOut:!0})},u),h=c(t.connectTimeout,"Connection timeout"),y;o.onreadystatechange=()=>{o.readyState>o.OPENED&&y===void 0&&(clearTimeout(h),y=c(t.responseTimeout,"Socket timeout"))},o.onerror=()=>{o.status===0&&(clearTimeout(h),clearTimeout(y),s({content:o.responseText||"Network request failed",status:o.status,isTimedOut:!1}))},o.onload=()=>{clearTimeout(h),clearTimeout(y),s({content:o.responseText,headers:je(o.getAllResponseHeaders()),status:o.status,isTimedOut:!1})},o.send(t.data)})}return{send:e}}var $="1.25.0",K=["de","us"];function Me(e){return[{url:e?"analytics.{region}.algolia.com".replace("{region}",e):"analytics.algolia.com",accept:"readWrite",protocol:"https"}]}function ge({appId:e,apiKey:t,authMode:s,algoliaAgents:o,region:c,...h}){let y=ce(e,t,s),u=Pe({hosts:Me(c),...h,algoliaAgent:de({algoliaAgents:o,client:"AbtestingV3",version:$}),baseHeaders:{"content-type":"text/plain",...y.headers(),...h.baseHeaders},baseQueryParameters:{...y.queryParameters(),...h.baseQueryParameters}});return{transporter:u,appId:e,apiKey:t,clearCache(){return Promise.all([u.requestsCache.clear(),u.responsesCache.clear()]).then(()=>{})},get _ua(){return u.algoliaAgent.value},addAlgoliaAgent(r,n){u.algoliaAgent.add({segment:r,version:n})},setClientApiKey({apiKey:r}){!s||s==="WithinHeaders"?u.baseHeaders["x-algolia-api-key"]=r:u.baseQueryParameters["x-algolia-api-key"]=r},addABTests(r,n){p("addABTestsRequest","addABTests",r),p("addABTestsRequest.name","addABTests",r.name),p("addABTestsRequest.variants","addABTests",r.variants),p("addABTestsRequest.metrics","addABTests",r.metrics),p("addABTestsRequest.endAt","addABTests",r.endAt);let i={method:"POST",path:"/3/abtests",queryParameters:{},headers:{},data:r};return u.request(i,n)},addABTestsWithHTTPInfo(r,n){p("addABTestsRequest","addABTestsWithHTTPInfo",r),p("addABTestsRequest.name","addABTestsWithHTTPInfo",r.name),p("addABTestsRequest.variants","addABTestsWithHTTPInfo",r.variants),p("addABTestsRequest.metrics","addABTestsWithHTTPInfo",r.metrics),p("addABTestsRequest.endAt","addABTestsWithHTTPInfo",r.endAt);let i={method:"POST",path:"/3/abtests",queryParameters:{},headers:{},data:r};return u.requestWithHttpInfo(i,n)},customDelete({path:r,parameters:n},a){p("path","customDelete",r);let T={method:"DELETE",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{}};return u.request(T,a)},customDeleteWithHTTPInfo({path:r,parameters:n},a){p("path","customDeleteWithHTTPInfo",r);let T={method:"DELETE",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{}};return u.requestWithHttpInfo(T,a)},customGet({path:r,parameters:n},a){p("path","customGet",r);let T={method:"GET",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{}};return u.request(T,a)},customGetWithHTTPInfo({path:r,parameters:n},a){p("path","customGetWithHTTPInfo",r);let T={method:"GET",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{}};return u.requestWithHttpInfo(T,a)},customPost({path:r,parameters:n,body:a},d){p("path","customPost",r);let P={method:"POST",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{},data:a||{}};return u.request(P,d)},customPostWithHTTPInfo({path:r,parameters:n,body:a},d){p("path","customPostWithHTTPInfo",r);let P={method:"POST",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{},data:a||{}};return u.requestWithHttpInfo(P,d)},customPut({path:r,parameters:n,body:a},d){p("path","customPut",r);let P={method:"PUT",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{},data:a||{}};return u.request(P,d)},customPutWithHTTPInfo({path:r,parameters:n,body:a},d){p("path","customPutWithHTTPInfo",r);let P={method:"PUT",path:"/{path}".replace("{path}",r),queryParameters:n||{},headers:{},data:a||{}};return u.requestWithHttpInfo(P,d)},deleteABTest({id:r},n){p("id","deleteABTest",r);let i={method:"DELETE",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return u.request(i,n)},deleteABTestWithHTTPInfo({id:r},n){p("id","deleteABTestWithHTTPInfo",r);let i={method:"DELETE",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return u.requestWithHttpInfo(i,n)},estimateABTest(r,n){p("estimateABTestRequest","estimateABTest",r),p("estimateABTestRequest.configuration","estimateABTest",r.configuration),p("estimateABTestRequest.variants","estimateABTest",r.variants);let i={method:"POST",path:"/3/abtests/estimate",queryParameters:{},headers:{},data:r};return u.request(i,n)},estimateABTestWithHTTPInfo(r,n){p("estimateABTestRequest","estimateABTestWithHTTPInfo",r),p("estimateABTestRequest.configuration","estimateABTestWithHTTPInfo",r.configuration),p("estimateABTestRequest.variants","estimateABTestWithHTTPInfo",r.variants);let i={method:"POST",path:"/3/abtests/estimate",queryParameters:{},headers:{},data:r};return u.requestWithHttpInfo(i,n)},getABTest({id:r},n){p("id","getABTest",r);let i={method:"GET",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return u.request(i,n)},getABTestWithHTTPInfo({id:r},n){p("id","getABTestWithHTTPInfo",r);let i={method:"GET",path:"/3/abtests/{id}".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return u.requestWithHttpInfo(i,n)},getTimeseries({id:r,startDate:n,endDate:a,metric:d},l){p("id","getTimeseries",r);let i="/3/abtests/{id}/timeseries".replace("{id}",encodeURIComponent(r)),T={},P={};n!==void 0&&(P.startDate=n.toString()),a!==void 0&&(P.endDate=a.toString()),d!==void 0&&(P.metric=d.toString());let q={method:"GET",path:i,queryParameters:P,headers:T};return u.request(q,l)},getTimeseriesWithHTTPInfo({id:r,startDate:n,endDate:a,metric:d},l){p("id","getTimeseriesWithHTTPInfo",r);let i="/3/abtests/{id}/timeseries".replace("{id}",encodeURIComponent(r)),T={},P={};n!==void 0&&(P.startDate=n.toString()),a!==void 0&&(P.endDate=a.toString()),d!==void 0&&(P.metric=d.toString());let q={method:"GET",path:i,queryParameters:P,headers:T};return u.requestWithHttpInfo(q,l)},listABTests({offset:r,limit:n,indexPrefix:a,indexSuffix:d,direction:l}={},i=void 0){let T="/3/abtests",P={},q={};r!==void 0&&(q.offset=r.toString()),n!==void 0&&(q.limit=n.toString()),a!==void 0&&(q.indexPrefix=a.toString()),d!==void 0&&(q.indexSuffix=d.toString()),l!==void 0&&(q.direction=l.toString());let B={method:"GET",path:T,queryParameters:q,headers:P};return u.request(B,i)},listABTestsWithHTTPInfo({offset:r,limit:n,indexPrefix:a,indexSuffix:d,direction:l}={},i=void 0){let T="/3/abtests",P={},q={};r!==void 0&&(q.offset=r.toString()),n!==void 0&&(q.limit=n.toString()),a!==void 0&&(q.indexPrefix=a.toString()),d!==void 0&&(q.indexSuffix=d.toString()),l!==void 0&&(q.direction=l.toString());let B={method:"GET",path:T,queryParameters:q,headers:P};return u.requestWithHttpInfo(B,i)},stopABTest({id:r},n){p("id","stopABTest",r);let i={method:"POST",path:"/3/abtests/{id}/stop".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return u.request(i,n)},stopABTestWithHTTPInfo({id:r},n){p("id","stopABTestWithHTTPInfo",r);let i={method:"POST",path:"/3/abtests/{id}/stop".replace("{id}",encodeURIComponent(r)),queryParameters:{},headers:{}};return u.requestWithHttpInfo(i,n)}}}function Ut(e,t,s,o){if(!e||typeof e!="string")throw new Error("`appId` is missing.");if(!t||typeof t!="string")throw new Error("`apiKey` is missing.");if(s&&(typeof s!="string"||!K.includes(s)))throw new Error(`\`region\` must be one of the following: ${K.join(", ")}`);let{compression:c,...h}=o||{};return ge({appId:e,apiKey:t,region:s,timeouts:{connect:1e3,read:2e3,write:3e4},logger:le(),requester:Te(),algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:Q(),requestsCache:Q({serializable:!1}),hostsCache:C({caches:[ue({key:`${$}-${e}`}),Q()]}),...h})}export{Ut as abtestingV3Client,$ as apiClientVersion};
6
6
  //# sourceMappingURL=browser.min.js.map