@coveo/quantic 3.29.4 → 3.29.5-pre.0a9e457670

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 (43) hide show
  1. package/force-app/main/default/staticresources/coveoheadless/case-assist/headless.js +10 -8
  2. package/force-app/main/default/staticresources/coveoheadless/definitions/api/analytics/search-analytics.d.ts +3 -5
  3. package/force-app/main/default/staticresources/coveoheadless/definitions/api/knowledge/stream-answer-actions.d.ts +2 -2
  4. package/force-app/main/default/staticresources/coveoheadless/definitions/api/knowledge/stream-answer-api.d.ts +28 -8
  5. package/force-app/main/default/staticresources/coveoheadless/definitions/api/knowledge/tests/stream-answer-api-state-mock.d.ts +12 -12
  6. package/force-app/main/default/staticresources/coveoheadless/definitions/controllers/core/sort/headless-core-sort.d.ts +0 -12
  7. package/force-app/main/default/staticresources/coveoheadless/definitions/features/generated-answer/generated-answer-selectors.d.ts +4 -1
  8. package/force-app/main/default/staticresources/coveoheadless/definitions/features/search/legacy/search-request.d.ts +1 -1
  9. package/force-app/main/default/staticresources/coveoheadless/definitions/features/search/search-request.d.ts +1 -1
  10. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr/commerce/types/fetch-static-state.d.ts +4 -0
  11. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr/common/types/build.d.ts +3 -0
  12. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr/common/types/engine.d.ts +3 -0
  13. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-commerce-next.index.d.ts +3 -3
  14. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/controllers/recommendations/headless-recommendations.ssr.d.ts +8 -4
  15. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/factories/build-factory.d.ts +4 -3
  16. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/factories/hydrated-state-factory.d.ts +2 -1
  17. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/factories/recommendation-hydrated-state-factory.d.ts +1 -1
  18. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/factories/recommendation-static-state-factory.d.ts +2 -1
  19. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/factories/static-state-factory.d.ts +2 -1
  20. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/types/build.d.ts +73 -7
  21. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/types/controller-definitions.d.ts +35 -112
  22. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/types/controller-inference.d.ts +3 -3
  23. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/types/engine.d.ts +15 -8
  24. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/types/fetch-static-state.d.ts +3 -3
  25. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/types/hydrate-static-state.d.ts +2 -1
  26. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/types/utilities.d.ts +6 -0
  27. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/utils/controller-wiring.d.ts +51 -0
  28. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/utils/engine-wiring.d.ts +5 -0
  29. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/utils/recommendations/guards.d.ts +13 -0
  30. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/utils/recommendations/recommendation-helpers.d.ts +18 -0
  31. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/validation/controller-validation.d.ts +11 -0
  32. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/common/types/fetch-static-state.d.ts +1 -3
  33. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/common/types/utilities.d.ts +0 -3
  34. package/force-app/main/default/staticresources/coveoheadless/definitions/state/state-sections.d.ts +0 -8
  35. package/force-app/main/default/staticresources/coveoheadless/definitions/test/mock-ssr-controller-definitions.d.ts +12 -0
  36. package/force-app/main/default/staticresources/coveoheadless/definitions/utils/facet-utils.d.ts +1 -1
  37. package/force-app/main/default/staticresources/coveoheadless/headless.js +12 -10
  38. package/force-app/main/default/staticresources/coveoheadless/insight/headless.js +11 -9
  39. package/force-app/main/default/staticresources/coveoheadless/recommendation/headless.js +9 -7
  40. package/package.json +2 -2
  41. package/force-app/main/default/staticresources/coveoheadless/definitions/api/knowledge/generated-answer-stream.d.ts +0 -15
  42. package/force-app/main/default/staticresources/coveoheadless/definitions/api/knowledge/stream-answer-api-state.d.ts +0 -6
  43. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/utils/recommendation-filter.d.ts +0 -11
@@ -90,15 +90,13 @@ export declare class SearchAnalyticsProvider extends BaseAnalyticsProvider<State
90
90
  protected get responseTime(): number;
91
91
  protected get numberOfResults(): number;
92
92
  }
