diff --git a/bundlesize.config.json b/bundlesize.config.json index 645101608..5cc157758 100644 --- a/bundlesize.config.json +++ b/bundlesize.config.json @@ -6,7 +6,7 @@ }, { "path": "packages/autocomplete-js/dist/umd/index.production.js", - "maxSize": "21 kB" + "maxSize": "21.25 kB" }, { "path": "packages/autocomplete-preset-algolia/dist/umd/index.production.js", @@ -14,7 +14,7 @@ }, { "path": "packages/autocomplete-plugin-algolia-insights/dist/umd/index.production.js", - "maxSize": "3.25 kB" + "maxSize": "3.5 kB" }, { "path": "packages/autocomplete-plugin-redirect-url/dist/umd/index.production.js", diff --git a/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts b/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts index 079f49420..acd36848a 100644 --- a/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts +++ b/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts @@ -228,6 +228,28 @@ describe('createAlgoliaInsightsPlugin', () => { ]); }); + test('does not call `init` if `insightsInitParams` not passed', () => { + const insightsClient = jest.fn(); + createAlgoliaInsightsPlugin({ + insightsClient, + }); + + expect(insightsClient).not.toHaveBeenCalled(); + }); + + test('initializes insights with `insightsInitParams` if passed', () => { + const insightsClient = jest.fn(); + createAlgoliaInsightsPlugin({ + insightsClient, + insightsInitParams: { userToken: 'user' }, + }); + + expect(insightsClient).toHaveBeenCalledWith('init', { + partial: true, + userToken: 'user', + }); + }); + describe('automatic pulling', () => { const consoleError = jest .spyOn(console, 'error') diff --git a/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts b/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts index 865f9b71b..084b645e4 100644 --- a/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts +++ b/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts @@ -20,6 +20,7 @@ import { AlgoliaInsightsHit, AutocompleteInsightsApi, InsightsClient, + InsightsMethodMap, OnActiveParams, OnItemsChangeParams, OnSelectParams, @@ -57,6 +58,12 @@ export type CreateAlgoliaInsightsPluginParams = { * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-insightsclient */ insightsClient?: InsightsClient; + /** + * Insights parameters to forward to the Insights client’s init method. + * + * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-insightsinitparams + */ + insightsInitParams?: Partial; /** * Hook to send an Insights event when the items change. * @@ -94,6 +101,7 @@ export function createAlgoliaInsightsPlugin( ): AutocompletePlugin { const { insightsClient: providedInsightsClient, + insightsInitParams, onItemsChange, onSelect: onSelectEvent, onActive: onActiveEvent, @@ -137,6 +145,10 @@ export function createAlgoliaInsightsPlugin( return {}; } + if (insightsInitParams) { + insightsClient('init', { partial: true, ...insightsInitParams }); + } + const insights = createSearchInsightsApi(insightsClient); const previousItems = createRef([]); diff --git a/packages/autocomplete-plugin-algolia-insights/src/types/InsightsClient.ts b/packages/autocomplete-plugin-algolia-insights/src/types/InsightsClient.ts index 70e56d315..58b6dcea8 100644 --- a/packages/autocomplete-plugin-algolia-insights/src/types/InsightsClient.ts +++ b/packages/autocomplete-plugin-algolia-insights/src/types/InsightsClient.ts @@ -1,5 +1,5 @@ import type { - InsightsMethodMap, + InsightsMethodMap as _InsightsMethodMap, InsightsClient as _InsightsClient, } from 'search-insights'; @@ -11,6 +11,7 @@ export type { OnUserTokenChange as InsightsOnUserTokenChange, } from 'search-insights'; +export type InsightsMethodMap = _InsightsMethodMap; export type InsightsClientMethod = keyof InsightsMethodMap; export type InsightsClientPayload = {