UNPKG

@yext/answers-search-ui

Version:

Javascript Search Programming Interface

1,375 lines (1,266 loc) 4.82 MB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ANSWERS = factory()); })(this, (function () { 'use strict'; function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; } function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var n = 0, F = function () {}; return { s: F, n: function () { return n >= r.length ? { done: !0 } : { done: !1, value: r[n++] }; }, e: function (r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function () { t = t.call(r); }, n: function () { var r = t.next(); return a = r.done, r; }, e: function (r) { u = !0, o = r; }, f: function () { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; } function _defineProperty$1(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _get() { return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); } function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } function _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf("[native code]"); } catch (n) { return "function" == typeof t; } } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function () { return !!t; })(); } function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; } function _possibleConstructorReturn(t, e) { if (e && ("object" == typeof e || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; } function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; } function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _wrapNativeSuper(t) { var r = "function" == typeof Map ? new Map() : void 0; return _wrapNativeSuper = function (t) { if (null === t || !_isNativeFunction(t)) return t; if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return _construct(t, arguments, _getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(Wrapper, t); }, _wrapNativeSuper(t); } var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; function unwrapExports (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } function createCommonjsModule(fn, module) { return module = { exports: {} }, fn(module, module.exports), module.exports; } function getCjsExportFromNamespace (n) { return n && n['default'] || n; } var SearchCore_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.SearchCore = void 0; /** * Provides methods for executing searches, submitting questions, and performing autocompletes. * * @public */ class SearchCore { constructor(searchService, questionSubmissionService, autoCompleteService, generativeDirectAnswerService) { this.searchService = searchService; this.questionSubmissionService = questionSubmissionService; this.autoCompleteService = autoCompleteService; this.generativeDirectAnswerService = generativeDirectAnswerService; } /** * Performs a search across all verticals. * * @remarks * If rejected, the reason will be an {@link SearchError}. * * @param request - Universal search request options */ universalSearch(request) { return this.searchService.universalSearch(request); } /** * Performs a search for a single vertical. * * @remarks * If rejected, the reason will be an {@link SearchError}. * * @param request - Vertical search request options */ verticalSearch(request) { return this.searchService.verticalSearch(request); } /** * Submits a custom question to the Search API. * * @remarks * If rejected, the reason will be an {@link SearchError}. * * @param request - Question submission request options */ submitQuestion(request) { return this.questionSubmissionService.submitQuestion(request); } /** * Performs an autocomplete request across all verticals. * * @remarks * If rejected, the reason will be an {@link SearchError}. * * @param request - Universal autocomplete request options */ universalAutocomplete(request) { return this.autoCompleteService.universalAutocomplete(request); } /** * Performs an autocomplete request for a single vertical. * * @remarks * If rejected, the reason will be an {@link SearchError}. * * @param request - Vertical autocomplete request options */ verticalAutocomplete(request) { return this.autoCompleteService.verticalAutocomplete(request); } /** * Performs a filtersearch request against specified fields within a single vertical. * * @remarks * This differs from the vertical autocomplete because the vertical autocomplete * operates on all entity fields whereas filtersearch operates only on specified fields. * If rejected, the reason will be an {@link SearchError}. * * @example * A site has a 'products' vertical and would like a way to allow the user to narrow down * the results by the product name. The site can add a second search bar powered by filtersearch * which will include only product names as search suggestions. * * @param request - filtersearch request options */ filterSearch(request) { return this.autoCompleteService.filterSearch(request); } /** * Performs a generative direct answer request. * * @remarks * If rejected, the reason will be an {@link SearchError}. * * @param request - Generative direct answer request options */ generativeDirectAnswer(request) { return this.generativeDirectAnswerService.generateAnswer(request); } } exports.SearchCore = SearchCore; }); unwrapExports(SearchCore_1); SearchCore_1.SearchCore; var DirectAnswerType_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.DirectAnswerType = void 0; (function (DirectAnswerType) { /** Indicates that the DirectAnswer is a {@link FeaturedSnippetDirectAnswer}. */ DirectAnswerType["FeaturedSnippet"] = "FEATURED_SNIPPET"; /** Indicates that the DirectAnswer is a {@link FieldValueDirectAnswer}. */ DirectAnswerType["FieldValue"] = "FIELD_VALUE"; })(exports.DirectAnswerType || (exports.DirectAnswerType = {})); }); unwrapExports(DirectAnswerType_1); DirectAnswerType_1.DirectAnswerType; var Source_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Source = void 0; (function (Source) { /** The result is from a Knowledge Graph. */ Source["KnowledgeManager"] = "KNOWLEDGE_MANAGER"; /** The result is from Google Custom Search Engine. */ Source["Google"] = "GOOGLE_CSE"; /** The result was from a custom source. */ Source["Custom"] = "CUSTOM_SEARCHER"; /** The result is from a document vertical. */ Source["DocumentVertical"] = "DOCUMENT_VERTICAL"; /** The result is from a function vertical. */ Source["FunctionVertical"] = "FUNCTION_VERTICAL"; })(exports.Source || (exports.Source = {})); }); unwrapExports(Source_1); Source_1.Source; var ResultsFactory_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.ResultsFactory = void 0; /** * A factory which creates results from different sources */ class ResultsFactory { static create(results, source) { if (!results) { return []; } return results.map((result, index) => { const resultIndex = index + 1; switch (source) { case Source_1.Source.KnowledgeManager: return this.fromKnowledgeManager(result, resultIndex); case Source_1.Source.Google: return this.fromGoogleCustomSearchEngine(result, resultIndex); case Source_1.Source.DocumentVertical: return this.fromDocumentVertical(result, resultIndex); case Source_1.Source.FunctionVertical: return this.fromFunctionVertical(result, resultIndex); default: return this.fromCustomSource(result, resultIndex); } }); } static fromKnowledgeManager(result, index) { var _a; const rawData = (_a = result.data) !== null && _a !== void 0 ? _a : result; return { rawData: rawData, source: Source_1.Source.KnowledgeManager, index: index, name: rawData.name, description: rawData.description, link: rawData.website, id: rawData.id, distance: result.distance, distanceFromFilter: result.distanceFromFilter, highlightedFields: result.highlightedFields, entityType: rawData.type }; } static fromDocumentVertical(result, index) { var _a; const rawData = (_a = result.data) !== null && _a !== void 0 ? _a : result; return { rawData: rawData, source: Source_1.Source.DocumentVertical, name: rawData.name, description: rawData.description, link: rawData.website, id: rawData.id, index: index, segment: result.segment, document: result.document, documents: result.documents }; } static fromGoogleCustomSearchEngine(result, index) { var _a; const rawData = (_a = result.data) !== null && _a !== void 0 ? _a : result; return { rawData: rawData, source: Source_1.Source.Google, index: index, name: rawData.htmlTitle.replace(/(<([^>]+)>)/ig, ''), description: rawData.htmlSnippet, link: rawData.link }; } static fromCustomSource(result, index) { return this.fromCustomDataHelper(result, index, Source_1.Source.Custom); } static fromFunctionVertical(result, index) { return this.fromCustomDataHelper(result, index, Source_1.Source.FunctionVertical); } static fromCustomDataHelper(result, index, source) { var _a; const rawData = (_a = result.data) !== null && _a !== void 0 ? _a : result; return { rawData: rawData, source: source, index: index, name: rawData.name, description: rawData.description, link: rawData.website, id: rawData.id }; } static fromDirectAnswer(result) { var _a; const rawData = (_a = result.fieldValues) !== null && _a !== void 0 ? _a : {}; return { rawData: rawData, source: Source_1.Source.KnowledgeManager, name: rawData.name, description: rawData.description, link: result.website, id: result.id, entityType: result.type, }; } } exports.ResultsFactory = ResultsFactory; }); unwrapExports(ResultsFactory_1); ResultsFactory_1.ResultsFactory; var BuiltInFieldType_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.BuiltInFieldType = void 0; (function (BuiltInFieldType) { BuiltInFieldType["URL"] = "url"; BuiltInFieldType["ComplexURL"] = "complex_url"; BuiltInFieldType["IOSAppURL"] = "ios_app_url"; BuiltInFieldType["AndroidAppURL"] = "android_app_url"; BuiltInFieldType["FacebookURL"] = "facebook_url"; BuiltInFieldType["Email"] = "email"; BuiltInFieldType["InstagramHandle"] = "instagram_handle"; BuiltInFieldType["TwitterHandle"] = "twitter_handle"; BuiltInFieldType["Phone"] = "phone"; BuiltInFieldType["Address"] = "address"; BuiltInFieldType["Hours"] = "hours"; BuiltInFieldType["Decimal"] = "decimal"; BuiltInFieldType["Integer"] = "integer"; BuiltInFieldType["SingleLineText"] = "single_line_text"; BuiltInFieldType["RichText"] = "rich_text"; BuiltInFieldType["MultiLineText"] = "multi_line_text"; BuiltInFieldType["RichText_v2"] = "rich_text_v2"; BuiltInFieldType["Html"] = "html"; BuiltInFieldType["Markdown"] = "markdown"; })(exports.BuiltInFieldType || (exports.BuiltInFieldType = {})); }); unwrapExports(BuiltInFieldType_1); BuiltInFieldType_1.BuiltInFieldType; var createDirectAnswer_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createDirectAnswer = void 0; const supportedFieldTypes = [ BuiltInFieldType_1.BuiltInFieldType.MultiLineText, BuiltInFieldType_1.BuiltInFieldType.RichText, BuiltInFieldType_1.BuiltInFieldType.RichText_v2, BuiltInFieldType_1.BuiltInFieldType.Markdown, BuiltInFieldType_1.BuiltInFieldType.Html ]; function createDirectAnswer(data) { const isFieldValueDirectAnswer = (data === null || data === void 0 ? void 0 : data.type) === DirectAnswerType_1.DirectAnswerType.FieldValue; const isFeaturedSnippetDirectAnswer = (data === null || data === void 0 ? void 0 : data.type) === DirectAnswerType_1.DirectAnswerType.FeaturedSnippet; const commonDirectAnswerData = { value: data.answer.value, relatedResult: ResultsFactory_1.ResultsFactory.fromDirectAnswer(data.relatedItem.data), verticalKey: data.relatedItem.verticalConfigId, fieldType: Object.values(BuiltInFieldType_1.BuiltInFieldType).includes(data.answer.fieldType) ? data.answer.fieldType : 'unknown' }; if (isFieldValueDirectAnswer) { return Object.assign(Object.assign({ type: DirectAnswerType_1.DirectAnswerType.FieldValue }, commonDirectAnswerData), { entityName: data.answer.entityName, fieldName: data.answer.fieldName, fieldApiName: data.answer.fieldApiName }); } else if (isFeaturedSnippetDirectAnswer) { const fieldType = commonDirectAnswerData.fieldType; if (!supportedFieldTypes.includes(fieldType)) { console.warn(`Unexpected fieldType for featured snippet direct answer: ${fieldType}`); return undefined; } return Object.assign(Object.assign({ type: DirectAnswerType_1.DirectAnswerType.FeaturedSnippet }, commonDirectAnswerData), { snippet: data.answer.snippet }); } else { throw new Error(`The Search API returned an unknown direct answer type: ${data === null || data === void 0 ? void 0 : data.type}`); } } exports.createDirectAnswer = createDirectAnswer; }); unwrapExports(createDirectAnswer_1); createDirectAnswer_1.createDirectAnswer; var Matcher_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Matcher = void 0; (function (Matcher) { /** * An equals comparison. * * @remarks * Compatible with all field types. */ Matcher["Equals"] = "$eq"; /** * A not equals comparison. * * @remarks * Compatible with all field types. */ Matcher["NotEquals"] = "!$eq"; /** * A less than comparison. * * @remarks * Compatible with integer, float, date, datetime, and time fields. */ Matcher["LessThan"] = "$lt"; /** * A less than or equal to comparison. * * @remarks * Compatible with integer, float, date, datetime, and time fields. */ Matcher["LessThanOrEqualTo"] = "$le"; /** * A greater than comparison. * * @remarks * Compatible with integer, float, date, datetime, and time fields. */ Matcher["GreaterThan"] = "$gt"; /** * A greater than or equal to comparison. * * @remarks * Compatible with integer, float, date, datetime, and time fields. */ Matcher["GreaterThanOrEqualTo"] = "$ge"; /** * A comparison of whether an entity is within a certain radius of a certain location. * * @remarks * Only compatible with the builtin.location field. */ Matcher["Near"] = "$near"; /** * A limitation of the dataset to a range of values. * * @remarks * Compatible with integer and float. */ Matcher["Between"] = "$between"; /** * A comparison of an entity's hours and the current time to determine whether it is open. * * @remarks * Only compatible with the builtin.hours field, and only supports the value 'now'. */ Matcher["OpenAt"] = "$openAt"; })(exports.Matcher || (exports.Matcher = {})); }); unwrapExports(Matcher_1); Matcher_1.Matcher; var createFieldValueFilter_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createFieldValueFilter = void 0; function createFieldValueFilter(result) { const filter = result.filter; const fieldId = Object.keys(filter)[0]; const matcher = Object.keys(filter[fieldId])[0]; let value; if (matcher === Matcher_1.Matcher.Between) { value = createNumberRangeValue(filter[fieldId][matcher]); } else if (matcher === Matcher_1.Matcher.Near) { value = Object.assign(Object.assign({}, filter[fieldId][matcher]), { name: result.value }); } else { value = filter[fieldId][matcher]; } return { fieldId: fieldId, matcher: matcher, value }; } exports.createFieldValueFilter = createFieldValueFilter; function createNumberRangeValue(value) { const numberRangeValue = {}; Object.keys(value).forEach(limitMatcher => { if (limitMatcher === Matcher_1.Matcher.GreaterThan || limitMatcher === Matcher_1.Matcher.GreaterThanOrEqualTo) { numberRangeValue.start = { matcher: limitMatcher, value: value[limitMatcher] }; } else if (limitMatcher === Matcher_1.Matcher.LessThan || limitMatcher === Matcher_1.Matcher.LessThanOrEqualTo) { numberRangeValue.end = { matcher: limitMatcher, value: value[limitMatcher] }; } }); return numberRangeValue; } }); unwrapExports(createFieldValueFilter_1); createFieldValueFilter_1.createFieldValueFilter; var createFacets_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createFacets = void 0; function createFacets(facets) { if (!facets) { return []; } return facets.map((facet) => ({ fieldId: facet.fieldId, displayName: facet.displayName, options: createFacetOptions(facet.options) })); } exports.createFacets = createFacets; function createFacetOptions(options) { return options.map((option) => { const filter = (0, createFieldValueFilter_1.createFieldValueFilter)(option); return { displayName: option.displayName, count: option.count, selected: option.selected, matcher: filter.matcher, value: filter.value }; }); } }); unwrapExports(createFacets_1); createFacets_1.createFacets; var createLocationBias_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createLocationBias = void 0; function createLocationBias(data) { return { latitude: data.latitude, longitude: data.longitude, displayName: data.locationDisplayName, method: data.accuracy }; } exports.createLocationBias = createLocationBias; }); unwrapExports(createLocationBias_1); createLocationBias_1.createLocationBias; var createSpellCheck_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createSpellCheck = void 0; function createSpellCheck(data) { return { originalQuery: data.originalQuery, correctedQuery: data.correctedQuery.value, type: data.type, matchedSubstrings: data.correctedQuery.matchedSubstrings }; } exports.createSpellCheck = createSpellCheck; }); unwrapExports(createSpellCheck_1); createSpellCheck_1.createSpellCheck; var createAppliedQueryFilter_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createAppliedQueryFilter = void 0; function createAppliedQueryFilter(data) { return Object.assign({ displayKey: data.displayKey, displayValue: data.displayValue, filter: (0, createFieldValueFilter_1.createFieldValueFilter)(data), type: data.type }, (data.details && { details: data.details })); } exports.createAppliedQueryFilter = createAppliedQueryFilter; }); unwrapExports(createAppliedQueryFilter_1); createAppliedQueryFilter_1.createAppliedQueryFilter; var createVerticalResults_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createVerticalResults = void 0; function createVerticalResults(data) { const appliedQueryFilters = data.appliedQueryFilters ? data.appliedQueryFilters.map(createAppliedQueryFilter_1.createAppliedQueryFilter) : []; return { appliedQueryFilters: appliedQueryFilters, queryDurationMillis: data.queryDurationMillis, results: ResultsFactory_1.ResultsFactory.create(data.results, data.source), resultsCount: data.resultsCount, source: data.source, verticalKey: data.verticalConfigId, }; } exports.createVerticalResults = createVerticalResults; }); unwrapExports(createVerticalResults_1); createVerticalResults_1.createVerticalResults; var createVerticalSearchResponse_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createVerticalSearchResponse = void 0; function createVerticalSearchResponse(data) { var _a, _b, _c; return { verticalResults: (0, createVerticalResults_1.createVerticalResults)(data.response), queryId: data.response.queryId, directAnswer: data.response.directAnswer && (0, createDirectAnswer_1.createDirectAnswer)(data.response.directAnswer), searchIntents: data.response.searchIntents, facets: (0, createFacets_1.createFacets)(data.response.facets), spellCheck: data.response.spellCheck && (0, createSpellCheck_1.createSpellCheck)(data.response.spellCheck), locationBias: data.response.locationBias && (0, createLocationBias_1.createLocationBias)(data.response.locationBias), allResultsForVertical: data.response.allResultsForVertical && createVerticalSearchResponse({ response: data.response.allResultsForVertical }), alternativeVerticals: (_b = (_a = data.response.alternativeVerticals) === null || _a === void 0 ? void 0 : _a.modules) === null || _b === void 0 ? void 0 : _b.map(createVerticalResults_1.createVerticalResults), uuid: (_c = data.meta) === null || _c === void 0 ? void 0 : _c.uuid, queryRulesActionsData: data.response.queryRulesActionsData }; } exports.createVerticalSearchResponse = createVerticalSearchResponse; }); unwrapExports(createVerticalSearchResponse_1); createVerticalSearchResponse_1.createVerticalSearchResponse; var Environment_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Environment = void 0; (function (Environment) { Environment["PROD"] = "prod"; Environment["SANDBOX"] = "sbx"; /** For internal development only */ Environment["QA"] = "qa"; /** For internal development only */ Environment["DEV"] = "dev"; })(exports.Environment || (exports.Environment = {})); }); unwrapExports(Environment_1); Environment_1.Environment; var CloudRegion_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CloudRegion = void 0; (function (CloudRegion) { CloudRegion["US"] = "us"; CloudRegion["EU"] = "eu"; })(exports.CloudRegion || (exports.CloudRegion = {})); }); unwrapExports(CloudRegion_1); CloudRegion_1.CloudRegion; var CloudChoice_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.CloudChoice = void 0; (function (CloudChoice) { CloudChoice["GLOBAL_MULTI"] = "GLOBAL-MULTI"; CloudChoice["GLOBAL_GCP"] = "GLOBAL-GCP"; })(exports.CloudChoice || (exports.CloudChoice = {})); }); unwrapExports(CloudChoice_1); CloudChoice_1.CloudChoice; var provideEndpoints = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.SandboxEndpoints = exports.EndpointsFactory = exports.defaultApiVersion = void 0; exports.defaultApiVersion = 20220511; /** * Provides methods for getting various endpoints. * * @internal */ class EndpointsFactory { constructor(config) { this.environment = (config === null || config === void 0 ? void 0 : config.environment) || Environment_1.Environment.PROD; this.cloudRegion = (config === null || config === void 0 ? void 0 : config.cloudRegion) || CloudRegion_1.CloudRegion.US; this.cloudChoice = (config === null || config === void 0 ? void 0 : config.cloudChoice) || CloudChoice_1.CloudChoice.GLOBAL_MULTI; } /** Provides the domain based on environment and cloud region. */ getDomain() { if (this.isInternalTestEnvironment() && this.cloudRegion === CloudRegion_1.CloudRegion.US) { return `https://liveapi-${this.environment}.yext.com`; } switch (this.cloudChoice) { case CloudChoice_1.CloudChoice.GLOBAL_GCP: return `https://${this.environment}-cdn-gcp.${this.cloudRegion}.yextapis.com`; case CloudChoice_1.CloudChoice.GLOBAL_MULTI: default: return `https://${this.environment}-cdn.${this.cloudRegion}.yextapis.com`; } } /** Provides the cached domain based on environment and cloud region. */ getCachedDomain() { if (this.isInternalTestEnvironment() && this.cloudRegion === CloudRegion_1.CloudRegion.US) { return `https://liveapi-${this.environment}.yext.com`; } switch (this.cloudChoice) { case CloudChoice_1.CloudChoice.GLOBAL_GCP: return `https://${this.environment}-cdn-cached-gcp.${this.cloudRegion}.yextapis.com`; case CloudChoice_1.CloudChoice.GLOBAL_MULTI: default: return `https://${this.environment}-cdn-cached.${this.cloudRegion}.yextapis.com`; } } /** Provides all endpoints based on environment and cloud region. */ getEndpoints() { return { universalSearch: `${this.getDomain()}/v2/accounts/me/search/query`, verticalSearch: `${this.getDomain()}/v2/accounts/me/search/vertical/query`, questionSubmission: `${this.getDomain()}/v2/accounts/me/createQuestion`, status: 'https://answersstatus.pagescdn.com', universalAutocomplete: `${this.getCachedDomain()}/v2/accounts/me/search/autocomplete`, verticalAutocomplete: `${this.getCachedDomain()}/v2/accounts/me/search/vertical/autocomplete`, filterSearch: `${this.getDomain()}/v2/accounts/me/search/filtersearch`, generativeDirectAnswer: `${this.getDomain()}/v2/accounts/me/search/generateAnswer`, }; } isInternalTestEnvironment() { return this.environment === Environment_1.Environment.DEV || this.environment === Environment_1.Environment.QA; } } exports.EndpointsFactory = EndpointsFactory; /** * The endpoints to use for sandbox experiences. * * @deprecated Set the appropriate environment and cloud region in {@link ServingConfig} instead. * * @public */ exports.SandboxEndpoints = new EndpointsFactory({ environment: Environment_1.Environment.SANDBOX, cloudRegion: CloudRegion_1.CloudRegion.US, cloudChoice: CloudChoice_1.CloudChoice.GLOBAL_MULTI }) .getEndpoints(); }); unwrapExports(provideEndpoints); provideEndpoints.SandboxEndpoints; provideEndpoints.EndpointsFactory; provideEndpoints.defaultApiVersion; var QuerySource_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.QuerySource = void 0; (function (QuerySource) { /** * Indicates that the query was initiated from a standard Search integration. */ QuerySource["Standard"] = "STANDARD"; /** * Indicates that the query was initiated from a Search Overlay. */ QuerySource["Overlay"] = "OVERLAY"; /** * Indicates that the query was initiated from visual autocomplete. */ QuerySource["Autocomplete"] = "AUTOCOMPLETE"; })(exports.QuerySource || (exports.QuerySource = {})); }); unwrapExports(QuerySource_1); QuerySource_1.QuerySource; var createFailedVertical_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createFailedVertical = void 0; function createFailedVertical(data) { return { verticalKey: data.verticalConfigId, errorType: data.errorType, queryDurationMillis: data.queryDurationMillis, details: data.details }; } exports.createFailedVertical = createFailedVertical; }); unwrapExports(createFailedVertical_1); createFailedVertical_1.createFailedVertical; var createUniversalSearchResponse_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.createUniversalSearchResponse = void 0; function createUniversalSearchResponse(data) { var _a; const verticalResults = Array.isArray(data.response.modules) ? data.response.modules.map(createVerticalResults_1.createVerticalResults) : []; return { verticalResults: verticalResults, queryId: data.response.queryId, directAnswer: data.response.directAnswer && (0, createDirectAnswer_1.createDirectAnswer)(data.response.directAnswer), searchIntents: data.response.searchIntents, spellCheck: data.response.spellCheck && (0, createSpellCheck_1.createSpellCheck)(data.response.spellCheck), locationBias: data.response.locationBias && (0, createLocationBias_1.createLocationBias)(data.response.locationBias), uuid: data.meta.uuid, queryRulesActionsData: data.response.queryRulesActionsData, failedVerticals: (_a = data.response.failedVerticals) === null || _a === void 0 ? void 0 : _a.map(createFailedVertical_1.createFailedVertical) }; } exports.createUniversalSearchResponse = createUniversalSearchResponse; }); unwrapExports(createUniversalSearchResponse_1); createUniversalSearchResponse_1.createUniversalSearchResponse; var NumberRangeValue = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.isNumberRangeValue = void 0; function isNumberRangeValue(data) { return typeof data === 'object' && !!data && ('start' in data || 'end' in data); } exports.isNumberRangeValue = isNumberRangeValue; }); unwrapExports(NumberRangeValue); NumberRangeValue.isNumberRangeValue; var serializeStaticFilters_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.shapeFieldValueFilterForApi = exports.serializeStaticFilters = void 0; function serializeStaticFilters(filter) { if (filter.kind !== 'fieldValue') { const shapedFilter = shapeCombinedFilterForApi(filter.combinator, filter.filters); return shapedFilter && JSON.stringify(shapedFilter); } return JSON.stringify(shapeFieldValueFilterForApi(filter)); } exports.serializeStaticFilters = serializeStaticFilters; function shapeCombinedFilterForApi(combinator, filters) { const shapedFilters = []; for (const filter of filters) { if (filter.kind !== 'fieldValue') { const shapedFilter = shapeCombinedFilterForApi(filter.combinator, filter.filters); shapedFilter && shapedFilters.push(shapedFilter); } else { shapedFilters.push(shapeFieldValueFilterForApi(filter)); } } return shapedFilters.length === 0 ? undefined : shapedFilters.length === 1 ? shapedFilters[0] : { [combinator]: shapedFilters }; } function shapeFieldValueFilterForApi(filter) { let filterValues = {}; if ((0, NumberRangeValue.isNumberRangeValue)(filter.value)) { if (filter.value.start) { filterValues[filter.value.start.matcher] = filter.value.start.value; } if (filter.value.end) { filterValues[filter.value.end.matcher] = filter.value.end.value; } } else { filterValues = { [filter.matcher]: filter.value }; } return { [filter.fieldId]: filterValues }; } exports.shapeFieldValueFilterForApi = shapeFieldValueFilterForApi; }); unwrapExports(serializeStaticFilters_1); serializeStaticFilters_1.shapeFieldValueFilterForApi; serializeStaticFilters_1.serializeStaticFilters; var serializeFacets_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.serializeFacets = void 0; function serializeFacets(filters) { return JSON.stringify(filters.reduce((obj, facet) => { const fieldId = facet.fieldId; const shapedFacets = shapeFacetOptionArrayForApi(facet.options, fieldId); obj[fieldId] = shapedFacets; return obj; }, {})); } exports.serializeFacets = serializeFacets; function shapeFacetOptionArrayForApi(options, fieldId) { return options.map((option) => { return (0, serializeStaticFilters_1.shapeFieldValueFilterForApi)(Object.assign(Object.assign({}, option), { fieldId: fieldId })); }); } }); unwrapExports(serializeFacets_1); serializeFacets_1.serializeFacets; var name = "@yext/search-core"; var version = "2.8.0"; var description = "Typescript Networking Library for the Yext Search API"; var main = "./dist/commonjs/src/index.js"; var module = "./dist/esm/src/index.js"; var types = "./dist/bundle.d.ts"; var sideEffects = false; var keywords = [ "networking", "search api", "search", "browser", "nodejs", "typescript", "commonjs", "es6", "yext" ]; var files = [ "dist", "legacy", "lib", "src", "THIRD-PARTY-NOTICES" ]; var engines = { node: ">=12" }; var scripts = { test: "npm run lint && jest", lint: "eslint . --max-warnings=0", "tsc-cjs": "tsc -p tsconfig.cjs.json", "tsc-esm": "tsc -p tsconfig.esm.json", tsc: "npm run tsc-cjs && npm run tsc-esm", "build-legacy-bundle": "npx webpack", build: "rm -rf dist/** && npm run tsc && npm run build-legacy-bundle && npm run api-extractor && npm run generate-docs", "build-ci": "npm run tsc-cjs && npm run api-extractor && npm run generate-docs", dev: "npm run tsc-esm -- --watch", prepublishOnly: "npm run build", "api-extractor": "api-extractor run --local --verbose", "generate-docs": "api-documenter markdown --input-folder temp --output-folder docs && rm -rf temp && npm run generate-notices", "generate-notices": "generate-license-file --input package.json --output THIRD-PARTY-NOTICES --overwrite" }; var repository = { type: "git", url: "https://github.com/yext/search-core.git" }; var author = "slapshot@yext.com"; var license = "BSD-3-Clause"; var bugs = { url: "https://github.com/yext/search-core/issues" }; var homepage = "https://github.com/yext/search-core#readme"; var devDependencies = { "@babel/core": "^7.12.3", "@babel/plugin-transform-runtime": "^7.23.2", "@babel/preset-env": "^7.23.2", "@babel/preset-typescript": "^7.12.1", "@microsoft/api-documenter": "^7.13.76", "@microsoft/api-extractor": "^7.19.2", "@types/jest": "^28.1.1", "@typescript-eslint/eslint-plugin": "^5.16.0", "@typescript-eslint/parser": "^5.16.0", "@yext/eslint-config-slapshot": "^0.4.0", "@yext/eslint-plugin-export-star": "^1.0.2", "babel-jest": "^28.1.0", "babel-loader": "^8.3.0", eslint: "^8.11.0", "eslint-config-react-app": "^7.0.1", "eslint-plugin-tsdoc": "^0.2.14", "generate-license-file": "^4.1.0", jest: "^28.1.0", "jest-environment-jsdom": "^28.1.0", "ts-loader": "^8.4.0", typescript: "^4.0.3", webpack: "^5.90.0", "webpack-cli": "^4.4.0" }; var dependencies = { "@babel/runtime-corejs3": "^7.12.5", "cross-fetch": "^3.1.5" }; var jest = { bail: 0, collectCoverage: true, collectCoverageFrom: [ "src/**", "!src/models/**/*.ts" ], verbose: true, moduleFileExtensions: [ "js", "ts" ], moduleDirectories: [ "node_modules", "<rootDir>" ], testEnvironment: "jsdom", testPathIgnorePatterns: [ "./tests/mocks/*" ], testMatch: [ "<rootDir>/tests/**/*.[jt]s" ] }; var _package = { name: name, version: version, description: description, main: main, module: module, types: types, sideEffects: sideEffects, keywords: keywords, files: files, engines: engines, scripts: scripts, repository: repository, author: author, license: license, bugs: bugs, homepage: homepage, devDependencies: devDependencies, dependencies: dependencies, jest: jest }; var _package$1 = /*#__PURE__*/Object.freeze({ __proto__: null, name: name, version: version, description: description, main: main, module: module, types: types, sideEffects: sideEffects, keywords: keywords, files: files, engines: engines, scripts: scripts, repository: repository, author: author, license: license, bugs: bugs, homepage: homepage, devDependencies: devDependencies, dependencies: dependencies, jest: jest, 'default': _package }); var require$$0 = getCjsExportFromNamespace(_package$1); var getClientSdk_1 = createCommonjsModule(function (module, exports) { var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getClientSdk = void 0; const package_json_1 = __importDefault(require$$0); const { version } = package_json_1.default; function getClientSdk(additionalHttpHeaders) { var _a; const coreAgent = { ANSWERS_CORE: version }; if (!additionalHttpHeaders) { return coreAgent; } const customClientSdk = (_a = additionalHttpHeaders['Client-SDK']) !== null && _a !== void 0 ? _a : {}; return Object.entries(customClientSdk).reduce((clientSdk, [agent, version]) => { return version ? Object.assign(Object.assign({}, clientSdk), { [agent]: version }) : clientSdk; }, coreAgent); } exports.getClientSdk = getClientSdk; }); unwrapExports(getClientSdk_1); getClientSdk_1.getClientSdk; var SearchServiceImpl_1 = createCommonjsModule(function (module, exports) { var __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { f