@coveo/headless 3.31.0 → 3.31.1-pre.0dc56cfa7e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/cjs/case-assist/headless.cjs +1 -1
  2. package/dist/cjs/case-assist/node.cjs.stats.json +1 -1
  3. package/dist/cjs/commerce/headless.cjs +1 -1
  4. package/dist/cjs/commerce/node.cjs.stats.json +1 -1
  5. package/dist/cjs/headless.cjs +1 -1
  6. package/dist/cjs/insight/headless.cjs +1 -1
  7. package/dist/cjs/insight/node.cjs.stats.json +1 -1
  8. package/dist/cjs/node.cjs.stats.json +1 -1
  9. package/dist/cjs/recommendation/headless.cjs +1 -1
  10. package/dist/cjs/recommendation/node.cjs.stats.json +1 -1
  11. package/dist/cjs/ssr/headless.cjs +1 -1
  12. package/dist/cjs/ssr/node.cjs.stats.json +1 -1
  13. package/dist/cjs/ssr-commerce/headless.cjs +1 -1
  14. package/dist/cjs/ssr-commerce/node.cjs.stats.json +1 -1
  15. package/dist/cjs/ssr-commerce-next/headless.cjs +20 -23
  16. package/dist/cjs/ssr-commerce-next/node.cjs.stats.json +1 -1
  17. package/dist/cjs/ssr-next/headless.cjs +13 -14
  18. package/dist/cjs/ssr-next/node.cjs.stats.json +1 -1
  19. package/dist/definitions/ssr/commerce/types/engine.d.ts +2 -0
  20. package/dist/definitions/ssr/common/types/engine.d.ts +2 -0
  21. package/dist/definitions/ssr/common/types/utilities.d.ts +3 -0
  22. package/dist/definitions/ssr-commerce-next.index.d.ts +1 -1
  23. package/dist/definitions/ssr-next/commerce/engine/commerce-engine.ssr.d.ts +1 -1
  24. package/dist/definitions/ssr-next/commerce/factories/build-factory.d.ts +1 -1
  25. package/dist/definitions/ssr-next/commerce/factories/hydrated-state-factory.d.ts +1 -1
  26. package/dist/definitions/ssr-next/commerce/factories/recommendation-static-state-factory.d.ts +4 -7
  27. package/dist/definitions/ssr-next/commerce/factories/static-state-factory.d.ts +1 -2
  28. package/dist/definitions/ssr-next/commerce/types/build.d.ts +2 -2
  29. package/dist/definitions/ssr-next/commerce/types/controller-definitions.d.ts +2 -2
  30. package/dist/definitions/ssr-next/commerce/types/engine.d.ts +2 -2
  31. package/dist/definitions/ssr-next/commerce/types/fetch-static-state.d.ts +2 -2
  32. package/dist/definitions/ssr-next/commerce/types/hydrate-static-state.d.ts +2 -2
  33. package/dist/definitions/ssr-next/common/augment-preprocess-request.d.ts +2 -2
  34. package/dist/definitions/ssr-next/common/types/utilities.d.ts +0 -5
  35. package/dist/definitions/ssr-next/search/types/build.d.ts +3 -4
  36. package/dist/definitions/ssr-next/search/types/fetch-static-state.d.ts +1 -2
  37. package/dist/definitions/ssr-next/search/types/hydrate-static-state.d.ts +1 -2
  38. package/dist/definitions/test/mock-navigator-context.d.ts +2 -0
  39. package/dist/esm/ssr-next/commerce/engine/commerce-engine.ssr.js +1 -1
  40. package/dist/esm/ssr-next/commerce/factories/build-factory.js +4 -4
  41. package/dist/esm/ssr-next/commerce/factories/hydrated-state-factory.js +2 -2
  42. package/dist/esm/ssr-next/commerce/factories/recommendation-hydrated-state-factory.js +2 -2
  43. package/dist/esm/ssr-next/commerce/factories/recommendation-static-state-factory.js +4 -5
  44. package/dist/esm/ssr-next/commerce/factories/static-state-factory.js +3 -3
  45. package/dist/esm/ssr-next/commerce/utils/engine-wiring.js +6 -6
  46. package/dist/esm/ssr-next/common/augment-preprocess-request.js +1 -1
  47. package/dist/esm/ssr-next/search/engine/search-engine.ssr.js +11 -12
  48. package/dist/esm/test/mock-navigator-context.js +9 -0
  49. package/dist/esm/utils/version.js +1 -1
  50. package/dist/quantic/browser.cjs.stats.json +1 -1
  51. package/dist/quantic/case-assist/browser.cjs.stats.json +1 -1
  52. package/dist/quantic/case-assist/headless.js +1 -1
  53. package/dist/quantic/case-assist/headless.js.map +1 -1
  54. package/dist/quantic/commerce/browser.cjs.stats.json +1 -1
  55. package/dist/quantic/commerce/headless.js +1 -1
  56. package/dist/quantic/commerce/headless.js.map +1 -1
  57. package/dist/quantic/headless.js +1 -1
  58. package/dist/quantic/headless.js.map +1 -1
  59. package/dist/quantic/insight/browser.cjs.stats.json +1 -1
  60. package/dist/quantic/insight/headless.js +1 -1
  61. package/dist/quantic/insight/headless.js.map +1 -1
  62. package/dist/quantic/recommendation/browser.cjs.stats.json +1 -1
  63. package/dist/quantic/recommendation/headless.js +1 -1
  64. package/dist/quantic/recommendation/headless.js.map +1 -1
  65. package/package.json +1 -1
@@ -43,6 +43,8 @@ export interface EngineDefinition<TControllers extends ControllerDefinitionsMap<
43
43
  */
44
44
  build: Build<TEngineOptions, InferControllersMapFromDefinition<TControllers, TSolutionType>, InferControllerPropsMapFromDefinitions<TControllers>, TControllers, TSolutionType>;
45
45
  /**
46
+ * @deprecated This method will be removed in a future major version. Navigator context should be provided directly when fetching the static state.
47
+ *
46
48
  * Sets the navigator context provider.
47
49
  * This provider is essential for retrieving navigation-related data such as referrer, userAgent, location, and clientId, which are crucial for handling both server-side and client-side API requests effectively.
48
50
  *
@@ -27,6 +27,8 @@ export interface EngineDefinition<TEngine extends CoreEngine | CoreEngineNext, T
27
27
  */
28
28
  hydrateStaticState: HydrateStaticState<TEngine, InferControllersMapFromDefinition<TControllers>, AnyAction, InferControllerPropsMapFromDefinitions<TControllers>>;
29
29
  /**
30
+ * @deprecated This method will be removed in a future major version. Navigator context should be provided directly when fetching the static state
31
+ *
30
32
  * Sets the navigator context provider.
31
33
  * This provider is essential for retrieving navigation-related data such as referrer, userAgent, location, and clientId, which are crucial for handling both server-side and client-side API requests effectively.
32
34
  *
@@ -9,6 +9,9 @@ export type HasOptionalKeys<TObject> = TObject extends {} ? {
9
9
  type ExtractRequiredOptions<TOptions> = {
10
10
  [TKey in keyof TOptions as Pick<TOptions, TKey> extends Required<Pick<TOptions, TKey>> ? TKey : never]: TOptions[TKey];
11
11
  };
12
+ /**
13
+ * @deprecated This type will be removed in the next major version.
14
+ */
12
15
  export type OptionsTuple<TOptions> = HasKeys<TOptions> extends false ? [] : HasKeys<ExtractRequiredOptions<TOptions>> extends false ? [options?: TOptions] : [options: TOptions];
13
16
  export type OptionsExtender<TOptions> = (options: TOptions) => TOptions | Promise<TOptions>;
14
17
  export {};
@@ -125,7 +125,7 @@ export { defineCommerceEngine } from './ssr-next/commerce/engine/commerce-engine
125
125
  export type { SSRCommerceEngine as CommerceEngine } from './ssr-next/commerce/factories/build-factory.js';
126
126
  export type { BuildConfig, SSRCommerceEngineOptions as CommerceEngineOptions, } from './ssr-next/commerce/types/build.js';
127
127
  export { SolutionType } from './ssr-next/commerce/types/controller-constants.js';
128
- export type { AugmentedControllerDefinition, CommerceEngineDefinitionControllersPropsOption as EngineDefinitionControllersPropsOption, ControllerDefinition, ControllerDefinitionsMap, HydratedState, InferControllerStaticStateFromController, InferControllerStaticStateMapFromControllers, OptionsTuple, } from './ssr-next/commerce/types/controller-definitions.js';
128
+ export type { AugmentedControllerDefinition, CommerceEngineDefinitionControllersPropsOption as EngineDefinitionControllersPropsOption, ControllerDefinition, ControllerDefinitionsMap, HydratedState, InferControllerStaticStateFromController, InferControllerStaticStateMapFromControllers, } from './ssr-next/commerce/types/controller-definitions.js';
129
129
  export type { InferControllerFromDefinition, InferControllerPropsMapFromDefinitions, InferControllerStaticStateMapFromDefinitionsWithSolutionType, InferControllersMapFromDefinition, InferHydratedState, InferStaticState, } from './ssr-next/commerce/types/controller-inference.js';
130
130
  export type { CommerceEngineDefinition, CommerceEngineDefinitionBuildResult, CommerceEngineDefinitionOptions, EngineStaticState, FetchStaticState, HydrateStaticState, HydrateStaticStateOptions, } from './ssr-next/commerce/types/engine.js';
131
131
  export type { CommerceAppState, CommerceProductListingParametersState, CommerceSearchParametersState, } from './state/commerce-app-state.js';
@@ -20,7 +20,7 @@ import type { CommerceEngineDefinition, CommerceEngineDefinitionOptions } from '
20
20
  * const { listingEngineDefinition } = defineCommerceEngine(engineConfig);
21
21
  *
22
22
  * const staticState = await listingEngineDefinition.fetchStaticState({
23
- * navigatorContextProvider: () => {/*...* /},
23
+ * navigatorContext: {/*...* /},
24
24
  * context: {/*...* /},
25
25
  * });
26
26
  *
@@ -15,7 +15,7 @@ export interface SSRCommerceEngine extends CommerceEngine {
15
15
  */
16
16
  waitForRequestCompletedAction(): Promise<Action>[];
17
17
  }
18
- export declare const buildFactory: <TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: TControllerDefinitions, options: CommerceEngineDefinitionOptions<TControllerDefinitions>) => <TSolutionType extends SolutionType>(solutionType: TSolutionType) => (...[buildOptions]: FetchStaticStateParameters<TControllerDefinitions, TSolutionType> | HydrateStaticStateParameters<TControllerDefinitions, TSolutionType>) => Promise<{
18
+ export declare const buildFactory: <TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: TControllerDefinitions, options: CommerceEngineDefinitionOptions<TControllerDefinitions>) => <TSolutionType extends SolutionType>(solutionType: TSolutionType) => (buildOptions: FetchStaticStateParameters<TControllerDefinitions, TSolutionType> | HydrateStaticStateParameters<TControllerDefinitions, TSolutionType>) => Promise<{
19
19
  engine: SSRCommerceEngine;
20
20
  controllers: InferControllersMapFromDefinition<TControllerDefinitions, TSolutionType> & BakedInControllers;
21
21
  }>;
@@ -1,7 +1,7 @@
1
1
  import type { SolutionType } from '../types/controller-constants.js';
2
2
  import type { AugmentedControllerDefinition } from '../types/controller-definitions.js';
3
3
  import type { CommerceControllerDefinitionsMap, CommerceEngineDefinitionOptions, HydrateStaticStateParameters } from '../types/engine.js';
4
- export declare function hydratedStaticStateFactory<TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: AugmentedControllerDefinition<TControllerDefinitions>, options: CommerceEngineDefinitionOptions<TControllerDefinitions>): <TSolutionType extends SolutionType>(solutionType: TSolutionType) => (...params: HydrateStaticStateParameters<TControllerDefinitions, TSolutionType>) => Promise<{
4
+ export declare function hydratedStaticStateFactory<TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: AugmentedControllerDefinition<TControllerDefinitions>, options: CommerceEngineDefinitionOptions<TControllerDefinitions>): <TSolutionType extends SolutionType>(solutionType: TSolutionType) => (params: HydrateStaticStateParameters<TControllerDefinitions, TSolutionType>) => Promise<{
5
5
  engine: import("./build-factory.js").SSRCommerceEngine;
6
6
  controllers: import("../types/controller-inference.js").InferControllersMapFromDefinition<TControllerDefinitions, TSolutionType> & import("../types/controller-definitions.js").BakedInControllers;
7
7
  }>;
