All files / core/autocomplete autocomplete.injector.ts

100% Statements 2/2
100% Branches 14/14
100% Functions 2/2
100% Lines 2/2

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48                                          9x       90x                                            
import { AutocompleteRequestParams } from "../../request/autocomplete/autocomplete.request.type";
import { GlobalRequestOptions } from "../../request/main/main.request.type";
import { customIdentity, customPickBy } from "../../utils";
import { LablebAPIResponseWrapper } from "../lableb-client/lableb-client.type";
import { AutocompleteResponse, AutocompleteResponseWithFeedback } from "./autocomplete.type";
 
 
export function injectFeedbackDataIntoAutocompleteResponse({
    autocompleteOptions,
    globalOptions,
    autocompleteResponse,
}: {
 
    autocompleteOptions: AutocompleteRequestParams,
 
    autocompleteResponse: LablebAPIResponseWrapper<AutocompleteResponse>,
 
    globalOptions: GlobalRequestOptions,
 
}): LablebAPIResponseWrapper<AutocompleteResponseWithFeedback> {
 
    return {
        ...autocompleteResponse,
        response: {
            ...autocompleteResponse.response,
            results: autocompleteResponse.response.results.map((document, index) => ({
                ...document,
                feedback: customPickBy({
                    query: autocompleteOptions.query,
                    itemId: document.id,
                    itemOrder: index,
                    url: document.url,
 
                    userCountry: autocompleteOptions.userCountry || globalOptions.userCountry,
                    userId: autocompleteOptions.userId || globalOptions.userId,
                    userIp: autocompleteOptions.userIp || globalOptions.userIp,
                    sessionId:
                        autocompleteOptions.sessionId ||
                        (autocompleteOptions.sessionIdGenerator ? autocompleteOptions.sessionIdGenerator() : undefined) ||
                        globalOptions.sessionId ||
                        (globalOptions.sessionIdGenerator ? globalOptions.sessionIdGenerator() : undefined),
 
                }, customIdentity),
            }))
        }
    }
}