93
- interface LegacyConfigureAnalyticsOptions<State extends ConfigurationSection = StateNeededBySearchAnalyticsProvider> {
93
+ interface LegacyConfigureAnalyticsOptions {
94
94
  logger: Logger;
95
95
  analyticsClientMiddleware?: AnalyticsClientSendEventHook;
96
96
  preprocessRequest?: PreprocessRequest;
97
97
  provider?: SearchPageClientProvider;
98
- getState(): State;
98
+ getState(): StateNeededBySearchAnalyticsProvider;
99
99
  }
100
- export declare const configureLegacyAnalytics: <State extends ConfigurationSection = StateNeededBySearchAnalyticsProvider>({ logger, getState, analyticsClientMiddleware, preprocessRequest, provider, }: LegacyConfigureAnalyticsOptions<State> & {
101
- provider: SearchPageClientProvider;
102
- }) => CoveoSearchPageClient;
100
+ export declare const configureLegacyAnalytics: ({ logger, getState, analyticsClientMiddleware, preprocessRequest, provider, }: LegacyConfigureAnalyticsOptions) => CoveoSearchPageClient;
103
101
  export declare const getPageID: () => string;
104
102
  export {};
@@ -1,7 +1,7 @@
1
1
  import type { NavigatorContext } from '../../app/navigator-context-provider.js';
2
- import type { StreamAnswerAPIState } from './stream-answer-api-state.js';
2
+ import { type StateNeededByAnswerAPI } from './stream-answer-api.js';
3
3
  export declare const triggerSearchRequest: import("@reduxjs/toolkit").AsyncThunk<void, {
4
- state: StreamAnswerAPIState;
4
+ state: StateNeededByAnswerAPI;
5
5
  navigatorContext: NavigatorContext;
6
6
  }, {
7
7
  state?: unknown;
@@ -1,10 +1,30 @@
1
1
  import { type ThunkDispatch, type UnknownAction } from '@reduxjs/toolkit';
2
2
  import { type NavigatorContext } from '../../app/navigator-context-provider.js';
3
+ import type { GeneratedContentFormat } from '../../features/generated-answer/generated-response-format.js';
4
+ import type { SearchAppState } from '../../state/search-app-state.js';
5
+ import type { ConfigurationSection, GeneratedAnswerSection, InsightConfigurationSection, TabSection } from '../../state/state-sections.js';
3
6
  import type { EventSourceMessage } from '../../utils/fetch-event-source/parse.js';
7
+ import type { GeneratedAnswerCitation } from '../generated-answer/generated-answer-event-payload.js';
4
8
  import type { SearchRequest } from '../search/search/search-request.js';
5
- import type { GeneratedAnswerStream } from './generated-answer-stream.js';
6
- import type { StreamAnswerAPIState } from './stream-answer-api-state.js';
7
- export declare const updateCacheWithEvent: (event: EventSourceMessage, draft: GeneratedAnswerStream, dispatch: ThunkDispatch<StreamAnswerAPIState, unknown, UnknownAction>) => void;
9
+ export type StateNeededByAnswerAPI = {
10
+ searchHub: string;
11
+ pipeline: string;
12
+ answer: ReturnType<typeof answerApi.reducer>;
13
+ } & ConfigurationSection & Partial<SearchAppState> & Partial<InsightConfigurationSection> & GeneratedAnswerSection & Partial<TabSection>;
14
+ export interface GeneratedAnswerStream {
15
+ answerId?: string;
16
+ contentFormat?: GeneratedContentFormat;
17
+ answer?: string;
18
+ citations?: GeneratedAnswerCitation[];
19
+ generated?: boolean;
20
+ isStreaming: boolean;
21
+ isLoading: boolean;
22
+ error?: {
23
+ message: string;
24
+ code: number;
25
+ };
26
+ }
27
+ export declare const updateCacheWithEvent: (event: EventSourceMessage, draft: GeneratedAnswerStream, dispatch: ThunkDispatch<StateNeededByAnswerAPI, unknown, UnknownAction>) => void;
8
28
  export declare const answerApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, import("@reduxjs/toolkit/query").FetchBaseQueryError, {} & import("@reduxjs/toolkit/query").RetryOptions, {}>, {
9
29
  getAnswer: import("@reduxjs/toolkit/query").QueryDefinition<Partial<SearchRequest>, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, import("@reduxjs/toolkit/query").FetchBaseQueryError, {} & import("@reduxjs/toolkit/query").RetryOptions, {}>, never, GeneratedAnswerStream, "answer">;
10
30
  }, "answer", never, typeof import("@reduxjs/toolkit/query").coreModuleName>;
@@ -53,7 +73,7 @@ export declare const selectAnswerTriggerParams: ((state: any, ...params: any[])
53
73
  argsMemoize: typeof import("reselect").weakMapMemoize;
54
74
  memoize: typeof import("reselect").weakMapMemoize;
55
75
  };
56
- export declare const constructAnswerQueryParams: (state: StreamAnswerAPIState, usage: "fetch" | "select", navigatorContext: NavigatorContext) => {
76
+ export declare const constructAnswerQueryParams: (state: StateNeededByAnswerAPI, usage: "fetch" | "select", navigatorContext: NavigatorContext) => {
57
77
  analytics?: {
58
78
  actionCause?: string;
59
79
  customData?: object;
@@ -80,12 +100,12 @@ export declare const constructAnswerQueryParams: (state: StreamAnswerAPIState, u
80
100
  } | undefined;
81
101
  enableDidYouMean?: boolean | undefined;
82
102
  fieldsToInclude?: string[] | undefined;
83
- facets?: (import("../../features/facets/facet-set/interfaces/request.js").FacetRequest | import("../../features/facets/category-facet-set/interfaces/request.js").CategoryFacetRequest | import("../../features/facets/range-facets/date-facet-set/interfaces/request.js").DateFacetRequest | import("../../features/facets/range-facets/numeric-facet-set/interfaces/request.js").NumericFacetRequest)[] | undefined;
103
+ facets?: (import("../../features/facets/facet-set/interfaces/request.js").FacetRequest | import("../../features/facets/category-facet-set/interfaces/request.js").CategoryFacetRequest | import("../../features/facets/range-facets/numeric-facet-set/interfaces/request.js").NumericFacetRequest | import("../../features/facets/range-facets/date-facet-set/interfaces/request.js").DateFacetRequest)[] | undefined;
84
104
  pipeline?: string | undefined;
85
105
  searchHub?: string | undefined;
86
106
  pipelineRuleParameters: {
87
107
  mlGenerativeQuestionAnswering: {
88
- responseFormat: import("../../index.js").GeneratedResponseFormat;
108
+ responseFormat: import("../../features/generated-answer/generated-response-format.js").GeneratedResponseFormat;
89
109
  citationsFieldToInclude: string[];
90
110
  };
91
111
  };
@@ -97,8 +117,8 @@ export declare const constructAnswerQueryParams: (state: StreamAnswerAPIState, u
97
117
  aq?: string | undefined;
98
118
  q: string | undefined;
99
119
  };
100
- export declare const fetchAnswer: (state: StreamAnswerAPIState, navigatorContext: NavigatorContext) => import("redux-thunk").ThunkAction<import("@reduxjs/toolkit/query").QueryActionCreatorResult<import("@reduxjs/toolkit/query").QueryDefinition<Partial<SearchRequest>, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, import("@reduxjs/toolkit/query").FetchBaseQueryError, {} & import("@reduxjs/toolkit/query").RetryOptions, {}>, never, GeneratedAnswerStream, "answer">>, any, any, UnknownAction>;
101
- export declare const selectAnswer: (state: StreamAnswerAPIState, navigatorContext?: NavigatorContext) => ({
120
+ export declare const fetchAnswer: (state: StateNeededByAnswerAPI, navigatorContext: NavigatorContext) => import("redux-thunk").ThunkAction<import("@reduxjs/toolkit/query").QueryActionCreatorResult<import("@reduxjs/toolkit/query").QueryDefinition<Partial<SearchRequest>, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, import("@reduxjs/toolkit/query").FetchBaseQueryError, {} & import("@reduxjs/toolkit/query").RetryOptions, {}>, never, GeneratedAnswerStream, "answer">>, any, any, UnknownAction>;
121
+ export declare const selectAnswer: (state: StateNeededByAnswerAPI, navigatorContext?: NavigatorContext) => ({
102
122
  status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
103
123
  originalArgs?: undefined | undefined;
104
124
  data?: undefined | undefined;
@@ -1,12 +1,12 @@
1
1
  /** biome-ignore-all lint/suspicious/noExplicitAny: <mock> */
2
- import type { StreamAnswerAPIState } from '../stream-answer-api-state.js';
3
- export declare const streamAnswerAPIStateMock: StreamAnswerAPIState;
4
- export declare const streamAnswerAPIStateMockWithATabWithAnExpression: StreamAnswerAPIState;
5
- export declare const streamAnswerAPIStateMockWithoutAnyTab: StreamAnswerAPIState;
6
- export declare const streamAnswerAPIStateMockWithStaticFiltersSelected: StreamAnswerAPIState;
7
- export declare const streamAnswerAPIStateMockWithNonValidFilters: StreamAnswerAPIState;
8
- export declare const streamAnswerAPIStateMockWithoutAnyFilters: StreamAnswerAPIState;
9
- export declare const streamAnswerAPIStateMockWithStaticFiltersAndTabExpression: StreamAnswerAPIState;
2
+ import type { StateNeededByAnswerAPI } from '../stream-answer-api.js';
3
+ export declare const streamAnswerAPIStateMock: StateNeededByAnswerAPI;
4
+ export declare const streamAnswerAPIStateMockWithATabWithAnExpression: StateNeededByAnswerAPI;
5
+ export declare const streamAnswerAPIStateMockWithoutAnyTab: StateNeededByAnswerAPI;
6
+ export declare const streamAnswerAPIStateMockWithStaticFiltersSelected: StateNeededByAnswerAPI;
7
+ export declare const streamAnswerAPIStateMockWithNonValidFilters: StateNeededByAnswerAPI;
8
+ export declare const streamAnswerAPIStateMockWithoutAnyFilters: StateNeededByAnswerAPI;
9
+ export declare const streamAnswerAPIStateMockWithStaticFiltersAndTabExpression: StateNeededByAnswerAPI;
10
10
  export declare const streamAnswerAPIStateMockWithStaticFiltersAndTabExpressionWithEmptyCQ: {
11
11
  advancedSearchQueries: {
12
12
  cq: string;
@@ -26,9 +26,9 @@ export declare const streamAnswerAPIStateMockWithStaticFiltersAndTabExpressionWi
26
26
  };
27
27
  searchHub: string;
28
28
  pipeline: string;
29
- answer: import("@reduxjs/toolkit/query").CombinedState<{
30
- getAnswer: import("@reduxjs/toolkit/query").QueryDefinition<Partial<import("../../search/search/search-request.js").SearchRequest>, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, import("@reduxjs/toolkit/query").FetchBaseQueryError, {} & import("@reduxjs/toolkit/query").RetryOptions, {}>, never, import("../generated-answer-stream.js").GeneratedAnswerStream, "answer">;
31
- }, never, "answer">;
29
+ answer: ReturnType<import("redux").Reducer<import("@reduxjs/toolkit/query").CombinedState<{
30
+ getAnswer: import("@reduxjs/toolkit/query").QueryDefinition<Partial<import("../../search/search/search-request.js").SearchRequest>, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@reduxjs/toolkit/query").FetchArgs, unknown, import("@reduxjs/toolkit/query").FetchBaseQueryError, {} & import("@reduxjs/toolkit/query").RetryOptions, {}>, never, import("../stream-answer-api.js").GeneratedAnswerStream, "answer">;
31
+ }, never, "answer">, import("redux").UnknownAction>>;
32
32
  configuration: import("../../../features/configuration/configuration-state.js").ConfigurationState;
33
33
  facetSet?: import("../../../features/facets/facet-set/facet-set-state.js").FacetSetState | undefined;
34
34
  dateFacetSet?: import("../../../features/facets/range-facets/date-facet-set/date-facet-set-state.js").DateFacetSetState | undefined;
@@ -66,7 +66,7 @@ export declare const streamAnswerAPIStateMockWithStaticFiltersAndTabExpressionWi
66
66
  instantResults?: import("../../../features/instant-results/instant-results-state.js").InstantResultsState | undefined;
67
67
  insightConfiguration?: import("../../../features/insight-configuration/insight-configuration-state.js").InsightConfigurationState | undefined;
68
68
  };
69
- export declare const streamAnswerAPIStateMockWithoutSearchAction: StreamAnswerAPIState;
69
+ export declare const streamAnswerAPIStateMockWithoutSearchAction: StateNeededByAnswerAPI;
70
70
  export declare const expectedStreamAnswerAPIParam: {
71
71
  q: string;
72
72
  aq: string;
@@ -32,18 +32,6 @@ export interface Sort extends Controller {
32
32
  * Verifies whether the specified sort criterion is the currently active one.
33
33
  *
34
34
  * @param criterion - The sort criterion to evaluate.
35
- * Can be a single criterion or an array of criteria.
36
- * The criteria in an array will be applied sequentially. For example, if there's a tie on the 1st criterion, the API uses the 2nd criterion to break the tie. However, this only works when combining:
37
- * `SortByRelevancy` followed by one or more `SortByField` or `SortByDate` criteria.
38
- * `SortByQRE` followed by one or more `SortByField` or `SortByDate` criteria.
39
- * Two or more `SortByField` criteria.
40
- * A single `SortByDate` criterion and one or more `SortByField` criteria in any order.
41
- *
42
- * Examples:
43
- * * `SortByRelevancy`, `SortByField`
44
- * * `SortByQRE`, `SortByField`
45
- * * `SortByDate`, `SortByField`, `SortByField`
46
- *
47
35
  * @returns `true` if the specified sort criterion is the currently active one; `false` otherwise.
48
36
  */
49
37
  isSortedBy(criterion: SortCriterion | SortCriterion[]): boolean;
@@ -1,7 +1,10 @@
1
1
  import type { GeneratedAnswerCitation } from '../../controllers/generated-answer/headless-generated-answer.js';
2
2
  import type { SearchAppState } from '../../state/search-app-state.js';
3
3
  import type { GeneratedAnswerSection } from '../../state/state-sections.js';
4
- export declare const generativeQuestionAnsweringIdSelector: (state: Partial<SearchAppState>) => string | undefined;
4
+ export declare const generativeQuestionAnsweringIdSelector: (state: Partial<SearchAppState>) => {
5
+ answerAPIEnabled: boolean;
6
+ id: string | undefined;
7
+ };
5
8
  export declare const selectFieldsToIncludeInCitation: (state: Partial<GeneratedAnswerSection>) => string[] | undefined;
6
9
  export declare const citationSourceSelector: ((state: Partial<GeneratedAnswerSection>, citationId: string) => GeneratedAnswerCitation | undefined) & {
7
10
  clearCache: () => void;
@@ -24,7 +24,7 @@ export declare const buildSearchRequest: (state: StateNeededBySearchRequest, eve
24
24
  facetOptions?: import("../../facet-options/facet-options.js").FacetOptions;
25
25
  numberOfResults?: number;
26
26
  firstResult?: number;
27
- facets?: (import("../../facets/facet-set/interfaces/request.js").FacetRequest | import("../../facets/category-facet-set/interfaces/request.js").CategoryFacetRequest | import("../../facets/range-facets/date-facet-set/interfaces/request.js").DateFacetRequest | import("../../facets/range-facets/numeric-facet-set/interfaces/request.js").NumericFacetRequest)[] | undefined;
27
+ facets?: (import("../../facets/facet-set/interfaces/request.js").FacetRequest | import("../../facets/category-facet-set/interfaces/request.js").CategoryFacetRequest | import("../../facets/range-facets/numeric-facet-set/interfaces/request.js").NumericFacetRequest | import("../../facets/range-facets/date-facet-set/interfaces/request.js").DateFacetRequest)[] | undefined;
28
28
  cq?: string;
29
29
  queryCorrection?: {
30
30
  enabled?: boolean;
@@ -25,7 +25,7 @@ export declare const buildSearchRequest: (state: StateNeededBySearchRequest, nav
25
25
  facetOptions?: import("../facet-options/facet-options.js").FacetOptions;
26
26
  numberOfResults?: number;
27
27
  firstResult?: number;
28
- facets?: (import("../facets/facet-set/interfaces/request.js").FacetRequest | import("../facets/category-facet-set/interfaces/request.js").CategoryFacetRequest | import("../facets/range-facets/date-facet-set/interfaces/request.js").DateFacetRequest | import("../facets/range-facets/numeric-facet-set/interfaces/request.js").NumericFacetRequest)[] | undefined;
28
+ facets?: (import("../facets/facet-set/interfaces/request.js").FacetRequest | import("../facets/category-facet-set/interfaces/request.js").CategoryFacetRequest | import("../facets/range-facets/numeric-facet-set/interfaces/request.js").NumericFacetRequest | import("../facets/range-facets/date-facet-set/interfaces/request.js").DateFacetRequest)[] | undefined;
29
29
  cq?: string;
30
30
  queryCorrection?: {
31
31
  enabled?: boolean;
@@ -5,6 +5,10 @@ import type { SolutionType } from './controller-constants.js';
5
5
  import type { ControllerDefinitionsMap, EngineDefinitionControllersPropsOption, OptionsTuple } from './controller-definitions.js';
6
6
  import type { EngineStaticState } from './engine.js';
7
7
  import type { FromBuildResult } from './from-build-result.js';
8
+ /**
9
+ * @deprecated This interface will be remove on the next major version.
10
+ * Use BuildConfig interface instead
11
+ */
8
12
  export type FetchStaticStateOptions = {};
9
13
  export type FetchStaticState<TControllers extends ControllersMap, TSearchAction extends UnknownAction, TControllersStaticState extends ControllerStaticStateMap, TControllersProps extends ControllersPropsMap, TControllersDefinitionsMap extends ControllerDefinitionsMap<Controller>, TSolutionType extends SolutionType> = {
10
14
  /**
@@ -3,6 +3,9 @@ import type { ControllersMap, ControllersPropsMap } from './controllers.js';
3
3
  import type { EngineDefinitionBuildResult, EngineDefinitionControllersPropsOption } from './engine.js';
4
4
  import type { OptionsExtender, OptionsTuple } from './utilities.js';
5
5
  interface BuildOptions<TEngineOptions> {
6
+ /**
7
+ * @deprecated This option will be removed in the next major version.
8
+ */
6
9
  extend?: OptionsExtender<TEngineOptions>;
7
10
  }
8
11
  export type Build<TEngine extends CoreEngine | CoreEngineNext, TEngineOptions, TControllersMap extends ControllersMap, TControllersProps extends ControllersPropsMap> = (...params: OptionsTuple<BuildOptions<TEngineOptions> & EngineDefinitionControllersPropsOption<TControllersProps>>) => Promise<EngineDefinitionBuildResult<TEngine, TControllersMap>>;
@@ -38,6 +38,9 @@ export interface EngineDefinition<TEngine extends CoreEngine | CoreEngineNext, T
38
38
  */
39
39
  build: Build<TEngine, TEngineOptions, InferControllersMapFromDefinition<TControllers>, InferControllerPropsMapFromDefinitions<TControllers>>;
40
40
  }
41
+ /**
42
+ * @deprecated Use SearchEngineDefinitionBuildResult or CommerceEngineDefinitionBuildResult instead
43
+ */
41
44
  export interface EngineDefinitionBuildResult<TEngine extends CoreEngine | CoreEngineNext, TControllers extends ControllersMap> {
42
45
  engine: TEngine;
43
46
  controllers: TControllers;
@@ -68,7 +68,6 @@
68
68
  */
69
69
  export type { Relay } from '@coveo/relay';
70
70
  export type { Middleware, Unsubscribe } from '@reduxjs/toolkit';
71
- export type { CommerceEngineOptions } from './app/commerce-engine/commerce-engine.js';
72
71
  export type { CommerceEngineConfiguration } from './app/commerce-engine/commerce-engine-configuration.js';
73
72
  export { getSampleCommerceEngineConfiguration } from './app/commerce-engine/commerce-engine-configuration.js';
74
73
  export type { CoreEngineNext, ExternalEngineOptions } from './app/engine.js';
@@ -119,10 +118,11 @@ export type { RedirectionTrigger, RedirectionTriggerDefinition, RedirectionTrigg
119
118
  export { defineRedirectionTrigger } from './ssr-next/commerce/controllers/triggers/headless-redirection-trigger.ssr.js';
120
119
  export { defineCommerceEngine } from './ssr-next/commerce/engine/commerce-engine.ssr.js';
121
120
  export type { CommerceEngineDefinitionOptions, SSRCommerceEngine as CommerceEngine, } from './ssr-next/commerce/factories/build-factory.js';
121
+ export type { BuildConfig, SSRCommerceEngineOptions, } from './ssr-next/commerce/types/build.js';
122
122
  export { SolutionType } from './ssr-next/commerce/types/controller-constants.js';
123
- export type { ControllerDefinition, ControllerDefinitionsMap, ControllerWithKind, EngineDefinitionBuildResult, EngineDefinitionControllersPropsOption, HydratedState, InferControllerStaticStateFromController, InferControllerStaticStateMapFromControllers, OptionsTuple, } from './ssr-next/commerce/types/controller-definitions.js';
123
+ export type { ControllerDefinition, ControllerDefinitionsMap, ControllerWithKind, EngineDefinitionControllersPropsOption, HydratedState, InferControllerStaticStateFromController, InferControllerStaticStateMapFromControllers, OptionsTuple, } from './ssr-next/commerce/types/controller-definitions.js';
124
124
  export type { InferControllerFromDefinition, InferControllerPropsMapFromDefinitions, InferControllerStaticStateMapFromDefinitionsWithSolutionType, InferControllersMapFromDefinition, InferHydratedState, InferStaticState, } from './ssr-next/commerce/types/controller-inference.js';
125
- export type { CommerceEngineDefinition, EngineStaticState, FetchStaticState, FetchStaticStateOptions, HydrateStaticState, HydrateStaticStateOptions, } from './ssr-next/commerce/types/engine.js';
125
+ export type { CommerceEngineDefinition, CommerceEngineDefinitionBuildResult, EngineStaticState, FetchStaticState, HydrateStaticState, HydrateStaticStateOptions, } from './ssr-next/commerce/types/engine.js';
126
126
  export { Kind } from './ssr-next/commerce/types/kind.js';
127
127
  export type { CommerceAppState, CommerceProductListingParametersState, CommerceSearchParametersState, } from './state/commerce-app-state.js';
128
128
  export * from './features/commerce/configuration/configuration-actions-loader.js';
@@ -1,11 +1,13 @@
1
- import { type Recommendations, type RecommendationsOptions, type RecommendationsProps, type RecommendationsState } from '../../../../controllers/commerce/recommendations/headless-recommendations.js';
1
+ import { type Recommendations, type RecommendationsOptions, type RecommendationsState } from '../../../../controllers/commerce/recommendations/headless-recommendations.js';
2
2
  import { recommendationInternalOptionKey } from '../../types/controller-constants.js';
3
3
  import type { RecommendationOnlyControllerDefinitionWithProps } from '../../types/controller-definitions.js';
4
4
  export type { Recommendations, RecommendationsState };
5
5
  export type RecommendationsDefinitionMeta = {
6
- [recommendationInternalOptionKey]: {} & RecommendationsProps['options'];
6
+ [recommendationInternalOptionKey]: {} & RecommendationsOptions;
7
7
  };
8
- export interface RecommendationsDefinition extends RecommendationOnlyControllerDefinitionWithProps<Recommendations, Partial<RecommendationsOptions>> {
8
+ export interface RecommendationsDefinition extends RecommendationOnlyControllerDefinitionWithProps<Recommendations, {
9
+ initialState: Partial<RecommendationsOptions>;
10
+ }> {
9
11
  }
10
12
  /**
11
13
  * Defines a `Recommendations` controller instance.
@@ -14,4 +16,6 @@ export interface RecommendationsDefinition extends RecommendationOnlyControllerD
14
16
  * @param props - The configurable `Recommendations` properties.
15
17
  * @returns The `Recommendations` controller definition.
16
18
  * */
17
- export declare function defineRecommendations(props: RecommendationsProps): RecommendationsDefinition & RecommendationsDefinitionMeta;
19
+ export declare function defineRecommendations(props: {
20
+ options: Omit<RecommendationsOptions, 'productId'>;
21
+ }): RecommendationsDefinition & RecommendationsDefinitionMeta;
@@ -1,6 +1,7 @@
1
1
  import type { Action } from '@reduxjs/toolkit';
2
- import { type CommerceEngine, type CommerceEngineOptions } from '../../../app/commerce-engine/commerce-engine.js';
2
+ import { type CommerceEngine } from '../../../app/commerce-engine/commerce-engine.js';
3
3
  import type { Controller } from '../../../controllers/controller/headless-controller.js';
4
+ import type { SSRCommerceEngineOptions } from '../types/build.js';
4
5
  import { SolutionType } from '../types/controller-constants.js';
5
6
  import type { ControllerDefinitionsMap } from '../types/controller-definitions.js';
6
7
  import type { BuildParameters, CommerceControllerDefinitionsMap, EngineDefinitionOptions } from '../types/engine.js';
@@ -15,8 +16,8 @@ export interface SSRCommerceEngine extends CommerceEngine {
15
16
  */
16
17
  waitForRequestCompletedAction(): Promise<Action>[];
17
18
  }
18
- export type CommerceEngineDefinitionOptions<TControllers extends ControllerDefinitionsMap<Controller> = ControllerDefinitionsMap<Controller>> = EngineDefinitionOptions<CommerceEngineOptions, TControllers>;
19
- export declare const buildFactory: <TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: TControllerDefinitions | undefined, options: CommerceEngineDefinitionOptions<TControllerDefinitions>) => <T extends SolutionType>(solutionType: T) => (...[buildOptions]: BuildParameters<TControllerDefinitions>) => Promise<{
19
+ export type CommerceEngineDefinitionOptions<TControllers extends ControllerDefinitionsMap<Controller> = ControllerDefinitionsMap<Controller>> = EngineDefinitionOptions<SSRCommerceEngineOptions, TControllers>;
20
+ export declare const buildFactory: <TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: TControllerDefinitions, options: CommerceEngineDefinitionOptions<TControllerDefinitions>) => <T extends SolutionType>(solutionType: T) => (...[buildOptions]: BuildParameters<TControllerDefinitions>) => Promise<{
20
21
  engine: SSRCommerceEngine;
21
22
  controllers: import("../types/controller-inference.js").InferControllersMapFromDefinition<TControllerDefinitions, T>;
22
23
  }>;
@@ -1,4 +1,5 @@
1
1
  import type { SolutionType } from '../types/controller-constants.js';
2
+ import type { AugmentedControllerDefinition } from '../types/controller-definitions.js';
2
3
  import type { CommerceControllerDefinitionsMap, HydrateStaticStateFunction } from '../types/engine.js';
3
4
  import { type CommerceEngineDefinitionOptions } from './build-factory.js';
4
- export declare function hydratedStaticStateFactory<TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: TControllerDefinitions | undefined, options: CommerceEngineDefinitionOptions<TControllerDefinitions>): (solutionType: SolutionType) => HydrateStaticStateFunction<TControllerDefinitions>;
5
+ export declare function hydratedStaticStateFactory<TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: AugmentedControllerDefinition<TControllerDefinitions>, options: CommerceEngineDefinitionOptions<TControllerDefinitions>): (solutionType: SolutionType) => HydrateStaticStateFunction<TControllerDefinitions>;
@@ -1,3 +1,3 @@
1
1
  import type { CommerceControllerDefinitionsMap, HydrateStaticStateFunction } from '../types/engine.js';
2
2
  import { type CommerceEngineDefinitionOptions } from './build-factory.js';
3
- export declare function hydratedRecommendationStaticStateFactory<TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: TControllerDefinitions | undefined, options: CommerceEngineDefinitionOptions<TControllerDefinitions>): HydrateStaticStateFunction<TControllerDefinitions>;
3
+ export declare function hydratedRecommendationStaticStateFactory<TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: TControllerDefinitions, options: CommerceEngineDefinitionOptions<TControllerDefinitions>): HydrateStaticStateFunction<TControllerDefinitions>;
@@ -1,3 +1,4 @@
1
+ import type { AugmentedControllerDefinition } from '../types/controller-definitions.js';
1
2
  import type { CommerceControllerDefinitionsMap, FetchStaticStateFunction } from '../types/engine.js';
2
3
  import { type CommerceEngineDefinitionOptions } from './build-factory.js';
3
- export declare function fetchRecommendationStaticStateFactory<TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: TControllerDefinitions | undefined, options: CommerceEngineDefinitionOptions<TControllerDefinitions>): FetchStaticStateFunction<TControllerDefinitions>;
4
+ export declare function fetchRecommendationStaticStateFactory<TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: AugmentedControllerDefinition<TControllerDefinitions>, options: CommerceEngineDefinitionOptions<TControllerDefinitions>): FetchStaticStateFunction<TControllerDefinitions>;
@@ -1,4 +1,5 @@
1
1
  import { SolutionType } from '../types/controller-constants.js';
2
+ import type { AugmentedControllerDefinition } from '../types/controller-definitions.js';
2
3
  import type { CommerceControllerDefinitionsMap, FetchStaticStateFunction } from '../types/engine.js';
3
4
  import { type CommerceEngineDefinitionOptions } from './build-factory.js';
4
- export declare function fetchStaticStateFactory<TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: TControllerDefinitions | undefined, options: CommerceEngineDefinitionOptions<TControllerDefinitions>): (solutionType: SolutionType) => FetchStaticStateFunction<TControllerDefinitions>;
5
+ export declare function fetchStaticStateFactory<TControllerDefinitions extends CommerceControllerDefinitionsMap>(controllerDefinitions: AugmentedControllerDefinition<TControllerDefinitions>, options: CommerceEngineDefinitionOptions<TControllerDefinitions>): (solutionType: SolutionType) => FetchStaticStateFunction<TControllerDefinitions>;
@@ -1,14 +1,80 @@
1
+ import type { CurrencyCodeISO4217 } from '@coveo/relay-event-types';
2
+ import type { CommerceEngineOptions } from '../../../app/commerce-engine/commerce-engine.js';
1
3
  import type { Controller } from '../../../controllers/controller/headless-controller.js';
2
4
  import type { ControllersMap, ControllersPropsMap } from '../../common/types/controllers.js';
3
- import type { OptionsExtender, OptionsTuple } from '../../common/types/utilities.js';
4
- import type { SSRCommerceEngine } from '../factories/build-factory.js';
5
+ import type { HasKey, OptionsTuple } from '../../common/types/utilities.js';
6
+ import type { CartInitialState } from '../controllers/cart/headless-cart.ssr.js';
7
+ import type { UserLocation } from '../controllers/context/headless-context.ssr.js';
8
+ import type { ParameterManagerState, Parameters } from '../controllers/parameter-manager/headless-core-parameter-manager.ssr.js';
5
9
  import type { SolutionType } from './controller-constants.js';
6
- import type { ControllerDefinitionsMap, EngineDefinitionBuildResult, EngineDefinitionControllersPropsOption } from './controller-definitions.js';
7
- interface BuildOptions<TEngineOptions> {
8
- extend?: OptionsExtender<TEngineOptions>;
10
+ import type { ControllerDefinitionsMap, EngineDefinitionControllersPropsOption, IsRecommendationController } from './controller-definitions.js';
11
+ import type { CommerceEngineDefinitionBuildResult } from './engine.js';
12
+ export interface SearchBuildConfig extends CommonBuildConfig {
13
+ query: string;
9
14
  }
15
+ /**
16
+ * RecommendationBuildConfig defines the shape of the config object required when fetching static state for recommendations.
17
+ *
18
+ * The `recommendations` property is a string array containing the names of the recommendation controllers
19
+ * that were defined in your engine definition. This allows you to specify which recommendation controllers
20
+ * should be included in the SSR request.
21
+ *
22
+ * For example, given the following engine definition:
23
+ *
24
+ * ```ts
25
+ * const {recommendationEngineDefinition} = defineCommerceEngine({
26
+ * controllers: {
27
+ * popularViewed: defineRecommendations({options: {slotId: '...'}}),
28
+ * popularBought: defineRecommendations({options: {slotId: '...'}}),
29
+ * viewedTogether: defineRecommendations({options: {slotId: '...'}}),
30
+ * // ...other controllers
31
+ * },
32
+ * });
33
+ *
34
+ * // When fetching static state for recommendations:
35
+ * const staticState = await recommendationEngineDefinition.fetchStaticState({
36
+ * recommendations: ['popularBought', 'viewedTogether'],
37
+ * // ...other config
38
+ * });
39
+ * ```
40
+ *
41
+ * In this example, only the `popularBought` and `viewedTogether` recommendation controllers will be included in the SSR request.
42
+ */
43
+ export type RecommendationBuildConfig<TControllers extends ControllerDefinitionsMap<Controller>> = CommonBuildConfig & {
44
+ /**
45
+ * The unique identifier of the product to use for seeded recommendations.
46
+ */
47
+ productId?: string;
48
+ /**
49
+ * An array of recommendation controller names from your engine definition to include in the SSR request.
50
+ * Each name corresponds to the key used when defining recommendation controllers in your engine definition.
51
+ * If not specified, no recommendation requests will be executed.
52
+ */
53
+ recommendations: Array<Extract<keyof TControllers, {
54
+ [K in keyof TControllers]: HasKey<TControllers[K], SolutionType.recommendation> extends never ? never : IsRecommendationController<TControllers[K]> extends never ? never : K;
55
+ }[keyof TControllers]>>;
56
+ };
57
+ export interface ListingBuildConfig extends CommonBuildConfig {
58
+ }
59
+ export interface StandaloneBuildConfig extends CommonBuildConfig {
60
+ }
61
+ export interface CommonBuildConfig {
62
+ url: string;
63
+ language: string;
64
+ country: string;
65
+ currency: CurrencyCodeISO4217;
66
+ location?: UserLocation;
67
+ cart?: CartInitialState;
68
+ searchParams?: Omit<ParameterManagerState<Parameters>['parameters'], 'q'>;
69
+ }
70
+ export type BuildConfig<TControllers extends ControllerDefinitionsMap<Controller>, TSolutionType extends SolutionType> = TSolutionType extends SolutionType.search ? SearchBuildConfig : TSolutionType extends SolutionType.listing ? ListingBuildConfig : TSolutionType extends SolutionType.recommendation ? RecommendationBuildConfig<TControllers> : TSolutionType extends SolutionType.standalone ? CommonBuildConfig : never;
71
+ /**
72
+ * Commerce engine options for SSR scenarios where context is defined when fetching static state.
73
+ */
74
+ export type SSRCommerceEngineOptions = Omit<CommerceEngineOptions, 'configuration'> & {
75
+ configuration: Omit<CommerceEngineOptions['configuration'], 'context'>;
76
+ };
10
77
  /**
11
78
  * @internal
12
79
  */
13
- export type Build<TEngineOptions, TControllersMap extends ControllersMap, TControllersProps extends ControllersPropsMap, TControllersDefinitionsMap extends ControllerDefinitionsMap<Controller>, TSolutionType extends SolutionType> = (...params: OptionsTuple<BuildOptions<TEngineOptions> & EngineDefinitionControllersPropsOption<TControllersDefinitionsMap, TControllersProps, TSolutionType>>) => Promise<EngineDefinitionBuildResult<SSRCommerceEngine, TControllersMap>>;
14
- export {};
80
+ export type Build<TControllersMap extends ControllersMap, TControllersProps extends ControllersPropsMap, TControllersDefinitionsMap extends ControllerDefinitionsMap<Controller>, TSolutionType extends SolutionType> = (...params: OptionsTuple<BuildConfig<TControllersDefinitionsMap, TSolutionType> & EngineDefinitionControllersPropsOption<TControllersDefinitionsMap, TControllersProps, TSolutionType>>) => Promise<CommerceEngineDefinitionBuildResult<TControllersMap>>;