@@ -2,13 +2,10 @@ import type { UnknownAction } from '@reduxjs/toolkit';
2
2
  import { SolutionType } from '../types/controller-constants.js';
3
3
  import type { AugmentedControllerDefinition } from '../types/controller-definitions.js';
4
4
  import type { CommerceControllerDefinitionsMap, CommerceEngineDefinitionOptions, FetchStaticStateParameters } from '../types/engine.js';
5
- export declare function fetchRecommendationStaticStateFactory<TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: AugmentedControllerDefinition<TControllerDefinitions>, options: CommerceEngineDefinitionOptions<TControllerDefinitions>): (...params: FetchStaticStateParameters<TControllerDefinitions, SolutionType.recommendation>) => Promise<{
6
- controllers: import("../types/controller-inference.js").InferControllerStaticStateMapFromDefinitionsWithSolutionType<TControllerDefinitions, SolutionType.recommendation> & import("../types/controller-definitions.js").FilteredBakedInControllers<SolutionType.recommendation>;
7
- searchActions: UnknownAction[];
8
- navigatorContextProvider: import("../../../ssr.index.js").NavigatorContextProvider;
9
- context: import("../../../commerce.index.js").ContextOptions;
10
- searchParams?: import("../../../commerce.index.js").ParameterManagerState<import("../../../commerce.index.js").Parameters>["parameters"];
11
- cart?: import("../../../commerce.index.js").CartInitialState;
5
+ export declare function fetchRecommendationStaticStateFactory<TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: AugmentedControllerDefinition<TControllerDefinitions>, options: CommerceEngineDefinitionOptions<TControllerDefinitions>): (params: FetchStaticStateParameters<TControllerDefinitions, SolutionType.recommendation>) => Promise<import("../types/build.js").CommonBuildConfig & {
12
6
  productId?: string;
13
7
  recommendations: Extract<keyof TControllerDefinitions, { [K in keyof TControllerDefinitions]: import("../../common/types/utilities.js").HasKey<TControllerDefinitions[K], SolutionType.recommendation> extends never ? never : import("../../common/types/utilities.js").HasKey<TControllerDefinitions[K], typeof import("../types/controller-constants.js").recommendationInternalOptionKey> extends never ? never : K; }[keyof TControllerDefinitions]>[];
8
+ } & { [K_1 in keyof TControllerDefinitions as import("../../common/types/utilities.js").HasKey<TControllerDefinitions[K_1], SolutionType.recommendation> extends never ? never : import("../../common/types/utilities.js").HasKey<TControllerDefinitions[K_1], typeof import("../types/controller-constants.js").recommendationInternalOptionKey> extends never ? import("../../common/types/utilities.js").HasRequiredKeys<import("../types/controller-inference.js").InferControllerPropsMapFromDefinitions<TControllerDefinitions> extends infer T extends import("../../common/types/controllers.js").ControllersPropsMap ? { [I in keyof T as I extends K_1 ? I : never]: import("../types/controller-inference.js").InferControllerPropsMapFromDefinitions<TControllerDefinitions>[I]; } : never> extends false ? never : "controllers" : never]: import("../types/controller-inference.js").InferControllerPropsMapFromDefinitions<TControllerDefinitions> extends infer T_1 extends import("../../common/types/controllers.js").ControllersPropsMap ? { [I in keyof T_1 as I extends K_1 ? I : never]: import("../types/controller-inference.js").InferControllerPropsMapFromDefinitions<TControllerDefinitions>[I]; } : never; } & {
9
+ controllers: import("../types/controller-inference.js").InferControllerStaticStateMapFromDefinitionsWithSolutionType<TControllerDefinitions, SolutionType.recommendation> & import("../types/controller-definitions.js").FilteredBakedInControllers<SolutionType.recommendation>;
10
+ searchActions: UnknownAction[];
14
11
  }>;
@@ -1,9 +1,8 @@
1
1
  import type { UnknownAction } from '@reduxjs/toolkit';
2
- import type { BuildConfig } from '../types/build.js';
3
2
  import { SolutionType } from '../types/controller-constants.js';
4
3
  import type { AugmentedControllerDefinition } from '../types/controller-definitions.js';
5
4
  import type { CommerceControllerDefinitionsMap, CommerceEngineDefinitionOptions, FetchStaticStateParameters } from '../types/engine.js';
6
- export declare function fetchStaticStateFactory<TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: AugmentedControllerDefinition<TControllerDefinitions>, options: CommerceEngineDefinitionOptions<TControllerDefinitions>): <TSolutionType extends SolutionType>(solutionType: TSolutionType) => (...params: FetchStaticStateParameters<TControllerDefinitions, TSolutionType>) => Promise<BuildConfig<TControllerDefinitions, TSolutionType> & {
5
+ export declare function fetchStaticStateFactory<TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: AugmentedControllerDefinition<TControllerDefinitions>, options: CommerceEngineDefinitionOptions<TControllerDefinitions>): <TSolutionType extends SolutionType>(solutionType: TSolutionType) => (params: FetchStaticStateParameters<TControllerDefinitions, TSolutionType>) => Promise<import("../types/build.js").BuildConfig<TControllerDefinitions, TSolutionType> & { [K in keyof TControllerDefinitions as import("../../common/types/utilities.js").HasKey<TControllerDefinitions[K], TSolutionType> extends never ? never : import("../../common/types/utilities.js").HasKey<TControllerDefinitions[K], typeof import("../types/controller-constants.js").recommendationInternalOptionKey> extends never ? import("../../common/types/utilities.js").HasRequiredKeys<import("../types/controller-inference.js").InferControllerPropsMapFromDefinitions<TControllerDefinitions> extends infer T extends import("../../common/types/controllers.js").ControllersPropsMap ? { [I in keyof T as I extends K ? I : never]: import("../types/controller-inference.js").InferControllerPropsMapFromDefinitions<TControllerDefinitions>[I]; } : never> extends false ? never : "controllers" : never]: import("../types/controller-inference.js").InferControllerPropsMapFromDefinitions<TControllerDefinitions> extends infer T_1 extends import("../../common/types/controllers.js").ControllersPropsMap ? { [I in keyof T_1 as I extends K ? I : never]: import("../types/controller-inference.js").InferControllerPropsMapFromDefinitions<TControllerDefinitions>[I]; } : never; } & {
7
6
  controllers: import("../types/controller-inference.js").InferControllerStaticStateMapFromDefinitionsWithSolutionType<TControllerDefinitions, TSolutionType> & import("../types/controller-definitions.js").FilteredBakedInControllers<TSolutionType>;
8
7
  searchActions: UnknownAction[];
9
8
  }>;
@@ -1,5 +1,5 @@
1
1
  import type { CommerceEngineOptions } from '../../../app/commerce-engine/commerce-engine.js';
2
- import type { NavigatorContextProvider } from '../../../app/navigator-context-provider.js';
2
+ import type { NavigatorContext } from '../../../app/navigator-context-provider.js';
3
3
  import type { Controller } from '../../../controllers/controller/headless-controller.js';
4
4
  import type { HasKey } from '../../common/types/utilities.js';
5
5
  import type { CartInitialState } from '../controllers/cart/headless-cart.ssr.js';
@@ -72,7 +72,7 @@ export interface ListingBuildConfig extends CommonBuildConfig {
72
72
  export interface StandaloneBuildConfig extends CommonBuildConfig {
73
73
  }
74
74
  export interface CommonBuildConfig {
75
- navigatorContextProvider: NavigatorContextProvider;
75
+ navigatorContext: NavigatorContext;
76
76
  context: ContextOptions;
77
77
  searchParams?: ParameterManagerState<Parameters>['parameters'];
78
78
  cart?: CartInitialState;
@@ -1,7 +1,7 @@
1
1
  import type { Controller } from '../../../controllers/controller/headless-controller.js';
2
2
  import type { InferControllerStaticStateFromController, InferControllerStaticStateMapFromControllers } from '../../common/types/controller-inference.js';
3
3
  import type { ControllersPropsMap } from '../../common/types/controllers.js';
4
- import type { HasKey, HasRequiredKeys, OptionsTuple } from '../../common/types/utilities.js';
4
+ import type { HasKey, HasRequiredKeys } from '../../common/types/utilities.js';
5
5
  import type { CartDefinition } from '../controllers/cart/headless-cart.ssr.js';
6
6
  import type { ContextDefinition } from '../controllers/context/headless-context.ssr.js';
7
7
  import type { ParameterManagerDefinition } from '../controllers/parameter-manager/headless-core-parameter-manager.ssr.js';
@@ -10,7 +10,7 @@ import { type recommendationInternalOptionKey, SolutionType } from './controller
10
10
  import type { ListingAndStandaloneController, NonRecommendationController, RecommendationOnlyController, SearchAndListingController, SearchOnlyController, UniversalController } from './controller-scopes.js';
11
11
  import type { HydratedState } from './hydrate-static-state.js';
12
12
  import type { HasSolutionType } from './utilities.js';
13
- export type { HydratedState, OptionsTuple, InferControllerStaticStateFromController, InferControllerStaticStateMapFromControllers, };
13
+ export type { HydratedState, InferControllerStaticStateFromController, InferControllerStaticStateMapFromControllers, };
14
14
  export interface ControllerDefinitionWithoutProps<TController extends Controller> {
15
15
  /**
16
16
  * Creates an instance of the given controller.
@@ -52,5 +52,5 @@ export type CommerceControllerDefinitionsMap = ControllerDefinitionsMap<Controll
52
52
  type Definition<TControllerDefinitions extends CommerceControllerDefinitionsMap, TSolutionType extends SolutionType> = CommerceEngineDefinition<TControllerDefinitions, TSolutionType>;
53
53
  type FetchStaticStateFunction<TControllerDefinitions extends CommerceControllerDefinitionsMap, TSolutionType extends SolutionType> = Definition<TControllerDefinitions, TSolutionType>['fetchStaticState'];
54
54
  export type HydrateStaticStateFunction<TControllerDefinitions extends CommerceControllerDefinitionsMap, TSolutionType extends SolutionType> = Definition<TControllerDefinitions, TSolutionType>['hydrateStaticState'];
55
- export type FetchStaticStateParameters<TControllerDefinitions extends CommerceControllerDefinitionsMap, TSolutionType extends SolutionType> = Parameters<FetchStaticStateFunction<TControllerDefinitions, TSolutionType>>;
56
- export type HydrateStaticStateParameters<TControllerDefinitions extends CommerceControllerDefinitionsMap, TSolutionType extends SolutionType> = Parameters<HydrateStaticStateFunction<TControllerDefinitions, TSolutionType>>;
55
+ export type FetchStaticStateParameters<TControllerDefinitions extends CommerceControllerDefinitionsMap, TSolutionType extends SolutionType> = Parameters<FetchStaticStateFunction<TControllerDefinitions, TSolutionType>>[0];
56
+ export type HydrateStaticStateParameters<TControllerDefinitions extends CommerceControllerDefinitionsMap, TSolutionType extends SolutionType> = Parameters<HydrateStaticStateFunction<TControllerDefinitions, TSolutionType>>[0];
@@ -4,10 +4,10 @@ import type { ControllerStaticStateMap, ControllersPropsMap } from '../../common
4
4
  import type { EngineStaticState } from '../../common/types/engine.js';
5
5
  import type { BuildConfig } from './build.js';
6
6
  import type { SolutionType } from './controller-constants.js';
7
- import type { CommerceEngineDefinitionControllersPropsOption, ControllerDefinitionsMap, FilteredBakedInControllers, OptionsTuple } from './controller-definitions.js';
7
+ import type { CommerceEngineDefinitionControllersPropsOption, ControllerDefinitionsMap, FilteredBakedInControllers } from './controller-definitions.js';
8
8
  /**
9
9
  * Executes only the initial search for a given configuration, then returns a resumable snapshot of engine state along with the state of the controllers.
10
10
  *
11
11
  * Useful for static generation and server-side rendering.
12
12
  */
13
- export type FetchStaticState<TSearchAction extends UnknownAction, TControllersStaticState extends ControllerStaticStateMap, TControllersProps extends ControllersPropsMap, TControllersDefinitionsMap extends ControllerDefinitionsMap<Controller>, TSolutionType extends SolutionType> = (...params: OptionsTuple<BuildConfig<TControllersDefinitionsMap, TSolutionType> & CommerceEngineDefinitionControllersPropsOption<TControllersDefinitionsMap, TControllersProps, TSolutionType>>) => Promise<EngineStaticState<TSearchAction, TControllersStaticState & FilteredBakedInControllers<TSolutionType>> & BuildConfig<TControllersDefinitionsMap, TSolutionType>>;
13
+ export type FetchStaticState<TSearchAction extends UnknownAction, TControllersStaticState extends ControllerStaticStateMap, TControllersProps extends ControllersPropsMap, TControllersDefinitionsMap extends ControllerDefinitionsMap<Controller>, TSolutionType extends SolutionType> = (params: BuildConfig<TControllersDefinitionsMap, TSolutionType> & CommerceEngineDefinitionControllersPropsOption<TControllersDefinitionsMap, TControllersProps, TSolutionType>) => Promise<EngineStaticState<TSearchAction, TControllersStaticState & FilteredBakedInControllers<TSolutionType>> & BuildConfig<TControllersDefinitionsMap, TSolutionType>>;
@@ -3,7 +3,7 @@ import type { Controller } from '../../../controllers/controller/headless-contro
3
3
  import type { ControllersMap, ControllersPropsMap } from '../../common/types/controllers.js';
4
4
  import type { BuildConfig } from './build.js';
5
5
  import type { SolutionType } from './controller-constants.js';
6
- import type { CommerceEngineDefinitionControllersPropsOption, ControllerDefinitionsMap, OptionsTuple } from './controller-definitions.js';
6
+ import type { CommerceEngineDefinitionControllersPropsOption, ControllerDefinitionsMap } from './controller-definitions.js';
7
7
  import type { CommerceEngineDefinitionBuildResult } from './engine.js';
8
8
  export type HydratedState<TControllers extends ControllersMap> = CommerceEngineDefinitionBuildResult<TControllers>;
9
9
  export interface HydrateStaticStateOptions<TSearchAction> {
@@ -14,4 +14,4 @@ export interface HydrateStaticStateOptions<TSearchAction> {
14
14
  *
15
15
  * Useful when hydrating a server-side-rendered engine.
16
16
  */
17
- export type HydrateStaticState<TControllers extends ControllersMap, TSearchAction extends UnknownAction, TControllersProps extends ControllersPropsMap, TControllersDefinitionsMap extends ControllerDefinitionsMap<Controller>, TSolutionType extends SolutionType> = (...params: OptionsTuple<HydrateStaticStateOptions<TSearchAction> & BuildConfig<TControllersDefinitionsMap, TSolutionType> & CommerceEngineDefinitionControllersPropsOption<TControllersDefinitionsMap, TControllersProps, TSolutionType>>) => Promise<HydratedState<TControllers>>;
17
+ export type HydrateStaticState<TControllers extends ControllersMap, TSearchAction extends UnknownAction, TControllersProps extends ControllersPropsMap, TControllersDefinitionsMap extends ControllerDefinitionsMap<Controller>, TSolutionType extends SolutionType> = (params: HydrateStaticStateOptions<TSearchAction> & BuildConfig<TControllersDefinitionsMap, TSolutionType> & CommerceEngineDefinitionControllersPropsOption<TControllersDefinitionsMap, TControllersProps, TSolutionType>) => Promise<HydratedState<TControllers>>;
@@ -1,9 +1,9 @@
1
1
  import type { PlatformClientOrigin, PlatformRequestOptions, PreprocessRequest, RequestMetadata } from '../../api/preprocess-request.js';
2
2
  import { type LoggerOptions } from '../../app/logger.js';
3
- import type { NavigatorContextProvider } from '../../app/navigator-context-provider.js';
3
+ import type { NavigatorContext } from '../../app/navigator-context-provider.js';
4
4
  export interface AugmentPreprocessRequestOptions {
5
+ navigatorContext: NavigatorContext;
5
6
  preprocessRequest?: PreprocessRequest;
6
- navigatorContextProvider?: NavigatorContextProvider;
7
7
  loggerOptions?: LoggerOptions;
8
8
  }
9
9
  export declare function augmentPreprocessRequestWithForwardedFor(options: AugmentPreprocessRequestOptions): (request: PlatformRequestOptions, clientOrigin: PlatformClientOrigin, metadata?: RequestMetadata) => Promise<PlatformRequestOptions>;
@@ -3,8 +3,3 @@ export type HasKeys<TObject> = TObject extends {} ? keyof TObject extends never
3
3
  export type HasRequiredKeys<TObject> = TObject extends {} ? {
4
4
  [K in keyof TObject]-?: {} extends Pick<TObject, K> ? never : K;
5
5
  }[keyof TObject] extends never ? false : true : boolean;
6
- type ExtractRequiredOptions<TOptions> = {
7
- [TKey in keyof TOptions as Pick<TOptions, TKey> extends Required<Pick<TOptions, TKey>> ? TKey : never]: TOptions[TKey];
8
- };
9
- export type OptionsTuple<TOptions> = HasKeys<TOptions> extends false ? [] : HasKeys<ExtractRequiredOptions<TOptions>> extends false ? [options?: TOptions] : [options: TOptions];
10
- export {};
@@ -1,12 +1,11 @@
1
1
  import type { CoreEngine, CoreEngineNext } from '../../../app/engine.js';
2
- import type { NavigatorContextProvider } from '../../../app/navigator-context-provider.js';
2
+ import type { NavigatorContext } from '../../../app/navigator-context-provider.js';
3
3
  import type { ControllersMap, ControllersPropsMap } from '../../common/types/controllers.js';
4
- import type { OptionsTuple } from '../../common/types/utilities.js';
5
4
  import type { SearchEngineDefinitionBuildResult, SearchEngineDefinitionControllersPropsOption } from './engine.js';
6
5
  export type BuildConfig = {
7
- navigatorContextProvider: NavigatorContextProvider;
6
+ navigatorContext: NavigatorContext;
8
7
  };
9
8
  /**
10
9
  * @internal
11
10
  */
12
- export type Build<TEngine extends CoreEngine | CoreEngineNext, TControllersMap extends ControllersMap, TControllersProps extends ControllersPropsMap> = (...params: OptionsTuple<SearchEngineDefinitionControllersPropsOption<TControllersProps>>) => Promise<SearchEngineDefinitionBuildResult<TEngine, TControllersMap>>;
11
+ export type Build<TEngine extends CoreEngine | CoreEngineNext, TControllersMap extends ControllersMap, TControllersProps extends ControllersPropsMap> = (props: SearchEngineDefinitionControllersPropsOption<TControllersProps>) => Promise<SearchEngineDefinitionBuildResult<TEngine, TControllersMap>>;
@@ -1,7 +1,6 @@
1
1
  import type { UnknownAction } from '@reduxjs/toolkit';
2
2
  import type { ControllerStaticStateMap, ControllersPropsMap } from '../../common/types/controllers.js';
3
3
  import type { EngineStaticState } from '../../common/types/engine.js';
4
- import type { OptionsTuple } from '../../common/types/utilities.js';
5
4
  import type { BuildConfig } from './build.js';
6
5
  import type { SearchEngineDefinitionControllersPropsOption } from './engine.js';
7
6
  /**
@@ -9,4 +8,4 @@ import type { SearchEngineDefinitionControllersPropsOption } from './engine.js';
9
8
  *
10
9
  * Useful for static generation and server-side rendering.
11
10
  */
12
- export type FetchStaticState<TSearchAction extends UnknownAction, TControllersStaticState extends ControllerStaticStateMap, TControllersProps extends ControllersPropsMap> = (...params: OptionsTuple<BuildConfig & SearchEngineDefinitionControllersPropsOption<TControllersProps>>) => Promise<EngineStaticState<TSearchAction, TControllersStaticState> & BuildConfig>;
11
+ export type FetchStaticState<TSearchAction extends UnknownAction, TControllersStaticState extends ControllerStaticStateMap, TControllersProps extends ControllersPropsMap> = (params: BuildConfig & SearchEngineDefinitionControllersPropsOption<TControllersProps>) => Promise<EngineStaticState<TSearchAction, TControllersStaticState> & BuildConfig>;
@@ -1,7 +1,6 @@
1
1
  import type { UnknownAction } from '@reduxjs/toolkit';
2
2
  import type { CoreEngine, CoreEngineNext } from '../../../app/engine.js';
3
3
  import type { ControllersMap, ControllersPropsMap } from '../../common/types/controllers.js';
4
- import type { OptionsTuple } from '../../common/types/utilities.js';
5
4
  import type { BuildConfig } from './build.js';
6
5
  import type { SearchEngineDefinitionBuildResult, SearchEngineDefinitionControllersPropsOption } from './engine.js';
7
6
  export type HydratedState<TEngine extends CoreEngine | CoreEngineNext, TControllers extends ControllersMap> = SearchEngineDefinitionBuildResult<TEngine, TControllers>;
@@ -13,5 +12,5 @@ interface HydrateStaticStateOptions<TSearchAction> {
13
12
  *
14
13
  * Useful when hydrating a server-side-rendered engine.
15
14
  */
16
- export type HydrateStaticState<TEngine extends CoreEngine | CoreEngineNext, TControllers extends ControllersMap, TSearchAction extends UnknownAction, TControllersProps extends ControllersPropsMap> = (...params: OptionsTuple<BuildConfig & HydrateStaticStateOptions<TSearchAction> & SearchEngineDefinitionControllersPropsOption<TControllersProps>>) => Promise<HydratedState<TEngine, TControllers>>;
15
+ export type HydrateStaticState<TEngine extends CoreEngine | CoreEngineNext, TControllers extends ControllersMap, TSearchAction extends UnknownAction, TControllersProps extends ControllersPropsMap> = (params: BuildConfig & HydrateStaticStateOptions<TSearchAction> & SearchEngineDefinitionControllersPropsOption<TControllersProps>) => Promise<HydratedState<TEngine, TControllers>>;
17
16
  export {};
@@ -0,0 +1,2 @@
1
+ import type { NavigatorContext } from '../app/navigator-context-provider.js';
2
+ export declare const buildMockNavigatorContext: (context?: Partial<NavigatorContext>) => NavigatorContext;
@@ -25,7 +25,7 @@ import { validateControllerNames } from '../validation/controller-validation.js'
25
25
  * const { listingEngineDefinition } = defineCommerceEngine(engineConfig);
26
26
  *
27
27
  * const staticState = await listingEngineDefinition.fetchStaticState({
28
- * navigatorContextProvider: () => {/*...* /},
28
+ * navigatorContext: {/*...* /},
29
29
  * context: {/*...* /},
30
30
  * });
31
31
  *
@@ -56,13 +56,13 @@ function buildSSRCommerceEngine(solutionType, options, recommendationCount) {
56
56
  },
57
57
  };
58
58
  }
59
- export const buildFactory = (controllerDefinitions, options) => (solutionType) => async (...[buildOptions]) => {
60
- const controllerProps = wireControllerParams(solutionType, controllerDefinitions, buildOptions); // TODO: KIT-4754: remove non-null assertion operator
61
- const enabledRecommendationControllers = buildOptions && 'recommendations' in buildOptions // TODO: KIT-4754: remove non-null assertion
59
+ export const buildFactory = (controllerDefinitions, options) => (solutionType) => async (buildOptions) => {
60
+ const controllerProps = wireControllerParams(solutionType, controllerDefinitions, buildOptions);
61
+ const enabledRecommendationControllers = buildOptions && 'recommendations' in buildOptions
62
62
  ? buildOptions
63
63
  ?.recommendations.length
64
64
  : 0;
65
- const engineOptions = augmentCommerceEngineOptions(options, buildOptions); // TODO: KIT-4754: remove non-null assertion operator
65
+ const engineOptions = augmentCommerceEngineOptions(options, buildOptions);
66
66
  const engine = buildSSRCommerceEngine(solutionType, engineOptions, enabledRecommendationControllers);
67
67
  const controllers = buildControllerDefinitions({
68
68
  definitionsMap: controllerDefinitions ?? {},
@@ -1,8 +1,8 @@
1
1
  import { buildFactory } from './build-factory.js';
2
2
  export function hydratedStaticStateFactory(controllerDefinitions, options) {
3
- return (solutionType) => async (...params) => {
3
+ return (solutionType) => async (params) => {
4
4
  const solutionTypeBuild = await buildFactory(controllerDefinitions, options)(solutionType);
5
- const { engine, controllers } = await solutionTypeBuild(...params);
5
+ const { engine, controllers } = await solutionTypeBuild(params);
6
6
  await engine.waitForRequestCompletedAction();
7
7
  return { engine, controllers };
8
8
  };
@@ -1,9 +1,9 @@
1
1
  import { SolutionType } from '../types/controller-constants.js';
2
2
  import { buildFactory } from './build-factory.js';
3
3
  export function hydratedRecommendationStaticStateFactory(controllerDefinitions, options) {
4
- return async (...params) => {
4
+ return async (params) => {
5
5
  const solutionTypeBuild = await buildFactory(controllerDefinitions, options)(SolutionType.recommendation);
6
- const { engine, controllers } = await solutionTypeBuild(...params);
6
+ const { engine, controllers } = await solutionTypeBuild(params);
7
7
  await engine.waitForRequestCompletedAction();
8
8
  return { engine, controllers };
9
9
  };
@@ -3,11 +3,10 @@ import { SolutionType } from '../types/controller-constants.js';
3
3
  import { filterRecommendationControllers } from '../utils/recommendation-filter.js';
4
4
  import { buildFactory } from './build-factory.js';
5
5
  export function fetchRecommendationStaticStateFactory(controllerDefinitions, options) {
6
- return async (...params) => {
7
- const [props] = params;
8
- const allowedRecommendationKeys = props?.recommendations;
6
+ return async (params) => {
7
+ const allowedRecommendationKeys = params.recommendations;
9
8
  const solutionTypeBuild = await buildFactory(controllerDefinitions, options)(SolutionType.recommendation);
10
- const { engine, controllers } = await solutionTypeBuild(...params);
9
+ const { engine, controllers } = await solutionTypeBuild(params);
11
10
  filterRecommendationControllers(controllers, controllerDefinitions ?? {}).refresh(allowedRecommendationKeys);
12
11
  const searchActions = await Promise.all(engine.waitForRequestCompletedAction());
13
12
  const staticState = createStaticState({
@@ -15,7 +14,7 @@ export function fetchRecommendationStaticStateFactory(controllerDefinitions, opt
15
14
  controllers,
16
15
  });
17
16
  return {
18
- ...params[0], // TODO: KIT-4754: remove index access after no longer relying on OptionTuple type
17
+ ...params,
19
18
  ...staticState,
20
19
  };
21
20
  };
@@ -4,9 +4,9 @@ import { createStaticState } from '../controller-utils.js';
4
4
  import { SolutionType } from '../types/controller-constants.js';
5
5
  import { buildFactory } from './build-factory.js';
6
6
  export function fetchStaticStateFactory(controllerDefinitions, options) {
7
- return (solutionType) => async (...params) => {
7
+ return (solutionType) => async (params) => {
8
8
  const solutionTypeBuild = await buildFactory(controllerDefinitions, options)(solutionType);
9
- const { engine, controllers } = await solutionTypeBuild(...params);
9
+ const { engine, controllers } = await solutionTypeBuild(params);
10
10
  switch (solutionType) {
11
11
  case SolutionType.listing:
12
12
  buildProductListing(engine).executeFirstRequest();
@@ -21,7 +21,7 @@ export function fetchStaticStateFactory(controllerDefinitions, options) {
21
21
  controllers,
22
22
  });
23
23
  return {
24
- ...params[0], // TODO: KIT-4754: remove index access after no longer relying on OptionTuple type
24
+ ...params,
25
25
  ...staticState,
26
26
  };
27
27
  };
@@ -1,22 +1,22 @@
1
1
  import { buildLogger } from '../../../app/logger.js';
2
2
  import { augmentPreprocessRequestWithForwardedFor } from '../../common/augment-preprocess-request.js';
3
- const ensureNavigatorContextProvider = (buildConfig, loggerOptions) => {
4
- if (!buildConfig.navigatorContextProvider) {
3
+ const ensurenavigatorContext = (buildConfig, loggerOptions) => {
4
+ if (!buildConfig.navigatorContext) {
5
5
  const logger = buildLogger(loggerOptions);
6
- logger.error('No navigatorContextProvider was provided. This may impact analytics accuracy, personalization, and session tracking. Refer to the Coveo documentation on server-side navigation context for implementation guidance.');
6
+ logger.error('No navigatorContext was provided. This may impact analytics accuracy, personalization, and session tracking. Refer to the Coveo documentation on server-side navigation context for implementation guidance.');
7
7
  }
8
8
  };
9
9
  export function augmentCommerceEngineOptions(engineOptions, buildConfig) {
10
10
  const { cart, context } = buildConfig;
11
- ensureNavigatorContextProvider(buildConfig, engineOptions.loggerOptions);
11
+ ensurenavigatorContext(buildConfig, engineOptions.loggerOptions);
12
12
  return {
13
13
  ...engineOptions,
14
- navigatorContextProvider: buildConfig.navigatorContextProvider,
14
+ navigatorContextProvider: () => buildConfig.navigatorContext,
15
15
  configuration: {
16
16
  ...engineOptions.configuration,
17
17
  preprocessRequest: augmentPreprocessRequestWithForwardedFor({
18
18
  preprocessRequest: engineOptions.configuration.preprocessRequest,
19
- navigatorContextProvider: buildConfig.navigatorContextProvider,
19
+ navigatorContext: buildConfig.navigatorContext,
20
20
  loggerOptions: engineOptions.loggerOptions,
21
21
  }),
22
22
  context: {
@@ -5,7 +5,7 @@ export function augmentPreprocessRequestWithForwardedFor(options) {
5
5
  return async (request, clientOrigin, metadata) => {
6
6
  if (!isBrowser()) {
7
7
  const headers = new Headers(request.headers);
8
- const forwardedFor = options.navigatorContextProvider?.()?.forwardedFor;
8
+ const forwardedFor = options.navigatorContext.forwardedFor;
9
9
  if (forwardedFor) {
10
10
  headers.set('x-forwarded-for', forwardedFor);
11
11
  }
@@ -41,17 +41,16 @@ function buildSSRSearchEngine(options) {
41
41
  */
42
42
  export function defineSearchEngine(options) {
43
43
  const { controllers: controllerDefinitions, ...engineOptions } = options;
44
- const build = async (...[buildOptions]) => {
45
- if (!engineOptions.navigatorContextProvider) {
44
+ const build = async (buildOptions) => {
45
+ if (!buildOptions.navigatorContext) {
46
46
  const logger = buildLogger(options.loggerOptions);
47
- logger.error('No navigatorContextProvider was provided. This may impact analytics accuracy, personalization, and session tracking. Refer to the Coveo documentation on server-side navigation context for implementation guidance.');
47
+ logger.error('No navigatorContext was provided. This may impact analytics accuracy, personalization, and session tracking. Refer to the Coveo documentation on server-side navigation context for implementation guidance.');
48
48
  }
49
- engineOptions.navigatorContextProvider = buildOptions.navigatorContextProvider;
49
+ engineOptions.navigatorContextProvider = () => buildOptions.navigatorContext;
50
50
  engineOptions.configuration.preprocessRequest =
51
51
  augmentPreprocessRequestWithForwardedFor({
52
52
  preprocessRequest: engineOptions.configuration.preprocessRequest,
53
- navigatorContextProvider: buildOptions
54
- .navigatorContextProvider,
53
+ navigatorContext: buildOptions.navigatorContext,
55
54
  loggerOptions: engineOptions.loggerOptions,
56
55
  });
57
56
  const engine = buildSSRSearchEngine(engineOptions);
@@ -67,21 +66,21 @@ export function defineSearchEngine(options) {
67
66
  controllers,
68
67
  };
69
68
  };
70
- const fetchStaticState = async (...params) => {
71
- const { engine, controllers } = await build(...params);
69
+ const fetchStaticState = async (params) => {
70
+ const { engine, controllers } = await build(params);
72
71
  engine.executeFirstSearch();
73
72
  const staticState = createStaticState({
74
73
  searchActions: [await engine.waitForSearchCompletedAction()],
75
74
  controllers: controllers,
76
75
  });
77
76
  return {
78
- ...params[0], // TODO: KIT-4754: remove index access after no longer relying on OptionTuple type
77
+ ...params,
79
78
  ...staticState,
80
79
  };
81
80
  };
82
- const hydrateStaticState = async (...params) => {
83
- const { engine, controllers } = await build(...params);
84
- params[0].searchActions.forEach((action) => {
81
+ const hydrateStaticState = async (params) => {
82
+ const { engine, controllers } = await build(params);
83
+ params.searchActions.forEach((action) => {
85
84
  engine.dispatch(action);
86
85
  });
87
86
  await engine.waitForSearchCompletedAction();
@@ -0,0 +1,9 @@
1
+ export const buildMockNavigatorContext = (context) => {
2
+ return {
3
+ referrer: 'some-test-referrer',
4
+ userAgent: '',
5
+ location: '',
6
+ clientId: '',
7
+ ...context,
8
+ };
9
+ };
@@ -1,2 +1,2 @@
1
- export const VERSION = "3.31.0" || 'Test version';
1
+ export const VERSION = "3.31.1-pre.0dc56cfa7e" || 'Test version';
2
2
  export const COVEO_FRAMEWORK = ['@coveo/atomic', '@coveo/quantic'];