/*! Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one or more contributor license agreements. * Licensed under the Elastic License 2.0; you may not use this file except in compliance with the Elastic License 2.0. */!function(e){var t={};function r(s){if(t[s])return t[s].exports;var i=t[s]={i:s,l:!1,exports:{}};return e[s].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.m=e,r.c=t,r.d=function(e,t,s){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(r.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(s,i,function(t){return e[t]}.bind(null,i));return s},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=7)}([function(e,t,r){e.exports=r(9)(1465)},function(e,t){e.exports=__kbnSharedDeps__.Rxjs},function(e,t){e.exports=__kbnSharedDeps__.RxjsOperators},function(e,t){e.exports=__kbnSharedDeps__.Lodash},function(e,t){e.exports=__kbnSharedDeps__.Moment},function(e,t){e.exports=__kbnSharedDeps__.KbnI18n},function(e,t){e.exports=__kbnSharedDeps__.Uuid},function(e,t,r){r(8),__kbnBundles__.define("plugin/globalSearch/public",r,10)},function(e,t,r){r.p=window.__kbnPublicPath__.globalSearch},function(e,t){e.exports=__kbnSharedDeps_npm__},function(e,t,r){"use strict";r.r(t),r.d(t,"plugin",(function(){return b}));var s=r(0),i=r.n(s);class license_checker_LicenseChecker{constructor(e){i()(this,"subscription",void 0),i()(this,"state",{valid:!1,message:"unknown"}),this.subscription=e.subscribe((e=>{this.state=(e=>{const t=e.check("globalSearch","basic");switch(t.state){case"expired":return{valid:!1,message:"expired"};case"invalid":return{valid:!1,message:"invalid"};case"unavailable":return{valid:!1,message:"unavailable"};case"valid":return{valid:!0};default:throw new Error(`Invalid license state: ${t.state}`)}})(e)}))}getState(){return this.state}clean(){this.subscription.unsubscribe()}}var n=r(1),a=r(2),c=r(3),o=r(4),l=r(5);class GlobalSearchFindError extends Error{static invalidLicense(e){return new GlobalSearchFindError("invalid-license",e)}constructor(e,t){super(t),this.type=e,Object.setPrototypeOf(this,GlobalSearchFindError.prototype)}}class TakeInArray{constructor(e){if(this.total=e,this.total<0)throw new Error("Cannot take a negative number of items")}call(e,t){return t.subscribe(new take_in_array_TakeInArraySubscriber(e,this.total))}}class take_in_array_TakeInArraySubscriber extends n.Subscriber{constructor(e,t){super(e),i()(this,"current",0),this.total=t}_next(e){const t=this.total-this.current;t>e.length?(this.destination.next(e),this.current+=e.length):(this.destination.next(e.slice(0,t)),this.destination.complete(),this.unsubscribe())}}const u=(e,t)=>"string"==typeof e?e.startsWith("/")?t.prepend(e):e:e.prependBasePath?t.prepend(e.path):e.path;var h=r(6);const p="globalSearch:defaultPref",d=()=>{};class search_service_SearchService{constructor(){i()(this,"providers",new Map),i()(this,"config",void 0),i()(this,"http",void 0),i()(this,"maxProviderResults",40),i()(this,"licenseChecker",void 0),i()(this,"serverTypes",void 0)}setup({config:e,maxProviderResults:t=40}){return this.config=e,this.maxProviderResults=t,{registerResultProvider:e=>{if(this.providers.has(e.id))throw new Error(`trying to register duplicate provider: ${e.id}`);this.providers.set(e.id,e)}}}start({http:e,licenseChecker:t}){return this.http=e,this.licenseChecker=t,{find:(e,t)=>this.performFind(e,t),getSearchableTypes:()=>this.getSearchableTypes()}}async getSearchableTypes(){const e=(await Promise.all([...this.providers.values()].map((e=>e.getSearchableTypes())))).flat();return this.serverTypes||(this.serverTypes=await(async e=>{const{types:t}=await e.get("/internal/global_search/searchable_types");return t})(this.http)),Object(c.uniq)([...e,...this.serverTypes])}performFind(e,t){var r;const s=this.licenseChecker.getState();if(!s.valid)return Object(n.throwError)(GlobalSearchFindError.invalidLicense(l.i18n.translate("xpack.globalSearch.find.invalidLicenseError",{defaultMessage:"GlobalSearch API is disabled because of invalid license state: {errorMessage}",values:{errorMessage:s.message}})));const i=Object(o.duration)(this.config.search_timeout).asMilliseconds(),c=Object(n.timer)(i).pipe(Object(a.map)(d)),b=t.aborted$?Object(n.merge)(t.aborted$,c):c,f=null!==(r=t.preference)&&void 0!==r?r:((e=window.sessionStorage)=>{let t=e.getItem(p);return t||(t=Object(h.v4)(),e.setItem(p,t),t)})(),v={...t,preference:f,maxResults:this.maxProviderResults,aborted$:b},_=e=>((e,t)=>({...e,url:u(e.url,t)}))(e,this.http.basePath),g=((e,t,{preference:r,aborted$:s})=>{var i;let c;return s&&(c=new AbortController,s.subscribe((()=>{c.abort()}))),Object(n.from)(e.post("/internal/global_search/find",{body:JSON.stringify({params:t,options:{preference:r}}),signal:null===(i=c)||void 0===i?void 0:i.signal})).pipe(Object(a.takeUntil)(null!=s?s:n.EMPTY),Object(a.map)((e=>e.results)))})(this.http,e,{preference:f,aborted$:b}).pipe(Object(a.catchError)((()=>n.EMPTY))),S=[...this.providers.values()].map((t=>{return t.find(e,v).pipe(Object(a.catchError)((()=>n.EMPTY)),(r=this.maxProviderResults,function(e){return 0===r?n.EMPTY:e.lift(new TakeInArray(r))}),Object(a.takeUntil)(b),Object(a.map)((e=>e.map((e=>_(e))))));var r}));return Object(n.merge)(...S,g).pipe(Object(a.map)((e=>({results:e}))))}}class plugin_GlobalSearchPlugin{constructor(e){i()(this,"config",void 0),i()(this,"licenseChecker",void 0),i()(this,"searchService",new search_service_SearchService),this.config=e.config.get()}setup(e){const{registerResultProvider:t}=this.searchService.setup({config:this.config});return{registerResultProvider:t}}start({http:e},{licensing:t}){this.licenseChecker=new license_checker_LicenseChecker(t.license$);const{find:r,getSearchableTypes:s}=this.searchService.start({http:e,licenseChecker:this.licenseChecker});return{find:r,getSearchableTypes:s}}stop(){this.licenseChecker&&this.licenseChecker.clean()}}const b=e=>new plugin_GlobalSearchPlugin(e)}]);