@mongodb-js/compass-web 1.1.0 → 1.1.1

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.
@@ -1,4 +1,4 @@
1
- var e,t,n,a={1568:(e,t,n)=>{n.r(t),n.d(t,{connect:()=>o});var a=n(51390);const o=e=>(0,a.createConnection)({...e,tls:!0})},2155:(e,t,n)=>{n.d(t,{HD:()=>c,HP:()=>g,I4:()=>d,gp:()=>h,n_:()=>m,oC:()=>u,tU:()=>l,yS:()=>p});var a=n(96652),o=n(62183);const r=(0,a.createContext)(void 0),i=(0,a.createContext)(void 0),s=(0,a.createContext)(void 0),l=r.Provider,c=i.Provider,d=s.Provider,u=(0,o.mb)((()=>(0,a.useContext)(r)),"pipelineStorageLocator"),m=()=>(0,a.useContext)(i),p=(0,o.mb)(m,"favoriteQueryStorageAccessLocator"),h=()=>(0,a.useContext)(s),g=(0,o.mb)(h,"recentQueryStorageAccessLocator")},3370:(e,t,n)=>{function a(){throw new Error("Not supported in browser environment")}n.r(t),n.d(t,{pipeline:()=>a})},4308:(e,t,n)=>{n.r(t),n.d(t,{createWriteStream:()=>i,default:()=>s,promises:()=>a,readFileSync:()=>r,rmSync:()=>o});const a={chmod:()=>Promise.resolve(),access:()=>Promise.reject(new Error("Not supported in browser environment")),readFile:()=>Promise.reject(new Error("Not supported in browser environment"))};function o(){}function r(){}function i(){throw new Error("Not supported in browser environment")}const s={promises:a,rmSync:o,readFileSync:r,createWriteStream:i}},6725:(e,t,n)=>{function a(){}async function o(e,t,n,a){delete t.proxy,delete t.applyProxyToOIDC,delete t.productDocsLink,delete t.productName,delete t.oidc,delete t.parentState,delete t.parentHandle;const o=new a(e,t);return await o.connect(),{client:o,state:{getStateShareServer:()=>Promise.resolve("Not Available"),oidcPlugin:{logger:n,serialize:()=>Promise.resolve(void 0)},destroy:()=>Promise.resolve()}}}n.r(t),n.d(t,{connectMongoClient:()=>o,hookLogger:()=>a})},6924:(e,t,n)=>{n.d(t,{BE:()=>f,VV:()=>g,bk:()=>u,i2:()=>C});var a=n(78332),o=n(96652),r=n.n(o),i=n(19125),s=n(82162);const l="compass-workspaces/workspace-tab-state-provider/SET_STATE",c="compass-workspaces/workspace-tab-state-provider/CLEANUP_TAB_STATE",d=(0,s.y$)(((e=Object.create(null),t)=>t.type===l?{...e,[t.tabId]:{...e[t.tabId],[t.stateId]:t.value}}:t.type===c?(delete e[t.tabId],{...e}):"compass-workspaces/workspace-tab-state-provider/RESET"===t.type?Object.create(null):e));function u(e){d.dispatch({type:c,tabId:e})}const m=r().createContext(null),p=r().createContext(null),h=({children:e})=>r().createElement(i.Kq,{context:m,store:d},e),g=({id:e,children:t})=>r().createElement(p.Provider,{value:e},r().createElement(h,null,t));function f(){let e=(0,o.useContext)(p);if(!e)throw new Error("Trying to get tab id from React context, but getting `null`. Are you using workspace scoped hooks outside of workspace tab React rendering tree?");return e}const y=(0,i.Nk)(m),b=(0,i.jO)(m);function v(e,t,n){return e[t]?.[n]}function C(e,t){const n=(0,a.nfZ)(e),r=(0,a.nfZ)(f()),i=(0,a.nfZ)((()=>{try{return y()}catch(e){throw e}})()),s=(0,o.useCallback)((e=>{const t="function"==typeof e?e(v(i.getState(),r,n)):e;i.dispatch({type:l,tabId:r,stateId:n,value:t})}),[n,i,r]),c=(0,o.useRef)(!1);!1===c.current&&(c.current=!0,Object.prototype.hasOwnProperty.call(i.getState()[r]??{},n)||s(t));const d=function(e,t){try{return b((n=>v(n,e,t)))}catch(e){throw e}}(r,n);return[d,s]}},7570:(e,t,n)=>{n.d(t,{N_:()=>l,Ze:()=>d,Zk:()=>u}),n(72468),n(46948),n(64418),n(8422),n(59509),n(25691),n(23177),n(3142),n(51615),n(84217),n(25953),n(42319),n(28465),n(12887),n(36106),n(84542),n(57068),n(69517),n(64990),n(90801),n(95774),n(77767);var a=n(13353);function o(e,t){const n=(0,a.serialize)(e);if(!t||0===t.length)return new Uint8Array(n);const o=new Uint8Array(n.length+t.length);return o.set(n,0),o.set(t,n.length),o}function r({code:e,reason:t}){return["Connection failed",e&&`[${e}]`||null,t||null].filter(Boolean).join(" - ")}const i=function*(){let e=0;for(;;){let t=e,n="";do{n=String.fromCharCode(97+t%26)+n,t=(t/26|0)-1}while(t>=0);yield n,e+=1}}();function s(e,t,n,a){return e?.addEventListener(t,n,a),{[Symbol.dispose](){e?.removeEventListener(t,n,a)}}}class l{ws=null;baseUrls;connectedUrl=null;sourceAddress;logger;sockets=new Map;disposableStack=null;nextPort=1;closed=!1;connectPromise=null;connectResolve=null;connectReject=null;constructor({baseUrls:e,logger:t}){if(this.baseUrls=m?[m]:e??["ws://localhost:1337"],!this.baseUrls.length)throw new Error("baseUrls must not be empty");this.logger=t,this.logger?.log.info(this.logger?.mongoLogId(1001000420),"COMPASS-WEB-MULTIPLEXING","Link created",{baseUrls:this.baseUrls})}get urls(){return this.baseUrls}get url(){return this.connectedUrl}async connect(e){if(this.connectPromise)return this.connectPromise;if(this.closed)throw new Error("Link is closed");const{promise:t,resolve:n,reject:a}=Promise.withResolvers();this.connectPromise=t,this.connectResolve=n,this.connectReject=a;const o=s(e,"abort",(e=>{const t=e.target.reason;this.connectReject?.(t instanceof Error?t:new Error("Connection aborted."))}));return this.openWebSocket(),await this.connectPromise.finally((()=>o[Symbol.dispose]()))}openWebSocket(){this.sourceAddress=i.next().value,this.logger?.log.info(this.logger?.mongoLogId(1001000428),"COMPASS-WEB-MULTIPLEXING","Link connecting to WS",{sa:this.sourceAddress});const e=new DisposableStack,t=this.baseUrls.map((t=>{const n=new WebSocket(t);n.binaryType="arraybuffer";const{promise:a,resolve:o,reject:i}=Promise.withResolvers();return e.use(s(n,"open",(()=>o(n)),{once:!0})),e.use(s(n,"close",(e=>i(new Error(r(e)))),{once:!0})),{ws:n,promise:a}}));Promise.any(t.map((e=>e.promise))).then((e=>{for(const{ws:n}of t)n!==e&&n.close(1e3,"Race lost");this._activateWebSocket(e)}),(e=>{const t=e.errors[0];this.connectReject?.(t),this.connectResolve=null,this.connectReject=null,this.connectPromise=null;for(const e of this.sockets.values())e.onError(t);this.sockets.clear()})).finally((()=>e.dispose()))}_activateWebSocket(e){this.ws=e,this.connectedUrl=e.url;const t=new DisposableStack;t.use(s(e,"close",this.onClose.bind(this),{once:!0})),t.use(s(e,"message",this.onMessage.bind(this))),t.defer(this.close.bind(this,"Link Disposed")),this.disposableStack=t,this.connectResolve?.(),this.connectResolve=null,this.connectReject=null,this.logger?.log.info(this.logger?.mongoLogId(1001000421),"COMPASS-WEB-MULTIPLEXING","WebSocket connection established",{sourceAddress:this.sourceAddress})}_rejectWithCloseError(e){const t=new Error(r(e));this.connectReject?.(t),this.connectResolve=null,this.connectReject=null,this.connectPromise=null;for(const e of this.sockets.values())e.onError(t);this.sockets.clear()}onClose(e){this.ws=null,this.connectedUrl=null,this.closed||(this.logger?.log.info(this.logger?.mongoLogId(1001000422),"COMPASS-WEB-MULTIPLEXING","WebSocket closed",{code:e.code,reason:e.reason,sourceAddress:this.sourceAddress}),this._rejectWithCloseError(e))}onMessage({data:e}){const t=function(e){if(e.length<4)return null;const t=e[0]|e[1]<<8|e[2]<<16|e[3]<<24>>>0;if(t<5||t>e.length)return null;try{const n=e.slice(0,t);return{header:(0,a.deserialize)(n),payload:e.slice(t)}}catch{return null}}(new Uint8Array(e));if(!t)return;const{header:n,payload:o}=t,r=n.dp,i=this.sockets.get(r);return i?-1===n.v?(i.onError(new Error(`Connection closed by remote: ${n.er}`)),void this.sockets.delete(r)):void(o.length>0&&i.onData(o)):void 0}allocatePort(){return this.nextPort++}async registerSocket(e,t){this.isConnected()||await this.connect(),this.logger?.log.info(this.logger?.mongoLogId(1001000423),"COMPASS-WEB-MULTIPLEXING","Registering socket",{sourcePort:e,sourceAddress:this.sourceAddress}),this.sockets.set(e,t)}unregisterSocket(e){this.logger?.log.info(this.logger?.mongoLogId(1001000424),"COMPASS-WEB-MULTIPLEXING","Unregistering socket",{sourcePort:e,sourceAddress:this.sourceAddress}),this.sockets.delete(e)}sendData(e,t,n,a){const r={v:1,sa:this.sourceAddress,sp:e,da:t,dp:n,sz:a.length};this.sendRaw(o(r,a))}sendError(e,t,n,a){const r={v:-1,sa:this.sourceAddress,sp:e,da:t,dp:n,sz:0,er:a};this.sendRaw(o(r))}sendRaw(e){this.isConnected()?this.ws?.send(e.buffer):this.logger?.log.error(this.logger?.mongoLogId(1001000425),"COMPASS-WEB-MULTIPLEXING","Failed to send frame, WebSocket not open",{readyState:this.ws?.readyState,sourceAddress:this.sourceAddress})}close(e){if(!this.closed){this.logger?.log.info(this.logger?.mongoLogId(1001000426),"COMPASS-WEB-MULTIPLEXING","Closing Link",{reason:e,sourceAddress:this.sourceAddress}),this.closed=!0,this.disposableStack?.dispose(),this.disposableStack=null,this.ws?.close(1e3,e),this.ws=null,this.connectPromise=null,this.connectResolve=null,this.connectReject=null;for(const e of this.sockets.values())e.onClose();this.sockets.clear()}}isConnected(){return this.ws?.readyState===WebSocket.OPEN}[Symbol.dispose](){this.close("Link Disposed")}}let c=null;function d(e){c=e}function u(){return c}let m=null},7742:()=>{},10514:()=>{},12738:(e,t,n)=>{function a(){const e=function(){let e;try{e=n(98064).app}catch(t){try{e=n(66363).app}catch(e){console.log("Could not load @electron/remote",t.message,e.message)}}return e}()?.getPath("userData");if(!e)throw new Error("The storage path is not defined.");return e}n.d(t,{Om:()=>c,VJ:()=>i,bW:()=>a,nc:()=>s,kk:()=>l,Te:()=>r});class o extends Error{constructor(e){super(e??"This operation was aborted")}name="AbortError"}const r=e=>{if(e?.aborted)throw e.reason??i()},i=e=>{const t=new AbortController;return t.abort(),e&&t.signal.reason&&Object.defineProperty(t.signal.reason,"message",{get:()=>e,configurable:!0,enumerable:!0}),t.signal.reason??new o(e)};function s(e){return"AbortError"===e?.name}async function l(e,t){if(t.aborted)return Promise.reject(t.reason??i());let n;const a=new Promise(((e,a)=>{n=()=>a(t.reason??i()),t.addEventListener("abort",n,{once:!0})}));try{return await Promise.race([a,e])}finally{n&&t.removeEventListener("abort",n)}}async function c(e,t){await l(new Promise((t=>{setTimeout(t,e)})),t)}},13154:(e,t,n)=>{n.d(t,{s:()=>o});var a=n(44142);const o=({sendTrack:e,logger:{log:t,debug:n},preferences:o})=>(...r)=>{Promise.resolve().then((()=>(async(r,i,s)=>{const{trackUsageStatistics:l=!0}=o?.getPreferences()??{};if(!l)return;let c="object"==typeof i?i:{};if("function"==typeof i)try{c=await i()}catch(n){return e("Error Fetching Attributes",{event_name:r}),void t.error((0,a.oW)(1001000190),"Telemetry","Error computing event properties for telemetry",{event:r,error:n.stack})}s&&(c.connection_id=s.id),n("sendTrack()",r,c),e(r,c||{})})(...r))).catch((e=>n("track failed",e)))}},14582:(e,t,n)=>{n(95039);const a=n(90605);function o(e){return!!e.lengths&&!!a.every(e.lengths,(function(e){return 2===e}))&&!!e.types&&!!a.isArray(e.types)&&1===e.types.length&&!!a.includes(["Number","Double","Int32","Decimal128"],e.types[0].name)&&function(e){const t=a.filter(e,(function(e,t){return t%2==0})),n=a.filter(e,(function(e,t){return t%2==1}));return a.min(t)>=-180&&a.max(t)<=180&&a.min(n)>=-90&&a.max(n)<=90&&a.zip(t,n)}(e.types[0].values)}e.exports=function(e){return"Document"===e.name?function(e){if(!e.fields)return!1;if(!a.isArray(e.fields))return!1;if(e.fields.length<2)return!1;const t=a.find(e.fields,["name","type"]),n=a.find(e.fields,["name","coordinates"]);return!(!t||!n)&&!!t.types&&!!a.isArray(t.types)&&1===t.types.length&&"String"===t.types[0].name&&!!a.every(t.types[0].values,(function(e){return"Point"===e}))&&!!n.types&&!!a.isArray(n.types)&&1===n.types.length&&"Array"===n.types[0].name&&o(n.types[0])}(e):"Array"===e.name&&o(e)}},15088:(e,t,n)=>{n.r(t),n.d(t,{addListener:()=>h,arch:()=>I,argv:()=>d,chdir:()=>w,cwd:()=>k,default:()=>M,emit:()=>v,emitWarning:()=>A,env:()=>c,hrtime:()=>i.a,listeners:()=>S,nextTick:()=>s,off:()=>f,on:()=>p,once:()=>g,platform:()=>D,prependListener:()=>C,prependOnceListener:()=>E,process:()=>o.a,removeAllListeners:()=>b,removeListener:()=>y,title:()=>l,umask:()=>x,version:()=>u,versions:()=>m});var a=n(26752),o=n.n(a),r=n(89699),i=n.n(r);o().hrtime??=i(),o().emitWarning??=console.warn,o().platform="Unknown",o().arch="Unknown";const{nextTick:s,title:l,env:c,argv:d,version:u,versions:m,on:p,addListener:h,once:g,off:f,removeListener:y,removeAllListeners:b,emit:v,prependListener:C,prependOnceListener:E,listeners:S,cwd:k,chdir:w,umask:x,emitWarning:A,platform:D,arch:I}=o(),M=o()},15857:(e,t,n)=>{e.exports=n(60484)},16151:()=>{},16154:()=>{},17931:(e,t,n)=>{n.d(t,{C:()=>a,q:()=>o});const a={mockDataGenerator:"MOCK_DATA_GENERATOR_ITERATION_20260507",searchActivationProgramP1:"SEARCH_ACTIVATION_PROGRAM_P1_20260427",searchActivationProgramP2:"SEARCH_ACTIVATION_PROGRAM_P2_20260609"},o={mockDataGeneratorVariant:"mockDataGeneratorVariant",mockDataGeneratorControl:"mockDataGeneratorControl",searchActivationProgramP1Variant:"searchActivationProgramP1Variant",searchActivationProgramP1Control:"searchActivationProgramP1Control",searchActivationProgramP2Variant:"searchActivationProgramP2Variant",searchActivationProgramP2Control:"searchActivationProgramP2Control"}},17961:(e,t,n)=>{const a=n(5389).extend({props:{type:"string",servers:"array",setName:"string"}});e.exports=a},25657:(e,t,n)=>{n.d(t,{K:()=>s,n:()=>l});var a=n(96652),o=n.n(a),r=n(78332);const i=o().createContext([]),s=({value:e,children:t})=>{const n=(0,r.nfZ)(e);return o().createElement(i.Provider,{value:n},t)},l=()=>{const e=(0,a.useContext)(i);return(0,r.nfZ)({hasWorkspacePlugin:t=>e.some((e=>e.name===t)),getWorkspacePlugins:()=>e,getWorkspacePluginByName:t=>{const n=e.find((e=>e.name===t));if(!n)throw new Error(`Component for workspace "${t}" is missing in context. Did you forget to set up WorkspacesProvider?`);return n}})}},28508:(e,t,n)=>{n.d(t,{qP:()=>d.q,Cv:()=>d.C,Hb:()=>f,UP:()=>h,Uf:()=>v,yL:()=>y,RI:()=>l.RI,p5:()=>u.p,ir:()=>m,Jr:()=>b,qv:()=>l.qv,ou:()=>E,Ql:()=>C});var a=n(96652),o=n.n(a),r=n(62183),i=n(13154),s=n(44142),l=n(83145),c=n(78332),d=n(17931),u=n(81895);const m=({trackIsInSample:e=!0}={})=>{const t=(0,l.RI)(d.C.searchActivationProgramP2,e);return{enableSearchActivationProgramP2:t?.assignment?.assignmentData?.variant===d.q.searchActivationProgramP2Variant,isSearchActivationProgramP2Loading:!t.asyncStatus||"LOADING"===t.asyncStatus}},p=()=>{};function h(){return p}const g=o().createContext(h()),f=({options:e,children:t})=>{const n=(0,s.Ul)("COMPASS-TELEMETRY"),a=(0,c.nfZ)((()=>(0,i.s)({logger:n,...e})));return o().createElement(g.Provider,{value:a},t)},y=(0,r.mb)(b.bind(null),"telemetryLocator");function b(){const e=o().useContext(g);if(!e)throw new Error("Telemetry service is missing from React context");return e}const v=(0,r.mb)((function(){const{assignExperiment:e,getAssignment:t}=(0,a.useContext)(l.SJ);return{assignExperiment:e,getAssignment:t}}),"experimentationServiceLocator");function C(e){return t=>{const n=b();return o().createElement(e,{...t,track:n})}}function E(e,t,n={skipOnMount:!1}){const r=(0,c.HIF)(e),i=b(),s=(0,a.useRef)(!0);o().useEffect((()=>{n.skipOnMount&&s.current?s.current=!1:r.current(i)}),[...t,i,n.skipOnMount])}},28937:(e,t,n)=>{n(95039);const a="Standalone",o="Mongos",r="PossiblePrimary",i="RSPrimary",s="RSSecondary",l="RSArbiter",c="RSOther",d="RSGhost",u="Unknown",m=[a,o,r,i,s,l,c,d,u],p=[a,o,i],h={Standalone:"Standalone",Mongos:"Mongos",PossiblePrimary:"Possible Primary",RSPrimary:"Primary",RSSecondary:"Secondary",RSArbiter:"Arbiter",RSOther:"Other",RSGhost:"Ghost",Unknown:"Unknown"};e.exports={humanize:e=>h[e],isWritable:e=>p.includes(e),STANDALONE:a,MONGOS:o,POSSIBLE_PRIMARY:r,RS_PRIMARY:i,RS_SECONDARY:s,RS_ARBITER:l,RS_OTHER:c,RS_GHOST:d,UNKNOWN:u,SERVER_TYPES:m,WRITABLE_SERVER_TYPES:p}},29719:(e,t,n)=>{n.d(t,{Ay:()=>ae,Ff:()=>K,HC:()=>V,KB:()=>p,NC:()=>B,OH:()=>U,PM:()=>ne,Tr:()=>N,Xc:()=>Z,cN:()=>$,e6:()=>P,fL:()=>G,fy:()=>H,gb:()=>W,mR:()=>Y,mS:()=>Q,oY:()=>X,pU:()=>ee,qo:()=>te,r9:()=>j,sN:()=>u,vn:()=>R,ye:()=>q,yv:()=>J}),n(95039),n(59509),n(25691),n(23177),n(3142),n(51615),n(84217),n(25953),n(42319),n(28465),n(12887),n(36106),n(84542),n(57068),n(69517),n(21261),n(92879),n(31977),n(49743),n(9656),n(72673),n(35467),n(94476),n(64971),n(24330),n(83478),n(65166),n(1256),n(61038),n(73035),n(23855);var a=n(13353),o=n(62183),r=n(17855),i=n(90605),s=n(6924),l=n(70918),c=n(78332);const d=new Map,u=e=>{let t=d.get(e);return t||(t=new o.Ay,d.set(e,t),t)},m=e=>{const t=d.get(e);return t?.deactivate(),d.delete(e)},p=()=>{for(const e of d.values())e.deactivate();d.clear()},h="compass-workspaces/OpenWorkspace",g="compass-workspace/OpenFallbackWorkspace",f="compass-workspaces/SelectTab",y="compass-workspaces/SelectPreviousTab",b="compass-workspaces/SelectNextTab",v="compass-workspaces/MoveTab",C="compass-workspaces/OpenTabFromCurrentActive",E="compass-workspaces/RestoreWorkspaces",S="compass-workspaces/DuplicateTab",k="compass-workspaces/CloseTabs",w="compass-workspaces/CollectionRenamed",x="compass-workspaces/CollectionRemoved",A="compass-workspaces/DatabaseRemoved",D="compass-workspaces/ConnectionDisconnected",I="compass-workspaces/FetchCollectionTabInfo",M="compass-workspaces/FetchDatabaseTabInfo",T="compass-workspaces/CollectionSubtabSelected";function L(e,t){return e.type===t}const O=({state:e,isToBeClosed:t})=>{const{newTabs:n,removedIndexes:a}=(({tabs:e,isToBeClosed:t})=>{const n=[],a=[];return e.forEach(((e,o)=>{t(e,o)?a.push(o):n.push(e)})),{newTabs:n,removedIndexes:a}})({tabs:e.tabs,isToBeClosed:t});if(n.length===e.tabs.length)return e;const o=(({state:e,newTabs:t,removedIndexes:n})=>{let a=e.activeTabId,o=F(e);for(;n.includes(o);)o++;return a=t.length?o>=e.tabs.length?t[t.length-1]?.id:e.tabs[o]?.id:null,a})({state:e,removedIndexes:a,newTabs:n});return{...e,activeTabId:o,tabs:n}},N=e=>{const t=(new a.ObjectId).toString();if("Collection"===e.type){const{initialSubtab:n,...a}=e,o=Boolean(a.initialAggregation||a.initialPipeline||a.initialPipelineText||a.editViewName);return{id:t,subTab:n??(o?"Aggregations":"Documents"),...a}}return{id:t,...e}},_=(e,t)=>{for(const n of((e,t)=>{const n=new Set(t.map((e=>e.id)));return new Set(e.map((e=>e.id)).filter((e=>!n.has(e))))})(e,t))m(n),(0,s.bk)(n),(0,l.aC)("close",n),(0,l.aC)("replace",n)},F=e=>{const{activeTabId:t,tabs:n}=e;return n.findIndex((e=>e.id===t))},P=e=>e.tabs[F(e)]??null,W=(e,t)=>({type:I,namespaceId:e,info:t}),R=(e,t)=>({type:M,namespaceId:e,info:t}),U=(e,t)=>(n,a)=>{const o=a().tabs;"Collection"===e.type&&n((e=>async(t,n,{connections:a,instancesManager:o,logger:i})=>{const s=`${e.connectionId}.${e.namespace}`;if(n().collectionInfo[s])return;const{database:l,collection:c}=(0,r.Ay)(e.namespace);try{const n=a.getDataServiceForConnection(e.connectionId),r=o.getMongoDBInstanceForConnection(e.connectionId),i=await r.getNamespace({dataService:n,database:l,collection:c});if(i){await i.fetch({dataService:n});const e={isTimeSeries:i.isTimeSeries,isReadonly:i.readonly??i.isView,sourceName:i.sourceName,inferredFromPrivileges:i.inferred_from_privileges};t(W(s,e))}}catch(t){i.debug("Collection Metadata",i.mongoLogId(1001000306),"Error fetching collection metadata for tab",{namespace:e.namespace},t)}})(e)),"Collections"===e.type&&n((e=>async(t,n,{connections:a,instancesManager:o,logger:r})=>{const{databaseInfo:i}=n(),s=`${e.connectionId}.${e.namespace}`;if(!i[s])try{const n=a.getDataServiceForConnection(e.connectionId),r=o.getMongoDBInstanceForConnection(e.connectionId).databases.get(e.namespace);if(r){await r.fetch({dataService:n});const e={inferredFromPrivileges:r.inferred_from_privileges};t(R(s,e))}}catch(t){r.debug("Database Metadata",r.mongoLogId(1001000339),"Error fetching database metadata for tab",{namespace:e.namespace},t)}})(e)),n({type:h,workspace:e,newTab:t?.newTab??!1}),_(o,a().tabs)},$=e=>({type:f,atIndex:e}),V=(e,t)=>({type:v,fromIndex:e,toIndex:t}),H=()=>({type:y}),K=()=>({type:b}),j=e=>({type:C,defaultTab:e??{type:"My Queries"}}),B=e=>({type:S,atIndex:e});async function z(){return await(0,c.$TK)({title:"Are you sure you want to close the tab?",description:"The content of this tab has been modified. You will lose your changes if you close it.",buttonText:"Close tab",variant:"danger","data-testid":"confirm-tab-close"})}const Y=e=>async(t,n)=>{const{tabs:a}=n(),o=a[e];((0,l.Ct)(o)||await z())&&(t({type:k,tabIds:[o.id]}),_(a,n().tabs))},q=e=>async(t,n)=>{const{tabs:a}=n(),o=a[e],r=[];for(const[n,o]of a.entries())n!==e&&((0,l.Ct)(o)||(t({type:f,atIndex:n}),await z()))&&r.push(o);t({type:k,tabIds:r.map((e=>e.id)),activeTabId:o.id}),_(a,n().tabs)},G=(e,t)=>(n,a)=>{const o=a().tabs;n({type:w,from:e,to:t}),_(o,a().tabs)},Z=e=>(t,n)=>{const a=n().tabs;t({type:x,namespace:e}),_(a,n().tabs)},J=()=>async(e,t,{connections:n,userData:a,preferences:o})=>{if(!o.getPreferences().enableRestoreWorkspaces)return;const r=await a.readOne("saved-workspaces",{ignoreErrors:!0});if(r&&r.tabs.length>0&&await(0,c.$TK)({title:"Reopen closed tabs?",description:"Your connection and tabs were closed, this action will reopen your previous session",buttonText:"Reopen tabs"})){const t=[];for(const e of r.tabs){if("connectionId"in e){const t=n.getConnectionById(e.connectionId)?.info;if(!t)continue;n.connect(t)}t.push(e)}t.length>0&&e({type:E,tabs:t})}},Q=e=>(t,n)=>{const a=n().tabs;t({type:A,namespace:e}),_(a,n().tabs)},X=e=>(t,n)=>{const a=n().tabs;t({type:D,connectionId:e}),_(a,n().tabs)},ee=(e,t)=>({type:T,tabId:e,subTab:t}),te=(e,t)=>(n,a)=>{if("Collection"!==e.type&&"Collections"!==e.type)throw new Error("Fallback workspace can only be opened for workspaces with a namespace");const o=a().tabs;n({type:g,toReplace:e,fallbackNamespace:t??null}),_(o,a().tabs)},ne=()=>(e,t)=>t().tabs.every((e=>(0,l.Ct)(e))),ae=(e={tabs:[],activeTabId:null,collectionInfo:{},databaseInfo:{}},t)=>{if(L(t,h)){const n=P(e),a=N(t.workspace);let o=!1;if(!t.newTab){const r=(n?[n,...e.tabs]:e.tabs).find((e=>((e,t)=>{const{id:n,subTab:a,...o}=e,{id:r,subTab:s,...l}=t;return(0,i.isEqual)(o,l)})(e,a)));if(r)return r.id!==e.activeTabId?{...e,activeTabId:r.id}:e;n&&("connectionId"in t.workspace&&"connectionId"in n&&(o=t.workspace.connectionId!==n.connectionId),o||(o=!1===(0,l.A2)(n)))}if(o||t.newTab){const t=F(e),n=[...e.tabs];return n.splice(t+1,0,a),{...e,tabs:n,activeTabId:a.id}}const r=F(e),s=[...e.tabs];return s.splice(r,1,a),{...e,tabs:s,activeTabId:a.id}}if(L(t,E))return{...e,tabs:[...e.tabs,...t.tabs.map(N)]};if(L(t,C)){const n=P(e);let a;if(n){const{id:e,...t}=n;a=N(t)}else a=N(t.defaultTab);return{...e,tabs:[...e.tabs,a],activeTabId:a.id}}if(L(t,g)){const{collection:n,database:a,ns:o}=(0,r.Ay)(t.fallbackNamespace??""),i={...n?{type:"Collection",namespace:o}:a?{type:"Collections",namespace:o}:{type:"Databases"},connectionId:t.toReplace.connectionId},s=N(i),l=e.tabs.findIndex((e=>e.id===t.toReplace.id)),c=[...e.tabs];return c.splice(l,1,s),{...e,tabs:c,activeTabId:s.id}}if(L(t,S)){const n=e.tabs.slice(0,t.atIndex),a=e.tabs[t.atIndex],o=e.tabs.slice(t.atIndex+1),{id:r,...i}=a,s=N(i);return{...e,tabs:[...n,a,s,...o],activeTabId:s.id}}if(L(t,f))return e.tabs[t.atIndex]?.id===e.activeTabId?e:{...e,activeTabId:e.tabs[t.atIndex]?.id??null};if(L(t,b)){const t=(F(e)+1)%e.tabs.length,n=e.tabs[t];return n?.id===e.activeTabId?e:{...e,activeTabId:n?.id??e.activeTabId}}if(L(t,y)){const t=F(e),n=0===t?e.tabs.length-1:t-1,a=e.tabs[n];return a?.id===e.activeTabId?e:{...e,activeTabId:a?.id??e.activeTabId}}if(L(t,v)){if(t.fromIndex===t.toIndex)return e;const n=[...e.tabs];return n.splice(t.toIndex,0,n.splice(t.fromIndex,1)[0]),{...e,tabs:n}}if(L(t,k)){const n=O({state:e,isToBeClosed:e=>t.tabIds.includes(e.id)});return t.activeTabId?{...n,activeTabId:t.activeTabId}:n}if(L(t,x))return O({state:e,isToBeClosed:e=>"Collection"===e.type&&e.namespace===t.namespace});if(L(t,A))return O({state:e,isToBeClosed:e=>"Collections"===e.type&&e.namespace===t.namespace||"Collection"===e.type&&(0,r.Ay)(e.namespace).database===t.namespace});if(L(t,D))return O({state:e,isToBeClosed:e=>"connectionId"in e&&e.connectionId===t.connectionId});if(L(t,w)){let n=0,a=e.activeTabId;const o=e.tabs.map((o=>{if("Collection"===o.type&&o.namespace===t.from){n++;const{id:r,...i}=o,s=N({...i,namespace:t.to});return r===e.activeTabId&&(a=s.id),s}return o}));return 0===n?e:{...e,tabs:o,activeTabId:a}}if(L(t,I))return{...e,collectionInfo:{...e.collectionInfo,[t.namespaceId]:t.info}};if(L(t,M))return{...e,databaseInfo:{...e.databaseInfo,[t.namespaceId]:t.info}};if(L(t,T)){const n=e.tabs.find((e=>e.id===t.tabId));return!n||"Collection"===n.type&&n.subTab===t.subTab?e:{...e,tabs:e.tabs.map((e=>e.id===t.tabId?{...e,subTab:t.subTab}:e))}}return e}},32177:(e,t,n)=>{n(59509),n(25691),n(23177),n(3142),n(51615),n(84217),n(25953),n(42319),n(28465),n(12887),n(36106),n(84542),n(57068),n(69517);const a=Symbol("kDepth"),o=Symbol("kSBENodes");function r(e,t,n=null){const a=t(e,n),o=a||{};return e.inputStage&&(o.inputStage=r(e.inputStage,t,e)),e.innerStage&&(o.innerStage=r(e.innerStage,t,e)),e.outerStage&&(o.outerStage=r(e.outerStage,t,e)),e.thenStage&&(o.thenStage=r(e.thenStage,t,e)),e.elseStage&&(o.elseStage=r(e.elseStage,t,e)),e.inputStages&&(o.inputStages=e.inputStages.map((n=>r(n,t,e)))),e.shards&&(o.shards=e.shards.map((t=>r(t,e)))),e.executionStages&&(o.executionStages=e.executionStages.map((n=>r(n,t,e)))),a}function i(e){return r(e,(t=>e===t?{...e}:void 0))}function s(e,t){const n=new Map;r(e,(e=>{e.planNodeId&&(n.set(e.planNodeId,e),e[o]=[])})),r(t,((e,t)=>{e[a]=t?t[a]+1:0,e.planNodeId&&n.get(e.planNodeId)[o].push(e)}));for(const e of n.values())e[o].sort(((e,t)=>e[a]-t[a]));return r(e,(e=>{const t=e[o],n=t[0]||{};return{...i(n),...i(e),executionTimeMillisEstimate:n.executionTimeMillis||n.executionTimeMillisEstimate,docsExamined:t.filter((e=>"seek"===e.stage||"scan"===e.stage)).map((e=>e.numReads||0)).reduce(((e,t)=>e+t),0),keysExamined:t.filter((e=>"ixseek"===e.stage||"ixscan"===e.stage)).map((e=>e.numReads||0)).reduce(((e,t)=>e+t),0)}}))}function l(e){return function(e){return!!e.stages}(e)||c(e)}function c(e){return!!e.shards}function d(e){const{mongosPlannerVersion:t}=e.queryPlanner??{};return!isNaN(t)}function u(e){return Object.keys(e).find((e=>e.match(/^\$.*cursor/i)))}function m(e){if(!e.stages||0===e.stages.length)return e;const t=e.stages.map((e=>{if(!function(e){return!!u(e)}(e))return e;const t=u(e);return e[t]=h(e[t]),e}));return e.stages=t,e}function p(e){return h(e)}function h(e){if(e.queryPlanner&&e.queryPlanner.winningPlan&&e.queryPlanner.winningPlan.queryPlan){e.queryPlanner.plannerVersion=1;const t=e.queryPlanner.winningPlan.queryPlan;e.queryPlanner.winningPlan=t,e.executionStats&&(e.executionStats.executionStages=s(t,e.executionStats.executionStages))}return e}e.exports=function(e){return(e=JSON.parse(JSON.stringify(e))).explainVersion&&e.explainVersion<2?e:(delete e.explainVersion,e=l(e)?c(e)?function(e){if(!e.shards)return e;const t={};for(const n in e.shards)e.shards[n].stages?t[n]=m(e.shards[n]):t[n]=p(e.shards[n]);return e.shards=t,e}(e):m(e):d(e)?function(e){const t=e.queryPlanner,n=e.executionStats;return t.winningPlan.shards?(t.winningPlan.shards.forEach(((e,a)=>{const o=e.winningPlan.queryPlan;if(o&&n){const e=s(o,n.executionStages.shards[a].executionStages);t.winningPlan.shards[a].winningPlan=o,n.executionStages.shards[a].executionStages=e}})),e.queryPlanner=t,e.executionStats=n,e):e}(e):p(e),JSON.parse(JSON.stringify(e)))},e.exports.getStageCursorKey=u,e.exports.isAggregationExplain=l,e.exports.isShardedAggregationExplain=c,e.exports.isShardedFindExplain=d},32318:(e,t,n)=>{n.d(t,{d:()=>y});var a=n(32177),o=n.n(a);const r=e=>{const t=e.stages[0],n=(0,a.getStageCursorKey)(t);if(!n)throw new Error("Can not find a cursor stage.");return s(t[n])},i=e=>{const t=Object.keys(e.shards)[0],n=e.shards[t];return n.stages?r(n):s(n)},s=e=>e.queryPlanner,l=e=>e.queryPlanner.winningPlan.shards[0],c=e=>{const t=e.stages[0],n=(0,a.getStageCursorKey)(t);if(!n)throw new Error("Can not find a cursor stage.");const o=e.stages[e.stages.length-1],r=u(t[n])??{};return r.nReturned=o.nReturned,r.stageIndexes=p(e.stages),r.executionTimeMillis=function(e,t){return e.executionTimeMillis??t[t.length-1]?.executionTimeMillisEstimate??0}(r,e.stages),r},d=e=>{const t=[];let n=[];for(const a in e.shards){const o=e.shards[a].stages?c(e.shards[a]):u(e.shards[a]);t.push({shardName:a,...o}),n=n.concat(p(e.shards[a].stages??[],a))}const a=m(t,"nReturned"),o=m(t,"executionTimeMillis"),r=m(t,"totalKeysExamined"),i=m(t,"totalDocsExamined");return{nReturned:a,executionTimeMillis:o,totalKeysExamined:r,totalDocsExamined:i,allPlansExecution:[],executionSuccess:!0,stageIndexes:n,executionStages:{stage:1===t.length?"SINGLE_SHARD":"SHARD_MERGE",nReturned:a,executionTimeMillis:o,totalKeysExamined:r,totalDocsExamined:i,shards:t}}},u=e=>e.executionStats;function m(e,t){return e.reduce(((e,n)=>e+Number(n[t]??0)),0)}function p(e,t){return e.reduce(((e,t)=>e.concat(t?.indexesUsed??[])),[]).map((e=>({index:e,shard:t??null,fields:{}})))}var h=n(19461);function g(e){if("EXPRESS_IXSCAN"===e.stage&&"string"==typeof e.keyPattern)try{const t=(0,h.Ay)(e.keyPattern,{mode:h.X6.Strict,allowComments:!0,allowMethods:!0});return"string"==typeof t?{}:t}catch{return{}}return e.keyPattern??{}}const f=Symbol("ExplainPlan.kParent");class y{namespace;parsedQuery;executionSuccess;nReturned;executionTimeMillis;totalKeysExamined;totalDocsExamined;originalExplainData;executionStats;winningPlan;constructor(e){const t=o()(e),n=(m=t,(0,a.isAggregationExplain)(m)?(e=>(0,a.isShardedAggregationExplain)(e)?d(e):c(e))(m):u(m));var m;n?.executionStages&&y.addParentStages(n.executionStages);const p=(e=>{const t=(0,a.isAggregationExplain)(e)?(e=>(0,a.isShardedAggregationExplain)(e)?i(e):r(e))(e):(e=>(0,a.isShardedFindExplain)(e)?l(e):s(e))(e);return{namespace:t.namespace,parsedQuery:t.parsedQuery,winningPlan:t.winningPlan}})(t),h=n?.executionStages?.shards?.[0]??n;this.executionStats=n,this.namespace=p.namespace,this.parsedQuery=p.parsedQuery,this.executionSuccess=h?.executionSuccess??!1,this.nReturned=n?.nReturned??null,this.executionTimeMillis=n?.executionTimeMillis??null,this.totalKeysExamined=n?.totalKeysExamined??null,this.totalDocsExamined=n?.totalDocsExamined??null,this.originalExplainData=e,this.winningPlan=p.winningPlan}get usedIndexes(){const e=this.findAllStagesByName("IXSCAN"),t=this.findAllStagesByName("EXPRESS_IXSCAN"),n=this.findAllStagesByName("COUNT_SCAN"),a=this.findStageByName("IDHACK"),o=this.executionStats?.stageIndexes??[];for(const r of[...e,...t,...n,a]){if(!r)continue;let e=null;if(this.isSharded)for(const t of y.getParentStages(r))if("string"==typeof t.shardName){e=t.shardName;break}const t=r===a?"_id_":r.indexName,n=r===a?{_id:1}:g(r);o.push({index:t,shard:e,fields:n})}if(this.isSharded)for(const e of this.executionStats?.executionStages?.shards??[])o.some((t=>t.shard===e.shardName))||o.push({index:null,shard:e.shardName,fields:{}});return o.filter(((e,t,n)=>n.findIndex((t=>t.index===e.index&&t.shard===e.shard))===t))}get isCovered(){if(this.totalDocsExamined&&this.totalDocsExamined>0)return!1;const e=this.findStageByName("IXSCAN"),t=this.findStageByName("EXPRESS_IXSCAN"),n=e||t;return"FETCH"!==n?.parentName}get isMultiKey(){return this.findAllStagesByName("IXSCAN").some((e=>e.isMultiKey))}get inMemorySort(){return 0!==this.findAllStagesByName("SORT").length}get isCollectionScan(){return null!==this.findStageByName("COLLSCAN")}get isSharded(){return!!this.executionStats?.executionStages?.shards}get numShards(){return this.isSharded?this.executionStats?.executionStages?.shards.length:0}get isClusteredScan(){return Boolean(this.findStageByName("EXPRESS_CLUSTERED_IXSCAN")||this.findStageByName("CLUSTERED_IXSCAN"))}get indexType(){const e=this.usedIndexes;if(this.isClusteredScan)return"CLUSTERED";if(0===e.length)return"UNAVAILABLE";const t=e.reduce(((e,t)=>(t.shard&&(e[t.shard]??=[],e[t.shard].push(t.index)),e)),{}),n=Object.values(t);for(let e=0;e<n.length;e++)for(let t=e+1;t<n.length;t++)if(n[e].length!==n[t].length||n[e].some(((e,a)=>e!==n[t][a])))return"MULTIPLE";return this.isCollectionScan?"COLLSCAN":this.isCovered?"COVERED":"INDEX"}findStageByName(e,t){for(const n of this._getStageIterator(t))if(n.stage===e)return n;return null}findAllStagesByName(e,t){return[...this._getStageIterator(t)].filter((t=>t.stage===e))}*_getStageIterator(e){const t=e??this.executionStats?.executionStages??this.winningPlan;if(t){yield t;for(const e of y.getChildStages(t))yield*this._getStageIterator(e)}}serialize(){return JSON.parse(JSON.stringify({namespace:this.namespace,parsedQuery:this.parsedQuery,executionSuccess:this.executionSuccess,nReturned:this.nReturned,executionTimeMillis:this.executionTimeMillis,totalKeysExamined:this.totalKeysExamined,totalDocsExamined:this.totalDocsExamined,originalExplainData:this.originalExplainData,executionStats:this.executionStats,usedIndexes:this.usedIndexes,isCovered:this.isCovered,isMultiKey:this.isMultiKey,inMemorySort:this.inMemorySort,isCollectionScan:this.isCollectionScan,isSharded:this.isSharded,numShards:this.numShards,indexType:this.indexType}))}static*getChildStages(e){e&&(e.inputStage&&(yield e.inputStage),e.executionStages&&(yield e.executionStages),e.innerStage&&(yield e.innerStage),e.outerStage&&(yield e.outerStage),e.thenStage&&(yield e.thenStage),e.elseStage&&(yield e.elseStage),e.shards&&(yield*e.shards),e.inputStages&&(yield*e.inputStages))}static addParentStages(e){e[f]=null;for(const t of y.getChildStages(e))y.addParentStages(t),t[f]=e}static*getParentStages(e){let t=e;for(;t=t?.[f];)yield t}}},33364:(e,t,n)=>{n.d(t,{mZ:()=>tt}),n(95039),n(94811),n(18102),n(95210),n(59509),n(25691),n(23177),n(3142),n(51615),n(84217),n(25953),n(42319),n(28465),n(12887),n(36106),n(84542),n(57068),n(69517),n(21261),n(92879),n(31977),n(49743),n(9656),n(72673),n(35467),n(94476),n(64971),n(24330),n(83478),n(65166),n(1256),n(61038),n(73035),n(23855);var a=n(4580),o=n.n(a),r=n(183),i=n(93431),s=n(17855),l=n(29603);const c=(e,t,n)=>{const a=e.readPreference??r.ReadPreference.PRIMARY_PREFERRED;return e.command({...t},{readPreference:a,...n})};var d=n(31879),u=n(45863);const m=n.n(u)()("data-service");class p{}async function h(e,t){const n=e.db("admin"),[a,o,r,i,s,d,u]=await Promise.all([c(n,{connectionStatus:1,showPrivileges:!0},{enableUtf8Validation:!1}).catch(S(null)),c(n,{hostInfo:1},{enableUtf8Validation:!1}).catch(S({})),c(n,{buildInfo:1},{enableUtf8Validation:!1}),c(n,{getParameter:1,featureCompatibilityVersion:1},{enableUtf8Validation:!1}).catch((()=>null)),c(n,{atlasVersion:1},{enableUtf8Validation:!1}).catch((()=>({atlasVersion:"",gitVersion:""}))),(0,l.JV)((async(t,n,a)=>await e.db(t).collection(n).countDocuments(a))),f(t,e)]),m=!!s.atlasVersion||(0,l.mu)(t);return{auth:b(a),build:(h=r,{version:h.version??"",isEnterprise:(0,l.kA)(h)}),host:(p=o,{os:p.os?.name,os_family:p.os?.type?p.os.type.toLowerCase():void 0,kernel_version:p.os?.version,kernel_version_string:p.extra?.versionString,arch:p.system?.cpuArch,memory_bits:1024*(p.system?.memSizeMB??0)*1024,cpu_cores:p.system?.numCores,cpu_frequency:1e6*parseInt(p.extra?.cpuFrequencyMHz||"0",10)}),dataLake:y(r),genuineMongoDB:u,featureCompatibilityVersion:i?.featureCompatibilityVersion.version??null,isAtlas:m,isLocalAtlas:!m&&d};var p,h}function g(e){const t=e?.kmsProviders??{};return Object.entries(t).filter((([,e])=>Object.values(e??{}).filter(Boolean).length>0)).map((([e])=>e))}async function f(e,t){const n=t.db("admin"),a=await(0,l.Db)({connectionString:e,async adminCommand(e){try{const t=await n.command(e);return m("adminCommand(%O) = %O",e,t),t}catch(t){throw m("adminCommand(%O) failed %O",e,t),t}}});return{isGenuine:"mongodb"===a||"unknown"===a,serverName:a}}function y(e){const{isDataLake:t,dlVersion:n}=(0,l.Sy)(e);return{isDataLake:t,version:n}}function b(e){if(null===e)return{user:null,roles:[],privileges:[]};const{authenticatedUsers:t,authenticatedUserRoles:n,authenticatedUserPrivileges:a}=e.authInfo;return{user:t[0]??null,roles:n,privileges:a}}function v(e=null,t=null){const n=e??[],a=t&&t.length>0?n.filter((({actions:e})=>t.every((t=>e.includes(t))))):n,o={};for(const{resource:e,actions:t}of a)if(void 0!==e.db&&void 0!==e.collection){const{db:n,collection:a}=e;o[n]?Object.assign(o[n],{[a]:t}):o[n]={[a]:t}}return o}const C=13;function E(e){if(!e)return!1;if(e.code===C)return!0;const t=e.message||JSON.stringify(e);return new RegExp("not (authorized|allowed)","i").test(t)}function S(e){return t=>E(t)?(m("ignoring not authorized error and returning fallback value:",{err:t,fallback:e}),Promise.resolve(e)):Promise.reject(t)}function k(e){return{collection_count:e.collections??0,document_count:e.objects??0,index_count:e.indexes??0,storage_size:e.storageSize,data_size:e.dataSize??0,index_size:e.indexSize??0}}function w({db:e,name:t,info:n,options:a,type:o}){const r=(0,s.Ay)(`${e}.${t}`),{collection:i,database:l,system:c,oplog:d,command:u,special:m,specialish:p,normal:h}=r,{readOnly:g}=n??{},{collation:f,viewOn:y,pipeline:b,validator:v,validationAction:C,validationLevel:E,prepareConstraintValidationLevel:S,clusteredIndex:k,encryptedFields:w}=a??{},x=Boolean(v||C||E);return{_id:r.toString(),name:i,database:l,system:c,oplog:d,command:u,special:m,specialish:p,normal:h,type:o??"collection",readonly:g??!1,collation:f??null,view_on:y??null,pipeline:b??null,clustered:!!k,fle2:!!w,validation:x?{validator:v,validationAction:C,validationLevel:E,prepareConstraintValidationLevel:S}:null}}var x=n(6725),A=n(90605),D=n.n(A),I=n(15088).process;const M=m.extend("compass-connect"),T=Symbol("createClonedClient");async function L({connectionOptions:e,proxyOptions:t={},setupListeners:n,signal:a,logger:s,productName:l,productDocsLink:c,reauthenticationHandler:d}){M("connectMongoClient invoked",function(e){const t=e.sshTunnel?{...e.sshTunnel}:void 0,n={...e,sshTunnel:t};return n.connectionString=(0,i.J0)(e.connectionString),n.sshTunnel?.password&&(n.sshTunnel.password="<redacted>"),n.sshTunnel?.identityKeyPassphrase&&(n.sshTunnel.identityKeyPassphrase="<redacted>"),n}(e));const u=function({connectionOptions:e,proxyOptions:t={},signal:n,reauthenticationHandler:a}){const o={oidc:{...e.oidc},authMechanismProperties:{},applyProxyToOIDC:!1},r=e.oidc?.allowedFlows??["auth-code"];let s=!0;return o.oidc.allowedFlows=async function(){return s||await(a?.()),s=!1,r},e.oidc?.enableUntrustedEndpoints&&(o.authMechanismProperties.ALLOWED_HOSTS=function(e){const t=new i.Ay(e.connectionString,{looseValidation:!0}),n=t.hosts.map((e=>{const{host:n}=e.match(/^(?<host>.+?)(?<port>:[^:\]\[]+)?$/)?.groups;if(n.startsWith("[")&&n.endsWith("]"))return n.slice(1,-1);if(n.match(/^[0-9.]+$/))return n;if(!n.includes(".")||!t.isSRV)return n;const a=n.split(".");return a[0]="*",a.join(".")}));return[...new Set(n)]}(e)),e.oidc?.shareProxyWithConnection?o.applyProxyToOIDC=!0:o.applyProxyToOIDC=Object.keys(t).length>0&&t,o.oidc.signal=n,o}({connectionOptions:e,proxyOptions:t,signal:a,reauthenticationHandler:d}),m=e.connectionString,p={productName:l??"MongoDB Compass",productDocsLink:c??"https://www.mongodb.com/docs/compass/",monitorCommands:!0,autoEncryption:e.fleOptions?.autoEncryption,...u};p.autoEncryption&&I.env.COMPASS_CRYPT_LIBRARY_PATH&&(p.autoEncryption={...p.autoEncryption,extraOptions:{...p.autoEncryption?.extraOptions,cryptSharedLibPath:I.env.COMPASS_CRYPT_LIBRARY_PATH}});const h=function(e,t){if(e.useApplicationLevelProxy)return t;if(e.sshTunnel){const{host:t,port:n,username:a,password:o,identityKeyFile:r,identityKeyPassphrase:i}=e.sshTunnel;return{proxy:`ssh://${a?encodeURIComponent(a)+(o?":"+encodeURIComponent(o):"")+"@":""}${encodeURIComponent(t)}:${encodeURIComponent(+n||22)}`,sshOptions:{identityKeyFile:r,identityKeyPassphrase:i}}}return{}}(e,t);Object.keys(h).length>0&&(p.proxy=h);class g extends r.MongoClient{constructor(e,t){super(e,t),Object.defineProperty(this,"options",{...Object.getOwnPropertyDescriptor(this,"options"),enumerable:!1,configurable:!0}),n&&n(this)}}const f=new(o());async function y(e){const t=D().cloneDeep({...p,...e}),{client:n,state:a}=await(0,x.connectMongoClient)(m,t,f,g);return{client:Object.assign(n,{async[T](){const{client:e}=await y({...t,parentState:a});return e}}),state:a}}let b,v,C;s&&(0,x.hookLogger)(f,s,"compass",i.J0);try{return M("waiting for MongoClient to connect ..."),[b,v,C]=await(async()=>{const{client:e,state:t}=await y({autoEncryption:void 0}),n=t.getStateShareServer();let a;if(n.catch((()=>{})),p.autoEncryption)try{a=(await y({parentState:t})).client}catch(t){throw await e.close(),t}try{await n}catch(t){throw await e.close(),await(a?.close()),t}return[e,a,t]})(),p.parentHandle=await C.getStateShareServer(),[b,v??b,C,{url:m,options:p}]}catch(e){throw M("connection error",e),await Promise.all([v?.close(),b?.close()]).catch((()=>{})),e}}var O=n(13353);class N{_encryptedFields=[];get encryptedFields(){return this._encryptedFields.map((({path:e})=>e))}get equalityQueryableEncryptedFields(){return this._encryptedFields.filter((({equalityQueryable:e})=>e)).map((({path:e})=>e))}addField(e,t){const n=this._encryptedFields.find((t=>D().isEqual(t.path,e)));return n?n.equalityQueryable&&=t:this._encryptedFields.push({path:[...e],equalityQueryable:t}),this}withPathPrefix(e){const t=new N;return t._encryptedFields=this._encryptedFields.map((({path:t,equalityQueryable:n})=>({path:[e,...t],equalityQueryable:n}))),t}static isEncryptedField(e,t){return e.encryptedFields.some((e=>D().isEqual(t,e)))}static isEqualityQueryableEncryptedField(e,t){return e.equalityQueryableEncryptedFields.some((e=>D().isEqual(t,e)))}static merge(...e){const t=new N;for(const n of e)if(n)for(const e of n.encryptedFields)t.addField(e,this.isEqualityQueryableEncryptedField(n,e));return t}}function _(e){let t=new N;if(e?.encrypt){const n=e?.encrypt?.algorithm;return t.addField([],"AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"===n)}for(const[n,a]of Object.entries(e?.properties??{})){const e=_(a);t=N.merge(t,e.withPathPrefix(n))}return t}function F(e){const t=e?.fields??[],n=new N;for(const e of t){const t=(Array.isArray(e.queries)?e.queries:[e.queries??{}]).some((({queryType:e})=>["equality","range","rangePreview"].includes(e)));n.addField(e.path.split("."),t)}return n}function P(e,t){return N.merge(_(t.schemaMap?.[e]),F(t?.encryptedFieldsMap?.[e]))}function W(e){const t=e?.validator?.$jsonSchema,n=e?.encryptedFields;return N.merge(_(t),F(n))}function R(e){const t=(e?.[Symbol.for("@@mdb.decryptedKeys")]??[]).map((e=>[e]));for(const[n,a]of Object.entries(e)){if(!a||"object"!=typeof a)continue;const e=R(a);t.push(...e.map((e=>[n,...e])))}return t}class U{_nsToInfo=new Map;_dataService;_crudClient;_logger;constructor(e,t,n){this._dataService=e,this._crudClient=t,this._logger=n,this._processClientSchemaDefinitions();const{autoEncrypter:a}=this._crudClient;a&&(this._logger?.info("COMPASS-DATA-SERVICE",(0,d.oW)(1001000118),"CSFLECollectionTracker","Hooking AutoEncrypter metaDataClient property"),a._metaDataClient=this._createHookedMetadataClient(a._metaDataClient))}async isUpdateAllowed(e,t){const n=R(t);if(0===n.length)return!0;const{encryptedFields:a}=await this.knownSchemaForCollection(e);for(const e of n)if(!N.isEncryptedField(a,e))return!1;return!0}async knownSchemaForCollection(e){const t=await this._fetchCSFLECollectionInfo(e),n=N.merge(t.clientEnforcedEncryptedFields,t.serverEnforcedEncryptedFields);return{hasSchema:!!(t.hasServerSchema||n.encryptedFields.length>0),encryptedFields:n}}_processClientSchemaDefinitions(){const{autoEncryption:e}=this._crudClient.options;for(const t of[...Object.keys(e?.schemaMap??{}),...Object.keys(e?.encryptedFieldsMap??{})])this._logger?.info("COMPASS-DATA-SERVICE",(0,d.oW)(1001000119),"CSFLECollectionTracker","Processing client-side schema information",{ns:t}),this._getCSFLECollectionInfo(t).clientEnforcedEncryptedFields=P(t,e)}async _fetchCSFLECollectionInfo(e){const t=(0,s.Ay)(e),n=this._getCSFLECollectionInfo(e);var a;return(!n.serverEnforcedEncryptedFields||!n.lastUpdated||(a=n.lastUpdated,Date.now()-a.getTime()>=6e4))&&(this._logger?.info("COMPASS-DATA-SERVICE",(0,d.oW)(1001000120),"CSFLECollectionTracker","Refreshing listCollections cache",{ns:e}),await this._dataService.listCollections(t.database,{name:t.collection})),n}_getCSFLECollectionInfo(e){const t=this._nsToInfo.get(e);if(t)return t;const n={};return this._nsToInfo.set(e,n),n}*_getCSFLECollectionNames(){for(const e of this._nsToInfo.keys())yield(0,s.Ay)(e)}updateCollectionInfo(e,t){this._logger?.info("COMPASS-DATA-SERVICE",(0,d.oW)(1001000121),"CSFLECollectionTracker","Processing listCollections update",{ns:e});const n=this._getCSFLECollectionInfo(e);n.serverEnforcedEncryptedFields=W(t.options),n.hasServerSchema=!!t.options?.validator?.$jsonSchema,n.lastUpdated=new Date}_createHookedMetadataClient(e){return{db:t=>({listCollections:(n,a)=>{const o=this;return{[Symbol.asyncIterator]:async function*(){const r=await e.db(t).listCollections(n,a).toArray(),i=o._checkListCollectionsForLibmongocryptResult(t,n,r??[]);if(i)throw o._logger?.error("COMPASS-DATA-SERVICE",(0,d.oW)(1001000122),"CSFLECollectionTracker","Rejecting listCollections in hooked metaDataClient",{error:i.message}),i;yield*r}}}})}}_checkListCollectionsForLibmongocryptResult(e,t,n){if(!("string"==typeof t?.name||t?.name&&"object"==typeof t.name&&Array.isArray(t.name.$in)&&t.name.$in.every((e=>"string"==typeof e))))return new Error(`[Compass] Unexpected listCollections request on '${e}' with filter: ${O.EJSON.stringify(t)}`);const a="string"==typeof t.name?[t.name]:t.name.$in;for(const t of this._getCSFLECollectionNames())if(t.database===e&&a.includes(t.collection)){const e=this._getCSFLECollectionInfo(t.ns);if(e.serverEnforcedEncryptedFields?.encryptedFields?.length&&!n.some((e=>e.name===t.collection)))return new Error(`[Compass] Missing encrypted field information for collection '${t.ns}'`)}for(const t of n){const n=`${e}.${t.name}`,a=this._getCSFLECollectionInfo(n),o=W(t.options);for(const e of a.serverEnforcedEncryptedFields?.encryptedFields??[])if(!o.encryptedFields.some((t=>D().isEqual(t,e))))return new Error(`[Compass] Missing encrypted field '${e.join(".")}' of collection '${n}' in listCollections result`)}}}var $=n(12738),V=n(13390);function H(e){return e.extra.textIndexVersion&&2===e.fields.length&&1===Object.keys(e.extra.weights).length||1===e.fields.length?"single":"compound"}function K(e,t){const n=[];return("_id_"===e.name||e.extra.unique)&&n.push("unique"),e.extra.sparse&&n.push("sparse"),e.extra.partialFilterExpression&&n.push("partial"),Number(e.extra.expireAfterSeconds)>-1&&n.push("ttl"),e.extra.collation&&n.push("collation"),t&&(0,V.isDeepStrictEqual)(O.EJSON.serialize(t),O.EJSON.serialize(e.key))&&n.push("shardKey"),n}function j(e){const t=Object.keys(e.key),n=Object.values(e.key);return e.extra["2dsphereIndexVersion"]||n.includes("2d")||n.includes("geoHaystack")?"geospatial":n.includes("hashed")?"hashed":e.extra.textIndexVersion?"text":n.includes("columnstore")?"columnstore":t.some((e=>"$**"===e||String(e).includes(".$**")))?"wildcard":e.extra.clustered?"clustered":"regular"}const B={};function z(e,t,{name:n,key:a,v:o,...r},i,s,l,c){i??={name:n,usageHost:"",usageSince:new Date(0)},s??=0,l??=0;const d={ns:e,name:n,key:a,version:o??1,fields:Object.entries(a).map((([e,t])=>({field:e,value:t}))),extra:r};return{...d,...i,type:j(d),cardinality:H(d),properties:K(d,t),size:s,relativeSize:s/l*100,buildProgress:c??{...B}}}let Y,q,G,Z,J,Q,X,ee,te,ne,ae,oe,re,ie,se,le,ce,de,ue,me,pe,he,ge,fe,ye,be,ve,Ce,Ee,Se,ke,we,xe,Ae,De,Ie,Me,Te,Le,Oe,Ne,_e,Fe,Pe,We,Re,Ue,$e,Ve;function He(e,t,n,a){return(He=function(){function e(e,t){return function(n){!function(e){if(e.v)throw Error("attempted to call addInitializer after decoration was finished")}(t),a(n,"An initializer"),e.push(n)}}function t(e,t){if(!e(t))throw new TypeError("Attempted to access private element on non-instance")}function n(n,a,o,r,i,s,l,c,d){var u;switch(i){case 1:u="accessor";break;case 2:u="method";break;case 3:u="getter";break;case 4:u="setter";break;default:u="field"}var m,p,h={kind:u,name:l?"#"+a:Ke(a),static:s,private:l},g={v:!1};if(0!==i&&(h.addInitializer=e(r,g)),l||0!==i&&2!==i)if(2===i)m=function(e){return t(d,e),o.value};else{var f=0===i||1===i;(f||3===i)&&(m=l?function(e){return t(d,e),o.get.call(e)}:function(e){return o.get.call(e)}),(f||4===i)&&(p=l?function(e,n){t(d,e),o.set.call(e,n)}:function(e,t){o.set.call(e,t)})}else m=function(e){return e[a]},0===i&&(p=function(e,t){e[a]=t});var y=l?d.bind():function(e){return a in e};h.access=m&&p?{get:m,set:p,has:y}:m?{get:m,has:y}:{set:p,has:y};try{return n(c,h)}finally{g.v=!0}}function a(e,t){if("function"!=typeof e)throw new TypeError(t+" must be a function")}function o(e,t){var n=typeof t;if(1===e){if("object"!==n||null===t)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==t.get&&a(t.get,"accessor.get"),void 0!==t.set&&a(t.set,"accessor.set"),void 0!==t.init&&a(t.init,"accessor.init")}else if("function"!==n)throw new TypeError((0===e?"field":10===e?"class":"method")+" decorators must return a function or void 0")}function r(e){return function(t){e(this,t)}}function i(e,t,a,i,s,l,c,d,u){var m,p,h,g,f,y,b,v,C=a[0];if(c?(0===s||1===s?(m={get:(f=a[3],function(){return f(this)}),set:r(a[4])},h="get"):3===s?(m={get:a[3]},h="get"):4===s?(m={set:a[3]},h="set"):m={value:a[3]},0!==s&&(1===s&&je(m.set,"#"+i,"set"),je(m[h||"value"],"#"+i,h))):0!==s&&(m=Object.getOwnPropertyDescriptor(t,i)),1===s?g={get:m.get,set:m.set}:2===s?g=m.value:3===s?g=m.get:4===s&&(g=m.set),"function"==typeof C)void 0!==(y=n(C,i,m,d,s,l,c,g,u))&&(o(s,y),0===s?p=y:1===s?(p=y.init,b=y.get||g.get,v=y.set||g.set,g={get:b,set:v}):g=y);else for(var E=C.length-1;E>=0;E--){var S;void 0!==(y=n(C[E],i,m,d,s,l,c,g,u))&&(o(s,y),0===s?S=y:1===s?(S=y.init,b=y.get||g.get,v=y.set||g.set,g={get:b,set:v}):g=y,void 0!==S&&(void 0===p?p=S:"function"==typeof p?p=[p,S]:p.push(S)))}if(0===s||1===s){if(void 0===p)p=function(e,t){return t};else if("function"!=typeof p){var k=p;p=function(e,t){for(var n=t,a=0;a<k.length;a++)n=k[a].call(e,n);return n}}else{var w=p;p=function(e,t){return w.call(e,t)}}e.push(p)}0!==s&&(1===s?(m.get=g.get,m.set=g.set):2===s?m.value=g:3===s?m.get=g:4===s&&(m.set=g),c?1===s?(e.push((function(e,t){return g.get.call(e,t)})),e.push((function(e,t){return g.set.call(e,t)}))):2===s?e.push(g):e.push((function(e,t){return g.call(e,t)})):Object.defineProperty(t,i,m))}function s(e,t,n){for(var a,o,r,s=[],c=new Map,d=new Map,u=0;u<t.length;u++){var m=t[u];if(Array.isArray(m)){var p,h,g=m[1],f=m[2],y=m.length>3,b=g>=5,v=n;if(b?(p=e,0!=(g-=5)&&(h=o=o||[]),y&&!r&&(r=function(t){return Be(t)===e}),v=r):(p=e.prototype,0!==g&&(h=a=a||[])),0!==g&&!y){var C=b?d:c,E=C.get(f)||0;if(!0===E||3===E&&4!==g||4===E&&3!==g)throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+f);!E&&g>2?C.set(f,g):C.set(f,!0)}i(s,p,m,f,g,b,y,h,v)}}return l(s,a),l(s,o),s}function l(e,t){t&&e.push((function(e){for(var n=0;n<t.length;n++)t[n].call(e);return e}))}return function(t,n,a,r){return{e:s(t,n,r),get c(){return function(t,n){if(n.length>0){for(var a=[],r=t,i=t.name,s=n.length-1;s>=0;s--){var l={v:!1};try{var c=n[s](r,{kind:"class",name:i,addInitializer:e(a,l)})}finally{l.v=!0}void 0!==c&&(o(10,c),r=c)}return[r,function(){for(var e=0;e<a.length;e++)a[e].call(r)}]}}(t,a)}}}}())(e,t,n,a)}function Ke(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}function je(e,t,n){"symbol"==typeof t&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:n?n+" "+t:t})}catch(e){}return e}function Be(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(null!==e?typeof e:"null"));return e}function ze(e,t){return Array.from(new Map(e.map((e=>[e[t],e]))).values())}function Ye(e,t){if(e&&t?.tags){const e=function(e){return new r.ReadPreference(e.mode,void 0,e)}(t);return{readPreference:e}}return{}}let qe=0;const Ge=Symbol("kSessionClientType"),Ze=([e])=>{if("string"==typeof e)return{ns:e}};function Je(e,t=Ze){return function(n,a){const o=String(a.name);return function(...a){const r=n=>(this._logger.info(e,`Running ${o}`,t(a,n)),n),i=e=>{const n=(e=>("string"==typeof e?e={message:e}:e.message||(e.message=e.err||e.errmsg),e))(e);throw this._logger.error((0,d.oW)(1001000058),"Failed to perform data service operation",{op:o,message:n,...t(a)??{}}),n};try{const e=n.call(this,...a);return"then"in(s=e)&&"function"==typeof s.then?e.then(r,i):r(e)}catch(e){return i(e)}var s}}}class Qe extends p{static{[Y]=He(this,[[q,2,"collectionStats"],[G,2,"collectionInfo"],[Z,2,"killOp"],[J,2,"_connectionStatus"],[Q,2,"listCollections"],[X,2,"listDatabases"],[ee,2,"estimatedCount"],[te,2,"count"],[ne,2,"createCollection"],[ae,2,"createIndex"],[oe,2,"deleteOne"],[re,2,"deleteMany"],[ie,2,"dropCollection"],[se,2,"renameCollection"],[le,2,"dropDatabase"],[ce,2,"dropIndex"],[de,2,"isListSearchIndexesSupported"],[ue,2,"getSearchIndexes"],[me,2,"createSearchIndex"],[pe,2,"updateSearchIndex"],[he,2,"dropSearchIndex"],[ge,2,"aggregateCursor"],[fe,2,"aggregate"],[ye,2,"find"],[be,2,"findCursor"],[ve,2,"findOneAndReplace"],[Ce,2,"findOneAndUpdate"],[Ee,2,"updateOne"],[Se,2,"replaceOne"],[ke,2,"explainFind"],[we,2,"explainAggregate"],[xe,2,"fetchShardKey"],[Ae,2,"indexes"],[De,2,"instance"],[Ie,2,"insertOne"],[Me,2,"insertMany"],[Te,2,"updateCollection"],[Le,2,"currentOp"],[Oe,2,"serverStatus"],[Ne,2,"top"],[_e,2,"createView"],[Fe,2,"databaseStats"],[Pe,2,"previewUpdate"],[We,2,"createDataKey"],[Re,2,"listStreamProcessors"],[Ue,2,"startStreamProcessor"],[$e,2,"stopStreamProcessor"],[Ve,2,"dropStreamProcessor"]],[]).e}[(q=Je((0,d.oW)(1001000178),(([e,t],n)=>({ns:`${e}.${t}`,...n&&{result:n}}))),G=Je((0,d.oW)(1001000179)),Z=Je((0,d.oW)(1001000031)),J=Je((0,d.oW)(1001000100)),Q=Je((0,d.oW)(1001000032),(([e,,t],n)=>({db:e,nameOnly:t?.nameOnly??!1,...n&&{collectionsCount:n.length}}))),X=Je((0,d.oW)(1001000033),(([e],t)=>({nameOnly:e?.nameOnly??!1,...t&&{databasesCount:t.length}}))),ee=Je((0,d.oW)(1001000034),(([e,t])=>({ns:e,maxTimeMS:t?.maxTimeMS}))),te=Je((0,d.oW)(1001000035)),ne=Je((0,d.oW)(1001000036),(([e,t],n)=>({ns:e,options:t,...n&&{result:n}}))),ae=Je((0,d.oW)(1001000037),(([e,t,n],a)=>({ns:e,spec:t,options:n,...a&&{result:a}}))),oe=Je((0,d.oW)(1001000038),(([e],t)=>({ns:e,...t&&{result:t}}))),re=Je((0,d.oW)(1001000039),(([e],t)=>({ns:e,...t&&{result:t}}))),ie=Je((0,d.oW)(1001000059),(([e],t)=>({ns:e,...t&&{result:t}}))),se=Je((0,d.oW)(1001000276)),le=Je((0,d.oW)(1001000040),(([e],t)=>({db:e,...t&&{result:t}}))),ce=Je((0,d.oW)(1001000182),(([e,t],n)=>({ns:e,name:t,...n&&{result:n}}))),de=Je((0,d.oW)(1001000237)),ue=Je((0,d.oW)(1001000238)),me=Je((0,d.oW)(1001000239)),pe=Je((0,d.oW)(1001000240)),he=Je((0,d.oW)(1001000241)),ge=Je((0,d.oW)(1001000041),(([e,t,n])=>({ns:e,stages:t.map((e=>Object.keys(e)[0])),maxTimeMS:n?.maxTimeMS}))),fe=Je((0,d.oW)(1001000181),(([e,t,n])=>({ns:e,stages:t.map((e=>Object.keys(e)[0])),maxTimeMS:n?.maxTimeMS}))),ye=Je((0,d.oW)(1001000060),(([e,,t])=>({ns:e,maxTimeMS:t?.maxTimeMS}))),be=Je((0,d.oW)(1001000043)),ve=Je((0,d.oW)(1001000044)),Ce=Je((0,d.oW)(1001000045)),Ee=Je((0,d.oW)(1001000183)),Se=Je((0,d.oW)(1001000191)),ke=Je((0,d.oW)(1001000046),(([e,,,t])=>({ns:e,verbosity:t?.explainVerbosity||r.ExplainVerbosity.executionStats}))),we=Je((0,d.oW)(1001000177),(([e,,,t])=>({ns:e,verbosity:t?.explainVerbosity||r.ExplainVerbosity.executionStats}))),xe=Je((0,d.oW)(1001000381)),Ae=Je((0,d.oW)(1001000047)),De=Je((0,d.oW)(1001000024),((e,t)=>{if(t)return{serverVersion:t.build.version,genuineMongoDB:t.genuineMongoDB,dataLake:t.dataLake,featureCompatibilityVersion:t.featureCompatibilityVersion}})),Ie=Je((0,d.oW)(1001000048),(([e],t)=>({ns:e,...t&&{acknowledged:t.acknowledged}}))),Me=Je((0,d.oW)(1001000049),(([e],t)=>({ns:e,...t&&{acknowledged:t.acknowledged,insertedCount:t.insertedCount}}))),Te=Je((0,d.oW)(1001000050),(([e],t)=>({ns:e,...t&&{result:t}}))),Le=Je((0,d.oW)(1001000053)),Oe=Je((0,d.oW)(1001000061),((e,t)=>t?{result:t}:void 0)),Ne=Je((0,d.oW)(1001000062),((e,t)=>t?{result:t}:void 0)),_e=Je((0,d.oW)(1001000055),(([e,t,n,a],o)=>({name:e,sourceNs:t,stages:n.map((e=>Object.keys(e)[0])),options:a,...o&&{result:o}}))),Fe=Je((0,d.oW)(1001000057)),Pe=Je((0,d.oW)(1001000266)),We=Je((0,d.oW)(1001000123),(([e])=>({provider:e}))),Re=Je((0,d.oW)(1001000284)),Ue=Je((0,d.oW)(1001000285)),$e=Je((0,d.oW)(1001000286)),Ve=Je((0,d.oW)(1001000287)),"_connectionOptions")]=void Y(this);_proxyOptions;_isConnecting=!1;_mongoClientConnectionOptions;_metadataClient;_crudClient;_useCRUDClient=!0;_csfleCollectionTracker;_state;_reauthenticationHandlers=new Set;_lastSeenTopology=null;_isWritable=!1;_id;_emitter=new a.EventEmitter;_logger;_unboundLogger;_getOptionsWithFallbackReadPreference(e,t){const n=(a=this._connectionOptions.connectionString,new i.Ay(a).searchParams.get("readPreference")?void 0:t?.fallbackReadPreference);var a;return n?{...e,readPreference:n}:e}constructor(e,t,n){super(),this._id=qe++,this._connectionOptions=e,this._proxyOptions=n??{};const a="COMPASS-DATA-SERVICE",o=`Connection ${this._id}`;this._logger={debug:(e,...n)=>t?.debug(a,e,o,...n),info:(e,...n)=>t?.info(a,e,o,...n),warn:(e,...n)=>t?.warn(a,e,o,...n),error:(e,...n)=>t?.error(a,e,o,...n),fatal:(e,...n)=>t?.fatal(a,e,o,...n)},t&&(this._unboundLogger=Object.assign(t,{mongoLogId:d.oW}))}get id(){return this._id}on(...e){return this._emitter.on(...e),this}off(...e){return this._emitter.off(...e),this}removeListener(...e){return this._emitter.off(...e),this}once(...e){return this._emitter.once(...e),this}getMongoClientConnectionOptions(){return(0,A.omit)(this._mongoClientConnectionOptions,"options.oidc.notifyDeviceFlow","options.oidc.signal","options.oidc.allowedFlows","options.oidc.customFetch","options.oidc.customHttpOptions")}getConnectionOptions(){return this._connectionOptions}getConnectionString(){return new i.Ay(this._connectionOptions.connectionString)}setCSFLEEnabled(e){this._logger.info((0,d.oW)(1001000117),"Setting CSFLE mode",{enabled:e}),this._useCRUDClient=e}getCSFLEMode(){return this._crudClient&&(e=this._crudClient,g(e.options?.autoEncryption).length>0)?this._useCRUDClient?"enabled":"disabled":"unavailable";var e}async collectionStats(e,t,n){const a=`${e}.${t}`;try{const o=this._collection(a,"CRUD"),r={_id:null,capped:{$first:"$storageStats.capped"},count:{$sum:"$storageStats.count"},size:{$sum:{$toDouble:"$storageStats.size"}},storageSize:{$sum:{$toDouble:"$storageStats.storageSize"}},totalIndexSize:{$sum:{$toDouble:"$storageStats.totalIndexSize"}},freeStorageSize:{$sum:{$toDouble:"$storageStats.freeStorageSize"}},unscaledCollSize:{$sum:{$multiply:[{$toDouble:"$storageStats.avgObjSize"},{$toDouble:"$storageStats.count"}]}},nindexes:{$max:"$storageStats.nindexes"},storageSizeType:{$first:{$type:"$storageStats.storageSize"}},freeStorageSizeType:{$first:{$type:"$storageStats.freeStorageSize"}}};"timeseries"===n&&(r.timeseriesBucketCount={$first:"$storageStats.timeseries.bucketCount"},r.timeseriesAvgBucketSize={$first:"$storageStats.timeseries.avgBucketSize"});const i={__proto__:null,avgObjSize:{$cond:{if:{$ne:["$count",0]},then:{$divide:["$unscaledCollSize",{$toDouble:"$count"}]},else:0}}};"timeseries"===n&&(i.bucket_count="$timeseriesBucketCount",i.avg_bucket_size="$timeseriesAvgBucketSize");const s=await o.aggregate([{$collStats:{storageStats:{}}},{$group:r},{$addFields:i}],{enableUtf8Validation:!1}).toArray();if(!s||void 0===s[0])throw new Error(`Error running $collStats aggregation stage on ${a}`);return s[0].ns=a,this._buildCollectionStats(e,t,s[0])}catch(n){const a=n.message;if(a.includes("not valid for Data Lake")||a.includes("is a view, not a collection")||a.includes(`Database [${e}] not found`)||a.includes(`Collection [${e}.${t}] not found`))return this._buildCollectionStats(e,t,{});throw n}}async collectionInfo(e,t){const[n]=await this._listCollections(e,{name:t});return w({db:e,...n})??null}async killOp(e,t){const n=this._database("admin","META");return c(n,{killOp:1,id:e,comment:t},{enableUtf8Validation:!1})}isWritable(){return this._isWritable}isMongos(){return"Sharded"===this.getCurrentTopologyType()}getCurrentTopologyType(){return this.getLastSeenTopology()?.type??"Unknown"}async _connectionStatus(){const e=this._database("admin","META");return await c(e,{connectionStatus:1,showPrivileges:!0},{enableUtf8Validation:!1})}async _getPrivilegesOrFallback(e=null){if(e)return e;const{authInfo:{authenticatedUserPrivileges:t}}=await this._connectionStatus();return t}async _getRolesOrFallback(e=null){if(e)return e;const{authInfo:{authenticatedUserRoles:t}}=await this._connectionStatus();return t}async _listCollections(e,t={},{nameOnly:n}={}){try{const a=this._database(e,"CRUD").listCollections(t,{nameOnly:n,...Ye(this.isMongos(),this._crudClient?.readPreference)}),o=[];for await(const t of a)n||this._csfleCollectionTracker?.updateCollectionInfo(`${e}.${t.name}`,t),o.push(t);return o}catch(e){return this._logger.warn((0,d.oW)(1001000099),"Failed to run listCollections",{message:e.message}),[]}}async listCollections(e,t={},{nameOnly:n,fetchNamespacesFromPrivileges:a=!0,privileges:o=null}={}){const[r,i]=await Promise.all([(async()=>(await this._listCollections(e,t,{nameOnly:n})).map((e=>({inferred_from_privileges:!1,...e}))))(),(s=t,0===Object.keys(s).length?(async()=>{if(!a)return[];const t=v(await this._getPrivilegesOrFallback(o),["find"]);return Object.keys(t[e]||{}).filter(Boolean).map((e=>({name:e,inferred_from_privileges:!0})))})():[])]);var s;return ze([...i,...r],"name").map((({inferred_from_privileges:t,...n})=>({inferred_from_privileges:t,...w({db:e,...n})})))}async listDatabases({nameOnly:e,fetchNamespacesFromPrivileges:t=!0,privileges:n=null,roles:a=null}={}){const o=this._database("admin","CRUD"),[r,i,s]=await Promise.all([(async()=>{try{const{databases:t}=await c(o,{listDatabases:1,nameOnly:e},{enableUtf8Validation:!1,...Ye(this.isMongos(),this._crudClient?.readPreference)});return t.map((e=>({...e,inferred_from_privileges:!1})))}catch(e){return this._logger.warn((0,d.oW)(1001000098),"Failed to run listDatabases",{message:e.message}),[]}})(),(async()=>{if(!t)return[];const e=v(await this._getPrivilegesOrFallback(n),["find"]);return Object.keys(e).filter(Boolean).map((e=>({name:e,inferred_from_privileges:!0})))})(),(async()=>{const e=function(e=null,t=null){const n=e??[],a=new Set,o=t&&t.length>0?n.filter((({role:e})=>t.includes(e))):n;for(const{db:e}of o)a.add(e);return[...a]}(await this._getRolesOrFallback(a),["read","readWrite","dbAdmin","dbOwner"]);return e.map((e=>({name:e,inferred_from_privileges:!0})))})()]);return ze([...s,...i,...r],"name").map((({name:e,inferred_from_privileges:t,...n})=>({_id:e,name:e,inferred_from_privileges:t,...k(n)})))}addReauthenticationHandler(e){this._reauthenticationHandlers.add(e)}async _requestReauthenticationFromUser(){this._logger.info((0,d.oW)(1001000194),"Requesting re-authentication from user");let e=!0;try{for(const e of this._reauthenticationHandlers)await e();e=!1}finally{this._logger.info((0,d.oW)(1001000193),"Completed re-authentication request",{wantsReauth:!e})}}async connect({signal:e,productName:t,productDocsLink:n}={}){if(this._metadataClient)m("already connected");else if(this._isConnecting)m("connect method called more than once");else{m("connecting..."),this._isConnecting=!0,this._logger.info((0,d.oW)(1001000014),"Connecting Started",{connectionId:this._id,url:(0,i.J0)(this._connectionOptions.connectionString),csfle:this._csfleLogInformation(this._connectionOptions.fleOptions)});try{const[a,o,r,i]=await L({connectionOptions:this._connectionOptions,proxyOptions:this._proxyOptions,setupListeners:this._setupListeners.bind(this),signal:e,logger:this._unboundLogger,productName:t,productDocsLink:n,reauthenticationHandler:this._requestReauthenticationFromUser.bind(this)}),s={connectionId:this._id,isWritable:this.isWritable(),isMongos:this.isMongos()};this._logger.info((0,d.oW)(1001000015),"Connecting Succeeded",s),m("connected!",s),r.oidcPlugin.logger.on("mongodb-oidc-plugin:state-updated",(()=>{this._emitter.emit("connectionInfoSecretsChanged")})),r.oidcPlugin.logger.on("mongodb-oidc-plugin:auth-failed",(({error:e})=>{this._emitter.emit("oidcAuthFailed",e)})),this._metadataClient=a,this._crudClient=o,this._state=r,this._mongoClientConnectionOptions=i,this._csfleCollectionTracker=new U(this,this._crudClient)}catch(e){throw this._logger.info((0,d.oW)(1001000359),"Connecting Failed",{connectionId:this._id,error:e&&"object"==typeof e&&"message"in e?e?.message:"unknown error"}),e}finally{this._isConnecting=!1}}}estimatedCount(e,t={},n){const a=t.maxTimeMS??500;return this._cancellableOperation((async n=>this._collection(e,"CRUD").estimatedDocumentCount({...t,maxTimeMS:a,session:n})),(e=>e.endSession()),n?.abortSignal)}count(e,t,n={},a){return this._cancellableOperation((async(o,r)=>this._collection(e,"CRUD").countDocuments(t,{...this._getOptionsWithFallbackReadPreference(n,a),session:o,signal:r})),(e=>e.endSession()),a?.abortSignal)}async createCollection(e,t){const n=this._collectionName(e),a=this._database(e,"CRUD");return await a.createCollection(n,t)}async createIndex(e,t,n){const a=this._collection(e,"CRUD");return await a.createIndex(t,n)}async deleteOne(e,t,n){const a=this._collection(e,"CRUD");return await a.deleteOne(t,n)}async deleteMany(e,t,n){const a=this._collection(e,"CRUD");return await a.deleteMany(t,n)}async updateMany(e,t,n,a){const o=this._collection(e,"CRUD");return await o.updateMany(t,n,a)}async disconnect(){this._logger.info((0,d.oW)(1001000016),"Disconnecting");try{await Promise.all([this._metadataClient?.close(!0).catch((e=>m("failed to close MongoClient",e))),this._crudClient!==this._metadataClient&&this._crudClient?.close(!0).catch((e=>m("failed to close MongoClient",e))),this._state?.destroy().catch((e=>m("failed to destroy DevtoolsConnectionState",e)))])}finally{this._cleanup(),this._logger.info((0,d.oW)(1001000017),"Fully closed")}}async dropCollection(e){const t=this._database(e,"CRUD"),n=this._collectionName(e),a=t.collection(n);let o=null;try{[o]=await t.listCollections({name:n},{nameOnly:!1}).toArray()}catch{}const r={},i=o?.options?.encryptedFields;return i&&(r.encryptedFields=i),await a.drop(r)}renameCollection(e,t){return this._database(e,"META").renameCollection(this._collectionName(e),t)}async dropDatabase(e){const t=this._database(e,"CRUD");return await t.dropDatabase()}async dropIndex(e,t){const n=this._collection(e,"CRUD");return await n.dropIndex(t)}async isListSearchIndexesSupported(e){try{await this.getSearchIndexes(e)}catch{return!1}return!0}async getSearchIndexes(e){const t=this._collection(e,"CRUD").listSearchIndexes(),n=await t.toArray();return t.close(),n}async createSearchIndex(e,t){return this._collection(e,"CRUD").createSearchIndex(t)}async updateSearchIndex(e,t,n){return this._collection(e,"CRUD").updateSearchIndex(t,n)}async dropSearchIndex(e,t){return this._collection(e,"CRUD").dropSearchIndex(t)}aggregateCursor(e,t,n={}){return this._collection(e,"CRUD").aggregate(t,n)}aggregate(e,t,n={},a){let o;return this._cancellableOperation((async(a,r)=>{o=this._collection(e,"CRUD").aggregate(t,{...n,session:a,signal:r});const i=await o.toArray();return o.close(),i}),(()=>o?.close()),a?.abortSignal)}find(e,t,n={},a){let o;return this._cancellableOperation((async(r,i)=>{o=this._collection(e,"CRUD").find(t,this._getOptionsWithFallbackReadPreference({...n,session:r,signal:i},a));const s=await o.toArray();return o.close(),s}),(()=>o?.close()),a?.abortSignal)}findCursor(e,t,n={}){return this._collection(e,"CRUD").find(t,n)}async findOneAndReplace(e,t,n,a){const o=this._collection(e,"CRUD");return await o.findOneAndReplace(t,n,a)}async findOneAndUpdate(e,t,n,a){const o=this._collection(e,"CRUD");return await o.findOneAndUpdate(t,n,a)}async updateOne(e,t,n,a){const o=this._collection(e,"CRUD");return await o.updateOne(t,n,a)}async replaceOne(e,t,n,a){const o=this._collection(e,"CRUD");return await o.replaceOne(t,n,a)}explainFind(e,t,n={},a){const o=a?.explainVerbosity||r.ExplainVerbosity.executionStats;let i;return this._cancellableOperation((async(r,s)=>{i=this._collection(e,"CRUD").find(t,{...n,session:r,signal:s});const l=await i.explain({verbosity:o,maxTimeMS:a?.maxTimeMS});return i.close(),l}),(()=>i?.close()),a?.abortSignal)}explainAggregate(e,t,n,a){const o=a?.explainVerbosity||r.ExplainVerbosity.executionStats;let i;return this._cancellableOperation((async(r,s)=>{i=this._collection(e,"CRUD").aggregate(t,{...n,session:r,signal:s});const l=await i.explain({verbosity:o,maxTimeMS:a?.maxTimeMS});return i.close(),l}),(()=>i?.close()),a?.abortSignal)}async _indexStats(e){const t=await this.aggregate(e,[{$indexStats:{}},{$project:{name:1,usageHost:"$host",usageCount:"$accesses.ops",usageSince:"$accesses.since",building:1}}]);return Object.fromEntries(t.map((e=>[e.name,e])))}async _indexSizes(e,t){try{const n=await this.aggregate(e,[{$collStats:{storageStats:{}}},{$project:{indexSizes:{$objectToArray:"$storageStats.indexSizes"}}},{$unwind:"$indexSizes"},{$group:{_id:"$indexSizes.k",size:{$sum:{$toDouble:"$indexSizes.v"}}}}],{},t);return Object.fromEntries(n.map((({_id:e,size:t})=>[e,t])))}catch(e){if(E(e)||function(e){return!!e&&(e.message||JSON.stringify(e)).match(/Unrecognized pipeline stage name/)}(e))return{};throw e}}async _indexProgress(e){const t={$currentOp:{allUsers:!0,localOps:!1}},n=[t,{$match:{ns:e,active:!0,"command.createIndexes":{$exists:!0}}},{$sort:{"command.indexes.name":1,secs_running:-1}},{$unwind:"$command.indexes"},{$group:{_id:"$command.indexes.name",active:{$max:"$active"},secsRunning:{$max:"$secs_running"},msg:{$first:"$msg"},progress:{$first:{$cond:{if:{$and:[{$eq:[{$type:"$progress"},"object"]},{$gt:["$progress.total",0]}]},then:{$divide:["$progress.done","$progress.total"]},else:"$$REMOVE"}}}}}],a=this._database("admin","META");try{const e=await a.aggregate(n).toArray(),t=Object.create(null);for(const{_id:n,active:a,secsRunning:o,msg:r,progress:i}of e)t[n]={active:a,progress:i,secsRunning:o,msg:r};return t}catch{t.$currentOp.allUsers=!1;const e=await a.aggregate(n).toArray(),o=Object.create(null);for(const{_id:t,active:n,secsRunning:a,msg:r,progress:i}of e)o[t]={active:n,progress:i,secsRunning:a,msg:r};return o}}async fetchShardKey(e,t={},n){const a=await this.find("config.collections",{_id:e,unsplittable:{$ne:!0}},{...t,projection:{key:1,_id:0}},{abortSignal:n?.abortSignal});return a.length?a[0].key:null}async _fetchShardKeyWithSilentFail(...e){try{return await this.fetchShardKey(...e)}catch(e){if(this.isCancelError(e))throw e;return null}}async indexes(e,t,n){if(!1===t?.full)return Object.entries(await this._collection(e,"CRUD").indexes({...t,full:!1})).map((t=>{const[n,a]=t;return z(e,null,{name:n,key:Object.fromEntries(a)})}));const[a,o,[r,i],s]=await Promise.all([this._collection(e,"CRUD").indexes({...t,full:!0}),this._indexSizes(e,n),Promise.allSettled([this._indexStats(e),this._indexProgress(e)]),this._fetchShardKeyWithSilentFail(e)]),l=Math.max(...Object.values(o)),c="rejected"===r.status?r.reason.message:void 0,d="fulfilled"===r.status?r.value:{},u="rejected"===i.status?i.reason?.message:void 0,m="fulfilled"===i.status?i.value:{};return a.filter((e=>!!e.name)).map((t=>{const n=t.name,a={currentOp:m[n],...c&&{statsError:c},...u&&{progressError:u}};return z(e,s??null,t,d[n],o[n],l,a)}))}async instance(){return{...await h(this._initializedClient("META"),this._connectionOptions.connectionString),csfleMode:this.getCSFLEMode()}}async insertOne(e,t,n){const a=this._collection(e,"CRUD");return await a.insertOne(t,n)}async insertMany(e,t,n){const a=this._collection(e,"CRUD");return await a.insertMany(t,n)}async updateCollection(e,t={}){const n=this._collectionName(e),a=this._database(e,"CRUD"),o=await c(a,{collMod:n,...t});return await this._resetCRUDClient(),o}bulkWrite(e,t,n){return this._collection(e,"CRUD").bulkWrite(t,n)}async currentOp(){const e=this._database("admin","META");return{inprog:await e.aggregate([{$currentOp:{allUsers:!0,idleConnections:!1,truncateOps:!1}}]).toArray()}}getLastSeenTopology(){return this._lastSeenTopology}async serverStatus(){const e=this._database("admin","META");return await c(e,{serverStatus:1},{enableUtf8Validation:!1})}async top(){const e=this._database("admin","META");return await c(e,{top:1},{enableUtf8Validation:!1})}async createView(e,t,n,a={}){const o={...a,viewOn:this._collectionName(t),pipeline:n},r=this._database(t,"CRUD");return await r.createCollection(e,o)}_buildSamplingPipeline({query:e,size:t,fields:n}){const a=[];return e&&Object.keys(e).length>0&&a.push({$match:e}),a.push({$sample:{size:0===t?0:t||1e3}}),n&&Object.keys(n).length>0&&a.push({$project:n}),a}sampleCursor(e,t={},n={},a){const o=this._buildSamplingPipeline(t);return this.aggregateCursor(e,o,{allowDiskUse:!0,...this._getOptionsWithFallbackReadPreference(n,a)})}sample(e,t={},n={},a){const o=this._buildSamplingPipeline(t);return this.aggregate(e,o,{allowDiskUse:!0,...this._getOptionsWithFallbackReadPreference(n,a)},a)}_startSession(e){const t=this._initializedClient(e).startSession();return t[Ge]=e,t}_killSessions(e){const t=Array.isArray(e)?e:[e],n=new Set(t.map((e=>e[Ge])));if(1!==n.size)throw new Error(`Cannot kill sessions without a specific client type: [${[...n].join(", ")}]`);const[a]=n;return c(this._database("admin",a),{killSessions:t.map((e=>e.id))})}isConnected(){return!!this._metadataClient}async _cancellableOperation(e,t=()=>Promise.resolve(),n){if(!n)return await e();if(n.aborted)throw n.reason??(0,$.VJ)();const a=this._startSession("CRUD");let o;const r=async()=>{const e=e=>{this._logger.warn((0,d.oW)(1001000140),"Attempting to kill the operation failed",{error:e.message})};await t(a).catch(e),await this._killSessions(a).catch(e)};try{o=await(0,$.kk)(e(a,n),n)}catch(e){throw(0,$.nc)(e)&&await r(),e}return o}isCancelError(e){return(0,$.nc)(e)}_setupListeners(e){if(e){e.on("connectionCreated",(e=>{const{address:t,connectionId:n}=e;this._logger.info((0,d.oW)(1001000027),"Driver connection created",{address:t,serverConnectionId:n})})),e.on("serverDescriptionChanged",(e=>{this._logger.info((0,d.oW)(1001000018),"Server description changed",{address:e.address,error:e.newDescription.error?.message??null,previousType:e.previousDescription.type,newType:e.newDescription.type})})),e.on("serverOpening",(e=>{this._logger.info((0,d.oW)(1001000019),"Server opening",{address:e.address})})),e.on("close",(()=>{this._logger.info((0,d.oW)(1001000315),"Client is closed"),this._emitter.emit("close")})),e.on("serverClosed",(e=>{this._logger.info((0,d.oW)(1001000020),"Server closed",{address:e.address})})),e.on("topologyDescriptionChanged",(e=>{this._isWritable=this._checkIsWritable(e);const t={isWritable:this.isWritable(),isMongos:this.isMongos(),previousType:e.previousDescription.type,newType:e.newDescription.type};this._logger.info((0,d.oW)(1001000021),"Topology description changed",t),this._lastSeenTopology=e.newDescription,this._emitter.emit("topologyDescriptionChanged",e)}));const t=new Map,n=(e,t)=>(e=Math.max(e,200),t=Math.max(t,200),Math.abs(Math.log2(e/t))>=1);e.on("serverHeartbeatSucceeded",(e=>{const a=t.get(e.connectionId);(!a||a.failure||n(a.duration,e.duration))&&(t.set(e.connectionId,{failure:null,duration:e.duration}),this._logger.debug((0,d.oW)(1001000022),"Server heartbeat succeeded",{connectionId:e.connectionId,duration:e.duration}))})),e.on("serverHeartbeatFailed",(e=>{const a=t.get(e.connectionId);a&&a.failure&&!n(a.duration,e.duration)||(t.set(e.connectionId,{failure:e.failure.message,duration:e.duration}),this._logger.warn((0,d.oW)(1001000023),"Server heartbeat failed",{connectionId:e.connectionId,duration:e.duration,failure:e.failure.message})),this._emitter.emit("serverHeartbeatFailed",e)})),e.on("commandStarted",(e=>{const{address:t,connectionId:n,requestId:a,commandName:o,databaseName:r}=e;this._logger.debug((0,d.oW)(1001000028),"Driver command started",{address:t,databaseName:r,serverConnectionId:n,requestId:a,commandName:o})})),e.on("commandSucceeded",(e=>{const{address:t,connectionId:n,duration:a,requestId:o,commandName:r}=e;this._logger.debug((0,d.oW)(1001000029),"Driver command succeeded",{address:t,requestId:o,serverConnectionId:n,duration:a,commandName:r})})),e.on("commandFailed",(e=>{const{address:t,connectionId:n,duration:a,requestId:o,commandName:r,failure:i}=e;this._logger.debug((0,d.oW)(1001000030),"Driver command failed",{address:t,serverConnectionId:n,duration:a,requestId:o,commandName:r,failure:i.message})}))}}_initializedClient(e){if("CRUD"!==e&&"META"!==e)throw new Error(`Invalid client type: ${e}`);const t="CRUD"===e&&this._useCRUDClient?this._crudClient:this._metadataClient;if(!t)throw new Error(`Client not yet initialized [${e}]`);return t}_getCSFLECollectionTracker(){if(!this._csfleCollectionTracker)throw new Error("Client not yet initialized [CSFLECollectionTracker]");return this._csfleCollectionTracker}isUpdateAllowed(e,t){return this._getCSFLECollectionTracker().isUpdateAllowed(e,t)}knownSchemaForCollection(e){return this._getCSFLECollectionTracker().knownSchemaForCollection(e)}async databaseStats(e){const t=this._database(e,"META");return{name:e,...k(await c(t,{dbStats:1},{enableUtf8Validation:!1,...Ye(this.isMongos(),this._crudClient?.readPreference)}))}}async previewUpdate(e,t,n,a={}){const{abortSignal:o=(new AbortController).signal,sample:r=10,timeout:i=1e3}=a,s=Date.now(),l=()=>Math.max(1,i-(Date.now()-s));return await this._cancellableOperation((async(a,o)=>{if(!a)throw new Error("Could not open session.");try{return await a.withTransaction((async()=>{const i=this._collection(e,"CRUD"),s=await i.find(t,{session:a,signal:o,maxTimeMS:l(),promoteValues:!1}).sort({_id:1}).limit(r).toArray(),c=s.map((e=>e._id));await i.updateMany({_id:{$in:c}},n,{session:a,maxTimeMS:l()});const d=await i.find({_id:{$in:c}},{session:a,signal:o,maxTimeMS:l(),promoteValues:!1}).sort({_id:1}).toArray();return await a.abortTransaction(),await a.endSession(),{changes:s.map(((e,t)=>({before:e,after:d[t]})))}}),{maxTimeMS:l()})}catch(e){if(function(e){return"Cannot use a session that has ended"===e.message||"NoSuchTransaction"===e.codeName}(e))return{changes:[]};throw a.inTransaction()&&(await a.abortTransaction(),await a.endSession()),e}}),(async()=>{}),o)}_buildCollectionStats(e,t,n){return{ns:e+"."+t,name:t,database:e,is_capped:n.capped,document_count:n.count??0,document_size:n.size,avg_document_size:n.avgObjSize??0,storage_size:"missing"===n.storageSizeType?void 0:n.storageSize,free_storage_size:"missing"===n.freeStorageSizeType?void 0:n.freeStorageSize,index_count:n.nindexes??0,index_size:n.totalIndexSize??0,bucket_count:n.bucket_count,avg_bucket_size:n.avg_bucket_size}}_collection(e,t){return this._initializedClient(t).db(this._databaseName(e)).collection(this._collectionName(e))}_database(e,t){return this._initializedClient(t).db(this._databaseName(e))}_collectionName(e){return(0,s.Ay)(e).collection}_databaseName(e){return(0,s.Ay)(e).database}_checkIsWritable(e){return[...e.newDescription.servers.values()].some((e=>e.isWritable))}_cleanup(){this._emitter.removeAllListeners(),this._metadataClient?.removeAllListeners?.(),this._crudClient?.removeAllListeners?.(),this._metadataClient=void 0,this._crudClient=void 0,this._state=void 0,this._mongoClientConnectionOptions=void 0,this._isWritable=!1,this._isConnecting=!1}async _resetCRUDClient(){if("unavailable"===this.getCSFLEMode())return;const e=this._crudClient;if(!e)return;const t=await e[T]();this._crudClient===e?(this._crudClient=t,await e.close()):await t.close()}configuredKMSProviders(){return g(this._connectionOptions.fleOptions?.autoEncryption)}_csfleLogInformation(e){const t=g(e?.autoEncryption);return 0===t.length?null:{storeCredentials:e?.storeCredentials,encryptedFieldsMapNamespaces:Object.keys({...e?.autoEncryption?.encryptedFieldsMap,...e?.autoEncryption?.schemaMap}),keyVaultNamespace:e?.autoEncryption?.keyVaultNamespace,kmsProviders:t}}async createDataKey(e,t){const n=this._getClientEncryption();return await n.createDataKey(e,t??{})}_getClientEncryption(){const e=this._initializedClient("CRUD"),t=e.options.autoEncryption,{proxyHost:n,proxyPort:a,proxyUsername:o,proxyPassword:i}=e.options;return new r.ClientEncryption(e,{keyVaultNamespace:t.keyVaultNamespace,kmsProviders:t.kmsProviders,tlsOptions:t.tlsOptions,proxyOptions:n?{proxyHost:n,proxyPort:a,proxyUsername:o,proxyPassword:i}:void 0})}async getUpdatedSecrets(){return this._state?{oidc:{serializedState:await this._state.oidcPlugin.serialize()}}:{}}async listStreamProcessors(e){const t=this._database("admin","CRUD"),{streamProcessors:n}=await c(t,{listStreamProcessors:1,filter:e});return n}async startStreamProcessor(e){const t=this._database("admin","CRUD");await c(t,{startStreamProcessor:e})}async stopStreamProcessor(e){const t=this._database("admin","CRUD");await c(t,{stopStreamProcessor:e})}async dropStreamProcessor(e){const t=this._database("admin","CRUD");await c(t,{dropStreamProcessor:e})}static{const e=e=>{};e(this)}}async function Xe({connectionOptions:e,proxyOptions:t,signal:n,logger:a,productName:o,productDocsLink:r}){const i=new Qe(e,a,t);return await i.connect({signal:n,productName:o,productDocsLink:r}),i}class et{_abortController;_closed=!1;_connectFn;_dataService=null;_logger;_proxyOptions;constructor({connectFn:e,logger:t,proxyOptions:n}){this._logger=t,this._connectFn=e,this._proxyOptions=n,this._abortController=new AbortController}connect(e){return(0,$.kk)(this._connect(e),this._abortController.signal).catch((e=>{if(!(0,$.nc)(e))throw e}))}cancelConnectionAttempt(){this._abortController.abort(),this._close()}isClosed(){return this._closed}async _connect(e){if(!this._closed)try{return this._dataService=await this._connectFn({connectionOptions:e,signal:this._abortController.signal,logger:this._logger,proxyOptions:this._proxyOptions}),this._dataService}catch(e){if(function(e){return"MongoTopologyClosedError"===e?.name}(e))return void this._logger.debug("Connection Attempt",(0,d.oW)(1001000282),"connect","caught connection attempt closed error",e);throw this._logger.debug("Connection Attempt",(0,d.oW)(1001000279),"connect","connection attempt failed",e),e}}async _close(){if(!this._closed)if(this._closed=!0,this._dataService)try{await this._dataService.disconnect(),this._logger.debug("Connection Attempt",(0,d.oW)(1001000281),"close requested","disconnected from connection attempt")}catch(e){this._logger.debug("Connection Attempt",(0,d.oW)(1001000283),"close requested","error while disconnecting from connection attempt",e)}else this._logger.debug("Connection Attempt",(0,d.oW)(1001000280),"close requested","cancelled connection attempt")}}function tt({logger:e,proxyOptions:t,connectFn:n=Xe}){return new et({logger:e,proxyOptions:t,connectFn:n})}},34615:(e,t,n)=>{n.d(t,{wO:()=>fn,GQ:()=>xn,_E:()=>Vt,hl:()=>$t,DM:()=>Yt});var a=n(55712),o=n(96652),r=n.n(o),i=n(78332),s=n(90605),l=n(13310);const c=(0,i.AHW)({marginTop:i.YKD[100],marginBottom:i.YKD[400]}),d=(0,i.AHW)({flexGrow:1,display:"flex",alignItems:"center"}),u=(0,i.AHW)({display:"flex",alignItems:"center"}),m=(0,i.AHW)({textarea:{fontSize:1.75*i.YKD[200],minHeight:i.YKD[7],resize:"vertical"}}),p=(0,i.AHW)({height:14,width:26,margin:0,marginLeft:i.YKD[100]}),h=(0,i.AHW)({"&:hover":{cursor:"pointer"}}),g=(0,i.AHW)({marginTop:i.YKD[400],display:"flex",flexDirection:"row"}),f="connectionString",y="connectionStringLabel",b=function({connectionString:e,enableEditingConnectionString:t,setEnableEditingConnectionString:n,updateConnectionFormField:a,onSubmit:s,protectConnectionStrings:b,disableEditingConnectedConnection:v}){const C=(0,o.useRef)(null),[E,S]=(0,o.useState)(e),[k,w]=(0,o.useState)(!1);(0,i.wTI)((()=>{k||e===E||S(e)}),[k,e,E]);const x=(0,o.useCallback)((e=>{if(13===e.which&&!e.shiftKey)return e.preventDefault(),void s()}),[s]),A=(0,o.useCallback)((e=>{const t=e.target.value;S(t),a({type:"update-connection-string",newConnectionStringValue:t})}),[a]),D=t&&k?E:function(e){return(0,l.J0)(e,{redactUsernames:!1,replacementString:"*****"})}(E),I=(0,o.useCallback)((async e=>{e?await(0,i.$TK)({title:"Are you sure you want to edit your connection string?",description:"Editing this connection string will reveal your credentials."})&&n(!0):n(!1)}),[n]);return r().createElement(o.Fragment,null,r().createElement("div",{className:g},r().createElement("div",{className:d},r().createElement(i.JU7,{htmlFor:f,id:y},"URI"),r().createElement(i.CAb,{"aria-label":"Connection String Documentation","data-testid":"connectionStringDocsButton",href:"https://docs.mongodb.com/manual/reference/connection-string/"})),!(b||v)&&r().createElement("div",{className:u},r().createElement(i.JU7,{className:h,id:"edit-connection-string-label",htmlFor:"toggle-edit-connection-string"},"Edit Connection String"),r().createElement(i.lMk,{className:p,id:"toggle-edit-connection-string","data-testid":"toggle-edit-connection-string","aria-labelledby":"edit-connection-string-label",size:"xsmall",type:"button",checked:t,onChange:e=>{I(e)}}))),r().createElement("div",{className:c},r().createElement(i.fs1,{onBlur:()=>w(!1),onFocus:()=>w(!0),onChange:A,onKeyPress:x,value:D,className:m,disabled:!t||v,id:f,"data-testid":f,ref:C,"aria-labelledby":y,placeholder:"e.g mongodb+srv://username:password@cluster0-jtpxd.mongodb.net/admin",spellCheck:!1})))};n(95039);var v=n(29603),C=n(9174),E=n(19461),S=n(34110).Buffer;const k={storeCredentials:!1,autoEncryption:void 0};function w(e){e=(0,s.cloneDeep)(e);const t=e.fleOptions?.autoEncryption&&x(e.fleOptions?.autoEncryption)?e.fleOptions?.autoEncryption:void 0;if(!t)return{...e,fleOptions:void 0};function n(e){const t=Object.fromEntries(Object.entries(e??{}).filter((([,e])=>Object.keys(e??{}).length>0)));return Object.keys(t).length>0?t:void 0}const a=n(t.kmsProviders),o=n(t.tlsOptions),{kmsProviders:r,tlsOptions:i,...l}=t;return{...e,fleOptions:{...k,...e.fleOptions,autoEncryption:{...l,...a?{kmsProviders:a}:{},...o?{tlsOptions:o}:{}}}}}function x(e){return!!(e.bypassAutoEncryption||e.keyVaultNamespace||e.schemaMap||e.encryptedFieldsMap||[...Object.values(e.tlsOptions??{}),...Object.values(e.kmsProviders??{})].flatMap((e=>Object.values(e??{}))).filter(Boolean).length>0)}function A(e){if(!e.trim())return;let t={};try{if(t=(0,E.Ay)(e,{mode:E.X6.Strict}),!t||"object"!=typeof t)throw t={},new Error("Field contained invalid input");t["$compass.error"]=null}catch(e){t["$compass.error"]=e.message}return t["$compass.rawText"]=e,t}function D(e){e=(0,s.cloneDeep)(e);const t=e.fleOptions?.autoEncryption;return null===t?.schemaMap?.["$compass.error"]&&(t.schemaMap=A(t.schemaMap["$compass.rawText"])),null===t?.encryptedFieldsMap?.["$compass.error"]&&(t.encryptedFieldsMap=A(t.encryptedFieldsMap["$compass.rawText"])),e}function I(e,t,n){if(e)return Object.fromEntries(Object.entries(e).map((([e,a])=>[e===t?n:e,a])))}function M(e,t){return e.filter((e=>e.fieldTab===t))}function T(e,t){return(e||[]).find((e=>e.fieldName===t))?.message}function L(e,t){return!!T(e,t)}function O(e,t,n){return(e||[]).find((e=>e.fieldName===t&&e.fieldIndex===n))?.message}function N(e){switch((e.typedSearchParams().get("authMechanism")||"").toUpperCase()){case"":return function(e){const{username:t,password:n}=e;return t||n?_(e):[]}(e);case"MONGODB-X509":return function(e){const t=[];return R(e)||t.push({fieldTab:"tls",fieldName:"tls",message:"TLS must be enabled in order to use x509 authentication."}),e.searchParams.has("tlsCertificateKeyFile")||t.push({fieldTab:"tls",fieldName:"tlsCertificateKeyFile",message:"A Client Certificate is required with x509 authentication."}),t}(e);case"GSSAPI":return function(e){const t=[];return e.username||t.push({fieldTab:"authentication",fieldName:"kerberosPrincipal",message:"Principal name is required with Kerberos."}),t}(e);case"PLAIN":case"SCRAM-SHA-1":case"SCRAM-SHA-256":return function(e){return _(e)}(e);default:return[]}}function _(e){const{username:t,password:n}=e,a=[];return t||a.push({fieldTab:"authentication",fieldName:"username",message:"Username is missing."}),n||a.push({fieldTab:"authentication",fieldName:"password",message:"Password is missing."}),a}function F(e){const t=[];return e.host||t.push({fieldTab:"proxy",fieldName:"sshHostname",message:"A hostname is required to connect with an SSH tunnel."}),e.password||e.identityKeyFile||t.push({fieldTab:"proxy",fieldName:"sshPassword",message:"When connecting via SSH tunnel either password or identity file is required."}),e.identityKeyPassphrase&&!e.identityKeyFile&&t.push({fieldTab:"proxy",fieldName:"sshIdentityKeyFile",message:"File is required along with passphrase."}),t}function P(e){const t=e.typedSearchParams(),n=t.get("proxyHost"),a=t.get("proxyPort"),o=t.get("proxyUsername"),r=t.get("proxyPassword"),i=[];return!n&&(a||o||r)?(i.push({fieldTab:"proxy",fieldName:"proxyHostname",message:"Proxy hostname is required."}),i):i}function W(e){const t=[];for(const n of["schemaMap","encryptedFieldsMap"]){const a=e[n]?.["$compass.error"];a&&t.push({fieldTab:"csfle",fieldName:n,message:`EncryptedFieldConfig is invalid: ${a}`})}e.keyVaultNamespace&&!e.keyVaultNamespace.includes(".")&&t.push({fieldTab:"csfle",fieldName:"keyVaultNamespace",message:"Key Vault namespace must be of the format <db>.<collection>"}),!e.keyVaultNamespace&&x(e)&&t.push({fieldTab:"csfle",fieldName:"keyVaultNamespace",message:"Key Vault namespace must be specified for In-Use-Encryption-enabled connections"});const n=e.kmsProviders??{};return"string"!=typeof n.local?.key||/[a-zA-Z0-9+/_-]{128}/.test(n.local.key)||t.push({fieldTab:"csfle",fieldName:"local.key",message:"Local key must be a Base64-encoded 96-byte string"}),"string"!=typeof n.kmip?.endpoint||n.kmip?.endpoint.includes(":")||t.push({fieldTab:"csfle",fieldName:"kmip.endpoint",message:"KMIP endpoint must be of the format <host>:<port>"}),t}function R(e){const t=e.searchParams.get("ssl"),n=e.searchParams.get("tls");return t||n?"true"===t||"true"===n:e.isSRV}function U(e){let t;try{t=new l.Ay(e.connectionString,{looseValidation:!0})}catch{return[]}return[...H(t),...V(t),...K(t),...j(t),...B(t),...z(t),...Y(t),...$(e)]}function $(e){const t=[];return e.fleOptions?.storeCredentials&&t.push({message:"In-Use Encryption KMS provider credentials will be stored to disk."}),t}function V(e){const t=[];if(!R(e))return[];const n="true"===e.searchParams.get("tlsInsecure"),a="true"===e.searchParams.get("tlsAllowInvalidHostnames"),o="true"===e.searchParams.get("tlsAllowInvalidCertificates");return(n||a||o)&&t.push({message:"TLS/SSL certificate validation is disabled. If possible, enable certificate validation to avoid security vulnerabilities."}),t}function H(e){const t=[],n=e.searchParams.get("readPreference");return n&&!["primary","primaryPreferred","secondary","secondaryPreferred","nearest"].includes(n)&&t.push({message:`Unknown read preference ${n}`}),t}function K(e){const t=[];return e.isSRV&&"true"===e.searchParams.get("directConnection")&&t.push({message:"directConnection not supported with SRV URI."}),t}function j(e){const t=[];return e.searchParams.get("replicaSet")&&"true"===e.searchParams.get("directConnection")&&t.push({message:"directConnection is not supported with replicaSet."}),t}function B(e){const t=[];return e.hosts.length>1&&"true"===e.searchParams.get("directConnection")&&t.push({message:"directConnection is not supported with multiple hosts."}),t}function z(e){const t=[];return e.hosts.filter((e=>!(0,v.M8)(e))).length&&!R(e)&&t.push({message:"TLS/SSL is disabled. If possible, enable TLS/SSL to avoid security vulnerabilities."}),t}function Y(e){const t=[],n=e.typedSearchParams(),a=n.get("proxyHost");return!a||(0,v.M8)(a)||(n.get("proxyPassword")&&t.push({message:"Socks5 proxy password will be transmitted in plaintext."}),e.hosts.find(v.M8)&&t.push({message:"Using remote proxy with local MongoDB service host."})),t}const q="MONGODB",G="MONGODB_SRV",Z=(0,i.AHW)({marginTop:i.YKD[200]}),J=function({connectionStringUrl:e,errors:t,updateConnectionFormField:n}){const{isSRV:a}=e,s=(0,o.useCallback)((e=>{n({type:"update-connection-scheme",isSrv:e.target.value===String(G)})}),[n]);return r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:"connection-scheme-radio-box-group"},"Connection String Scheme"),r().createElement(i.E99,{id:"connection-scheme-radio-box-group",value:a?G:q,onChange:s},r().createElement(i.VCA,{id:"connection-scheme-mongodb-radiobox","data-testid":"connection-scheme-mongodb-radiobox",value:q},"mongodb"),r().createElement(i.VCA,{id:"connection-scheme-srv-radiobox","data-testid":"connection-scheme-srv-radiobox",value:G},"mongodb+srv")),r().createElement(i.VYo,{className:Z},a?"DNS Seed List Connection Format. The +srv indicates to the client that the hostname that follows corresponds to a DNS SRV record.":"Standard Connection String Format. The standard format of the MongoDB connection URI is used to connect to a MongoDB deployment: standalone, replica set, or a sharded cluster."),L(t,"isSrv")&&r().createElement(i.lZ$,{variant:i.uAY.Danger},T(t,"isSrv")))},Q=(0,i.AHW)({marginTop:i.YKD[100]}),X=function({connectionStringUrl:e,updateConnectionFormField:t}){const n="true"===e.typedSearchParams().get("directConnection"),a=(0,o.useCallback)((e=>e.target.checked?t({type:"update-search-param",currentKey:"directConnection",value:e.target.checked?"true":"false"}):t({type:"delete-search-param",key:"directConnection"})),[t]);return r().createElement(i.Sc0,{onChange:a,id:"direct-connection-checkbox",label:r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:"direct-connection-checkbox"},"Direct Connection"),r().createElement(i.VYo,{className:Q},"Specifies whether to force dispatch all operations to the specified host.")),checked:n})},ee=(0,i.AHW)({maxWidth:5*i.YKD[7]}),te=function({errors:e,connectionStringUrl:t,updateConnectionFormField:n}){const[a,s]=(0,o.useState)([...t.hosts]),{isSRV:l}=t,c="true"===t.typedSearchParams().get("directConnection")||!t.isSRV&&1===a.length;(0,i.wTI)((()=>{s([...t.hosts])}),[t]);const d=(0,o.useCallback)(((e,t)=>{const o=[...a];o[t]=e.target.value||"",s(o),n({type:"update-host",fieldIndex:t,newHostValue:e.target.value})}),[a,s,n]);return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:"connection-host-input-0",id:"connection-host-input-label"},l?"Hostname":"Host"),r().createElement(i.qQS,{items:a,className:ee,renderItem:(t,n)=>r().createElement(i.ksK,{type:"text","data-testid":"connection-host-input",id:`connection-host-input-${n}`,"aria-labelledby":"connection-host-input-label",state:L(e,"hosts")?"error":void 0,errorMessage:O(e,"hosts",n),value:`${t}`,onChange:e=>d(e,n)}),disableAddButton:()=>l,disableRemoveButton:()=>l||a.length<=1,onAddItem:e=>n({type:"add-new-host",fieldIndexToAddAfter:e}),onRemoveItem:e=>n({type:"remove-host",fieldIndexToRemove:e}),addButtonTestId:"connection-add-host-button",removeButtonTestId:"connection-remove-host-button"})),c&&r().createElement(i.GEW,null,r().createElement(X,{connectionStringUrl:t,updateConnectionFormField:n})))},ne=function({errors:e,connectionStringUrl:t,updateConnectionFormField:n}){return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(J,{errors:e,connectionStringUrl:t,updateConnectionFormField:n})),r().createElement(te,{errors:e,connectionStringUrl:t,updateConnectionFormField:n}))};function ae(e){const t=e.typedSearchParams().get("authMechanismProperties");try{return new l.Y6(t)}catch{return new l.Y6}}function oe(e){try{return[new l.QZ(e,{looseValidation:!0}),void 0]}catch(e){return[void 0,e]}}function re(e){return decodeURIComponent(e.username)}function ie(e){return decodeURIComponent(e.password)}const se=(0,i.AHW)({marginTop:i.YKD[100]}),le=[{title:"Default",value:"DEFAULT"},{title:"SCRAM-SHA-1",value:"SCRAM-SHA-1"},{title:"SCRAM-SHA-256",value:"SCRAM-SHA-256"}],ce={showFavoriteActions:!0,showPersonalisationForm:!0,showHelpCardsInForm:!0,protectConnectionStrings:!1,forceConnectionOptions:[],showKerberosPasswordField:!1,showOIDCDeviceAuthFlow:!1,enableOidc:!1,enableDebugUseCsfleSchemaMap:!1,protectConnectionStringsForNewConnections:!1,showOIDCAuth:!0,showKerberosAuth:!0,showCSFLE:!0,showProxySettings:!0,saveAndConnectLabel:"Save & Connect"},de=(0,o.createContext)({}),ue=e=>(0,o.useContext)(de)[e]??ce[e],me={none:{label:"None",value:"none"},forward:{label:"Forward",value:"forward"},forwardAndReverse:{label:"Forward and reverse",value:"forwardAndReverse"}},pe=[{title:"Username/Password",id:"DEFAULT",component:function({errors:e,connectionStringUrl:t,updateConnectionFormField:n}){const a=ie(t),s=re(t),l=(t.searchParams.get("authMechanism")??"").toUpperCase(),c=le.find((({value:e})=>e===l))??le[0],d=(0,o.useCallback)((e=>{e.preventDefault(),n({type:"update-search-param",currentKey:"authMechanism",value:e.target.value})}),[n]),u=T(e,"username"),m=T(e,"password");return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.ksK,{onChange:({target:{value:e}})=>{n({type:"update-username",username:e})},label:"Username","data-testid":"connection-username-input",errorMessage:u,state:u?"error":void 0,value:s||"",optional:!0})),r().createElement(i.GEW,null,r().createElement(i.ksK,{onChange:({target:{value:e}})=>{n({type:"update-password",password:e})},label:"Password",type:"password","data-testid":"connection-password-input",value:a||"",errorMessage:m,state:m?"error":void 0,optional:!0})),r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:"authSourceInput",id:"authSourceLabel"},"Authentication Database"),r().createElement(i.CAb,{"aria-label":"Authentication Database Documentation",href:"https://docs.mongodb.com/manual/reference/connection-string/#mongodb-urioption-urioption.authSource"}),r().createElement(i.ksK,{className:se,onChange:({target:{value:e}})=>{n(""!==e?{type:"update-search-param",currentKey:"authSource",value:e}:{type:"delete-search-param",key:"authSource"})},id:"authSourceInput","aria-labelledby":"authSourceLabel",value:t.searchParams.get("authSource")??"",optional:!0})),r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:"authentication-mechanism-radio-box-group"},"Authentication Mechanism"),r().createElement(i.E99,{onChange:d,id:"authentication-mechanism-radio-box-group",value:c.value},le.map((({title:e,value:t})=>r().createElement(i.VCA,{id:`${t}-tab-button`,"data-testid":`${t}-tab-button`,checked:c.value===t,value:t,key:t},e))))))}},{title:"OIDC",id:"MONGODB-OIDC",component:function({connectionStringUrl:e,updateConnectionFormField:t,errors:n,connectionOptions:a,openSettingsModal:s}){const l=re(e),c=T(n,"username"),d=(0,o.useCallback)(((e,n)=>t({type:"update-oidc-param",key:e,value:n})),[t]),u=!!a.oidc?.allowedFlows?.includes?.("device-auth"),m=!!ue("showOIDCDeviceAuthFlow"),p=(0,o.useCallback)((()=>s?.("proxy")),[s]),h=ue("showProxySettings")&&s;return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.ksK,{"data-testid":"connection-oidc-username-input",onChange:({target:{value:e}})=>t({type:"update-username",username:e}),label:"Username",optional:!0,value:l||"",errorMessage:c,state:c?"error":void 0})),r().createElement(i.GEW,null,r().createElement(i.nD3,{text:"OIDC Options","data-testid":"oidc-advanced-options"},r().createElement(i.GEW,null,r().createElement(i.ksK,{"data-testid":"connection-oidc-auth-code-flow-redirect-uri-input",onChange:({target:{value:e}})=>{d("redirectURI",e)},optional:!0,label:"Auth Code Flow Redirect URI",value:a?.oidc?.redirectURI||"",description:"This value needs to match the configuration of the Identity Provider used by the server."})),r().createElement(i.GEW,null,r().createElement(i.Sc0,{onChange:({target:{checked:e}})=>d("enableUntrustedEndpoints",!!e||void 0),"data-testid":"oidc-allow-untrusted-endpoint-input",id:"oidc-allow-untrusted-endpoint-input",label:r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:"oidc-allow-untrusted-endpoint-input"},"Consider Target Endpoint Trusted"),r().createElement(i.VYo,null,"Allow connecting when the target endpoint is not in the list of endpoints that are considered trusted by default. Only use this option when connecting to servers that you trust.")),checked:!!a.oidc?.enableUntrustedEndpoints})),r().createElement(i.GEW,null,r().createElement(i.Sc0,{onChange:({target:{checked:e}})=>d("passIdTokenAsAccessToken",!!e||void 0),"data-testid":"oidc-pass-id-token-as-access-token",id:"oidc-pass-id-token-as-access-token",label:r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:"oidc-pass-id-token-as-access-token"},"Use ID token instead of Access Token"),r().createElement(i.VYo,null,"Use ID tokens instead of access tokens to work around misconfigured or broken identity providers. This will only work if the server is configured correspondingly.")),checked:!!a.oidc?.passIdTokenAsAccessToken})),r().createElement(i.GEW,null,r().createElement(i.Sc0,{onChange:({target:{checked:e}})=>d("skipNonceInAuthCodeRequest",!e||void 0),"data-testid":"oidc-send-nonce-in-auth-code-request",id:"oidc-send-nonce-in-auth-code-request",label:r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:"oidc-send-nonce-in-auth-code-request"},"Send a nonce in the Auth Code Request"),r().createElement(i.VYo,null,"Include a random nonce as part of the auth code request to prevent replay attacks. This should only be disabled in cases where the OIDC provider doesn't support it as the nonce is an important security component.")),checked:!a.oidc?.skipNonceInAuthCodeRequest})),h&&r().createElement(i.GEW,null,r().createElement(i.Sc0,{onChange:({target:{checked:e}})=>d("shareProxyWithConnection",!e),"data-testid":"oidc-use-application-level-proxy",id:"oidc-use-application-level-proxy",label:r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:"oidc-use-application-level-proxy"},"Use Application-Level Proxy Settings"),r().createElement(i.VYo,null,"Use the"," ",r().createElement(i.N_E,{onClick:p},"application-level proxy settings")," ","for communicating with the identity provider. If not chosen, the same proxy (if any) is used for connecting to both the cluster and the identity provider.")),checked:!a.oidc?.shareProxyWithConnection})),m&&r().createElement(i.GEW,null,r().createElement(i.Sc0,{onChange:({target:{checked:e}})=>{if(e)return d("allowedFlows",["auth-code","device-auth"]);const t=a.oidc?.allowedFlows?.filter?.((e=>"device-auth"!==e));d("allowedFlows",t.length>0?t:void 0)},"data-testid":"oidc-enable-device-auth-flow-input",id:"oidc-enable-device-auth-flow-input",label:r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:"oidc-enable-device-auth-flow-input"},"Enable Device Authentication Flow"),r().createElement(i.VYo,null,"Less secure authentication flow that can be used as a fallback when browser-based authentication is unavailable.")),checked:u})))))}},{title:"X.509",id:"MONGODB-X509",component:function(){return r().createElement(r().Fragment,null,r().createElement(i.lZ$,{variant:i.uAY.Info},"X.509 Authentication type requires a ",r().createElement("strong",null,"Client Certificate")," ","to work. Make sure to enable TLS and add one in the"," ",r().createElement("strong",null,"TLS/SSL")," tab."))}},{title:"Kerberos",id:"GSSAPI",component:function({errors:e,connectionStringUrl:t,updateConnectionFormField:n}){const a=T(e,"kerberosPrincipal"),s=re(t),l=ie(t),c=ae(t),d=c.get("SERVICE_NAME"),u=c.get("SERVICE_REALM"),m=c.get("CANONICALIZE_HOST_NAME")||"none",[p,h]=(0,o.useState)((()=>l.length>0));(0,i.wTI)((()=>{!p&&l.length>0&&h(!0)}),[p,l]);const g=!!ue("showKerberosPasswordField");return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.ksK,{onChange:({target:{value:e}})=>{n({type:"update-username",username:e})},"data-testid":"gssapi-principal-input",label:"Principal",errorMessage:a,state:a?"error":void 0,value:s||""})),r().createElement(i.GEW,null,r().createElement(i.ksK,{"data-testid":"gssapi-service-name-input",onChange:({target:{value:e}})=>{n({type:"update-auth-mechanism-property",key:"SERVICE_NAME",value:e})},optional:!0,label:"Service Name",value:d||""})),r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:"canonicalize-hostname-select"},"Canonicalize Host Name"),r().createElement(i.E99,{name:"canonicalize-hostname",id:"canonicalize-hostname-select",onChange:({target:{value:e}})=>{n({type:"update-auth-mechanism-property",key:"CANONICALIZE_HOST_NAME",value:"none"===e?"":e})},value:m,size:"compact"},Object.entries(me).map((([e,{label:t,value:n}])=>r().createElement(i.VCA,{id:`gssapi-canonicalize-host-name-${e}`,"data-testid":`gssapi-canonicalize-host-name-${e}`,key:n,value:n},t))))),r().createElement(i.GEW,null,r().createElement(i.ksK,{onChange:({target:{value:e}})=>{n({type:"update-auth-mechanism-property",key:"SERVICE_REALM",value:e})},"data-testid":"gssapi-service-realm-input",label:"Service Realm",value:u||"",optional:!0})),g&&r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.Sc0,{"data-testid":"gssapi-password-checkbox",checked:p,label:"Provide password directly",onChange:({target:{checked:e}})=>{e||n({type:"update-password",password:""}),h(e)}})),p&&r().createElement(i.GEW,null,r().createElement(i.ksK,{onChange:({target:{value:e}})=>{n({type:"update-password",password:e})},"data-testid":"gssapi-password-input",label:"Password",value:l,type:"password",optional:!0}))))}},{title:"LDAP",id:"PLAIN",component:function({connectionStringUrl:e,updateConnectionFormField:t,errors:n}){const a=re(e),o=ie(e),s=T(n,"username"),l=T(n,"password");return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.ksK,{"data-testid":"connection-plain-username-input",onChange:({target:{value:e}})=>{t({type:"update-username",username:e})},label:"Username",value:a||"",errorMessage:s,state:s?"error":void 0})),r().createElement(i.GEW,null,r().createElement(i.ksK,{"data-testid":"connection-plain-password-input",onChange:({target:{value:e}})=>{t({type:"update-password",password:e})},label:"Password",type:"password",value:o||"",errorMessage:l,state:l?"error":void 0})))}},{title:"AWS IAM",id:"MONGODB-AWS",component:function({connectionStringUrl:e,updateConnectionFormField:t}){const n=re(e),a=ie(e),o=ae(e).get("AWS_SESSION_TOKEN");return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.ksK,{"data-testid":"connection-form-aws-access-key-id-input",onChange:({target:{value:e}})=>{t({type:"update-username",username:e})},label:"AWS Access Key Id",value:n||""})),r().createElement(i.GEW,null,r().createElement(i.ksK,{"data-testid":"connection-form-aws-secret-access-key-input",onChange:({target:{value:e}})=>{t({type:"update-password",password:e})},label:"AWS Secret Access Key",type:"password",value:a||"",optional:!0})),r().createElement(i.GEW,null,r().createElement(i.ksK,{"data-testid":"connection-form-aws-secret-token-input",onChange:({target:{value:e}})=>{t({type:"update-auth-mechanism-property",key:"AWS_SESSION_TOKEN",value:e})},label:"AWS Session Token",value:o||"",optional:!0,type:"password"})))}}],he=(0,i.AHW)({display:"contents"}),ge=function({errors:e,updateConnectionFormField:t,connectionStringUrl:n,connectionOptions:a,openSettingsModal:s}){const l=!!ue("enableOidc"),c=ue("showOIDCAuth"),d=ue("showKerberosAuth"),u=(0,o.useMemo)((()=>pe.filter((e=>"MONGODB-OIDC"===e.id?l&&c:"GSSAPI"!==e.id||d))),[l,d,c]),m=function(e){const t=(e.searchParams.get("authMechanism")||"").toUpperCase(),n=pe.find((({id:e})=>e===t));return n?n.id:"DEFAULT"}(n),p=u.find((({id:e})=>e===m))||u[0],h=(0,o.useCallback)((e=>(e.preventDefault(),t({type:"update-auth-mechanism",authMechanism:"DEFAULT"===e.target.value?null:e.target.value}))),[t]),g=p.component;return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:"authentication-method-radio-box-group"},"Authentication Method"),r().createElement(i.E99,{id:"authentication-method-radio-box-group","data-testid":"authentication-method-radio-box-group",onChange:h,value:p.id,size:"compact"},u.map((({title:e,id:t})=>r().createElement(i.VCA,{id:`connection-authentication-method-${t}-button`,"data-testid":`connection-authentication-method-${t}-button`,checked:p.id===t,value:t,key:t},e))))),r().createElement("div",{className:he,"data-testid":`${p.id}-tab-content`},r().createElement(g,{errors:e,connectionStringUrl:n,updateConnectionFormField:t,connectionOptions:a,openSettingsModal:s})))};function fe({openSettingsModal:e}){const t=(0,o.useCallback)((()=>{e?.("proxy")}),[e]);return e?r().createElement(i.nBu,null,"Use the"," ",r().createElement(i.N_E,{onClick:t},"application-level proxy settings")," ","for communicating with the cluster."):r().createElement(r().Fragment,null)}const ye=[{title:"None",id:"none",type:"none",component:function(){return r().createElement(r().Fragment,null)}},{title:"SSH with Password",id:"password",type:"ssh-password",component:function({sshTunnelOptions:e,updateConnectionFormField:t,errors:n}){const a=(0,o.useCallback)(((e,n)=>t({type:"update-ssh-options",key:e,value:n})),[t]),s=[{name:"host",label:"SSH Hostname",type:"text",optional:!1,value:e?.host,errorMessage:T(n,"sshHostname"),state:L(n,"sshHostname")?"error":"none"},{name:"port",label:"SSH Port",type:"number",optional:!1,value:e?.port?.toString(),errorMessage:void 0,state:"none"},{name:"username",label:"SSH Username",type:"text",optional:!1,value:e?.username,errorMessage:T(n,"sshUsername"),state:L(n,"sshUsername")?"error":"none"},{name:"password",label:"SSH Password",type:"password",optional:!0,value:e?.password,errorMessage:T(n,"sshPassword"),state:L(n,"sshPassword")?"error":"none"}];return r().createElement(r().Fragment,null,s.map((({name:e,label:t,type:n,optional:o,value:s,errorMessage:l,state:c})=>r().createElement(i.GEW,{key:e},r().createElement(i.ksK,{onChange:({target:{value:t}})=>{a(e,t)},name:e,"data-testid":e,label:t,type:n,optional:o,value:s||"",errorMessage:l,state:c,spellCheck:!1})))))}},{title:"SSH with Identity File",id:"identity",type:"ssh-identity",component:function({sshTunnelOptions:e,updateConnectionFormField:t,errors:n}){const a=(0,o.useCallback)(((e,n)=>t({type:"update-ssh-options",key:e,value:n})),[t]),s=[{name:"host",label:"SSH Hostname",type:"text",optional:!1,value:e?.host,errorMessage:T(n,"sshHostname"),state:L(n,"sshHostname")?"error":"none"},{name:"port",label:"SSH Port",type:"number",optional:!1,value:e?.port?.toString(),errorMessage:"",state:"none"},{name:"username",label:"SSH Username",type:"text",optional:!1,value:e?.username,errorMessage:T(n,"sshUsername"),state:L(n,"sshUsername")?"error":"none"},{name:"identityKeyFile",label:"SSH Identity File",type:"file",errorMessage:T(n,"sshIdentityKeyFile"),state:L(n,"sshIdentityKeyFile")?"error":"none",value:e?.identityKeyFile&&e.identityKeyFile?[e.identityKeyFile]:void 0},{name:"identityKeyPassphrase",label:"SSH Passphrase",type:"password",optional:!0,value:e?.identityKeyPassphrase,errorMessage:void 0,state:"none"}];return r().createElement(r().Fragment,null,s.map((e=>{const{name:t,label:n,optional:o,value:s,errorMessage:l,state:c}=e;switch(e.type){case"file":return r().createElement(i.GEW,{key:t},r().createElement(i.h8q,{id:t,dataTestId:t,onChange:e=>{a(t,e[0])},mode:"open",label:n,error:Boolean(l),errorMessage:l,values:s}));case"text":case"password":case"number":return r().createElement(i.GEW,{key:t},r().createElement(i.ksK,{onChange:({target:{value:e}})=>{a(t,e)},name:t,"data-testid":t,label:n,type:e.type,optional:o,value:s,errorMessage:l,state:c,spellCheck:!1}))}})))}},{title:"Socks5",id:"socks",type:"socks",component:function({updateConnectionFormField:e,errors:t,connectionStringUrl:n}){const a=n.typedSearchParams(),s=(0,o.useCallback)(((t,n)=>e(n?{type:"update-search-param",currentKey:t,value:n}:{type:"delete-search-param",key:t})),[e]),l=[{name:"proxyHost",label:"Proxy Hostname",type:"text",optional:!1,value:a.get("proxyHost")??"",errorMessage:T(t,"proxyHostname"),state:L(t,"proxyHostname")?"error":"none"},{name:"proxyPort",label:"Proxy Tunnel Port",type:"number",optional:!0,value:a.get("proxyPort")??"",state:"none"},{name:"proxyUsername",label:"Proxy Username",type:"text",optional:!0,value:a.get("proxyUsername")??"",state:"none"},{name:"proxyPassword",label:"Proxy Password",type:"password",optional:!0,value:a.get("proxyPassword")??"",state:"none"}];return r().createElement(r().Fragment,null,l.map((({name:e,label:t,type:n,optional:a,value:o,errorMessage:l,state:c})=>r().createElement(i.GEW,{key:e},r().createElement(i.ksK,{onChange:({target:{value:t}})=>{s(e,t)},name:e,"data-testid":e,label:t,type:n,optional:a,value:o,errorMessage:l,state:c,spellCheck:!1})))))}}],be=(0,i.AHW)({display:"contents"}),ve=function({connectionOptions:e,updateConnectionFormField:t,errors:n,connectionStringUrl:a,openSettingsModal:s}){const l=((e,t)=>{const n=e.typedSearchParams();return n.get("proxyHost")||n.get("proxyPort")||n.get("proxyUsername")||n.get("proxyPassword")?"socks":t?.useApplicationLevelProxy?"app-proxy":t&&t?.sshTunnel&&Object.values(t.sshTunnel).find(Boolean)?t.sshTunnel.identityKeyFile||t.sshTunnel.identityKeyPassphrase?"ssh-identity":"ssh-password":"none"})(a,e),c=ue("showProxySettings"),d=(0,o.useMemo)((()=>c?[...ye,{title:"Application-level Proxy",id:"app-proxy",type:"app-proxy",component:fe}]:[...ye]),[c]),u=d.findIndex((e=>e.type===l))??0,[m,p]=(0,o.useState)(d[u]),h=(0,o.useCallback)(((e,n)=>{let a;switch(n){case"socks":a="remove-ssh-options-and-app-proxy";break;case"ssh-identity":case"ssh-password":a="remove-proxy-options-and-app-proxy";break;case"app-proxy":a="remove-proxy-options-and-set-app-proxy";break;default:a="socks"===e?"remove-proxy-options-and-app-proxy":"app-proxy"===e?"remove-app-proxy":"remove-ssh-options-and-app-proxy"}t({type:a})}),[t]),g=(0,o.useCallback)((e=>{e.preventDefault();const t=d.find((({id:t})=>t===e.target.value));t&&(h(m.type,t.type),p(t))}),[h,d,m.type]),f=m.component;return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:"ssh-options-radio-box-group"},"SSH Tunnel/Proxy Method"),r().createElement(i.E99,{id:"ssh-options-radio-box-group",onChange:g,size:"compact",className:"radio-box-group-style"},d.map((({title:e,id:t,type:n})=>r().createElement(i.VCA,{id:`${n}-tab-button`,"data-testid":`${n}-tab-button`,checked:m.id===t,value:t,key:t},e))))),e&&r().createElement("div",{className:be,"data-testid":`${m.type}-tab-content`},r().createElement(f,{errors:n,sshTunnelOptions:e.sshTunnel,updateConnectionFormField:t,connectionStringUrl:a,openSettingsModal:s})))},Ce=function({tlsCertificateKeyFile:e,tlsCertificateKeyFilePassword:t,disabled:n,displayDatabaseConnectionUserHints:a=!0,optional:o=!0,updateTLSClientCertificate:s,updateTLSClientCertificatePassword:l}){return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.h8q,{description:a?"Learn More":void 0,disabled:n,id:"tlsCertificateKeyFile",label:"Client Certificate and Key (.pem)",dataTestId:"tlsCertificateKeyFile-input",link:a?"https://docs.mongodb.com/manual/reference/connection-string/#mongodb-urioption-urioption.tlsCertificateKeyFile":void 0,values:e?[e]:[],onChange:e=>{s(e&&e.length>0?e[0]:null)},showFileOnNewLine:!0,mode:"open",optional:o,optionalMessage:o&&a?"Optional (required with X.509 auth)":void 0})),r().createElement(i.GEW,null,r().createElement(i.ksK,{onChange:({target:{value:e}})=>{l(e)},disabled:n,"data-testid":"tlsCertificateKeyFilePassword-input",id:"tlsCertificateKeyFilePassword",label:"Client Key Password",type:"password",value:t||"",optional:!0})))},Ee=function({tlsCAFile:e,disabled:t,displayDatabaseConnectionUserHints:n=!0,handleTlsOptionChanged:a}){return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.h8q,{description:n?"Learn More":void 0,disabled:t,id:"tlsCAFile",dataTestId:"tlsCAFile-input",label:"Certificate Authority (.pem)",link:n?"https://docs.mongodb.com/manual/reference/connection-string/#mongodb-urioption-urioption.tlsCAFile":void 0,mode:"open",onChange:e=>{a("tlsCAFile",e?.[0]??null)},showFileOnNewLine:!0,values:e?[e]:void 0,optional:!0})))},Se=(0,i.AHW)({marginTop:i.YKD[100]}),ke=(0,i.AHW)({color:i.MFm.gray.light1}),we=[{value:"DEFAULT",label:"Default"},{value:"ON",label:"On"},{value:"OFF",label:"Off"}],xe=function({connectionStringUrl:e,updateConnectionFormField:t}){const n=function(e){const t=e.typedSearchParams();return null===t.get("ssl")&&null===t.get("tls")?"DEFAULT":"true"!==t.get("tls")||null!==t.get("ssl")&&"true"!==t.get("ssl")?"false"!==t.get("tls")||null!==t.get("ssl")&&"false"!==t.get("ssl")?"true"===t.get("ssl")&&null===t.get("tls")?"ON":"false"===t.get("ssl")&&null===t.get("tls")?"OFF":void 0:"OFF":"ON"}(e),a=(0,o.useCallback)((e=>{t({type:"update-tls",tlsOption:e.target.value})}),[t]),s=e.typedSearchParams(),l=[{name:"tlsInsecure",description:"This includes tlsAllowInvalidHostnames and tlsAllowInvalidCertificates.",checked:"true"===s.get("tlsInsecure")},{name:"tlsAllowInvalidHostnames",description:"Disable the validation of the hostnames in the certificate presented by the mongod/mongos instance.",checked:"true"===s.get("tlsAllowInvalidHostnames")},{name:"tlsAllowInvalidCertificates",description:"Disable the validation of the server certificates.",checked:"true"===s.get("tlsAllowInvalidCertificates")}],c="OFF"===n,d=(0,o.useCallback)(((e,n)=>t({type:"update-tls-option",key:e,value:n})),[t]);return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:"tls-radio-box-group"},"SSL/TLS Connection"),r().createElement(i.CAb,{href:"https://docs.mongodb.com/manual/reference/connection-string/#tls-options","aria-label":"TLS/SSL Option Documentation"}),r().createElement(i.E99,{id:"tls-radio-box-group",value:n||"",onChange:a},we.map((e=>r().createElement(i.VCA,{id:`connection-tls-enabled-${e.value}-radio-button`,"data-testid":`connection-tls-enabled-${e.value}-radio-button`,value:e.value,key:e.value},e.label))))),r().createElement(Ee,{tlsCAFile:s.get("tlsCAFile"),disabled:c,handleTlsOptionChanged:d}),r().createElement(Ce,{tlsCertificateKeyFile:s.get("tlsCertificateKeyFile"),tlsCertificateKeyFilePassword:s.get("tlsCertificateKeyFilePassword"),disabled:c,updateTLSClientCertificate:e=>{d("tlsCertificateKeyFile",e)},updateTLSClientCertificatePassword:e=>{d("tlsCertificateKeyFilePassword",e)}}),l.map((e=>r().createElement(i.GEW,{key:e.name},r().createElement(i.Sc0,{onChange:t=>{d(e.name,t.target.checked?"true":null)},"data-testid":`${e.name}-input`,id:`${e.name}-input`,label:r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:`${e.name}-input`},e.name),r().createElement(i.VYo,{className:(0,i.cx)(Se,{[ke]:c})},e.description)),disabled:c,checked:e.checked})))))},Ae=(0,i.AHW)({marginLeft:i.YKD[200],display:"block"}),De=function({autoEncryptionOptions:e,errors:t,kmsProviders:n,fields:a}){const o=n.some((t=>a.some((({value:n})=>n(e,t))))),s=n.some((t=>a.some((({value:n,optional:a})=>!a&&!n(e,t)))));return n.some((()=>a.some((({state:e})=>"error"===("string"==typeof e?e:e(t))))))?r().createElement("span",{title:"Error"},r().createElement(i.Int,{glyph:"XWithCircle",className:Ae,style:{color:i.MFm.red.base}})):o&&s?r().createElement("span",{title:"Incomplete configuration"},r().createElement(i.Int,{glyph:"QuestionMarkWithCircle",className:Ae})):o?r().createElement("span",{title:"Fully configured"},r().createElement(i.Int,{glyph:"CheckmarkWithCircle",className:Ae,style:{color:i.MFm.green.dark1}})):r().createElement(r().Fragment,null)},Ie=function({updateConnectionFormField:e,autoEncryptionOptions:t,kmsProviderName:n,clientCertIsOptional:a}){const i=t.tlsOptions?.[n]??{},s=(0,o.useCallback)(((t,a)=>e({type:"update-csfle-kms-tls-param",kmsProviderName:n,key:t,value:a})),[e,n]);return r().createElement(r().Fragment,null,r().createElement(Ee,{tlsCAFile:i.tlsCAFile,disabled:!1,handleTlsOptionChanged:(e,t)=>s(e,t??void 0),displayDatabaseConnectionUserHints:!1}),r().createElement(Ce,{tlsCertificateKeyFile:i.tlsCertificateKeyFile,tlsCertificateKeyFilePassword:i.tlsCertificateKeyFilePassword,disabled:!1,updateTLSClientCertificate:e=>{s("tlsCertificateKeyFile",e??void 0)},updateTLSClientCertificatePassword:e=>{s("tlsCertificateKeyFilePassword",e??void 0)},displayDatabaseConnectionUserHints:!1,optional:a??!0}))},Me=(0,i.AHW)({marginTop:i.YKD[400]}),Te=function({kmsProviderName:e,connectionOptions:t,handleFieldChanged:n}){const a=(0,o.useMemo)((()=>{const n=t.fleOptions?.autoEncryption??{};return n.kmsProviders?.[e]}),[t.fleOptions?.autoEncryption,e]),[s,l]=(0,o.useState)("");return r().createElement("div",null,r().createElement(i.GEW,null,r().createElement(i.$nd,{"data-testid":"generate-local-key-button",variant:i.AkO.Default,disabled:Number(a?.key?.length||0)>0,onClick:function(){const e=crypto.getRandomValues(S.alloc(96)).toString("base64");l(e),n("key",e)}},"Generate Random Key"),s===a?.key&&r().createElement(r().Fragment,null,r().createElement("div",{className:Me},r().createElement(i.lZ$,{variant:i.uAY.Info},"This key will be used to encrypt data stored in the database. Without it, encrypted data cannot be accessed.")),!t?.fleOptions?.storeCredentials&&r().createElement("div",{className:Me},r().createElement(i.lZ$,{variant:i.uAY.Warning},"Compass does not save KMS credentials by default. Copy and save the key in an external location.")))))},Le=function({updateConnectionFormField:e,connectionOptions:t,errors:n,kmsProviderType:a,kmsProviderName:s,fields:l,clientCertIsOptional:c,noTLS:d}){const u=t.fleOptions?.autoEncryption??{},m=(0,o.useCallback)(((t,n)=>e({type:"update-csfle-kms-param",kmsProviderName:s,key:t,value:n})),[e,s]);return r().createElement(r().Fragment,null,l.map((({name:e,label:t,type:o,optional:l,value:c,errorMessage:d,state:p,description:h})=>{const g="textarea"===o?i.fs1:i.ksK;return r().createElement(i.GEW,{key:e},r().createElement(g,{onChange:({target:{value:t}})=>{m(e,t)},name:e,"data-testid":`csfle-kms-${a}-${e}`,label:t,type:"textarea"===o?void 0:o,optional:"textarea"===o?void 0:l,value:c(u,s),errorMessage:d?.(n,s),state:"string"==typeof p?p:p(n),spellCheck:!1,description:h}))})),!d&&r().createElement(Ie,{kmsProviderName:s,autoEncryptionOptions:u,updateConnectionFormField:e,clientCertIsOptional:c}),"local"===a&&r().createElement(Te,{kmsProviderName:s,connectionOptions:t,handleFieldChanged:m}))},Oe=(0,i.AHW)({marginTop:i.YKD[200],marginBottom:i.YKD[200]}),Ne=(0,i.AHW)({display:"flex",alignItems:"center",gap:i.YKD[100]}),_e=(0,i.AHW)({marginTop:i.YKD[100],marginBottom:i.YKD[100]}),Fe=(0,i.AHW)({marginLeft:"auto"});function Pe({kmsProviderName:e,kmsProviderType:t,validateName:n,onRename:a}){const[s,l]=(0,o.useState)(!1),[c,d]=(0,o.useState)(),[u,m]=(0,o.useState)((()=>e.replace(new RegExp(`^${t}:?`),""))),p=(0,o.useCallback)((()=>{l(!0)}),[]),h=(0,o.useCallback)((e=>{m(e),d(n(e))}),[d,n]),g=(0,o.useCallback)((()=>{c||(l(!1),a(""===u?t:`${t}:${u}`))}),[t,u,a,c]);return s?r().createElement("div",null,r().createElement(i.JU7,{htmlFor:e},"KMS Name"),r().createElement("div",{className:Ne},r().createElement(i.nBu,null,t,":"),r().createElement(i.ksK,{spellCheck:!1,onChange:({target:{value:e}})=>{h(e)},id:e,onBlur:g,"data-testid":"csfle-kms-card-name","aria-label":"KMS Name",type:"text",state:c?"error":"none",errorMessage:c,value:u,onKeyPress:e=>{"Enter"===e.key&&(e.preventDefault(),g())}}))):r().createElement("div",null,r().createElement(i.JU7,{htmlFor:"kms-name"},"KMS Name"),r().createElement("div",{className:(0,i.cx)(Ne,_e)},r().createElement(i.nBu,null,e),r().createElement(i.K0,{"data-testid":"csfle-edit-kms-name","aria-label":"Edit KMS provider name",onClick:p},r().createElement(i.Int,{glyph:"Edit"}))))}const We=function({kmsProviderName:e,kmsProviderNames:t,updateConnectionFormField:n,connectionOptions:s,errors:l,kmsProviderType:c,fields:d,clientCertIsOptional:u,noTLS:m,index:p}){const[h,g]=(0,i.v69)(),f=(0,o.useCallback)((t=>n({type:"rename-csfle-kms-provider",name:e,newName:t})),[e,n]),y=(0,o.useCallback)((()=>n({type:"remove-csfle-kms-provider",name:e})),[n,e]),b=(0,o.useCallback)((n=>{const a=t.filter((t=>t!==e)),o=""===n?c:`${c}:${n}`;if(""===n&&a.some((e=>e===o)))return"Name cannot be empty";if(a.includes(o))return"Name already exists";const r=new RegExp(`^${c}(:[a-zA-Z0-9_]+)?$`);return o.match(r)?void 0:"Name must be alphanumeric and may contain underscores"}),[t,e,c]);return r().createElement(i.ZpM,(0,a.A)({"data-card-index":p,"data-testid":`${e}-kms-card-item`,className:Oe},h),r().createElement("div",{"data-testid":"kms-card-header",className:Ne},r().createElement(Pe,{kmsProviderName:e,kmsProviderType:c,onRename:f,validateName:b}),t.length>1&&g&&r().createElement(i.K0,{"aria-label":"Remove KMS provider",className:Fe,onClick:y},r().createElement(i.Int,{glyph:"Trash"}))),r().createElement(Le,{key:e,errors:l,connectionOptions:s,updateConnectionFormField:n,kmsProviderType:c,kmsProviderName:e,fields:d,clientCertIsOptional:u,noTLS:m}))},Re=(0,i.AHW)({display:"flex",alignItems:"center"}),Ue=(0,i.AHW)({marginLeft:"auto"});function $e(e,t=[]){if(0===t.length)return e;const n=t.map((t=>t.replace(new RegExp(`^${e}:?`),""))).map((e=>parseInt(e,10))).filter((e=>!isNaN(e))),a=Math.max(0,...n)+1;return`${e}:${a}`}const Ve=function({updateConnectionFormField:e,connectionOptions:t,kmsProviderType:n,kmsProviderNames:s,...l}){const c=(0,o.useCallback)((t=>e({type:"add-new-csfle-kms-provider",name:t})),[e]);return r().createElement(r().Fragment,null,s.map(((o,i)=>r().createElement(We,(0,a.A)({key:i,index:i,connectionOptions:t,updateConnectionFormField:e,kmsProviderType:n,kmsProviderName:o,kmsProviderNames:s},l)))),r().createElement("div",{className:Re},r().createElement(i.$nd,{"data-testid":"csfle-add-new-kms-provider-button",className:Ue,variant:"primaryOutline",onClick:()=>{c($e(n,s))}},r().createElement(i.Int,{size:"xsmall",glyph:"Plus"}),"Add item")))};var He=n(80223);const Ke=(0,i.AHW)({padding:i.YKD[400],width:"100%"}),je={"$compass.rawText":"{\n/**\n * // Client-side encrypted fields map configuration:\n * 'database.collection': {\n * fields: [\n * {\n * keyId: UUID(\"...\"),\n * path: '...',\n * bsonType: '...',\n * queries: [{ queryType: 'equality' }]\n * }\n * ]\n * }\n */\n}\n"},Be="encrypted-fields-map-editor-id",ze=function({encryptedFieldsMap:e,errorMessage:t,label:n,description:a,onChange:s}){const[l,c]=(0,o.useState)((()=>function(e){if(!e)return"";if(e["$compass.rawText"])return e["$compass.rawText"];const t=Object.fromEntries(Object.entries(e).filter((([e])=>!e.startsWith("$compass."))));return(0,C.AO)(t)||""}(e??je)));return r().createElement("div",{"data-testid":"connection-csfle-encrypted-fields-map"},r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:Be},n),r().createElement(i.VYo,null,a),r().createElement(He.Jn,{"data-testid":"encrypted-fields-map-editor",id:Be,text:l,onChangeText:e=>{c(e),s(A(e))}})),t&&r().createElement("div",{className:Ke},r().createElement(i.lZ$,{variant:"danger"},t)))},Ye={},qe={local:[{name:"key",label:"Key",type:"text",optional:!1,value:(e,t)=>e?.kmsProviders?.[t]?.key?.toString("base64")??"",errorMessage:(e,t)=>T(e,`${t}.key`),state:e=>L(e,"local.key")?"error":"none",description:"A 96-byte long base64-encoded string. Locally managed keys do not require additional setup, but are not recommended for production applications."}],azure:[{name:"tenantId",label:"Tenant ID",type:"text",optional:!1,value:(e,t)=>(e?.kmsProviders?.[t]??Ye)?.tenantId??"",state:"none",description:"The tenant ID identifies the organization for the account."},{name:"clientId",label:"Client ID",type:"text",optional:!1,value:(e,t)=>(e?.kmsProviders?.[t]??Ye)?.clientId??"",state:"none",description:"The client ID to authenticate a registered application."},{name:"clientSecret",label:"Client Secret",type:"password",optional:!1,value:(e,t)=>(e?.kmsProviders?.[t]??Ye)?.clientSecret??"",state:"none",description:"The client secret to authenticate a registered application."},{name:"identityPlatformEndpoint",label:"Identity Platform Endpoint",type:"text",optional:!0,value:(e,t)=>(e?.kmsProviders?.[t]??Ye)?.identityPlatformEndpoint??"",state:"none",description:"A host with an optional port."}],gcp:[{name:"email",label:"Service Account E-Mail",type:"text",optional:!1,value:(e,t)=>(e?.kmsProviders?.[t]??Ye)?.email??"",state:"none",description:"The service account email to authenticate."},{name:"privateKey",label:"Private Key",type:"textarea",optional:!1,value:(e,t)=>(e?.kmsProviders?.[t]??Ye)?.privateKey?.toString("base64")??"",state:"none",description:"A base64-encoded PKCS#8 private key."},{name:"endpoint",label:"Endpoint",type:"text",optional:!0,value:(e,t)=>(e?.kmsProviders?.[t]??Ye)?.endpoint??"",state:"none",description:"A host with an optional port."}],aws:[{name:"accessKeyId",label:"Access Key ID",type:"text",optional:!1,value:(e,t)=>e?.kmsProviders?.[t]?.accessKeyId??"",state:"none",description:"The access key used for the AWS KMS provider."},{name:"secretAccessKey",label:"Secret Access Key",type:"password",optional:!1,value:(e,t)=>e?.kmsProviders?.[t]?.secretAccessKey??"",state:"none",description:"The secret access key used for the AWS KMS provider."},{name:"sessionToken",label:"Session Token",type:"password",optional:!0,value:(e,t)=>e?.kmsProviders?.[t]?.sessionToken??"",state:"none",description:"An optional AWS session token that will be used as the X-Amz-Security-Token header for AWS requests."}],kmip:[{name:"endpoint",label:"Endpoint",type:"text",optional:!1,value:(e,t)=>e?.kmsProviders?.[t]?.endpoint??"",errorMessage:e=>T(e,"kmip.endpoint"),state:e=>L(e,"kmip.endpoint")?"error":"none",description:"The endpoint consists of a hostname and port separated by a colon."}]},Ge=(0,i.AHW)({paddingLeft:i.YKD[400],marginBottom:i.YKD[400]}),Ze=[{title:"Local KMS",kmsProviderType:"local",noTLS:!0},{title:"AWS",kmsProviderType:"aws"},{title:"GCP",kmsProviderType:"gcp"},{title:"Azure",kmsProviderType:"azure"},{title:"KMIP",kmsProviderType:"kmip",clientCertIsOptional:!1}],Je=(0,i.AHW)({marginTop:i.YKD[400]}),Qe=(0,i.AHW)({display:"flex",alignItems:"center",gap:i.YKD[50]}),Xe=function({connectionOptions:e,updateConnectionFormField:t,errors:n}){const s=e.fleOptions?.autoEncryption??{},l=ue("enableDebugUseCsfleSchemaMap"),c=M(n,"csfle"),d=(0,o.useCallback)(((e,n)=>t({type:"update-csfle-param",key:e,value:n})),[t]),u=(0,o.useCallback)((e=>t({type:"update-csfle-store-credentials",value:e})),[t]),m=(0,o.useCallback)(((n,a)=>{const o=Object.keys(e.fleOptions?.autoEncryption?.kmsProviders??{}).some((e=>e.startsWith(n)));if(a&&!o)return t({type:"add-new-csfle-kms-provider",name:$e(n)})}),[t,e.fleOptions?.autoEncryption?.kmsProviders]),p=(0,o.useMemo)((()=>Object.keys(e.fleOptions?.autoEncryption?.kmsProviders??{}).reduce(((e,t)=>{const n=t.split(":")[0];return e[n]||(e[n]=[]),e[n].push(t),e}),{})),[e.fleOptions?.autoEncryption?.kmsProviders]);return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.lZ$,null,"In-Use Encryption is an Enterprise/Atlas-only feature of MongoDB. ",r().createElement(i.N_E,{href:"https://dochub.mongodb.org/core/rqe-encrypted-fields"},"Learn More"))),r().createElement(i.GEW,null,r().createElement(i.ksK,{onChange:({target:{value:e}})=>{d("keyVaultNamespace",e)},name:"csfle-keyvault","data-testid":"csfle-keyvault",label:"Key Vault Namespace",type:"text",optional:!1,value:s.keyVaultNamespace||"",errorMessage:T(c,"keyVaultNamespace"),state:L(c,"keyVaultNamespace")?"error":"none",spellCheck:!1,description:"Specify a collection in which data encryption keys are stored in the format <db>.<collection>."})),r().createElement(i.GEW,null,r().createElement(i.nBu,{weight:"medium"},"KMS Providers"),r().createElement(i.VYo,null,"Specify one or more Key Management Systems to use.")),r().createElement(i.GEW,null,r().createElement(i.Sc0,{onChange:e=>{u(e.target.checked)},"data-testid":"csfle-store-credentials-input",id:"csfle-store-credentials-input",label:r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:"csfle-store-credentials-input"},"Store KMS provider secrets"),r().createElement(i.VYo,null,"Control whether KMS secrets are stored on disk (protected by the OS keychain) or discarded after disconnecting.")),checked:e?.fleOptions?.storeCredentials})),r().createElement(i.GEW,null,Ze.map((({title:n,kmsProviderType:o,...l})=>{const d=r().createElement("span",{className:Qe},n,(p[o]?.length??0)>1&&r().createElement("span",null,"(",p[o]?.length,")"),r().createElement(De,{errors:c,autoEncryptionOptions:s,kmsProviders:p[o]??[],fields:qe[o]}));return r().createElement("div",{className:Je,key:o},r().createElement(i.nD3,{setOpen:e=>m(o,e),"data-testid":`csfle-kms-provider-${o}`,text:d},r().createElement("div",{className:Ge},r().createElement(Ve,(0,a.A)({errors:c,connectionOptions:e,updateConnectionFormField:t,kmsProviderType:o,fields:qe[o],kmsProviderNames:p[o]??[]},l)))))}))),r().createElement(i.GEW,null,r().createElement(ze,{label:"EncryptedFieldsMap",description:"Add an optional client-side EncryptedFieldsMap for enhanced security.",encryptedFieldsMap:s?.encryptedFieldsMap,errorMessage:T(c,"encryptedFieldsMap"),onChange:e=>{d("encryptedFieldsMap",e)}})),l&&r().createElement(i.GEW,null,r().createElement(ze,{label:"SchemaMap",description:"Debug: SchemaMap",encryptedFieldsMap:s?.schemaMap,errorMessage:T(c,"schemaMap"),onChange:e=>{d("schemaMap",e)}})))},et=[{title:"Connection Timeout Options",values:["connectTimeoutMS","socketTimeoutMS"]},{title:"Compression Options",values:["compressors","zlibCompressionLevel"]},{title:"Connection Pool Options",values:["maxPoolSize","minPoolSize","maxIdleTimeMS","waitQueueMultiple","waitQueueTimeoutMS"]},{title:"Write Concern Options",values:["w","wtimeoutMS","journal"]},{title:"Read Concern Options",values:["readConcernLevel"]},{title:"Read Preferences Options",values:["maxStalenessSeconds","readPreferenceTags"]},{title:"Server Options",values:["localThresholdMS","serverSelectionTimeoutMS","serverSelectionTryOnce","heartbeatFrequencyMS"]},{title:"Miscellaneous Configuration",values:["appName","retryReads","retryWrites","srvMaxHosts","uuidRepresentation","enableUtf8Validation"]}],tt=(0,i.AHW)({display:"flex",gap:i.YKD[200],alignItems:"center"}),nt=(0,i.AHW)({display:"inline-block",flexGrow:1}),at=(0,i.AHW)({display:"inline-block"});function ot(e){return!e.length||e[e.length-1].name?[...e,{name:void 0,value:void 0}]:e}function rt(e){let t=[];const n=[],a=e.typedSearchParams();return et.forEach((({values:e})=>t=t.concat(e))),a.forEach(((e,a)=>{t.includes(a)&&n.push({value:e,name:a})})),n}const it=function({updateConnectionFormField:e,connectionStringUrl:t}){const[n,a]=r().useState((()=>ot(rt(t))));(0,i.wTI)((()=>{const e=ot(rt(t));a(e)}),[t]);const s=(t,o,r)=>{const i=n.findIndex((e=>e.name===t)),s={name:o,value:r},l=[...n];l[i]=s,a(ot(l)),o&&e({type:"update-search-param",currentKey:t??o,newKey:t===o?void 0:o,value:r??""})},l=(0,o.useCallback)((t=>{const a=n[t].name;a&&([...n].splice(t-1,1),e({type:"delete-search-param",key:a}))}),[n,e]);return r().createElement(i.qQS,{items:n,renderItem:(e,n)=>r().createElement("div",{className:tt,"data-testid":`url-option-entry-${n}`},r().createElement(i.l6P,{id:"select-key",className:nt,placeholder:"Select key",name:"select-url-options-key-name","aria-labelledby":e.name?`${e.name} select`:"new option select",onChange:(t,n)=>{n.preventDefault(),s(e.name,t,e.value)},allowDeselect:!1,value:e.name??""},et.map((({title:n,values:a})=>r().createElement(i.zQr,{key:n,label:n},a.map((n=>r().createElement(i.c$x,{key:n,value:n,disabled:t.searchParams.has(n)&&e.name!==n},n))))))),r().createElement(i.ksK,{onChange:t=>{t.preventDefault(),s(e.name,e.name,t.target.value)},"data-testid":e.name?`${e.name}-input-field`:"new-option-input-field",spellCheck:!1,type:"text",placeholder:"Value","aria-label":e.name?`${e.name} Value`:"URL Option Value",value:e.value,className:at})),disableAddButton:()=>!0,onAddItem:()=>{},disableRemoveButton:e=>!e.name,onRemoveItem:l,removeButtonTestId:"connection-url-options-remove-button"})},st=(0,i.AHW)({marginTop:i.YKD[400]}),lt=(0,i.AHW)({marginTop:i.YKD[100],marginBottom:i.YKD[200]}),ct=function({updateConnectionFormField:e,connectionStringUrl:t}){return r().createElement("div",{className:st,"data-testid":"url-options"},r().createElement(i.nBu,{weight:"medium"},"URI Options"),r().createElement(i.VYo,{className:lt},"Add additional MongoDB URI options to customize your connection. ",r().createElement(i.N_E,{href:"https://docs.mongodb.com/manual/reference/connection-string/#connection-string-options"},"Learn More")),r().createElement(it,{connectionStringUrl:t,updateConnectionFormField:e}))},dt="defaultReadPreference",ut=[{title:"Primary",id:"primary"},{title:"Primary Preferred",id:"primaryPreferred"},{title:"Secondary",id:"secondary"},{title:"Secondary Preferred",id:"secondaryPreferred"},{title:"Nearest",id:"nearest"}],mt=function({updateConnectionFormField:e,connectionStringUrl:t}){const{searchParams:n,pathname:a}=t,s=n.get("readPreference"),l=n.get("replicaSet"),c=a.startsWith("/")?a.substr(1):a,d=(0,o.useCallback)(((t,n)=>e(n?{type:"update-search-param",currentKey:t,value:n}:{type:"delete-search-param",key:t})),[e]),u=(0,o.useCallback)((t=>e({type:"update-connection-path",value:t})),[e]);return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:"read-preferences"},"Read Preference"),r().createElement(i.E99,{onChange:({target:{value:e}})=>{d("readPreference",e===dt?void 0:e)},value:s??dt,"data-testid":"read-preferences",id:"read-preferences",size:"compact"},r().createElement(i.VCA,{id:"default-preference-button","data-testid":"default-preference-button",key:"defaultReadPreference",value:dt,checked:!s},"Default"),ut.map((({title:e,id:t})=>r().createElement(i.VCA,{id:`${t}-preference-button`,"data-testid":`${t}-preference-button`,checked:s===t,value:t,key:t},e))))),r().createElement(i.GEW,null,r().createElement(i.ksK,{spellCheck:!1,onChange:({target:{value:e}})=>{d("replicaSet",e)},name:"replica-set","data-testid":"replica-set",label:"Replica Set Name",type:"text",optional:!0,value:l??""})),r().createElement(i.GEW,null,r().createElement(i.ksK,{spellCheck:!1,onChange:({target:{value:e}})=>{u(e)},name:"default-database","data-testid":"default-database",label:"Default Authentication Database",type:"text",optional:!0,value:c??"",description:"Authentication database used when authSource is not specified."})),r().createElement(i.GEW,null,r().createElement(ct,{connectionStringUrl:t,updateConnectionFormField:e})))},pt="localhost",ht=27017,gt=`mongodb://${pt}:${ht}`,ft=22,yt=(0,i.AHW)({marginTop:i.YKD[200]}),bt=(0,i.AHW)({"& > :last-child":{marginBottom:0}}),vt=(0,i.AHW)({position:"relative","&::after":{position:"absolute",top:-i.YKD[200],right:-i.YKD[200],content:'""',width:i.YKD[200],height:i.YKD[200],borderRadius:"50%",backgroundColor:i.MFm.red.base}}),Ct=function({errors:e,updateConnectionFormField:t,connectionOptions:n,openSettingsModal:a}){const[s,c]=(0,o.useState)(0),d=ue("showCSFLE"),u=[{name:"General",id:"general",component:ne},{name:"Authentication",id:"authentication",component:ge},{name:"TLS/SSL",id:"tls",component:xe},{name:"Proxy/SSH",id:"proxy",component:ve},...d?[{name:"In-Use Encryption",id:"csfle",component:Xe}]:[],{name:"Advanced",id:"advanced",component:mt}],m=(0,o.useMemo)((()=>{try{return new l.Ay(n.connectionString,{looseValidation:!0})}catch{return new l.Ay(gt)}}),[n]);return r().createElement(i.tUM,{className:yt,onValueChange:c,value:s,"aria-label":"Advanced Options Tabs"},u.map(((o,s)=>{const l=o.component,c=M(e,o.id),d=c.length>0;return r().createElement(i.ozo,{key:s,name:r().createElement("div",{className:(0,i.cx)({[vt]:d})},o.name),"aria-label":`${o.name}${c.length>0?` (${c.length} error${c.length>1?"s":""})`:""}`,type:"button","data-testid":`connection-${o.id}-tab`,"data-has-error":d},r().createElement("div",{"aria-label":o.name,className:bt},r().createElement(l,{errors:e,connectionStringUrl:m,updateConnectionFormField:t,connectionOptions:n,openSettingsModal:a})))})))},Et=(0,i.AHW)({position:"absolute",top:0,bottom:-i.YKD[100],left:-i.YKD[100],right:-i.YKD[100],backgroundColor:(0,i.B3q)(i.MFm.white,.5),zIndex:1,cursor:"not-allowed"}),St=(0,i.AHW)({position:"relative"}),kt=function({disabled:e,errors:t,updateConnectionFormField:n,connectionOptions:a,open:o,setOpen:s,openSettingsModal:l}){return r().createElement(i.nD3,{"data-testid":"advanced-connection-options",text:"Advanced Connection Options",open:o,setOpen:s},r().createElement("div",{className:St},e&&r().createElement("div",{className:Et,title:"The connection form is disabled when the connection string cannot be parsed."}),r().createElement(Ct,{errors:t,updateConnectionFormField:n,connectionOptions:a,openSettingsModal:l})))},wt=(0,i.AHW)({paddingLeft:i.YKD[600],paddingRight:i.YKD[600]}),xt=(0,i.AHW)({marginTop:i.YKD[400],"&:last-child":{marginBottom:i.YKD[400]}}),At=(0,i.AHW)({display:"flex",justifyContent:"flex-end",gap:i.YKD[200]}),Dt=(0,i.AHW)({flexGrow:1,display:"flex",justifyContent:"flex-end"});function It({errors:e,warnings:t,onCancel:n,onSave:a,onSaveAndConnect:o,onConnect:s}){const l=ue("saveAndConnectLabel");return r().createElement("div",{className:(0,i.cx)(wt)},t.length>0&&r().createElement("div",{className:xt},r().createElement(i.rpn,{"data-testid":"connection-warnings-summary",warnings:t.map((e=>e.message))})),e.length>0&&r().createElement("div",{className:xt},r().createElement(i.dFH,{"data-testid":"connection-error-summary",errors:e.map((e=>e.message))})),r().createElement("div",{className:(0,i.cx)(xt,At)},n&&r().createElement(i.$nd,{"data-testid":"cancel-button",variant:i.AkO.Default,disabled:!1,onClick:n},"Cancel"),a&&r().createElement("div",{className:Dt},r().createElement(i.$nd,{"data-testid":"save-button",variant:o?i.AkO.PrimaryOutline:i.AkO.Primary,disabled:!1,onClick:a},"Save")),s&&r().createElement(i.$nd,{"data-testid":"connect-button",variant:i.AkO.PrimaryOutline,onClick:s},"Connect"),o&&r().createElement(i.$nd,{"data-testid":s?"save-and-connect-button":"connect-button",variant:i.AkO.Primary,onClick:o},l)))}const Mt=/[@/]/,Tt=/[:@,/]/;function Lt({browserCommandForOIDCAuth:e,notifyDeviceFlow:t}){return n=>{const a=e;return{...(0,s.cloneDeep)(n),oidc:{...(0,s.cloneDeep)(n.oidc),...a?{openBrowser:{command:a}}:{},...t?{notifyDeviceFlow:t}:{}}}}}function Ot({defaultAppName:e,telemetryAnonymousId:t,connectionId:n,isAtlas:a}){return o=>{const r=new l.QZ(o.connectionString),i=r.typedSearchParams();if(!i.has("appName")&&void 0!==e){const l=a?`${e}${t?`--${t}`:""}--${n}`:e;i.set("appName",l),o={...(0,s.cloneDeep)(o),connectionString:r.toString()}}return o}}function Nt(e){return"username"===e||"password"===e}function _t(e=[]){return t=>{const n=new l.QZ(t.connectionString);for(const[t]of e)Nt(t)||n.searchParams.delete(t);for(const[t,a]of e)Nt(t)?n[t]=encodeURIComponent(a):n.searchParams.append(t,a);return{...t,connectionString:n.toString()}}}function Ft(e,t){switch(t.type){case"set-connection-form-state":return{...e,...t.newState};case"set-enable-editing-connection-string":return{...e,enableEditingConnectionString:t.enableEditing};case"set-form-errors":return{...e,errors:t.errors}}}function Pt(e){const[t,n]=oe(e);return[t,n?[{fieldName:"connectionString",fieldTab:"general",message:n.message}]:[]]}function Wt(e){const[,t]=Pt(e.connectionOptions.connectionString);let n=!1;try{const t=new l.Ay(e.connectionOptions.connectionString),a=new l.Ay(gt);n=t.href===a.href}catch{}const a=n&&!e.lastUsed;return{errors:t,enableEditingConnectionString:a,allowEditingIfProtected:a,warnings:t?.length?[]:U(e.connectionOptions),connectionOptions:D((0,s.cloneDeep)(e.connectionOptions)),isDirty:!1,personalizationOptions:{color:e.favorite?.color||void 0,name:e.favorite?.name||"",isNameDirty:!!e.favorite?.name,isFavorite:"favorite"===e.savedConnectionType}}}function Rt(e,t,n){if(!function(e){return"update-connection-personalization"===e.type}(e)){if(!t.isNameDirty&&n)try{const e=new l.Ay(n).hosts.join(",");return{...t,name:e}}catch{}return t}const a=e.isNameDirty||t.isNameDirty;return{name:void 0!==e.name?e.name:t.name,color:e.color||t.color,isFavorite:e.isFavorite,isNameDirty:a}}function Ut(e,t,n){if("update-connection-string"===e.type){const[a,o]=Pt(e.newConnectionStringValue);return{connectionOptions:{...t,connectionString:a?.toString()||e.newConnectionStringValue},personalizationOptions:Rt(e,n,a?.toString()||""),errors:o}}const[a,o]=Pt(t.connectionString);if(!a)return{connectionOptions:t,personalizationOptions:Rt(e,n,void 0),errors:o};const r=a.typedSearchParams();switch(e.type){case"update-connection-personalization":return{connectionOptions:{...t,connectionString:a.toString()},personalizationOptions:Rt(e,n,a.toString())};case"add-new-host":{const{fieldIndexToAddAfter:n}=e,o=function(e,t){if(e.length<1)return`${pt}:${ht}`;const n=e[t],a=n.includes(":")?n.slice(0,n.indexOf(":")):n,o=(function(e){return e.includes(":")&&!isNaN(Number(e.slice(e.indexOf(":")+1)))}(r=n)?Number(r.slice(r.indexOf(":")+1))||27017:ht)+1;var r;return`${a||pt}:${o}`}(a.hosts,n);return a.hosts.splice(n+1,0,o),r.get("directConnection")&&r.delete("directConnection"),{connectionOptions:{...t,connectionString:a.toString()}}}case"remove-host":{const{fieldIndexToRemove:n}=e;return a.hosts.splice(n,1),1!==a.hosts.length||a.hosts[0]||(a.hosts[0]=`${pt}:${ht}`),{connectionOptions:{...t,connectionString:a.toString()}}}case"update-tls":return function({action:e,connectionStringUrl:t,connectionOptions:n}){const a=t.clone(),o=a.typedSearchParams();return"ON"===e.tlsOption?(o.delete("ssl"),o.set("tls","true")):"OFF"===e.tlsOption?(o.delete("ssl"),o.set("tls","false")):"DEFAULT"===e.tlsOption&&(o.delete("ssl"),o.delete("tls")),{connectionOptions:{...(0,s.cloneDeep)(n),connectionString:a.toString()}}}({action:e,connectionStringUrl:a,connectionOptions:t});case"update-tls-option":return function({action:e,connectionStringUrl:t,connectionOptions:n}){const a=(0,s.cloneDeep)(n),o=t.clone(),r=o.typedSearchParams();return e.value?(r.delete("ssl"),r.set("tls","true"),r.set(e.key,e.value)):r.delete(e.key),{connectionOptions:{...a,connectionString:o.toString()}}}({action:e,connectionStringUrl:a,connectionOptions:t});case"update-auth-mechanism":return function({action:e,connectionStringUrl:t,connectionOptions:n}){const a=function(e){const t=e.clone(),n=t.typedSearchParams();return n.delete("authMechanism"),t.password="",t.username="",n.delete("authMechanismProperties"),n.delete("gssapiServiceName"),n.delete("authSource"),t}(t),o=a.typedSearchParams();return e.authMechanism&&(o.set("authMechanism",e.authMechanism),["MONGODB-AWS","GSSAPI","PLAIN","MONGODB-X509","MONGODB-OIDC"].includes(e.authMechanism)&&o.set("authSource","$external")),{connectionOptions:{...(0,s.cloneDeep)(n),connectionString:a.toString()}}}({action:e,connectionStringUrl:a,connectionOptions:t});case"update-username":return function({action:e,connectionStringUrl:t,connectionOptions:n}){const a=function(e,t){const n=e.clone();return n.username=encodeURIComponent(t),n}(t,e.username),[,o]=oe(a.toString());return o?{connectionOptions:n,errors:[{fieldName:"username",fieldTab:"authentication",message:o.message}]}:{connectionOptions:{...(0,s.cloneDeep)(n),connectionString:a.toString()}}}({action:e,connectionStringUrl:a,connectionOptions:t});case"update-password":return function({action:e,connectionStringUrl:t,connectionOptions:n}){const a=function(e,t){const n=e.clone();return n.password=encodeURIComponent(t),n}(t,e.password),[,o]=oe(a.toString());return o?{connectionOptions:n,errors:[{fieldName:"password",fieldTab:"authentication",message:o.message}]}:{connectionOptions:{...(0,s.cloneDeep)(n),connectionString:a.toString()}}}({action:e,connectionStringUrl:a,connectionOptions:t});case"update-host":return function({action:e,connectionStringUrl:t,connectionOptions:n}){const{newHostValue:a,fieldIndex:o}=e;try{!function(e,t){const n=(t?Tt:Mt).exec(e);if(n)throw new Error(`Invalid character in host: '${n[0]}'`)}(a,t.isSRV);const e=t.clone();e.hosts[o]=a||"";const r=e.clone();return{connectionOptions:{...(0,s.cloneDeep)(n),connectionString:r.toString()},errors:[]}}catch(e){return{connectionOptions:{...(0,s.cloneDeep)(n),connectionString:t.toString()},errors:[{fieldName:"hosts",fieldTab:"general",fieldIndex:o,message:e.message}]}}}({action:e,connectionStringUrl:a,connectionOptions:t});case"update-connection-scheme":{const{isSrv:n}=e;try{const e=(i=a,n?function(e){if(e.isSRV)return e;const t=e.clone(),n=t.hosts.length>0?t.hosts[0].substring(0,-1===t.hosts[0].indexOf(":")?void 0:t.hosts[0].indexOf(":")):pt;t.hosts=[n],t.protocol="mongodb+srv:";const a=t.typedSearchParams();return a.get("directConnection")&&a.delete("directConnection"),t}(i):function(e){if(!e.isSRV)return e;const t=e.clone();return t.protocol="mongodb:",t.hosts=[`${t.hosts[0]}:${ht}`],t}(i));return{connectionOptions:{...t,connectionString:e.toString()},errors:[]}}catch(e){return{connectionOptions:{...t},errors:[{fieldName:"isSrv",fieldTab:"general",message:`Error updating connection schema: ${e.message}`}]}}}case"update-ssh-options":return function({action:e,connectionOptions:t}){const n=(0,s.cloneDeep)(t),{key:a,value:o}=e;return{connectionOptions:{...n,sshTunnel:{host:"",port:ft,username:"",...n.sshTunnel,[a]:o}}}}({action:e,connectionOptions:t});case"update-search-param":if(e.newKey){const t=e.value??r.get(e.currentKey);r.delete(e.currentKey),r.set(e.newKey,t)}else r.set(e.currentKey,e.value);return{connectionOptions:{...t,connectionString:a.toString()}};case"update-auth-mechanism-property":{const n=ae(a);e.value?n.set(e.key,e.value):n.delete(e.key);const o=n.toString();return o?r.set("authMechanismProperties",o):r.delete("authMechanismProperties"),{connectionOptions:{...t,connectionString:a.toString()}}}case"delete-search-param":return r.delete(e.key),{connectionOptions:{...t,connectionString:a.toString()}};case"update-connection-path":return a.pathname=e.value,{connectionOptions:{...t,connectionString:a.toString()}};case"remove-proxy-options-and-app-proxy":case"remove-proxy-options-and-set-app-proxy":return["proxyHost","proxyPort","proxyPassword","proxyUsername"].forEach((e=>r.delete(e))),{connectionOptions:{...t,connectionString:a.toString(),useApplicationLevelProxy:"remove-proxy-options-and-set-app-proxy"===e.type}};case"remove-ssh-options-and-app-proxy":return{connectionOptions:{...t,sshTunnel:void 0,useApplicationLevelProxy:!1}};case"remove-app-proxy":return{connectionOptions:{...t,useApplicationLevelProxy:!1}};case"update-csfle-store-credentials":return function({action:e,connectionOptions:t}){return t=(0,s.cloneDeep)(t),{connectionOptions:{...t,fleOptions:{...k,...t.fleOptions,storeCredentials:e.value}}}}({action:e,connectionOptions:t});case"update-csfle-param":return function({action:e,connectionOptions:t}){t=(0,s.cloneDeep)(t);const n={...t.fleOptions?.autoEncryption};return e.value?n[e.key]=e.value:delete n[e.key],{connectionOptions:{...t,fleOptions:{...k,...t.fleOptions,autoEncryption:n}}}}({action:e,connectionOptions:t});case"update-csfle-kms-param":return function({action:e,connectionOptions:t}){t=(0,s.cloneDeep)(t);const n=t.fleOptions?.autoEncryption??{},a={...n.kmsProviders?.[e.kmsProviderName]??{}};e.value?a[e.key]=e.value:delete a[e.key];const o=n.kmsProviders??{};return 0===Object.keys(a).length?delete o[e.kmsProviderName]:o[e.kmsProviderName]=a,{connectionOptions:{...t,fleOptions:{...k,...t.fleOptions,autoEncryption:{...n,kmsProviders:o}}}}}({action:e,connectionOptions:t});case"update-csfle-kms-tls-param":return function({action:e,connectionOptions:t}){t=(0,s.cloneDeep)(t);const n=t.fleOptions?.autoEncryption??{},a={...n.tlsOptions?.[e.kmsProviderName]??{}};e.value?a[e.key]=e.value:delete a[e.key];const o=n.tlsOptions??{};return 0===Object.keys(a).length?delete o[e.kmsProviderName]:o[e.kmsProviderName]=a,{connectionOptions:{...t,fleOptions:{...k,...t.fleOptions,autoEncryption:{...n,tlsOptions:o}}}}}({action:e,connectionOptions:t});case"update-oidc-param":return function({action:e,connectionOptions:t}){const n={...(t=(0,s.cloneDeep)(t)).oidc};return e.value?n[e.key]=e.value:delete n[e.key],{connectionOptions:{...t,oidc:{...n}}}}({action:e,connectionOptions:t});case"add-new-csfle-kms-provider":return function({action:e,connectionOptions:t}){t=(0,s.cloneDeep)(t);const n=t.fleOptions?.autoEncryption??{},a=n.kmsProviders??{};return a[e.name]={},{connectionOptions:{...t,fleOptions:{...k,...t.fleOptions,autoEncryption:{...n,kmsProviders:a}}}}}({action:e,connectionOptions:t});case"rename-csfle-kms-provider":return function({action:e,connectionOptions:t}){t=(0,s.cloneDeep)(t);const n=t.fleOptions?.autoEncryption??{},a=I(n.kmsProviders,e.name,e.newName),o=I(n.tlsOptions,e.name,e.newName);return{connectionOptions:{...t,fleOptions:{...k,...t.fleOptions,autoEncryption:{...n,...a&&{kmsProviders:a},...o&&{tlsOptions:o}}}}}}({action:e,connectionOptions:t});case"remove-csfle-kms-provider":return function({action:e,connectionOptions:t}){t=(0,s.cloneDeep)(t);const n=t.fleOptions?.autoEncryption??{},a=n.kmsProviders??{};delete a[e.name];const o=n.tlsOptions??{};return delete o[e.name],{connectionOptions:{...t,fleOptions:{...k,...t.fleOptions,autoEncryption:{...n,kmsProviders:a,tlsOptions:o}}}}}({action:e,connectionOptions:t})}var i}function $t({connectionOptions:e,connectionId:t,defaultAppName:n,notifyDeviceFlow:a,preferences:o}){const r=[D,w,Ot({defaultAppName:n,connectionId:t,isAtlas:(0,v.mu)(e.connectionString),telemetryAnonymousId:o.telemetryAnonymousId}),Lt({browserCommandForOIDCAuth:o.browserCommandForOIDCAuth,notifyDeviceFlow:a}),_t(o.forceConnectionOptions)];for(const t of r)e=t(e);return e}const Vt="color10",Ht={DARK:{ACTIVE:{color1:"#174933",color2:"#084843",color3:"#004074",color4:"#303374",color5:"#48295C",color6:"#611623",color7:"#591C47",color8:"#562800",color9:"#433500",color10:i.MFm.gray.light2},DEFAULT:{color1:"#113B29",color2:"#023B37",color3:"#003362",color4:"#262A65",color5:"#3D224E",color6:"#500F1C",color7:"#4B143D",color8:"#462100",color9:"#362B00",color10:i.MFm.gray.light2}},LIGHT:{ACTIVE:{color1:"#C4E8D1",color2:"#B8EAE0",color3:"#C2E5FF",color4:"#DADCFF",color5:"#EAD5F9",color6:"#FFCDCE",color7:"#F6CEE7",color8:"#FFD19A",color9:"#FFE770",color10:i.MFm.gray.light2},DEFAULT:{color1:"#D6F1DF",color2:"#CCF3EA",color3:"#D5EFFF",color4:"#E6E7FF",color5:"#F2E2FC",color6:"#FFDBDC",color7:"#FBDCEF",color8:"#FFDFB5",color9:"#FFF394",color10:i.MFm.gray.light1}}},Kt={color1:i.MFm.green.dark1,color2:i.MFm.green.light1,color3:i.MFm.blue.base,color4:i.MFm.blue.light1,color5:i.MFm.yellow.base,color6:i.MFm.red.light1,color7:i.MFm.purple.base,color8:i.MFm.purple.light2,color9:i.MFm.gray.base,color10:i.MFm.gray.light1},jt={color1:"Green",color2:"Teal",color3:"Blue",color4:"Iris",color5:"Purple",color6:"Red",color7:"Pink",color8:"Orange",color9:"Yellow",color10:"Gray"},Bt=Object.keys(Kt);function zt(e){return Bt.includes(e)}function Yt(){const e=(0,i.D27)();return{connectionColorToHex:(0,o.useCallback)((t=>{if(t&&zt(t))return e?Ht.DARK.DEFAULT[t]:Ht.LIGHT.DEFAULT[t]}),[e]),connectionColorToHexActive:(0,o.useCallback)((t=>{if(t&&zt(t))return e?Ht.DARK.ACTIVE[t]:Ht.LIGHT.ACTIVE[t]}),[e]),connectionColorToName:(0,o.useCallback)((e=>{if(e&&zt(e))return jt[e]}),[]),connectionColorCodes:()=>Bt.slice(0,9)}}const qt=(0,i.AHW)({backgroundColor:"var(--theme-background-color)",border:"1px solid var(--theme-border-color)",margin:0,marginBottom:i.YKD[400],marginTop:i.YKD[400],padding:i.YKD[600],paddingTop:i.YKD[400],paddingBottom:i.YKD[400],borderRadius:i.YKD[200]}),Gt=(0,i.AHW)({fontSize:"14px"}),Zt=(0,i.AHW)({marginTop:i.YKD[200]}),Jt=(0,i.AHW)({"--theme-background-color":i.MFm.gray.dark3,"--theme-border-color":i.MFm.gray.dark2}),Qt=(0,i.AHW)({"--theme-background-color":i.MFm.gray.light3,"--theme-border-color":i.MFm.gray.light2}),Xt=function(){const e=(0,i.D27)()?Jt:Qt;return r().createElement("div",{className:e},r().createElement("div",{className:qt},r().createElement(i.Pds,{className:Gt},"How do I find my connection string in Atlas?"),r().createElement(i.nBu,{className:Zt},"If you have an Atlas cluster, go to the Cluster view. Click the 'Connect' button for the cluster to which you wish to connect."),r().createElement(i.N_E,{href:"https://docs.atlas.mongodb.com/compass-connection/",target:"_blank"},"See example")),r().createElement("div",{className:qt},r().createElement(i.Pds,{className:Gt},"How do I format my connection string?"),r().createElement(i.N_E,{href:"https://docs.mongodb.com/manual/reference/connection-string/",target:"_blank"},"See example")))},en=(0,i.AHW)({marginTop:i.YKD[200]}),tn=(0,i.AHW)({display:"grid",gridTemplateAreas:'\n "header"\n "content"\n "footer"\n ',gridTemplateRows:"max-content 1fr max-content",minHeight:0,height:"100%"}),nn=(0,i.AHW)({gridArea:"header",paddingTop:i.YKD[600],paddingLeft:i.YKD[600],paddingRight:i.YKD[600]}),an=(0,i.AHW)({position:"relative"}),on=(0,i.AHW)({gridArea:"content",display:"flex",gap:i.YKD[400],paddingLeft:i.YKD[600],paddingRight:i.YKD[600],overflowY:"auto",scrollbarGutter:"stable"}),rn=(0,i.AHW)({minWidth:0,flex:"1 1 auto",paddingLeft:i.YKD[100],"& > :last-child":{paddingBottom:i.YKD[600]}}),sn=(0,i.AHW)({position:"sticky",top:0,flex:"1 1 0px",minWidth:4*i.YKD[1600],maxWidth:5*i.YKD[1600]}),ln=(0,i.AHW)({gridArea:"footer"}),cn=(0,i.AHW)({borderTop:`1px solid ${i.MFm.gray.dark2}`}),dn=(0,i.AHW)({borderTop:`1px solid ${i.MFm.gray.light2}`}),un=(0,i.AHW)({button:{visibility:"hidden"},"&:hover":{button:{visibility:"visible"}}}),mn=(0,i.AHW)({marginTop:i.YKD[400],paddingRight:0}),pn=(0,i.AHW)({display:"flex",gap:i.YKD[400],alignItems:"center"}),hn=(0,i.AHW)({marginBottom:i.YKD[400]}),gn=(0,i.AHW)({height:i.YKD[400],width:i.YKD[400]}),fn=(0,i.cXL)("ColorCircle",(({hexColor:e,...t})=>r().createElement("svg",(0,a.A)({},t,{className:gn,width:i.YKD[400],height:i.YKD[400],viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"}),r().createElement("g",{clipPath:"url(#clip0_756_18092)"},r().createElement("line",{opacity:"0.5",x1:"16.3536",y1:"-0.146447",x2:"0.353554",y2:"15.8536",stroke:"#DB3030"})),r().createElement("rect",{x:"0.5",y:"0.5",width:"15",height:"15",rx:"7.5",stroke:"#889397",fill:e}),r().createElement("defs",null,r().createElement("clipPath",{id:"clip0_756_18092"},r().createElement("rect",{width:"16",height:"16",rx:"8",fill:"white"})))))),yn=(0,i.AHW)({display:"grid",gridTemplateColumns:"1fr 1fr",gridTemplateRows:"auto",gridTemplateAreas:"\n 'name-input color-input'\n 'favorite-marker favorite-marker'\n ",gap:i.YKD[600],marginBottom:i.YKD[600]}),bn=(0,i.AHW)({gridArea:"name-input"}),vn=(0,i.AHW)({gridArea:"color-input"}),Cn=(0,i.AHW)({gridArea:"favorite-marker"});function En({updateConnectionFormField:e,personalizationOptions:t}){const n=ue("showFavoriteActions"),a=(0,o.useCallback)((n=>{e({type:"update-connection-personalization",...t,name:n.target.value,isNameDirty:!0})}),[e,t]),s=(0,o.useCallback)((n=>{e({type:"update-connection-personalization",...t,color:n})}),[e,t]),l=(0,o.useCallback)((n=>{e({type:"update-connection-personalization",...t,isFavorite:n.target.checked})}),[e,t]),{connectionColorToHex:c,connectionColorToName:d,connectionColorCodes:u}=Yt();return r().createElement("div",{className:yn},r().createElement(i.ksK,{className:bn,value:t.name,"data-testid":"personalization-name-input",onChange:a,label:"Name"}),r().createElement(i.l6P,{className:vn,"data-testid":"personalization-color-input",label:"Color",defaultValue:t.color||"no-color",allowDeselect:!1,onChange:s},r().createElement(i.c$x,{glyph:r().createElement(fn,{hexColor:"transparent"}),value:"no-color"},"No Color"),u().map((e=>r().createElement(i.c$x,{key:e,glyph:r().createElement(fn,{hexColor:c(e)}),value:e},d(e))))),n&&r().createElement(i.Sc0,{className:Cn,onChange:l,"data-testid":"personalization-favorite-checkbox",checked:t.isFavorite,label:r().createElement("b",null,"Favorite this connection"),description:"Favoriting a connection will pin it to the top of your list of connections"}))}function Sn({initialConnectionInfo:e,connectionErrorMessage:t,disableEditingConnectedConnection:n=!1,onSaveAndConnectClicked:a,onSaveClicked:c,onConnectClicked:d,onDisconnectClicked:u,onCancel:m,onAdvancedOptionsToggle:p,openSettingsModal:h}){const[g,f]=(0,o.useState)(!1),y=(0,i.D27)(),v=(0,o.useCallback)((e=>{f(e),p?.(e)}),[p]),[{enableEditingConnectionString:C,errors:E,warnings:S,connectionOptions:k,allowEditingIfProtected:w,personalizationOptions:x},{setEnableEditingConnectionString:A,updateConnectionFormField:D,setErrors:I}]=function(e,t){const n=Wt(e),a={...n,enableEditingConnectionString:!ue("protectConnectionStringsForNewConnections")&&n.enableEditingConnectionString},[r,i]=(0,o.useReducer)(Ft,a),l=(0,o.useCallback)((e=>{i({type:"set-form-errors",errors:e})}),[]),c=(0,o.useCallback)((e=>{i({type:"set-enable-editing-connection-string",enableEditing:e})}),[]),d=(0,o.useCallback)((e=>{const t=Ut(e,r.connectionOptions,r.personalizationOptions);i({type:"set-connection-form-state",newState:{...r,errors:[],...t,warnings:t.errors?.length?[]:U(t.connectionOptions),isDirty:!(0,s.isEqual)(t.connectionOptions,r.connectionOptions)}})}),[r]);return function({connectionErrorMessage:e,initialConnectionInfo:t,setErrors:n,dispatch:a}){const r=ue("protectConnectionStringsForNewConnections");(0,o.useEffect)((()=>{const{errors:e,warnings:n,connectionOptions:o,allowEditingIfProtected:i,enableEditingConnectionString:s,personalizationOptions:l}=Wt(t);a({type:"set-connection-form-state",newState:{errors:e,enableEditingConnectionString:!r&&s,warnings:n,connectionOptions:o,isDirty:!1,allowEditingIfProtected:i,personalizationOptions:l}})}),[t,r]),(0,o.useEffect)((()=>{e&&n([{message:e}])}),[n,e])}({connectionErrorMessage:t,initialConnectionInfo:e,setErrors:l,dispatch:i}),[r,{updateConnectionFormField:d,setEnableEditingConnectionString:c,setErrors:l}]}(e,t),M=!!ue("protectConnectionStrings")&&!w,T=C&&!M,L=ue("forceConnectionOptions"),O=(0,o.useMemo)((()=>{if(!L?.length)return S;const e=L.map((([e])=>e));return[...S,{message:`Some connection options have been overridden through settings: ${e.join(", ")}`}]}),[S,L]),_=E.find((e=>"connectionString"===e.fieldName)),R=(0,o.useCallback)((t=>({...(0,s.cloneDeep)(e),connectionOptions:(0,s.cloneDeep)(k),savedConnectionType:x.isFavorite?"favorite":"recent",favorite:{...t||{},name:x.name,color:x.color}})),[e,k,x]),$=(0,o.useCallback)((async e=>{try{await(c?.(e))}catch(e){I([{message:`Unable to save connection: ${e.message}`}])}}),[c,I]),V=(0,o.useCallback)((t=>{const n=(0,s.cloneDeep)(k),o=function(e){const t=new l.Ay(e.connectionString,{looseValidation:!0});return[...N(t),...W(e.fleOptions?.autoEncryption??{}),...e.sshTunnel?F(e.sshTunnel):P(t)]}(n);o.length?I(o):"connect"===t?d?.({...e,...R(),connectionOptions:n}):a?a?.({...e,...R(),connectionOptions:n}):$?.(R())}),[k,I,d,e,R,$,a]),H=ue("showPersonalisationForm"),K=ue("showHelpCardsInForm");return r().createElement(i.ETl,null,r().createElement("form",{role:"form",className:tn,onSubmit:e=>{e.preventDefault(),V()},noValidate:!0},r().createElement("div",{className:nn},r().createElement("div",{className:an},r().createElement(i.H3,{className:un},(e.favorite?.name??"New Connection")||"Edit Connection"),r().createElement(i.VYo,{className:en},"Manage your connection settings"))),r().createElement("div",{className:on},r().createElement("div",{className:rn},n&&u&&r().createElement(i.lZ$,{"data-testid":"disabled-connected-connection-banner",className:mn},r().createElement("div",{className:pn},r().createElement("div",null,"While connected, you may only personalize your connection's name, color or favorite status. To fully configure it, you must first disconnect. Beware that disconnecting might cause work in progress to be lost."),r().createElement("div",null,r().createElement(i.$nd,{size:"small",leftGlyph:r().createElement(i.Int,{glyph:"Disconnect"}),onClick:u},"Disconnect")))),M&&!n&&r().createElement(i.lZ$,{"data-testid":"protect-connection-strings-banner",className:mn},'Advanced Connection Options are hidden while the "Protect Connection String Secrets" setting is enabled. Disable the setting to configure Advanced Connection Options or edit your connection string.'),r().createElement(b,{connectionString:k.connectionString,enableEditingConnectionString:T,disableEditingConnectedConnection:!!n,setEnableEditingConnectionString:A,onSubmit:V,updateConnectionFormField:D,protectConnectionStrings:M}),_&&r().createElement(i.lZ$,{className:hn,variant:i.uAY.Danger},_.message),H&&r().createElement(En,{personalizationOptions:x,updateConnectionFormField:D}),!(M||n)&&r().createElement(kt,{open:g,setOpen:v,errors:_?[]:E,disabled:!(!_&&!n),updateConnectionFormField:D,connectionOptions:k,openSettingsModal:h})),K&&r().createElement("div",{className:sn},r().createElement(Xt,null))),r().createElement("div",{className:(0,i.cx)(ln,y?cn:dn)},r().createElement(It,{errors:_?[]:E,warnings:_?[]:O,onCancel:m,onSave:c?()=>{$?.(R())}:void 0,onConnect:d?()=>V("connect"):void 0,onSaveAndConnect:a?()=>V("save-and-connect"):void 0}))))}const kn=({showFavoriteActions:e,showHelpCardsInForm:t,showPersonalisationForm:n,protectConnectionStrings:a,forceConnectionOptions:i,showKerberosPasswordField:s,showOIDCDeviceAuthFlow:l,enableOidc:c,enableDebugUseCsfleSchemaMap:d,protectConnectionStringsForNewConnections:u,showOIDCAuth:m,showKerberosAuth:p,showCSFLE:h,showProxySettings:g,saveAndConnectLabel:f,...y})=>{const b=(0,o.useMemo)((()=>({showFavoriteActions:e,showHelpCardsInForm:t,showPersonalisationForm:n,protectConnectionStrings:a,forceConnectionOptions:i,showKerberosPasswordField:s,showOIDCDeviceAuthFlow:l,enableOidc:c,enableDebugUseCsfleSchemaMap:d,protectConnectionStringsForNewConnections:u,showOIDCAuth:m,showKerberosAuth:p,showCSFLE:h,showProxySettings:g,saveAndConnectLabel:f})),[e,t,n,a,i,s,l,c,d,u,m,p,h,g,f]);return r().createElement(de.Provider,{value:b},r().createElement(Sn,y))},wn=(0,i.AHW)({width:"960px"});function xn({isOpen:e,setOpen:t,...n}){const[s,l]=(0,o.useState)(!1);return r().createElement(i.aFV,{open:e,setOpen:t,"data-testid":"connection-form-modal",className:wn,fullScreen:s},r().createElement(kn,(0,a.A)({key:n.initialConnectionInfo.id,onAdvancedOptionsToggle:l},n)))}},34825:()=>{},36430:e=>{e.exports={ATLAS:"atlas",ADL:"adl",ON_PREM:"on-prem"}},39059:(e,t,n)=>{n.d(t,{H8:()=>F,rp:()=>L,yo:()=>P,Tx:()=>D,Hg:()=>N,C7:()=>z,IM:()=>h,Ay:()=>G,q_:()=>S,Ho:()=>k,ZL:()=>q,qm:()=>Y,v6:()=>I,RQ:()=>v}),n(95039),n(81546);var a=n(86214),o=n.n(a),r=n(90605);const i=Symbol.for("@@mdb.decryptedKeys");function s(e,t){t.isValueDecrypted()&&(e[i]||Object.defineProperty(e,i,{value:[],writable:!0,configurable:!0,enumerable:!1}),e[i].push(String(t.currentKey)))}const l=Symbol("DoesNotExist");class c{static generate(e,t={}){if(e){const n=Object.create(null);for(const a of e)t.excludeInternalFields&&a.isInternalField()||a.isRemoved()||""===a.currentKey||(n[a.currentKey]=a.generateObject(t),s(n,a));return n}return e}static generateOriginal(e,t={}){if(e){const n=Object.create(null);for(const a of e)t.excludeInternalFields&&a.isInternalField()||a.isAdded()||(n[a.key]=a.generateOriginalObject(t),s(n,a));return n}return e}static generateArray(e,t={}){if(e){const n=[];for(const a of e)t.excludeInternalFields&&a.isInternalField()||a.isRemoved()||(a.elements?n.push(a.generateObject(t)):n.push(a.currentValue),s(n,a));return n}return e}static generateOriginalArray(e,t={}){if(e){const n=[];for(const a of e)t.excludeInternalFields&&a.isInternalField()||(a.originalExpandableValue?n.push(a.generateOriginalObject(t)):a.isAdded()||n.push(a.value),s(n,a));return n}return e}static recursivelyGatherFieldsAndValuesForUpdate(e,t,n){const a=[],o=[],i=t.alwaysIncludeKeys??[],s=t.includableEncryptedKeys??[];for(const t of e.elements??[]){const r="Array"===e.currentType,d=!t.isValueDecrypted()||s.some((e=>1===e.length&&e[0]===String(t.key)));if(n&&t.isModified()&&!t.isAdded()&&!t.hasChangedKey()||i.some((e=>e[0]===String(t.key))))if(t.elements&&!i.some((e=>1===e.length&&e[0]===String(t.key)))&&("Object"===t.type&&"Object"===t.currentType||"Array"===t.type&&"Array"===t.currentType&&!t.hasAnyRemovedChild())){const e=e=>e.filter((e=>e[0]===String(t.key))).map((e=>e.slice(1))).filter((e=>e.length>0)),l={alwaysIncludeKeys:e(i),includableEncryptedKeys:e(s)},d=c.recursivelyGatherFieldsAndValuesForUpdate(t,l,n);for(const{path:e,value:n}of d.originalFields)a.push({path:[{key:String(t.key),isArrayIndex:r},...e],value:n});for(const{path:e,value:n}of d.newFields)o.push({path:[{key:String(t.currentKey),isArrayIndex:r},...e],value:n})}else d&&a.push({path:[{key:String(t.key),isArrayIndex:r}],value:t.generateOriginalObject()}),n&&""!==t.currentKey&&!t.isRemoved()&&o.push({path:[{key:String(t.currentKey),isArrayIndex:r}],value:t.generateObject()});if(n&&!t.isRemoved()&&(t.isAdded()||t.hasChangedKey())&&""!==t.currentKey){let n=!1;for(const a of e.elements??[])if(a!==t&&a.key===t.currentKey){n=!0;break}n||a.push({path:[{key:String(t.currentKey),isArrayIndex:r}],value:l}),o.push({path:[{key:String(t.currentKey),isArrayIndex:r}],value:t.generateObject()})}if(n&&!t.isAdded()&&(t.isRemoved()||t.hasChangedKey())&&""!==t.key){d&&a.push({path:[{key:String(t.key),isArrayIndex:r}],value:t.generateOriginalObject()});let n=!1;for(const a of e.elements??[])if(a!==t&&a.currentKey===t.key){n=!0;break}n||o.push({path:[{key:String(t.key),isArrayIndex:r}],value:l})}}for(let e=0;e<o.length;){const t=o[e];t.value===l&&o.some((e=>(0,r.isEqual)(e.path,t.path)&&t!==e))?o.splice(e,1):e++}return{originalFields:a,newFields:o}}static createGetFieldExpr(e){return e.reduce(((e,{key:t,isArrayIndex:n})=>n?{$arrayElemAt:[e,+t]}:{$getField:{field:{$literal:t},input:e}}),"$$ROOT")}static createSetFieldExpr(e,t){return e.reduceRight(((e,{key:t,isArrayIndex:n},a,o)=>{const r=c.createGetFieldExpr(o.slice(0,a));return n?{$let:{vars:{input:r},in:{$concatArrays:[...+t>0?[{$slice:["$$input",0,+t]}]:[],[e],{$slice:["$$input",+t+1,2**31-1]}]}}}:{$setField:{field:{$literal:t},input:r,value:e}}}),t===l?"$$REMOVE":{$literal:t})}static getQueryForOriginalKeysAndValuesForSpecifiedFields(e,t,n){const{originalFields:a}=c.recursivelyGatherFieldsAndValuesForUpdate(e,t,n),o={};if(a.some((({path:e})=>e.some((({key:e})=>e.includes(".")||e.startsWith("$")))))){const e=[];for(const{path:t,value:n}of a){const a=c.createGetFieldExpr(t);e.push(n!==l?{$eq:[a,{$literal:n}]}:{$eq:[{$type:a},"missing"]})}1===e.length?o.$expr=e[0]:e.length>1&&(o.$expr={$and:e})}else for(const{path:e,value:t}of a){const n=t===l?{$exists:!1}:t;o[e.map((({key:e})=>e)).join(".")]=n}return o}static generateUpdateDoc(e){const{newFields:t}=c.recursivelyGatherFieldsAndValuesForUpdate(e,{},!0);if(t.some((({path:e})=>e.some((({key:e})=>e.includes(".")||e.startsWith("$"))))))return t.map((({path:e,value:t})=>({$replaceWith:c.createSetFieldExpr(e,t)})));{const e={};for(const{path:n,value:a}of t)a===l?(e.$unset??={},e.$unset[n.map((({key:e})=>e)).join(".")]=!0):(e.$set??={},e.$set[n.map((({key:e})=>e)).join(".")]=a);return e}}}const d=c;var u=n(67092),m=n(13353),p=n(9174);const h={Added:"Element::Added",Edited:"Element::Edited",Removed:"Element::Removed",Reverted:"Element::Reverted",Converted:"Element::Converted",Invalid:"Element::Invalid",Valid:"Element::Valid",Expanded:"Element::Expanded",Collapsed:"Element::Collapsed",VisibleElementsChanged:"Element::VisibleElementsChanged"};var g=n(34110).Buffer;const f={Array:[],Object:{},Decimal128:0,Int32:0,Int64:0,Double:0,MaxKey:0,MinKey:0,Timestamp:0,Date:0,String:"",Code:"",Binary:"",ObjectId:"",BSONRegExp:"",BSONSymbol:"",Boolean:!1,Undefined:void 0,Null:null,UUID:"",LegacyJavaUUID:"",LegacyCSharpUUID:"",LegacyPythonUUID:""},y=new Date("9999-12-31T23:59:59.999Z").valueOf();function b(e){const t=String(e).length;return 0===t?1:t}function v(e,t={}){const n=m.EJSON.serialize(e,{relaxed:!1});return E(n),JSON.stringify(n,null,"indent"in t?t.indent:2)}function C(e){const t=g.from(e,"base64");if(16!==t.length)return"";const n=t.toString("hex");return[n.substring(0,8),n.substring(8,12),n.substring(12,16),n.substring(16,20),n.substring(20,32)].join("-")}function E(e){if(e&&"object"==typeof e)for(const t of Object.keys(e)){const n=e[t];if("object"==typeof n&&null!==n)if(n.$numberInt)e[t]=+n.$numberInt;else if(n.$numberDouble)Number.isFinite(+n.$numberDouble)&&!Object.is(+n.$numberDouble,-0)&&(e[t]=+n.$numberDouble);else{if(n.$date&&n.$date.$numberLong){const e=n.$date.$numberLong;e>=0&&e<=y&&(n.$date=new Date(+e).toISOString())}if(n.$binary&&"04"===n.$binary.subType&&n.$binary.base64){const a=C(n.$binary.base64);if(a){e[t]={$uuid:a};continue}}E(n)}}}function S(e){return u.Ay.cast(f[e],e)}function k(e,t){if((0,u.IM)(e.currentType))return e.currentType;if("Binary"===e.currentType&&"Binary"===(0,u.TB)(e.currentValue)){const n=e.currentValue;if(n.sub_type===m.Binary.SUBTYPE_UUID)return"UUID";if(n.sub_type===m.Binary.SUBTYPE_UUID_OLD&&16===n.buffer.length&&t)return t}return e.currentType}const w=/^(\[|\{)(.+)(\]|\})$/;class x{element;type;displayType;editing;constructor(e,t){this.element=e,this.type=e.currentType,this.displayType=t??e.currentType,this.editing=!1}edit(e){const t=this.element.currentType;try{const n=u.Ay.cast(e,t);this.element.edit(n)}catch(n){this.element.setInvalid(e,t,n.message)}}paste(e){w.exec(e)?(this.edit(JSON.parse(e)),this.element._bubbleUp(h.Converted,this.element)):this.edit(e)}size(){return b(this.element.currentValue)}value(){return String(this.element.currentValue)}start(){this.editing=!0}complete(){this.editing=!1}}class A extends x{complete(){super.complete(),this.element.isCurrentTypeValid()&&this.element.edit(u.Ay.cast(this._formattedValue(),"Date"))}edit(e){try{"Invalid Date"===u.Ay.cast(e,"Date").toString()?this.element.setInvalid(e,"Date",`${String(e)} is not in a valid date format`):(this.element.currentValue=e,this.element.setValid(),this.element._bubbleUp(h.Edited,this.element))}catch(t){this.element.setInvalid(e,this.element.currentType,t.message)}}size(e){const t=this.element.currentValue;return e?b(t):this.element.isCurrentTypeValid()?b(this._formattedValue()):b(t)}start(){super.start(),this.element.isCurrentTypeValid()&&this.edit(this._formattedValue())}value(){const e=this.element.currentValue;return!this.editing&&this.element.isCurrentTypeValid()?this._formattedValue():String(e)}_formattedValue(){const e=new Date(this.element.currentValue);try{return e.toISOString().replace("Z","+00:00")}catch{return String(e)}}}const D={Cancel:"Document::Cancel",Expanded:"Document::Expanded",Collapsed:"Document::Collapsed",VisibleElementsChanged:"Document::VisibleElementsChanged",EditingStarted:"Document::EditingStarted",EditingFinished:"Document::EditingFinished",MarkedForDeletion:"Document::MarkedForDeletion",DeletionFinished:"Document::DeletionFinished",UpdateStarted:"Document::UpdateStarted",UpdateSuccess:"Document::UpdateSuccess",UpdateBlocked:"Document::UpdateBlocked",UpdateError:"Document::UpdateError",RemoveStarted:"Document::RemoveStarted",RemoveSuccess:"Document::RemoveSuccess",RemoveError:"Document::RemoveError"};function I(e){return"string"==typeof e&&/^__safeContent__($|\.)/.test(e)}const M=["Binary","Code","MinKey","MaxKey","Timestamp","BSONRegExp","Undefined","Null","DBRef"];function T(e){return"Binary"===(0,u.TB)(e)}const L=25;function O(e){return(0,r.isPlainObject)(e)||(0,r.isArray)(e)}class N extends(o()){uuid;key;currentKey;value;currentValue;added;removed;elements;originalExpandableValue;parent;type;currentType;level;currentTypeValid;invalidTypeMessage;decrypted;expanded=!1;maxVisibleElementsCount=L;cancel(){if(this.elements)for(const e of Array.from(this.elements))e.cancel();this.isModified()&&this.revert()}constructor(e,t,n=null,a=!1){let o;super(),this.uuid=(new m.UUID).toHexString(),this.key=e,this.currentKey=e,this.parent=n,this.added=a,this.removed=!1,this.type=u.Ay.type(t),this.currentType=this.type,this.level=this._getLevel(),this.setValid(),"number"==typeof t&&(t=u.Ay.cast(t,u.Ay.type(t))),O(t)?(this.originalExpandableValue=t,this.elements=this._generateElements(t)):(this.value=t,this.currentValue=t),this.parent&&(o=this.parent.isRoot()?this.parent.doc:this.parent.originalExpandableValue);const r=o&&o[Symbol.for("@@mdb.decryptedKeys")];this.decrypted=(r||[]).map(String).includes(String(e))}get nextElement(){return this.parent?.elements?.findNext(this)}get previousElement(){return this.parent?.elements?.findPrevious(this)}_getLevel(){let e=-1,t=this.parent;for(;t;)e++,t=t.parent;return e}edit(e){this.currentType=u.Ay.type(e),O(e)&&!O(this.currentValue)?(this.currentValue=null,this.elements=this._generateElements(e)):!O(e)&&this.elements?(this.currentValue=e,this.elements=void 0):this.currentValue=e,this.setValid(),this._bubbleUp(h.Edited,this)}preserveType(e){switch(this.currentType){case"Object":if(!this.elements)return;for(const t of this.elements){const n=e.get(t.currentKey);n&&t.preserveType(n)}break;case"Int32":{const t=e.currentType;"Double"===t&&this.changeType("Double"),"Int64"===t&&this.changeType("Int64");break}}}preserveTypeFromSchema(e,t){const n=t?`${t}.${String(this.currentKey)}`:String(this.currentKey);if("Object"===this.currentType&&this.elements){for(const t of this.elements)t.preserveTypeFromSchema(e,n);return}if("Int32"!==this.currentType)return;const a=e[n]?.type;if(!a)return;const o=Array.isArray(a)?a:[a];o.includes("Double")?this.changeType("Double"):(o.includes("Long")||o.includes("Int64"))&&this.changeType("Int64")}changeType(e){if("Object"===e)this._convertToEmptyObject();else if("Array"===e)this._convertToEmptyArray();else try{if("Date"===e){const e=this.currentValue&&"Boolean"!==this.currentType?this.generateObject():new Date,t=new A(this);t.edit(e),t.complete()}else if((0,u.IM)(e)&&(0,u.IM)(this.currentType)&&T(this.currentValue)){const t=(0,u.II)(this.currentValue,this.currentType,e);this.edit(t),this.currentType=e,this._bubbleUp(h.Edited,this)}else this.edit(u.Ay.cast(this.generateObject(),e)),(0,u.IM)(e)&&(this.currentType=e,this._bubbleUp(h.Edited,this))}catch(t){this.setInvalid(this.currentValue,e,t.message)}}getRoot(){let e=this.parent;for(;e?.parent;)e=e.parent;return e}get(e){return this.elements?.get(e)}at(e){return this.elements?.at(e)}rename(e){this.currentKey=e,this._bubbleUp(h.Edited,this)}generateObject(e){return"Array"===this.currentType?d.generateArray(this.elements,e):"Object"===this.currentType?d.generate(this.elements,e):this.currentValue}generateOriginalObject(e){if("Array"===this.type){const t=this._generateElements(this.originalExpandableValue);return d.generateOriginalArray(t,e)}if("Object"===this.type){const t=this._generateElements(this.originalExpandableValue);return d.generateOriginal(t,e)}return this.value}toShellSyntax(e="current",t={}){const n="original"===e?this.generateOriginalObject():this.generateObject();return(0,p.AO)(n,t.indent)||"{}"}insertAfter(e,t,n){if(!this.elements)throw new Error("Cannot insert values on non-array/non-object elements");const a=this.elements.insertAfter(e,t,n);return a._bubbleUp(h.Added,a,this),a&&this.elements.at(this.maxVisibleElementsCount-1)===e&&this.maxVisibleElementsCount++,this.emitVisibleElementsChanged(),a}insertEnd(e,t){if(!this.elements)throw new Error("Cannot insert values on non-array/non-object elements");const n=this.elements.insertEnd(e,t,!0);return this._bubbleUp(h.Added,n),this.emitVisibleElementsChanged(),n}insertPlaceholder(){const e="Array"===this.currentType&&this.elements?.lastElement?S(this.elements?.lastElement.currentType):"";return this.insertEnd("",e)}insertSiblingPlaceholder(){const e="Array"===this.parent?.currentType?S(this.currentType):"";return this.parent.insertAfter(this,"",e)}isAdded(){return this.added||!!this.parent?.isAdded()}isBlank(){return""===this.currentKey&&""===this.currentValue}isCurrentTypeValid(){return!!this.currentTypeValid}setValid(){this.currentTypeValid=!0,this.invalidTypeMessage=void 0,this._bubbleUp(h.Valid,this)}setInvalid(e,t,n){this.currentValue=e,this.currentType=t,this.currentTypeValid=!1,this.invalidTypeMessage=n,this._bubbleUp(h.Invalid,this)}isDuplicateKey(e){if(""===e)return!1;for(const t of this.parent?.elements??[])if(t.uuid!==this.uuid&&t.currentKey===e)return!0;return!1}isEdited(){return(this.isRenamed()||!this._valuesEqual()||this.type!==this.currentType)&&!this.isAdded()}_valuesEqual(){return"Date"===this.currentType&&(0,r.isString)(this.currentValue)?(0,r.isEqual)(this.value,new Date(this.currentValue)):"ObjectId"===this.currentType&&(0,r.isString)(this.currentValue)?this._isObjectIdEqual():(0,r.isEqual)(this.value,this.currentValue)}_isObjectIdEqual(){try{return this.value.toHexString()===this.currentValue}catch{return!1}}_isExpandable(){return"Array"===this.currentType||"Object"===this.currentType}isLast(){return this.parent?.elements?.lastElement===this}isRenamed(){return!(this.parent&&!this.parent.isRoot()&&"Object"!==this.parent.currentType)&&this.key!==this.currentKey}hasChangedKey(){return this.key!==this.currentKey}isRevertable(){return this.isEdited()||this.isRemoved()}isRemovable(){return!this.parent.isRemoved()}isNotActionable(){return("_id"===this.key||this.isInternalField())&&!this.isAdded()||!this.isRemovable()}isValueDecrypted(){return this.decrypted}containsDecryptedChildren(){if(this.isValueDecrypted())return!0;for(const e of this.elements||[])if(e.containsDecryptedChildren())return!0;return!1}isValueEditable(){const e=(0,u.IM)(this.currentType),t="Binary"===this.currentType&&T(this.currentValue)&&(this.currentValue.sub_type===m.Binary.SUBTYPE_UUID||this.currentValue.sub_type===m.Binary.SUBTYPE_UUID_OLD&&16===this.currentValue.buffer.length);return this._isKeyLegallyEditable()&&(e||t||!M.includes(this.currentType))}isParentEditable(){return!(this.parent&&!this.parent.isRoot())||this.parent._isKeyLegallyEditable()}_isKeyLegallyEditable(){return this.isParentEditable()&&(this.isAdded()||("_id"!==this.currentKey||!this.parent?.isRoot())&&!this.isInternalField())}isKeyEditable(){return this._isKeyLegallyEditable()&&!this.containsDecryptedChildren()}isInternalField(){return!(!this.parent||(this.parent.isRoot()||!this.parent.isInternalField())&&(!this.parent.isRoot()||!I(this.currentKey)))}isModified(){if(this.elements)for(const e of this.elements)if(e.isModified())return!0;return this.isAdded()||this.isEdited()||this.isRemoved()}isRemoved(){return this.removed}hasAnyRemovedChild(){if(this.elements)for(const e of this.elements)if(e.isRemoved())return!0;return!1}isRoot(){return!1}remove(){this.revert(),this.removed=!0,this.parent&&(this._bubbleUp(h.Removed,this,this.parent),this.emitVisibleElementsChanged(this.parent))}revert(){this.isAdded()?(this.parent?.elements?.remove(this),this._bubbleUp(h.Removed,this,this.parent),this.parent&&this.emitVisibleElementsChanged(this.parent),delete this.parent):(this.originalExpandableValue?(this.elements=this._generateElements(this.originalExpandableValue),this.currentValue=void 0):(null===this.currentValue&&null!==this.value?delete this.elements:this._removeAddedElements(),this.currentValue=this.value),this.currentKey=this.key,this.currentType=this.type,this.removed=!1),this.setValid(),this._bubbleUp(h.Reverted,this)}expand(e=!1){if(this._isExpandable()){if(this.expanded=!0,e&&this.elements)for(const t of this.elements)t.expand(e);this.emit(h.Expanded,this),this.emitVisibleElementsChanged()}}collapse(){if(this._isExpandable()){if(this.expanded=!1,this.elements)for(const e of this.elements)e.collapse();this.emit(h.Collapsed,this),this.emitVisibleElementsChanged()}}_bubbleUp(e,...t){this.emit(e,...t);const n=this.parent;n&&(n.isRoot()?n.emit(e,...t):n._bubbleUp(e,...t))}_convertToEmptyObject(){this.edit({}),this.insertPlaceholder()}_convertToEmptyArray(){this.edit([]),this.insertPlaceholder()}_isElementEmpty(e){return!!e&&e.isAdded()&&e.isBlank()}_generateElements(e){return new _(this,e)}_removeAddedElements(){if(this.elements)for(const e of this.elements)e.isAdded()&&this.elements.remove(e)}getVisibleElements(){return this.elements&&this.expanded?[...this.elements].slice(0,this.maxVisibleElementsCount):[]}setMaxVisibleElementsCount(e){this._isExpandable()&&(this.maxVisibleElementsCount=e,this.emitVisibleElementsChanged())}getTotalVisibleElementsCount(){return this.elements&&this.expanded?this.getVisibleElements().reduce(((e,t)=>e+1+t.getTotalVisibleElementsCount()),0):0}findUUIDs(){let e=0,t=0;if(!this.elements)return{subtype4Count:e,subtype3Count:t};for(const n of this.elements)if("Binary"===n.currentType)4===n.currentValue.sub_type&&e++,3===n.currentValue.sub_type&&t++;else if("Object"===n.currentType||"Array"===n.currentType){const{subtype3Count:a,subtype4Count:o}=n.findUUIDs();t+=a,e+=o}return{subtype4Count:e,subtype3Count:t}}emitVisibleElementsChanged(e=this){e.isRoot()?e.emit(D.VisibleElementsChanged,e):e.expanded&&e._bubbleUp(h.VisibleElementsChanged,e,e.getRoot())}static get Events(){return h}}class _{elements;parent;constructor(e,t){this.parent=e,this.elements=Object.entries(t??{}).map((([t,n])=>new N(this.isArray()?parseInt(t,10):t,n,e,!!e.isRoot()&&e.cloned)))}isArray(){return"Array"===this.parent.currentType}get size(){return this.elements.length}at(e){return this.elements[e]}get(e){return this.elements.find((t=>t.currentKey===e))}some(e){return this.elements.some(e)}every(e){return this.elements.every(e)}get firstElement(){return this.elements[0]}get lastElement(){return this.elements[this.elements.length-1]}insertAfter(e,t,n,a=!0){let o,r=-1;for(const[i,s]of this.elements.entries())e!==s?o&&this.isArray()&&(s.currentKey=i+1):(r=i+1,o=new N(this.isArray()?r:t,n,this.parent,a));return o&&this.elements.splice(r,0,o),o}insertBefore(e,t,n,a=!0){let o,r=-1;for(const[i,s]of this.elements.entries())e===s&&(r=i,o=new N(this.isArray()?r:t,n,this.parent,a)),o&&this.isArray()&&(s.currentKey=i+1);return o&&this.elements.splice(r,0,o),o}insertBeginning(e,t,n=!0){const a=new N(this.isArray()?0:e,t,this.parent,n);return this.isArray()&&this.elements.forEach((e=>{e.currentKey+=1})),this.elements.unshift(a),a}insertEnd(e,t,n=!0){const a=new N(this.isArray()?this.elements.length:e,t,this.parent,n);return this.elements.push(a),a}remove(e){let t=-1;for(const[n,a]of this.elements.entries())a!==e?-1!==t&&this.isArray()&&(a.currentKey-=1):t=n;return-1!==t&&this.elements.splice(t,1),this}findNext(e){const t=this.elements.indexOf(e);return-1!==t?this.elements[t+1]:void 0}findPrevious(e){const t=this.elements.indexOf(e);return-1!==t?this.elements[t-1]:void 0}*[Symbol.iterator](){yield*this.elements}}const F=25;class P extends(o()){uuid;doc;cloned;isUpdatable;elements;type;currentType;size=null;expanded=!1;maxVisibleElementsCount=F;editing=!1;markedForDeletion=!1;modifiedEJSONString=null;cancel(){for(const e of Array.from(this.elements))e.cancel();this.emit(D.Cancel)}constructor(e,t=!1){super(),this.uuid=(new m.UUID).toHexString(),this.doc=e,this.cloned=t||!1,this.isUpdatable=!0,this.type="Document",this.currentType="Document",this.elements=this._generateElements()}apply(e){"function"==typeof e?.generateObject&&(e=e.generateObject());const t=[];let n=null;for(const[a,o]of Object.entries(e))this.get(a)?this.get(a).edit(o):n?this.insertAfter(this.get(n),a,o):this.insertBeginning(a,o),n=a,t.push(a);for(const e of[...this.elements])t.includes(e.currentKey)||e.remove()}preserveTypes(e){const t=this.generateObject();for(const n of Object.keys(t)){const t=this.get(n),a=e.get(n);t&&a&&t.preserveType(a)}}preserveTypesFromSchema(e){for(const t of this.elements)t.preserveTypeFromSchema(e,"")}generateObject(e){return d.generate(this.elements,e)}generateOriginalObject(e){return d.generateOriginal(this.elements,e)}generateUpdateUnlessChangedInBackgroundQuery(e={}){const t=d.getQueryForOriginalKeysAndValuesForSpecifiedFields(this,e,!0);return{query:{_id:this.getId(),...t},updateDoc:d.generateUpdateDoc(this)}}get(e){return this.elements.get(e)}getChild(e){if(!e)return;let t=this.elements.get(e[0]),n=1;for(;n<e.length;){if(void 0===t)return;t="Array"===t.currentType?t.at(e[n]):t.get(e[n]),n++}return t}getId(){const e=this.get("_id");return e?e.generateObject():null}getQueryForOriginalKeysAndValuesForSpecifiedKeys(e={}){return d.getQueryForOriginalKeysAndValuesForSpecifiedFields(this,e,!1)}getStringId(){const e=this.get("_id");return e?"Array"===e.currentType||"Object"===e.currentType?JSON.stringify(e.generateObject()):String(e.value):null}insertPlaceholder(){return this.insertEnd("","")}insertBeginning(e,t){const n=this.elements.insertBeginning(e,t);return n._bubbleUp(h.Added,n,this),this.emit(D.VisibleElementsChanged,this),n}insertEnd(e,t){const n=this.elements.insertEnd(e,t);return n._bubbleUp(h.Added,n,this),this.emit(D.VisibleElementsChanged,this),n}insertAfter(e,t,n){const a=this.elements.insertAfter(e,t,n);return a?._bubbleUp(h.Added,a,this),a&&this.elements.at(this.maxVisibleElementsCount-1)===e&&this.maxVisibleElementsCount++,this.emit(D.VisibleElementsChanged,this),a}isAdded(){return!1}isModified(){for(const e of this.elements)if(e.isModified())return!0;return!1}isRemoved(){return!1}isRoot(){return!0}_generateElements(){return new _(this,this.doc)}static get Events(){return D}static FromEJSON(e){const t=m.EJSON.parse(e,{relaxed:!1});return new P(t)}static FromEJSONArray(e){const t=m.EJSON.parse(e,{relaxed:!1});return Array.isArray(t)?t.map((e=>new P(e))):[new P(t)]}toEJSON(e="current",t={}){return v("original"===e?this.generateOriginalObject():this.generateObject(),t)}toShellSyntax(e="current",t={}){const n="original"===e?this.generateOriginalObject():this.generateObject();return(0,p.AO)(n,t.indent)||"{}"}expand(){this.expanded=!0;for(const e of this.elements)e.expand(!0);this.emit(D.Expanded),this.emit(D.VisibleElementsChanged,this)}collapse(){this.expanded=!1;for(const e of this.elements)e.collapse();this.emit(D.Collapsed),this.emit(D.VisibleElementsChanged,this)}getVisibleElements(){return[...this.elements].slice(0,this.maxVisibleElementsCount)}setMaxVisibleElementsCount(e){this.maxVisibleElementsCount=e,this.emit(D.VisibleElementsChanged,this)}getTotalVisibleElementsCount(){return this.getVisibleElements().reduce(((e,t)=>e+1+t.getTotalVisibleElementsCount()),0)}findUUIDs(){let e=0,t=0;for(const n of this.elements)if("Binary"===n.currentType)4===n.value.sub_type&&e++,3===n.value.sub_type&&t++;else if("Object"===n.currentType||"Array"===n.currentType){const{subtype3Count:a,subtype4Count:o}=n.findUUIDs();t+=a,e+=o}return{subtype3Count:t,subtype4Count:e}}startEditing(e,t){this.editing||(this.editing=!0,this.emit(D.EditingStarted,e,t))}finishEditing(){this.editing&&(this.editing=!1,this.setModifiedEJSONString(null),this.emit(D.EditingFinished))}onUpdateStart(){this.emit(D.UpdateStarted)}onUpdateSuccess(e){this.emit(D.UpdateSuccess,e),this.finishEditing()}onUpdateBlocked(){this.emit(D.UpdateBlocked)}onUpdateError(e){this.emit(D.UpdateError,e,e.errInfo)}markForDeletion(){this.markedForDeletion||(this.markedForDeletion=!0,this.emit(D.MarkedForDeletion))}finishDeletion(){this.markedForDeletion&&(this.markedForDeletion=!1,this.emit(D.DeletionFinished))}onRemoveStart(){this.emit(D.RemoveStarted)}onRemoveSuccess(){this.emit(D.RemoveSuccess),this.finishDeletion()}onRemoveError(e){this.emit(D.RemoveError,e,e.errInfo)}setModifiedEJSONString(e){this.modifiedEJSONString=e}}class W extends x{}class R extends x{complete(){super.complete(),this.element.isCurrentTypeValid()&&this.element.edit(u.Ay.cast(this.element.currentValue,"Decimal128"))}edit(e){try{u.Ay.cast(e,"Decimal128"),this.element.currentValue=e,this.element.setValid(),this.element._bubbleUp(h.Edited,this.element)}catch(t){this.element.setInvalid(e,this.element.currentType,t.message)}}}class U extends x{size(){return b(this.element.currentValue.valueOf())}}class $ extends x{complete(){super.complete(),this.element.isCurrentTypeValid()&&this.element.edit(u.Ay.cast(this.element.currentValue,"Int64"))}edit(e){try{u.Ay.cast(e,"Int64"),this.element.currentValue=e,this.element.setValid(),this.element._bubbleUp(h.Edited,this.element)}catch(t){this.element.setInvalid(e,this.element.currentType,t.message)}}}class V extends x{complete(){super.complete(),this.element.isCurrentTypeValid()&&this.element.edit(u.Ay.cast(this.element.currentValue,"Double"))}edit(e){try{const t=u.Ay.cast(e,"Double");isNaN(t.value)?this.element.setInvalid(e,"Double",`${String(e)} is not a valid double format`):(this.element.currentValue=e,this.element.setValid(),this.element._bubbleUp(h.Edited,this.element))}catch(t){this.element.setInvalid(e,this.element.currentType,t.message)}}size(){const e=this.element.currentValue;return b("function"==typeof e.valueOf?e.valueOf():e)}}class H extends x{size(){return 4}value(){return"null"}}class K extends x{size(){return 9}value(){return"undefined"}}class j extends x{complete(){super.complete(),this.element.isCurrentTypeValid()&&this.element.edit(u.Ay.cast(this.element.currentValue,"ObjectId"))}edit(e){try{u.Ay.cast(e,"ObjectId"),this.element.currentValue=e,this.element.setValid(),this.element._bubbleUp(h.Edited,this.element)}catch(t){this.element.setInvalid(e,this.element.currentType,t.message)}}start(){super.start(),this.element.isCurrentTypeValid()&&this.edit(String(this.element.currentValue))}}class B extends x{uuidType;constructor(e,t){super(e,t),this.uuidType=(0,u.IM)(this.displayType)?this.displayType:"UUID"}value(){const e=this.element.currentValue;if("string"==typeof e)return e;if("Binary"===(0,u.TB)(e)){const t=e;switch(this.uuidType){case"LegacyJavaUUID":return(e=>{const t=e.toString("hex"),n=(0,u.j$)(t);return(0,u.P6)(n)})(t);case"LegacyCSharpUUID":return(e=>{const t=e.toString("hex"),n=(0,u.q2)(t);return(0,u.P6)(n)})(t);case"LegacyPythonUUID":return(e=>{const t=e.toString("hex");return(0,u.P6)(t)})(t);default:return(e=>{try{return e.toUUID().toString()}catch{return e.toString("hex")}})(t)}}return String(e)}edit(e){try{u.Ay.cast(e,this.uuidType),this.element.currentValue=e,this.element.setValid(),this.element._bubbleUp(h.Edited,this.element)}catch(t){this.element.setInvalid(e,this.element.currentType,t.message)}}start(){super.start(),this.element.isCurrentTypeValid()&&(this.element.currentType=this.uuidType,this.edit(this.value()))}complete(){super.complete(),this.element.isCurrentTypeValid()&&(this.element.edit(u.Ay.cast(this.element.currentValue,this.uuidType)),this.element.currentType=this.uuidType)}}const z=Object.assign(((e,t)=>({Standard:new x(e,t),String:new W(e,t),Decimal128:new R(e,t),Date:new A(e,t),Double:new V(e,t),Int32:new U(e,t),Int64:new $(e,t),Null:new H(e,t),Undefined:new K(e,t),ObjectId:new j(e,t),UUID:new B(e,t)})),{DateEditor:A,StandardEditor:x,StringEditor:W,Decimal128Editor:R,DoubleEditor:V,Int32Editor:U,Int64Editor:$,NullEditor:H,UndefinedEditor:K,ObjectIdEditor:j,UUIDEditor:B});function Y(e){switch(e){case"Date":case"String":case"Decimal128":case"Double":case"Int32":case"Int64":case"Null":case"Undefined":case"ObjectId":return e;case"UUID":case"LegacyJavaUUID":case"LegacyCSharpUUID":case"LegacyPythonUUID":return"UUID";default:return"Standard"}}function q(e){const t=Y(e);return z[`${t}Editor`]}const G=P},43750:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=43750,e.exports=t},44419:()=>{},45363:(e,t,n)=>{n.d(t,{$L:()=>v,BE:()=>u.BE,Vr:()=>C,__:()=>E,i2:()=>u.i2,lB:()=>y,nW:()=>d.n});var a=n(96652),o=n.n(a),r=n(94134),i=n(29719),s=n(62183),l=n(70918),c=n(78332),d=n(25657),u=n(6924);function m(){return(0,r.d4)(i.e6)}const p=Symbol("useActiveWorkspaceSelector"),h=()=>{throw new Error("Can't find Workspaces service in React context. Make sure you are using workspaces service and hooks inside Workspaces scope")},g={getActiveWorkspace:()=>(h(),null),openMyQueriesWorkspace:h,openDataModelingWorkspace:h,openShellWorkspace:h,openDatabasesWorkspace:h,openPerformanceWorkspace:h,openCollectionsWorkspace:h,openCollectionWorkspaceSubtab:h,openCollectionWorkspace:h,openEditViewWorkspace:h,[p]:()=>(h(),null)},f=o().createContext(g),y=({value:e,children:t})=>(e??=(()=>{const e=function(){try{return(0,r.Pj)()}catch{throw new Error("Can't find Workspaces store in React context. Make sure you are using workspaces service and hooks inside Workspaces scope")}}();return(0,a.useRef)({getActiveWorkspace:()=>(0,i.e6)(e.getState()),openMyQueriesWorkspace:t=>{e.dispatch((0,i.OH)({type:"My Queries"},t))},openDataModelingWorkspace:(t={})=>{e.dispatch((0,i.OH)({type:"Data Modeling"},{newTab:t.newTab??!0}))},openShellWorkspace(t,n={}){const{newTab:a,...o}=n;e.dispatch((0,i.OH)({type:"Shell",connectionId:t,...o},{newTab:a}))},openDatabasesWorkspace:(t,n)=>{e.dispatch((0,i.OH)({type:"Databases",connectionId:t},n))},openPerformanceWorkspace:(t,n)=>{e.dispatch((0,i.OH)({type:"Performance",connectionId:t},n))},openCollectionsWorkspace:(t,n,a)=>{e.dispatch((0,i.OH)({type:"Collections",connectionId:t,namespace:n},a))},openCollectionWorkspace:(t,n,a)=>{const{newTab:o,...r}=a??{};e.dispatch((0,i.OH)({type:"Collection",connectionId:t,namespace:n,...r},{newTab:o}))},openCollectionWorkspaceSubtab(t,n){e.dispatch((0,i.pU)(t,n))},openEditViewWorkspace:(t,n,a)=>{const{newTab:o,sourceName:r,sourcePipeline:s}=a??{};e.dispatch((0,i.OH)({type:"Collection",connectionId:t,namespace:r,initialPipeline:s,editViewName:n},{newTab:o}))},[p]:m}).current})(),o().createElement(f.Provider,{value:e},t));function b(){const e=(0,a.useContext)(f);if(!e)throw new Error("Can't find Workspaces service in React context. Make sure you are using workspaces service and hooks inside Workspaces scope");const t=(0,l.Op)();return{...e,...t}}function v(){const{openShellWorkspace:e,openCollectionWorkspace:t,openCollectionsWorkspace:n,openDatabasesWorkspace:a,openMyQueriesWorkspace:o,openDataModelingWorkspace:r,openPerformanceWorkspace:i,openEditViewWorkspace:s}=b();return(0,c.nfZ)({openShellWorkspace:e,openCollectionWorkspace:t,openCollectionsWorkspace:n,openDatabasesWorkspace:a,openMyQueriesWorkspace:o,openDataModelingWorkspace:r,openPerformanceWorkspace:i,openEditViewWorkspace:s})}function C(){const e=b();return e[p]?.(),e.getActiveWorkspace()}const E=(0,s.mb)(b,"workspacesServiceLocator")},46410:e=>{e.exports=window.__compassWebSharedRuntime.ReactDOM},48901:(e,t,n)=>{n.r(t),n.d(t,{__esModule:()=>a.BJ,createAgent:()=>o,createFetch:()=>l,createSocks5Tunnel:()=>i,extractProxySecrets:()=>a.R5,hookLogger:()=>s,mergeProxySecrets:()=>a.On,resetSystemCACache:()=>d,systemCA:()=>c,translateToElectronProxyConfig:()=>a.U$,useOrCreateAgent:()=>r});var a=n(72099);function o(){}function r(){}function i(){}function s(){}function l(){throw new Error("node-fetch like-API not available in compass-web")}function c(){throw new Error("system CA access not available in compass-web")}function d(){throw new Error("system CA access not available in compass-web")}},49042:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c,deflate:()=>l,inflate:()=>s}),n(64990),n(90801),n(95774),n(77767);var a=n(34110).Buffer;const o="deflate";function r(e,t){return"function"==typeof e?e:t}function i(e,t,n){(async()=>{let o;try{o=await async function(e,t){const n=e.writable.getWriter(),o=new Response(e.readable).arrayBuffer();await n.ready,await n.write(t),await n.close();const r=new Uint8Array(await o);return a.from(r.buffer,r.byteOffset,r.byteLength)}(e(),t)}catch(e){return void n(e)}n(null,o)})()}function s(e,t,n){i((()=>new DecompressionStream(o)),e,r(t,n))}function l(e,t,n){i((()=>new CompressionStream(o)),e,r(t,n))}const c={inflate:s,deflate:l}},49797:(e,t,n)=>{n.d(t,{Y1:()=>_h.Y1,JV:()=>Nh,qP:()=>Fh.q,Cv:()=>Fh.C});var a=n(55712),o=n(96652),r=n.n(o),i=n(62183),s=n(60783),l=n(22007),c=n(29719),d=n(78332),u=n(25657),m=n(17855),p=n(44142),h=n(94134),g=n(44457),f=n(70918),y=n(6924);const b=(0,d.AHW)({display:"contents"}),v=({children:e})=>{const t=(0,o.useRef)(!1),[n,a]=(0,y.i2)("hasInteractedOnce",!1);(0,o.useEffect)((()=>(t.current=!0,()=>{t.current=!1})));const i=(0,o.useCallback)((()=>{(0,d.Rbc)((()=>{t.current&&a(!0)}))}),[a]);return(0,f.wT)((()=>!n)),r().createElement("div",{className:b,onKeyDown:i,onClickCapture:i},e)},C=({tab:e,onNamespaceNotFound:t,sectionType:n,children:a})=>{const o=function(e){switch(e.type){case"Welcome":case"My Queries":case"Data Modeling":case"Performance":case"Databases":return null;case"Shell":return{initialEvaluate:e.initialEvaluate,initialInput:e.initialInput};case"Collections":return{namespace:e.namespace};case"Collection":{const{id:t,type:n,connectionId:a,...o}=e;return{tabId:t,...o}}}}(e),{getWorkspacePluginByName:l}=(0,u.n)(),{provider:d}=l(e.type),m="tab-title"===n?function(e){return{..."namespace"in e?{namespace:e.namespace}:{},..."inferredFromPrivileges"in e?{inferredFromPrivileges:e.inferredFromPrivileges}:{},..."Collection"===e.type&&e.editViewName?{editViewName:e.editViewName}:{}}}(e):o;return m&&(a=r().cloneElement(a,m)),a=r().createElement(d,o,a),"namespace"in e&&(a=r().createElement(g.Hr,{namespace:e.namespace,onNamespaceFallbackSelect:n=>{t?.(e,n)}},a)),"connectionId"in e&&(a=r().createElement(s.Av,{connectionInfoId:e.connectionId},a)),"tab-content"===n&&(a=r().createElement(v,null,a)),r().createElement(y.VV,{id:e.id},r().createElement(i.GL,{key:e.id,scopeName:"Workspace Tab",localAppRegistry:(0,c.sN)(e.id),deactivateOnUnmount:!1},r().createElement(s.n2,{connectionId:"connectionId"in e?e.connectionId:void 0},a)))},E=(0,d.AHW)({margin:"0 auto",alignSelf:"center",opacity:.05}),S=()=>{const e=(0,d.D27)();return r().createElement("div",{className:E},r().createElement(d.FHx,{height:2*d.YKD[7],color:e?"white":"black"}))},k=(0,d.AHW)({display:"grid",width:"100%",height:"100%",gridTemplateColumns:"100%",gridTemplateRows:"auto 1fr"}),w=(0,d.AHW)({display:"flex",minHeight:0}),x=(0,d.AHW)({display:"flex",minWidth:"600px",width:"100%"}),A=(0,h.Ng)((e=>{const t=(0,c.e6)(e);return{tabs:e.tabs,activeTab:t,collectionInfo:e.collectionInfo,databaseInfo:e.databaseInfo}}),{onSelectTab:c.cN,onSelectNextTab:c.Ff,onSelectPrevTab:c.fy,onMoveTab:c.HC,onCreateTab:c.r9,onDuplicateTab:c.NC,onCloseTab:c.mR,onCloseAllOtherTabs:c.ye,onNamespaceNotFound:c.qo})((({tabs:e,activeTab:t,collectionInfo:n,databaseInfo:i,openOnEmptyWorkspace:s,onSelectTab:l,onSelectNextTab:c,onSelectPrevTab:h,onMoveTab:g,onCreateTab:f,onDuplicateTab:y,onCloseTab:b,onCloseAllOtherTabs:v,onNamespaceNotFound:E})=>{const{log:A,mongoLogId:D}=(0,p.Ul)("COMPASS-WORKSPACES"),{getWorkspacePluginByName:I}=(0,u.n)(),M=e.findIndex((e=>e===t)),T=(0,o.useCallback)((()=>{f(s)}),[f,s]),L=(0,o.useMemo)((()=>e.map((e=>{const t=I(e.type);if(!t)throw new Error(`Content component for workspace "${e.type}" is missing in context. Did you forget to set up WorkspacesProvider?`);const{content:o,header:s}=t;let l;if("Collections"===e.type){const t=e.namespace,n=`${e.connectionId}.${t}`,{inferredFromPrivileges:a}=i[n]??{};l=a}else if("Collection"===e.type){const{ns:t}=(0,m.Ay)(e.namespace),a=`${e.connectionId}.${t}`,{inferredFromPrivileges:o}=n[a]??{};l=o}return{id:e.id,renderTab:t=>r().createElement(d.tHk,{displayName:e.type,onError:(t,n)=>{A.error(D(1001000360),"Workspace","Rendering workspace tab header failed",{name:e.type,error:t.message,errorInfo:n})}},r().createElement(C,{tab:e,sectionType:"tab-title"},r().createElement(s,(0,a.A)({},t,l?{inferredFromPrivileges:l}:{})))),content:r().createElement(d.tHk,{displayName:e.type,onError:(t,n)=>{A.error(D(1001000277),"Workspace","Rendering workspace tab content failed",{name:e.type,error:t.message,errorInfo:n})}},r().createElement(C,{tab:e,sectionType:"tab-content",onNamespaceNotFound:E},r().createElement(o,null)))}}))),[I,e,A,n,i,D,E]),O=L[M]?.content??null;return r().createElement("div",{className:k,"data-testid":"workspace-tabs-container"},r().createElement(d.A6A,{"aria-label":"Workspace Tabs",onSelectTab:l,onSelectNextTab:c,onSelectPrevTab:h,onMoveTab:g,onCreateNewTab:T,onDuplicateTab:y,onCloseTab:b,onCloseAllOtherTabs:v,tabs:L,selectedTabIndex:M}),r().createElement("div",{className:w},r().createElement(d.fDz,null,r().createElement("div",{className:x},t&&O?O:r().createElement(S,null)))))}));var D=n(45363),I=n(36774);const M=(0,d.AHW)({backgroundColor:d.MFm.white,color:d.MFm.gray.dark2}),T=(0,d.AHW)({backgroundColor:d.MFm.black,color:d.MFm.white}),L=(0,d.AHW)({width:"100%",height:"100%",display:"grid",gridTemplateColumns:"min-content auto",minHeight:0,overflowX:"auto"}),O=(0,d.AHW)({minHeight:0,overflow:"hidden",minWidth:"730px"}),N=(0,d.AHW)({minHeight:0}),_=(0,h.Ng)((e=>{const t=(0,c.e6)(e);return{activeTab:t,activeTabCollectionInfo:"Collection"===t?.type?e.collectionInfo[`${t.connectionId}.${t.namespace}`]:null}}))((({activeTab:e,activeTabCollectionInfo:t,openOnEmptyWorkspace:n,onActiveWorkspaceTabChange:a,renderSidebar:i,renderModals:s})=>{const l=(0,d.D27)(),c=(0,d.HIF)(a);return(0,o.useEffect)((()=>{c.current(e,t)}),[e,t,c]),(0,I.ZX)("activeWorkspace",e),r().createElement(D.lB,null,r().createElement("div",{className:(0,d.cx)(L,l?T:M)},r().createElement("div",{className:N},i?.()),r().createElement("div",{className:O},r().createElement(A,{openOnEmptyWorkspace:n}))),s?.())}));var F=n(82162),P=n(67219);const W=(()=>{let e;return(t,n)=>{clearTimeout(e),e=setTimeout((()=>{!async function(e,t){try{const n={tabs:e.tabs.filter((e=>"Welcome"!==e.type)),activeTabId:e.activeTabId,timestamp:Date.now()};await t.userData.write("saved-workspaces",n)}catch(e){t.logger.log.error((0,p.oW)(1001000229),"Workspaces middleware","Failed to save workspace state to UserData",{error:e})}}(t,n)}),250)}})();var R=n(20625),U=n(56900);const $=U.z.enum(["Documents","Aggregations","Schema","Indexes","Validation","GlobalWrites"]),V=U.z.object({type:U.z.literal("Welcome")}),H=U.z.object({type:U.z.literal("My Queries")}),K=U.z.object({type:U.z.literal("Data Modeling")}),j=U.z.object({type:U.z.literal("Databases"),connectionId:U.z.string()}),B=U.z.object({type:U.z.literal("Performance"),connectionId:U.z.string()}),z=U.z.object({type:U.z.literal("Shell"),connectionId:U.z.string(),initialEvaluate:U.z.union([U.z.string(),U.z.array(U.z.string())]).optional(),initialInput:U.z.string().optional()}),Y=U.z.object({type:U.z.literal("Collections"),connectionId:U.z.string(),namespace:U.z.string(),inferredFromPrivileges:U.z.boolean().optional()}),q=U.z.object({type:U.z.literal("Collection"),subTab:$,initialQuery:U.z.record(U.z.any()).optional(),initialPipeline:U.z.array(U.z.unknown()).optional(),initialPipelineText:U.z.string().optional(),initialAggregation:U.z.unknown().optional(),editViewName:U.z.string().optional(),connectionId:U.z.string(),namespace:U.z.string(),inferredFromPrivileges:U.z.boolean().optional()}),G=U.z.discriminatedUnion("type",[V,H,K,j,B,z,Y,q]).and(U.z.object({id:U.z.string()})),Z=U.z.object({tabs:U.z.array(G),activeTabId:U.z.string().nullable(),timestamp:U.z.number()}),J=()=>{throw new Error("Can't find Workspaces storage service in React context")};class Q extends U.ZN{write(){return J(),Promise.resolve(!0)}delete(){return J(),Promise.resolve(!0)}readAll(){return J(),Promise.resolve({data:[],errors:[]})}readOne(){return J(),Promise.resolve(void 0)}updateAttributes(){return J(),Promise.resolve(!0)}}const X=new Q(Z,"WorkspacesState"),ee=r().createContext(X),te=(0,i.mb)((()=>(0,o.useContext)(ee)),"workspacesStorageServiceLocator");var ne=n(13353);const ae=({orgId:e,projectId:t,atlasService:n,children:a})=>{const o=(0,d.nfZ)(new U.Tu(Z,"WorkspacesState",{orgId:e,projectId:t,atlasService:n,serialize:e=>ne.EJSON.stringify(e,{relaxed:!1}),deserialize:e=>ne.EJSON.parse(e)}));return r().createElement(ee.Provider,{value:o},a)};const oe=(0,i.nk)({name:"Workspaces",component:_,activate:function({initialWorkspaceTabs:e,onBeforeUnloadCallbackRequest:t},{globalAppRegistry:n,instancesManager:a,connections:o,logger:r,preferences:i,userData:s},{on:l,cleanup:d,addCleanup:u}){const m=function(e,t){const n=e&&e.length>0?e.map((e=>(0,c.Tr)(e))):[],a=(0,F.y$)(c.Ay,{tabs:n,activeTabId:n[n.length-1]?.id??null,collectionInfo:{},databaseInfo:{}},(0,F.Tw)(P.A.withExtraArgument(t),function(e){return t=>n=>a=>{const o=t.getState(),r=n(a),i=t.getState();return o!==i&&e.preferences.getPreferences().enableRestoreWorkspaces&&W(i,e),r}}(t)));return a}(e,{globalAppRegistry:n,instancesManager:a,connections:o,logger:r,preferences:i,userData:s});m.dispatch((0,c.yv)()),u(c.KB);const p=(e,t)=>{l(t,"change:collections._id",(e=>{const{_id:t}=e.previousAttributes();m.dispatch((0,c.fL)(t,e.ns))})),l(t,"change:databases.inferred_from_privileges",(t=>{const n=`${e}.${t._id}`,a={inferredFromPrivileges:t.inferred_from_privileges};m.dispatch((0,c.vn)(n,a))})),l(t,"change:collections.inferred_from_privileges",(t=>{const n=`${e}.${t._id}`,a={isTimeSeries:t.isTimeSeries,isReadonly:t.readonly??t.isView,sourceName:t.sourceName,inferredFromPrivileges:t.inferred_from_privileges};m.dispatch((0,c.gb)(n,a))})),l(t,"remove:collections",(e=>{m.dispatch((0,c.Xc)(e.ns))})),l(t,"remove:databases",(e=>{m.dispatch((0,c.mS)(e.name))}))};for(const[e,t]of a.listMongoDBInstances())p(e,t);return l(a,g.hV.InstanceCreated,(function(e,t){p(e,t)})),l(o,"disconnected",(function(e){m.dispatch((0,c.oY)(e))})),t?.((()=>m.dispatch((0,c.PM)()))),{store:m,context:h.hN,deactivate:d}}},{instancesManager:g.Q3,connections:s.u4,logger:(0,p.fF)("COMPASS-WORKSPACES-UI"),preferences:R.fx,userData:te});var re=n(28508),ie=n(40260),se=n.n(ie);function le(e,t){return e.type===t}const ce={collections:[],collectionsLoadingStatus:{status:"initial",error:null},instance:{isWritable:!1,isDataLake:!1}},de="compass-collections/COLLECTIONS_CHANGED",ue="compass-collections/INSTANCE_CHANGED",me=e=>({type:ue,isWritable:e.isWritable,isDataLake:e.dataLake.isDataLake}),pe=(e=ce,t)=>le(t,de)?{...e,collections:t.collections,collectionsLoadingStatus:t.status===e.collectionsLoadingStatus.status?e.collectionsLoadingStatus:{status:t.status,error:t.error}}:le(t,ue)?{...e,instance:{isWritable:t.isWritable,isDataLake:t.isDataLake}}:e;function he(e,t){return e.type===t}const ge={databases:[],databasesLoadingStatus:{status:"initial",error:null},instance:{isReadonly:!1,isWritable:!0,isGenuineMongoDB:!0,isDataLake:!1}},fe="databases-workspace/instance-changed",ye="databases-workspaces/databases-changed",be=(e=ge,t)=>he(t,fe)?{...e,instance:{isWritable:t.isWritable,isDataLake:t.isDataLake,isGenuineMongoDB:t.isGenuineMongoDB}}:he(t,ye)?{...e,databases:t.databases,databasesLoadingStatus:{status:t.status,error:t.error}}:e,ve="Collections",Ce=(0,i.nk)({name:"Collections",component:function({children:e}){return r().createElement(r().Fragment,null,e)},activate:function(e,{globalAppRegistry:t,instance:n,dataService:a,database:o},{on:r,cleanup:i,addCleanup:s}){const l=(0,F.y$)(pe,{collections:o.collections.toJSON(),collectionsLoadingStatus:{status:o.collectionsStatus,error:o.collectionsStatusError},instance:{isWritable:n.isWritable,isDataLake:n.dataLake.isDataLake}},(0,F.Tw)(P.A.withExtraArgument({globalAppRegistry:t,database:o,dataService:a}))),c=se()((()=>{l.dispatch((e=>({type:de,status:e.collectionsStatus,error:e.collectionsStatusError,collections:e.collections.toJSON()}))(o))}),300,{leading:!0,trailing:!0});return s((()=>{c.cancel()})),r(o,"change:collectionsStatus",c),r(o,"change:collections.status",c),r(o,"change:collections._id",c),r(o,"add:collections",c),r(o,"remove:collections",c),r(n,"change:dataLake.isDataLake",(()=>{l.dispatch(me(n))})),r(n,"change:isWritable",(()=>{l.dispatch(me(n))})),o.fetchCollectionsDetails({dataService:a}),{store:l,deactivate:i}}},{instance:g.A$,database:g.p8,dataService:s.S1});var Ee=n(19125),Se=(n(95039),n(9174)),ke=n(39061);const we={isRunning:!1,isVisible:!1,databaseName:null,error:null,connectionId:"",connectionMetaData:{}},xe="databases-collections/Reset",Ae="databases-collections/create-collection/Open",De="databases-collections/create-collection/Close",Ie="databases-collections/error/HandleError",Me="databases-collections/error/ClearError",Te="databases-collections/is-running/ToggleIsRunning",Le="databases-collections/TopologyChanged",Oe="databases-collections/ServerVersionRetrieved",Ne="databases-collections/KMSProvidersRetrieved",_e=(e,t=null)=>(n,a,{track:o})=>{o("Screen",{name:t?"create_collection_modal":"create_database_modal"},void 0),n({type:Ae,connectionId:e,databaseName:t})},Fe=e=>({type:Ie,error:e}),Pe=()=>({type:Me}),We=e=>({type:Te,isRunning:e}),Re=(e,t)=>({type:Le,connectionId:e,newTopology:t}),Ue=(e,t)=>({type:Oe,connectionId:e,version:t});function $e(e,t){return e.type===t}const Ve=(e=we,t)=>$e(t,xe)?{...we}:$e(t,De)?{...we,connectionMetaData:e.connectionMetaData}:$e(t,Ae)?{...e,connectionId:t.connectionId,databaseName:t.databaseName,isRunning:!1,isVisible:!0,error:null}:$e(t,Ie)?{...e,error:t.error}:$e(t,Me)?{...e,error:null}:$e(t,Te)?{...e,isRunning:t.isRunning}:$e(t,Le)?{...e,connectionMetaData:{...e.connectionMetaData,[t.connectionId]:{...e.connectionMetaData[t.connectionId],currentTopologyType:t.newTopology}}}:$e(t,Oe)?{...e,connectionMetaData:{...e.connectionMetaData,[t.connectionId]:{...e.connectionMetaData[t.connectionId],serverVersion:t.version}}}:$e(t,Ne)?{...e,connectionMetaData:{...e.connectionMetaData,[t.connectionId]:{...e.connectionMetaData[t.connectionId],configuredKMSProviders:t.configuredKMSProviders}}}:e;var He=n(75342),Ke=n.n(He),je=n(90605),Be=n.n(je);function ze({collectionName:e,onChangeCollectionName:t}){return r().createElement(d.GEW,null,r().createElement(d.ksK,{required:!0,label:"Collection Name","data-testid":"collection-name",onChange:e=>t(e.target.value),value:e,spellCheck:!1}))}ze.propTypes={collectionName:Ke().string.isRequired,onChangeCollectionName:Ke().func.isRequired};const Ye=ze;function qe({databaseName:e,onChangeDatabaseName:t}){return r().createElement(d.GEW,null,r().createElement(d.ksK,{required:!0,label:"Database Name","data-testid":"database-name",onChange:e=>t(e.target.value),value:e,spellCheck:!1}))}qe.propTypes={databaseName:Ke().string.isRequired,onChangeDatabaseName:Ke().func.isRequired};const Ge=qe;var Ze=n(48783),Je=n.n(Ze);const Qe=(0,d.AHW)({zIndex:1,"button:focus, button:focus-within":{zIndex:20}}),Xe=["seconds","minutes","hours"];function et({isTimeSeries:e,isClustered:t,isFLE2:n,onChangeIsTimeSeries:a,onChangeField:i,timeSeries:s,expireAfterSeconds:l,supportsFlexibleBucketConfiguration:c}){const{granularity:u,metaField:m,timeField:p,bucketMaxSpanSeconds:h,bucketRoundingSeconds:g}=s,f=(0,o.useCallback)((e=>{const{name:t,value:n}=e.currentTarget;i(t,n)}),[i]);return r().createElement(d.V7r,{disabled:t||n,onToggle:e=>a(e),toggled:e,label:"Time-Series","data-testid":"time-series-fields",helpUrl:"https://www.mongodb.com/docs/manual/core/timeseries-collections/",description:"Time-series collections efficiently store sequences of measurements over a period of time."},r().createElement(d.GEW,null,r().createElement(d.ksK,{value:p,label:"timeField",name:"timeSeries.timeField",description:"Specify which field should be used as timeField for the time-series collection. This field must have a BSON type date.",required:!0,onChange:f,spellCheck:!1})),r().createElement(d.GEW,null,r().createElement(d.ksK,{label:"metaField",name:"timeSeries.metaField",description:"The metaField is the designated field for metadata.",optional:!0,value:m,onChange:f,spellCheck:!1})),r().createElement(d.GEW,null,r().createElement(d.l6P,{id:"timeSeries-granularity",className:Qe,label:"granularity",name:"timeSeries.granularity",placeholder:"Select a value [optional]",description:"The granularity field allows specifying a coarser granularity so measurements over a longer time span can be more efficiently stored and queried.",onChange:e=>i("timeSeries.granularity",e),allowDeselect:!0,value:u,disabled:!(!h&&!g)},Xe.map((e=>r().createElement(d.c$x,{key:e,value:e},e))))),c&&r().createElement(r().Fragment,null,r().createElement(d.GEW,null,r().createElement(d.ksK,{value:h,label:"bucketMaxSpanSeconds",name:"timeSeries.bucketMaxSpanSeconds",description:"The maximum time span between measurements in a bucket.",optional:!0,type:"number",onChange:f,spellCheck:!1,disabled:!!u})),r().createElement(d.GEW,null,r().createElement(d.ksK,{value:g,label:"bucketRoundingSeconds",name:"timeSeries.bucketRoundingSeconds",description:"The time interval that determines the starting timestamp for a new bucket.",optional:!0,type:"number",onChange:f,spellCheck:!1,disabled:!!u}))),r().createElement(d.GEW,null,r().createElement(d.ksK,{value:l,label:"expireAfterSeconds",name:"expireAfterSeconds",description:"The expireAfterSeconds field enables automatic deletion of documents older than the specified number of seconds.",optional:!0,type:"number",onChange:f,spellCheck:!1})))}et.propTypes={isTimeSeries:Ke().bool.isRequired,isClustered:Ke().bool.isRequired,isFLE2:Ke().bool.isRequired,onChangeIsTimeSeries:Ke().func.isRequired,onChangeField:Ke().func.isRequired,timeSeries:Ke().object.isRequired,expireAfterSeconds:Ke().string.isRequired,supportsFlexibleBucketConfiguration:Ke().bool.isRequired};const tt=et;function nt({isTimeSeries:e,isClustered:t,clusteredIndex:n,onChangeIsClustered:a,onChangeField:i,expireAfterSeconds:s}){const l=(0,o.useCallback)((e=>{const{name:t,value:n}=e.currentTarget;i(t,n)}),[i]);return r().createElement(d.V7r,{toggled:t,disabled:e,onToggle:e=>a(e),label:"Clustered Collection","data-testid":"clustered-collection-fields",helpUrl:"https://www.mongodb.com/docs/manual/core/clustered-collections/",description:"Clustered collections store documents ordered by a user-defined cluster key."},r().createElement(d.GEW,null,r().createElement(d.ksK,{name:"clusteredIndex.name",value:n.name,label:"name","data-testid":"clustered-index-name",type:"text",description:"The clustered index name is optional, otherwise automatically generated.",optional:!0,onChange:l,spellCheck:!1})),r().createElement(d.GEW,null,r().createElement(d.ksK,{value:s,label:"expireAfterSeconds",name:"expireAfterSeconds",description:"The expireAfterSeconds field enables automatic deletion of documents older than the specified number of seconds. The _id field must be a date or an array that contains date values.",optional:!0,type:"number",onChange:l,spellCheck:!1})))}nt.propTypes={isTimeSeries:Ke().bool.isRequired,isClustered:Ke().bool.isRequired,clusteredIndex:Ke().object.isRequired,onChangeIsClustered:Ke().func.isRequired,onChangeField:Ke().func.isRequired,expireAfterSeconds:Ke().string.isRequired};const at=nt;function ot(e){try{return Je().gte(e,"6.3.0-alpha0")}catch{return!0}}var rt=n(80223);const it={local:"Local",gcp:"GCP",azure:"Azure",aws:"AWS",kmip:"KMIP"},st={local:"/* No KeyEncryptionKey required */\n{}",aws:"{\n region: '',\n key: ''\n}",gcp:"{\n projectId: '',\n location: '',\n keyRing: '',\n keyName: '',\n}",azure:"{\n keyName: '',\n keyVaultEndpoint: '',\n}",kmip:"/* No KeyEncryptionKey required */\n{}"};function lt(e){return st[e.split(":")[0]]}const ct="queryable-encrypted-fields-editor-id",dt="key-encryption-key-editor-id";function ut({isTimeSeries:e,isFLE2:t,onChangeIsFLE2:n,onChangeField:a,fle2:i,configuredKMSProviders:s}){const[l,c]=(0,o.useState)(i.keyEncryptionKey||st[i.kmsProvider]);return r().createElement(d.V7r,{toggled:t,disabled:e,onToggle:e=>n(e),label:"Queryable Encryption","data-testid":"fle2-fields",helpUrl:"https://dochub.mongodb.org/core/rqe-encrypted-fields",description:"Encrypt a subset of the fields using Queryable Encryption."},r().createElement(d.GEW,null,r().createElement(d.JU7,{htmlFor:ct},"Encrypted fields"),r().createElement(d.VYo,null,"Indicate which fields should be encrypted and whether they should be queryable."),r().createElement(rt.Jn,{id:ct,text:i.encryptedFields,onChangeText:e=>a("fle2.encryptedFields",e),"data-testid":"fle2-encryptedFields"})),r().createElement(d.GEW,null,r().createElement(d.JU7,{htmlFor:"createcollection-radioboxgroup"},"KMS Provider"),r().createElement(d.VYo,null,"Optional. If no keyId is specified in the encrypted fields config, Compass will create new data keys for each encrypted field using the specified KMS."),r().createElement(d.E99,{onChange:e=>{e.preventDefault(),a(["fle2.kmsProvider","fle2.keyEncryptionKey"],[e.target.value,lt(e.target.value)])},id:"createcollection-radioboxgroup",value:i.kmsProvider},(s||Object.keys(it)).map((e=>r().createElement(d.VCA,{id:`${e}-kms-button`,"data-testid":`${e}-kms-button`,checked:i.kmsProvider===e,value:e,key:e},function(e){const t=e.split(":");return 1===t.length?it[t[0]]:`${it[t[0]]} ${t[1]}`}(e)))))),r().createElement(d.GEW,null,r().createElement(d.JU7,{htmlFor:dt},"Key Encryption Key"),r().createElement(d.VYo,null,"Specify which key encryption key to use for creating new data encryption keys."),r().createElement(rt.Jn,{id:dt,text:l,onChangeText:e=>{c(e),a("fle2.keyEncryptionKey",e)},"data-testid":"fle2-keyEncryptionKey"})))}ut.propTypes={isTimeSeries:Ke().bool.isRequired,isFLE2:Ke().bool.isRequired,onChangeIsFLE2:Ke().func.isRequired,onChangeField:Ke().func.isRequired,fle2:Ke().object.isRequired,configuredKMSProviders:Ke().array};const mt=ut,pt=[{field:"locale",values:[{value:"af",label:"af - Afrikaans"},{value:"sq",label:"sq - Albanian"},{value:"am",label:"am - Amharic"},{value:"ar",label:"ar - Arabic"},{value:"ar@collation=compat",label:"ar - Arabic - compat"},{value:"hy",label:"hy - Armenian"},{value:"as",label:"as - Assamese"},{value:"az",label:"az - Azeri"},{value:"az@collation=search",label:"az - Azeri - search"},{value:"be",label:"be - Belarusian"},{value:"bn",label:"bn - Bengali"},{value:"bn@collation=traditional",label:"bn - Bengali - traditional"},{value:"bs",label:"bs - Bosnian"},{value:"bs@collation=search",label:"bs - Bosnian - search"},{value:"bs_Cyrl",label:"bs_Cyrl - Bosnian (Cyrillic)"},{value:"bg",label:"bg - Bulgarian"},{value:"my",label:"my - Burmese"},{value:"ca",label:"ca - Catalan"},{value:"ca@collation=search",label:"ca - Catalan - search"},{value:"chr",label:"chr - Cherokee"},{value:"zh",label:"zh - Chinese"},{value:"zh@collation=big5han",label:"zh - Chinese - big5han"},{value:"zh@collation=gb2312han",label:"zh - Chinese - gb2312han"},{value:"zh@collation=pinyin",label:"zh - Chinese - pinyin"},{value:"zh@collation=unihan",label:"zh - Chinese - unihan"},{value:"zh@collation=zhuyin",label:"zh - Chinese - zhuyin"},{value:"zh_Hant",label:"zh_Hant - Chinese (Traditional)"},{value:"zh_Hant@collation=stroke",label:"zh_Hant - Chinese (Traditional) - stroke"},{value:"hr",label:"hr - Croatian"},{value:"hr@collation=search",label:"hr - Croatian - search"},{value:"cs",label:"cs - Czech"},{value:"cs@collation=search",label:"cs - Czech - search"},{value:"da",label:"da - Danish"},{value:"da@collation=search",label:"da - Danish - search"},{value:"nl",label:"nl - Dutch"},{value:"dz",label:"dz - Dzongkha"},{value:"en",label:"en - English"},{value:"en_US",label:"en_US - English (United States)"},{value:"en_US_POSIX",label:"en_US_POSIX - English (United States, Computer)"},{value:"eo",label:"eo - Esperanto"},{value:"et",label:"et - Estonian"},{value:"ee",label:"ee - Ewe"},{value:"fo",label:"fo - Faroese"},{value:"fil",label:"fil - Filipino"},{value:"fi_FI",label:"fi_FI - Finnish"},{value:"fi_FI@collation=search",label:"fi_FI - Finnish - search"},{value:"fi_FI@collation=traditional",label:"fi_FI - Finnish - traditional"},{value:"fr",label:"fr - French"},{value:"fr_CA",label:"fr_CA - French (Canada)"},{value:"gl",label:"gl - Galician"},{value:"gl@collation=search",label:"gl - Galician - search"},{value:"ka",label:"ka - Georgian"},{value:"de",label:"de - German"},{value:"de@collation=search",label:"de - German - search"},{value:"de@collation=eor",label:"de - German - eor"},{value:"de@collation=phonebook",label:"de - German - phonebook"},{value:"de_AT",label:"de_AT - German (Austria)"},{value:"de_AT@collation=phonebook",label:"de_AT - German (Austria) - phonebook"},{value:"el",label:"el - Greek"},{value:"gu",label:"gu - Gujarati"},{value:"ha",label:"ha - Hausa"},{value:"haw",label:"haw - Hawaiian"},{value:"he",label:"he - Hebrew"},{value:"he@collation=search",label:"he - Hebrew - search"},{value:"hi",label:"hi - Hindi"},{value:"hu",label:"hu - Hungarian"},{value:"is",label:"is - Icelandic"},{value:"is@collation=search",label:"is - Icelandic - search"},{value:"ig",label:"ig - Igbo"},{value:"smn",label:"smn - Inari Sami"},{value:"smn@collation=search",label:"smn - Inari Sami - search"},{value:"id",label:"id - Indonesian"},{value:"ga",label:"ga - Irish"},{value:"it",label:"it - Italian"},{value:"ja",label:"ja - Japanese"},{value:"ja@collation=unihan",label:"ja - Japanese - unihan"},{value:"kl",label:"kl - Kalaallisut"},{value:"kl@collation=search",label:"kl - Kalaallisut - search"},{value:"kn",label:"kn - Kannada"},{value:"kn@collation=traditional",label:"kn - Kannada - traditional"},{value:"kk",label:"kk - Kazakh"},{value:"km",label:"km - Khmer"},{value:"kok",label:"kok - Konkani"},{value:"ko",label:"ko - Korean"},{value:"ko@collation=search",label:"ko - Korean - search"},{value:"ko@collation=searchjl",label:"ko - Korean - searchjl"},{value:"ko@collation=unihan",label:"ko - Korean - unihan"},{value:"ky",label:"ky - Kyrgyz"},{value:"lk",label:"lk - Lakota"},{value:"lo",label:"lo - Lao"},{value:"lv",label:"lv - Latvian"},{value:"li",label:"li - Lingala"},{value:"li@collation=phonetic",label:"li - Lingala - phonetic"},{value:"lt",label:"lt - Lithuanian"},{value:"dsb",label:"dsb - Lower Sorbian"},{value:"lb",label:"lb - Luxembourgish"},{value:"mk",label:"mk - Macedonian"},{value:"ms",label:"ms - Malay"},{value:"ml",label:"ml - Malayalam"},{value:"mt",label:"mt - Maltese"},{value:"mr",label:"mr - Marathi"},{value:"mn",label:"mn - Mongolian"},{value:"ne",label:"ne - Nepali"},{value:"se",label:"se - Northern Sami"},{value:"se@collation=search",label:"se - Northern Sami - search"},{value:"nb",label:"nb - Norwegian Bokmål"},{value:"nb@collation=search",label:"nb - Norwegian Bokmål - search"},{value:"nn",label:"nn - Norwegian Nynorsk"},{value:"nn@collation=search",label:"nn - Norwegian Nynorsk - search"},{value:"or",label:"or - Oriya"},{value:"om",label:"om - Oromo"},{value:"ps",label:"ps - Pashto"},{value:"fa",label:"fa - Persian"},{value:"fa_AF",label:"fa_AF - Persian (Afghanistan)"},{value:"pl",label:"pl - Polish"},{value:"pt",label:"pt - Portuguese"},{value:"pa",label:"pa - Punjabi"},{value:"ro",label:"ro - Romanian"},{value:"ru",label:"ru - Russian"},{value:"sr",label:"sr - Serbian"},{value:"sr_Latn",label:"sr_Latn - Serbian (Latin)"},{value:"sr_Latn@collation=search",label:"sr_Latn - Serbian (Latin) - search"},{value:"si",label:"si - Sinhala"},{value:"si@collation=dictionary",label:"si - Sinhala - dictionary"},{value:"sk",label:"sk - Slovak"},{value:"sk@collation=search",label:"sk - Slovak - search"},{value:"sl",label:"sl - Slovenian"},{value:"es",label:"es - Spanish"},{value:"es@collation=search",label:"es - Spanish - search"},{value:"es@collation=traditional",label:"es - Spanish - traditional"},{value:"sw",label:"sw - Swahili"},{value:"sv",label:"sv - Swedish"},{value:"sv@collation=search",label:"sv - Swedish - search"},{value:"ta",label:"ta - Tamil"},{value:"te",label:"te - Telugu"},{value:"th",label:"th - Thai"},{value:"bo",label:"bo - Tibetan"},{value:"to",label:"to - Tongan"},{value:"tr",label:"tr - Turkish"},{value:"tr@collation=search",label:"tr - Turkish - search"},{value:"uk",label:"uk - Ukrainian"},{value:"hsb",label:"hsb - Upper Sorbian"},{value:"ur",label:"ur - Urdu"},{value:"ug",label:"ug - Uyghur"},{value:"vi",label:"vi - Vietnamese"},{value:"vi@collation=traditional",label:"vi - Vietnamese - traditional"},{value:"wae",label:"wae - Walser"},{value:"cy",label:"cy - Welsh"},{value:"yi",label:"yi - Yiddish"},{value:"yi@collation=search",label:"yi - Yiddish - search"},{value:"yo",label:"yo - Yoruba"},{value:"zu",label:"zu - Zulu"},{value:"simple",label:"simple"}],required:!0},{field:"strength",label:"Strength",values:[1,2,3,4,5]},{field:"caseLevel",values:[{value:!0,label:"true"},{value:!1,label:"false"}]},{field:"caseFirst",label:"Case First",values:["upper","lower","off"]},{field:"numericOrdering",values:[{value:!0,label:"true"},{value:!1,label:"false"}]},{field:"alternate",label:"Alternate",values:["non-ignorable","shifted"]},{field:"maxVariable",label:"Max-Variable",values:["punct","space"]},{field:"backwards",values:[{value:!0,label:"true"},{value:!1,label:"false"}]},{field:"normalization",values:[{value:!0,label:"true"},{value:!1,label:"false"}]}],ht=(0,d.AHW)({zIndex:1,"button[aria-expanded=true]":{zIndex:20}});function gt({collation:e,changeCollationOption:t}){return pt.map((n=>r().createElement(d.GEW,{key:n.field},r().createElement(d.l6P,{id:`collation-field-${n.field}`,className:ht,label:n.field,name:n.field,placeholder:"Select a value"+(n.required?"":" [optional]"),onChange:e=>{return t(n.field,(a=e,Object.is(+a,NaN)?"false"!==a&&("true"===a||a):+a));var a},size:d.AJJ.Small,allowDeselect:!1,value:Be().isNil(e[n.field])?"":String(e[n.field])},function(e){const t=e.map((e=>({value:"object"==typeof e?e.value:e,label:"object"==typeof e?e.label:e})));return Be().sortBy(t,"value").map((({value:e,label:t})=>r().createElement(d.c$x,{key:t,value:`${e}`},t)))}(n.values)))))}gt.propTypes={collation:Ke().object.isRequired,changeCollationOption:Ke().func.isRequired};const ft=gt;function yt({collation:e,isCustomCollation:t,onChangeCollationOption:n,onChangeIsCustomCollation:a}){return r().createElement(d.V7r,{onToggle:e=>{a(e)},label:"Use Custom Collation","data-testid":"use-custom-collation-fields",toggled:t,description:"Collation allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks.",helpUrl:"https://docs.mongodb.com/master/reference/collation/"},r().createElement(ft,{collation:e,changeCollationOption:n}))}yt.propTypes={collation:Ke().object.isRequired,isCustomCollation:Ke().bool.isRequired,onChangeCollationOption:Ke().func.isRequired,onChangeIsCustomCollation:Ke().func.isRequired};const bt=yt,vt=(0,d.AHW)({paddingLeft:d.YKD[400]});function Ct(e){return!Be().isNil(e)&&`${e}`?+e:void 0}function Et(e){const t={};for(const[n,a]of Object.entries(e))Be().isNil(a)||Be().isString(a)&&""===a.trim()||(t[n]=Be().isObjectLike(a)?Et(a):a);return t}class St extends o.PureComponent{static propTypes={onChange:Ke().func.isRequired,serverVersion:Ke().string,withDatabase:Ke().bool,configuredKMSProviders:Ke().array,currentTopologyType:Ke().string};state={isCustomCollation:!1,isTimeSeries:!1,isClustered:!1,isFLE2:!1,fields:{collation:{},collectionName:"",databaseName:"",timeSeries:{},expireAfterSeconds:"",clusteredIndex:{name:"",unique:!0,key:{_id:1}},fle2:{encryptedFields:'{\n fields: [\n {\n path: "encryptedField",\n // keyId: UUID("..."), // or specify KMS + Key encryption key below\n bsonType: "string",\n queries: { "queryType": "equality" } // optional\n }\n ]\n}',kmsProvider:1===(this.props.configuredKMSProviders||[]).length?this.props.configuredKMSProviders[0]:"",keyEncryptionKey:""}}};setField(e,t){const n=Be().cloneDeep(this.state.fields);if(Array.isArray(e))for(let a=0;a<e.length;a++)Be().set(n,e[a],t[a]);else Be().set(n,e,t);this.setState({fields:n},this.updateOptions)}updateOptions=()=>{this.props.onChange({database:this.state.fields.databaseName,collection:this.state.fields.collectionName,options:this.buildOptions()})};buildOptions(){const{isCustomCollation:e,isTimeSeries:t,isClustered:n,isFLE2:a,fields:o}=this.state;return Et({...e?{collation:o.collation}:{},...t?{timeseries:{...o.timeSeries,bucketMaxSpanSeconds:Ct(o.timeSeries.bucketMaxSpanSeconds),bucketRoundingSeconds:Ct(o.timeSeries.bucketRoundingSeconds)},expireAfterSeconds:Ct(o.expireAfterSeconds)}:{},...n?{clusteredIndex:{...o.clusteredIndex},expireAfterSeconds:Ct(o.expireAfterSeconds)}:{},...a?{encryptedFields:o.fle2.encryptedFields.trim(),kmsProvider:`${o.fle2.kmsProvider||""}`,keyEncryptionKey:o.fle2.keyEncryptionKey.trim()}:{}})}render(){const{serverVersion:e,withDatabase:t}=this.props,{fields:n,isCustomCollation:a,isTimeSeries:o,isClustered:i,isFLE2:s}=this.state,{collectionName:l,databaseName:c,collation:u,timeSeries:m,expireAfterSeconds:p,clusteredIndex:h,fle2:g}=n;return r().createElement(r().Fragment,null,t&&r().createElement(Ge,{databaseName:c,onChangeDatabaseName:e=>this.setField("databaseName",e)}),r().createElement(Ye,{collectionName:l,onChangeCollectionName:e=>this.setField("collectionName",e)}),function(e){try{return Je().gte(e,"5.0.0-alpha0")}catch(e){return!0}}(e)&&r().createElement(tt,{isTimeSeries:o,isClustered:i,isFLE2:s,onChangeIsTimeSeries:e=>this.setState({isTimeSeries:e,expireAfterSeconds:""},this.updateOptions),onChangeField:(e,t)=>this.setField(e,t),timeSeries:m,expireAfterSeconds:p,supportsFlexibleBucketConfiguration:ot(e)}),r().createElement(d.nD3,{"data-testid":"additional-collection-preferences",text:"Additional preferences",hintText:"(e.g. Custom collation, Clustered collections)"},r().createElement("div",{className:vt},r().createElement(bt,{collation:u,onChangeCollationOption:(e,t)=>{this.setField(`collation.${e}`,t)},onChangeIsCustomCollation:e=>this.setState({isCustomCollation:e},this.updateOptions),isCustomCollation:a}),function(e){try{return Je().gte(e,"5.3.0-alpha0")}catch(e){return!0}}(e)&&r().createElement(at,{isTimeSeries:o,isClustered:i,clusteredIndex:h,expireAfterSeconds:p,onChangeIsClustered:e=>this.setState({isClustered:e,expireAfterSeconds:""},this.updateOptions),onChangeField:(e,t)=>{this.setField(e,t)}}),function(e,t,n){if("Single"===t)return!1;if(!n||0===n.length)return!1;try{return Je().gte(e,"6.0.0-alpha0")}catch(e){return!0}}(e,this.props.currentTopologyType,this.props.configuredKMSProviders)&&r().createElement(mt,{isTimeSeries:o,isFLE2:s,fle2:g,configuredKMSProviders:this.props.configuredKMSProviders,onChangeIsFLE2:e=>this.setState({isFLE2:e,encryptedFields:{},kmsProvider:"",keyEncryptionKey:{}},this.updateOptions),onChangeField:(e,t)=>{this.setField(e,t)}}))))}}const kt=St,wt=(0,d.AHW)({marginTop:d.YKD[400],"&:not(:last-child)":{marginBottom:d.YKD[200]}});class xt extends o.PureComponent{state={data:{}};errorBannerRef=(0,o.createRef)();onDismissErrorMessage=()=>{this.props.clearError()};onCancel=()=>this.props.close();onConfirm=()=>{this.props.createNamespace(this.state.data)};onChange=e=>{this.setState({data:e})};renderError(){if(this.props.error)return r().createElement("div",{ref:this.errorBannerRef},r().createElement(d.lZ$,{variant:"danger",dismissible:!0,onClose:this.props.clearError},this.props.error.message))}renderCollectionNameRequiredNotice(){return r().createElement(d.lZ$,{className:wt,variant:"info"},"Before MongoDB can save your new database, a collection name must also be specified at the time of creation. ",r().createElement(d.N_E,{href:"https://www.mongodb.com/docs/manual/faq/fundamentals/#how-do-i-create-a-database-and-a-collection-",target:"_blank"},"More Information"))}render(){const e=null!==this.props.databaseName,t=!!(this.props.databaseName??this.state.data.database??"").trim(),n=!!(this.state.data.collection??"").trim(),a=e?"Create Collection":"Create Database";return r().createElement(d.k5W,{title:a,open:this.props.isVisible,onSubmit:this.onConfirm,onCancel:this.onCancel,submitButtonText:a,submitDisabled:!n||!t,"data-testid":e?"create-collection-modal":"create-database-modal"},r().createElement(kt,{serverVersion:this.props.serverVersion,withDatabase:!e,onChange:this.onChange,configuredKMSProviders:this.props.configuredKMSProviders,currentTopologyType:this.props.currentTopologyType}),!e&&!n&&this.renderCollectionNameRequiredNotice(),this.renderError())}componentDidUpdate(){this.errorBannerRef.current?.scrollIntoView()}}const At=(0,Ee.Ng)((e=>{const t=e.connectionMetaData[e.connectionId]??{};return{connectionId:e.connectionId,databaseName:e.databaseName,isCreateCollection:null!==e.databaseName,isRunning:e.isRunning,isVisible:e.isVisible,error:e.error,serverVersion:t.serverVersion,configuredKMSProviders:t.configuredKMSProviders,currentTopologyType:t.currentTopologyType}}),{createNamespace:e=>async(t,n,{globalAppRegistry:a,connections:o,logger:{debug:r},track:i,workspaces:s})=>{const{databaseName:l,connectionId:c}=n(),d=null!==l?"Collection":"Database",u=l??e.database?.trim(),p=`${u}.${e.collection.trim()}`;t(Pe()),u&&u.includes(".")&&t(Fe(new Error('Database names may not contain a "."')));try{t(We(!0));const n=o.getDataServiceForConnection(c),r=await async function(e,t){if(!t)return t;if((t={...t}).encryptedFields){try{t.encryptedFields=(0,Se.aN)(t.encryptedFields)}catch(e){throw new Error(`Could not parse encryptedFields config: ${e.message}`)}if(0===Object.keys(t.encryptedFields).length)delete t.encryptedFields;else if(t.kmsProvider){let n;try{n=(0,Se.aN)(t.keyEncryptionKey||"{}")}catch(e){throw new Error(`Could not parse keyEncryptionKey: ${e.message}`)}const a=t.encryptedFields?.fields;if(Array.isArray(a)){const o=[];for(const r of a)r.keyId||o.push((async()=>{r.keyId=await e.createDataKey(t.kmsProvider,{masterKey:n})})());await Promise.all(o)}}}else delete t.encryptedFields;return delete t.kmsProvider,delete t.keyEncryptionKey,t}(n,e.options);await n.createCollection(p,r??{});const l={has_collation:!!e.options.collation,is_timeseries:!!e.options.timeseries,is_clustered:!!e.options.clusteredIndex,is_fle2:!!e.options.encryptedFields,expires:!!e.options.expireAfterSeconds},u=o.getConnectionById(c)?.info;i(`${d} Created`,l,u),a.emit("collection-created",p,{connectionId:c});const h=(0,m.Ay)(p).isSpecial,g=u&&(0,ke.jD)(u,"globalWrites");s.openCollectionWorkspace(c,p,{newTab:!0,initialSubtab:!h&&g?"GlobalWrites":void 0}),t({type:xe})}catch(e){r("create collection failed",e),t(We(!1)),t(Fe(e))}},close:()=>({type:De}),clearError:Pe})(xt),Dt=At,It="Databases",Mt=(0,i.nk)({name:"Databases",component:function({children:e}){return r().createElement(r().Fragment,null,e)},activate:function(e,{globalAppRegistry:t,instance:n,dataService:a},{on:o,cleanup:r,addCleanup:i}){const s=(0,F.y$)(be,{databases:n.databases.toJSON(),databasesLoadingStatus:{status:n.databasesStatus,error:n.databasesStatusError},instance:{isWritable:n.isWritable,isDataLake:n.dataLake.isDataLake,isGenuineMongoDB:n.genuineMongoDB.isGenuine}},(0,F.Tw)(P.A.withExtraArgument({globalAppRegistry:t}))),l=se()((()=>{s.dispatch((e=>({type:ye,status:e.databasesStatus,error:e.databasesStatusError,databases:e.databases.toJSON()}))(n))}),300,{leading:!0,trailing:!0});i((()=>{l.cancel()})),o(n,"change:databasesStatus",l),o(n,"change:databases.status",l),o(n,"add:databases",l),o(n,"remove:databases",l);const c=()=>{s.dispatch((e=>({type:fe,isWritable:e.isWritable,isDataLake:e.dataLake.isDataLake,isGenuineMongoDB:e.genuineMongoDB.isGenuine}))(n))};return o(n,"change:isWritable",c),o(n,"change:dataLake.isDataLake",c),o(n,"change:genuineMongoDB.isGenuine",c),n.fetchDatabases({dataService:a}),{store:s,deactivate:r}}},{instance:g.A$,dataService:s.S1}),Tt="databases-collections/rename-collection/OPEN",Lt="databases-collections/rename-collection/CONFIRMATION_REQUIRED",Ot="database-collections/rename-collection/CLOSE",Nt="database-collections/rename-collection/TOGGLE_IS_RUNNING",_t="database-collections/rename-collection/HANDLE_ERROR",Ft=()=>({type:Ot}),Pt=e=>({type:_t,error:e}),Wt={isRunning:!1,modalState:"hidden",error:null,connectionId:"",databaseName:"",initialCollectionName:"",collections:[],areSavedQueriesAndAggregationsImpacted:!0},Rt=(e=Wt,t)=>t.type===Ot?Wt:t.type===Tt?{initialCollectionName:t.collection,connectionId:t.connectionId,databaseName:t.db,collections:t.collections,areSavedQueriesAndAggregationsImpacted:t.areSavedQueriesAndAggregationsImpacted,modalState:"input-form",isRunning:!1,error:null}:t.type===Nt?{...e,isRunning:!0,error:null}:t.type===_t?{...e,error:t.error,modalState:"input-form",isRunning:!1}:t.type===Lt?{...e,modalState:"confirmation-screen"}:e,Ut=(0,d.AHW)({display:"flex",gap:d.YKD[200],alignItems:"center"}),$t=(0,d.AHW)({marginTop:0,marginBottom:0,"&:not(:last-child)":{marginBottom:d.YKD[200]}});function Vt({areSavedQueriesAndAggregationsImpacted:e}){return r().createElement(d.lZ$,{variant:"warning","data-testid":"rename-collection-modal-warning"},r().createElement("p",{className:$t},"Renaming collection will result in loss of any unsaved queries, filters or aggregation pipelines."),e&&r().createElement("p",{className:$t},r().createElement("b",null,"Additionally, any saved queries or aggregations targeting this collection will need to be remapped to the new namespace.")))}const Ht=(0,Ee.Ng)((e=>e),{hideModal:()=>e=>{e(Ft())},submitModal:e=>async(t,n)=>{const{modalState:a}=n();"confirmation-screen"!==a?t({type:Lt}):await t((e=>async(t,n,{connections:a,globalAppRegistry:o,track:r})=>{const i=e.trim(),s=n(),{connectionId:l,databaseName:c,initialCollectionName:u}=s,m=a.getDataServiceForConnection(l);t({type:Nt});const p=`${c}.${u}`,h=`${c}.${i}`;try{await m.renameCollection(p,i),r("Collection Renamed",{},a.getConnectionById(l)?.info),o.emit("collection-renamed",{to:h,from:p},{connectionId:l}),t(Ft()),(0,d.c3r)("collection-rename-success",{variant:"success",title:`Collection renamed to ${i}`,timeout:5e3})}catch(e){t(Pt(e))}})(e))},clearError:()=>e=>{e(Pt(null))}})((function({modalState:e,error:t,initialCollectionName:n,collections:a,areSavedQueriesAndAggregationsImpacted:i,isRunning:s,hideModal:l,submitModal:c,clearError:u}){const[m,p]=(0,o.useState)(n),h=(0,o.useMemo)((()=>"hidden"!==e),[e]);(0,d.wTI)((()=>{h&&p(n)}),[h]);const g=(0,o.useCallback)((e=>{u(),p(e?.target.value)}),[p,u]);(0,re.ou)((e=>{h&&e("Screen",{name:"rename_collection_modal"},void 0)}),[h],void 0);const f=(0,o.useCallback)((()=>{l()}),[l]),y=a.filter((({name:e})=>e!==n&&e===m)).length>0,b=t?t.message.match(/target namespace exists/i)?"This collection name already exists in this database.":t.message:y?"This collection name already exists in this database.":void 0;return r().createElement(d.k5W,{title:"confirmation-screen"===e?"Confirm rename collection":"Rename collection",open:"hidden"!==e,onSubmit:()=>{c(m)},onCancel:f,submitButtonText:"input-form"===e?"Proceed to Rename":"Yes, rename collection",variant:"primary",submitDisabled:"input-form"===e&&(""===m||n===m||y),"data-testid":"rename-collection-modal"},"input-form"===e&&r().createElement(d.GEW,null,r().createElement(d.ksK,{"data-testid":"rename-collection-name-input",label:"New collection name",value:m,onChange:g})),"confirmation-screen"===e&&r().createElement(d.GEW,null,r().createElement("div",{"data-testid":"rename-collection-confirmation-screen"},`Are you sure you want to rename "${n}" to "${m}"?`)),b&&"input-form"===e&&r().createElement(d.lZ$,{variant:"danger","data-testid":"rename-collection-modal-error"},b),"confirmation-screen"===e&&r().createElement(Vt,{areSavedQueriesAndAggregationsImpacted:i}),s&&r().createElement(d.nBu,{className:Ut},r().createElement(d.Q0K,null),r().createElement("span",null,"Renaming Collection…")))})),Kt=Ht;var jt=n(2155),Bt=n(96452),zt=n(70002);const Yt=(0,d.AHW)({whiteSpace:"nowrap"}),qt=(0,d.AHW)({paddingTop:d.YKD[200],paddingRight:d.YKD[400],paddingBottom:d.YKD[400],paddingLeft:d.YKD[400],display:"grid",gridTemplate:"1fr / 100%",gap:d.YKD[200]}),Gt=(0,d.AHW)({display:"flex",alignItems:"center",gap:d.YKD[200]}),Zt=(0,d.AHW)({flex:"none"}),Jt=(0,d.AHW)({display:"flex",minWidth:0,paddingTop:d.YKD[200],paddingBottom:d.YKD[200]}),Qt=(0,d.AHW)({marginLeft:"auto"}),Xt=[],en=(0,d.AHW)({paddingTop:d.YKD[200]}),tn=({namespace:e,itemType:t,onCreateItemClick:n,onRefreshClick:a,renderLoadSampleDataBanner:i})=>{const l=(0,s.qm)(),c=(0,Bt.T8)(l),{openDatabasesWorkspace:u,openCollectionsWorkspace:p,openShellWorkspace:h}=(0,D.$L)(),g=(0,re.Jr)(),{enableShell:f}=(0,R.gc)(["enableShell"]),y=(0,o.useMemo)((()=>{const{database:t}=(0,m.Ay)(e??""),n=[{name:c,onClick:()=>{u(l.id)}}];return t&&n.push({name:t,onClick:()=>{p(l.id,t)}}),n}),[l.id,c,e,p,u]),b=i?.();return r().createElement("div",{className:qt},r().createElement("div",{className:Gt},r().createElement("div",{className:Jt},r().createElement(d.BIu,{items:y})),r().createElement("div",{className:(0,d.cx)(Gt,Zt,Qt)},f&&r().createElement(d.$nd,{size:"small",onClick:()=>{h(l.id,e?{initialEvaluate:`use(${JSON.stringify(e)})`}:void 0),g("Open Shell",{entrypoint:`${t}s`},l)},leftGlyph:r().createElement(d.Int,{glyph:"Shell"})},"Open MongoDB shell"),l.atlasMetadata&&r().createElement(d.$nd,{"data-testid":`${t}-header-view-monitoring`,size:"small",href:(0,zt.k4)(l.atlasMetadata),target:"_blank",rel:"noopener noreferrer",leftGlyph:r().createElement(d.Int,{glyph:"TimeSeries"})},"View monitoring"),l.atlasMetadata&&r().createElement(d.$nd,{"data-testid":`${t}-header-visualize-your-data`,size:"small",href:(0,zt.r0)(l.atlasMetadata,e),target:"_self",rel:"noopener noreferrer",leftGlyph:r().createElement(d.Int,{glyph:"Charts"})},"Visualize your data"),n&&r().createElement("div",{className:Zt,"data-testid":"create-controls"},r().createElement(d.$nd,{variant:"primary",leftGlyph:r().createElement(d.Int,{role:"presentation",glyph:"Plus"}),onClick:n,className:Yt,size:"small"},`Create ${t}`)),a&&r().createElement("div",{className:Zt,"data-testid":"refresh-controls"},r().createElement(d.$nd,{variant:"default",leftGlyph:r().createElement(d.Int,{role:"presentation",glyph:"Refresh"}),onClick:a,size:"small"},"Refresh")))),b&&r().createElement("div",{className:en},b))},nn=(0,d.AHW)({width:"100%",height:"100%"}),an=(0,d.AHW)({width:"100%",height:"100%",padding:`0 ${d.YKD[400]}px`}),on="item-actions-cell",rn=(0,d.AHW)({":hover":{[`.${on}`]:{button:{opacity:1}}}}),sn=(0,d.AHW)({button:{opacity:0,"&:focus":{opacity:1}},"*:has(button)":{minWidth:d.YKD[800]}}),ln=({item:e,onDeleteItemClick:t})=>{const{readOnly:n}=(0,R.gc)(["readOnly"]),a=(0,o.useMemo)((()=>((e,{readOnly:t,hasDeleteHandler:n})=>{const a=[];return t||!n||e.inferred_from_privileges||a.push({action:"delete",label:`Delete ${e.name}`,tooltip:`Delete ${e.name}`,icon:"Trash"}),a})(e,{readOnly:n,hasDeleteHandler:!!t})),[e,t,n]),i=(0,o.useCallback)((n=>{"delete"===n&&t?.(e._id)}),[e,t]);return r().createElement(d.ful,{"data-testid":"item-actions",actions:a,onAction:i})};function cn(e,t){return t?[...e,{id:"actions",header:"",maxSize:40,cell:e=>r().createElement(ln,{item:e.row.original,onDeleteItemClick:t})}]:e}const dn=({"data-testid":e,namespace:t,itemType:n,items:a,onItemClick:i,onCreateItemClick:s,onRefreshClick:l,renderLoadSampleDataBanner:c,tableContainerRef:u,table:m,rowItems:p})=>r().createElement("div",{className:nn,"data-testid":e},r().createElement(d.XvC,{toolbar:r().createElement(tn,{itemType:n,namespace:t,onCreateItemClick:s,onRefreshClick:l,renderLoadSampleDataBanner:c})},r().createElement(d.XIK,{table:m,shouldAlternateRowColor:!0,ref:u,className:an,shouldTruncate:!1,"aria-rowcount":a.length},r().createElement(d.ndF,{isSticky:!0},m.getHeaderGroups().map((e=>r().createElement(d.Syw,{key:e.id},e.headers.map((e=>r().createElement(d.A3f,{key:e.id,header:e},(0,d.KvR)(e.column.columnDef.header,e.getContext())))))))),r().createElement(d.BFY,{"data-testid":`${e}-body`},p.map((({row:t,virtualRow:n})=>{const a=t.isExpandedContent??!1;return r().createElement(o.Fragment,{key:t.id},!a&&r().createElement(d.fI1,{className:rn,"data-testid":`${e}-row-${t.original.name??t.id}`,row:t,virtualRow:n,onClick:()=>i(t.original._id)},t.getVisibleCells().map((e=>{const t="actions"===e.column.id;return r().createElement(d.fhW,{key:e.id,id:e.id,cell:e,className:(0,d.cx)({[on]:t,[sn]:t})},(0,d.KvR)(e.column.columnDef.cell,e.getContext()))}))),a&&r().createElement(d.bHD,{row:t}))})))))),un=({"data-testid":e,namespace:t,itemType:n,columns:a,items:i,onItemClick:s,onDeleteItemClick:l,onCreateItemClick:c,onRefreshClick:u,renderLoadSampleDataBanner:m})=>{const p=r().useRef(null),h=(0,o.useMemo)((()=>cn(a,l)),[a,l]),[g,f]=(0,D.i2)(`${n}-list-virtual-items-table`,Xt),y=(0,d.bQl)({containerRef:p,data:i,columns:h,virtualizerOptions:{estimateSize:()=>40,overscan:10},state:{sorting:g},onSortingChange:f,autoResetPageIndex:!1}),b=function(e){return e.virtual.getVirtualItems().map((e=>({row:e.row,virtualRow:e})))}(y);return r().createElement(dn,{"data-testid":e,namespace:t,itemType:n,items:i,onItemClick:s,onCreateItemClick:c,onRefreshClick:u,renderLoadSampleDataBanner:m,tableContainerRef:p,table:y,rowItems:b})},mn=({"data-testid":e,namespace:t,itemType:n,columns:a,items:i,onItemClick:s,onDeleteItemClick:l,onCreateItemClick:c,onRefreshClick:u,renderLoadSampleDataBanner:m})=>{const p=(0,o.useMemo)((()=>cn(a,l)),[a,l]),[h,g]=(0,D.i2)(`${n}-list-virtual-items-table`,Xt),f=(0,d.iXE)({data:i,columns:p,state:{sorting:h},onSortingChange:g,autoResetPageIndex:!1}),y=function(e){return e.getRowModel().rows.map((e=>({row:e,virtualRow:void 0})))}(f);return r().createElement(dn,{"data-testid":e,namespace:t,itemType:n,items:i,onItemClick:s,onCreateItemClick:c,onRefreshClick:u,renderLoadSampleDataBanner:m,table:f,rowItems:y})};var pn=n(15088).process;const hn=(0,d.AHW)({display:"flex",gap:d.YKD[100],flexWrap:"wrap",alignItems:"anchor-center",wordBreak:"break-word"}),gn=(0,d.AHW)({display:"flex"}),fn=(0,d.AHW)({color:d.MFm.gray.dark1}),yn=(0,d.AHW)({color:d.MFm.gray.base}),bn=(0,d.AHW)({display:"flex",gap:d.YKD[100],flexWrap:"wrap",alignItems:"anchor-center"}),vn=(0,d.AHW)({});function Cn(e){return"initial"!==e&&"fetching"!==e}const En=({databases:e,onDatabaseClick:t,onDeleteDatabaseClick:n,onCreateDatabaseClick:a,onRefreshClick:o,renderLoadSampleDataBanner:i})=>{let s=!0;"true"===pn.env.COMPASS_DISABLE_VIRTUAL_TABLE_RENDERING&&(s=!1);const l=(0,R.Fg)("enableDbAndCollStats"),c=(0,d.D27)(),u=r().useMemo((()=>function({darkMode:e,enableDbAndCollStats:t}){return[{accessorKey:"name",header:"Database name",enableSorting:!0,sortUndefined:"last",minSize:300,cell:t=>{const n=t.row.original,a=n.name;return r().createElement("span",{className:hn},r().createElement("span",{className:(0,d.cx)(n.inferred_from_privileges&&!e&&fn,n.inferred_from_privileges&&e&&yn)},a),n.inferred_from_privileges&&r().createElement(d.m_M,{align:"bottom",justify:"start",trigger:r().createElement("div",{className:gn},r().createElement(d.Int,{glyph:"InfoWithCircle"}))},"Your privileges grant you access to this namespace, but it might not currently exist"))}},{accessorKey:"storage_size",header:"Storage size",enableSorting:!0,sortUndefined:"last",maxSize:110,cell:e=>{const n=e.row.original;return Cn(n.status)?t&&void 0!==n.storage_size?(0,d.V0R)(n.storage_size):"-":r().createElement(d.OrA,{maxChar:10})}},{accessorKey:"data_size",header:"Data size",enableSorting:!0,sortUndefined:"last",maxSize:80,cell:e=>{const n=e.row.original;return Cn(n.status)?t&&void 0!==n.data_size?(0,d.V0R)(n.data_size):"-":r().createElement(d.OrA,{maxChar:10})}},{accessorKey:"collectionsLength",header:"Collections",enableSorting:!0,sortUndefined:"last",maxSize:110,cell:e=>{const n=e.row.original;if(!Cn(n.status))return r().createElement(d.OrA,{maxChar:10});const a=t?(0,d.$Mb)(n.collectionsLength):"-";return r().createElement("span",{className:bn},r().createElement("span",{className:vn},a),t&&e.getValue()>1e4&&r().createElement(d.gIH,{signals:d.qpO.get("too-many-collections")}))}},{accessorKey:"index_count",header:"Indexes",enableSorting:!0,sortUndefined:"last",maxSize:110,cell:e=>{const n=e.row.original;return Cn(n.status)?t&&void 0!==n.index_count?(0,d.$Mb)(n.index_count):"-":r().createElement(d.OrA,{maxChar:10})}}]}({darkMode:c,enableDbAndCollStats:l})),[c,l]),m=s?un:mn;return r().createElement(m,{virtual:s,"data-testid":"databases-list",columns:u,items:e,itemType:"database",onItemClick:t,onDeleteItemClick:n,onCreateItemClick:a,onRefreshClick:o,renderLoadSampleDataBanner:i})};var Sn=n(15088).process;const kn=(0,d.AHW)({display:"flex",gap:d.YKD[200],minHeight:20}),wn=({children:e})=>r().createElement("div",{className:kn},e),xn=(0,d.AHW)({gap:d.YKD[100],whiteSpace:"nowrap"}),An=(0,d.AHW)({fontWeight:"bold"}),Dn=(0,d.AHW)({color:d.MFm.white}),In=(0,d.AHW)({color:d.MFm.black}),Mn=({id:e,name:t,icon:n,variant:i,hint:s})=>{const l=(0,o.useCallback)((({className:o,children:s,...l}={})=>r().createElement(d.Exy,(0,a.A)({"data-testid":`collection-badge-${e}`,className:(0,d.cx)(xn,o),variant:i},l),n&&r().createElement(d.Int,{size:"small",glyph:n}),r().createElement("span",null,t),s)),[e,n,t,i]);return s?r().createElement(d.m_M,{trigger:l},s):l()},Tn=(0,d.AHW)({display:"flex",gap:d.YKD[100],flexWrap:"wrap",alignItems:"anchor-center",wordBreak:"break-word"}),Ln=(0,d.AHW)({display:"flex"}),On=(0,d.AHW)({color:d.MFm.gray.dark1}),Nn=(0,d.AHW)({color:d.MFm.gray.base});function _n(e){return"initial"!==e&&"fetching"!==e}const Fn=({namespace:e,collections:t,onCollectionClick:n,onDeleteCollectionClick:o,onCreateCollectionClick:i,onRefreshClick:s})=>{let l=!0;"true"===Sn.env.COMPASS_DISABLE_VIRTUAL_TABLE_RENDERING&&(l=!1);const c=(0,R.Fg)("enableDbAndCollStats"),u=(0,d.D27)(),m=r().useMemo((()=>function({darkMode:e,enableDbAndCollStats:t}){return[{accessorKey:"name",header:"Collection name",enableSorting:!0,sortUndefined:"last",minSize:250,cell:t=>{const n=t.row.original,a=n.name;return r().createElement("div",{className:Tn},r().createElement("span",{className:(0,d.cx)(n.inferred_from_privileges&&!e&&On,n.inferred_from_privileges&&e&&Nn)},a),n.inferred_from_privileges&&r().createElement(d.m_M,{align:"bottom",justify:"start",trigger:r().createElement("div",{className:Ln},r().createElement(d.Int,{glyph:"InfoWithCircle"}))},"Your privileges grant you access to this namespace, but it might not currently exist"))}},{accessorKey:"properties",header:"Properties",enableSorting:!0,sortUndefined:"last",cell:t=>{const n=t.row.original;if(!_n(n.status))return r().createElement(d.OrA,{maxChar:10});const o=n.properties.map((t=>function(e,t,{id:n,options:a}){switch(n){case"collation":return{id:n,name:n,variant:"darkgray",hint:r().createElement(r().Fragment,null,Object.entries(a??{}).map((([e,t])=>t?r().createElement("div",{key:e},r().createElement("strong",null,e,":")," ",String(t)):null)))};case"view":return{id:n,name:n,variant:"darkgray",icon:"Visibility",hint:r().createElement(r().Fragment,null,"Derived from"," ",r().createElement("span",{className:(0,d.cx)(An,t?In:Dn)},e.view_on))};case"capped":case"clustered":return{id:n,name:n,variant:"darkgray"};case"timeseries":{let t;return void 0===e.bucket_count&&void 0===e.avg_bucket_size||(t=r().createElement(r().Fragment,null,void 0!==e.bucket_count&&r().createElement("div",null,r().createElement("strong",null,"Bucket count:")," ",(0,d.$Mb)(e.bucket_count)),void 0!==e.avg_bucket_size&&r().createElement("div",null,r().createElement("strong",null,"Avg. bucket size:")," ",(0,d.V0R)(e.avg_bucket_size)))),{id:n,name:n,variant:"darkgray",icon:"TimeSeries",hint:t}}case"fle2":return{id:n,name:"Queryable Encryption",variant:"darkgray",icon:"Key"};default:return{id:n,name:n}}}(n,e,t)));return 0===o.length?"-":r().createElement(wn,null,o.map((e=>r().createElement(Mn,(0,a.A)({key:e.id},e)))))}},{accessorKey:"storage_size",header:"Storage size",enableSorting:!0,sortUndefined:"last",maxSize:110,cell:e=>{const n=e.row.original;if(!_n(n.status))return r().createElement(d.OrA,{maxChar:10});if("view"===n.type)return"-";if(!t||void 0===n.storage_size)return"-";const a=n.storage_size,o=(0,d.V0R)(a);if(void 0===n.free_storage_size)return o;const i=n.free_storage_size,s=a-i,l=r().createElement("div",null,r().createElement("div",null,r().createElement("strong",null,"Storage Size:")," ",(0,d.V0R)(a)," (total allocated)"),r().createElement("div",null,r().createElement("strong",null,"Used:")," ",(0,d.V0R)(s)),r().createElement("div",null,r().createElement("strong",null,"Free:")," ",(0,d.V0R)(i)));return r().createElement(d.p8Z,{definition:l,tooltipProps:{align:"top",justify:"start"}},o)}},{accessorKey:"document_size",header:"Data size",enableSorting:!0,sortUndefined:"last",maxSize:80,cell:e=>{const n=e.row.original;return _n(n.status)?"view"===n.type?"-":t&&void 0!==n.document_size?(0,d.V0R)(n.document_size):"-":r().createElement(d.OrA,{maxChar:10})}},{accessorKey:"document_count",header:"Documents",enableSorting:!0,sortUndefined:"last",maxSize:110,cell:e=>{const n=e.row.original;if(!_n(n.status))return r().createElement(d.OrA,{maxChar:10});const a=n.type;return"view"===a||"timeseries"===a?"-":t&&void 0!==n.document_count?(0,d.$Mb)(n.document_count):"-"}},{accessorKey:"avg_document_size",header:"Avg. document size",enableSorting:!0,sortUndefined:"last",maxSize:140,cell:e=>{const n=e.row.original;if(!_n(n.status))return r().createElement(d.OrA,{maxChar:10});const a=n.type;return"view"===a||"timeseries"===a?"-":t&&void 0!==n.avg_document_size?(0,d.V0R)(n.avg_document_size):"-"}},{accessorKey:"index_count",header:"Indexes",enableSorting:!0,sortUndefined:"last",maxSize:90,cell:e=>{const n=e.row.original;return _n(n.status)?"view"===n.type?"-":t&&void 0!==n.index_count?(0,d.$Mb)(n.index_count):"-":r().createElement(d.OrA,{maxChar:10})}},{accessorKey:"index_size",header:"Total index size",enableSorting:!0,sortUndefined:"last",maxSize:120,cell:e=>{const n=e.row.original;if(!_n(n.status))return r().createElement(d.OrA,{maxChar:10});if("view"===n.type)return"-";const a=n.index_size;return t&&void 0!==a?(0,d.V0R)(a):"-"}}]}({darkMode:u,enableDbAndCollStats:c})),[u,c]),p=l?un:mn;return r().createElement(p,{"data-testid":"collections-list",namespace:e,columns:m,items:t,itemType:"collection",onItemClick:n,onDeleteItemClick:o,onCreateItemClick:i,onRefreshClick:s})},Pn=()=>{const e=(0,d.D27)(),t=(0,o.useMemo)((()=>e?d.MFm.white:d.MFm.black),[e]);return r().createElement("svg",{width:"72",height:"72",viewBox:"0 0 72 72",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r().createElement("path",{d:"M68 31.975H65.8901M65.8901 31.975C62.7253 31.975 60.2637 34.425 60.2637 37.575V55.775C60.2637 60.325 56.5714 64 52 64H20C15.4286 64 11.7363 60.325 11.7363 55.775V37.575C11.7363 34.425 9.27472 31.975 6.10989 31.975M65.8901 31.975C62.7253 31.975 60.2637 29.525 60.2637 26.375V16.225C60.2637 11.675 56.5714 8 52 8H20C15.4286 8 11.7363 11.675 11.7363 16.225V26.375C11.7363 29.525 9.27472 31.975 6.10989 31.975M6.10989 31.975H4M20 11.0331C20 11.0331 34.0659 15.0771 52 11.0331",stroke:t,strokeMiterlimit:"10"}),r().createElement("path",{d:"M24 36.1318C24 42.7318 29.4 48.1318 36 48.1318C42.6 48.1318 48 42.7318 48 36.1318C48 29.5318 42.6 24.1318 36 24.1318C29.4 24.1318 24 29.5318 24 36.1318Z",fill:d.MFm.green.base,stroke:t,strokeMiterlimit:"10"}),r().createElement("path",{d:"M31 36.1318H31.3982M31.3982 36.1318C31.9735 36.1318 32.4159 36.5718 32.4159 37.0518V38.7718C32.4159 39.5318 33.0797 40.1318 33.9204 40.1318M31.3982 36.1318C31.9735 36.1318 32.4161 35.6919 32.4161 35.2119V33.4919C32.4161 32.7318 33.0798 32.1318 33.9205 32.1318M41 36.1318H40.6018M40.6018 36.1318C40.0265 36.1318 39.5841 36.5718 39.5841 37.0518V38.7718C39.5841 39.5318 38.9203 40.1318 38.0796 40.1318M40.6018 36.1318C40.0265 36.1318 39.5841 35.6919 39.5841 35.2119V33.4919C39.5841 32.7318 38.9203 32.1318 38.0796 32.1318",stroke:t,strokeMiterlimit:"10"}))};function Wn(e){const t=e.size??60;return r().createElement("svg",(0,a.A)({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 60 60",width:t,height:t},e),r().createElement("g",{fill:"none"},r().createElement("path",{fill:"#116149",d:"M52.75 43.75c0-4.97-4.03-9-8.998-9a9 9 0 0 0-9.002 9 9.001 9.001 0 0 0 18 0zm2 0c0 6.074-4.926 11-10.998 11-6.076 0-11.002-4.925-11.002-11 0-6.077 4.925-11 11.002-11 6.072 0 10.998 4.925 10.998 11z"}),r().createElement("path",{fill:"#116149",d:"M50.113 51.527a1 1 0 0 1 1.414-1.414l7.93 7.93a1 1 0 0 1-1.414 1.414zM27.012 45a1 1 0 0 1 0 2H6a6 6 0 0 1-6-6V6a6 6 0 0 1 6-6h47.5c3.312 0 6 2.688 6 6v35a1 1 0 0 1-2 0V6c0-2.208-1.792-4-4-4H6a4 4 0 0 0-4 4v35a4 4 0 0 0 4 4z"}),r().createElement("path",{fill:"#116149",d:"M1 14a1 1 0 0 1 0-2h57.5a1 1 0 0 1 0 2zm11.25-6.5a2.249 2.249 0 1 1-4.5 0 2.249 2.249 0 1 1 4.5 0zm7.5 0a2.249 2.249 0 1 1-4.5 0 2.249 2.249 0 1 1 4.5 0zm7.5 0a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0z"}),r().createElement("path",{fill:"#16cc62",d:"M8.789 22a1 1 0 0 1 0-2h9.883a1 1 0 0 1 0 2zm0 16a1 1 0 0 1 0-2h4.883a1 1 0 0 1 0 2zm0-8a1 1 0 0 1 0-2h12.383a1 1 0 0 1 0 2zm10 8a1 1 0 0 1 0-2h9.883a1 1 0 0 1 0 2zm7.5-8a1 1 0 0 1 0-2h12.383a1 1 0 0 1 0 2zm-2.5-8a1 1 0 0 1 0-2h12.422a1 1 0 0 1 0 2zm17.539 0a1 1 0 0 1 0-2h9.922a1 1 0 0 1 0 2zm2.5 8a1 1 0 0 1 0-2h7.423a1 1 0 0 1 0 2z"})))}var Rn=n(21655).URL;function Un(e,t){return new Rn(`/v2/${e}#/addData/${encodeURIComponent(t)}/load`,window.location.origin).toString()}const $n=(0,d.AHW)({width:"100%",padding:d.YKD[400]}),Vn=(0,d.AHW)({display:"flex",gap:d.YKD[300]});function Hn({projectId:e,clusterName:t,canCreateDatabase:n,onCreateDatabase:a}){return r().createElement("div",{className:$n,"data-testid":"add-data-zero-state"},r().createElement(d.HYq,{icon:Wn,title:"Looks like your cluster is empty",subTitle:n?r().createElement(r().Fragment,null,"Create database or load sample data to your cluster to quickly get started experimenting with data in MongoDB."):r().createElement(r().Fragment,null,"You can load sample data to quickly get started experimenting with data in MongoDB."),callToActionLink:r().createElement("div",{className:Vn},n&&r().createElement(d.$nd,{variant:"default",onClick:a},"Create database"),r().createElement(d.$nd,{variant:"primary",href:Un(e,t),target:"_blank",rel:"noopener noreferrer"},"Load sample data"))}))}const Kn=(0,d.AHW)({display:"flex",alignItems:"center",gap:d.YKD[200]}),jn=(0,d.AHW)({marginLeft:"auto",whiteSpace:"nowrap",textOverflow:"ellipsis"}),Bn=()=>null;function zn({projectId:e,clusterName:t}){return r().createElement(d.lZ$,{image:r().createElement(Bn,null)},r().createElement("div",{className:Kn},r().createElement("span",null,"Working with MongoDB is easy, but first you’ll need some data to get started. Sample data is available for loading."),r().createElement("div",null,r().createElement(d.$nd,{className:jn,onClick:()=>{window.open(Un(e,t),"_blank","noopener noreferrer")},leftGlyph:r().createElement(d.Int,{glyph:"Upload"}),size:"small"},"Load sample data"))))}const Yn=(0,d.AHW)({padding:d.YKD[400]}),qn=(0,d.AHW)({width:"100%"}),Gn="An error occurred while loading databases";function Zn(){return r().createElement("div",{className:qn,"data-testid":"databases-non-genuine-warning"},r().createElement(d.HYq,{icon:Pn,title:"Unable to display databases and collections",subTitle:"This server or service appears to be emulating MongoDB. Some documented MongoDB features may work differently, may be entirely missing or incomplete, or may have unexpectedly different performance characteristics than would be found when connecting to a real MongoDB server or service.",callToActionLink:r().createElement(d.N_E,{href:"https://www.mongodb.com/atlas/database"},"Try MongoDB Atlas")}))}const Jn=(0,Ee.Ng)((e=>({databases:e.databases,databasesLoadingStatus:e.databasesLoadingStatus.status,databasesLoadingError:e.databasesLoadingStatus.error,isWritable:e.instance.isWritable,isDataLake:e.instance.isDataLake,isGenuineMongoDB:e.instance.isGenuineMongoDB})),{onRefreshClick:e=>(t,n,{globalAppRegistry:a})=>{a.emit("refresh-databases",{connectionId:e})},onDeleteDatabaseClick:(e,t)=>(n,a,{globalAppRegistry:o})=>{o.emit("open-drop-database",t,{connectionId:e})},onCreateDatabaseClick:e=>(t,n,{globalAppRegistry:a})=>{a.emit("open-create-database",{connectionId:e})}})((({databases:e,databasesLoadingStatus:t,databasesLoadingError:n,isWritable:i,isDataLake:l,isGenuineMongoDB:c,onDeleteDatabaseClick:u,onCreateDatabaseClick:p,onRefreshClick:h})=>{const g=(0,s.qm)(),{id:f,atlasMetadata:y}=g,b=(0,R.Fg)("readOnly"),{openCollectionsWorkspace:v}=(0,D.$L)(),C=(0,o.useCallback)((e=>{v(f,e)}),[f,v]),E=(0,o.useCallback)((e=>{u(f,e)}),[f,u]),S=(0,o.useCallback)((()=>{p(f)}),[f,p]),k=(0,o.useCallback)((()=>{h(f)}),[f,h]);(0,re.ou)((e=>{e("Screen",{name:"databases"},g)}),[g]);const w=(0,o.useCallback)((()=>!y||e.some((e=>!(0,m.Ay)(e.name).specialish))?null:r().createElement(zn,{projectId:y.projectId,clusterName:y.clusterName})),[e,y]),x=i&&!b;if("fetching"===t)return null;if("error"===t)return r().createElement("div",{className:Yn},r().createElement(d.lZ$,{variant:d.uAY.Danger},n?`${Gn}: ${n}`:Gn));if(0===e.length&&!c)return r().createElement(Zn,null);if(y&&0===e.length)return r().createElement(Hn,{projectId:y.projectId,clusterName:y.clusterName,canCreateDatabase:x,onCreateDatabase:S});const A=Object.assign({onDatabaseClick:C,onRefreshClick:k},x&&!l?{onDeleteDatabaseClick:E,onCreateDatabaseClick:S}:{});return r().createElement(En,(0,a.A)({databases:e,renderLoadSampleDataBanner:w},A))})),Qn=Jn,Xn="An error occurred while loading collections",ea=(0,d.AHW)({padding:d.YKD[400]}),ta=(0,Ee.Ng)(((e,{namespace:t})=>{const n=e.instance.isWritable&&!e.instance.isDataLake;return{namespace:t,collections:e.collections,collectionsLoadingStatus:e.collectionsLoadingStatus.status,collectionsLoadingError:e.collectionsLoadingStatus.error,isEditable:n}}),{onRefreshClick:()=>(e,t,{database:n,dataService:a})=>{n.fetchCollectionsDetails({dataService:a,force:!0})},onDeleteCollectionClick:(e,t)=>(n,a,{globalAppRegistry:o})=>{o.emit("open-drop-collection",(0,m.Ay)(t),{connectionId:e})},onCreateCollectionClick:(e,t)=>(n,a,{globalAppRegistry:o})=>{o.emit("open-create-collection",(0,m.Ay)(t),{connectionId:e})}})((({namespace:e,collections:t,collectionsLoadingStatus:n,collectionsLoadingError:i,isEditable:l,onDeleteCollectionClick:c,onCreateCollectionClick:u,onRefreshClick:p})=>{const h=!(0,R.Fg)("readOnly"),g=(0,o.useMemo)((()=>h&&l),[h,l]),f=(0,s.qm)(),{id:y}=f,{openCollectionWorkspace:b}=(0,D.$L)();(0,re.ou)((e=>{e("Screen",{name:"collections"},f)}),[f]);const v=(0,o.useCallback)((e=>{b(y,e)}),[y,b]),C=(0,o.useCallback)((()=>{u(y,(0,m.Ay)(e).database)}),[y,e,u]),E=(0,o.useCallback)((e=>{c(y,e)}),[y,c]);if("error"===n)return r().createElement("div",{className:ea},r().createElement(d.lZ$,{variant:d.uAY.Danger},i?`${Xn}: ${i}`:Xn));const S=Object.assign({onCollectionClick:v,onRefreshClick:p},g?{onCreateCollectionClick:C,onDeleteCollectionClick:E}:{});return r().createElement(Fn,(0,a.A)({namespace:e,collections:t},S))})),na={name:ve,provider:Ce,content:ta,header:function({namespace:e,inferredFromPrivileges:t,...n}){const{id:o}=(0,s.qm)(),{getConnectionById:i}=(0,s.cy)(),l=i(o)?.title||"";return r().createElement(d.N81,(0,a.A)({},n,{connectionName:l,type:ve,title:e,tooltip:[["Connection",l||""],["Database",e]],iconGlyph:t?"EmptyDatabase":"Database","data-namespace":e,inferredFromPrivileges:t}))}},aa={name:It,provider:Mt,content:Qn,header:function(e){const{id:t}=(0,s.qm)(),{getConnectionById:n}=(0,s.cy)(),o=n(t)?.title||"";return r().createElement(d.N81,(0,a.A)({},e,{connectionName:o,type:It,title:o,tooltip:[["Connection",o||""]],iconGlyph:"Server"}))}},oa=(0,i.nk)({name:"CreateNamespace",activate:function(e,t,{on:n,cleanup:a}){const{instancesManager:o,connections:r,globalAppRegistry:i}=t,s=function(e){return(0,F.y$)(Ve,(0,F.Tw)(P.A.withExtraArgument(e)))}(t),l=(e,t)=>{s.dispatch(Ue(e,t.build.version)),s.dispatch(Re(e,t.topologyDescription.type)),n(t,"change:build.version",(()=>{s.dispatch(Ue(e,t.build.version))})),n(t,"change:topologyDescription",(()=>{s.dispatch(Re(e,t.topologyDescription.type))}))},c=e=>{const t=r.getDataServiceForConnection(e);s.dispatch(((e,t)=>({type:Ne,connectionId:e,configuredKMSProviders:t}))(e,t.configuredKMSProviders()))};for(const[e,t]of o.listMongoDBInstances())l(e,t),c(e);return n(o,g.hV.InstanceCreated,l),n(r,"connected",c),n(i,"open-create-database",(({connectionId:e}={})=>{if(!e)throw new Error("Cannot create a database without specifying a connection id");s.dispatch(_e(e,null))})),n(i,"open-create-collection",((e,{connectionId:t}={})=>{if(!t)throw new Error("Cannot create a collection without specifying a connection id");s.dispatch(_e(t,e.database))})),{store:s,deactivate:a}},component:Dt},{logger:(0,p.fF)("COMPASS-CREATE-NAMESPACE-UI"),track:re.yL,connections:s.u4,instancesManager:g.Q3,workspaces:D.__}),ra=(0,i.nk)({name:"DropNamespace",component:({children:e})=>r().createElement(d.ETl,null,r().createElement(d.t8G,null,e)),activate:function(e,{globalAppRegistry:t,connections:n,track:a},{on:o,cleanup:r,signal:i}){const s=async(e,{connectionId:o}={})=>{if("string"==typeof e&&(e=(0,m.Ay)(e)),!o)throw new Error("Cannot drop a namespace without specifying connectionId");const{ns:r,validCollectionName:s,database:l,collection:c}=e,u=s?"Collection":"Database";if(a("Screen",{name:s?"drop_collection_modal":"drop_database_modal"},void 0),await(0,d.$TK)({variant:"danger",title:`Drop ${u}?`,description:`Are you sure you want to drop ${u.toLocaleLowerCase()} "${r}"?`,requiredInputText:s?c:l,buttonText:`Drop ${u}`,"data-testid":"drop-namespace-confirmation-modal",signal:i}))try{const e=s?"dropCollection":"dropDatabase",i=n.getDataServiceForConnection(o);await i[e](r),a(s?"Collection Dropped":"Database Dropped",{},n.getConnectionById(o)?.info),t.emit(s?"collection-dropped":"database-dropped",r,{connectionId:o}),(0,d.c3r)("drop-namespace-success",{variant:"success",title:`${u} "${r}" dropped`,timeout:3e3})}catch(e){if(i.aborted)return;(0,d.c3r)("drop-namespace-error",{variant:"important",title:`Failed to drop ${u.toLocaleLowerCase()} "${r}"`,description:e.message,timeout:3e3})}};return o(t,"open-drop-database",s),o(t,"open-drop-collection",s),{store:{},deactivate:r}}},{logger:(0,p.fF)("COMPASS-DROP-NAMESPACE-UI"),track:re.yL,connections:s.u4}),ia=(0,i.nk)({name:"RenameCollectionPlugin",component:Kt,activate:function(e,{globalAppRegistry:t,connections:n,track:a,instancesManager:o,queryStorage:r,pipelineStorage:i},{cleanup:s,on:l}){const c=(0,F.Yl)(Rt,(0,F.Tw)(P.A.withExtraArgument({globalAppRegistry:t,instancesManager:o,connections:n,track:a})));return l(t,"open-rename-collection",((e,{connectionId:t}={})=>{if(!t)throw new Error("Cannot rename a namespace without specifying connectionId");const n=o.getMongoDBInstanceForConnection(t),a=n.databases.get(e.database)?.collections??[];(async function(e){const t=await(i?.getStorage().loadAll().then((t=>t.some((({namespace:t})=>t===e)))).catch((()=>!1))),n=await(r?.getStorage().loadAll().then((t=>t.some((({_ns:t})=>t===e)))).catch((()=>!1)));return Boolean(t||n)})(`${e.database}.${e.collection}`).then((n=>{c.dispatch((({connectionId:e,db:t,collection:n,collections:a,areSavedQueriesAndAggregationsImpacted:o})=>({type:Tt,connectionId:e,db:t,collection:n,collections:a,areSavedQueriesAndAggregationsImpacted:o}))({connectionId:t,db:e.database,collection:e.collection,collections:a,areSavedQueriesAndAggregationsImpacted:n}))}))})),{store:c,deactivate:s}}},{connections:s.u4,track:re.yL,instancesManager:g.Q3,queryStorage:jt.yS,pipelineStorage:jt.oC});var sa=n(86712);const la=(0,d.AHW)({paddingLeft:d.YKD[400],paddingRight:d.YKD[400],display:"flex",justifyContent:"space-between",alignItems:"center"}),ca=(0,d.AHW)({lineHeight:"32px",fontWeight:600}),da=[{action:"open-compass-settings",label:"Compass Settings",icon:"Settings"}];function ua({onAction:e,isCompassWeb:t}){const n=(0,R.Fg)("enableCompassWebSettings");return r().createElement("div",{className:la,"data-testid":"sidebar-header"},r().createElement(d.Pds,{className:ca},t?"Data Explorer":"Compass",false),(!t||n)&&r().createElement(d.eDW,{onAction:e,iconSize:"small",actions:da,"data-testid":"connections-sidebar-title-actions"}))}const ma=(0,d.AHW)({cursor:"pointer",color:"var(--item-color)",position:"relative",paddingLeft:d.YKD[400],"&:hover .item-background":{display:"block",backgroundColor:"var(--item-bg-color-hover)"},"&:hover":{backgroundColor:"var(--item-bg-color-hover)"},svg:{flexShrink:0}}),pa=(0,d.AHW)({color:"var(--item-color-active)",fontWeight:"bold",backgroundColor:"var(--item-bg-color-active)"}),ha=(0,d.AHW)({zIndex:1,minWidth:0,display:"flex",alignItems:"center",justifyContent:"flex-start",gap:d.YKD[200],paddingTop:d.YKD[150],paddingBottom:d.YKD[150]}),ga=(0,d.AHW)({overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"});function fa({onClick:e,glyph:t,label:n,isActive:a}){const[o]=(0,d.v69)(),i=(0,d.pR2)(e),s=(0,d.v63)({className:(0,d.cx)(ma,a&&pa),role:"button","aria-label":n,"aria-current":a,tabIndex:0},o,i);return r().createElement("div",s,r().createElement("div",{className:ha},r().createElement(d.Int,{glyph:t,size:"small"}),r().createElement("span",{className:ga},n)))}function ya({currentLocation:e}){const{hasWorkspacePlugin:t}=(0,D.nW)(),{openMyQueriesWorkspace:n,openDataModelingWorkspace:a}=(0,D.$L)(),o=(0,R.Fg)("enableMyQueries");return r().createElement("div",null,t("My Queries")&&o&&r().createElement(fa,{onClick:n,glyph:"CurlyBraces",label:"My Queries",isActive:"My Queries"===e}),r().createElement(fa,{onClick:a,glyph:"Diagram",label:"Data Modeling",isActive:"Data Modeling"===e}))}var ba=n(91399);const va=(0,d.AHW)({margin:`${d.YKD[400]}px 0`});function Ca({children:e}){return r().createElement(d.nBu,{weight:"medium"},e)}function Ea({children:e}){return r().createElement(d.nBu,null,e)}function Sa({term:e,children:t}){return r().createElement("div",{className:va},r().createElement("dt",null,r().createElement(Ca,null,e)),r().createElement("dd",null,r().createElement(Ea,null,t)))}function ka({isEnterprise:e,isAtlas:t,isLocalAtlas:n}){return t?"Atlas":n?"AtlasLocalDev":void 0===e?"":e?"Enterprise":"Community"}function wa(e,t,n){return 1===e?`1 ${t}`:`${e} ${n}`}function xa(e){const t=[],{instance:n,connectionOptions:a}=e;return n?(t.push(function({instance:e,databases:t}){const n="ready"===e?.refreshingStatus,a=n?t.length:"-",o=n?t.map((e=>e.collectionsLength)).reduce(((e,t)=>e+t),0):"-";return{term:"Stats",description:r().createElement("div",null,r().createElement("div",null,`${a} DB${1===a?"":"s"}`),r().createElement("div",null,`${o} Collection${1===o?"":"s"}`))}}(e)),t.push(function({instance:e}){const{type:t,servers:n=[]}=e?.topologyDescription??{};let a=1===n.length?"Host":"Hosts";return t===ba.TopologyType.LOAD_BALANCED&&(a+=" (Load Balancer)"),{term:a,description:1===n.length?n[0].address:r().createElement("div",null,n.map(((e,t)=>r().createElement("div",{key:t},e.address))))}}(e)),!1===n.dataLake.isDataLake&&n.topologyDescription.type!==ba.TopologyType.LOAD_BALANCED&&t.push(function({instance:e}){const{type:t,setName:n,servers:a=[]}=e?.topologyDescription??{};let o,i;switch(t){case ba.TopologyType.SHARDED:o="Sharded",i=wa(a.length,"Mongos","Mongoses");break;case ba.TopologyType.REPLICA_SET_NO_PRIMARY:case ba.TopologyType.REPLICA_SET_WITH_PRIMARY:o=`Replica Set ${n}`,i=wa(a.length,"Node","Nodes");break;default:o=ba.ServerType.humanize(a[0]?.type??"Unknown")}return{term:"Cluster",description:i?r().createElement("div",null,r().createElement("div",null,o),r().createElement("div",null,i)):o}}(e)),t.push(function({instance:e}){return{term:"Edition",description:e?.dataLake.isDataLake?`Atlas Data Federation ${e?.dataLake.version??""}`:`MongoDB ${e?.build.version} ${ka({isEnterprise:e?.build.isEnterprise,isLocalAtlas:e?.isLocalAtlas,isAtlas:e?.isAtlas})}`}}(e)),a.sshTunnel&&t.push(function({connectionOptions:e}){const{sshTunnelHostPortString:t}=e;return{term:"SSH Connection Via",description:t}}(e)),t):t}const Aa=(0,Ee.Ng)(((e,{connectionInfo:t})=>{if(!t)return{infos:[]};const n=e.instance[t.id],a=e.databases[t.id],o=e.connectionOptions[t.id];return{infos:xa({instance:n,databases:a?.databases??[],connectionInfo:t,connectionOptions:o||{}})}}),{})((function({isVisible:e,close:t,infos:n=[]}){return r().createElement(d.WhU,{title:"Connection info",open:e,onClose:t,size:"small","data-testid":"connection-info-modal"},r().createElement("dl",null,n.map(((e,t)=>r().createElement(Sa,{key:t,term:e.term},e.description)))))})),Da=Aa;var Ia=n(4863),Ma=n(23412);const Ta="sidebar/databases/CHANGE_DATABASES",La={},Oa=(e,t)=>{const n=[];for(const a of e){const e=!t||t.test(a.name),o=Na(a.collections,t,a.name);if(e||o.length){const r=!e&&o.length?o:a.collections.map((e=>({...e,isMatch:!t||t.test(e.name)})));n.push({...a,isMatch:e,collections:r})}}return n},Na=(e,t,n)=>e.filter((({name:e})=>!t||t.test(e)||t.test(`${n}.${e}`))).map((e=>({...e,isMatch:!0}))),_a=(e,t)=>{const n={...e};return t.forEach((e=>{if("connected"===e.connectionStatus){const{connectionInfo:{id:t},databases:a}=e,o=a.length&&a[0].isMatch;n[t]||(n[t]={state:void 0,databases:{}}),o&&"collapsed"===n[t].state&&(n[t].state="tempExpanded"),a.forEach((({_id:e,collections:a})=>{a.length&&a.some((e=>e.isMatch))&&a.length&&("collapsed"===n[t].state&&(n[t].state="tempExpanded"),n[t].databases?n[t].databases[e]="tempExpanded":n[t].databases={[e]:"tempExpanded"})}))}})),n},Fa=e=>{const t=Object.fromEntries(Object.entries(e).map((([e,{state:t,databases:n}])=>[e,{state:"tempExpanded"===t?"collapsed":t,databases:Object.fromEntries(Object.entries(n||[]).map((([e,t])=>[e,"tempExpanded"===t?void 0:t])))}])));return t},Pa=e=>{const t={};for(const{id:n}of e)t[n]={state:"collapsed",databases:{}};return t},Wa="sidebar/active-connections/FILTER_CONNECTIONS",Ra="sidebar/active-connections/CLEAR_FILTER",Ua="sidebar/active-connections/CONNECTION_TOGGLE",$a="sidebar/active-connections/DATABASE_TOGGLE",Va="sidebar/active-connections/CONNECTIONS_CHANGED",Ha="sidebar/active-connections/COLLAPSE_ALL",Ka=(e,t)=>{switch(t.type){case Ha:return{...e,expanded:Pa(t.connections)};case Wa:{const n=((e,t,n)=>{const a=[];for(const o of e){const e="connected"!==o.connectionStatus&&"connecting"!==o.connectionStatus;if(n&&e)continue;const r=!t||t.test(o.name);let i=[];"connected"===o.connectionStatus&&(i=Oa(o.databases,t)),(r||i.length)&&a.push({...o,isMatch:r,..."connected"===o.connectionStatus?{databases:!r&&i.length?i:o.databases}:{}})}return a})(t.connections,t.filterRegex,t.excludeInactive),a=Fa(e.expanded);return{...e,filtered:n,expanded:_a(a,n)}}case Ra:return{...e,filtered:void 0,expanded:Fa(e.expanded)};case Ua:{const{connectionId:n,expand:a}=t,o=e.expanded[n]?.state;return"collapsed"!==o||a?{...e,expanded:{...e.expanded,[n]:{...e.expanded[n],state:a?void 0:"collapsed"}}}:e}case $a:{const{connectionId:n,databaseId:a,expand:o}=t,r=e.expanded[n]?.databases?.[a];return!r&&!o||"expanded"===r&&o?e:{...e,expanded:{...e.expanded,[n]:{...e.expanded[n],databases:{...e.expanded[n]?.databases,[a]:o?"expanded":void 0}}}}}case Va:{const{connections:n}=t;return{...e,expanded:Object.fromEntries(n.map((({id:t})=>[t,e.expanded[t]||{state:void 0,databases:{}}])))}}default:return e}},ja=(0,d.AHW)({display:"flex",flexDirection:"column",alignItems:"flex-start",padding:d.YKD[300],minWidth:270}),Ba=(0,d.AHW)({position:"absolute",top:d.YKD[50],right:d.YKD[50]}),za=(0,d.AHW)({display:"flex",flexDirection:"row",gap:d.YKD[200],marginTop:d.YKD[200]});function Ya({open:e,setOpen:t,filter:n,onFilterChange:a,disabled:i=!1}){const s=(0,o.useCallback)((e=>{a((t=>({...t,excludeInactive:e})))}),[a]),l=(0,d.BiT)(),c=(0,d.BiT)(),u=n.excludeInactive,[m,p]=(0,o.useState)(!1),h=(0,o.useCallback)((()=>p(!0)),[p]),g=(0,o.useCallback)((()=>p(!1)),[p]);return r().createElement(r().Fragment,null,r().createElement(d.m_M,{align:"right",open:m&&!e,setOpen:p},"Filter connections"),r().createElement(d.WA6,{open:e,setOpen:t,containerClassName:ja,hideCloseButton:!0,trigger:({onClick:t,children:n,ref:a})=>r().createElement(r().Fragment,null,r().createElement(d.K0,{onClick:t,onMouseEnter:h,onMouseLeave:g,active:e,"aria-label":"Filter connections",ref:a,disabled:i},r().createElement(d.Int,{glyph:"Filter"}),u&&r().createElement("svg",{className:Ba,width:"6",height:"6",viewBox:"0 0 6 6",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r().createElement("circle",{cx:"3",cy:"3",r:"3",fill:d.MFm.blue.base}))),n)},r().createElement(d.bz9,null,"Filter Options"),r().createElement("div",{className:za},r().createElement(d.lMk,{id:l,"aria-labelledby":c,checked:n.excludeInactive,onChange:s,size:"small"}),r().createElement(d.JU7,{htmlFor:l,id:c},"Show only active connections"))))}const qa=(0,d.AHW)({display:"flex",flexDirection:"row",alignItems:"center",gap:d.YKD[200],paddingLeft:d.YKD[400],paddingRight:d.YKD[400]}),Ga=(0,d.AHW)({flexGrow:1});function Za(e){try{return e?new RegExp(e,"i"):null}catch{return null}}function Ja({placeholder:e="Search",ariaLabel:t="Search",title:n="Search",filter:a,onFilterChange:i,disabled:s=!1}){const l=(0,o.useCallback)((e=>{i((t=>({...t,regex:Za(e.target.value)})))}),[i]),[c,u]=(0,o.useState)(!1),m=(0,o.useCallback)((e=>{e.preventDefault(),e.stopPropagation()}),[]);return r().createElement("form",{noValidate:!0,className:qa,onSubmit:m},r().createElement(d.ksK,{"data-testid":"sidebar-filter-input",placeholder:e,type:"search","aria-label":t,title:n,onChange:l,className:Ga,disabled:s}),r().createElement(Ya,{open:c,setOpen:u,filter:a,onFilterChange:i,disabled:s}))}var Qa=n(858);const Xa=(0,d.AHW)({height:"100%",paddingBottom:d.YKD[400],display:"flex",flexDirection:"column",gap:d.YKD[200]}),eo=(0,d.AHW)({display:"flex",justifyContent:"space-between",alignItems:"center",paddingLeft:d.YKD[400],paddingRight:d.YKD[400]}),to=(0,d.AHW)({marginTop:0,marginBottom:0,textTransform:"uppercase",fontSize:"12px",lineHeight:`${d.YKD[800]}px`}),no=(0,d.AHW)({fontWeight:"normal",marginLeft:d.YKD[100]}),ao=(0,d.AHW)({opacity:.6}),oo=(0,d.AHW)({paddingLeft:d.YKD[400],paddingRight:d.YKD[400],display:"flex",flexDirection:"column",gap:d.YKD[200]}),ro=(0,d.AHW)({paddingLeft:d.YKD[400],paddingRight:d.YKD[400],paddingTop:d.YKD[400]}),io=(0,o.createContext)(!1);function so(e,t){const{database:n,collection:a}=(0,m.Ay)(e);return t.find((e=>e._id===n))?.collections.find((e=>e.name===a))??null}const lo=(0,d.AHW)({display:"grid",gridTemplateColumns:"1fr",gridAutoRows:d.YKD[400]+d.YKD[300],alignItems:"center",paddingLeft:d.YKD[400]+d.YKD[100],paddingRight:d.YKD[400]});function co(){return r().createElement("div",{"data-testid":"connections-placeholder",className:lo},Array.from({length:3},((e,t)=>r().createElement(d.OrA,{key:t,height:d.YKD[400]}))))}const uo={onRefreshDatabases:e=>(t,n,{globalAppRegistry:a})=>{a.emit("refresh-databases",{connectionId:e})},onNamespaceAction:(e,t,n)=>(a,o,{globalAppRegistry:r})=>{const i=(e,...t)=>{r.emit(e,...t)},s=(0,m.Ay)(t);switch(n){case"create-database":return void i("open-create-database",{connectionId:e});case"drop-database":return void i("open-drop-database",s.database,{connectionId:e});case"rename-collection":return void i("open-rename-collection",s,{connectionId:e});case"drop-collection":return void i("open-drop-collection",s,{connectionId:e});case"create-collection":return void i("open-create-collection",s,{connectionId:e});case"duplicate-view":{const n=so(t,o().databases[e].databases);return void(n&&n.sourceName&&i("open-create-view",{source:n.sourceName,pipeline:n.pipeline,duplicate:!0},{connectionId:e}))}}},onDatabaseExpand:(e,t)=>(n,a,{globalAppRegistry:o})=>{o.emit("sidebar-expand-database",t,{connectionId:e}),n({type:"sidebar/instance/EXPAND_DATABASE",connectionId:e,databaseId:t})},fetchAllCollections:e=>(t,n,{globalAppRegistry:a})=>{a.emit("sidebar-filter-navigation-list",{connectionId:e}),t({type:"sidebar/instance/FETCH_ALL_COLLECTIONS"})}},mo=(0,Ee.Ng)((e=>({instances:e.instance,databases:e.databases,isPerformanceTabSupported:e.isPerformanceTabSupported})),uo)((({connectionsWithStatus:e,activeWorkspace:t,filter:n,instances:a,databases:i,isPerformanceTabSupported:l,onFilterChange:c,onConnect:u,onConnectInNewWindow:p,onNewConnection:h,onEditConnection:g,onRemoveConnection:f,onDuplicateConnection:y,onCopyConnectionString:b,onToggleFavoriteConnectionInfo:v,onOpenCsfleModal:C,onOpenNonGenuineMongoDBModal:E,onOpenConnectionInfo:S,onDisconnect:k,onDatabaseExpand:w,fetchAllCollections:x,onRefreshDatabases:A,onNamespaceAction:I,onOpenConnectViaModal:M})=>{const{openShellWorkspace:T,openPerformanceWorkspace:L,openDatabasesWorkspace:O,openCollectionsWorkspace:N,openCollectionWorkspace:_,openEditViewWorkspace:F}=(0,D.$L)(),{hasWorkspacePlugin:P}=(0,D.nW)(),W=(0,re.Jr)(),U=(0,o.useMemo)((()=>{const t=[];for(const{connectionInfo:n,connectionStatus:o}of e)if(o!==s.vk.Connected)t.push({name:(0,Bt.T8)(n),connectionInfo:n,connectionStatus:o});else{const e=a[n.id],o=i[n.id],r=e?.databasesStatus,c=void 0!==r&&!["initial","fetching"].includes(r),d=e?.dataLake?.isDataLake??!1,u=e?.isWritable??!1,m=!d&&!!l[n.id];t.push({isReady:c,isDataLake:d,isWritable:u,isPerformanceTabAvailable:P("Performance"),isPerformanceTabSupported:m,name:(0,Bt.T8)(n),connectionInfo:n,databasesLength:o?.databases?.length??0,databasesStatus:r,databases:o?.databases??[],connectionStatus:s.vk.Connected,isGenuineMongoDB:!1!==e?.genuineMongoDB.isGenuine,csfleMode:e?.csfleMode})}return t}),[e,a,i,l,P]),{supportsConnectionImportExport:$,openConnectionImportExportModal:V}=(0,Qa.M)({context:"connectionsList"}),H=(0,R.Fg)("enableCreatingNewConnections"),{filtered:K,expanded:j,onCollapseAll:B,onConnectionToggle:z,onDatabaseToggle:Y}=(({connections:e,filter:t,fetchAllCollections:n,onDatabaseExpand:a})=>{const[{filtered:r,expanded:i},s]=(0,o.useReducer)(Ka,{filtered:void 0,expanded:{}}),l=(0,o.useMemo)((()=>e.filter((({connectionStatus:e})=>"connected"===e)).map((({connectionInfo:e})=>e))),[e]);(0,o.useEffect)((()=>{s({type:Va,connections:l})}),[l]);const c=(t.regex||t.excludeInactive)&&e;(0,o.useEffect)((()=>{t.regex||t.excludeInactive?c&&(n(),s({type:Wa,connections:c,filterRegex:t.regex,excludeInactive:t.excludeInactive})):s({type:Ra})}),[t.regex,t.excludeInactive,c,n]);const d=(0,o.useCallback)(((e,t)=>s({type:Ua,connectionId:e,expand:t})),[]),u=(0,o.useRef)(i);u.current=i;const p=(0,o.useRef)(a);p.current=a;const h=(0,o.useCallback)(((e,t,n)=>{const{database:a}=(0,m.Ay)(t);n&&!u.current[e]?.databases?.[a]&&p.current(e,a),s({type:$a,connectionId:e,databaseId:a,expand:n})}),[]),g=(0,o.useCallback)((()=>{s({type:Ha,connections:l})}),[l]),f=(0,o.useMemo)((()=>{const t=Object.create(null);for(const{connectionInfo:n,connectionStatus:a}of e){if("connected"!==a){t[n.id]=!1;continue}const e=Object.create(null),{state:o,databases:r}=i[n.id]??{databases:{}};for(const t in r)e[t]=!!r[t];t[n.id]="collapsed"!==o&&e}return t}),[i,e]),y=(0,o.useMemo)((()=>{if(r)return function(e){const t=[];for(const n of e)"connected"===n.connectionStatus?t.push({...Be().omit(n,["isMatch"]),databases:n.databases.map((e=>({...Be().omit(e,["isMatch"]),collections:e.collections.map((e=>Be().omit(e,["isMatch"])))})))}):t.push({...Be().omit(n,["isMatch"])});return t}(r)}),[r]);return{filtered:y,expanded:f,onCollapseAll:g,onConnectionToggle:d,onDatabaseToggle:h}})({connections:U,filter:n,fetchAllCollections:x,onDatabaseExpand:w}),q=(0,o.useMemo)((()=>{const e=[{action:"collapse-all-connections",label:"Collapse all connections",icon:r().createElement(d.pzy,{width:14,height:14})}];return H&&e.push({action:"add-new-connection",label:"Add new connection",icon:"Plus"}),$&&e.push({action:"import-saved-connections",label:"Import connections",icon:"Download"},{action:"export-saved-connections",label:"Export connections",icon:"Export"}),e}),[$,H]),G=(0,o.useCallback)(((e,t)=>{const n=e=>{switch(e.type){case"connection":return e.connectionInfo;case"database":return e.connectionItem.connectionInfo;case"view":case"collection":case"timeseries":return e.databaseItem.connectionItem.connectionInfo;default:throw new Error(`Item type does not have connection info for action ${t}`)}},a=e=>{if("connection"===e.type)throw new Error(`Item type ${e.type} does not have a namespace for action ${t}`);return"database"===e.type?e.dbName:e.namespace},o="connection"===e.type?e.connectionInfo.id:e.connectionId;switch(t){case"select-connection":return void O(o);case"refresh-databases":return void A(o);case"create-database":return void I(o,"",t);case"open-shell":{let t,a;return"database"===e.type&&(t=`use(${JSON.stringify(e.dbName)});`),"collection"===e.type&&(t=`use(${JSON.stringify(e.databaseItem.dbName)});`,a=`db[${JSON.stringify(e.name)}].find()`),T(o,{newTab:!0,initialEvaluate:t,initialInput:a}),void W("Open Shell",{entrypoint:e.entrypoint??"sidebar"},n(e))}case"connection-performance-metrics":return void L(o);case"open-connection-info":return void S(o);case"connection-disconnect":return void k(o);case"connection-connect":return void u(n(e));case"connection-connect-in-new-window":return void p(n(e));case"edit-connection":return void g(n(e));case"copy-connection-string":return void b(n(e));case"connection-toggle-favorite":return void v(n(e));case"duplicate-connection":return void y(n(e));case"remove-connection":return void f(n(e));case"open-csfle-modal":return void C(o);case"open-non-genuine-mongodb-modal":return void E(o);case"show-connect-via-modal":return void M?.(n(e).atlasMetadata);case"connection-atlas-performance-metrics":{const{atlasMetadata:t}=n(e);return void(t&&window.open((0,zt.FU)(t),"_blank"))}case"connection-cluster-overview":{const{atlasMetadata:t}=n(e);return void(t&&window.open((0,zt.d2)(t),"_blank"))}case"connection-view-monitoring":{const{atlasMetadata:t}=n(e);return void(t&&window.open((0,zt.k4)(t),"_blank"))}case"connection-query-insights":{const{atlasMetadata:t}=n(e);return void(t&&window.open((0,zt.bv)(t),"_blank"))}case"select-database":return void N(o,a(e));case"select-collection":return void _(o,a(e));case"open-in-new-tab":return void _(o,a(e),{newTab:!0});case"modify-view":{const t=so(a(e),U.find((e=>e.connectionStatus===s.vk.Connected&&e.connectionInfo.id===o))?.databases??[]);return void(t&&t.sourceName&&t.pipeline&&F(o,t._id,{sourceName:t.sourceName,sourcePipeline:t.pipeline,newTab:!0}))}default:return void I(o,a(e),t)}}),[O,A,T,W,L,S,k,u,p,g,b,v,y,f,C,E,M,U,N,_,F,I]),Z=(0,o.useCallback)(((e,t)=>{"connection"===e.type?z(e.connectionInfo.id,t):"database"===e.type&&Y(e.connectionId,e.dbName,t)}),[z,Y]),J=(0,o.useCallback)((e=>{"collapse-all-connections"===e?B():"add-new-connection"===e?h():"import-saved-connections"!==e&&"export-saved-connections"!==e||V(e)}),[B,h,V]),Q=(0,d.MdH)((()=>[{telemetryLabel:"Connection List Title Actions",items:q.map((({label:e,action:t})=>({label:e,onAction:()=>J(t)})))}]),[q,J]);(0,o.useEffect)((()=>{if(t&&("Databases"===t.type||"Collections"===t.type||"Collection"===t.type)){const e=t.connectionId;if(z(e,!0),"Databases"!==t.type){const n=t.namespace;Y(e,n,!0)}}}),[t,Y,z]);const X=(0,o.useContext)(io),{isInitialLoad:ee}=(0,s.VW)(),te=ee?r().createElement("span",{className:(0,d.cx)(no,ao)},"(…)"):0!==U.length?r().createElement("span",{className:no},"(",U.length,")"):void 0;return r().createElement("div",{className:Xa},r().createElement("div",{className:eo,"data-testid":"connections-header",ref:Q},r().createElement(d.Pds,{className:to},X?"Clusters":"Connections",te),r().createElement(d.eDW,{iconSize:"xsmall",actions:q,onAction:J,"data-testid":"connections-list-title-actions",collapseToMenuThreshold:3,collapseAfter:2})),r().createElement(Ja,{placeholder:X?"Search clusters":"Search connections",filter:n,onFilterChange:c,disabled:ee||0===U.length}),ee?r().createElement(co,null):U.length>0?K&&0===K.length?r().createElement("div",{className:ro,"data-testid":"no-search-results"},r().createElement(d.nBu,null,"No results found.")):r().createElement(Ma.w,{connections:K||U,activeWorkspace:t,onItemAction:G,onItemExpand:Z,expanded:j}):0===U.length?r().createElement("div",{className:oo},r().createElement(d.nBu,{"data-testid":"no-deployments-text"},"You have not connected to any deployments."),H&&r().createElement(d.$nd,{"data-testid":"add-new-connection-button",variant:d.AkO.Primary,leftGlyph:r().createElement(d.Int,{glyph:"Plus"}),onClick:h},"Add new connection")):null)})),po=(0,d.AHW)({marginTop:d.YKD[400],marginBottom:d.YKD[400],marginRight:d.YKD[400]}),ho=(0,d.AHW)({display:"flex",alignItems:"center"}),go=(0,d.AHW)({marginTop:d.YKD[400]}),fo=(0,Ee.Ng)((({instance:e},{connectionId:t})=>{const n=t?e[t]:null;return{open:!(!t||!n),csfleMode:n?.csfleMode}}))((function({open:e,csfleMode:t,onClose:n,setConnectionIsCSFLEEnabled:a}){const i=(0,o.useCallback)((e=>{a(e)}),[a]);return(0,re.ou)((t=>{e&&t("Screen",{name:"csfle_connection_modal"},void 0)}),[e],void 0),r().createElement(d.WhU,{title:"In-Use Encryption Connection Options",open:e,onClose:n,"data-testid":"csfle-connection-modal"},r().createElement(d.nBu,null,"This connection is configured with In-Use Encryption enabled."),r().createElement("div",{className:ho},r().createElement(d.lMk,{className:po,id:"set-csfle-enabled","aria-labelledby":"set-csfle-enabled-label",size:"small",type:"button",checked:"enabled"===t,onChange:i}),r().createElement(d.JU7,{id:"set-csfle-enabled-label",htmlFor:"set-csfle-enabled"},"Enable In-Use Encryption for this connection")),r().createElement(d.VYo,null,"Disabling In-Use Encryption only affects how Compass accesses data. In order to make Compass forget KMS credentials, the connection must be fully closed."),r().createElement(d.lZ$,{className:go},"In-Use Encryption is an Enterprise/Atlas-only feature of MongoDB. ",r().createElement(d.N_E,{href:"https://dochub.mongodb.org/core/rqe-encrypted-fields"},"Learn More")))})),yo=(0,d.AHW)({zIndex:0,display:"flex",flexDirection:"column",height:"100%",paddingTop:d.YKD[400],gap:d.YKD[200]}),bo=(0,Ee.Ng)(void 0,{onSidebarAction:(e,...t)=>(n,a,{globalAppRegistry:o})=>{o.emit(e,...t)},onConnectionCsfleModeChanged:(e,t)=>(n,a,{globalAppRegistry:o,connections:r})=>{r.getDataServiceForConnection(e).setCSFLEEnabled(t),queueMicrotask((()=>{o?.emit("refresh-data")}))}})((function({activeWorkspace:e,onSidebarAction:t,onConnectionCsfleModeChanged:n,onOpenConnectViaModal:a,isCompassWeb:i}){const[l,c]=(0,o.useState)(void 0),[u,m]=(0,o.useState)({regex:null,excludeInactive:!1}),[p,h]=(0,o.useState)(),g=(0,Ia.w)(),f=(0,s.tT)(),{connect:y,connectInNewWindow:b,disconnect:v,createNewConnection:C,editConnection:E,removeConnection:S,duplicateConnection:k,toggleFavoritedConnectionStatus:w,showNonGenuineMongoDBWarningModal:x}=(0,s.PM)(),A=(0,o.useCallback)((e=>h(e)),[]),D=(0,o.useCallback)((()=>h(void 0)),[]),I=(0,o.useCallback)((e=>{!async function(e){try{await navigator.clipboard.writeText(e),(0,d.c3r)("copy-to-clipboard",{title:"Success",description:"Copied to clipboard.",variant:"success",timeout:5e3})}catch{(0,d.c3r)("copy-to-clipboard",{title:"Error",description:"An error occurred when copying to clipboard. Please try again.",variant:"warning",timeout:5e3})}}(g(e?.connectionOptions.connectionString))}),[g]),M=(0,o.useCallback)((e=>{c(e)}),[]),T=(0,o.useCallback)((()=>{c(void 0)}),[]),L=(0,o.useCallback)((e=>{l&&n(l,e)}),[l,n]);return r().createElement(d.q$V,{"data-testid":"navigation-sidebar",useNewTheme:!0},r().createElement("aside",{className:yo},r().createElement(r().Fragment,null,r().createElement(ua,{onAction:t,isCompassWeb:i}),r().createElement(ya,{currentLocation:e?.type??null}),r().createElement(d.d$,null)),r().createElement(mo,{connectionsWithStatus:f,activeWorkspace:e,filter:u,onFilterChange:m,onConnect:e=>{y(e)},onConnectInNewWindow:b,onNewConnection:C,onEditConnection:e=>{E(e.id)},onRemoveConnection:e=>{S(e.id)},onDuplicateConnection:e=>{k(e.id)},onCopyConnectionString:I,onToggleFavoriteConnectionInfo:e=>{w(e.id)},onOpenConnectionInfo:A,onDisconnect:e=>{v(e)},onOpenCsfleModal:M,onOpenNonGenuineMongoDBModal:e=>{x(e)},onOpenConnectViaModal:a}),r().createElement(fo,{connectionId:l,onClose:T,setConnectionIsCSFLEEnabled:L}),r().createElement(Da,{connectionInfo:p?(O=p,f.find((({connectionInfo:e,connectionStatus:t})=>e.id===O&&t===s.vk.Connected))?.connectionInfo):void 0,isVisible:!!p,close:D})));var O})),vo=(0,d.AHW)({width:d.q$X}),Co="sidebar/connection-options/CHANGE_CONNECTION_OPTIONS",Eo={};const So="compass-sidebar/SET_IS_PERFORMANCE_TAB_SUPPORTED";function ko(e,t){return{type:So,connectionId:e,isSupported:t}}const wo="sidebar/instance/SETUP_INSTANCE",xo="sidebar/instance/CLOSE_INSTANCE",Ao={},Do=(e,t)=>(n,a,{connections:o,logger:{log:r,mongoLogId:i}})=>{const{instance:s}=a();if(s[e])return;const l=se()((()=>{n({type:wo,connectionId:e,instance:{status:t.status,refreshingStatus:t.refreshingStatus,databasesStatus:t.databasesStatus,csfleMode:t.csfleMode,build:{isEnterprise:t.build.isEnterprise,version:t.build.version},dataLake:{isDataLake:t.dataLake.isDataLake,version:t.dataLake.version},genuineMongoDB:{serverName:t.genuineMongoDB.serverName,isGenuine:t.genuineMongoDB.isGenuine},topologyDescription:{servers:t.topologyDescription.servers,setName:t.topologyDescription.setName,type:t.topologyDescription.type},isWritable:t.isWritable,env:t.env,isAtlas:t.isAtlas,isLocalAtlas:t.isLocalAtlas}})}),300,{leading:!0,trailing:!0});function c(e){return{_id:e._id,name:e.name,collectionsStatus:e.collectionsStatus,collectionsLength:e.collectionsLength,inferredFromPrivileges:e.inferred_from_privileges}}const d=se()((()=>{const a=t.databases.map((e=>({...c(e),collections:e.collections.map((e=>function(e){return{_id:e._id,name:e.name,type:e.type,sourceName:e.sourceName,pipeline:e.pipeline,inferredFromPrivileges:e.inferred_from_privileges}}(e)))})));n(((e,t)=>({type:Ta,connectionId:e,databases:t}))(e,a))}),300,{leading:!0,trailing:!0});t.on("change:status",l),t.on("change:refreshingStatus",l),t.on("change:databasesStatus",l),t.on("change:csfleMode",l),t.on("change:topologyDescription",l),t.on("change:isWritable",l),t.on("change:env",l),t.on("change:databasesStatus",d),t.on("add:databases",d),t.on("remove:databases",d),t.on("change:databases",d),t.on("change:databases.collectionsStatus",d),t.on("add:collections",d),t.on("remove:collections",d),t.on("change:collections._id",d),t.on("change:collections.status",d);const u=o.getDataServiceForConnection(e),m=u.getConnectionOptions();n(function(e,t){const n=!!t.sshTunnel,a=t?.sshTunnel?.host??"",o=t?.sshTunnel?.port??"",r=t.sshTunnel?(s=o,(i=a).length>=25?`${i.slice(0,9)}...${i.slice(-9)}:${s}`:`${i}:${s}`):"";var i,s;return{type:Co,connectionId:e,options:{sshTunnel:n,sshTunnelHostname:a,sshTunnelPort:o,sshTunnelHostPortString:r}}}(e,m)),Promise.all([u.currentOp(),u.top()]).then((()=>{n(ko(e,!0))}),(t=>{r.info(i(1001000278),"Sidebar","Performance tab required commands failed",{error:t.message});const a="AtlasError"!==t.codeName;n(ko(e,a))})),l(),d()},Io=(0,F.HY)({databases:function(e=La,t){if("sidebar/databases/TOGGLE_DATABASE"===t.type){const{expandedDbList:n}=e[t.connectionId]||{};return n&&n[t.database]===t.expanded?e:{...e,[t.connectionId]:{...e[t.connectionId],expandedDbList:{...n,[t.database]:t.expanded}}}}return t.type===Ta?{...e,[t.connectionId]:{...e[t.connectionId],databases:t.databases}}:e},connectionOptions:function(e=Eo,t){return t.type===Co?{...e,[t.connectionId]:t.options}:e},instance:function(e=Ao,t){if(t.type===wo)return{...e,[t.connectionId]:t.instance};if(t.type===xo){const n={...e};return delete n[t.connectionId],n}return e},isPerformanceTabSupported:(e={},t)=>t.type===So?{...e,[t.connectionId]:t.isSupported}:e});const Mo=(0,i.nk)({name:"CompassSidebar",component:({onOpenConnectViaModal:e,isCompassWeb:t})=>{const n=(0,D.Vr)(),{log:a,mongoLogId:o}=(0,p.Ul)("COMPASS-SIDEBAR-UI");return r().createElement(d.tHk,{className:vo,displayName:"Sidebar",onError:(e,t)=>{a.error(o(1001000148),"Sidebar","Rendering sidebar failed",{error:e.message,errorInfo:t})}},r().createElement(bo,{activeWorkspace:n,onOpenConnectViaModal:e,isCompassWeb:t}))},activate(e,{globalAppRegistry:t,connections:n,instancesManager:a,logger:o},r){const{store:i,deactivate:s}=function({globalAppRegistry:e,connections:t,instancesManager:n,logger:a},{on:o,cleanup:r}){const i=(0,F.y$)(Io,(0,F.Tw)(P.A.withExtraArgument({globalAppRegistry:e,connections:t,instancesManager:n,logger:a}))),s=n.listMongoDBInstances();for(const[e,t]of s)i.dispatch(Do(e,t));return o(n,g.hV.InstanceCreated,((e,t)=>i.dispatch(Do(e,t)))),o(n,g.hV.InstanceRemoved,(e=>i.dispatch((e=>(t,n)=>{const{instance:a}=n();a[e]&&t({type:xo,connectionId:e})})(e)))),{store:i,deactivate:r}}({globalAppRegistry:t,connections:n,instancesManager:a,logger:o},r);return{store:i,deactivate:s}}},{connections:s.u4,instancesManager:g.Q3,logger:(0,p.fF)("COMPASS-SIDEBAR-UI")}),To=io.Provider;var Lo=n(25540),Oo=n(38673),No=n(19814);const _o="initial",Fo="analyzing",Po="complete";var Wo=n(39059);const Ro=e=>"circle"===e.type?(e=>{return{[e.field]:{$geoWithin:{$centerSphere:[[e.lng,e.lat],(t=e.radius,t/1609.344/3963.2)]}}};var t})(e):"polygon"===e.type?(e=>({[e.field]:{$geoWithin:{$geometry:{type:"Polygon",coordinates:e.coordinates}}}}))(e):void 0,Uo=e=>{const t=Object.values(e);return 1===t.length?Ro(t[0]):(e=>({$or:e.map((e=>Ro(e)))}))(t)};var $o=n(6909);const Vo=async(e,t,n,a,o,{log:r,mongoLogId:i,debug:s})=>{try{r.info(i(1001000089),"Schema","Starting schema analysis",{ns:n});const s=e.sampleCursor(n,a,{...o,promoteValues:!1,signal:t},{fallbackReadPreference:"secondaryPreferred"}),l={signal:t,storedValuesLengthLimit:100},c=await(0,$o.Dy)(s,l);return r.info(i(1001000090),"Schema","Schema analysis completed",{ns:n}),c}catch(e){if(r.error(i(1001000091),"Schema","Schema analysis failed",{ns:n,error:e.message,aborted:t.aborted,...t.aborted?{abortReason:t.reason?.message??t.reason}:{}}),t.aborted)return void s("caught background operation terminated error",e);const a=function(e){return e?("MongoError"===e.name&&void 0!==e.code&&(e.code=JSON.parse(JSON.stringify(e.code))),e):new Error("Unknown error")}(e);throw s("schema analysis failed",e),a}};function Ho(e){return void 0!==e.bsonType}const Ko=["Point","LineString","Polygon","MultiPoint","MultiLineString","MultiPolygon","GeometryCollection"];async function jo(e){let t=!1;const n={};let a=0,o=0,r=0,i=0,s=0;return await async function e(l,c){if(r++,1e3===r&&(r=0,await(async()=>new Promise((e=>setTimeout(e))))()),l&&0!==l.length){i=Math.max(c,i);for(const r of l){if("type"===r.path[r.path.length-1]&&r.values&&Ko.find((e=>r.values?.find((t=>t===e))))&&(t=!0),Ho(r)?"Undefined"!==r.bsonType&&(n[r.bsonType]=(n[r.bsonType]??0)+1):1===c&&(r.types&&(r.types.length>2||r.types?.filter((e=>"Undefined"!==e.name)).length>1)&&a++,r.probability<1&&o++),"Document"===r.bsonType)await e(r.fields,c+1);else if("Array"===r.bsonType||r.types){const t="Array"===r.bsonType?1:0;await e(r.types,c+t)}Ho(r)||s++}}}(e.fields,1),{field_types:n,geo_data:t,optional_field_count:o,schema_depth:i,variable_type_count:a,distinct_field_count:s}}function Bo(e,t){return e.type===t}function zo({metricsId:e,metricsType:t,clusterName:n}){const a=encodeURIComponent(n),o=encodeURIComponent(t),r=encodeURIComponent(e);return"serverless"===t||"flex"===t?`#/${o}/advisor/${a}/createIndexes`:`#/metrics/${o}/${r}/advisor`}const Yo="schema-service/schema-analysis/analysisStarted",qo="schema-service/schema-analysis/analysisFinished",Go="schema-service/schema-analysis/analysisFailed",Zo="schema-service/schema-analysis/analysisErrorDismissed";function Jo(e){let t="general";return 50===e.code&&(t="timeout"),{errorType:t,errorMessage:e.message||"Unknown error"}}function Qo(){return(new ne.UUID).toString()}const Xo=(e,t,n)=>(a,o,{geoLayersRef:r})=>{r.current=((e,t,n)=>t._latlngs?((e,t,n)=>{const a={...n};var o;return a[t._leaflet_id]={field:e,coordinates:(o=t._latlngs,o.map((e=>{const t=e.map((e=>[e.lng,e.lat]));return t.push(t[0]),t}))),type:"polygon"},a})(e,t,n):t._latlng?((e,t,n)=>{const a={...n};return a[t._leaflet_id]={field:e,lat:t._latlng.lat,lng:t._latlng.lng,radius:t._mRadius,type:"circle"},a})(e,t,n):n)(e,t,r.current),n(Uo(r.current))},er="standardJSON",tr="schema-service/schema-export/openExportSchema",nr="schema-service/schema-export/closeExportSchema",ar="schema-service/schema-export/openLegacyModal",or="schema-service/schema-export/closeLegacyModal",rr="schema-service/schema-export/setLegacyModalChoice",ir="schema-service/schema-export/changeExportSchemaFormatStarted",sr="schema-service/schema-export/changeExportSchemaFormatComplete",lr="schema-service/schema-export/changeExportSchemaFormatError",cr="schema-service/schema-export/cancelExportSchema",dr=()=>e=>{e(gr(er)),e({type:tr})},ur=()=>(e,t,{exportAbortControllerRef:n})=>(n.current?.abort(),e({type:cr})),mr=({stage:e,track:t,connectionInfoRef:n,exportedSchema:a,exportFormat:o})=>{t("Schema Export Failed",{has_schema:!!a,schema_length:a?.length||0,format:o,stage:e},n.current)},pr=({schema:e,source:t,format:n,track:a,connectionInfoRef:o})=>{a("Schema Exported",(async()=>{const{geo_data:a,schema_depth:o}=e?await jo(e):{geo_data:!1,schema_depth:0};return{has_schema:null!==e,format:n,source:t,schema_width:e?.fields?.length??0,schema_depth:o,geo_data:a}}),o.current)},hr=()=>(e,t,{track:n,connectionInfoRef:a})=>{const{schemaAnalysis:{schema:o},schemaExport:{exportFormat:r}}=t();pr({schema:o,format:r,source:"schema_tab",track:n,connectionInfoRef:a})},gr=e=>async(t,n,{logger:{log:a},exportAbortControllerRef:o,schemaAccessorRef:r,namespace:i,track:s,connectionInfoRef:l})=>{o.current?.abort(),o.current=new AbortController;const c=o.current.signal;let d;t({type:ir,exportFormat:e}),a.info((0,p.oW)(1001000342),"Schema export formatting","Formatting schema",{format:e});try{const t=r.current;if(!t)throw new Error("No schema analysis available. Please analyze the collection's schema before exporting.");d=await async function({exportFormat:e,schemaAccessor:t,signal:n}){let a;switch(e){case"standardJSON":a=await t.getStandardJsonSchema({signal:n});break;case"mongoDBJSON":a={$jsonSchema:await t.getMongoDBJsonSchema({signal:n})};break;case"expandedJSON":a=await t.getExpandedJSONSchema({signal:n});break;case"legacyJSON":a=await t.getInternalSchema({signal:n})}return JSON.stringify(a,null,2)}({schemaAccessor:t,exportFormat:e,signal:c})}catch(n){if(c.aborted)return;return a.error((0,p.oW)(1001000343),"Schema export formatting","Error formatting schema",{error:n.stack}),t({type:lr,errorMessage:n.message}),void mr({stage:"switching format",track:s,connectionInfoRef:l,exportedSchema:void 0,exportFormat:e})}if(c.aborted)return;a.info((0,p.oW)(1001000344),"Schema export formatting complete","Formatting schema complete",{format:e,exportedSchemaLength:d.length});const u=`schema-${i.replace(".","-")}-${e}.json`;t({type:sr,exportedSchema:d,filename:u})},fr="schemaExportLegacyModalChoice",yr=()=>(e,t,{namespace:n,track:a,connectionInfoRef:o})=>{const{schemaAnalysis:{schema:r}}=t(),i=null!==r;i&&navigator.clipboard.writeText(JSON.stringify(r,null," ")),pr({schema:r,source:"app_menu",format:"legacyJSON",track:a,connectionInfoRef:o}),e({type:or}),(0,d.c3r)("share-schema",i?{variant:"success",title:"Schema Copied",description:`The schema definition of ${n} has been copied to your clipboard in JSON format.`,timeout:5e3}:{variant:"warning",title:"Analyze Schema First",description:"Please analyze the schema in the schema tab before sharing the schema."})},br=(0,d.AHW)({display:"flex",flexDirection:"column",alignItems:"center",gap:d.YKD[400],padding:d.YKD[400]}),vr=(0,d.AHW)({width:"100%",position:"relative"}),Cr=(0,d.AHW)({width:"100%",display:"flex",alignItems:"center"}),Er=(0,d.AHW)({flexShrink:0,flexGrow:1,display:"flex",alignItems:"center",justifyContent:"flex-end",gap:d.YKD[200],paddingLeft:d.YKD[200]}),Sr=(0,Ee.Ng)((e=>({analysisState:e.schemaAnalysis.analysisState,error:e.schemaAnalysis.error,sampleSize:e.schemaAnalysis.schema?.count??0,schemaResultId:e.schemaAnalysis.resultId??""})),{onExportSchemaClicked:dr,onDismissError:()=>e=>e({type:Zo})})((({analysisState:e,error:t,onDismissError:n,isOutdated:a,onAnalyzeSchemaClicked:i,onExportSchemaClicked:s,onResetClicked:l,sampleSize:c,schemaResultId:u,setShowLegacyExportTooltip:m,showLegacyExportTooltip:p})=>{const h=(0,o.useMemo)((()=>1===c?"document":"documents"),[c]);return r().createElement("div",{className:br},r().createElement("div",{className:vr},r().createElement(Lo.sJ,{source:"schema",buttonLabel:"Analyze",resultId:u,onApply:i,onReset:l})),e===Po&&!a&&r().createElement("div",{className:Cr},Po&&r().createElement("div",null,r().createElement(d.m_M,{id:"export-schema-tooltip",open:p,onClose:()=>m(!1),triggerEvent:"click",trigger:r().createElement(d.$nd,{variant:"default",onClick:s,"data-testid":"open-schema-export-button",size:"xsmall",leftGlyph:r().createElement(d.Int,{glyph:"Export"})},"Export Schema")},"Next time, export the schema directly from Compass' Schema tab.")),r().createElement("div",{className:Er,"data-testid":"schema-document-count"},r().createElement(d.nBu,{"data-testid":"schema-analysis-message"},"This report is based on a sample of ",r().createElement("b",null,c)," ",h,"."),r().createElement(d.N_E,{"aria-label":"Schema sampling documentation",href:"https://docs.mongodb.com/compass/current/sampling#sampling",target:"_blank"},"Learn more"))),"general"===t?.errorType&&r().createElement(d.dFH,{"data-testid":"schema-toolbar-error-message",errors:[`An error occurred during schema analysis: ${t.errorMessage}`],dismissible:!0,onClose:n}),"timeout"===t?.errorType&&r().createElement(d.rpn,{"data-testid":"schema-toolbar-timeout-message",warnings:["Operation exceeded time limit. Please try increasing the maxTimeMS for the query in the filter options."],dismissible:!0,onClose:n}),e===Po&&a&&r().createElement(d.rpn,{warnings:['The schema content is outdated and no longer in sync with the documents view. Press "Analyze" again to see the schema for the current query.']}))}));var kr=n(93161),wr=n.n(kr);const xr=(0,d.AHW)({textTransform:"lowercase"}),Ar=(0,d.AHW)({lineHeight:`${d.YKD[100]}px`,display:"inline-block",verticalAlign:"top"}),Dr=(0,d.AHW)({overflow:"hidden",cursor:"pointer",border:"none",margin:0,padding:0,background:"none",textAlign:"left",width:"100%"}),Ir=(0,d.AHW)({cursor:"default"}),Mr=(0,d.AHW)({height:"5px",marginRight:"2px",background:d.MFm.gray.light1}),Tr=(0,d.AHW)({background:d.MFm.gray.dark2}),Lr=(0,d.AHW)({background:d.MFm.white,border:`1px solid ${d.MFm.gray.light1}`});function Or(e){return e?.sort(((e,t)=>"Undefined"===e.name?1:"Undefined"===t.name?-1:t.probability-e.probability))||[]}function Nr({types:e,onSetTypeActive:t,activeType:n}){const a=(0,o.useCallback)((e=>{t({...e,isInArray:!0})}),[t]),i=(0,o.useMemo)((()=>Or(e)),[e]),s=i.find((e=>e.name===n?.name&&!0===n?.isInArray));return r().createElement("div",{"data-testid":"schema-field-type-list"},i.map((e=>r().createElement(Fr,{key:`subtype-${e.name}`,activeType:s,onSetTypeActive:()=>a(e),type:e,types:e.types,typeName:e.name,probability:e.probability,showSubTypes:!1}))))}const _r=({name:e})=>r().createElement(d.MWq,{className:xr},e);function Fr({type:e,typeName:t,types:n,activeType:a,probability:i,onSetTypeActive:s,showSubTypes:l}){const c=(0,o.useCallback)((n=>{n.stopPropagation(),"Undefined"!==t&&s(e)}),[s,e,t]),u=(0,o.useMemo)((()=>{const e=i>.99&&i<1||i>0&&i<.01?"0.0%":"0%";return`${t} (${wr()(i).format(e)})`}),[i,t]),m="Undefined"===t,p="Array"===t,h=t===a?.name&&!0!==a?.isInArray;return r().createElement("div",{className:(0,d.cx)(Ar),style:{width:100*i+"%"}},r().createElement(d.m_M,{trigger:r().createElement("button",{className:(0,d.cx)(Dr,m&&Ir),onClick:c},l?r().createElement(_r,{name:t}):null,r().createElement("div",{className:(0,d.cx)(Mr,h&&Tr,m&&Lr)}))},u),p&&l&&r().createElement(Nr,{activeType:a,onSetTypeActive:s,types:n||[]}),r().createElement("button",{className:(0,d.cx)(Dr,m&&Ir),onClick:c},l?null:r().createElement(_r,{name:t})))}var Pr=n(81358);const Wr={DECIMAL_128:"Decimal128",DOUBLE:"Double",LONG:"Long",INT_32:"Int32",STRING:"String",NUMBER:"Number"};var Rr=n(67092);const{DECIMAL_128:Ur,DOUBLE:$r,LONG:Vr,INT_32:Hr}=Wr,Kr=(0,d.AHW)({backgroundColor:d.MFm.gray.light2,border:"1px solid transparent",color:d.MFm.gray.dark3,padding:`${d.YKD[100]/2} ${d.YKD[100]}`,borderRadius:d.YKD[100],"&:hover":{cursor:"pointer"}}),jr=(0,d.AHW)({whiteSpace:"pre-wrap"}),Br=(0,d.AHW)({backgroundColor:d.MFm.gray.dark2,color:d.MFm.gray.light3}),zr=(0,d.AHW)({backgroundColor:d.MFm.yellow.base,color:d.MFm.gray.dark3});function Yr({fieldName:e,queryValue:t,value:n,onQueryChanged:a}){const i=(0,d.D27)(),s=(0,o.useCallback)((t=>{a(t.shiftKey?"toggleDistinctValue":"setValue",{field:e,value:n,unsetIfSet:!0})}),[a,e,n]),l=(0,o.useMemo)((()=>function(e){const t=(0,Rr.TB)(e);if(t){if([Ur,Vr].includes(t))return e.toString();if([$r,Hr].includes(t))return String(e.value)}return(0,je.isString)(e)?e:String(e)}(n)),[n]),c=(0,o.useMemo)((()=>(0,Pr.mC)(t,n)),[t,n]);return r().createElement("li",{className:"bubble"},r().createElement(d.nBu,null,r().createElement("button",{type:"button","aria-label":`${c?"Remove":"Add"} ${l} ${c?"from":"to"} query`,className:(0,d.cx)(Kr,(0,je.isString)(n)&&jr,i&&Br,c&&zr),onClick:s},l)))}class qr extends o.Component{static displayName="UniqueMiniChartComponent";static propTypes={fieldName:Ke().string.isRequired,queryValue:Ke().oneOfType([Ke().string,Ke().object]),type:Ke().object.isRequired,width:Ke().number,onQueryChanged:Ke().func};constructor(e){super(e),this.state={sample:(0,je.sampleSize)(this.props.type.values,20)}}onRefresh(e){e.stopPropagation(),e.preventDefault(),this.setState({sample:(0,je.sampleSize)(this.props.type.values,20)})}render(){if(!this.props.type.values)return r().createElement("div",null);const e=this.state.sample||[],t=this.props.fieldName.toLowerCase(),n=this.props.type.name.toLowerCase(),a=e.map(((e,a)=>r().createElement(Yr,{key:`${t}-${n}-${a}`,value:e,queryValue:this.props.queryValue,fieldName:this.props.fieldName,onQueryChanged:this.props.onQueryChanged}))),o={width:this.props.width};return r().createElement("div",{className:"minichart unique",style:o},r().createElement("dl",{className:"dl-horizontal"},r().createElement("dt",null,r().createElement(d.K0,{"aria-label":"Refresh sample values",onClick:this.onRefresh.bind(this)},r().createElement(d.Int,{glyph:"Refresh"}))),r().createElement("dd",null,r().createElement("ul",null,a))))}}const Gr=qr,Zr=function({nestedDocType:e}){let t="";if(e){const n=e.fields?.length??0;t=`Document with ${n} nested field${1===n?"":"s"}.`}return r().createElement(d.nBu,null,t)},Jr=function({nestedDocType:e,type:t}){let n="";if(e){const t=e.fields?.length??0;n=`Array of documents with ${t} nested field${1===t?"":"s"}.`}const a=Math.min(...t.lengths),o=wr()(t.averageLength).format("0.0[0]"),i=Math.max(...t.lengths);return r().createElement(r().Fragment,null,r().createElement(d.nBu,null,n),r().createElement(d.nBu,{as:"div"},r().createElement("dl",null,r().createElement("dt",null,"Array lengths"),r().createElement("dd",null,r().createElement("ul",null,r().createElement("li",null,"min: ",a),r().createElement("li",null,"average: ",o),r().createElement("li",null,"max: ",i))))))};var Qr=n(70455),Xr=n.n(Qr),ei=n(63362),ti=n(22140),ni=n(82354),ai=n(73076),oi=(n(29192),n(54805),n(8023),n(92560),n(95593)),ri=n.n(oi),ii=n(92926),si=n.n(ii),li=n(28742),ci=n.n(li),di=n(37385),ui=n.n(di),mi=n(56565),pi=n.n(mi),hi=n(20930),gi=n.n(hi),fi=n(65654),yi={};yi.styleTagTransform=gi(),yi.setAttributes=ui(),yi.insert=ci().bind(null,"head"),yi.domAPI=si(),yi.insertStyleElement=pi(),ri()(fi.A,yi),fi.A&&fi.A.locals&&fi.A.locals;var bi=n(45585),vi=n(51768),Ci=n(93276),Ei={};Ei.styleTagTransform=gi(),Ei.setAttributes=ui(),Ei.insert=ci().bind(null,"head"),Ei.domAPI=si(),Ei.insertStyleElement=pi(),ri()(Ci.A,Ei);const Si=Ci.A&&Ci.A.locals?Ci.A.locals:void 0,ki=({fields:e})=>r().createElement(vi.A,{closeButton:!1,className:Si.popup},r().createElement(wi,{fields:e}));ki.propTypes={fields:Ke().array};const wi=({fields:e})=>e.filter((e=>e.key)).map((e=>{const{key:t,value:n}=e;return r().createElement("span",{className:Si.line,key:t},r().createElement("span",{className:Si.key},t,":")," ",r().createElement("span",{className:Si.value},n))})),xi=ki,Ai={weight:1,radius:5,fillOpacity:.6},Di=(e,t)=>{const n={...Ai,...t};return r().createElement(e,(0,a.A)({},n,{onMouseOver:e=>{e.target.openPopup()},onMouseOut:e=>{e.target.closePopup()}}),r().createElement(xi,n))};Di.propTypes={fields:Ke().array};const Ii=({data:e})=>e.map(((e,t)=>(e.key=t,Di(bi.A,e))));Ii.propTypes={data:Ke().array.isRequired};const Mi=Ii,Ti=(new Date).getFullYear();let Li=function(){let e;return async function(){return e||(e=await async function(){const e=await fetch("https://compass-maps.mongodb.com/compass/copyright/v3").then((e=>e.json())),t=e.resources.base.styles["lite.day"];return Object.values(Be().pick(e.copyrights,t)).flat().map((e=>({alt:e.copyrightText,label:e.label,maxLevel:e.maxLevel,minLevel:e.minLevel,boxes:e.boundingBoxes.map((e=>Xr().latLngBounds(Xr().latLng(e.south,e.west),Xr().latLng(e.north,e.east))))})))}()),e}}();const Oi=d.MFm.blue.light1,Ni={center:[0,0],zoom:1},_i=e=>!isNaN(+e[0])&&!isNaN(+e[1])||(console.warn("@mongodb-js/compass-schema:coordinates-minichart: Dropping invalid coordinate value",e),!1);class Fi extends o.PureComponent{static displayName="CoorddinatesMinichart";static propTypes={_id:Ke().string,type:Ke().shape({name:Ke().string.isRequired,count:Ke().number.isRequired,probability:Ke().number.isRequired,unique:Ke().number,values:Ke().array}),fieldName:Ke().string.isRequired,darkMode:Ke().bool,onGeoQueryChanged:Ke().func.isRequired,geoLayerAdded:Ke().func.isRequired,geoLayersEdited:Ke().func.isRequired,geoLayersDeleted:Ke().func.isRequired};state={ready:!1,attributionMessage:""};fitMapBounds(){const e=this.mapRef;if(!e)return;const t=e.leafletElement,n=this.props.type.values.filter(_i);let a=Xr().latLngBounds();1===n.length?a=Xr().latLng(+n[0][1],+n[0][0]).toBounds(800):n.forEach((e=>{a.extend(Xr().latLng(+e[1],+e[0]))})),a._northEast.lat===a._southWest.lat&&a._northEast.lng===a._southWest.lng&&(a._northEast.lat=a._northEast.lat+.1,a._southWest.lng=a._southWest.lng-.1),t.fitBounds(a)}componentDidUpdate(e){e.type?.values!==this.props.type?.values&&this.fitMapBounds(),this.invalidateMapSize()}whenMapReady=()=>{this.state.ready||(this.disableAttributionPrefix(),this.getTileAttribution(),this.setState({ready:!0},(()=>{this.invalidateMapSize(),this.fitMapBounds()})))};disableAttributionPrefix(){const e=this.mapRef;if(!e)return;const t=e.leafletElement;t?.attributionControl?.setPrefix(!1)}async getTileAttribution(){const e=await async function(e){let t="";if(e){const n=e.leafletElement.getBounds(),a=e.leafletElement.getZoom();t=await async function(e,t){const n=await Li(),a=[];n.forEach((n=>{n.boxes.some((t=>e.intersects(t)))>0&&t>n.minLevel&&t<n.maxLevel&&a.push(n.label)}));const o=a.join(", ");return` <a target="_blank" href="https://leafletjs.com/">Leaflet</a> | &copy; 1987-${Ti} HERE${o.length>0?`, ${o}`:""} | <a target="_blank" href="https://legal.here.com/en/terms/serviceterms/us">Terms of Use</a>`}(n,a)}return t}(this.mapRef);this.setState({attributionMessage:e})}invalidateMapSize(){const e=this.mapRef;e&&(e.container.style.height=12*d.YKD[5]+"px",e.container.style.width="100%",e.leafletElement.invalidateSize())}onMoveEnd=(0,je.debounce)((()=>{this.getTileAttribution()}));renderMapItems(){const{fieldName:e}=this.props,t=this.props.type.values.filter(_i).map((t=>{const n=(e=>{const[t,n]=[+e[0],+e[1]];return{type:"Point",coordinates:[n,t],center:[n,t],color:Oi,fields:[{key:"[longitude, latitude]",value:`[Lat = ${n}, Long = ${t}]`}]}})(t);return n.fields[0].key=e,n}));return r().createElement(Mi,{data:t})}onCreated=e=>{this.props.geoLayerAdded(this.props.fieldName,e.layer,this.props.onGeoQueryChanged)};onEdited=e=>{this.props.geoLayersEdited(this.props.fieldName,e.layers,this.props.onGeoQueryChanged)};onDeleted=e=>{this.props.geoLayersDeleted(e.layers,this.props.onGeoQueryChanged)};render(){const{attributionMessage:e}=this.state;return r().createElement("div",{style:{background:d.MFm.gray.dark3}},r().createElement(ei.A,{minZoom:1,viewport:Ni,whenReady:this.whenMapReady,ref:e=>{this.mapRef=e},onMoveend:this.onMoveEnd},this.renderMapItems(),r().createElement(ti.A,{url:this.props.darkMode?"https://compass-maps.mongodb.com/compass/maptile/v3/lite.night/{z}/{x}/{y}/512":"https://compass-maps.mongodb.com/compass/maptile/v3/lite.day/{z}/{x}/{y}/512",attribution:e}),r().createElement(ni.A,null,r().createElement(ai.M,{position:"topright",onEdited:this.onEdited,onCreated:this.onCreated,onDeleted:this.onDeleted,onMounted:this.onMounted,onEditStop:this.onEditStop,onDeleteStop:this.onDeleteStop,draw:{rectangle:!1,polyline:!1,marker:!1,circlemarker:!1}}))))}}const Pi=({onQueryChanged:e,...t})=>{const n=(0,d.D27)(),i=(0,o.useCallback)((t=>{e("mergeGeoQuery",t)}),[e]);return r().createElement(Fi,(0,a.A)({},t,{darkMode:n,onGeoQueryChanged:i}))};Pi.propTypes={onQueryChanged:Ke().func};const Wi=(0,Ee.Ng)(void 0,{geoLayerAdded:Xo,geoLayersEdited:(e,t,n)=>(a,o,{geoLayersRef:r})=>{t.eachLayer((t=>{a(Xo(e,t,(()=>{})))})),n(Uo(r.current))},geoLayersDeleted:(e,t)=>(n,a,{geoLayersRef:o})=>{e.eachLayer((e=>{delete o.current[e._leaflet_id]})),t(Uo(o.current))}})(Pi);var Ri=n(25213),Ui=n.n(Ri);const $i={Double:e=>e.map((e=>e.value)),Int32:e=>e.map((e=>e.value)),Long:e=>e.map((e=>e.toNumber())),Decimal128:e=>e.map((e=>e.toString()))},Vi={Long:e=>ne.Long.fromNumber(e),Decimal128:e=>ne.Decimal128.fromString(e),Date:e=>new Date(e),ObjectId:e=>ne.ObjectId.createFromHexString(e)};Vi.ObjectID=Vi.ObjectId;const Hi=e=>e;class Ki extends o.Component{static displayName="D3Component";static propTypes={fieldName:Ke().string.isRequired,type:Ke().object.isRequired,renderMode:Ke().oneOf(["svg","div"]),width:Ke().number,height:Ke().number,chart:Ke().any.isRequired,query:Ke().any};constructor(e){super(e),this.state={chart:this.props.chart}}componentDidMount(){this._redraw()}componentDidUpdate(){this._redraw()}componentWillUnmount(){this._cleanup()}_getContainer(){let e={className:"minichart",ref:e=>{this.containerRef=e}};const t={width:this.props.width,height:this.props.height};return"svg"===this.props.renderMode?(e=Object.assign(e,t),r().createElement("svg",e,r().createElement("defs",null,r().createElement("pattern",{id:"diagonal-stripes",width:"4",height:"4",patternUnits:"userSpaceOnUse",patternTransform:"rotate(45)"},r().createElement("rect",{width:"2.5",height:"4",transform:"translate(0,0)",fill:d.MFm.white})),r().createElement("mask",{id:"mask-stripe"},r().createElement("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"url(#diagonal-stripes)"}))))):(e=Object.assign(e,{style:t}),r().createElement("div",e))}_cleanup(){this.state.chart&&this.state.chart.cleanup()}_redraw(){const e=this.containerRef;e&&(this.state.chart.width(this.props.width).height(this.props.height),this.state.chart.options({fieldName:this.props.fieldName,unique:this.props.type.unique,query:this.props.query,promoter:Vi[this.props.type.bsonType]||Hi}),$i[this.props.type.bsonType]?Ui().select(e).datum($i[this.props.type.bsonType](this.props.type.values)).call(this.state.chart):Ui().select(e).datum(this.props.type.values).call(this.state.chart))}render(){const e=this._getContainer();return r().createElement("div",{className:"minichart-wrapper"},e)}}const ji=Ki,Bi={margin:{top:10,right:0,bottom:10,left:40},friendlyPercentFormat:function(e){const t=Ui().format(".1r"),n=Ui().format(".0f"),a=(e>1?n:t)(e),o=function(e){return(+e).toFixed(20).replace(/^-?\d*\.?|0+$/g,"").length}(a);return function(t,n){return t===e?a+"%":t>1&&!n?Ui().round(t,o)+"%":Ui().round(t/e*a,o+1)+"%"}},truncateTooltip:function(e,t){return t=t||500,e.length>t&&(e=e.substring(0,t-1)+"&hellip;"),e},tooltip:function(e,t){return`\n <div class="tooltip-wrapper">\n <div class="tooltip-label">${e=e.replaceAll(/</g,"&lt;").replaceAll(/>/g,"&gt;")}</div>\n <div class=".tooltip-value">${t}</div>\n </div>`}},zi=Bi;n(73578)(Ui());const Yi=e=>d.AHW`
1
+ var e,t,n,a={1568:(e,t,n)=>{n.r(t),n.d(t,{connect:()=>o});var a=n(51390);const o=e=>(0,a.createConnection)({...e,tls:!0})},2155:(e,t,n)=>{n.d(t,{HD:()=>c,HP:()=>g,I4:()=>d,gp:()=>h,n_:()=>m,oC:()=>u,tU:()=>l,yS:()=>p});var a=n(96652),o=n(62183);const r=(0,a.createContext)(void 0),i=(0,a.createContext)(void 0),s=(0,a.createContext)(void 0),l=r.Provider,c=i.Provider,d=s.Provider,u=(0,o.mb)((()=>(0,a.useContext)(r)),"pipelineStorageLocator"),m=()=>(0,a.useContext)(i),p=(0,o.mb)(m,"favoriteQueryStorageAccessLocator"),h=()=>(0,a.useContext)(s),g=(0,o.mb)(h,"recentQueryStorageAccessLocator")},3370:(e,t,n)=>{function a(){throw new Error("Not supported in browser environment")}n.r(t),n.d(t,{pipeline:()=>a})},4308:(e,t,n)=>{n.r(t),n.d(t,{createWriteStream:()=>i,default:()=>s,promises:()=>a,readFileSync:()=>r,rmSync:()=>o});const a={chmod:()=>Promise.resolve(),access:()=>Promise.reject(new Error("Not supported in browser environment")),readFile:()=>Promise.reject(new Error("Not supported in browser environment"))};function o(){}function r(){}function i(){throw new Error("Not supported in browser environment")}const s={promises:a,rmSync:o,readFileSync:r,createWriteStream:i}},6725:(e,t,n)=>{function a(){}async function o(e,t,n,a){delete t.proxy,delete t.applyProxyToOIDC,delete t.productDocsLink,delete t.productName,delete t.oidc,delete t.parentState,delete t.parentHandle;const o=new a(e,t);return await o.connect(),{client:o,state:{getStateShareServer:()=>Promise.resolve("Not Available"),oidcPlugin:{logger:n,serialize:()=>Promise.resolve(void 0)},destroy:()=>Promise.resolve()}}}n.r(t),n.d(t,{connectMongoClient:()=>o,hookLogger:()=>a})},6924:(e,t,n)=>{n.d(t,{BE:()=>f,VV:()=>g,bk:()=>u,i2:()=>C});var a=n(14956),o=n(96652),r=n.n(o),i=n(19125),s=n(82162);const l="compass-workspaces/workspace-tab-state-provider/SET_STATE",c="compass-workspaces/workspace-tab-state-provider/CLEANUP_TAB_STATE",d=(0,s.y$)(((e=Object.create(null),t)=>t.type===l?{...e,[t.tabId]:{...e[t.tabId],[t.stateId]:t.value}}:t.type===c?(delete e[t.tabId],{...e}):"compass-workspaces/workspace-tab-state-provider/RESET"===t.type?Object.create(null):e));function u(e){d.dispatch({type:c,tabId:e})}const m=r().createContext(null),p=r().createContext(null),h=({children:e})=>r().createElement(i.Kq,{context:m,store:d},e),g=({id:e,children:t})=>r().createElement(p.Provider,{value:e},r().createElement(h,null,t));function f(){let e=(0,o.useContext)(p);if(!e)throw new Error("Trying to get tab id from React context, but getting `null`. Are you using workspace scoped hooks outside of workspace tab React rendering tree?");return e}const y=(0,i.Nk)(m),b=(0,i.jO)(m);function v(e,t,n){return e[t]?.[n]}function C(e,t){const n=(0,a.nfZ)(e),r=(0,a.nfZ)(f()),i=(0,a.nfZ)((()=>{try{return y()}catch(e){throw e}})()),s=(0,o.useCallback)((e=>{const t="function"==typeof e?e(v(i.getState(),r,n)):e;i.dispatch({type:l,tabId:r,stateId:n,value:t})}),[n,i,r]),c=(0,o.useRef)(!1);!1===c.current&&(c.current=!0,Object.prototype.hasOwnProperty.call(i.getState()[r]??{},n)||s(t));const d=function(e,t){try{return b((n=>v(n,e,t)))}catch(e){throw e}}(r,n);return[d,s]}},7570:(e,t,n)=>{n.d(t,{N_:()=>l,Ze:()=>d,Zk:()=>u}),n(72468),n(46948),n(64418),n(8422),n(59509),n(25691),n(23177),n(3142),n(51615),n(84217),n(25953),n(42319),n(28465),n(12887),n(36106),n(84542),n(57068),n(69517),n(64990),n(90801),n(95774),n(77767);var a=n(13353);function o(e,t){const n=(0,a.serialize)(e);if(!t||0===t.length)return new Uint8Array(n);const o=new Uint8Array(n.length+t.length);return o.set(n,0),o.set(t,n.length),o}function r({code:e,reason:t}){return["Connection failed",e&&`[${e}]`||null,t||null].filter(Boolean).join(" - ")}const i=function*(){let e=0;for(;;){let t=e,n="";do{n=String.fromCharCode(97+t%26)+n,t=(t/26|0)-1}while(t>=0);yield n,e+=1}}();function s(e,t,n,a){return e?.addEventListener(t,n,a),{[Symbol.dispose](){e?.removeEventListener(t,n,a)}}}class l{ws=null;baseUrls;connectedUrl=null;sourceAddress;logger;sockets=new Map;disposableStack=null;nextPort=1;closed=!1;connectPromise=null;connectResolve=null;connectReject=null;constructor({baseUrls:e,logger:t}){if(this.baseUrls=m?[m]:e??["ws://localhost:1337"],!this.baseUrls.length)throw new Error("baseUrls must not be empty");this.logger=t,this.logger?.log.info(this.logger?.mongoLogId(1001000420),"COMPASS-WEB-MULTIPLEXING","Link created",{baseUrls:this.baseUrls})}get urls(){return this.baseUrls}get url(){return this.connectedUrl}async connect(e){if(this.connectPromise)return this.connectPromise;if(this.closed)throw new Error("Link is closed");const{promise:t,resolve:n,reject:a}=Promise.withResolvers();this.connectPromise=t,this.connectResolve=n,this.connectReject=a;const o=s(e,"abort",(e=>{const t=e.target.reason;this.connectReject?.(t instanceof Error?t:new Error("Connection aborted."))}));return this.openWebSocket(),await this.connectPromise.finally((()=>o[Symbol.dispose]()))}openWebSocket(){this.sourceAddress=i.next().value,this.logger?.log.info(this.logger?.mongoLogId(1001000428),"COMPASS-WEB-MULTIPLEXING","Link connecting to WS",{sa:this.sourceAddress});const e=new DisposableStack,t=this.baseUrls.map((t=>{const n=new WebSocket(t);n.binaryType="arraybuffer";const{promise:a,resolve:o,reject:i}=Promise.withResolvers();return e.use(s(n,"open",(()=>o(n)),{once:!0})),e.use(s(n,"close",(e=>i(new Error(r(e)))),{once:!0})),{ws:n,promise:a}}));Promise.any(t.map((e=>e.promise))).then((e=>{for(const{ws:n}of t)n!==e&&n.close(1e3,"Race lost");this._activateWebSocket(e)}),(e=>{const t=e.errors[0];this.connectReject?.(t),this.connectResolve=null,this.connectReject=null,this.connectPromise=null;for(const e of this.sockets.values())e.onError(t);this.sockets.clear()})).finally((()=>e.dispose()))}_activateWebSocket(e){this.ws=e,this.connectedUrl=e.url;const t=new DisposableStack;t.use(s(e,"close",this.onClose.bind(this),{once:!0})),t.use(s(e,"message",this.onMessage.bind(this))),t.defer(this.close.bind(this,"Link Disposed")),this.disposableStack=t,this.connectResolve?.(),this.connectResolve=null,this.connectReject=null,this.logger?.log.info(this.logger?.mongoLogId(1001000421),"COMPASS-WEB-MULTIPLEXING","WebSocket connection established",{sourceAddress:this.sourceAddress})}_rejectWithCloseError(e){const t=new Error(r(e));this.connectReject?.(t),this.connectResolve=null,this.connectReject=null,this.connectPromise=null;for(const e of this.sockets.values())e.onError(t);this.sockets.clear()}onClose(e){this.ws=null,this.connectedUrl=null,this.closed||(this.logger?.log.info(this.logger?.mongoLogId(1001000422),"COMPASS-WEB-MULTIPLEXING","WebSocket closed",{code:e.code,reason:e.reason,sourceAddress:this.sourceAddress}),this._rejectWithCloseError(e))}onMessage({data:e}){const t=function(e){if(e.length<4)return null;const t=e[0]|e[1]<<8|e[2]<<16|e[3]<<24>>>0;if(t<5||t>e.length)return null;try{const n=e.slice(0,t);return{header:(0,a.deserialize)(n),payload:e.slice(t)}}catch{return null}}(new Uint8Array(e));if(!t)return;const{header:n,payload:o}=t,r=n.dp,i=this.sockets.get(r);return i?-1===n.v?(i.onError(new Error(`Connection closed by remote: ${n.er}`)),void this.sockets.delete(r)):void(o.length>0&&i.onData(o)):void 0}allocatePort(){return this.nextPort++}async registerSocket(e,t){this.isConnected()||await this.connect(),this.logger?.log.info(this.logger?.mongoLogId(1001000423),"COMPASS-WEB-MULTIPLEXING","Registering socket",{sourcePort:e,sourceAddress:this.sourceAddress}),this.sockets.set(e,t)}unregisterSocket(e){this.logger?.log.info(this.logger?.mongoLogId(1001000424),"COMPASS-WEB-MULTIPLEXING","Unregistering socket",{sourcePort:e,sourceAddress:this.sourceAddress}),this.sockets.delete(e)}sendData(e,t,n,a){const r={v:1,sa:this.sourceAddress,sp:e,da:t,dp:n,sz:a.length};this.sendRaw(o(r,a))}sendError(e,t,n,a){const r={v:-1,sa:this.sourceAddress,sp:e,da:t,dp:n,sz:0,er:a};this.sendRaw(o(r))}sendRaw(e){this.isConnected()?this.ws?.send(e.buffer):this.logger?.log.error(this.logger?.mongoLogId(1001000425),"COMPASS-WEB-MULTIPLEXING","Failed to send frame, WebSocket not open",{readyState:this.ws?.readyState,sourceAddress:this.sourceAddress})}close(e){if(!this.closed){this.logger?.log.info(this.logger?.mongoLogId(1001000426),"COMPASS-WEB-MULTIPLEXING","Closing Link",{reason:e,sourceAddress:this.sourceAddress}),this.closed=!0,this.disposableStack?.dispose(),this.disposableStack=null,this.ws?.close(1e3,e),this.ws=null,this.connectPromise=null,this.connectResolve=null,this.connectReject=null;for(const e of this.sockets.values())e.onClose();this.sockets.clear()}}isConnected(){return this.ws?.readyState===WebSocket.OPEN}[Symbol.dispose](){this.close("Link Disposed")}}let c=null;function d(e){c=e}function u(){return c}let m=null},7742:()=>{},10514:()=>{},12738:(e,t,n)=>{function a(){const e=function(){let e;try{e=n(98064).app}catch(t){try{e=n(66363).app}catch(e){console.log("Could not load @electron/remote",t.message,e.message)}}return e}()?.getPath("userData");if(!e)throw new Error("The storage path is not defined.");return e}n.d(t,{Om:()=>c,VJ:()=>i,bW:()=>a,nc:()=>s,kk:()=>l,Te:()=>r});class o extends Error{constructor(e){super(e??"This operation was aborted")}name="AbortError"}const r=e=>{if(e?.aborted)throw e.reason??i()},i=e=>{const t=new AbortController;return t.abort(),e&&t.signal.reason&&Object.defineProperty(t.signal.reason,"message",{get:()=>e,configurable:!0,enumerable:!0}),t.signal.reason??new o(e)};function s(e){return"AbortError"===e?.name}async function l(e,t){if(t.aborted)return Promise.reject(t.reason??i());let n;const a=new Promise(((e,a)=>{n=()=>a(t.reason??i()),t.addEventListener("abort",n,{once:!0})}));try{return await Promise.race([a,e])}finally{n&&t.removeEventListener("abort",n)}}async function c(e,t){await l(new Promise((t=>{setTimeout(t,e)})),t)}},13154:(e,t,n)=>{n.d(t,{s:()=>o});var a=n(44142);const o=({sendTrack:e,logger:{log:t,debug:n},preferences:o})=>(...r)=>{Promise.resolve().then((()=>(async(r,i,s)=>{const{trackUsageStatistics:l=!0}=o?.getPreferences()??{};if(!l)return;let c="object"==typeof i?i:{};if("function"==typeof i)try{c=await i()}catch(n){return e("Error Fetching Attributes",{event_name:r}),void t.error((0,a.oW)(1001000190),"Telemetry","Error computing event properties for telemetry",{event:r,error:n.stack})}s&&(c.connection_id=s.id),n("sendTrack()",r,c),e(r,c||{})})(...r))).catch((e=>n("track failed",e)))}},14582:(e,t,n)=>{n(95039);const a=n(90605);function o(e){return!!e.lengths&&!!a.every(e.lengths,(function(e){return 2===e}))&&!!e.types&&!!a.isArray(e.types)&&1===e.types.length&&!!a.includes(["Number","Double","Int32","Decimal128"],e.types[0].name)&&function(e){const t=a.filter(e,(function(e,t){return t%2==0})),n=a.filter(e,(function(e,t){return t%2==1}));return a.min(t)>=-180&&a.max(t)<=180&&a.min(n)>=-90&&a.max(n)<=90&&a.zip(t,n)}(e.types[0].values)}e.exports=function(e){return"Document"===e.name?function(e){if(!e.fields)return!1;if(!a.isArray(e.fields))return!1;if(e.fields.length<2)return!1;const t=a.find(e.fields,["name","type"]),n=a.find(e.fields,["name","coordinates"]);return!(!t||!n)&&!!t.types&&!!a.isArray(t.types)&&1===t.types.length&&"String"===t.types[0].name&&!!a.every(t.types[0].values,(function(e){return"Point"===e}))&&!!n.types&&!!a.isArray(n.types)&&1===n.types.length&&"Array"===n.types[0].name&&o(n.types[0])}(e):"Array"===e.name&&o(e)}},15088:(e,t,n)=>{n.r(t),n.d(t,{addListener:()=>h,arch:()=>I,argv:()=>d,chdir:()=>w,cwd:()=>k,default:()=>M,emit:()=>v,emitWarning:()=>A,env:()=>c,hrtime:()=>i.a,listeners:()=>S,nextTick:()=>s,off:()=>f,on:()=>p,once:()=>g,platform:()=>D,prependListener:()=>C,prependOnceListener:()=>E,process:()=>o.a,removeAllListeners:()=>b,removeListener:()=>y,title:()=>l,umask:()=>x,version:()=>u,versions:()=>m});var a=n(26752),o=n.n(a),r=n(89699),i=n.n(r);o().hrtime??=i(),o().emitWarning??=console.warn,o().platform="Unknown",o().arch="Unknown";const{nextTick:s,title:l,env:c,argv:d,version:u,versions:m,on:p,addListener:h,once:g,off:f,removeListener:y,removeAllListeners:b,emit:v,prependListener:C,prependOnceListener:E,listeners:S,cwd:k,chdir:w,umask:x,emitWarning:A,platform:D,arch:I}=o(),M=o()},15857:(e,t,n)=>{e.exports=n(60484)},16151:()=>{},16154:()=>{},17931:(e,t,n)=>{n.d(t,{C:()=>a,q:()=>o});const a={mockDataGenerator:"MOCK_DATA_GENERATOR_ITERATION_20260507",searchActivationProgramP1:"SEARCH_ACTIVATION_PROGRAM_P1_20260427",searchActivationProgramP2:"SEARCH_ACTIVATION_PROGRAM_P2_20260609"},o={mockDataGeneratorVariant:"mockDataGeneratorVariant",mockDataGeneratorControl:"mockDataGeneratorControl",searchActivationProgramP1Variant:"searchActivationProgramP1Variant",searchActivationProgramP1Control:"searchActivationProgramP1Control",searchActivationProgramP2Variant:"searchActivationProgramP2Variant",searchActivationProgramP2Control:"searchActivationProgramP2Control"}},17961:(e,t,n)=>{const a=n(5389).extend({props:{type:"string",servers:"array",setName:"string"}});e.exports=a},25657:(e,t,n)=>{n.d(t,{K:()=>s,n:()=>l});var a=n(96652),o=n.n(a),r=n(14956);const i=o().createContext([]),s=({value:e,children:t})=>{const n=(0,r.nfZ)(e);return o().createElement(i.Provider,{value:n},t)},l=()=>{const e=(0,a.useContext)(i);return(0,r.nfZ)({hasWorkspacePlugin:t=>e.some((e=>e.name===t)),getWorkspacePlugins:()=>e,getWorkspacePluginByName:t=>{const n=e.find((e=>e.name===t));if(!n)throw new Error(`Component for workspace "${t}" is missing in context. Did you forget to set up WorkspacesProvider?`);return n}})}},28508:(e,t,n)=>{n.d(t,{qP:()=>d.q,Cv:()=>d.C,Hb:()=>f,UP:()=>h,Uf:()=>v,yL:()=>y,RI:()=>l.RI,p5:()=>u.p,ir:()=>m,Jr:()=>b,qv:()=>l.qv,ou:()=>E,Ql:()=>C});var a=n(96652),o=n.n(a),r=n(62183),i=n(13154),s=n(44142),l=n(83145),c=n(14956),d=n(17931),u=n(81895);const m=({trackIsInSample:e=!0}={})=>{const t=(0,l.RI)(d.C.searchActivationProgramP2,e);return{enableSearchActivationProgramP2:t?.assignment?.assignmentData?.variant===d.q.searchActivationProgramP2Variant,isSearchActivationProgramP2Loading:!t.asyncStatus||"LOADING"===t.asyncStatus}},p=()=>{};function h(){return p}const g=o().createContext(h()),f=({options:e,children:t})=>{const n=(0,s.Ul)("COMPASS-TELEMETRY"),a=(0,c.nfZ)((()=>(0,i.s)({logger:n,...e})));return o().createElement(g.Provider,{value:a},t)},y=(0,r.mb)(b.bind(null),"telemetryLocator");function b(){const e=o().useContext(g);if(!e)throw new Error("Telemetry service is missing from React context");return e}const v=(0,r.mb)((function(){const{assignExperiment:e,getAssignment:t}=(0,a.useContext)(l.SJ);return{assignExperiment:e,getAssignment:t}}),"experimentationServiceLocator");function C(e){return t=>{const n=b();return o().createElement(e,{...t,track:n})}}function E(e,t,n={skipOnMount:!1}){const r=(0,c.HIF)(e),i=b(),s=(0,a.useRef)(!0);o().useEffect((()=>{n.skipOnMount&&s.current?s.current=!1:r.current(i)}),[...t,i,n.skipOnMount])}},28937:(e,t,n)=>{n(95039);const a="Standalone",o="Mongos",r="PossiblePrimary",i="RSPrimary",s="RSSecondary",l="RSArbiter",c="RSOther",d="RSGhost",u="Unknown",m=[a,o,r,i,s,l,c,d,u],p=[a,o,i],h={Standalone:"Standalone",Mongos:"Mongos",PossiblePrimary:"Possible Primary",RSPrimary:"Primary",RSSecondary:"Secondary",RSArbiter:"Arbiter",RSOther:"Other",RSGhost:"Ghost",Unknown:"Unknown"};e.exports={humanize:e=>h[e],isWritable:e=>p.includes(e),STANDALONE:a,MONGOS:o,POSSIBLE_PRIMARY:r,RS_PRIMARY:i,RS_SECONDARY:s,RS_ARBITER:l,RS_OTHER:c,RS_GHOST:d,UNKNOWN:u,SERVER_TYPES:m,WRITABLE_SERVER_TYPES:p}},29719:(e,t,n)=>{n.d(t,{Ay:()=>ae,Ff:()=>K,HC:()=>V,KB:()=>p,NC:()=>B,OH:()=>U,PM:()=>ne,Tr:()=>N,Xc:()=>Z,cN:()=>$,e6:()=>P,fL:()=>G,fy:()=>H,gb:()=>W,mR:()=>Y,mS:()=>Q,oY:()=>X,pU:()=>ee,qo:()=>te,r9:()=>j,sN:()=>u,vn:()=>R,ye:()=>q,yv:()=>J}),n(95039),n(59509),n(25691),n(23177),n(3142),n(51615),n(84217),n(25953),n(42319),n(28465),n(12887),n(36106),n(84542),n(57068),n(69517),n(21261),n(92879),n(31977),n(49743),n(9656),n(72673),n(35467),n(94476),n(64971),n(24330),n(83478),n(65166),n(1256),n(61038),n(73035),n(23855);var a=n(13353),o=n(62183),r=n(17855),i=n(90605),s=n(6924),l=n(70918),c=n(14956);const d=new Map,u=e=>{let t=d.get(e);return t||(t=new o.Ay,d.set(e,t),t)},m=e=>{const t=d.get(e);return t?.deactivate(),d.delete(e)},p=()=>{for(const e of d.values())e.deactivate();d.clear()},h="compass-workspaces/OpenWorkspace",g="compass-workspace/OpenFallbackWorkspace",f="compass-workspaces/SelectTab",y="compass-workspaces/SelectPreviousTab",b="compass-workspaces/SelectNextTab",v="compass-workspaces/MoveTab",C="compass-workspaces/OpenTabFromCurrentActive",E="compass-workspaces/RestoreWorkspaces",S="compass-workspaces/DuplicateTab",k="compass-workspaces/CloseTabs",w="compass-workspaces/CollectionRenamed",x="compass-workspaces/CollectionRemoved",A="compass-workspaces/DatabaseRemoved",D="compass-workspaces/ConnectionDisconnected",I="compass-workspaces/FetchCollectionTabInfo",M="compass-workspaces/FetchDatabaseTabInfo",T="compass-workspaces/CollectionSubtabSelected";function L(e,t){return e.type===t}const O=({state:e,isToBeClosed:t})=>{const{newTabs:n,removedIndexes:a}=(({tabs:e,isToBeClosed:t})=>{const n=[],a=[];return e.forEach(((e,o)=>{t(e,o)?a.push(o):n.push(e)})),{newTabs:n,removedIndexes:a}})({tabs:e.tabs,isToBeClosed:t});if(n.length===e.tabs.length)return e;const o=(({state:e,newTabs:t,removedIndexes:n})=>{let a=e.activeTabId,o=F(e);for(;n.includes(o);)o++;return a=t.length?o>=e.tabs.length?t[t.length-1]?.id:e.tabs[o]?.id:null,a})({state:e,removedIndexes:a,newTabs:n});return{...e,activeTabId:o,tabs:n}},N=e=>{const t=(new a.ObjectId).toString();if("Collection"===e.type){const{initialSubtab:n,...a}=e,o=Boolean(a.initialAggregation||a.initialPipeline||a.initialPipelineText||a.editViewName);return{id:t,subTab:n??(o?"Aggregations":"Documents"),...a}}return{id:t,...e}},_=(e,t)=>{for(const n of((e,t)=>{const n=new Set(t.map((e=>e.id)));return new Set(e.map((e=>e.id)).filter((e=>!n.has(e))))})(e,t))m(n),(0,s.bk)(n),(0,l.aC)("close",n),(0,l.aC)("replace",n)},F=e=>{const{activeTabId:t,tabs:n}=e;return n.findIndex((e=>e.id===t))},P=e=>e.tabs[F(e)]??null,W=(e,t)=>({type:I,namespaceId:e,info:t}),R=(e,t)=>({type:M,namespaceId:e,info:t}),U=(e,t)=>(n,a)=>{const o=a().tabs;"Collection"===e.type&&n((e=>async(t,n,{connections:a,instancesManager:o,logger:i})=>{const s=`${e.connectionId}.${e.namespace}`;if(n().collectionInfo[s])return;const{database:l,collection:c}=(0,r.Ay)(e.namespace);try{const n=a.getDataServiceForConnection(e.connectionId),r=o.getMongoDBInstanceForConnection(e.connectionId),i=await r.getNamespace({dataService:n,database:l,collection:c});if(i){await i.fetch({dataService:n});const e={isTimeSeries:i.isTimeSeries,isReadonly:i.readonly??i.isView,sourceName:i.sourceName,inferredFromPrivileges:i.inferred_from_privileges};t(W(s,e))}}catch(t){i.debug("Collection Metadata",i.mongoLogId(1001000306),"Error fetching collection metadata for tab",{namespace:e.namespace},t)}})(e)),"Collections"===e.type&&n((e=>async(t,n,{connections:a,instancesManager:o,logger:r})=>{const{databaseInfo:i}=n(),s=`${e.connectionId}.${e.namespace}`;if(!i[s])try{const n=a.getDataServiceForConnection(e.connectionId),r=o.getMongoDBInstanceForConnection(e.connectionId).databases.get(e.namespace);if(r){await r.fetch({dataService:n});const e={inferredFromPrivileges:r.inferred_from_privileges};t(R(s,e))}}catch(t){r.debug("Database Metadata",r.mongoLogId(1001000339),"Error fetching database metadata for tab",{namespace:e.namespace},t)}})(e)),n({type:h,workspace:e,newTab:t?.newTab??!1}),_(o,a().tabs)},$=e=>({type:f,atIndex:e}),V=(e,t)=>({type:v,fromIndex:e,toIndex:t}),H=()=>({type:y}),K=()=>({type:b}),j=e=>({type:C,defaultTab:e??{type:"My Queries"}}),B=e=>({type:S,atIndex:e});async function z(){return await(0,c.$TK)({title:"Are you sure you want to close the tab?",description:"The content of this tab has been modified. You will lose your changes if you close it.",buttonText:"Close tab",variant:"danger","data-testid":"confirm-tab-close"})}const Y=e=>async(t,n)=>{const{tabs:a}=n(),o=a[e];((0,l.Ct)(o)||await z())&&(t({type:k,tabIds:[o.id]}),_(a,n().tabs))},q=e=>async(t,n)=>{const{tabs:a}=n(),o=a[e],r=[];for(const[n,o]of a.entries())n!==e&&((0,l.Ct)(o)||(t({type:f,atIndex:n}),await z()))&&r.push(o);t({type:k,tabIds:r.map((e=>e.id)),activeTabId:o.id}),_(a,n().tabs)},G=(e,t)=>(n,a)=>{const o=a().tabs;n({type:w,from:e,to:t}),_(o,a().tabs)},Z=e=>(t,n)=>{const a=n().tabs;t({type:x,namespace:e}),_(a,n().tabs)},J=()=>async(e,t,{connections:n,userData:a,preferences:o})=>{if(!o.getPreferences().enableRestoreWorkspaces)return;const r=await a.readOne("saved-workspaces",{ignoreErrors:!0});if(r&&r.tabs.length>0&&await(0,c.$TK)({title:"Reopen closed tabs?",description:"Your connection and tabs were closed, this action will reopen your previous session",buttonText:"Reopen tabs"})){const t=[];for(const e of r.tabs){if("connectionId"in e){const t=n.getConnectionById(e.connectionId)?.info;if(!t)continue;n.connect(t)}t.push(e)}t.length>0&&e({type:E,tabs:t})}},Q=e=>(t,n)=>{const a=n().tabs;t({type:A,namespace:e}),_(a,n().tabs)},X=e=>(t,n)=>{const a=n().tabs;t({type:D,connectionId:e}),_(a,n().tabs)},ee=(e,t)=>({type:T,tabId:e,subTab:t}),te=(e,t)=>(n,a)=>{if("Collection"!==e.type&&"Collections"!==e.type)throw new Error("Fallback workspace can only be opened for workspaces with a namespace");const o=a().tabs;n({type:g,toReplace:e,fallbackNamespace:t??null}),_(o,a().tabs)},ne=()=>(e,t)=>t().tabs.every((e=>(0,l.Ct)(e))),ae=(e={tabs:[],activeTabId:null,collectionInfo:{},databaseInfo:{}},t)=>{if(L(t,h)){const n=P(e),a=N(t.workspace);let o=!1;if(!t.newTab){const r=(n?[n,...e.tabs]:e.tabs).find((e=>((e,t)=>{const{id:n,subTab:a,...o}=e,{id:r,subTab:s,...l}=t;return(0,i.isEqual)(o,l)})(e,a)));if(r)return r.id!==e.activeTabId?{...e,activeTabId:r.id}:e;n&&("connectionId"in t.workspace&&"connectionId"in n&&(o=t.workspace.connectionId!==n.connectionId),o||(o=!1===(0,l.A2)(n)))}if(o||t.newTab){const t=F(e),n=[...e.tabs];return n.splice(t+1,0,a),{...e,tabs:n,activeTabId:a.id}}const r=F(e),s=[...e.tabs];return s.splice(r,1,a),{...e,tabs:s,activeTabId:a.id}}if(L(t,E))return{...e,tabs:[...e.tabs,...t.tabs.map(N)]};if(L(t,C)){const n=P(e);let a;if(n){const{id:e,...t}=n;a=N(t)}else a=N(t.defaultTab);return{...e,tabs:[...e.tabs,a],activeTabId:a.id}}if(L(t,g)){const{collection:n,database:a,ns:o}=(0,r.Ay)(t.fallbackNamespace??""),i={...n?{type:"Collection",namespace:o}:a?{type:"Collections",namespace:o}:{type:"Databases"},connectionId:t.toReplace.connectionId},s=N(i),l=e.tabs.findIndex((e=>e.id===t.toReplace.id)),c=[...e.tabs];return c.splice(l,1,s),{...e,tabs:c,activeTabId:s.id}}if(L(t,S)){const n=e.tabs.slice(0,t.atIndex),a=e.tabs[t.atIndex],o=e.tabs.slice(t.atIndex+1),{id:r,...i}=a,s=N(i);return{...e,tabs:[...n,a,s,...o],activeTabId:s.id}}if(L(t,f))return e.tabs[t.atIndex]?.id===e.activeTabId?e:{...e,activeTabId:e.tabs[t.atIndex]?.id??null};if(L(t,b)){const t=(F(e)+1)%e.tabs.length,n=e.tabs[t];return n?.id===e.activeTabId?e:{...e,activeTabId:n?.id??e.activeTabId}}if(L(t,y)){const t=F(e),n=0===t?e.tabs.length-1:t-1,a=e.tabs[n];return a?.id===e.activeTabId?e:{...e,activeTabId:a?.id??e.activeTabId}}if(L(t,v)){if(t.fromIndex===t.toIndex)return e;const n=[...e.tabs];return n.splice(t.toIndex,0,n.splice(t.fromIndex,1)[0]),{...e,tabs:n}}if(L(t,k)){const n=O({state:e,isToBeClosed:e=>t.tabIds.includes(e.id)});return t.activeTabId?{...n,activeTabId:t.activeTabId}:n}if(L(t,x))return O({state:e,isToBeClosed:e=>"Collection"===e.type&&e.namespace===t.namespace});if(L(t,A))return O({state:e,isToBeClosed:e=>"Collections"===e.type&&e.namespace===t.namespace||"Collection"===e.type&&(0,r.Ay)(e.namespace).database===t.namespace});if(L(t,D))return O({state:e,isToBeClosed:e=>"connectionId"in e&&e.connectionId===t.connectionId});if(L(t,w)){let n=0,a=e.activeTabId;const o=e.tabs.map((o=>{if("Collection"===o.type&&o.namespace===t.from){n++;const{id:r,...i}=o,s=N({...i,namespace:t.to});return r===e.activeTabId&&(a=s.id),s}return o}));return 0===n?e:{...e,tabs:o,activeTabId:a}}if(L(t,I))return{...e,collectionInfo:{...e.collectionInfo,[t.namespaceId]:t.info}};if(L(t,M))return{...e,databaseInfo:{...e.databaseInfo,[t.namespaceId]:t.info}};if(L(t,T)){const n=e.tabs.find((e=>e.id===t.tabId));return!n||"Collection"===n.type&&n.subTab===t.subTab?e:{...e,tabs:e.tabs.map((e=>e.id===t.tabId?{...e,subTab:t.subTab}:e))}}return e}},32177:(e,t,n)=>{n(59509),n(25691),n(23177),n(3142),n(51615),n(84217),n(25953),n(42319),n(28465),n(12887),n(36106),n(84542),n(57068),n(69517);const a=Symbol("kDepth"),o=Symbol("kSBENodes");function r(e,t,n=null){const a=t(e,n),o=a||{};return e.inputStage&&(o.inputStage=r(e.inputStage,t,e)),e.innerStage&&(o.innerStage=r(e.innerStage,t,e)),e.outerStage&&(o.outerStage=r(e.outerStage,t,e)),e.thenStage&&(o.thenStage=r(e.thenStage,t,e)),e.elseStage&&(o.elseStage=r(e.elseStage,t,e)),e.inputStages&&(o.inputStages=e.inputStages.map((n=>r(n,t,e)))),e.shards&&(o.shards=e.shards.map((t=>r(t,e)))),e.executionStages&&(o.executionStages=e.executionStages.map((n=>r(n,t,e)))),a}function i(e){return r(e,(t=>e===t?{...e}:void 0))}function s(e,t){const n=new Map;r(e,(e=>{e.planNodeId&&(n.set(e.planNodeId,e),e[o]=[])})),r(t,((e,t)=>{e[a]=t?t[a]+1:0,e.planNodeId&&n.get(e.planNodeId)[o].push(e)}));for(const e of n.values())e[o].sort(((e,t)=>e[a]-t[a]));return r(e,(e=>{const t=e[o],n=t[0]||{};return{...i(n),...i(e),executionTimeMillisEstimate:n.executionTimeMillis||n.executionTimeMillisEstimate,docsExamined:t.filter((e=>"seek"===e.stage||"scan"===e.stage)).map((e=>e.numReads||0)).reduce(((e,t)=>e+t),0),keysExamined:t.filter((e=>"ixseek"===e.stage||"ixscan"===e.stage)).map((e=>e.numReads||0)).reduce(((e,t)=>e+t),0)}}))}function l(e){return function(e){return!!e.stages}(e)||c(e)}function c(e){return!!e.shards}function d(e){const{mongosPlannerVersion:t}=e.queryPlanner??{};return!isNaN(t)}function u(e){return Object.keys(e).find((e=>e.match(/^\$.*cursor/i)))}function m(e){if(!e.stages||0===e.stages.length)return e;const t=e.stages.map((e=>{if(!function(e){return!!u(e)}(e))return e;const t=u(e);return e[t]=h(e[t]),e}));return e.stages=t,e}function p(e){return h(e)}function h(e){if(e.queryPlanner&&e.queryPlanner.winningPlan&&e.queryPlanner.winningPlan.queryPlan){e.queryPlanner.plannerVersion=1;const t=e.queryPlanner.winningPlan.queryPlan;e.queryPlanner.winningPlan=t,e.executionStats&&(e.executionStats.executionStages=s(t,e.executionStats.executionStages))}return e}e.exports=function(e){return(e=JSON.parse(JSON.stringify(e))).explainVersion&&e.explainVersion<2?e:(delete e.explainVersion,e=l(e)?c(e)?function(e){if(!e.shards)return e;const t={};for(const n in e.shards)e.shards[n].stages?t[n]=m(e.shards[n]):t[n]=p(e.shards[n]);return e.shards=t,e}(e):m(e):d(e)?function(e){const t=e.queryPlanner,n=e.executionStats;return t.winningPlan.shards?(t.winningPlan.shards.forEach(((e,a)=>{const o=e.winningPlan.queryPlan;if(o&&n){const e=s(o,n.executionStages.shards[a].executionStages);t.winningPlan.shards[a].winningPlan=o,n.executionStages.shards[a].executionStages=e}})),e.queryPlanner=t,e.executionStats=n,e):e}(e):p(e),JSON.parse(JSON.stringify(e)))},e.exports.getStageCursorKey=u,e.exports.isAggregationExplain=l,e.exports.isShardedAggregationExplain=c,e.exports.isShardedFindExplain=d},32318:(e,t,n)=>{n.d(t,{d:()=>y});var a=n(32177),o=n.n(a);const r=e=>{const t=e.stages[0],n=(0,a.getStageCursorKey)(t);if(!n)throw new Error("Can not find a cursor stage.");return s(t[n])},i=e=>{const t=Object.keys(e.shards)[0],n=e.shards[t];return n.stages?r(n):s(n)},s=e=>e.queryPlanner,l=e=>e.queryPlanner.winningPlan.shards[0],c=e=>{const t=e.stages[0],n=(0,a.getStageCursorKey)(t);if(!n)throw new Error("Can not find a cursor stage.");const o=e.stages[e.stages.length-1],r=u(t[n])??{};return r.nReturned=o.nReturned,r.stageIndexes=p(e.stages),r.executionTimeMillis=function(e,t){return e.executionTimeMillis??t[t.length-1]?.executionTimeMillisEstimate??0}(r,e.stages),r},d=e=>{const t=[];let n=[];for(const a in e.shards){const o=e.shards[a].stages?c(e.shards[a]):u(e.shards[a]);t.push({shardName:a,...o}),n=n.concat(p(e.shards[a].stages??[],a))}const a=m(t,"nReturned"),o=m(t,"executionTimeMillis"),r=m(t,"totalKeysExamined"),i=m(t,"totalDocsExamined");return{nReturned:a,executionTimeMillis:o,totalKeysExamined:r,totalDocsExamined:i,allPlansExecution:[],executionSuccess:!0,stageIndexes:n,executionStages:{stage:1===t.length?"SINGLE_SHARD":"SHARD_MERGE",nReturned:a,executionTimeMillis:o,totalKeysExamined:r,totalDocsExamined:i,shards:t}}},u=e=>e.executionStats;function m(e,t){return e.reduce(((e,n)=>e+Number(n[t]??0)),0)}function p(e,t){return e.reduce(((e,t)=>e.concat(t?.indexesUsed??[])),[]).map((e=>({index:e,shard:t??null,fields:{}})))}var h=n(19461);function g(e){if("EXPRESS_IXSCAN"===e.stage&&"string"==typeof e.keyPattern)try{const t=(0,h.Ay)(e.keyPattern,{mode:h.X6.Strict,allowComments:!0,allowMethods:!0});return"string"==typeof t?{}:t}catch{return{}}return e.keyPattern??{}}const f=Symbol("ExplainPlan.kParent");class y{namespace;parsedQuery;executionSuccess;nReturned;executionTimeMillis;totalKeysExamined;totalDocsExamined;originalExplainData;executionStats;winningPlan;constructor(e){const t=o()(e),n=(m=t,(0,a.isAggregationExplain)(m)?(e=>(0,a.isShardedAggregationExplain)(e)?d(e):c(e))(m):u(m));var m;n?.executionStages&&y.addParentStages(n.executionStages);const p=(e=>{const t=(0,a.isAggregationExplain)(e)?(e=>(0,a.isShardedAggregationExplain)(e)?i(e):r(e))(e):(e=>(0,a.isShardedFindExplain)(e)?l(e):s(e))(e);return{namespace:t.namespace,parsedQuery:t.parsedQuery,winningPlan:t.winningPlan}})(t),h=n?.executionStages?.shards?.[0]??n;this.executionStats=n,this.namespace=p.namespace,this.parsedQuery=p.parsedQuery,this.executionSuccess=h?.executionSuccess??!1,this.nReturned=n?.nReturned??null,this.executionTimeMillis=n?.executionTimeMillis??null,this.totalKeysExamined=n?.totalKeysExamined??null,this.totalDocsExamined=n?.totalDocsExamined??null,this.originalExplainData=e,this.winningPlan=p.winningPlan}get usedIndexes(){const e=this.findAllStagesByName("IXSCAN"),t=this.findAllStagesByName("EXPRESS_IXSCAN"),n=this.findAllStagesByName("COUNT_SCAN"),a=this.findStageByName("IDHACK"),o=this.executionStats?.stageIndexes??[];for(const r of[...e,...t,...n,a]){if(!r)continue;let e=null;if(this.isSharded)for(const t of y.getParentStages(r))if("string"==typeof t.shardName){e=t.shardName;break}const t=r===a?"_id_":r.indexName,n=r===a?{_id:1}:g(r);o.push({index:t,shard:e,fields:n})}if(this.isSharded)for(const e of this.executionStats?.executionStages?.shards??[])o.some((t=>t.shard===e.shardName))||o.push({index:null,shard:e.shardName,fields:{}});return o.filter(((e,t,n)=>n.findIndex((t=>t.index===e.index&&t.shard===e.shard))===t))}get isCovered(){if(this.totalDocsExamined&&this.totalDocsExamined>0)return!1;const e=this.findStageByName("IXSCAN"),t=this.findStageByName("EXPRESS_IXSCAN"),n=e||t;return"FETCH"!==n?.parentName}get isMultiKey(){return this.findAllStagesByName("IXSCAN").some((e=>e.isMultiKey))}get inMemorySort(){return 0!==this.findAllStagesByName("SORT").length}get isCollectionScan(){return null!==this.findStageByName("COLLSCAN")}get isSharded(){return!!this.executionStats?.executionStages?.shards}get numShards(){return this.isSharded?this.executionStats?.executionStages?.shards.length:0}get isClusteredScan(){return Boolean(this.findStageByName("EXPRESS_CLUSTERED_IXSCAN")||this.findStageByName("CLUSTERED_IXSCAN"))}get indexType(){const e=this.usedIndexes;if(this.isClusteredScan)return"CLUSTERED";if(0===e.length)return"UNAVAILABLE";const t=e.reduce(((e,t)=>(t.shard&&(e[t.shard]??=[],e[t.shard].push(t.index)),e)),{}),n=Object.values(t);for(let e=0;e<n.length;e++)for(let t=e+1;t<n.length;t++)if(n[e].length!==n[t].length||n[e].some(((e,a)=>e!==n[t][a])))return"MULTIPLE";return this.isCollectionScan?"COLLSCAN":this.isCovered?"COVERED":"INDEX"}findStageByName(e,t){for(const n of this._getStageIterator(t))if(n.stage===e)return n;return null}findAllStagesByName(e,t){return[...this._getStageIterator(t)].filter((t=>t.stage===e))}*_getStageIterator(e){const t=e??this.executionStats?.executionStages??this.winningPlan;if(t){yield t;for(const e of y.getChildStages(t))yield*this._getStageIterator(e)}}serialize(){return JSON.parse(JSON.stringify({namespace:this.namespace,parsedQuery:this.parsedQuery,executionSuccess:this.executionSuccess,nReturned:this.nReturned,executionTimeMillis:this.executionTimeMillis,totalKeysExamined:this.totalKeysExamined,totalDocsExamined:this.totalDocsExamined,originalExplainData:this.originalExplainData,executionStats:this.executionStats,usedIndexes:this.usedIndexes,isCovered:this.isCovered,isMultiKey:this.isMultiKey,inMemorySort:this.inMemorySort,isCollectionScan:this.isCollectionScan,isSharded:this.isSharded,numShards:this.numShards,indexType:this.indexType}))}static*getChildStages(e){e&&(e.inputStage&&(yield e.inputStage),e.executionStages&&(yield e.executionStages),e.innerStage&&(yield e.innerStage),e.outerStage&&(yield e.outerStage),e.thenStage&&(yield e.thenStage),e.elseStage&&(yield e.elseStage),e.shards&&(yield*e.shards),e.inputStages&&(yield*e.inputStages))}static addParentStages(e){e[f]=null;for(const t of y.getChildStages(e))y.addParentStages(t),t[f]=e}static*getParentStages(e){let t=e;for(;t=t?.[f];)yield t}}},33364:(e,t,n)=>{n.d(t,{mZ:()=>tt}),n(95039),n(94811),n(18102),n(95210),n(59509),n(25691),n(23177),n(3142),n(51615),n(84217),n(25953),n(42319),n(28465),n(12887),n(36106),n(84542),n(57068),n(69517),n(21261),n(92879),n(31977),n(49743),n(9656),n(72673),n(35467),n(94476),n(64971),n(24330),n(83478),n(65166),n(1256),n(61038),n(73035),n(23855);var a=n(4580),o=n.n(a),r=n(183),i=n(93431),s=n(17855),l=n(29603);const c=(e,t,n)=>{const a=e.readPreference??r.ReadPreference.PRIMARY_PREFERRED;return e.command({...t},{readPreference:a,...n})};var d=n(31879),u=n(45863);const m=n.n(u)()("data-service");class p{}async function h(e,t){const n=e.db("admin"),[a,o,r,i,s,d,u]=await Promise.all([c(n,{connectionStatus:1,showPrivileges:!0},{enableUtf8Validation:!1}).catch(S(null)),c(n,{hostInfo:1},{enableUtf8Validation:!1}).catch(S({})),c(n,{buildInfo:1},{enableUtf8Validation:!1}),c(n,{getParameter:1,featureCompatibilityVersion:1},{enableUtf8Validation:!1}).catch((()=>null)),c(n,{atlasVersion:1},{enableUtf8Validation:!1}).catch((()=>({atlasVersion:"",gitVersion:""}))),(0,l.JV)((async(t,n,a)=>await e.db(t).collection(n).countDocuments(a))),f(t,e)]),m=!!s.atlasVersion||(0,l.mu)(t);return{auth:b(a),build:(h=r,{version:h.version??"",isEnterprise:(0,l.kA)(h)}),host:(p=o,{os:p.os?.name,os_family:p.os?.type?p.os.type.toLowerCase():void 0,kernel_version:p.os?.version,kernel_version_string:p.extra?.versionString,arch:p.system?.cpuArch,memory_bits:1024*(p.system?.memSizeMB??0)*1024,cpu_cores:p.system?.numCores,cpu_frequency:1e6*parseInt(p.extra?.cpuFrequencyMHz||"0",10)}),dataLake:y(r),genuineMongoDB:u,featureCompatibilityVersion:i?.featureCompatibilityVersion.version??null,isAtlas:m,isLocalAtlas:!m&&d};var p,h}function g(e){const t=e?.kmsProviders??{};return Object.entries(t).filter((([,e])=>Object.values(e??{}).filter(Boolean).length>0)).map((([e])=>e))}async function f(e,t){const n=t.db("admin"),a=await(0,l.Db)({connectionString:e,async adminCommand(e){try{const t=await n.command(e);return m("adminCommand(%O) = %O",e,t),t}catch(t){throw m("adminCommand(%O) failed %O",e,t),t}}});return{isGenuine:"mongodb"===a||"unknown"===a,serverName:a}}function y(e){const{isDataLake:t,dlVersion:n}=(0,l.Sy)(e);return{isDataLake:t,version:n}}function b(e){if(null===e)return{user:null,roles:[],privileges:[]};const{authenticatedUsers:t,authenticatedUserRoles:n,authenticatedUserPrivileges:a}=e.authInfo;return{user:t[0]??null,roles:n,privileges:a}}function v(e=null,t=null){const n=e??[],a=t&&t.length>0?n.filter((({actions:e})=>t.every((t=>e.includes(t))))):n,o={};for(const{resource:e,actions:t}of a)if(void 0!==e.db&&void 0!==e.collection){const{db:n,collection:a}=e;o[n]?Object.assign(o[n],{[a]:t}):o[n]={[a]:t}}return o}const C=13;function E(e){if(!e)return!1;if(e.code===C)return!0;const t=e.message||JSON.stringify(e);return new RegExp("not (authorized|allowed)","i").test(t)}function S(e){return t=>E(t)?(m("ignoring not authorized error and returning fallback value:",{err:t,fallback:e}),Promise.resolve(e)):Promise.reject(t)}function k(e){return{collection_count:e.collections??0,document_count:e.objects??0,index_count:e.indexes??0,storage_size:e.storageSize,data_size:e.dataSize??0,index_size:e.indexSize??0}}function w({db:e,name:t,info:n,options:a,type:o}){const r=(0,s.Ay)(`${e}.${t}`),{collection:i,database:l,system:c,oplog:d,command:u,special:m,specialish:p,normal:h}=r,{readOnly:g}=n??{},{collation:f,viewOn:y,pipeline:b,validator:v,validationAction:C,validationLevel:E,prepareConstraintValidationLevel:S,clusteredIndex:k,encryptedFields:w}=a??{},x=Boolean(v||C||E);return{_id:r.toString(),name:i,database:l,system:c,oplog:d,command:u,special:m,specialish:p,normal:h,type:o??"collection",readonly:g??!1,collation:f??null,view_on:y??null,pipeline:b??null,clustered:!!k,fle2:!!w,validation:x?{validator:v,validationAction:C,validationLevel:E,prepareConstraintValidationLevel:S}:null}}var x=n(6725),A=n(90605),D=n.n(A),I=n(15088).process;const M=m.extend("compass-connect"),T=Symbol("createClonedClient");async function L({connectionOptions:e,proxyOptions:t={},setupListeners:n,signal:a,logger:s,productName:l,productDocsLink:c,reauthenticationHandler:d}){M("connectMongoClient invoked",function(e){const t=e.sshTunnel?{...e.sshTunnel}:void 0,n={...e,sshTunnel:t};return n.connectionString=(0,i.J0)(e.connectionString),n.sshTunnel?.password&&(n.sshTunnel.password="<redacted>"),n.sshTunnel?.identityKeyPassphrase&&(n.sshTunnel.identityKeyPassphrase="<redacted>"),n}(e));const u=function({connectionOptions:e,proxyOptions:t={},signal:n,reauthenticationHandler:a}){const o={oidc:{...e.oidc},authMechanismProperties:{},applyProxyToOIDC:!1},r=e.oidc?.allowedFlows??["auth-code"];let s=!0;return o.oidc.allowedFlows=async function(){return s||await(a?.()),s=!1,r},e.oidc?.enableUntrustedEndpoints&&(o.authMechanismProperties.ALLOWED_HOSTS=function(e){const t=new i.Ay(e.connectionString,{looseValidation:!0}),n=t.hosts.map((e=>{const{host:n}=e.match(/^(?<host>.+?)(?<port>:[^:\]\[]+)?$/)?.groups;if(n.startsWith("[")&&n.endsWith("]"))return n.slice(1,-1);if(n.match(/^[0-9.]+$/))return n;if(!n.includes(".")||!t.isSRV)return n;const a=n.split(".");return a[0]="*",a.join(".")}));return[...new Set(n)]}(e)),e.oidc?.shareProxyWithConnection?o.applyProxyToOIDC=!0:o.applyProxyToOIDC=Object.keys(t).length>0&&t,o.oidc.signal=n,o}({connectionOptions:e,proxyOptions:t,signal:a,reauthenticationHandler:d}),m=e.connectionString,p={productName:l??"MongoDB Compass",productDocsLink:c??"https://www.mongodb.com/docs/compass/",monitorCommands:!0,autoEncryption:e.fleOptions?.autoEncryption,...u};p.autoEncryption&&I.env.COMPASS_CRYPT_LIBRARY_PATH&&(p.autoEncryption={...p.autoEncryption,extraOptions:{...p.autoEncryption?.extraOptions,cryptSharedLibPath:I.env.COMPASS_CRYPT_LIBRARY_PATH}});const h=function(e,t){if(e.useApplicationLevelProxy)return t;if(e.sshTunnel){const{host:t,port:n,username:a,password:o,identityKeyFile:r,identityKeyPassphrase:i}=e.sshTunnel;return{proxy:`ssh://${a?encodeURIComponent(a)+(o?":"+encodeURIComponent(o):"")+"@":""}${encodeURIComponent(t)}:${encodeURIComponent(+n||22)}`,sshOptions:{identityKeyFile:r,identityKeyPassphrase:i}}}return{}}(e,t);Object.keys(h).length>0&&(p.proxy=h);class g extends r.MongoClient{constructor(e,t){super(e,t),Object.defineProperty(this,"options",{...Object.getOwnPropertyDescriptor(this,"options"),enumerable:!1,configurable:!0}),n&&n(this)}}const f=new(o());async function y(e){const t=D().cloneDeep({...p,...e}),{client:n,state:a}=await(0,x.connectMongoClient)(m,t,f,g);return{client:Object.assign(n,{async[T](){const{client:e}=await y({...t,parentState:a});return e}}),state:a}}let b,v,C;s&&(0,x.hookLogger)(f,s,"compass",i.J0);try{return M("waiting for MongoClient to connect ..."),[b,v,C]=await(async()=>{const{client:e,state:t}=await y({autoEncryption:void 0}),n=t.getStateShareServer();let a;if(n.catch((()=>{})),p.autoEncryption)try{a=(await y({parentState:t})).client}catch(t){throw await e.close(),t}try{await n}catch(t){throw await e.close(),await(a?.close()),t}return[e,a,t]})(),p.parentHandle=await C.getStateShareServer(),[b,v??b,C,{url:m,options:p}]}catch(e){throw M("connection error",e),await Promise.all([v?.close(),b?.close()]).catch((()=>{})),e}}var O=n(13353);class N{_encryptedFields=[];get encryptedFields(){return this._encryptedFields.map((({path:e})=>e))}get equalityQueryableEncryptedFields(){return this._encryptedFields.filter((({equalityQueryable:e})=>e)).map((({path:e})=>e))}addField(e,t){const n=this._encryptedFields.find((t=>D().isEqual(t.path,e)));return n?n.equalityQueryable&&=t:this._encryptedFields.push({path:[...e],equalityQueryable:t}),this}withPathPrefix(e){const t=new N;return t._encryptedFields=this._encryptedFields.map((({path:t,equalityQueryable:n})=>({path:[e,...t],equalityQueryable:n}))),t}static isEncryptedField(e,t){return e.encryptedFields.some((e=>D().isEqual(t,e)))}static isEqualityQueryableEncryptedField(e,t){return e.equalityQueryableEncryptedFields.some((e=>D().isEqual(t,e)))}static merge(...e){const t=new N;for(const n of e)if(n)for(const e of n.encryptedFields)t.addField(e,this.isEqualityQueryableEncryptedField(n,e));return t}}function _(e){let t=new N;if(e?.encrypt){const n=e?.encrypt?.algorithm;return t.addField([],"AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"===n)}for(const[n,a]of Object.entries(e?.properties??{})){const e=_(a);t=N.merge(t,e.withPathPrefix(n))}return t}function F(e){const t=e?.fields??[],n=new N;for(const e of t){const t=(Array.isArray(e.queries)?e.queries:[e.queries??{}]).some((({queryType:e})=>["equality","range","rangePreview"].includes(e)));n.addField(e.path.split("."),t)}return n}function P(e,t){return N.merge(_(t.schemaMap?.[e]),F(t?.encryptedFieldsMap?.[e]))}function W(e){const t=e?.validator?.$jsonSchema,n=e?.encryptedFields;return N.merge(_(t),F(n))}function R(e){const t=(e?.[Symbol.for("@@mdb.decryptedKeys")]??[]).map((e=>[e]));for(const[n,a]of Object.entries(e)){if(!a||"object"!=typeof a)continue;const e=R(a);t.push(...e.map((e=>[n,...e])))}return t}class U{_nsToInfo=new Map;_dataService;_crudClient;_logger;constructor(e,t,n){this._dataService=e,this._crudClient=t,this._logger=n,this._processClientSchemaDefinitions();const{autoEncrypter:a}=this._crudClient;a&&(this._logger?.info("COMPASS-DATA-SERVICE",(0,d.oW)(1001000118),"CSFLECollectionTracker","Hooking AutoEncrypter metaDataClient property"),a._metaDataClient=this._createHookedMetadataClient(a._metaDataClient))}async isUpdateAllowed(e,t){const n=R(t);if(0===n.length)return!0;const{encryptedFields:a}=await this.knownSchemaForCollection(e);for(const e of n)if(!N.isEncryptedField(a,e))return!1;return!0}async knownSchemaForCollection(e){const t=await this._fetchCSFLECollectionInfo(e),n=N.merge(t.clientEnforcedEncryptedFields,t.serverEnforcedEncryptedFields);return{hasSchema:!!(t.hasServerSchema||n.encryptedFields.length>0),encryptedFields:n}}_processClientSchemaDefinitions(){const{autoEncryption:e}=this._crudClient.options;for(const t of[...Object.keys(e?.schemaMap??{}),...Object.keys(e?.encryptedFieldsMap??{})])this._logger?.info("COMPASS-DATA-SERVICE",(0,d.oW)(1001000119),"CSFLECollectionTracker","Processing client-side schema information",{ns:t}),this._getCSFLECollectionInfo(t).clientEnforcedEncryptedFields=P(t,e)}async _fetchCSFLECollectionInfo(e){const t=(0,s.Ay)(e),n=this._getCSFLECollectionInfo(e);var a;return(!n.serverEnforcedEncryptedFields||!n.lastUpdated||(a=n.lastUpdated,Date.now()-a.getTime()>=6e4))&&(this._logger?.info("COMPASS-DATA-SERVICE",(0,d.oW)(1001000120),"CSFLECollectionTracker","Refreshing listCollections cache",{ns:e}),await this._dataService.listCollections(t.database,{name:t.collection})),n}_getCSFLECollectionInfo(e){const t=this._nsToInfo.get(e);if(t)return t;const n={};return this._nsToInfo.set(e,n),n}*_getCSFLECollectionNames(){for(const e of this._nsToInfo.keys())yield(0,s.Ay)(e)}updateCollectionInfo(e,t){this._logger?.info("COMPASS-DATA-SERVICE",(0,d.oW)(1001000121),"CSFLECollectionTracker","Processing listCollections update",{ns:e});const n=this._getCSFLECollectionInfo(e);n.serverEnforcedEncryptedFields=W(t.options),n.hasServerSchema=!!t.options?.validator?.$jsonSchema,n.lastUpdated=new Date}_createHookedMetadataClient(e){return{db:t=>({listCollections:(n,a)=>{const o=this;return{[Symbol.asyncIterator]:async function*(){const r=await e.db(t).listCollections(n,a).toArray(),i=o._checkListCollectionsForLibmongocryptResult(t,n,r??[]);if(i)throw o._logger?.error("COMPASS-DATA-SERVICE",(0,d.oW)(1001000122),"CSFLECollectionTracker","Rejecting listCollections in hooked metaDataClient",{error:i.message}),i;yield*r}}}})}}_checkListCollectionsForLibmongocryptResult(e,t,n){if(!("string"==typeof t?.name||t?.name&&"object"==typeof t.name&&Array.isArray(t.name.$in)&&t.name.$in.every((e=>"string"==typeof e))))return new Error(`[Compass] Unexpected listCollections request on '${e}' with filter: ${O.EJSON.stringify(t)}`);const a="string"==typeof t.name?[t.name]:t.name.$in;for(const t of this._getCSFLECollectionNames())if(t.database===e&&a.includes(t.collection)){const e=this._getCSFLECollectionInfo(t.ns);if(e.serverEnforcedEncryptedFields?.encryptedFields?.length&&!n.some((e=>e.name===t.collection)))return new Error(`[Compass] Missing encrypted field information for collection '${t.ns}'`)}for(const t of n){const n=`${e}.${t.name}`,a=this._getCSFLECollectionInfo(n),o=W(t.options);for(const e of a.serverEnforcedEncryptedFields?.encryptedFields??[])if(!o.encryptedFields.some((t=>D().isEqual(t,e))))return new Error(`[Compass] Missing encrypted field '${e.join(".")}' of collection '${n}' in listCollections result`)}}}var $=n(12738),V=n(13390);function H(e){return e.extra.textIndexVersion&&2===e.fields.length&&1===Object.keys(e.extra.weights).length||1===e.fields.length?"single":"compound"}function K(e,t){const n=[];return("_id_"===e.name||e.extra.unique)&&n.push("unique"),e.extra.sparse&&n.push("sparse"),e.extra.partialFilterExpression&&n.push("partial"),Number(e.extra.expireAfterSeconds)>-1&&n.push("ttl"),e.extra.collation&&n.push("collation"),t&&(0,V.isDeepStrictEqual)(O.EJSON.serialize(t),O.EJSON.serialize(e.key))&&n.push("shardKey"),n}function j(e){const t=Object.keys(e.key),n=Object.values(e.key);return e.extra["2dsphereIndexVersion"]||n.includes("2d")||n.includes("geoHaystack")?"geospatial":n.includes("hashed")?"hashed":e.extra.textIndexVersion?"text":n.includes("columnstore")?"columnstore":t.some((e=>"$**"===e||String(e).includes(".$**")))?"wildcard":e.extra.clustered?"clustered":"regular"}const B={};function z(e,t,{name:n,key:a,v:o,...r},i,s,l,c){i??={name:n,usageHost:"",usageSince:new Date(0)},s??=0,l??=0;const d={ns:e,name:n,key:a,version:o??1,fields:Object.entries(a).map((([e,t])=>({field:e,value:t}))),extra:r};return{...d,...i,type:j(d),cardinality:H(d),properties:K(d,t),size:s,relativeSize:s/l*100,buildProgress:c??{...B}}}let Y,q,G,Z,J,Q,X,ee,te,ne,ae,oe,re,ie,se,le,ce,de,ue,me,pe,he,ge,fe,ye,be,ve,Ce,Ee,Se,ke,we,xe,Ae,De,Ie,Me,Te,Le,Oe,Ne,_e,Fe,Pe,We,Re,Ue,$e,Ve;function He(e,t,n,a){return(He=function(){function e(e,t){return function(n){!function(e){if(e.v)throw Error("attempted to call addInitializer after decoration was finished")}(t),a(n,"An initializer"),e.push(n)}}function t(e,t){if(!e(t))throw new TypeError("Attempted to access private element on non-instance")}function n(n,a,o,r,i,s,l,c,d){var u;switch(i){case 1:u="accessor";break;case 2:u="method";break;case 3:u="getter";break;case 4:u="setter";break;default:u="field"}var m,p,h={kind:u,name:l?"#"+a:Ke(a),static:s,private:l},g={v:!1};if(0!==i&&(h.addInitializer=e(r,g)),l||0!==i&&2!==i)if(2===i)m=function(e){return t(d,e),o.value};else{var f=0===i||1===i;(f||3===i)&&(m=l?function(e){return t(d,e),o.get.call(e)}:function(e){return o.get.call(e)}),(f||4===i)&&(p=l?function(e,n){t(d,e),o.set.call(e,n)}:function(e,t){o.set.call(e,t)})}else m=function(e){return e[a]},0===i&&(p=function(e,t){e[a]=t});var y=l?d.bind():function(e){return a in e};h.access=m&&p?{get:m,set:p,has:y}:m?{get:m,has:y}:{set:p,has:y};try{return n(c,h)}finally{g.v=!0}}function a(e,t){if("function"!=typeof e)throw new TypeError(t+" must be a function")}function o(e,t){var n=typeof t;if(1===e){if("object"!==n||null===t)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==t.get&&a(t.get,"accessor.get"),void 0!==t.set&&a(t.set,"accessor.set"),void 0!==t.init&&a(t.init,"accessor.init")}else if("function"!==n)throw new TypeError((0===e?"field":10===e?"class":"method")+" decorators must return a function or void 0")}function r(e){return function(t){e(this,t)}}function i(e,t,a,i,s,l,c,d,u){var m,p,h,g,f,y,b,v,C=a[0];if(c?(0===s||1===s?(m={get:(f=a[3],function(){return f(this)}),set:r(a[4])},h="get"):3===s?(m={get:a[3]},h="get"):4===s?(m={set:a[3]},h="set"):m={value:a[3]},0!==s&&(1===s&&je(m.set,"#"+i,"set"),je(m[h||"value"],"#"+i,h))):0!==s&&(m=Object.getOwnPropertyDescriptor(t,i)),1===s?g={get:m.get,set:m.set}:2===s?g=m.value:3===s?g=m.get:4===s&&(g=m.set),"function"==typeof C)void 0!==(y=n(C,i,m,d,s,l,c,g,u))&&(o(s,y),0===s?p=y:1===s?(p=y.init,b=y.get||g.get,v=y.set||g.set,g={get:b,set:v}):g=y);else for(var E=C.length-1;E>=0;E--){var S;void 0!==(y=n(C[E],i,m,d,s,l,c,g,u))&&(o(s,y),0===s?S=y:1===s?(S=y.init,b=y.get||g.get,v=y.set||g.set,g={get:b,set:v}):g=y,void 0!==S&&(void 0===p?p=S:"function"==typeof p?p=[p,S]:p.push(S)))}if(0===s||1===s){if(void 0===p)p=function(e,t){return t};else if("function"!=typeof p){var k=p;p=function(e,t){for(var n=t,a=0;a<k.length;a++)n=k[a].call(e,n);return n}}else{var w=p;p=function(e,t){return w.call(e,t)}}e.push(p)}0!==s&&(1===s?(m.get=g.get,m.set=g.set):2===s?m.value=g:3===s?m.get=g:4===s&&(m.set=g),c?1===s?(e.push((function(e,t){return g.get.call(e,t)})),e.push((function(e,t){return g.set.call(e,t)}))):2===s?e.push(g):e.push((function(e,t){return g.call(e,t)})):Object.defineProperty(t,i,m))}function s(e,t,n){for(var a,o,r,s=[],c=new Map,d=new Map,u=0;u<t.length;u++){var m=t[u];if(Array.isArray(m)){var p,h,g=m[1],f=m[2],y=m.length>3,b=g>=5,v=n;if(b?(p=e,0!=(g-=5)&&(h=o=o||[]),y&&!r&&(r=function(t){return Be(t)===e}),v=r):(p=e.prototype,0!==g&&(h=a=a||[])),0!==g&&!y){var C=b?d:c,E=C.get(f)||0;if(!0===E||3===E&&4!==g||4===E&&3!==g)throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+f);!E&&g>2?C.set(f,g):C.set(f,!0)}i(s,p,m,f,g,b,y,h,v)}}return l(s,a),l(s,o),s}function l(e,t){t&&e.push((function(e){for(var n=0;n<t.length;n++)t[n].call(e);return e}))}return function(t,n,a,r){return{e:s(t,n,r),get c(){return function(t,n){if(n.length>0){for(var a=[],r=t,i=t.name,s=n.length-1;s>=0;s--){var l={v:!1};try{var c=n[s](r,{kind:"class",name:i,addInitializer:e(a,l)})}finally{l.v=!0}void 0!==c&&(o(10,c),r=c)}return[r,function(){for(var e=0;e<a.length;e++)a[e].call(r)}]}}(t,a)}}}}())(e,t,n,a)}function Ke(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}function je(e,t,n){"symbol"==typeof t&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:n?n+" "+t:t})}catch(e){}return e}function Be(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(null!==e?typeof e:"null"));return e}function ze(e,t){return Array.from(new Map(e.map((e=>[e[t],e]))).values())}function Ye(e,t){if(e&&t?.tags){const e=function(e){return new r.ReadPreference(e.mode,void 0,e)}(t);return{readPreference:e}}return{}}let qe=0;const Ge=Symbol("kSessionClientType"),Ze=([e])=>{if("string"==typeof e)return{ns:e}};function Je(e,t=Ze){return function(n,a){const o=String(a.name);return function(...a){const r=n=>(this._logger.info(e,`Running ${o}`,t(a,n)),n),i=e=>{const n=(e=>("string"==typeof e?e={message:e}:e.message||(e.message=e.err||e.errmsg),e))(e);throw this._logger.error((0,d.oW)(1001000058),"Failed to perform data service operation",{op:o,message:n,...t(a)??{}}),n};try{const e=n.call(this,...a);return"then"in(s=e)&&"function"==typeof s.then?e.then(r,i):r(e)}catch(e){return i(e)}var s}}}class Qe extends p{static{[Y]=He(this,[[q,2,"collectionStats"],[G,2,"collectionInfo"],[Z,2,"killOp"],[J,2,"_connectionStatus"],[Q,2,"listCollections"],[X,2,"listDatabases"],[ee,2,"estimatedCount"],[te,2,"count"],[ne,2,"createCollection"],[ae,2,"createIndex"],[oe,2,"deleteOne"],[re,2,"deleteMany"],[ie,2,"dropCollection"],[se,2,"renameCollection"],[le,2,"dropDatabase"],[ce,2,"dropIndex"],[de,2,"isListSearchIndexesSupported"],[ue,2,"getSearchIndexes"],[me,2,"createSearchIndex"],[pe,2,"updateSearchIndex"],[he,2,"dropSearchIndex"],[ge,2,"aggregateCursor"],[fe,2,"aggregate"],[ye,2,"find"],[be,2,"findCursor"],[ve,2,"findOneAndReplace"],[Ce,2,"findOneAndUpdate"],[Ee,2,"updateOne"],[Se,2,"replaceOne"],[ke,2,"explainFind"],[we,2,"explainAggregate"],[xe,2,"fetchShardKey"],[Ae,2,"indexes"],[De,2,"instance"],[Ie,2,"insertOne"],[Me,2,"insertMany"],[Te,2,"updateCollection"],[Le,2,"currentOp"],[Oe,2,"serverStatus"],[Ne,2,"top"],[_e,2,"createView"],[Fe,2,"databaseStats"],[Pe,2,"previewUpdate"],[We,2,"createDataKey"],[Re,2,"listStreamProcessors"],[Ue,2,"startStreamProcessor"],[$e,2,"stopStreamProcessor"],[Ve,2,"dropStreamProcessor"]],[]).e}[(q=Je((0,d.oW)(1001000178),(([e,t],n)=>({ns:`${e}.${t}`,...n&&{result:n}}))),G=Je((0,d.oW)(1001000179)),Z=Je((0,d.oW)(1001000031)),J=Je((0,d.oW)(1001000100)),Q=Je((0,d.oW)(1001000032),(([e,,t],n)=>({db:e,nameOnly:t?.nameOnly??!1,...n&&{collectionsCount:n.length}}))),X=Je((0,d.oW)(1001000033),(([e],t)=>({nameOnly:e?.nameOnly??!1,...t&&{databasesCount:t.length}}))),ee=Je((0,d.oW)(1001000034),(([e,t])=>({ns:e,maxTimeMS:t?.maxTimeMS}))),te=Je((0,d.oW)(1001000035)),ne=Je((0,d.oW)(1001000036),(([e,t],n)=>({ns:e,options:t,...n&&{result:n}}))),ae=Je((0,d.oW)(1001000037),(([e,t,n],a)=>({ns:e,spec:t,options:n,...a&&{result:a}}))),oe=Je((0,d.oW)(1001000038),(([e],t)=>({ns:e,...t&&{result:t}}))),re=Je((0,d.oW)(1001000039),(([e],t)=>({ns:e,...t&&{result:t}}))),ie=Je((0,d.oW)(1001000059),(([e],t)=>({ns:e,...t&&{result:t}}))),se=Je((0,d.oW)(1001000276)),le=Je((0,d.oW)(1001000040),(([e],t)=>({db:e,...t&&{result:t}}))),ce=Je((0,d.oW)(1001000182),(([e,t],n)=>({ns:e,name:t,...n&&{result:n}}))),de=Je((0,d.oW)(1001000237)),ue=Je((0,d.oW)(1001000238)),me=Je((0,d.oW)(1001000239)),pe=Je((0,d.oW)(1001000240)),he=Je((0,d.oW)(1001000241)),ge=Je((0,d.oW)(1001000041),(([e,t,n])=>({ns:e,stages:t.map((e=>Object.keys(e)[0])),maxTimeMS:n?.maxTimeMS}))),fe=Je((0,d.oW)(1001000181),(([e,t,n])=>({ns:e,stages:t.map((e=>Object.keys(e)[0])),maxTimeMS:n?.maxTimeMS}))),ye=Je((0,d.oW)(1001000060),(([e,,t])=>({ns:e,maxTimeMS:t?.maxTimeMS}))),be=Je((0,d.oW)(1001000043)),ve=Je((0,d.oW)(1001000044)),Ce=Je((0,d.oW)(1001000045)),Ee=Je((0,d.oW)(1001000183)),Se=Je((0,d.oW)(1001000191)),ke=Je((0,d.oW)(1001000046),(([e,,,t])=>({ns:e,verbosity:t?.explainVerbosity||r.ExplainVerbosity.executionStats}))),we=Je((0,d.oW)(1001000177),(([e,,,t])=>({ns:e,verbosity:t?.explainVerbosity||r.ExplainVerbosity.executionStats}))),xe=Je((0,d.oW)(1001000381)),Ae=Je((0,d.oW)(1001000047)),De=Je((0,d.oW)(1001000024),((e,t)=>{if(t)return{serverVersion:t.build.version,genuineMongoDB:t.genuineMongoDB,dataLake:t.dataLake,featureCompatibilityVersion:t.featureCompatibilityVersion}})),Ie=Je((0,d.oW)(1001000048),(([e],t)=>({ns:e,...t&&{acknowledged:t.acknowledged}}))),Me=Je((0,d.oW)(1001000049),(([e],t)=>({ns:e,...t&&{acknowledged:t.acknowledged,insertedCount:t.insertedCount}}))),Te=Je((0,d.oW)(1001000050),(([e],t)=>({ns:e,...t&&{result:t}}))),Le=Je((0,d.oW)(1001000053)),Oe=Je((0,d.oW)(1001000061),((e,t)=>t?{result:t}:void 0)),Ne=Je((0,d.oW)(1001000062),((e,t)=>t?{result:t}:void 0)),_e=Je((0,d.oW)(1001000055),(([e,t,n,a],o)=>({name:e,sourceNs:t,stages:n.map((e=>Object.keys(e)[0])),options:a,...o&&{result:o}}))),Fe=Je((0,d.oW)(1001000057)),Pe=Je((0,d.oW)(1001000266)),We=Je((0,d.oW)(1001000123),(([e])=>({provider:e}))),Re=Je((0,d.oW)(1001000284)),Ue=Je((0,d.oW)(1001000285)),$e=Je((0,d.oW)(1001000286)),Ve=Je((0,d.oW)(1001000287)),"_connectionOptions")]=void Y(this);_proxyOptions;_isConnecting=!1;_mongoClientConnectionOptions;_metadataClient;_crudClient;_useCRUDClient=!0;_csfleCollectionTracker;_state;_reauthenticationHandlers=new Set;_lastSeenTopology=null;_isWritable=!1;_id;_emitter=new a.EventEmitter;_logger;_unboundLogger;_getOptionsWithFallbackReadPreference(e,t){const n=(a=this._connectionOptions.connectionString,new i.Ay(a).searchParams.get("readPreference")?void 0:t?.fallbackReadPreference);var a;return n?{...e,readPreference:n}:e}constructor(e,t,n){super(),this._id=qe++,this._connectionOptions=e,this._proxyOptions=n??{};const a="COMPASS-DATA-SERVICE",o=`Connection ${this._id}`;this._logger={debug:(e,...n)=>t?.debug(a,e,o,...n),info:(e,...n)=>t?.info(a,e,o,...n),warn:(e,...n)=>t?.warn(a,e,o,...n),error:(e,...n)=>t?.error(a,e,o,...n),fatal:(e,...n)=>t?.fatal(a,e,o,...n)},t&&(this._unboundLogger=Object.assign(t,{mongoLogId:d.oW}))}get id(){return this._id}on(...e){return this._emitter.on(...e),this}off(...e){return this._emitter.off(...e),this}removeListener(...e){return this._emitter.off(...e),this}once(...e){return this._emitter.once(...e),this}getMongoClientConnectionOptions(){return(0,A.omit)(this._mongoClientConnectionOptions,"options.oidc.notifyDeviceFlow","options.oidc.signal","options.oidc.allowedFlows","options.oidc.customFetch","options.oidc.customHttpOptions")}getConnectionOptions(){return this._connectionOptions}getConnectionString(){return new i.Ay(this._connectionOptions.connectionString)}setCSFLEEnabled(e){this._logger.info((0,d.oW)(1001000117),"Setting CSFLE mode",{enabled:e}),this._useCRUDClient=e}getCSFLEMode(){return this._crudClient&&(e=this._crudClient,g(e.options?.autoEncryption).length>0)?this._useCRUDClient?"enabled":"disabled":"unavailable";var e}async collectionStats(e,t,n){const a=`${e}.${t}`;try{const o=this._collection(a,"CRUD"),r={_id:null,capped:{$first:"$storageStats.capped"},count:{$sum:"$storageStats.count"},size:{$sum:{$toDouble:"$storageStats.size"}},storageSize:{$sum:{$toDouble:"$storageStats.storageSize"}},totalIndexSize:{$sum:{$toDouble:"$storageStats.totalIndexSize"}},freeStorageSize:{$sum:{$toDouble:"$storageStats.freeStorageSize"}},unscaledCollSize:{$sum:{$multiply:[{$toDouble:"$storageStats.avgObjSize"},{$toDouble:"$storageStats.count"}]}},nindexes:{$max:"$storageStats.nindexes"},storageSizeType:{$first:{$type:"$storageStats.storageSize"}},freeStorageSizeType:{$first:{$type:"$storageStats.freeStorageSize"}}};"timeseries"===n&&(r.timeseriesBucketCount={$first:"$storageStats.timeseries.bucketCount"},r.timeseriesAvgBucketSize={$first:"$storageStats.timeseries.avgBucketSize"});const i={__proto__:null,avgObjSize:{$cond:{if:{$ne:["$count",0]},then:{$divide:["$unscaledCollSize",{$toDouble:"$count"}]},else:0}}};"timeseries"===n&&(i.bucket_count="$timeseriesBucketCount",i.avg_bucket_size="$timeseriesAvgBucketSize");const s=await o.aggregate([{$collStats:{storageStats:{}}},{$group:r},{$addFields:i}],{enableUtf8Validation:!1}).toArray();if(!s||void 0===s[0])throw new Error(`Error running $collStats aggregation stage on ${a}`);return s[0].ns=a,this._buildCollectionStats(e,t,s[0])}catch(n){const a=n.message;if(a.includes("not valid for Data Lake")||a.includes("is a view, not a collection")||a.includes(`Database [${e}] not found`)||a.includes(`Collection [${e}.${t}] not found`))return this._buildCollectionStats(e,t,{});throw n}}async collectionInfo(e,t){const[n]=await this._listCollections(e,{name:t});return w({db:e,...n})??null}async killOp(e,t){const n=this._database("admin","META");return c(n,{killOp:1,id:e,comment:t},{enableUtf8Validation:!1})}isWritable(){return this._isWritable}isMongos(){return"Sharded"===this.getCurrentTopologyType()}getCurrentTopologyType(){return this.getLastSeenTopology()?.type??"Unknown"}async _connectionStatus(){const e=this._database("admin","META");return await c(e,{connectionStatus:1,showPrivileges:!0},{enableUtf8Validation:!1})}async _getPrivilegesOrFallback(e=null){if(e)return e;const{authInfo:{authenticatedUserPrivileges:t}}=await this._connectionStatus();return t}async _getRolesOrFallback(e=null){if(e)return e;const{authInfo:{authenticatedUserRoles:t}}=await this._connectionStatus();return t}async _listCollections(e,t={},{nameOnly:n}={}){try{const a=this._database(e,"CRUD").listCollections(t,{nameOnly:n,...Ye(this.isMongos(),this._crudClient?.readPreference)}),o=[];for await(const t of a)n||this._csfleCollectionTracker?.updateCollectionInfo(`${e}.${t.name}`,t),o.push(t);return o}catch(e){return this._logger.warn((0,d.oW)(1001000099),"Failed to run listCollections",{message:e.message}),[]}}async listCollections(e,t={},{nameOnly:n,fetchNamespacesFromPrivileges:a=!0,privileges:o=null}={}){const[r,i]=await Promise.all([(async()=>(await this._listCollections(e,t,{nameOnly:n})).map((e=>({inferred_from_privileges:!1,...e}))))(),(s=t,0===Object.keys(s).length?(async()=>{if(!a)return[];const t=v(await this._getPrivilegesOrFallback(o),["find"]);return Object.keys(t[e]||{}).filter(Boolean).map((e=>({name:e,inferred_from_privileges:!0})))})():[])]);var s;return ze([...i,...r],"name").map((({inferred_from_privileges:t,...n})=>({inferred_from_privileges:t,...w({db:e,...n})})))}async listDatabases({nameOnly:e,fetchNamespacesFromPrivileges:t=!0,privileges:n=null,roles:a=null}={}){const o=this._database("admin","CRUD"),[r,i,s]=await Promise.all([(async()=>{try{const{databases:t}=await c(o,{listDatabases:1,nameOnly:e},{enableUtf8Validation:!1,...Ye(this.isMongos(),this._crudClient?.readPreference)});return t.map((e=>({...e,inferred_from_privileges:!1})))}catch(e){return this._logger.warn((0,d.oW)(1001000098),"Failed to run listDatabases",{message:e.message}),[]}})(),(async()=>{if(!t)return[];const e=v(await this._getPrivilegesOrFallback(n),["find"]);return Object.keys(e).filter(Boolean).map((e=>({name:e,inferred_from_privileges:!0})))})(),(async()=>{const e=function(e=null,t=null){const n=e??[],a=new Set,o=t&&t.length>0?n.filter((({role:e})=>t.includes(e))):n;for(const{db:e}of o)a.add(e);return[...a]}(await this._getRolesOrFallback(a),["read","readWrite","dbAdmin","dbOwner"]);return e.map((e=>({name:e,inferred_from_privileges:!0})))})()]);return ze([...s,...i,...r],"name").map((({name:e,inferred_from_privileges:t,...n})=>({_id:e,name:e,inferred_from_privileges:t,...k(n)})))}addReauthenticationHandler(e){this._reauthenticationHandlers.add(e)}async _requestReauthenticationFromUser(){this._logger.info((0,d.oW)(1001000194),"Requesting re-authentication from user");let e=!0;try{for(const e of this._reauthenticationHandlers)await e();e=!1}finally{this._logger.info((0,d.oW)(1001000193),"Completed re-authentication request",{wantsReauth:!e})}}async connect({signal:e,productName:t,productDocsLink:n}={}){if(this._metadataClient)m("already connected");else if(this._isConnecting)m("connect method called more than once");else{m("connecting..."),this._isConnecting=!0,this._logger.info((0,d.oW)(1001000014),"Connecting Started",{connectionId:this._id,url:(0,i.J0)(this._connectionOptions.connectionString),csfle:this._csfleLogInformation(this._connectionOptions.fleOptions)});try{const[a,o,r,i]=await L({connectionOptions:this._connectionOptions,proxyOptions:this._proxyOptions,setupListeners:this._setupListeners.bind(this),signal:e,logger:this._unboundLogger,productName:t,productDocsLink:n,reauthenticationHandler:this._requestReauthenticationFromUser.bind(this)}),s={connectionId:this._id,isWritable:this.isWritable(),isMongos:this.isMongos()};this._logger.info((0,d.oW)(1001000015),"Connecting Succeeded",s),m("connected!",s),r.oidcPlugin.logger.on("mongodb-oidc-plugin:state-updated",(()=>{this._emitter.emit("connectionInfoSecretsChanged")})),r.oidcPlugin.logger.on("mongodb-oidc-plugin:auth-failed",(({error:e})=>{this._emitter.emit("oidcAuthFailed",e)})),this._metadataClient=a,this._crudClient=o,this._state=r,this._mongoClientConnectionOptions=i,this._csfleCollectionTracker=new U(this,this._crudClient)}catch(e){throw this._logger.info((0,d.oW)(1001000359),"Connecting Failed",{connectionId:this._id,error:e&&"object"==typeof e&&"message"in e?e?.message:"unknown error"}),e}finally{this._isConnecting=!1}}}estimatedCount(e,t={},n){const a=t.maxTimeMS??500;return this._cancellableOperation((async n=>this._collection(e,"CRUD").estimatedDocumentCount({...t,maxTimeMS:a,session:n})),(e=>e.endSession()),n?.abortSignal)}count(e,t,n={},a){return this._cancellableOperation((async(o,r)=>this._collection(e,"CRUD").countDocuments(t,{...this._getOptionsWithFallbackReadPreference(n,a),session:o,signal:r})),(e=>e.endSession()),a?.abortSignal)}async createCollection(e,t){const n=this._collectionName(e),a=this._database(e,"CRUD");return await a.createCollection(n,t)}async createIndex(e,t,n){const a=this._collection(e,"CRUD");return await a.createIndex(t,n)}async deleteOne(e,t,n){const a=this._collection(e,"CRUD");return await a.deleteOne(t,n)}async deleteMany(e,t,n){const a=this._collection(e,"CRUD");return await a.deleteMany(t,n)}async updateMany(e,t,n,a){const o=this._collection(e,"CRUD");return await o.updateMany(t,n,a)}async disconnect(){this._logger.info((0,d.oW)(1001000016),"Disconnecting");try{await Promise.all([this._metadataClient?.close(!0).catch((e=>m("failed to close MongoClient",e))),this._crudClient!==this._metadataClient&&this._crudClient?.close(!0).catch((e=>m("failed to close MongoClient",e))),this._state?.destroy().catch((e=>m("failed to destroy DevtoolsConnectionState",e)))])}finally{this._cleanup(),this._logger.info((0,d.oW)(1001000017),"Fully closed")}}async dropCollection(e){const t=this._database(e,"CRUD"),n=this._collectionName(e),a=t.collection(n);let o=null;try{[o]=await t.listCollections({name:n},{nameOnly:!1}).toArray()}catch{}const r={},i=o?.options?.encryptedFields;return i&&(r.encryptedFields=i),await a.drop(r)}renameCollection(e,t){return this._database(e,"META").renameCollection(this._collectionName(e),t)}async dropDatabase(e){const t=this._database(e,"CRUD");return await t.dropDatabase()}async dropIndex(e,t){const n=this._collection(e,"CRUD");return await n.dropIndex(t)}async isListSearchIndexesSupported(e){try{await this.getSearchIndexes(e)}catch{return!1}return!0}async getSearchIndexes(e){const t=this._collection(e,"CRUD").listSearchIndexes(),n=await t.toArray();return t.close(),n}async createSearchIndex(e,t){return this._collection(e,"CRUD").createSearchIndex(t)}async updateSearchIndex(e,t,n){return this._collection(e,"CRUD").updateSearchIndex(t,n)}async dropSearchIndex(e,t){return this._collection(e,"CRUD").dropSearchIndex(t)}aggregateCursor(e,t,n={}){return this._collection(e,"CRUD").aggregate(t,n)}aggregate(e,t,n={},a){let o;return this._cancellableOperation((async(a,r)=>{o=this._collection(e,"CRUD").aggregate(t,{...n,session:a,signal:r});const i=await o.toArray();return o.close(),i}),(()=>o?.close()),a?.abortSignal)}find(e,t,n={},a){let o;return this._cancellableOperation((async(r,i)=>{o=this._collection(e,"CRUD").find(t,this._getOptionsWithFallbackReadPreference({...n,session:r,signal:i},a));const s=await o.toArray();return o.close(),s}),(()=>o?.close()),a?.abortSignal)}findCursor(e,t,n={}){return this._collection(e,"CRUD").find(t,n)}async findOneAndReplace(e,t,n,a){const o=this._collection(e,"CRUD");return await o.findOneAndReplace(t,n,a)}async findOneAndUpdate(e,t,n,a){const o=this._collection(e,"CRUD");return await o.findOneAndUpdate(t,n,a)}async updateOne(e,t,n,a){const o=this._collection(e,"CRUD");return await o.updateOne(t,n,a)}async replaceOne(e,t,n,a){const o=this._collection(e,"CRUD");return await o.replaceOne(t,n,a)}explainFind(e,t,n={},a){const o=a?.explainVerbosity||r.ExplainVerbosity.executionStats;let i;return this._cancellableOperation((async(r,s)=>{i=this._collection(e,"CRUD").find(t,{...n,session:r,signal:s});const l=await i.explain({verbosity:o,maxTimeMS:a?.maxTimeMS});return i.close(),l}),(()=>i?.close()),a?.abortSignal)}explainAggregate(e,t,n,a){const o=a?.explainVerbosity||r.ExplainVerbosity.executionStats;let i;return this._cancellableOperation((async(r,s)=>{i=this._collection(e,"CRUD").aggregate(t,{...n,session:r,signal:s});const l=await i.explain({verbosity:o,maxTimeMS:a?.maxTimeMS});return i.close(),l}),(()=>i?.close()),a?.abortSignal)}async _indexStats(e){const t=await this.aggregate(e,[{$indexStats:{}},{$project:{name:1,usageHost:"$host",usageCount:"$accesses.ops",usageSince:"$accesses.since",building:1}}]);return Object.fromEntries(t.map((e=>[e.name,e])))}async _indexSizes(e,t){try{const n=await this.aggregate(e,[{$collStats:{storageStats:{}}},{$project:{indexSizes:{$objectToArray:"$storageStats.indexSizes"}}},{$unwind:"$indexSizes"},{$group:{_id:"$indexSizes.k",size:{$sum:{$toDouble:"$indexSizes.v"}}}}],{},t);return Object.fromEntries(n.map((({_id:e,size:t})=>[e,t])))}catch(e){if(E(e)||function(e){return!!e&&(e.message||JSON.stringify(e)).match(/Unrecognized pipeline stage name/)}(e))return{};throw e}}async _indexProgress(e){const t={$currentOp:{allUsers:!0,localOps:!1}},n=[t,{$match:{ns:e,active:!0,"command.createIndexes":{$exists:!0}}},{$sort:{"command.indexes.name":1,secs_running:-1}},{$unwind:"$command.indexes"},{$group:{_id:"$command.indexes.name",active:{$max:"$active"},secsRunning:{$max:"$secs_running"},msg:{$first:"$msg"},progress:{$first:{$cond:{if:{$and:[{$eq:[{$type:"$progress"},"object"]},{$gt:["$progress.total",0]}]},then:{$divide:["$progress.done","$progress.total"]},else:"$$REMOVE"}}}}}],a=this._database("admin","META");try{const e=await a.aggregate(n).toArray(),t=Object.create(null);for(const{_id:n,active:a,secsRunning:o,msg:r,progress:i}of e)t[n]={active:a,progress:i,secsRunning:o,msg:r};return t}catch{t.$currentOp.allUsers=!1;const e=await a.aggregate(n).toArray(),o=Object.create(null);for(const{_id:t,active:n,secsRunning:a,msg:r,progress:i}of e)o[t]={active:n,progress:i,secsRunning:a,msg:r};return o}}async fetchShardKey(e,t={},n){const a=await this.find("config.collections",{_id:e,unsplittable:{$ne:!0}},{...t,projection:{key:1,_id:0}},{abortSignal:n?.abortSignal});return a.length?a[0].key:null}async _fetchShardKeyWithSilentFail(...e){try{return await this.fetchShardKey(...e)}catch(e){if(this.isCancelError(e))throw e;return null}}async indexes(e,t,n){if(!1===t?.full)return Object.entries(await this._collection(e,"CRUD").indexes({...t,full:!1})).map((t=>{const[n,a]=t;return z(e,null,{name:n,key:Object.fromEntries(a)})}));const[a,o,[r,i],s]=await Promise.all([this._collection(e,"CRUD").indexes({...t,full:!0}),this._indexSizes(e,n),Promise.allSettled([this._indexStats(e),this._indexProgress(e)]),this._fetchShardKeyWithSilentFail(e)]),l=Math.max(...Object.values(o)),c="rejected"===r.status?r.reason.message:void 0,d="fulfilled"===r.status?r.value:{},u="rejected"===i.status?i.reason?.message:void 0,m="fulfilled"===i.status?i.value:{};return a.filter((e=>!!e.name)).map((t=>{const n=t.name,a={currentOp:m[n],...c&&{statsError:c},...u&&{progressError:u}};return z(e,s??null,t,d[n],o[n],l,a)}))}async instance(){return{...await h(this._initializedClient("META"),this._connectionOptions.connectionString),csfleMode:this.getCSFLEMode()}}async insertOne(e,t,n){const a=this._collection(e,"CRUD");return await a.insertOne(t,n)}async insertMany(e,t,n){const a=this._collection(e,"CRUD");return await a.insertMany(t,n)}async updateCollection(e,t={}){const n=this._collectionName(e),a=this._database(e,"CRUD"),o=await c(a,{collMod:n,...t});return await this._resetCRUDClient(),o}bulkWrite(e,t,n){return this._collection(e,"CRUD").bulkWrite(t,n)}async currentOp(){const e=this._database("admin","META");return{inprog:await e.aggregate([{$currentOp:{allUsers:!0,idleConnections:!1,truncateOps:!1}}]).toArray()}}getLastSeenTopology(){return this._lastSeenTopology}async serverStatus(){const e=this._database("admin","META");return await c(e,{serverStatus:1},{enableUtf8Validation:!1})}async top(){const e=this._database("admin","META");return await c(e,{top:1},{enableUtf8Validation:!1})}async createView(e,t,n,a={}){const o={...a,viewOn:this._collectionName(t),pipeline:n},r=this._database(t,"CRUD");return await r.createCollection(e,o)}_buildSamplingPipeline({query:e,size:t,fields:n}){const a=[];return e&&Object.keys(e).length>0&&a.push({$match:e}),a.push({$sample:{size:0===t?0:t||1e3}}),n&&Object.keys(n).length>0&&a.push({$project:n}),a}sampleCursor(e,t={},n={},a){const o=this._buildSamplingPipeline(t);return this.aggregateCursor(e,o,{allowDiskUse:!0,...this._getOptionsWithFallbackReadPreference(n,a)})}sample(e,t={},n={},a){const o=this._buildSamplingPipeline(t);return this.aggregate(e,o,{allowDiskUse:!0,...this._getOptionsWithFallbackReadPreference(n,a)},a)}_startSession(e){const t=this._initializedClient(e).startSession();return t[Ge]=e,t}_killSessions(e){const t=Array.isArray(e)?e:[e],n=new Set(t.map((e=>e[Ge])));if(1!==n.size)throw new Error(`Cannot kill sessions without a specific client type: [${[...n].join(", ")}]`);const[a]=n;return c(this._database("admin",a),{killSessions:t.map((e=>e.id))})}isConnected(){return!!this._metadataClient}async _cancellableOperation(e,t=()=>Promise.resolve(),n){if(!n)return await e();if(n.aborted)throw n.reason??(0,$.VJ)();const a=this._startSession("CRUD");let o;const r=async()=>{const e=e=>{this._logger.warn((0,d.oW)(1001000140),"Attempting to kill the operation failed",{error:e.message})};await t(a).catch(e),await this._killSessions(a).catch(e)};try{o=await(0,$.kk)(e(a,n),n)}catch(e){throw(0,$.nc)(e)&&await r(),e}return o}isCancelError(e){return(0,$.nc)(e)}_setupListeners(e){if(e){e.on("connectionCreated",(e=>{const{address:t,connectionId:n}=e;this._logger.info((0,d.oW)(1001000027),"Driver connection created",{address:t,serverConnectionId:n})})),e.on("serverDescriptionChanged",(e=>{this._logger.info((0,d.oW)(1001000018),"Server description changed",{address:e.address,error:e.newDescription.error?.message??null,previousType:e.previousDescription.type,newType:e.newDescription.type})})),e.on("serverOpening",(e=>{this._logger.info((0,d.oW)(1001000019),"Server opening",{address:e.address})})),e.on("close",(()=>{this._logger.info((0,d.oW)(1001000315),"Client is closed"),this._emitter.emit("close")})),e.on("serverClosed",(e=>{this._logger.info((0,d.oW)(1001000020),"Server closed",{address:e.address})})),e.on("topologyDescriptionChanged",(e=>{this._isWritable=this._checkIsWritable(e);const t={isWritable:this.isWritable(),isMongos:this.isMongos(),previousType:e.previousDescription.type,newType:e.newDescription.type};this._logger.info((0,d.oW)(1001000021),"Topology description changed",t),this._lastSeenTopology=e.newDescription,this._emitter.emit("topologyDescriptionChanged",e)}));const t=new Map,n=(e,t)=>(e=Math.max(e,200),t=Math.max(t,200),Math.abs(Math.log2(e/t))>=1);e.on("serverHeartbeatSucceeded",(e=>{const a=t.get(e.connectionId);(!a||a.failure||n(a.duration,e.duration))&&(t.set(e.connectionId,{failure:null,duration:e.duration}),this._logger.debug((0,d.oW)(1001000022),"Server heartbeat succeeded",{connectionId:e.connectionId,duration:e.duration}))})),e.on("serverHeartbeatFailed",(e=>{const a=t.get(e.connectionId);a&&a.failure&&!n(a.duration,e.duration)||(t.set(e.connectionId,{failure:e.failure.message,duration:e.duration}),this._logger.warn((0,d.oW)(1001000023),"Server heartbeat failed",{connectionId:e.connectionId,duration:e.duration,failure:e.failure.message})),this._emitter.emit("serverHeartbeatFailed",e)})),e.on("commandStarted",(e=>{const{address:t,connectionId:n,requestId:a,commandName:o,databaseName:r}=e;this._logger.debug((0,d.oW)(1001000028),"Driver command started",{address:t,databaseName:r,serverConnectionId:n,requestId:a,commandName:o})})),e.on("commandSucceeded",(e=>{const{address:t,connectionId:n,duration:a,requestId:o,commandName:r}=e;this._logger.debug((0,d.oW)(1001000029),"Driver command succeeded",{address:t,requestId:o,serverConnectionId:n,duration:a,commandName:r})})),e.on("commandFailed",(e=>{const{address:t,connectionId:n,duration:a,requestId:o,commandName:r,failure:i}=e;this._logger.debug((0,d.oW)(1001000030),"Driver command failed",{address:t,serverConnectionId:n,duration:a,requestId:o,commandName:r,failure:i.message})}))}}_initializedClient(e){if("CRUD"!==e&&"META"!==e)throw new Error(`Invalid client type: ${e}`);const t="CRUD"===e&&this._useCRUDClient?this._crudClient:this._metadataClient;if(!t)throw new Error(`Client not yet initialized [${e}]`);return t}_getCSFLECollectionTracker(){if(!this._csfleCollectionTracker)throw new Error("Client not yet initialized [CSFLECollectionTracker]");return this._csfleCollectionTracker}isUpdateAllowed(e,t){return this._getCSFLECollectionTracker().isUpdateAllowed(e,t)}knownSchemaForCollection(e){return this._getCSFLECollectionTracker().knownSchemaForCollection(e)}async databaseStats(e){const t=this._database(e,"META");return{name:e,...k(await c(t,{dbStats:1},{enableUtf8Validation:!1,...Ye(this.isMongos(),this._crudClient?.readPreference)}))}}async previewUpdate(e,t,n,a={}){const{abortSignal:o=(new AbortController).signal,sample:r=10,timeout:i=1e3}=a,s=Date.now(),l=()=>Math.max(1,i-(Date.now()-s));return await this._cancellableOperation((async(a,o)=>{if(!a)throw new Error("Could not open session.");try{return await a.withTransaction((async()=>{const i=this._collection(e,"CRUD"),s=await i.find(t,{session:a,signal:o,maxTimeMS:l(),promoteValues:!1}).sort({_id:1}).limit(r).toArray(),c=s.map((e=>e._id));await i.updateMany({_id:{$in:c}},n,{session:a,maxTimeMS:l()});const d=await i.find({_id:{$in:c}},{session:a,signal:o,maxTimeMS:l(),promoteValues:!1}).sort({_id:1}).toArray();return await a.abortTransaction(),await a.endSession(),{changes:s.map(((e,t)=>({before:e,after:d[t]})))}}),{maxTimeMS:l()})}catch(e){if(function(e){return"Cannot use a session that has ended"===e.message||"NoSuchTransaction"===e.codeName}(e))return{changes:[]};throw a.inTransaction()&&(await a.abortTransaction(),await a.endSession()),e}}),(async()=>{}),o)}_buildCollectionStats(e,t,n){return{ns:e+"."+t,name:t,database:e,is_capped:n.capped,document_count:n.count??0,document_size:n.size,avg_document_size:n.avgObjSize??0,storage_size:"missing"===n.storageSizeType?void 0:n.storageSize,free_storage_size:"missing"===n.freeStorageSizeType?void 0:n.freeStorageSize,index_count:n.nindexes??0,index_size:n.totalIndexSize??0,bucket_count:n.bucket_count,avg_bucket_size:n.avg_bucket_size}}_collection(e,t){return this._initializedClient(t).db(this._databaseName(e)).collection(this._collectionName(e))}_database(e,t){return this._initializedClient(t).db(this._databaseName(e))}_collectionName(e){return(0,s.Ay)(e).collection}_databaseName(e){return(0,s.Ay)(e).database}_checkIsWritable(e){return[...e.newDescription.servers.values()].some((e=>e.isWritable))}_cleanup(){this._emitter.removeAllListeners(),this._metadataClient?.removeAllListeners?.(),this._crudClient?.removeAllListeners?.(),this._metadataClient=void 0,this._crudClient=void 0,this._state=void 0,this._mongoClientConnectionOptions=void 0,this._isWritable=!1,this._isConnecting=!1}async _resetCRUDClient(){if("unavailable"===this.getCSFLEMode())return;const e=this._crudClient;if(!e)return;const t=await e[T]();this._crudClient===e?(this._crudClient=t,await e.close()):await t.close()}configuredKMSProviders(){return g(this._connectionOptions.fleOptions?.autoEncryption)}_csfleLogInformation(e){const t=g(e?.autoEncryption);return 0===t.length?null:{storeCredentials:e?.storeCredentials,encryptedFieldsMapNamespaces:Object.keys({...e?.autoEncryption?.encryptedFieldsMap,...e?.autoEncryption?.schemaMap}),keyVaultNamespace:e?.autoEncryption?.keyVaultNamespace,kmsProviders:t}}async createDataKey(e,t){const n=this._getClientEncryption();return await n.createDataKey(e,t??{})}_getClientEncryption(){const e=this._initializedClient("CRUD"),t=e.options.autoEncryption,{proxyHost:n,proxyPort:a,proxyUsername:o,proxyPassword:i}=e.options;return new r.ClientEncryption(e,{keyVaultNamespace:t.keyVaultNamespace,kmsProviders:t.kmsProviders,tlsOptions:t.tlsOptions,proxyOptions:n?{proxyHost:n,proxyPort:a,proxyUsername:o,proxyPassword:i}:void 0})}async getUpdatedSecrets(){return this._state?{oidc:{serializedState:await this._state.oidcPlugin.serialize()}}:{}}async listStreamProcessors(e){const t=this._database("admin","CRUD"),{streamProcessors:n}=await c(t,{listStreamProcessors:1,filter:e});return n}async startStreamProcessor(e){const t=this._database("admin","CRUD");await c(t,{startStreamProcessor:e})}async stopStreamProcessor(e){const t=this._database("admin","CRUD");await c(t,{stopStreamProcessor:e})}async dropStreamProcessor(e){const t=this._database("admin","CRUD");await c(t,{dropStreamProcessor:e})}static{const e=e=>{};e(this)}}async function Xe({connectionOptions:e,proxyOptions:t,signal:n,logger:a,productName:o,productDocsLink:r}){const i=new Qe(e,a,t);return await i.connect({signal:n,productName:o,productDocsLink:r}),i}class et{_abortController;_closed=!1;_connectFn;_dataService=null;_logger;_proxyOptions;constructor({connectFn:e,logger:t,proxyOptions:n}){this._logger=t,this._connectFn=e,this._proxyOptions=n,this._abortController=new AbortController}connect(e){return(0,$.kk)(this._connect(e),this._abortController.signal).catch((e=>{if(!(0,$.nc)(e))throw e}))}cancelConnectionAttempt(){this._abortController.abort(),this._close()}isClosed(){return this._closed}async _connect(e){if(!this._closed)try{return this._dataService=await this._connectFn({connectionOptions:e,signal:this._abortController.signal,logger:this._logger,proxyOptions:this._proxyOptions}),this._dataService}catch(e){if(function(e){return"MongoTopologyClosedError"===e?.name}(e))return void this._logger.debug("Connection Attempt",(0,d.oW)(1001000282),"connect","caught connection attempt closed error",e);throw this._logger.debug("Connection Attempt",(0,d.oW)(1001000279),"connect","connection attempt failed",e),e}}async _close(){if(!this._closed)if(this._closed=!0,this._dataService)try{await this._dataService.disconnect(),this._logger.debug("Connection Attempt",(0,d.oW)(1001000281),"close requested","disconnected from connection attempt")}catch(e){this._logger.debug("Connection Attempt",(0,d.oW)(1001000283),"close requested","error while disconnecting from connection attempt",e)}else this._logger.debug("Connection Attempt",(0,d.oW)(1001000280),"close requested","cancelled connection attempt")}}function tt({logger:e,proxyOptions:t,connectFn:n=Xe}){return new et({logger:e,proxyOptions:t,connectFn:n})}},34615:(e,t,n)=>{n.d(t,{wO:()=>fn,GQ:()=>xn,_E:()=>Vt,hl:()=>$t,DM:()=>Yt});var a=n(55712),o=n(96652),r=n.n(o),i=n(14956),s=n(90605),l=n(13310);const c=(0,i.AHW)({marginTop:i.YKD[100],marginBottom:i.YKD[400]}),d=(0,i.AHW)({flexGrow:1,display:"flex",alignItems:"center"}),u=(0,i.AHW)({display:"flex",alignItems:"center"}),m=(0,i.AHW)({textarea:{fontSize:1.75*i.YKD[200],minHeight:i.YKD[7],resize:"vertical"}}),p=(0,i.AHW)({height:14,width:26,margin:0,marginLeft:i.YKD[100]}),h=(0,i.AHW)({"&:hover":{cursor:"pointer"}}),g=(0,i.AHW)({marginTop:i.YKD[400],display:"flex",flexDirection:"row"}),f="connectionString",y="connectionStringLabel",b=function({connectionString:e,enableEditingConnectionString:t,setEnableEditingConnectionString:n,updateConnectionFormField:a,onSubmit:s,protectConnectionStrings:b,disableEditingConnectedConnection:v}){const C=(0,o.useRef)(null),[E,S]=(0,o.useState)(e),[k,w]=(0,o.useState)(!1);(0,i.wTI)((()=>{k||e===E||S(e)}),[k,e,E]);const x=(0,o.useCallback)((e=>{if(13===e.which&&!e.shiftKey)return e.preventDefault(),void s()}),[s]),A=(0,o.useCallback)((e=>{const t=e.target.value;S(t),a({type:"update-connection-string",newConnectionStringValue:t})}),[a]),D=t&&k?E:function(e){return(0,l.J0)(e,{redactUsernames:!1,replacementString:"*****"})}(E),I=(0,o.useCallback)((async e=>{e?await(0,i.$TK)({title:"Are you sure you want to edit your connection string?",description:"Editing this connection string will reveal your credentials."})&&n(!0):n(!1)}),[n]);return r().createElement(o.Fragment,null,r().createElement("div",{className:g},r().createElement("div",{className:d},r().createElement(i.JU7,{htmlFor:f,id:y},"URI"),r().createElement(i.CAb,{"aria-label":"Connection String Documentation","data-testid":"connectionStringDocsButton",href:"https://docs.mongodb.com/manual/reference/connection-string/"})),!(b||v)&&r().createElement("div",{className:u},r().createElement(i.JU7,{className:h,id:"edit-connection-string-label",htmlFor:"toggle-edit-connection-string"},"Edit Connection String"),r().createElement(i.lMk,{className:p,id:"toggle-edit-connection-string","data-testid":"toggle-edit-connection-string","aria-labelledby":"edit-connection-string-label",size:"xsmall",type:"button",checked:t,onChange:e=>{I(e)}}))),r().createElement("div",{className:c},r().createElement(i.fs1,{onBlur:()=>w(!1),onFocus:()=>w(!0),onChange:A,onKeyPress:x,value:D,className:m,disabled:!t||v,id:f,"data-testid":f,ref:C,"aria-labelledby":y,placeholder:"e.g mongodb+srv://username:password@cluster0-jtpxd.mongodb.net/admin",spellCheck:!1})))};n(95039);var v=n(29603),C=n(9174),E=n(19461),S=n(34110).Buffer;const k={storeCredentials:!1,autoEncryption:void 0};function w(e){e=(0,s.cloneDeep)(e);const t=e.fleOptions?.autoEncryption&&x(e.fleOptions?.autoEncryption)?e.fleOptions?.autoEncryption:void 0;if(!t)return{...e,fleOptions:void 0};function n(e){const t=Object.fromEntries(Object.entries(e??{}).filter((([,e])=>Object.keys(e??{}).length>0)));return Object.keys(t).length>0?t:void 0}const a=n(t.kmsProviders),o=n(t.tlsOptions),{kmsProviders:r,tlsOptions:i,...l}=t;return{...e,fleOptions:{...k,...e.fleOptions,autoEncryption:{...l,...a?{kmsProviders:a}:{},...o?{tlsOptions:o}:{}}}}}function x(e){return!!(e.bypassAutoEncryption||e.keyVaultNamespace||e.schemaMap||e.encryptedFieldsMap||[...Object.values(e.tlsOptions??{}),...Object.values(e.kmsProviders??{})].flatMap((e=>Object.values(e??{}))).filter(Boolean).length>0)}function A(e){if(!e.trim())return;let t={};try{if(t=(0,E.Ay)(e,{mode:E.X6.Strict}),!t||"object"!=typeof t)throw t={},new Error("Field contained invalid input");t["$compass.error"]=null}catch(e){t["$compass.error"]=e.message}return t["$compass.rawText"]=e,t}function D(e){e=(0,s.cloneDeep)(e);const t=e.fleOptions?.autoEncryption;return null===t?.schemaMap?.["$compass.error"]&&(t.schemaMap=A(t.schemaMap["$compass.rawText"])),null===t?.encryptedFieldsMap?.["$compass.error"]&&(t.encryptedFieldsMap=A(t.encryptedFieldsMap["$compass.rawText"])),e}function I(e,t,n){if(e)return Object.fromEntries(Object.entries(e).map((([e,a])=>[e===t?n:e,a])))}function M(e,t){return e.filter((e=>e.fieldTab===t))}function T(e,t){return(e||[]).find((e=>e.fieldName===t))?.message}function L(e,t){return!!T(e,t)}function O(e,t,n){return(e||[]).find((e=>e.fieldName===t&&e.fieldIndex===n))?.message}function N(e){switch((e.typedSearchParams().get("authMechanism")||"").toUpperCase()){case"":return function(e){const{username:t,password:n}=e;return t||n?_(e):[]}(e);case"MONGODB-X509":return function(e){const t=[];return R(e)||t.push({fieldTab:"tls",fieldName:"tls",message:"TLS must be enabled in order to use x509 authentication."}),e.searchParams.has("tlsCertificateKeyFile")||t.push({fieldTab:"tls",fieldName:"tlsCertificateKeyFile",message:"A Client Certificate is required with x509 authentication."}),t}(e);case"GSSAPI":return function(e){const t=[];return e.username||t.push({fieldTab:"authentication",fieldName:"kerberosPrincipal",message:"Principal name is required with Kerberos."}),t}(e);case"PLAIN":case"SCRAM-SHA-1":case"SCRAM-SHA-256":return function(e){return _(e)}(e);default:return[]}}function _(e){const{username:t,password:n}=e,a=[];return t||a.push({fieldTab:"authentication",fieldName:"username",message:"Username is missing."}),n||a.push({fieldTab:"authentication",fieldName:"password",message:"Password is missing."}),a}function F(e){const t=[];return e.host||t.push({fieldTab:"proxy",fieldName:"sshHostname",message:"A hostname is required to connect with an SSH tunnel."}),e.password||e.identityKeyFile||t.push({fieldTab:"proxy",fieldName:"sshPassword",message:"When connecting via SSH tunnel either password or identity file is required."}),e.identityKeyPassphrase&&!e.identityKeyFile&&t.push({fieldTab:"proxy",fieldName:"sshIdentityKeyFile",message:"File is required along with passphrase."}),t}function P(e){const t=e.typedSearchParams(),n=t.get("proxyHost"),a=t.get("proxyPort"),o=t.get("proxyUsername"),r=t.get("proxyPassword"),i=[];return!n&&(a||o||r)?(i.push({fieldTab:"proxy",fieldName:"proxyHostname",message:"Proxy hostname is required."}),i):i}function W(e){const t=[];for(const n of["schemaMap","encryptedFieldsMap"]){const a=e[n]?.["$compass.error"];a&&t.push({fieldTab:"csfle",fieldName:n,message:`EncryptedFieldConfig is invalid: ${a}`})}e.keyVaultNamespace&&!e.keyVaultNamespace.includes(".")&&t.push({fieldTab:"csfle",fieldName:"keyVaultNamespace",message:"Key Vault namespace must be of the format <db>.<collection>"}),!e.keyVaultNamespace&&x(e)&&t.push({fieldTab:"csfle",fieldName:"keyVaultNamespace",message:"Key Vault namespace must be specified for In-Use-Encryption-enabled connections"});const n=e.kmsProviders??{};return"string"!=typeof n.local?.key||/[a-zA-Z0-9+/_-]{128}/.test(n.local.key)||t.push({fieldTab:"csfle",fieldName:"local.key",message:"Local key must be a Base64-encoded 96-byte string"}),"string"!=typeof n.kmip?.endpoint||n.kmip?.endpoint.includes(":")||t.push({fieldTab:"csfle",fieldName:"kmip.endpoint",message:"KMIP endpoint must be of the format <host>:<port>"}),t}function R(e){const t=e.searchParams.get("ssl"),n=e.searchParams.get("tls");return t||n?"true"===t||"true"===n:e.isSRV}function U(e){let t;try{t=new l.Ay(e.connectionString,{looseValidation:!0})}catch{return[]}return[...H(t),...V(t),...K(t),...j(t),...B(t),...z(t),...Y(t),...$(e)]}function $(e){const t=[];return e.fleOptions?.storeCredentials&&t.push({message:"In-Use Encryption KMS provider credentials will be stored to disk."}),t}function V(e){const t=[];if(!R(e))return[];const n="true"===e.searchParams.get("tlsInsecure"),a="true"===e.searchParams.get("tlsAllowInvalidHostnames"),o="true"===e.searchParams.get("tlsAllowInvalidCertificates");return(n||a||o)&&t.push({message:"TLS/SSL certificate validation is disabled. If possible, enable certificate validation to avoid security vulnerabilities."}),t}function H(e){const t=[],n=e.searchParams.get("readPreference");return n&&!["primary","primaryPreferred","secondary","secondaryPreferred","nearest"].includes(n)&&t.push({message:`Unknown read preference ${n}`}),t}function K(e){const t=[];return e.isSRV&&"true"===e.searchParams.get("directConnection")&&t.push({message:"directConnection not supported with SRV URI."}),t}function j(e){const t=[];return e.searchParams.get("replicaSet")&&"true"===e.searchParams.get("directConnection")&&t.push({message:"directConnection is not supported with replicaSet."}),t}function B(e){const t=[];return e.hosts.length>1&&"true"===e.searchParams.get("directConnection")&&t.push({message:"directConnection is not supported with multiple hosts."}),t}function z(e){const t=[];return e.hosts.filter((e=>!(0,v.M8)(e))).length&&!R(e)&&t.push({message:"TLS/SSL is disabled. If possible, enable TLS/SSL to avoid security vulnerabilities."}),t}function Y(e){const t=[],n=e.typedSearchParams(),a=n.get("proxyHost");return!a||(0,v.M8)(a)||(n.get("proxyPassword")&&t.push({message:"Socks5 proxy password will be transmitted in plaintext."}),e.hosts.find(v.M8)&&t.push({message:"Using remote proxy with local MongoDB service host."})),t}const q="MONGODB",G="MONGODB_SRV",Z=(0,i.AHW)({marginTop:i.YKD[200]}),J=function({connectionStringUrl:e,errors:t,updateConnectionFormField:n}){const{isSRV:a}=e,s=(0,o.useCallback)((e=>{n({type:"update-connection-scheme",isSrv:e.target.value===String(G)})}),[n]);return r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:"connection-scheme-radio-box-group"},"Connection String Scheme"),r().createElement(i.E99,{id:"connection-scheme-radio-box-group",value:a?G:q,onChange:s},r().createElement(i.VCA,{id:"connection-scheme-mongodb-radiobox","data-testid":"connection-scheme-mongodb-radiobox",value:q},"mongodb"),r().createElement(i.VCA,{id:"connection-scheme-srv-radiobox","data-testid":"connection-scheme-srv-radiobox",value:G},"mongodb+srv")),r().createElement(i.VYo,{className:Z},a?"DNS Seed List Connection Format. The +srv indicates to the client that the hostname that follows corresponds to a DNS SRV record.":"Standard Connection String Format. The standard format of the MongoDB connection URI is used to connect to a MongoDB deployment: standalone, replica set, or a sharded cluster."),L(t,"isSrv")&&r().createElement(i.lZ$,{variant:i.uAY.Danger},T(t,"isSrv")))},Q=(0,i.AHW)({marginTop:i.YKD[100]}),X=function({connectionStringUrl:e,updateConnectionFormField:t}){const n="true"===e.typedSearchParams().get("directConnection"),a=(0,o.useCallback)((e=>e.target.checked?t({type:"update-search-param",currentKey:"directConnection",value:e.target.checked?"true":"false"}):t({type:"delete-search-param",key:"directConnection"})),[t]);return r().createElement(i.Sc0,{onChange:a,id:"direct-connection-checkbox",label:r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:"direct-connection-checkbox"},"Direct Connection"),r().createElement(i.VYo,{className:Q},"Specifies whether to force dispatch all operations to the specified host.")),checked:n})},ee=(0,i.AHW)({maxWidth:5*i.YKD[7]}),te=function({errors:e,connectionStringUrl:t,updateConnectionFormField:n}){const[a,s]=(0,o.useState)([...t.hosts]),{isSRV:l}=t,c="true"===t.typedSearchParams().get("directConnection")||!t.isSRV&&1===a.length;(0,i.wTI)((()=>{s([...t.hosts])}),[t]);const d=(0,o.useCallback)(((e,t)=>{const o=[...a];o[t]=e.target.value||"",s(o),n({type:"update-host",fieldIndex:t,newHostValue:e.target.value})}),[a,s,n]);return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:"connection-host-input-0",id:"connection-host-input-label"},l?"Hostname":"Host"),r().createElement(i.qQS,{items:a,className:ee,renderItem:(t,n)=>r().createElement(i.ksK,{type:"text","data-testid":"connection-host-input",id:`connection-host-input-${n}`,"aria-labelledby":"connection-host-input-label",state:L(e,"hosts")?"error":void 0,errorMessage:O(e,"hosts",n),value:`${t}`,onChange:e=>d(e,n)}),disableAddButton:()=>l,disableRemoveButton:()=>l||a.length<=1,onAddItem:e=>n({type:"add-new-host",fieldIndexToAddAfter:e}),onRemoveItem:e=>n({type:"remove-host",fieldIndexToRemove:e}),addButtonTestId:"connection-add-host-button",removeButtonTestId:"connection-remove-host-button"})),c&&r().createElement(i.GEW,null,r().createElement(X,{connectionStringUrl:t,updateConnectionFormField:n})))},ne=function({errors:e,connectionStringUrl:t,updateConnectionFormField:n}){return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(J,{errors:e,connectionStringUrl:t,updateConnectionFormField:n})),r().createElement(te,{errors:e,connectionStringUrl:t,updateConnectionFormField:n}))};function ae(e){const t=e.typedSearchParams().get("authMechanismProperties");try{return new l.Y6(t)}catch{return new l.Y6}}function oe(e){try{return[new l.QZ(e,{looseValidation:!0}),void 0]}catch(e){return[void 0,e]}}function re(e){return decodeURIComponent(e.username)}function ie(e){return decodeURIComponent(e.password)}const se=(0,i.AHW)({marginTop:i.YKD[100]}),le=[{title:"Default",value:"DEFAULT"},{title:"SCRAM-SHA-1",value:"SCRAM-SHA-1"},{title:"SCRAM-SHA-256",value:"SCRAM-SHA-256"}],ce={showFavoriteActions:!0,showPersonalisationForm:!0,showHelpCardsInForm:!0,protectConnectionStrings:!1,forceConnectionOptions:[],showKerberosPasswordField:!1,showOIDCDeviceAuthFlow:!1,enableOidc:!1,enableDebugUseCsfleSchemaMap:!1,protectConnectionStringsForNewConnections:!1,showOIDCAuth:!0,showKerberosAuth:!0,showCSFLE:!0,showProxySettings:!0,saveAndConnectLabel:"Save & Connect"},de=(0,o.createContext)({}),ue=e=>(0,o.useContext)(de)[e]??ce[e],me={none:{label:"None",value:"none"},forward:{label:"Forward",value:"forward"},forwardAndReverse:{label:"Forward and reverse",value:"forwardAndReverse"}},pe=[{title:"Username/Password",id:"DEFAULT",component:function({errors:e,connectionStringUrl:t,updateConnectionFormField:n}){const a=ie(t),s=re(t),l=(t.searchParams.get("authMechanism")??"").toUpperCase(),c=le.find((({value:e})=>e===l))??le[0],d=(0,o.useCallback)((e=>{e.preventDefault(),n({type:"update-search-param",currentKey:"authMechanism",value:e.target.value})}),[n]),u=T(e,"username"),m=T(e,"password");return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.ksK,{onChange:({target:{value:e}})=>{n({type:"update-username",username:e})},label:"Username","data-testid":"connection-username-input",errorMessage:u,state:u?"error":void 0,value:s||"",optional:!0})),r().createElement(i.GEW,null,r().createElement(i.ksK,{onChange:({target:{value:e}})=>{n({type:"update-password",password:e})},label:"Password",type:"password","data-testid":"connection-password-input",value:a||"",errorMessage:m,state:m?"error":void 0,optional:!0})),r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:"authSourceInput",id:"authSourceLabel"},"Authentication Database"),r().createElement(i.CAb,{"aria-label":"Authentication Database Documentation",href:"https://docs.mongodb.com/manual/reference/connection-string/#mongodb-urioption-urioption.authSource"}),r().createElement(i.ksK,{className:se,onChange:({target:{value:e}})=>{n(""!==e?{type:"update-search-param",currentKey:"authSource",value:e}:{type:"delete-search-param",key:"authSource"})},id:"authSourceInput","aria-labelledby":"authSourceLabel",value:t.searchParams.get("authSource")??"",optional:!0})),r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:"authentication-mechanism-radio-box-group"},"Authentication Mechanism"),r().createElement(i.E99,{onChange:d,id:"authentication-mechanism-radio-box-group",value:c.value},le.map((({title:e,value:t})=>r().createElement(i.VCA,{id:`${t}-tab-button`,"data-testid":`${t}-tab-button`,checked:c.value===t,value:t,key:t},e))))))}},{title:"OIDC",id:"MONGODB-OIDC",component:function({connectionStringUrl:e,updateConnectionFormField:t,errors:n,connectionOptions:a,openSettingsModal:s}){const l=re(e),c=T(n,"username"),d=(0,o.useCallback)(((e,n)=>t({type:"update-oidc-param",key:e,value:n})),[t]),u=!!a.oidc?.allowedFlows?.includes?.("device-auth"),m=!!ue("showOIDCDeviceAuthFlow"),p=(0,o.useCallback)((()=>s?.("proxy")),[s]),h=ue("showProxySettings")&&s;return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.ksK,{"data-testid":"connection-oidc-username-input",onChange:({target:{value:e}})=>t({type:"update-username",username:e}),label:"Username",optional:!0,value:l||"",errorMessage:c,state:c?"error":void 0})),r().createElement(i.GEW,null,r().createElement(i.nD3,{text:"OIDC Options","data-testid":"oidc-advanced-options"},r().createElement(i.GEW,null,r().createElement(i.ksK,{"data-testid":"connection-oidc-auth-code-flow-redirect-uri-input",onChange:({target:{value:e}})=>{d("redirectURI",e)},optional:!0,label:"Auth Code Flow Redirect URI",value:a?.oidc?.redirectURI||"",description:"This value needs to match the configuration of the Identity Provider used by the server."})),r().createElement(i.GEW,null,r().createElement(i.Sc0,{onChange:({target:{checked:e}})=>d("enableUntrustedEndpoints",!!e||void 0),"data-testid":"oidc-allow-untrusted-endpoint-input",id:"oidc-allow-untrusted-endpoint-input",label:r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:"oidc-allow-untrusted-endpoint-input"},"Consider Target Endpoint Trusted"),r().createElement(i.VYo,null,"Allow connecting when the target endpoint is not in the list of endpoints that are considered trusted by default. Only use this option when connecting to servers that you trust.")),checked:!!a.oidc?.enableUntrustedEndpoints})),r().createElement(i.GEW,null,r().createElement(i.Sc0,{onChange:({target:{checked:e}})=>d("passIdTokenAsAccessToken",!!e||void 0),"data-testid":"oidc-pass-id-token-as-access-token",id:"oidc-pass-id-token-as-access-token",label:r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:"oidc-pass-id-token-as-access-token"},"Use ID token instead of Access Token"),r().createElement(i.VYo,null,"Use ID tokens instead of access tokens to work around misconfigured or broken identity providers. This will only work if the server is configured correspondingly.")),checked:!!a.oidc?.passIdTokenAsAccessToken})),r().createElement(i.GEW,null,r().createElement(i.Sc0,{onChange:({target:{checked:e}})=>d("skipNonceInAuthCodeRequest",!e||void 0),"data-testid":"oidc-send-nonce-in-auth-code-request",id:"oidc-send-nonce-in-auth-code-request",label:r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:"oidc-send-nonce-in-auth-code-request"},"Send a nonce in the Auth Code Request"),r().createElement(i.VYo,null,"Include a random nonce as part of the auth code request to prevent replay attacks. This should only be disabled in cases where the OIDC provider doesn't support it as the nonce is an important security component.")),checked:!a.oidc?.skipNonceInAuthCodeRequest})),h&&r().createElement(i.GEW,null,r().createElement(i.Sc0,{onChange:({target:{checked:e}})=>d("shareProxyWithConnection",!e),"data-testid":"oidc-use-application-level-proxy",id:"oidc-use-application-level-proxy",label:r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:"oidc-use-application-level-proxy"},"Use Application-Level Proxy Settings"),r().createElement(i.VYo,null,"Use the"," ",r().createElement(i.N_E,{onClick:p},"application-level proxy settings")," ","for communicating with the identity provider. If not chosen, the same proxy (if any) is used for connecting to both the cluster and the identity provider.")),checked:!a.oidc?.shareProxyWithConnection})),m&&r().createElement(i.GEW,null,r().createElement(i.Sc0,{onChange:({target:{checked:e}})=>{if(e)return d("allowedFlows",["auth-code","device-auth"]);const t=a.oidc?.allowedFlows?.filter?.((e=>"device-auth"!==e));d("allowedFlows",t.length>0?t:void 0)},"data-testid":"oidc-enable-device-auth-flow-input",id:"oidc-enable-device-auth-flow-input",label:r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:"oidc-enable-device-auth-flow-input"},"Enable Device Authentication Flow"),r().createElement(i.VYo,null,"Less secure authentication flow that can be used as a fallback when browser-based authentication is unavailable.")),checked:u})))))}},{title:"X.509",id:"MONGODB-X509",component:function(){return r().createElement(r().Fragment,null,r().createElement(i.lZ$,{variant:i.uAY.Info},"X.509 Authentication type requires a ",r().createElement("strong",null,"Client Certificate")," ","to work. Make sure to enable TLS and add one in the"," ",r().createElement("strong",null,"TLS/SSL")," tab."))}},{title:"Kerberos",id:"GSSAPI",component:function({errors:e,connectionStringUrl:t,updateConnectionFormField:n}){const a=T(e,"kerberosPrincipal"),s=re(t),l=ie(t),c=ae(t),d=c.get("SERVICE_NAME"),u=c.get("SERVICE_REALM"),m=c.get("CANONICALIZE_HOST_NAME")||"none",[p,h]=(0,o.useState)((()=>l.length>0));(0,i.wTI)((()=>{!p&&l.length>0&&h(!0)}),[p,l]);const g=!!ue("showKerberosPasswordField");return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.ksK,{onChange:({target:{value:e}})=>{n({type:"update-username",username:e})},"data-testid":"gssapi-principal-input",label:"Principal",errorMessage:a,state:a?"error":void 0,value:s||""})),r().createElement(i.GEW,null,r().createElement(i.ksK,{"data-testid":"gssapi-service-name-input",onChange:({target:{value:e}})=>{n({type:"update-auth-mechanism-property",key:"SERVICE_NAME",value:e})},optional:!0,label:"Service Name",value:d||""})),r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:"canonicalize-hostname-select"},"Canonicalize Host Name"),r().createElement(i.E99,{name:"canonicalize-hostname",id:"canonicalize-hostname-select",onChange:({target:{value:e}})=>{n({type:"update-auth-mechanism-property",key:"CANONICALIZE_HOST_NAME",value:"none"===e?"":e})},value:m,size:"compact"},Object.entries(me).map((([e,{label:t,value:n}])=>r().createElement(i.VCA,{id:`gssapi-canonicalize-host-name-${e}`,"data-testid":`gssapi-canonicalize-host-name-${e}`,key:n,value:n},t))))),r().createElement(i.GEW,null,r().createElement(i.ksK,{onChange:({target:{value:e}})=>{n({type:"update-auth-mechanism-property",key:"SERVICE_REALM",value:e})},"data-testid":"gssapi-service-realm-input",label:"Service Realm",value:u||"",optional:!0})),g&&r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.Sc0,{"data-testid":"gssapi-password-checkbox",checked:p,label:"Provide password directly",onChange:({target:{checked:e}})=>{e||n({type:"update-password",password:""}),h(e)}})),p&&r().createElement(i.GEW,null,r().createElement(i.ksK,{onChange:({target:{value:e}})=>{n({type:"update-password",password:e})},"data-testid":"gssapi-password-input",label:"Password",value:l,type:"password",optional:!0}))))}},{title:"LDAP",id:"PLAIN",component:function({connectionStringUrl:e,updateConnectionFormField:t,errors:n}){const a=re(e),o=ie(e),s=T(n,"username"),l=T(n,"password");return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.ksK,{"data-testid":"connection-plain-username-input",onChange:({target:{value:e}})=>{t({type:"update-username",username:e})},label:"Username",value:a||"",errorMessage:s,state:s?"error":void 0})),r().createElement(i.GEW,null,r().createElement(i.ksK,{"data-testid":"connection-plain-password-input",onChange:({target:{value:e}})=>{t({type:"update-password",password:e})},label:"Password",type:"password",value:o||"",errorMessage:l,state:l?"error":void 0})))}},{title:"AWS IAM",id:"MONGODB-AWS",component:function({connectionStringUrl:e,updateConnectionFormField:t}){const n=re(e),a=ie(e),o=ae(e).get("AWS_SESSION_TOKEN");return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.ksK,{"data-testid":"connection-form-aws-access-key-id-input",onChange:({target:{value:e}})=>{t({type:"update-username",username:e})},label:"AWS Access Key Id",value:n||""})),r().createElement(i.GEW,null,r().createElement(i.ksK,{"data-testid":"connection-form-aws-secret-access-key-input",onChange:({target:{value:e}})=>{t({type:"update-password",password:e})},label:"AWS Secret Access Key",type:"password",value:a||"",optional:!0})),r().createElement(i.GEW,null,r().createElement(i.ksK,{"data-testid":"connection-form-aws-secret-token-input",onChange:({target:{value:e}})=>{t({type:"update-auth-mechanism-property",key:"AWS_SESSION_TOKEN",value:e})},label:"AWS Session Token",value:o||"",optional:!0,type:"password"})))}}],he=(0,i.AHW)({display:"contents"}),ge=function({errors:e,updateConnectionFormField:t,connectionStringUrl:n,connectionOptions:a,openSettingsModal:s}){const l=!!ue("enableOidc"),c=ue("showOIDCAuth"),d=ue("showKerberosAuth"),u=(0,o.useMemo)((()=>pe.filter((e=>"MONGODB-OIDC"===e.id?l&&c:"GSSAPI"!==e.id||d))),[l,d,c]),m=function(e){const t=(e.searchParams.get("authMechanism")||"").toUpperCase(),n=pe.find((({id:e})=>e===t));return n?n.id:"DEFAULT"}(n),p=u.find((({id:e})=>e===m))||u[0],h=(0,o.useCallback)((e=>(e.preventDefault(),t({type:"update-auth-mechanism",authMechanism:"DEFAULT"===e.target.value?null:e.target.value}))),[t]),g=p.component;return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:"authentication-method-radio-box-group"},"Authentication Method"),r().createElement(i.E99,{id:"authentication-method-radio-box-group","data-testid":"authentication-method-radio-box-group",onChange:h,value:p.id,size:"compact"},u.map((({title:e,id:t})=>r().createElement(i.VCA,{id:`connection-authentication-method-${t}-button`,"data-testid":`connection-authentication-method-${t}-button`,checked:p.id===t,value:t,key:t},e))))),r().createElement("div",{className:he,"data-testid":`${p.id}-tab-content`},r().createElement(g,{errors:e,connectionStringUrl:n,updateConnectionFormField:t,connectionOptions:a,openSettingsModal:s})))};function fe({openSettingsModal:e}){const t=(0,o.useCallback)((()=>{e?.("proxy")}),[e]);return e?r().createElement(i.nBu,null,"Use the"," ",r().createElement(i.N_E,{onClick:t},"application-level proxy settings")," ","for communicating with the cluster."):r().createElement(r().Fragment,null)}const ye=[{title:"None",id:"none",type:"none",component:function(){return r().createElement(r().Fragment,null)}},{title:"SSH with Password",id:"password",type:"ssh-password",component:function({sshTunnelOptions:e,updateConnectionFormField:t,errors:n}){const a=(0,o.useCallback)(((e,n)=>t({type:"update-ssh-options",key:e,value:n})),[t]),s=[{name:"host",label:"SSH Hostname",type:"text",optional:!1,value:e?.host,errorMessage:T(n,"sshHostname"),state:L(n,"sshHostname")?"error":"none"},{name:"port",label:"SSH Port",type:"number",optional:!1,value:e?.port?.toString(),errorMessage:void 0,state:"none"},{name:"username",label:"SSH Username",type:"text",optional:!1,value:e?.username,errorMessage:T(n,"sshUsername"),state:L(n,"sshUsername")?"error":"none"},{name:"password",label:"SSH Password",type:"password",optional:!0,value:e?.password,errorMessage:T(n,"sshPassword"),state:L(n,"sshPassword")?"error":"none"}];return r().createElement(r().Fragment,null,s.map((({name:e,label:t,type:n,optional:o,value:s,errorMessage:l,state:c})=>r().createElement(i.GEW,{key:e},r().createElement(i.ksK,{onChange:({target:{value:t}})=>{a(e,t)},name:e,"data-testid":e,label:t,type:n,optional:o,value:s||"",errorMessage:l,state:c,spellCheck:!1})))))}},{title:"SSH with Identity File",id:"identity",type:"ssh-identity",component:function({sshTunnelOptions:e,updateConnectionFormField:t,errors:n}){const a=(0,o.useCallback)(((e,n)=>t({type:"update-ssh-options",key:e,value:n})),[t]),s=[{name:"host",label:"SSH Hostname",type:"text",optional:!1,value:e?.host,errorMessage:T(n,"sshHostname"),state:L(n,"sshHostname")?"error":"none"},{name:"port",label:"SSH Port",type:"number",optional:!1,value:e?.port?.toString(),errorMessage:"",state:"none"},{name:"username",label:"SSH Username",type:"text",optional:!1,value:e?.username,errorMessage:T(n,"sshUsername"),state:L(n,"sshUsername")?"error":"none"},{name:"identityKeyFile",label:"SSH Identity File",type:"file",errorMessage:T(n,"sshIdentityKeyFile"),state:L(n,"sshIdentityKeyFile")?"error":"none",value:e?.identityKeyFile&&e.identityKeyFile?[e.identityKeyFile]:void 0},{name:"identityKeyPassphrase",label:"SSH Passphrase",type:"password",optional:!0,value:e?.identityKeyPassphrase,errorMessage:void 0,state:"none"}];return r().createElement(r().Fragment,null,s.map((e=>{const{name:t,label:n,optional:o,value:s,errorMessage:l,state:c}=e;switch(e.type){case"file":return r().createElement(i.GEW,{key:t},r().createElement(i.h8q,{id:t,dataTestId:t,onChange:e=>{a(t,e[0])},mode:"open",label:n,error:Boolean(l),errorMessage:l,values:s}));case"text":case"password":case"number":return r().createElement(i.GEW,{key:t},r().createElement(i.ksK,{onChange:({target:{value:e}})=>{a(t,e)},name:t,"data-testid":t,label:n,type:e.type,optional:o,value:s,errorMessage:l,state:c,spellCheck:!1}))}})))}},{title:"Socks5",id:"socks",type:"socks",component:function({updateConnectionFormField:e,errors:t,connectionStringUrl:n}){const a=n.typedSearchParams(),s=(0,o.useCallback)(((t,n)=>e(n?{type:"update-search-param",currentKey:t,value:n}:{type:"delete-search-param",key:t})),[e]),l=[{name:"proxyHost",label:"Proxy Hostname",type:"text",optional:!1,value:a.get("proxyHost")??"",errorMessage:T(t,"proxyHostname"),state:L(t,"proxyHostname")?"error":"none"},{name:"proxyPort",label:"Proxy Tunnel Port",type:"number",optional:!0,value:a.get("proxyPort")??"",state:"none"},{name:"proxyUsername",label:"Proxy Username",type:"text",optional:!0,value:a.get("proxyUsername")??"",state:"none"},{name:"proxyPassword",label:"Proxy Password",type:"password",optional:!0,value:a.get("proxyPassword")??"",state:"none"}];return r().createElement(r().Fragment,null,l.map((({name:e,label:t,type:n,optional:a,value:o,errorMessage:l,state:c})=>r().createElement(i.GEW,{key:e},r().createElement(i.ksK,{onChange:({target:{value:t}})=>{s(e,t)},name:e,"data-testid":e,label:t,type:n,optional:a,value:o,errorMessage:l,state:c,spellCheck:!1})))))}}],be=(0,i.AHW)({display:"contents"}),ve=function({connectionOptions:e,updateConnectionFormField:t,errors:n,connectionStringUrl:a,openSettingsModal:s}){const l=((e,t)=>{const n=e.typedSearchParams();return n.get("proxyHost")||n.get("proxyPort")||n.get("proxyUsername")||n.get("proxyPassword")?"socks":t?.useApplicationLevelProxy?"app-proxy":t&&t?.sshTunnel&&Object.values(t.sshTunnel).find(Boolean)?t.sshTunnel.identityKeyFile||t.sshTunnel.identityKeyPassphrase?"ssh-identity":"ssh-password":"none"})(a,e),c=ue("showProxySettings"),d=(0,o.useMemo)((()=>c?[...ye,{title:"Application-level Proxy",id:"app-proxy",type:"app-proxy",component:fe}]:[...ye]),[c]),u=d.findIndex((e=>e.type===l))??0,[m,p]=(0,o.useState)(d[u]),h=(0,o.useCallback)(((e,n)=>{let a;switch(n){case"socks":a="remove-ssh-options-and-app-proxy";break;case"ssh-identity":case"ssh-password":a="remove-proxy-options-and-app-proxy";break;case"app-proxy":a="remove-proxy-options-and-set-app-proxy";break;default:a="socks"===e?"remove-proxy-options-and-app-proxy":"app-proxy"===e?"remove-app-proxy":"remove-ssh-options-and-app-proxy"}t({type:a})}),[t]),g=(0,o.useCallback)((e=>{e.preventDefault();const t=d.find((({id:t})=>t===e.target.value));t&&(h(m.type,t.type),p(t))}),[h,d,m.type]),f=m.component;return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:"ssh-options-radio-box-group"},"SSH Tunnel/Proxy Method"),r().createElement(i.E99,{id:"ssh-options-radio-box-group",onChange:g,size:"compact",className:"radio-box-group-style"},d.map((({title:e,id:t,type:n})=>r().createElement(i.VCA,{id:`${n}-tab-button`,"data-testid":`${n}-tab-button`,checked:m.id===t,value:t,key:t},e))))),e&&r().createElement("div",{className:be,"data-testid":`${m.type}-tab-content`},r().createElement(f,{errors:n,sshTunnelOptions:e.sshTunnel,updateConnectionFormField:t,connectionStringUrl:a,openSettingsModal:s})))},Ce=function({tlsCertificateKeyFile:e,tlsCertificateKeyFilePassword:t,disabled:n,displayDatabaseConnectionUserHints:a=!0,optional:o=!0,updateTLSClientCertificate:s,updateTLSClientCertificatePassword:l}){return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.h8q,{description:a?"Learn More":void 0,disabled:n,id:"tlsCertificateKeyFile",label:"Client Certificate and Key (.pem)",dataTestId:"tlsCertificateKeyFile-input",link:a?"https://docs.mongodb.com/manual/reference/connection-string/#mongodb-urioption-urioption.tlsCertificateKeyFile":void 0,values:e?[e]:[],onChange:e=>{s(e&&e.length>0?e[0]:null)},showFileOnNewLine:!0,mode:"open",optional:o,optionalMessage:o&&a?"Optional (required with X.509 auth)":void 0})),r().createElement(i.GEW,null,r().createElement(i.ksK,{onChange:({target:{value:e}})=>{l(e)},disabled:n,"data-testid":"tlsCertificateKeyFilePassword-input",id:"tlsCertificateKeyFilePassword",label:"Client Key Password",type:"password",value:t||"",optional:!0})))},Ee=function({tlsCAFile:e,disabled:t,displayDatabaseConnectionUserHints:n=!0,handleTlsOptionChanged:a}){return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.h8q,{description:n?"Learn More":void 0,disabled:t,id:"tlsCAFile",dataTestId:"tlsCAFile-input",label:"Certificate Authority (.pem)",link:n?"https://docs.mongodb.com/manual/reference/connection-string/#mongodb-urioption-urioption.tlsCAFile":void 0,mode:"open",onChange:e=>{a("tlsCAFile",e?.[0]??null)},showFileOnNewLine:!0,values:e?[e]:void 0,optional:!0})))},Se=(0,i.AHW)({marginTop:i.YKD[100]}),ke=(0,i.AHW)({color:i.MFm.gray.light1}),we=[{value:"DEFAULT",label:"Default"},{value:"ON",label:"On"},{value:"OFF",label:"Off"}],xe=function({connectionStringUrl:e,updateConnectionFormField:t}){const n=function(e){const t=e.typedSearchParams();return null===t.get("ssl")&&null===t.get("tls")?"DEFAULT":"true"!==t.get("tls")||null!==t.get("ssl")&&"true"!==t.get("ssl")?"false"!==t.get("tls")||null!==t.get("ssl")&&"false"!==t.get("ssl")?"true"===t.get("ssl")&&null===t.get("tls")?"ON":"false"===t.get("ssl")&&null===t.get("tls")?"OFF":void 0:"OFF":"ON"}(e),a=(0,o.useCallback)((e=>{t({type:"update-tls",tlsOption:e.target.value})}),[t]),s=e.typedSearchParams(),l=[{name:"tlsInsecure",description:"This includes tlsAllowInvalidHostnames and tlsAllowInvalidCertificates.",checked:"true"===s.get("tlsInsecure")},{name:"tlsAllowInvalidHostnames",description:"Disable the validation of the hostnames in the certificate presented by the mongod/mongos instance.",checked:"true"===s.get("tlsAllowInvalidHostnames")},{name:"tlsAllowInvalidCertificates",description:"Disable the validation of the server certificates.",checked:"true"===s.get("tlsAllowInvalidCertificates")}],c="OFF"===n,d=(0,o.useCallback)(((e,n)=>t({type:"update-tls-option",key:e,value:n})),[t]);return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:"tls-radio-box-group"},"SSL/TLS Connection"),r().createElement(i.CAb,{href:"https://docs.mongodb.com/manual/reference/connection-string/#tls-options","aria-label":"TLS/SSL Option Documentation"}),r().createElement(i.E99,{id:"tls-radio-box-group",value:n||"",onChange:a},we.map((e=>r().createElement(i.VCA,{id:`connection-tls-enabled-${e.value}-radio-button`,"data-testid":`connection-tls-enabled-${e.value}-radio-button`,value:e.value,key:e.value},e.label))))),r().createElement(Ee,{tlsCAFile:s.get("tlsCAFile"),disabled:c,handleTlsOptionChanged:d}),r().createElement(Ce,{tlsCertificateKeyFile:s.get("tlsCertificateKeyFile"),tlsCertificateKeyFilePassword:s.get("tlsCertificateKeyFilePassword"),disabled:c,updateTLSClientCertificate:e=>{d("tlsCertificateKeyFile",e)},updateTLSClientCertificatePassword:e=>{d("tlsCertificateKeyFilePassword",e)}}),l.map((e=>r().createElement(i.GEW,{key:e.name},r().createElement(i.Sc0,{onChange:t=>{d(e.name,t.target.checked?"true":null)},"data-testid":`${e.name}-input`,id:`${e.name}-input`,label:r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:`${e.name}-input`},e.name),r().createElement(i.VYo,{className:(0,i.cx)(Se,{[ke]:c})},e.description)),disabled:c,checked:e.checked})))))},Ae=(0,i.AHW)({marginLeft:i.YKD[200],display:"block"}),De=function({autoEncryptionOptions:e,errors:t,kmsProviders:n,fields:a}){const o=n.some((t=>a.some((({value:n})=>n(e,t))))),s=n.some((t=>a.some((({value:n,optional:a})=>!a&&!n(e,t)))));return n.some((()=>a.some((({state:e})=>"error"===("string"==typeof e?e:e(t))))))?r().createElement("span",{title:"Error"},r().createElement(i.Int,{glyph:"XWithCircle",className:Ae,style:{color:i.MFm.red.base}})):o&&s?r().createElement("span",{title:"Incomplete configuration"},r().createElement(i.Int,{glyph:"QuestionMarkWithCircle",className:Ae})):o?r().createElement("span",{title:"Fully configured"},r().createElement(i.Int,{glyph:"CheckmarkWithCircle",className:Ae,style:{color:i.MFm.green.dark1}})):r().createElement(r().Fragment,null)},Ie=function({updateConnectionFormField:e,autoEncryptionOptions:t,kmsProviderName:n,clientCertIsOptional:a}){const i=t.tlsOptions?.[n]??{},s=(0,o.useCallback)(((t,a)=>e({type:"update-csfle-kms-tls-param",kmsProviderName:n,key:t,value:a})),[e,n]);return r().createElement(r().Fragment,null,r().createElement(Ee,{tlsCAFile:i.tlsCAFile,disabled:!1,handleTlsOptionChanged:(e,t)=>s(e,t??void 0),displayDatabaseConnectionUserHints:!1}),r().createElement(Ce,{tlsCertificateKeyFile:i.tlsCertificateKeyFile,tlsCertificateKeyFilePassword:i.tlsCertificateKeyFilePassword,disabled:!1,updateTLSClientCertificate:e=>{s("tlsCertificateKeyFile",e??void 0)},updateTLSClientCertificatePassword:e=>{s("tlsCertificateKeyFilePassword",e??void 0)},displayDatabaseConnectionUserHints:!1,optional:a??!0}))},Me=(0,i.AHW)({marginTop:i.YKD[400]}),Te=function({kmsProviderName:e,connectionOptions:t,handleFieldChanged:n}){const a=(0,o.useMemo)((()=>{const n=t.fleOptions?.autoEncryption??{};return n.kmsProviders?.[e]}),[t.fleOptions?.autoEncryption,e]),[s,l]=(0,o.useState)("");return r().createElement("div",null,r().createElement(i.GEW,null,r().createElement(i.$nd,{"data-testid":"generate-local-key-button",variant:i.AkO.Default,disabled:Number(a?.key?.length||0)>0,onClick:function(){const e=crypto.getRandomValues(S.alloc(96)).toString("base64");l(e),n("key",e)}},"Generate Random Key"),s===a?.key&&r().createElement(r().Fragment,null,r().createElement("div",{className:Me},r().createElement(i.lZ$,{variant:i.uAY.Info},"This key will be used to encrypt data stored in the database. Without it, encrypted data cannot be accessed.")),!t?.fleOptions?.storeCredentials&&r().createElement("div",{className:Me},r().createElement(i.lZ$,{variant:i.uAY.Warning},"Compass does not save KMS credentials by default. Copy and save the key in an external location.")))))},Le=function({updateConnectionFormField:e,connectionOptions:t,errors:n,kmsProviderType:a,kmsProviderName:s,fields:l,clientCertIsOptional:c,noTLS:d}){const u=t.fleOptions?.autoEncryption??{},m=(0,o.useCallback)(((t,n)=>e({type:"update-csfle-kms-param",kmsProviderName:s,key:t,value:n})),[e,s]);return r().createElement(r().Fragment,null,l.map((({name:e,label:t,type:o,optional:l,value:c,errorMessage:d,state:p,description:h})=>{const g="textarea"===o?i.fs1:i.ksK;return r().createElement(i.GEW,{key:e},r().createElement(g,{onChange:({target:{value:t}})=>{m(e,t)},name:e,"data-testid":`csfle-kms-${a}-${e}`,label:t,type:"textarea"===o?void 0:o,optional:"textarea"===o?void 0:l,value:c(u,s),errorMessage:d?.(n,s),state:"string"==typeof p?p:p(n),spellCheck:!1,description:h}))})),!d&&r().createElement(Ie,{kmsProviderName:s,autoEncryptionOptions:u,updateConnectionFormField:e,clientCertIsOptional:c}),"local"===a&&r().createElement(Te,{kmsProviderName:s,connectionOptions:t,handleFieldChanged:m}))},Oe=(0,i.AHW)({marginTop:i.YKD[200],marginBottom:i.YKD[200]}),Ne=(0,i.AHW)({display:"flex",alignItems:"center",gap:i.YKD[100]}),_e=(0,i.AHW)({marginTop:i.YKD[100],marginBottom:i.YKD[100]}),Fe=(0,i.AHW)({marginLeft:"auto"});function Pe({kmsProviderName:e,kmsProviderType:t,validateName:n,onRename:a}){const[s,l]=(0,o.useState)(!1),[c,d]=(0,o.useState)(),[u,m]=(0,o.useState)((()=>e.replace(new RegExp(`^${t}:?`),""))),p=(0,o.useCallback)((()=>{l(!0)}),[]),h=(0,o.useCallback)((e=>{m(e),d(n(e))}),[d,n]),g=(0,o.useCallback)((()=>{c||(l(!1),a(""===u?t:`${t}:${u}`))}),[t,u,a,c]);return s?r().createElement("div",null,r().createElement(i.JU7,{htmlFor:e},"KMS Name"),r().createElement("div",{className:Ne},r().createElement(i.nBu,null,t,":"),r().createElement(i.ksK,{spellCheck:!1,onChange:({target:{value:e}})=>{h(e)},id:e,onBlur:g,"data-testid":"csfle-kms-card-name","aria-label":"KMS Name",type:"text",state:c?"error":"none",errorMessage:c,value:u,onKeyPress:e=>{"Enter"===e.key&&(e.preventDefault(),g())}}))):r().createElement("div",null,r().createElement(i.JU7,{htmlFor:"kms-name"},"KMS Name"),r().createElement("div",{className:(0,i.cx)(Ne,_e)},r().createElement(i.nBu,null,e),r().createElement(i.K0,{"data-testid":"csfle-edit-kms-name","aria-label":"Edit KMS provider name",onClick:p},r().createElement(i.Int,{glyph:"Edit"}))))}const We=function({kmsProviderName:e,kmsProviderNames:t,updateConnectionFormField:n,connectionOptions:s,errors:l,kmsProviderType:c,fields:d,clientCertIsOptional:u,noTLS:m,index:p}){const[h,g]=(0,i.v69)(),f=(0,o.useCallback)((t=>n({type:"rename-csfle-kms-provider",name:e,newName:t})),[e,n]),y=(0,o.useCallback)((()=>n({type:"remove-csfle-kms-provider",name:e})),[n,e]),b=(0,o.useCallback)((n=>{const a=t.filter((t=>t!==e)),o=""===n?c:`${c}:${n}`;if(""===n&&a.some((e=>e===o)))return"Name cannot be empty";if(a.includes(o))return"Name already exists";const r=new RegExp(`^${c}(:[a-zA-Z0-9_]+)?$`);return o.match(r)?void 0:"Name must be alphanumeric and may contain underscores"}),[t,e,c]);return r().createElement(i.ZpM,(0,a.A)({"data-card-index":p,"data-testid":`${e}-kms-card-item`,className:Oe},h),r().createElement("div",{"data-testid":"kms-card-header",className:Ne},r().createElement(Pe,{kmsProviderName:e,kmsProviderType:c,onRename:f,validateName:b}),t.length>1&&g&&r().createElement(i.K0,{"aria-label":"Remove KMS provider",className:Fe,onClick:y},r().createElement(i.Int,{glyph:"Trash"}))),r().createElement(Le,{key:e,errors:l,connectionOptions:s,updateConnectionFormField:n,kmsProviderType:c,kmsProviderName:e,fields:d,clientCertIsOptional:u,noTLS:m}))},Re=(0,i.AHW)({display:"flex",alignItems:"center"}),Ue=(0,i.AHW)({marginLeft:"auto"});function $e(e,t=[]){if(0===t.length)return e;const n=t.map((t=>t.replace(new RegExp(`^${e}:?`),""))).map((e=>parseInt(e,10))).filter((e=>!isNaN(e))),a=Math.max(0,...n)+1;return`${e}:${a}`}const Ve=function({updateConnectionFormField:e,connectionOptions:t,kmsProviderType:n,kmsProviderNames:s,...l}){const c=(0,o.useCallback)((t=>e({type:"add-new-csfle-kms-provider",name:t})),[e]);return r().createElement(r().Fragment,null,s.map(((o,i)=>r().createElement(We,(0,a.A)({key:i,index:i,connectionOptions:t,updateConnectionFormField:e,kmsProviderType:n,kmsProviderName:o,kmsProviderNames:s},l)))),r().createElement("div",{className:Re},r().createElement(i.$nd,{"data-testid":"csfle-add-new-kms-provider-button",className:Ue,variant:"primaryOutline",onClick:()=>{c($e(n,s))}},r().createElement(i.Int,{size:"xsmall",glyph:"Plus"}),"Add item")))};var He=n(80223);const Ke=(0,i.AHW)({padding:i.YKD[400],width:"100%"}),je={"$compass.rawText":"{\n/**\n * // Client-side encrypted fields map configuration:\n * 'database.collection': {\n * fields: [\n * {\n * keyId: UUID(\"...\"),\n * path: '...',\n * bsonType: '...',\n * queries: [{ queryType: 'equality' }]\n * }\n * ]\n * }\n */\n}\n"},Be="encrypted-fields-map-editor-id",ze=function({encryptedFieldsMap:e,errorMessage:t,label:n,description:a,onChange:s}){const[l,c]=(0,o.useState)((()=>function(e){if(!e)return"";if(e["$compass.rawText"])return e["$compass.rawText"];const t=Object.fromEntries(Object.entries(e).filter((([e])=>!e.startsWith("$compass."))));return(0,C.AO)(t)||""}(e??je)));return r().createElement("div",{"data-testid":"connection-csfle-encrypted-fields-map"},r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:Be},n),r().createElement(i.VYo,null,a),r().createElement(He.Jn,{"data-testid":"encrypted-fields-map-editor",id:Be,text:l,onChangeText:e=>{c(e),s(A(e))}})),t&&r().createElement("div",{className:Ke},r().createElement(i.lZ$,{variant:"danger"},t)))},Ye={},qe={local:[{name:"key",label:"Key",type:"text",optional:!1,value:(e,t)=>e?.kmsProviders?.[t]?.key?.toString("base64")??"",errorMessage:(e,t)=>T(e,`${t}.key`),state:e=>L(e,"local.key")?"error":"none",description:"A 96-byte long base64-encoded string. Locally managed keys do not require additional setup, but are not recommended for production applications."}],azure:[{name:"tenantId",label:"Tenant ID",type:"text",optional:!1,value:(e,t)=>(e?.kmsProviders?.[t]??Ye)?.tenantId??"",state:"none",description:"The tenant ID identifies the organization for the account."},{name:"clientId",label:"Client ID",type:"text",optional:!1,value:(e,t)=>(e?.kmsProviders?.[t]??Ye)?.clientId??"",state:"none",description:"The client ID to authenticate a registered application."},{name:"clientSecret",label:"Client Secret",type:"password",optional:!1,value:(e,t)=>(e?.kmsProviders?.[t]??Ye)?.clientSecret??"",state:"none",description:"The client secret to authenticate a registered application."},{name:"identityPlatformEndpoint",label:"Identity Platform Endpoint",type:"text",optional:!0,value:(e,t)=>(e?.kmsProviders?.[t]??Ye)?.identityPlatformEndpoint??"",state:"none",description:"A host with an optional port."}],gcp:[{name:"email",label:"Service Account E-Mail",type:"text",optional:!1,value:(e,t)=>(e?.kmsProviders?.[t]??Ye)?.email??"",state:"none",description:"The service account email to authenticate."},{name:"privateKey",label:"Private Key",type:"textarea",optional:!1,value:(e,t)=>(e?.kmsProviders?.[t]??Ye)?.privateKey?.toString("base64")??"",state:"none",description:"A base64-encoded PKCS#8 private key."},{name:"endpoint",label:"Endpoint",type:"text",optional:!0,value:(e,t)=>(e?.kmsProviders?.[t]??Ye)?.endpoint??"",state:"none",description:"A host with an optional port."}],aws:[{name:"accessKeyId",label:"Access Key ID",type:"text",optional:!1,value:(e,t)=>e?.kmsProviders?.[t]?.accessKeyId??"",state:"none",description:"The access key used for the AWS KMS provider."},{name:"secretAccessKey",label:"Secret Access Key",type:"password",optional:!1,value:(e,t)=>e?.kmsProviders?.[t]?.secretAccessKey??"",state:"none",description:"The secret access key used for the AWS KMS provider."},{name:"sessionToken",label:"Session Token",type:"password",optional:!0,value:(e,t)=>e?.kmsProviders?.[t]?.sessionToken??"",state:"none",description:"An optional AWS session token that will be used as the X-Amz-Security-Token header for AWS requests."}],kmip:[{name:"endpoint",label:"Endpoint",type:"text",optional:!1,value:(e,t)=>e?.kmsProviders?.[t]?.endpoint??"",errorMessage:e=>T(e,"kmip.endpoint"),state:e=>L(e,"kmip.endpoint")?"error":"none",description:"The endpoint consists of a hostname and port separated by a colon."}]},Ge=(0,i.AHW)({paddingLeft:i.YKD[400],marginBottom:i.YKD[400]}),Ze=[{title:"Local KMS",kmsProviderType:"local",noTLS:!0},{title:"AWS",kmsProviderType:"aws"},{title:"GCP",kmsProviderType:"gcp"},{title:"Azure",kmsProviderType:"azure"},{title:"KMIP",kmsProviderType:"kmip",clientCertIsOptional:!1}],Je=(0,i.AHW)({marginTop:i.YKD[400]}),Qe=(0,i.AHW)({display:"flex",alignItems:"center",gap:i.YKD[50]}),Xe=function({connectionOptions:e,updateConnectionFormField:t,errors:n}){const s=e.fleOptions?.autoEncryption??{},l=ue("enableDebugUseCsfleSchemaMap"),c=M(n,"csfle"),d=(0,o.useCallback)(((e,n)=>t({type:"update-csfle-param",key:e,value:n})),[t]),u=(0,o.useCallback)((e=>t({type:"update-csfle-store-credentials",value:e})),[t]),m=(0,o.useCallback)(((n,a)=>{const o=Object.keys(e.fleOptions?.autoEncryption?.kmsProviders??{}).some((e=>e.startsWith(n)));if(a&&!o)return t({type:"add-new-csfle-kms-provider",name:$e(n)})}),[t,e.fleOptions?.autoEncryption?.kmsProviders]),p=(0,o.useMemo)((()=>Object.keys(e.fleOptions?.autoEncryption?.kmsProviders??{}).reduce(((e,t)=>{const n=t.split(":")[0];return e[n]||(e[n]=[]),e[n].push(t),e}),{})),[e.fleOptions?.autoEncryption?.kmsProviders]);return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.lZ$,null,"In-Use Encryption is an Enterprise/Atlas-only feature of MongoDB. ",r().createElement(i.N_E,{href:"https://dochub.mongodb.org/core/rqe-encrypted-fields"},"Learn More"))),r().createElement(i.GEW,null,r().createElement(i.ksK,{onChange:({target:{value:e}})=>{d("keyVaultNamespace",e)},name:"csfle-keyvault","data-testid":"csfle-keyvault",label:"Key Vault Namespace",type:"text",optional:!1,value:s.keyVaultNamespace||"",errorMessage:T(c,"keyVaultNamespace"),state:L(c,"keyVaultNamespace")?"error":"none",spellCheck:!1,description:"Specify a collection in which data encryption keys are stored in the format <db>.<collection>."})),r().createElement(i.GEW,null,r().createElement(i.nBu,{weight:"medium"},"KMS Providers"),r().createElement(i.VYo,null,"Specify one or more Key Management Systems to use.")),r().createElement(i.GEW,null,r().createElement(i.Sc0,{onChange:e=>{u(e.target.checked)},"data-testid":"csfle-store-credentials-input",id:"csfle-store-credentials-input",label:r().createElement(r().Fragment,null,r().createElement(i.JU7,{htmlFor:"csfle-store-credentials-input"},"Store KMS provider secrets"),r().createElement(i.VYo,null,"Control whether KMS secrets are stored on disk (protected by the OS keychain) or discarded after disconnecting.")),checked:e?.fleOptions?.storeCredentials})),r().createElement(i.GEW,null,Ze.map((({title:n,kmsProviderType:o,...l})=>{const d=r().createElement("span",{className:Qe},n,(p[o]?.length??0)>1&&r().createElement("span",null,"(",p[o]?.length,")"),r().createElement(De,{errors:c,autoEncryptionOptions:s,kmsProviders:p[o]??[],fields:qe[o]}));return r().createElement("div",{className:Je,key:o},r().createElement(i.nD3,{setOpen:e=>m(o,e),"data-testid":`csfle-kms-provider-${o}`,text:d},r().createElement("div",{className:Ge},r().createElement(Ve,(0,a.A)({errors:c,connectionOptions:e,updateConnectionFormField:t,kmsProviderType:o,fields:qe[o],kmsProviderNames:p[o]??[]},l)))))}))),r().createElement(i.GEW,null,r().createElement(ze,{label:"EncryptedFieldsMap",description:"Add an optional client-side EncryptedFieldsMap for enhanced security.",encryptedFieldsMap:s?.encryptedFieldsMap,errorMessage:T(c,"encryptedFieldsMap"),onChange:e=>{d("encryptedFieldsMap",e)}})),l&&r().createElement(i.GEW,null,r().createElement(ze,{label:"SchemaMap",description:"Debug: SchemaMap",encryptedFieldsMap:s?.schemaMap,errorMessage:T(c,"schemaMap"),onChange:e=>{d("schemaMap",e)}})))},et=[{title:"Connection Timeout Options",values:["connectTimeoutMS","socketTimeoutMS"]},{title:"Compression Options",values:["compressors","zlibCompressionLevel"]},{title:"Connection Pool Options",values:["maxPoolSize","minPoolSize","maxIdleTimeMS","waitQueueMultiple","waitQueueTimeoutMS"]},{title:"Write Concern Options",values:["w","wtimeoutMS","journal"]},{title:"Read Concern Options",values:["readConcernLevel"]},{title:"Read Preferences Options",values:["maxStalenessSeconds","readPreferenceTags"]},{title:"Server Options",values:["localThresholdMS","serverSelectionTimeoutMS","serverSelectionTryOnce","heartbeatFrequencyMS"]},{title:"Miscellaneous Configuration",values:["appName","retryReads","retryWrites","srvMaxHosts","uuidRepresentation","enableUtf8Validation"]}],tt=(0,i.AHW)({display:"flex",gap:i.YKD[200],alignItems:"center"}),nt=(0,i.AHW)({display:"inline-block",flexGrow:1}),at=(0,i.AHW)({display:"inline-block"});function ot(e){return!e.length||e[e.length-1].name?[...e,{name:void 0,value:void 0}]:e}function rt(e){let t=[];const n=[],a=e.typedSearchParams();return et.forEach((({values:e})=>t=t.concat(e))),a.forEach(((e,a)=>{t.includes(a)&&n.push({value:e,name:a})})),n}const it=function({updateConnectionFormField:e,connectionStringUrl:t}){const[n,a]=r().useState((()=>ot(rt(t))));(0,i.wTI)((()=>{const e=ot(rt(t));a(e)}),[t]);const s=(t,o,r)=>{const i=n.findIndex((e=>e.name===t)),s={name:o,value:r},l=[...n];l[i]=s,a(ot(l)),o&&e({type:"update-search-param",currentKey:t??o,newKey:t===o?void 0:o,value:r??""})},l=(0,o.useCallback)((t=>{const a=n[t].name;a&&([...n].splice(t-1,1),e({type:"delete-search-param",key:a}))}),[n,e]);return r().createElement(i.qQS,{items:n,renderItem:(e,n)=>r().createElement("div",{className:tt,"data-testid":`url-option-entry-${n}`},r().createElement(i.l6P,{id:"select-key",className:nt,placeholder:"Select key",name:"select-url-options-key-name","aria-labelledby":e.name?`${e.name} select`:"new option select",onChange:(t,n)=>{n.preventDefault(),s(e.name,t,e.value)},allowDeselect:!1,value:e.name??""},et.map((({title:n,values:a})=>r().createElement(i.zQr,{key:n,label:n},a.map((n=>r().createElement(i.c$x,{key:n,value:n,disabled:t.searchParams.has(n)&&e.name!==n},n))))))),r().createElement(i.ksK,{onChange:t=>{t.preventDefault(),s(e.name,e.name,t.target.value)},"data-testid":e.name?`${e.name}-input-field`:"new-option-input-field",spellCheck:!1,type:"text",placeholder:"Value","aria-label":e.name?`${e.name} Value`:"URL Option Value",value:e.value,className:at})),disableAddButton:()=>!0,onAddItem:()=>{},disableRemoveButton:e=>!e.name,onRemoveItem:l,removeButtonTestId:"connection-url-options-remove-button"})},st=(0,i.AHW)({marginTop:i.YKD[400]}),lt=(0,i.AHW)({marginTop:i.YKD[100],marginBottom:i.YKD[200]}),ct=function({updateConnectionFormField:e,connectionStringUrl:t}){return r().createElement("div",{className:st,"data-testid":"url-options"},r().createElement(i.nBu,{weight:"medium"},"URI Options"),r().createElement(i.VYo,{className:lt},"Add additional MongoDB URI options to customize your connection. ",r().createElement(i.N_E,{href:"https://docs.mongodb.com/manual/reference/connection-string/#connection-string-options"},"Learn More")),r().createElement(it,{connectionStringUrl:t,updateConnectionFormField:e}))},dt="defaultReadPreference",ut=[{title:"Primary",id:"primary"},{title:"Primary Preferred",id:"primaryPreferred"},{title:"Secondary",id:"secondary"},{title:"Secondary Preferred",id:"secondaryPreferred"},{title:"Nearest",id:"nearest"}],mt=function({updateConnectionFormField:e,connectionStringUrl:t}){const{searchParams:n,pathname:a}=t,s=n.get("readPreference"),l=n.get("replicaSet"),c=a.startsWith("/")?a.substr(1):a,d=(0,o.useCallback)(((t,n)=>e(n?{type:"update-search-param",currentKey:t,value:n}:{type:"delete-search-param",key:t})),[e]),u=(0,o.useCallback)((t=>e({type:"update-connection-path",value:t})),[e]);return r().createElement(r().Fragment,null,r().createElement(i.GEW,null,r().createElement(i.JU7,{htmlFor:"read-preferences"},"Read Preference"),r().createElement(i.E99,{onChange:({target:{value:e}})=>{d("readPreference",e===dt?void 0:e)},value:s??dt,"data-testid":"read-preferences",id:"read-preferences",size:"compact"},r().createElement(i.VCA,{id:"default-preference-button","data-testid":"default-preference-button",key:"defaultReadPreference",value:dt,checked:!s},"Default"),ut.map((({title:e,id:t})=>r().createElement(i.VCA,{id:`${t}-preference-button`,"data-testid":`${t}-preference-button`,checked:s===t,value:t,key:t},e))))),r().createElement(i.GEW,null,r().createElement(i.ksK,{spellCheck:!1,onChange:({target:{value:e}})=>{d("replicaSet",e)},name:"replica-set","data-testid":"replica-set",label:"Replica Set Name",type:"text",optional:!0,value:l??""})),r().createElement(i.GEW,null,r().createElement(i.ksK,{spellCheck:!1,onChange:({target:{value:e}})=>{u(e)},name:"default-database","data-testid":"default-database",label:"Default Authentication Database",type:"text",optional:!0,value:c??"",description:"Authentication database used when authSource is not specified."})),r().createElement(i.GEW,null,r().createElement(ct,{connectionStringUrl:t,updateConnectionFormField:e})))},pt="localhost",ht=27017,gt=`mongodb://${pt}:${ht}`,ft=22,yt=(0,i.AHW)({marginTop:i.YKD[200]}),bt=(0,i.AHW)({"& > :last-child":{marginBottom:0}}),vt=(0,i.AHW)({position:"relative","&::after":{position:"absolute",top:-i.YKD[200],right:-i.YKD[200],content:'""',width:i.YKD[200],height:i.YKD[200],borderRadius:"50%",backgroundColor:i.MFm.red.base}}),Ct=function({errors:e,updateConnectionFormField:t,connectionOptions:n,openSettingsModal:a}){const[s,c]=(0,o.useState)(0),d=ue("showCSFLE"),u=[{name:"General",id:"general",component:ne},{name:"Authentication",id:"authentication",component:ge},{name:"TLS/SSL",id:"tls",component:xe},{name:"Proxy/SSH",id:"proxy",component:ve},...d?[{name:"In-Use Encryption",id:"csfle",component:Xe}]:[],{name:"Advanced",id:"advanced",component:mt}],m=(0,o.useMemo)((()=>{try{return new l.Ay(n.connectionString,{looseValidation:!0})}catch{return new l.Ay(gt)}}),[n]);return r().createElement(i.tUM,{className:yt,onValueChange:c,value:s,"aria-label":"Advanced Options Tabs"},u.map(((o,s)=>{const l=o.component,c=M(e,o.id),d=c.length>0;return r().createElement(i.ozo,{key:s,name:r().createElement("div",{className:(0,i.cx)({[vt]:d})},o.name),"aria-label":`${o.name}${c.length>0?` (${c.length} error${c.length>1?"s":""})`:""}`,type:"button","data-testid":`connection-${o.id}-tab`,"data-has-error":d},r().createElement("div",{"aria-label":o.name,className:bt},r().createElement(l,{errors:e,connectionStringUrl:m,updateConnectionFormField:t,connectionOptions:n,openSettingsModal:a})))})))},Et=(0,i.AHW)({position:"absolute",top:0,bottom:-i.YKD[100],left:-i.YKD[100],right:-i.YKD[100],backgroundColor:(0,i.B3q)(i.MFm.white,.5),zIndex:1,cursor:"not-allowed"}),St=(0,i.AHW)({position:"relative"}),kt=function({disabled:e,errors:t,updateConnectionFormField:n,connectionOptions:a,open:o,setOpen:s,openSettingsModal:l}){return r().createElement(i.nD3,{"data-testid":"advanced-connection-options",text:"Advanced Connection Options",open:o,setOpen:s},r().createElement("div",{className:St},e&&r().createElement("div",{className:Et,title:"The connection form is disabled when the connection string cannot be parsed."}),r().createElement(Ct,{errors:t,updateConnectionFormField:n,connectionOptions:a,openSettingsModal:l})))},wt=(0,i.AHW)({paddingLeft:i.YKD[600],paddingRight:i.YKD[600]}),xt=(0,i.AHW)({marginTop:i.YKD[400],"&:last-child":{marginBottom:i.YKD[400]}}),At=(0,i.AHW)({display:"flex",justifyContent:"flex-end",gap:i.YKD[200]}),Dt=(0,i.AHW)({flexGrow:1,display:"flex",justifyContent:"flex-end"});function It({errors:e,warnings:t,onCancel:n,onSave:a,onSaveAndConnect:o,onConnect:s}){const l=ue("saveAndConnectLabel");return r().createElement("div",{className:(0,i.cx)(wt)},t.length>0&&r().createElement("div",{className:xt},r().createElement(i.rpn,{"data-testid":"connection-warnings-summary",warnings:t.map((e=>e.message))})),e.length>0&&r().createElement("div",{className:xt},r().createElement(i.dFH,{"data-testid":"connection-error-summary",errors:e.map((e=>e.message))})),r().createElement("div",{className:(0,i.cx)(xt,At)},n&&r().createElement(i.$nd,{"data-testid":"cancel-button",variant:i.AkO.Default,disabled:!1,onClick:n},"Cancel"),a&&r().createElement("div",{className:Dt},r().createElement(i.$nd,{"data-testid":"save-button",variant:o?i.AkO.PrimaryOutline:i.AkO.Primary,disabled:!1,onClick:a},"Save")),s&&r().createElement(i.$nd,{"data-testid":"connect-button",variant:i.AkO.PrimaryOutline,onClick:s},"Connect"),o&&r().createElement(i.$nd,{"data-testid":s?"save-and-connect-button":"connect-button",variant:i.AkO.Primary,onClick:o},l)))}const Mt=/[@/]/,Tt=/[:@,/]/;function Lt({browserCommandForOIDCAuth:e,notifyDeviceFlow:t}){return n=>{const a=e;return{...(0,s.cloneDeep)(n),oidc:{...(0,s.cloneDeep)(n.oidc),...a?{openBrowser:{command:a}}:{},...t?{notifyDeviceFlow:t}:{}}}}}function Ot({defaultAppName:e,telemetryAnonymousId:t,connectionId:n,isAtlas:a}){return o=>{const r=new l.QZ(o.connectionString),i=r.typedSearchParams();if(!i.has("appName")&&void 0!==e){const l=a?`${e}${t?`--${t}`:""}--${n}`:e;i.set("appName",l),o={...(0,s.cloneDeep)(o),connectionString:r.toString()}}return o}}function Nt(e){return"username"===e||"password"===e}function _t(e=[]){return t=>{const n=new l.QZ(t.connectionString);for(const[t]of e)Nt(t)||n.searchParams.delete(t);for(const[t,a]of e)Nt(t)?n[t]=encodeURIComponent(a):n.searchParams.append(t,a);return{...t,connectionString:n.toString()}}}function Ft(e,t){switch(t.type){case"set-connection-form-state":return{...e,...t.newState};case"set-enable-editing-connection-string":return{...e,enableEditingConnectionString:t.enableEditing};case"set-form-errors":return{...e,errors:t.errors}}}function Pt(e){const[t,n]=oe(e);return[t,n?[{fieldName:"connectionString",fieldTab:"general",message:n.message}]:[]]}function Wt(e){const[,t]=Pt(e.connectionOptions.connectionString);let n=!1;try{const t=new l.Ay(e.connectionOptions.connectionString),a=new l.Ay(gt);n=t.href===a.href}catch{}const a=n&&!e.lastUsed;return{errors:t,enableEditingConnectionString:a,allowEditingIfProtected:a,warnings:t?.length?[]:U(e.connectionOptions),connectionOptions:D((0,s.cloneDeep)(e.connectionOptions)),isDirty:!1,personalizationOptions:{color:e.favorite?.color||void 0,name:e.favorite?.name||"",isNameDirty:!!e.favorite?.name,isFavorite:"favorite"===e.savedConnectionType}}}function Rt(e,t,n){if(!function(e){return"update-connection-personalization"===e.type}(e)){if(!t.isNameDirty&&n)try{const e=new l.Ay(n).hosts.join(",");return{...t,name:e}}catch{}return t}const a=e.isNameDirty||t.isNameDirty;return{name:void 0!==e.name?e.name:t.name,color:e.color||t.color,isFavorite:e.isFavorite,isNameDirty:a}}function Ut(e,t,n){if("update-connection-string"===e.type){const[a,o]=Pt(e.newConnectionStringValue);return{connectionOptions:{...t,connectionString:a?.toString()||e.newConnectionStringValue},personalizationOptions:Rt(e,n,a?.toString()||""),errors:o}}const[a,o]=Pt(t.connectionString);if(!a)return{connectionOptions:t,personalizationOptions:Rt(e,n,void 0),errors:o};const r=a.typedSearchParams();switch(e.type){case"update-connection-personalization":return{connectionOptions:{...t,connectionString:a.toString()},personalizationOptions:Rt(e,n,a.toString())};case"add-new-host":{const{fieldIndexToAddAfter:n}=e,o=function(e,t){if(e.length<1)return`${pt}:${ht}`;const n=e[t],a=n.includes(":")?n.slice(0,n.indexOf(":")):n,o=(function(e){return e.includes(":")&&!isNaN(Number(e.slice(e.indexOf(":")+1)))}(r=n)?Number(r.slice(r.indexOf(":")+1))||27017:ht)+1;var r;return`${a||pt}:${o}`}(a.hosts,n);return a.hosts.splice(n+1,0,o),r.get("directConnection")&&r.delete("directConnection"),{connectionOptions:{...t,connectionString:a.toString()}}}case"remove-host":{const{fieldIndexToRemove:n}=e;return a.hosts.splice(n,1),1!==a.hosts.length||a.hosts[0]||(a.hosts[0]=`${pt}:${ht}`),{connectionOptions:{...t,connectionString:a.toString()}}}case"update-tls":return function({action:e,connectionStringUrl:t,connectionOptions:n}){const a=t.clone(),o=a.typedSearchParams();return"ON"===e.tlsOption?(o.delete("ssl"),o.set("tls","true")):"OFF"===e.tlsOption?(o.delete("ssl"),o.set("tls","false")):"DEFAULT"===e.tlsOption&&(o.delete("ssl"),o.delete("tls")),{connectionOptions:{...(0,s.cloneDeep)(n),connectionString:a.toString()}}}({action:e,connectionStringUrl:a,connectionOptions:t});case"update-tls-option":return function({action:e,connectionStringUrl:t,connectionOptions:n}){const a=(0,s.cloneDeep)(n),o=t.clone(),r=o.typedSearchParams();return e.value?(r.delete("ssl"),r.set("tls","true"),r.set(e.key,e.value)):r.delete(e.key),{connectionOptions:{...a,connectionString:o.toString()}}}({action:e,connectionStringUrl:a,connectionOptions:t});case"update-auth-mechanism":return function({action:e,connectionStringUrl:t,connectionOptions:n}){const a=function(e){const t=e.clone(),n=t.typedSearchParams();return n.delete("authMechanism"),t.password="",t.username="",n.delete("authMechanismProperties"),n.delete("gssapiServiceName"),n.delete("authSource"),t}(t),o=a.typedSearchParams();return e.authMechanism&&(o.set("authMechanism",e.authMechanism),["MONGODB-AWS","GSSAPI","PLAIN","MONGODB-X509","MONGODB-OIDC"].includes(e.authMechanism)&&o.set("authSource","$external")),{connectionOptions:{...(0,s.cloneDeep)(n),connectionString:a.toString()}}}({action:e,connectionStringUrl:a,connectionOptions:t});case"update-username":return function({action:e,connectionStringUrl:t,connectionOptions:n}){const a=function(e,t){const n=e.clone();return n.username=encodeURIComponent(t),n}(t,e.username),[,o]=oe(a.toString());return o?{connectionOptions:n,errors:[{fieldName:"username",fieldTab:"authentication",message:o.message}]}:{connectionOptions:{...(0,s.cloneDeep)(n),connectionString:a.toString()}}}({action:e,connectionStringUrl:a,connectionOptions:t});case"update-password":return function({action:e,connectionStringUrl:t,connectionOptions:n}){const a=function(e,t){const n=e.clone();return n.password=encodeURIComponent(t),n}(t,e.password),[,o]=oe(a.toString());return o?{connectionOptions:n,errors:[{fieldName:"password",fieldTab:"authentication",message:o.message}]}:{connectionOptions:{...(0,s.cloneDeep)(n),connectionString:a.toString()}}}({action:e,connectionStringUrl:a,connectionOptions:t});case"update-host":return function({action:e,connectionStringUrl:t,connectionOptions:n}){const{newHostValue:a,fieldIndex:o}=e;try{!function(e,t){const n=(t?Tt:Mt).exec(e);if(n)throw new Error(`Invalid character in host: '${n[0]}'`)}(a,t.isSRV);const e=t.clone();e.hosts[o]=a||"";const r=e.clone();return{connectionOptions:{...(0,s.cloneDeep)(n),connectionString:r.toString()},errors:[]}}catch(e){return{connectionOptions:{...(0,s.cloneDeep)(n),connectionString:t.toString()},errors:[{fieldName:"hosts",fieldTab:"general",fieldIndex:o,message:e.message}]}}}({action:e,connectionStringUrl:a,connectionOptions:t});case"update-connection-scheme":{const{isSrv:n}=e;try{const e=(i=a,n?function(e){if(e.isSRV)return e;const t=e.clone(),n=t.hosts.length>0?t.hosts[0].substring(0,-1===t.hosts[0].indexOf(":")?void 0:t.hosts[0].indexOf(":")):pt;t.hosts=[n],t.protocol="mongodb+srv:";const a=t.typedSearchParams();return a.get("directConnection")&&a.delete("directConnection"),t}(i):function(e){if(!e.isSRV)return e;const t=e.clone();return t.protocol="mongodb:",t.hosts=[`${t.hosts[0]}:${ht}`],t}(i));return{connectionOptions:{...t,connectionString:e.toString()},errors:[]}}catch(e){return{connectionOptions:{...t},errors:[{fieldName:"isSrv",fieldTab:"general",message:`Error updating connection schema: ${e.message}`}]}}}case"update-ssh-options":return function({action:e,connectionOptions:t}){const n=(0,s.cloneDeep)(t),{key:a,value:o}=e;return{connectionOptions:{...n,sshTunnel:{host:"",port:ft,username:"",...n.sshTunnel,[a]:o}}}}({action:e,connectionOptions:t});case"update-search-param":if(e.newKey){const t=e.value??r.get(e.currentKey);r.delete(e.currentKey),r.set(e.newKey,t)}else r.set(e.currentKey,e.value);return{connectionOptions:{...t,connectionString:a.toString()}};case"update-auth-mechanism-property":{const n=ae(a);e.value?n.set(e.key,e.value):n.delete(e.key);const o=n.toString();return o?r.set("authMechanismProperties",o):r.delete("authMechanismProperties"),{connectionOptions:{...t,connectionString:a.toString()}}}case"delete-search-param":return r.delete(e.key),{connectionOptions:{...t,connectionString:a.toString()}};case"update-connection-path":return a.pathname=e.value,{connectionOptions:{...t,connectionString:a.toString()}};case"remove-proxy-options-and-app-proxy":case"remove-proxy-options-and-set-app-proxy":return["proxyHost","proxyPort","proxyPassword","proxyUsername"].forEach((e=>r.delete(e))),{connectionOptions:{...t,connectionString:a.toString(),useApplicationLevelProxy:"remove-proxy-options-and-set-app-proxy"===e.type}};case"remove-ssh-options-and-app-proxy":return{connectionOptions:{...t,sshTunnel:void 0,useApplicationLevelProxy:!1}};case"remove-app-proxy":return{connectionOptions:{...t,useApplicationLevelProxy:!1}};case"update-csfle-store-credentials":return function({action:e,connectionOptions:t}){return t=(0,s.cloneDeep)(t),{connectionOptions:{...t,fleOptions:{...k,...t.fleOptions,storeCredentials:e.value}}}}({action:e,connectionOptions:t});case"update-csfle-param":return function({action:e,connectionOptions:t}){t=(0,s.cloneDeep)(t);const n={...t.fleOptions?.autoEncryption};return e.value?n[e.key]=e.value:delete n[e.key],{connectionOptions:{...t,fleOptions:{...k,...t.fleOptions,autoEncryption:n}}}}({action:e,connectionOptions:t});case"update-csfle-kms-param":return function({action:e,connectionOptions:t}){t=(0,s.cloneDeep)(t);const n=t.fleOptions?.autoEncryption??{},a={...n.kmsProviders?.[e.kmsProviderName]??{}};e.value?a[e.key]=e.value:delete a[e.key];const o=n.kmsProviders??{};return 0===Object.keys(a).length?delete o[e.kmsProviderName]:o[e.kmsProviderName]=a,{connectionOptions:{...t,fleOptions:{...k,...t.fleOptions,autoEncryption:{...n,kmsProviders:o}}}}}({action:e,connectionOptions:t});case"update-csfle-kms-tls-param":return function({action:e,connectionOptions:t}){t=(0,s.cloneDeep)(t);const n=t.fleOptions?.autoEncryption??{},a={...n.tlsOptions?.[e.kmsProviderName]??{}};e.value?a[e.key]=e.value:delete a[e.key];const o=n.tlsOptions??{};return 0===Object.keys(a).length?delete o[e.kmsProviderName]:o[e.kmsProviderName]=a,{connectionOptions:{...t,fleOptions:{...k,...t.fleOptions,autoEncryption:{...n,tlsOptions:o}}}}}({action:e,connectionOptions:t});case"update-oidc-param":return function({action:e,connectionOptions:t}){const n={...(t=(0,s.cloneDeep)(t)).oidc};return e.value?n[e.key]=e.value:delete n[e.key],{connectionOptions:{...t,oidc:{...n}}}}({action:e,connectionOptions:t});case"add-new-csfle-kms-provider":return function({action:e,connectionOptions:t}){t=(0,s.cloneDeep)(t);const n=t.fleOptions?.autoEncryption??{},a=n.kmsProviders??{};return a[e.name]={},{connectionOptions:{...t,fleOptions:{...k,...t.fleOptions,autoEncryption:{...n,kmsProviders:a}}}}}({action:e,connectionOptions:t});case"rename-csfle-kms-provider":return function({action:e,connectionOptions:t}){t=(0,s.cloneDeep)(t);const n=t.fleOptions?.autoEncryption??{},a=I(n.kmsProviders,e.name,e.newName),o=I(n.tlsOptions,e.name,e.newName);return{connectionOptions:{...t,fleOptions:{...k,...t.fleOptions,autoEncryption:{...n,...a&&{kmsProviders:a},...o&&{tlsOptions:o}}}}}}({action:e,connectionOptions:t});case"remove-csfle-kms-provider":return function({action:e,connectionOptions:t}){t=(0,s.cloneDeep)(t);const n=t.fleOptions?.autoEncryption??{},a=n.kmsProviders??{};delete a[e.name];const o=n.tlsOptions??{};return delete o[e.name],{connectionOptions:{...t,fleOptions:{...k,...t.fleOptions,autoEncryption:{...n,kmsProviders:a,tlsOptions:o}}}}}({action:e,connectionOptions:t})}var i}function $t({connectionOptions:e,connectionId:t,defaultAppName:n,notifyDeviceFlow:a,preferences:o}){const r=[D,w,Ot({defaultAppName:n,connectionId:t,isAtlas:(0,v.mu)(e.connectionString),telemetryAnonymousId:o.telemetryAnonymousId}),Lt({browserCommandForOIDCAuth:o.browserCommandForOIDCAuth,notifyDeviceFlow:a}),_t(o.forceConnectionOptions)];for(const t of r)e=t(e);return e}const Vt="color10",Ht={DARK:{ACTIVE:{color1:"#174933",color2:"#084843",color3:"#004074",color4:"#303374",color5:"#48295C",color6:"#611623",color7:"#591C47",color8:"#562800",color9:"#433500",color10:i.MFm.gray.light2},DEFAULT:{color1:"#113B29",color2:"#023B37",color3:"#003362",color4:"#262A65",color5:"#3D224E",color6:"#500F1C",color7:"#4B143D",color8:"#462100",color9:"#362B00",color10:i.MFm.gray.light2}},LIGHT:{ACTIVE:{color1:"#C4E8D1",color2:"#B8EAE0",color3:"#C2E5FF",color4:"#DADCFF",color5:"#EAD5F9",color6:"#FFCDCE",color7:"#F6CEE7",color8:"#FFD19A",color9:"#FFE770",color10:i.MFm.gray.light2},DEFAULT:{color1:"#D6F1DF",color2:"#CCF3EA",color3:"#D5EFFF",color4:"#E6E7FF",color5:"#F2E2FC",color6:"#FFDBDC",color7:"#FBDCEF",color8:"#FFDFB5",color9:"#FFF394",color10:i.MFm.gray.light1}}},Kt={color1:i.MFm.green.dark1,color2:i.MFm.green.light1,color3:i.MFm.blue.base,color4:i.MFm.blue.light1,color5:i.MFm.yellow.base,color6:i.MFm.red.light1,color7:i.MFm.purple.base,color8:i.MFm.purple.light2,color9:i.MFm.gray.base,color10:i.MFm.gray.light1},jt={color1:"Green",color2:"Teal",color3:"Blue",color4:"Iris",color5:"Purple",color6:"Red",color7:"Pink",color8:"Orange",color9:"Yellow",color10:"Gray"},Bt=Object.keys(Kt);function zt(e){return Bt.includes(e)}function Yt(){const e=(0,i.D27)();return{connectionColorToHex:(0,o.useCallback)((t=>{if(t&&zt(t))return e?Ht.DARK.DEFAULT[t]:Ht.LIGHT.DEFAULT[t]}),[e]),connectionColorToHexActive:(0,o.useCallback)((t=>{if(t&&zt(t))return e?Ht.DARK.ACTIVE[t]:Ht.LIGHT.ACTIVE[t]}),[e]),connectionColorToName:(0,o.useCallback)((e=>{if(e&&zt(e))return jt[e]}),[]),connectionColorCodes:()=>Bt.slice(0,9)}}const qt=(0,i.AHW)({backgroundColor:"var(--theme-background-color)",border:"1px solid var(--theme-border-color)",margin:0,marginBottom:i.YKD[400],marginTop:i.YKD[400],padding:i.YKD[600],paddingTop:i.YKD[400],paddingBottom:i.YKD[400],borderRadius:i.YKD[200]}),Gt=(0,i.AHW)({fontSize:"14px"}),Zt=(0,i.AHW)({marginTop:i.YKD[200]}),Jt=(0,i.AHW)({"--theme-background-color":i.MFm.gray.dark3,"--theme-border-color":i.MFm.gray.dark2}),Qt=(0,i.AHW)({"--theme-background-color":i.MFm.gray.light3,"--theme-border-color":i.MFm.gray.light2}),Xt=function(){const e=(0,i.D27)()?Jt:Qt;return r().createElement("div",{className:e},r().createElement("div",{className:qt},r().createElement(i.Pds,{className:Gt},"How do I find my connection string in Atlas?"),r().createElement(i.nBu,{className:Zt},"If you have an Atlas cluster, go to the Cluster view. Click the 'Connect' button for the cluster to which you wish to connect."),r().createElement(i.N_E,{href:"https://docs.atlas.mongodb.com/compass-connection/",target:"_blank"},"See example")),r().createElement("div",{className:qt},r().createElement(i.Pds,{className:Gt},"How do I format my connection string?"),r().createElement(i.N_E,{href:"https://docs.mongodb.com/manual/reference/connection-string/",target:"_blank"},"See example")))},en=(0,i.AHW)({marginTop:i.YKD[200]}),tn=(0,i.AHW)({display:"grid",gridTemplateAreas:'\n "header"\n "content"\n "footer"\n ',gridTemplateRows:"max-content 1fr max-content",minHeight:0,height:"100%"}),nn=(0,i.AHW)({gridArea:"header",paddingTop:i.YKD[600],paddingLeft:i.YKD[600],paddingRight:i.YKD[600]}),an=(0,i.AHW)({position:"relative"}),on=(0,i.AHW)({gridArea:"content",display:"flex",gap:i.YKD[400],paddingLeft:i.YKD[600],paddingRight:i.YKD[600],overflowY:"auto",scrollbarGutter:"stable"}),rn=(0,i.AHW)({minWidth:0,flex:"1 1 auto",paddingLeft:i.YKD[100],"& > :last-child":{paddingBottom:i.YKD[600]}}),sn=(0,i.AHW)({position:"sticky",top:0,flex:"1 1 0px",minWidth:4*i.YKD[1600],maxWidth:5*i.YKD[1600]}),ln=(0,i.AHW)({gridArea:"footer"}),cn=(0,i.AHW)({borderTop:`1px solid ${i.MFm.gray.dark2}`}),dn=(0,i.AHW)({borderTop:`1px solid ${i.MFm.gray.light2}`}),un=(0,i.AHW)({button:{visibility:"hidden"},"&:hover":{button:{visibility:"visible"}}}),mn=(0,i.AHW)({marginTop:i.YKD[400],paddingRight:0}),pn=(0,i.AHW)({display:"flex",gap:i.YKD[400],alignItems:"center"}),hn=(0,i.AHW)({marginBottom:i.YKD[400]}),gn=(0,i.AHW)({height:i.YKD[400],width:i.YKD[400]}),fn=(0,i.cXL)("ColorCircle",(({hexColor:e,...t})=>r().createElement("svg",(0,a.A)({},t,{className:gn,width:i.YKD[400],height:i.YKD[400],viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"}),r().createElement("g",{clipPath:"url(#clip0_756_18092)"},r().createElement("line",{opacity:"0.5",x1:"16.3536",y1:"-0.146447",x2:"0.353554",y2:"15.8536",stroke:"#DB3030"})),r().createElement("rect",{x:"0.5",y:"0.5",width:"15",height:"15",rx:"7.5",stroke:"#889397",fill:e}),r().createElement("defs",null,r().createElement("clipPath",{id:"clip0_756_18092"},r().createElement("rect",{width:"16",height:"16",rx:"8",fill:"white"})))))),yn=(0,i.AHW)({display:"grid",gridTemplateColumns:"1fr 1fr",gridTemplateRows:"auto",gridTemplateAreas:"\n 'name-input color-input'\n 'favorite-marker favorite-marker'\n ",gap:i.YKD[600],marginBottom:i.YKD[600]}),bn=(0,i.AHW)({gridArea:"name-input"}),vn=(0,i.AHW)({gridArea:"color-input"}),Cn=(0,i.AHW)({gridArea:"favorite-marker"});function En({updateConnectionFormField:e,personalizationOptions:t}){const n=ue("showFavoriteActions"),a=(0,o.useCallback)((n=>{e({type:"update-connection-personalization",...t,name:n.target.value,isNameDirty:!0})}),[e,t]),s=(0,o.useCallback)((n=>{e({type:"update-connection-personalization",...t,color:n})}),[e,t]),l=(0,o.useCallback)((n=>{e({type:"update-connection-personalization",...t,isFavorite:n.target.checked})}),[e,t]),{connectionColorToHex:c,connectionColorToName:d,connectionColorCodes:u}=Yt();return r().createElement("div",{className:yn},r().createElement(i.ksK,{className:bn,value:t.name,"data-testid":"personalization-name-input",onChange:a,label:"Name"}),r().createElement(i.l6P,{className:vn,"data-testid":"personalization-color-input",label:"Color",defaultValue:t.color||"no-color",allowDeselect:!1,onChange:s},r().createElement(i.c$x,{glyph:r().createElement(fn,{hexColor:"transparent"}),value:"no-color"},"No Color"),u().map((e=>r().createElement(i.c$x,{key:e,glyph:r().createElement(fn,{hexColor:c(e)}),value:e},d(e))))),n&&r().createElement(i.Sc0,{className:Cn,onChange:l,"data-testid":"personalization-favorite-checkbox",checked:t.isFavorite,label:r().createElement("b",null,"Favorite this connection"),description:"Favoriting a connection will pin it to the top of your list of connections"}))}function Sn({initialConnectionInfo:e,connectionErrorMessage:t,disableEditingConnectedConnection:n=!1,onSaveAndConnectClicked:a,onSaveClicked:c,onConnectClicked:d,onDisconnectClicked:u,onCancel:m,onAdvancedOptionsToggle:p,openSettingsModal:h}){const[g,f]=(0,o.useState)(!1),y=(0,i.D27)(),v=(0,o.useCallback)((e=>{f(e),p?.(e)}),[p]),[{enableEditingConnectionString:C,errors:E,warnings:S,connectionOptions:k,allowEditingIfProtected:w,personalizationOptions:x},{setEnableEditingConnectionString:A,updateConnectionFormField:D,setErrors:I}]=function(e,t){const n=Wt(e),a={...n,enableEditingConnectionString:!ue("protectConnectionStringsForNewConnections")&&n.enableEditingConnectionString},[r,i]=(0,o.useReducer)(Ft,a),l=(0,o.useCallback)((e=>{i({type:"set-form-errors",errors:e})}),[]),c=(0,o.useCallback)((e=>{i({type:"set-enable-editing-connection-string",enableEditing:e})}),[]),d=(0,o.useCallback)((e=>{const t=Ut(e,r.connectionOptions,r.personalizationOptions);i({type:"set-connection-form-state",newState:{...r,errors:[],...t,warnings:t.errors?.length?[]:U(t.connectionOptions),isDirty:!(0,s.isEqual)(t.connectionOptions,r.connectionOptions)}})}),[r]);return function({connectionErrorMessage:e,initialConnectionInfo:t,setErrors:n,dispatch:a}){const r=ue("protectConnectionStringsForNewConnections");(0,o.useEffect)((()=>{const{errors:e,warnings:n,connectionOptions:o,allowEditingIfProtected:i,enableEditingConnectionString:s,personalizationOptions:l}=Wt(t);a({type:"set-connection-form-state",newState:{errors:e,enableEditingConnectionString:!r&&s,warnings:n,connectionOptions:o,isDirty:!1,allowEditingIfProtected:i,personalizationOptions:l}})}),[t,r]),(0,o.useEffect)((()=>{e&&n([{message:e}])}),[n,e])}({connectionErrorMessage:t,initialConnectionInfo:e,setErrors:l,dispatch:i}),[r,{updateConnectionFormField:d,setEnableEditingConnectionString:c,setErrors:l}]}(e,t),M=!!ue("protectConnectionStrings")&&!w,T=C&&!M,L=ue("forceConnectionOptions"),O=(0,o.useMemo)((()=>{if(!L?.length)return S;const e=L.map((([e])=>e));return[...S,{message:`Some connection options have been overridden through settings: ${e.join(", ")}`}]}),[S,L]),_=E.find((e=>"connectionString"===e.fieldName)),R=(0,o.useCallback)((t=>({...(0,s.cloneDeep)(e),connectionOptions:(0,s.cloneDeep)(k),savedConnectionType:x.isFavorite?"favorite":"recent",favorite:{...t||{},name:x.name,color:x.color}})),[e,k,x]),$=(0,o.useCallback)((async e=>{try{await(c?.(e))}catch(e){I([{message:`Unable to save connection: ${e.message}`}])}}),[c,I]),V=(0,o.useCallback)((t=>{const n=(0,s.cloneDeep)(k),o=function(e){const t=new l.Ay(e.connectionString,{looseValidation:!0});return[...N(t),...W(e.fleOptions?.autoEncryption??{}),...e.sshTunnel?F(e.sshTunnel):P(t)]}(n);o.length?I(o):"connect"===t?d?.({...e,...R(),connectionOptions:n}):a?a?.({...e,...R(),connectionOptions:n}):$?.(R())}),[k,I,d,e,R,$,a]),H=ue("showPersonalisationForm"),K=ue("showHelpCardsInForm");return r().createElement(i.ETl,null,r().createElement("form",{role:"form",className:tn,onSubmit:e=>{e.preventDefault(),V()},noValidate:!0},r().createElement("div",{className:nn},r().createElement("div",{className:an},r().createElement(i.H3,{className:un},(e.favorite?.name??"New Connection")||"Edit Connection"),r().createElement(i.VYo,{className:en},"Manage your connection settings"))),r().createElement("div",{className:on},r().createElement("div",{className:rn},n&&u&&r().createElement(i.lZ$,{"data-testid":"disabled-connected-connection-banner",className:mn},r().createElement("div",{className:pn},r().createElement("div",null,"While connected, you may only personalize your connection's name, color or favorite status. To fully configure it, you must first disconnect. Beware that disconnecting might cause work in progress to be lost."),r().createElement("div",null,r().createElement(i.$nd,{size:"small",leftGlyph:r().createElement(i.Int,{glyph:"Disconnect"}),onClick:u},"Disconnect")))),M&&!n&&r().createElement(i.lZ$,{"data-testid":"protect-connection-strings-banner",className:mn},'Advanced Connection Options are hidden while the "Protect Connection String Secrets" setting is enabled. Disable the setting to configure Advanced Connection Options or edit your connection string.'),r().createElement(b,{connectionString:k.connectionString,enableEditingConnectionString:T,disableEditingConnectedConnection:!!n,setEnableEditingConnectionString:A,onSubmit:V,updateConnectionFormField:D,protectConnectionStrings:M}),_&&r().createElement(i.lZ$,{className:hn,variant:i.uAY.Danger},_.message),H&&r().createElement(En,{personalizationOptions:x,updateConnectionFormField:D}),!(M||n)&&r().createElement(kt,{open:g,setOpen:v,errors:_?[]:E,disabled:!(!_&&!n),updateConnectionFormField:D,connectionOptions:k,openSettingsModal:h})),K&&r().createElement("div",{className:sn},r().createElement(Xt,null))),r().createElement("div",{className:(0,i.cx)(ln,y?cn:dn)},r().createElement(It,{errors:_?[]:E,warnings:_?[]:O,onCancel:m,onSave:c?()=>{$?.(R())}:void 0,onConnect:d?()=>V("connect"):void 0,onSaveAndConnect:a?()=>V("save-and-connect"):void 0}))))}const kn=({showFavoriteActions:e,showHelpCardsInForm:t,showPersonalisationForm:n,protectConnectionStrings:a,forceConnectionOptions:i,showKerberosPasswordField:s,showOIDCDeviceAuthFlow:l,enableOidc:c,enableDebugUseCsfleSchemaMap:d,protectConnectionStringsForNewConnections:u,showOIDCAuth:m,showKerberosAuth:p,showCSFLE:h,showProxySettings:g,saveAndConnectLabel:f,...y})=>{const b=(0,o.useMemo)((()=>({showFavoriteActions:e,showHelpCardsInForm:t,showPersonalisationForm:n,protectConnectionStrings:a,forceConnectionOptions:i,showKerberosPasswordField:s,showOIDCDeviceAuthFlow:l,enableOidc:c,enableDebugUseCsfleSchemaMap:d,protectConnectionStringsForNewConnections:u,showOIDCAuth:m,showKerberosAuth:p,showCSFLE:h,showProxySettings:g,saveAndConnectLabel:f})),[e,t,n,a,i,s,l,c,d,u,m,p,h,g,f]);return r().createElement(de.Provider,{value:b},r().createElement(Sn,y))},wn=(0,i.AHW)({width:"960px"});function xn({isOpen:e,setOpen:t,...n}){const[s,l]=(0,o.useState)(!1);return r().createElement(i.aFV,{open:e,setOpen:t,"data-testid":"connection-form-modal",className:wn,fullScreen:s},r().createElement(kn,(0,a.A)({key:n.initialConnectionInfo.id,onAdvancedOptionsToggle:l},n)))}},34825:()=>{},36430:e=>{e.exports={ATLAS:"atlas",ADL:"adl",ON_PREM:"on-prem"}},39059:(e,t,n)=>{n.d(t,{H8:()=>F,rp:()=>L,yo:()=>P,Tx:()=>D,Hg:()=>N,C7:()=>z,IM:()=>h,Ay:()=>G,q_:()=>S,Ho:()=>k,ZL:()=>q,qm:()=>Y,v6:()=>I,RQ:()=>v}),n(95039),n(81546);var a=n(86214),o=n.n(a),r=n(90605);const i=Symbol.for("@@mdb.decryptedKeys");function s(e,t){t.isValueDecrypted()&&(e[i]||Object.defineProperty(e,i,{value:[],writable:!0,configurable:!0,enumerable:!1}),e[i].push(String(t.currentKey)))}const l=Symbol("DoesNotExist");class c{static generate(e,t={}){if(e){const n=Object.create(null);for(const a of e)t.excludeInternalFields&&a.isInternalField()||a.isRemoved()||""===a.currentKey||(n[a.currentKey]=a.generateObject(t),s(n,a));return n}return e}static generateOriginal(e,t={}){if(e){const n=Object.create(null);for(const a of e)t.excludeInternalFields&&a.isInternalField()||a.isAdded()||(n[a.key]=a.generateOriginalObject(t),s(n,a));return n}return e}static generateArray(e,t={}){if(e){const n=[];for(const a of e)t.excludeInternalFields&&a.isInternalField()||a.isRemoved()||(a.elements?n.push(a.generateObject(t)):n.push(a.currentValue),s(n,a));return n}return e}static generateOriginalArray(e,t={}){if(e){const n=[];for(const a of e)t.excludeInternalFields&&a.isInternalField()||(a.originalExpandableValue?n.push(a.generateOriginalObject(t)):a.isAdded()||n.push(a.value),s(n,a));return n}return e}static recursivelyGatherFieldsAndValuesForUpdate(e,t,n){const a=[],o=[],i=t.alwaysIncludeKeys??[],s=t.includableEncryptedKeys??[];for(const t of e.elements??[]){const r="Array"===e.currentType,d=!t.isValueDecrypted()||s.some((e=>1===e.length&&e[0]===String(t.key)));if(n&&t.isModified()&&!t.isAdded()&&!t.hasChangedKey()||i.some((e=>e[0]===String(t.key))))if(t.elements&&!i.some((e=>1===e.length&&e[0]===String(t.key)))&&("Object"===t.type&&"Object"===t.currentType||"Array"===t.type&&"Array"===t.currentType&&!t.hasAnyRemovedChild())){const e=e=>e.filter((e=>e[0]===String(t.key))).map((e=>e.slice(1))).filter((e=>e.length>0)),l={alwaysIncludeKeys:e(i),includableEncryptedKeys:e(s)},d=c.recursivelyGatherFieldsAndValuesForUpdate(t,l,n);for(const{path:e,value:n}of d.originalFields)a.push({path:[{key:String(t.key),isArrayIndex:r},...e],value:n});for(const{path:e,value:n}of d.newFields)o.push({path:[{key:String(t.currentKey),isArrayIndex:r},...e],value:n})}else d&&a.push({path:[{key:String(t.key),isArrayIndex:r}],value:t.generateOriginalObject()}),n&&""!==t.currentKey&&!t.isRemoved()&&o.push({path:[{key:String(t.currentKey),isArrayIndex:r}],value:t.generateObject()});if(n&&!t.isRemoved()&&(t.isAdded()||t.hasChangedKey())&&""!==t.currentKey){let n=!1;for(const a of e.elements??[])if(a!==t&&a.key===t.currentKey){n=!0;break}n||a.push({path:[{key:String(t.currentKey),isArrayIndex:r}],value:l}),o.push({path:[{key:String(t.currentKey),isArrayIndex:r}],value:t.generateObject()})}if(n&&!t.isAdded()&&(t.isRemoved()||t.hasChangedKey())&&""!==t.key){d&&a.push({path:[{key:String(t.key),isArrayIndex:r}],value:t.generateOriginalObject()});let n=!1;for(const a of e.elements??[])if(a!==t&&a.currentKey===t.key){n=!0;break}n||o.push({path:[{key:String(t.key),isArrayIndex:r}],value:l})}}for(let e=0;e<o.length;){const t=o[e];t.value===l&&o.some((e=>(0,r.isEqual)(e.path,t.path)&&t!==e))?o.splice(e,1):e++}return{originalFields:a,newFields:o}}static createGetFieldExpr(e){return e.reduce(((e,{key:t,isArrayIndex:n})=>n?{$arrayElemAt:[e,+t]}:{$getField:{field:{$literal:t},input:e}}),"$$ROOT")}static createSetFieldExpr(e,t){return e.reduceRight(((e,{key:t,isArrayIndex:n},a,o)=>{const r=c.createGetFieldExpr(o.slice(0,a));return n?{$let:{vars:{input:r},in:{$concatArrays:[...+t>0?[{$slice:["$$input",0,+t]}]:[],[e],{$slice:["$$input",+t+1,2**31-1]}]}}}:{$setField:{field:{$literal:t},input:r,value:e}}}),t===l?"$$REMOVE":{$literal:t})}static getQueryForOriginalKeysAndValuesForSpecifiedFields(e,t,n){const{originalFields:a}=c.recursivelyGatherFieldsAndValuesForUpdate(e,t,n),o={};if(a.some((({path:e})=>e.some((({key:e})=>e.includes(".")||e.startsWith("$")))))){const e=[];for(const{path:t,value:n}of a){const a=c.createGetFieldExpr(t);e.push(n!==l?{$eq:[a,{$literal:n}]}:{$eq:[{$type:a},"missing"]})}1===e.length?o.$expr=e[0]:e.length>1&&(o.$expr={$and:e})}else for(const{path:e,value:t}of a){const n=t===l?{$exists:!1}:t;o[e.map((({key:e})=>e)).join(".")]=n}return o}static generateUpdateDoc(e){const{newFields:t}=c.recursivelyGatherFieldsAndValuesForUpdate(e,{},!0);if(t.some((({path:e})=>e.some((({key:e})=>e.includes(".")||e.startsWith("$"))))))return t.map((({path:e,value:t})=>({$replaceWith:c.createSetFieldExpr(e,t)})));{const e={};for(const{path:n,value:a}of t)a===l?(e.$unset??={},e.$unset[n.map((({key:e})=>e)).join(".")]=!0):(e.$set??={},e.$set[n.map((({key:e})=>e)).join(".")]=a);return e}}}const d=c;var u=n(67092),m=n(13353),p=n(9174);const h={Added:"Element::Added",Edited:"Element::Edited",Removed:"Element::Removed",Reverted:"Element::Reverted",Converted:"Element::Converted",Invalid:"Element::Invalid",Valid:"Element::Valid",Expanded:"Element::Expanded",Collapsed:"Element::Collapsed",VisibleElementsChanged:"Element::VisibleElementsChanged"};var g=n(34110).Buffer;const f={Array:[],Object:{},Decimal128:0,Int32:0,Int64:0,Double:0,MaxKey:0,MinKey:0,Timestamp:0,Date:0,String:"",Code:"",Binary:"",ObjectId:"",BSONRegExp:"",BSONSymbol:"",Boolean:!1,Undefined:void 0,Null:null,UUID:"",LegacyJavaUUID:"",LegacyCSharpUUID:"",LegacyPythonUUID:""},y=new Date("9999-12-31T23:59:59.999Z").valueOf();function b(e){const t=String(e).length;return 0===t?1:t}function v(e,t={}){const n=m.EJSON.serialize(e,{relaxed:!1});return E(n),JSON.stringify(n,null,"indent"in t?t.indent:2)}function C(e){const t=g.from(e,"base64");if(16!==t.length)return"";const n=t.toString("hex");return[n.substring(0,8),n.substring(8,12),n.substring(12,16),n.substring(16,20),n.substring(20,32)].join("-")}function E(e){if(e&&"object"==typeof e)for(const t of Object.keys(e)){const n=e[t];if("object"==typeof n&&null!==n)if(n.$numberInt)e[t]=+n.$numberInt;else if(n.$numberDouble)Number.isFinite(+n.$numberDouble)&&!Object.is(+n.$numberDouble,-0)&&(e[t]=+n.$numberDouble);else{if(n.$date&&n.$date.$numberLong){const e=n.$date.$numberLong;e>=0&&e<=y&&(n.$date=new Date(+e).toISOString())}if(n.$binary&&"04"===n.$binary.subType&&n.$binary.base64){const a=C(n.$binary.base64);if(a){e[t]={$uuid:a};continue}}E(n)}}}function S(e){return u.Ay.cast(f[e],e)}function k(e,t){if((0,u.IM)(e.currentType))return e.currentType;if("Binary"===e.currentType&&"Binary"===(0,u.TB)(e.currentValue)){const n=e.currentValue;if(n.sub_type===m.Binary.SUBTYPE_UUID)return"UUID";if(n.sub_type===m.Binary.SUBTYPE_UUID_OLD&&16===n.buffer.length&&t)return t}return e.currentType}const w=/^(\[|\{)(.+)(\]|\})$/;class x{element;type;displayType;editing;constructor(e,t){this.element=e,this.type=e.currentType,this.displayType=t??e.currentType,this.editing=!1}edit(e){const t=this.element.currentType;try{const n=u.Ay.cast(e,t);this.element.edit(n)}catch(n){this.element.setInvalid(e,t,n.message)}}paste(e){w.exec(e)?(this.edit(JSON.parse(e)),this.element._bubbleUp(h.Converted,this.element)):this.edit(e)}size(){return b(this.element.currentValue)}value(){return String(this.element.currentValue)}start(){this.editing=!0}complete(){this.editing=!1}}class A extends x{complete(){super.complete(),this.element.isCurrentTypeValid()&&this.element.edit(u.Ay.cast(this._formattedValue(),"Date"))}edit(e){try{"Invalid Date"===u.Ay.cast(e,"Date").toString()?this.element.setInvalid(e,"Date",`${String(e)} is not in a valid date format`):(this.element.currentValue=e,this.element.setValid(),this.element._bubbleUp(h.Edited,this.element))}catch(t){this.element.setInvalid(e,this.element.currentType,t.message)}}size(e){const t=this.element.currentValue;return e?b(t):this.element.isCurrentTypeValid()?b(this._formattedValue()):b(t)}start(){super.start(),this.element.isCurrentTypeValid()&&this.edit(this._formattedValue())}value(){const e=this.element.currentValue;return!this.editing&&this.element.isCurrentTypeValid()?this._formattedValue():String(e)}_formattedValue(){const e=new Date(this.element.currentValue);try{return e.toISOString().replace("Z","+00:00")}catch{return String(e)}}}const D={Cancel:"Document::Cancel",Expanded:"Document::Expanded",Collapsed:"Document::Collapsed",VisibleElementsChanged:"Document::VisibleElementsChanged",EditingStarted:"Document::EditingStarted",EditingFinished:"Document::EditingFinished",MarkedForDeletion:"Document::MarkedForDeletion",DeletionFinished:"Document::DeletionFinished",UpdateStarted:"Document::UpdateStarted",UpdateSuccess:"Document::UpdateSuccess",UpdateBlocked:"Document::UpdateBlocked",UpdateError:"Document::UpdateError",RemoveStarted:"Document::RemoveStarted",RemoveSuccess:"Document::RemoveSuccess",RemoveError:"Document::RemoveError"};function I(e){return"string"==typeof e&&/^__safeContent__($|\.)/.test(e)}const M=["Binary","Code","MinKey","MaxKey","Timestamp","BSONRegExp","Undefined","Null","DBRef"];function T(e){return"Binary"===(0,u.TB)(e)}const L=25;function O(e){return(0,r.isPlainObject)(e)||(0,r.isArray)(e)}class N extends(o()){uuid;key;currentKey;value;currentValue;added;removed;elements;originalExpandableValue;parent;type;currentType;level;currentTypeValid;invalidTypeMessage;decrypted;expanded=!1;maxVisibleElementsCount=L;cancel(){if(this.elements)for(const e of Array.from(this.elements))e.cancel();this.isModified()&&this.revert()}constructor(e,t,n=null,a=!1){let o;super(),this.uuid=(new m.UUID).toHexString(),this.key=e,this.currentKey=e,this.parent=n,this.added=a,this.removed=!1,this.type=u.Ay.type(t),this.currentType=this.type,this.level=this._getLevel(),this.setValid(),"number"==typeof t&&(t=u.Ay.cast(t,u.Ay.type(t))),O(t)?(this.originalExpandableValue=t,this.elements=this._generateElements(t)):(this.value=t,this.currentValue=t),this.parent&&(o=this.parent.isRoot()?this.parent.doc:this.parent.originalExpandableValue);const r=o&&o[Symbol.for("@@mdb.decryptedKeys")];this.decrypted=(r||[]).map(String).includes(String(e))}get nextElement(){return this.parent?.elements?.findNext(this)}get previousElement(){return this.parent?.elements?.findPrevious(this)}_getLevel(){let e=-1,t=this.parent;for(;t;)e++,t=t.parent;return e}edit(e){this.currentType=u.Ay.type(e),O(e)&&!O(this.currentValue)?(this.currentValue=null,this.elements=this._generateElements(e)):!O(e)&&this.elements?(this.currentValue=e,this.elements=void 0):this.currentValue=e,this.setValid(),this._bubbleUp(h.Edited,this)}preserveType(e){switch(this.currentType){case"Object":if(!this.elements)return;for(const t of this.elements){const n=e.get(t.currentKey);n&&t.preserveType(n)}break;case"Int32":{const t=e.currentType;"Double"===t&&this.changeType("Double"),"Int64"===t&&this.changeType("Int64");break}}}preserveTypeFromSchema(e,t){const n=t?`${t}.${String(this.currentKey)}`:String(this.currentKey);if("Object"===this.currentType&&this.elements){for(const t of this.elements)t.preserveTypeFromSchema(e,n);return}if("Int32"!==this.currentType)return;const a=e[n]?.type;if(!a)return;const o=Array.isArray(a)?a:[a];o.includes("Double")?this.changeType("Double"):(o.includes("Long")||o.includes("Int64"))&&this.changeType("Int64")}changeType(e){if("Object"===e)this._convertToEmptyObject();else if("Array"===e)this._convertToEmptyArray();else try{if("Date"===e){const e=this.currentValue&&"Boolean"!==this.currentType?this.generateObject():new Date,t=new A(this);t.edit(e),t.complete()}else if((0,u.IM)(e)&&(0,u.IM)(this.currentType)&&T(this.currentValue)){const t=(0,u.II)(this.currentValue,this.currentType,e);this.edit(t),this.currentType=e,this._bubbleUp(h.Edited,this)}else this.edit(u.Ay.cast(this.generateObject(),e)),(0,u.IM)(e)&&(this.currentType=e,this._bubbleUp(h.Edited,this))}catch(t){this.setInvalid(this.currentValue,e,t.message)}}getRoot(){let e=this.parent;for(;e?.parent;)e=e.parent;return e}get(e){return this.elements?.get(e)}at(e){return this.elements?.at(e)}rename(e){this.currentKey=e,this._bubbleUp(h.Edited,this)}generateObject(e){return"Array"===this.currentType?d.generateArray(this.elements,e):"Object"===this.currentType?d.generate(this.elements,e):this.currentValue}generateOriginalObject(e){if("Array"===this.type){const t=this._generateElements(this.originalExpandableValue);return d.generateOriginalArray(t,e)}if("Object"===this.type){const t=this._generateElements(this.originalExpandableValue);return d.generateOriginal(t,e)}return this.value}toShellSyntax(e="current",t={}){const n="original"===e?this.generateOriginalObject():this.generateObject();return(0,p.AO)(n,t.indent)||"{}"}insertAfter(e,t,n){if(!this.elements)throw new Error("Cannot insert values on non-array/non-object elements");const a=this.elements.insertAfter(e,t,n);return a._bubbleUp(h.Added,a,this),a&&this.elements.at(this.maxVisibleElementsCount-1)===e&&this.maxVisibleElementsCount++,this.emitVisibleElementsChanged(),a}insertEnd(e,t){if(!this.elements)throw new Error("Cannot insert values on non-array/non-object elements");const n=this.elements.insertEnd(e,t,!0);return this._bubbleUp(h.Added,n),this.emitVisibleElementsChanged(),n}insertPlaceholder(){const e="Array"===this.currentType&&this.elements?.lastElement?S(this.elements?.lastElement.currentType):"";return this.insertEnd("",e)}insertSiblingPlaceholder(){const e="Array"===this.parent?.currentType?S(this.currentType):"";return this.parent.insertAfter(this,"",e)}isAdded(){return this.added||!!this.parent?.isAdded()}isBlank(){return""===this.currentKey&&""===this.currentValue}isCurrentTypeValid(){return!!this.currentTypeValid}setValid(){this.currentTypeValid=!0,this.invalidTypeMessage=void 0,this._bubbleUp(h.Valid,this)}setInvalid(e,t,n){this.currentValue=e,this.currentType=t,this.currentTypeValid=!1,this.invalidTypeMessage=n,this._bubbleUp(h.Invalid,this)}isDuplicateKey(e){if(""===e)return!1;for(const t of this.parent?.elements??[])if(t.uuid!==this.uuid&&t.currentKey===e)return!0;return!1}isEdited(){return(this.isRenamed()||!this._valuesEqual()||this.type!==this.currentType)&&!this.isAdded()}_valuesEqual(){return"Date"===this.currentType&&(0,r.isString)(this.currentValue)?(0,r.isEqual)(this.value,new Date(this.currentValue)):"ObjectId"===this.currentType&&(0,r.isString)(this.currentValue)?this._isObjectIdEqual():(0,r.isEqual)(this.value,this.currentValue)}_isObjectIdEqual(){try{return this.value.toHexString()===this.currentValue}catch{return!1}}_isExpandable(){return"Array"===this.currentType||"Object"===this.currentType}isLast(){return this.parent?.elements?.lastElement===this}isRenamed(){return!(this.parent&&!this.parent.isRoot()&&"Object"!==this.parent.currentType)&&this.key!==this.currentKey}hasChangedKey(){return this.key!==this.currentKey}isRevertable(){return this.isEdited()||this.isRemoved()}isRemovable(){return!this.parent.isRemoved()}isNotActionable(){return("_id"===this.key||this.isInternalField())&&!this.isAdded()||!this.isRemovable()}isValueDecrypted(){return this.decrypted}containsDecryptedChildren(){if(this.isValueDecrypted())return!0;for(const e of this.elements||[])if(e.containsDecryptedChildren())return!0;return!1}isValueEditable(){const e=(0,u.IM)(this.currentType),t="Binary"===this.currentType&&T(this.currentValue)&&(this.currentValue.sub_type===m.Binary.SUBTYPE_UUID||this.currentValue.sub_type===m.Binary.SUBTYPE_UUID_OLD&&16===this.currentValue.buffer.length);return this._isKeyLegallyEditable()&&(e||t||!M.includes(this.currentType))}isParentEditable(){return!(this.parent&&!this.parent.isRoot())||this.parent._isKeyLegallyEditable()}_isKeyLegallyEditable(){return this.isParentEditable()&&(this.isAdded()||("_id"!==this.currentKey||!this.parent?.isRoot())&&!this.isInternalField())}isKeyEditable(){return this._isKeyLegallyEditable()&&!this.containsDecryptedChildren()}isInternalField(){return!(!this.parent||(this.parent.isRoot()||!this.parent.isInternalField())&&(!this.parent.isRoot()||!I(this.currentKey)))}isModified(){if(this.elements)for(const e of this.elements)if(e.isModified())return!0;return this.isAdded()||this.isEdited()||this.isRemoved()}isRemoved(){return this.removed}hasAnyRemovedChild(){if(this.elements)for(const e of this.elements)if(e.isRemoved())return!0;return!1}isRoot(){return!1}remove(){this.revert(),this.removed=!0,this.parent&&(this._bubbleUp(h.Removed,this,this.parent),this.emitVisibleElementsChanged(this.parent))}revert(){this.isAdded()?(this.parent?.elements?.remove(this),this._bubbleUp(h.Removed,this,this.parent),this.parent&&this.emitVisibleElementsChanged(this.parent),delete this.parent):(this.originalExpandableValue?(this.elements=this._generateElements(this.originalExpandableValue),this.currentValue=void 0):(null===this.currentValue&&null!==this.value?delete this.elements:this._removeAddedElements(),this.currentValue=this.value),this.currentKey=this.key,this.currentType=this.type,this.removed=!1),this.setValid(),this._bubbleUp(h.Reverted,this)}expand(e=!1){if(this._isExpandable()){if(this.expanded=!0,e&&this.elements)for(const t of this.elements)t.expand(e);this.emit(h.Expanded,this),this.emitVisibleElementsChanged()}}collapse(){if(this._isExpandable()){if(this.expanded=!1,this.elements)for(const e of this.elements)e.collapse();this.emit(h.Collapsed,this),this.emitVisibleElementsChanged()}}_bubbleUp(e,...t){this.emit(e,...t);const n=this.parent;n&&(n.isRoot()?n.emit(e,...t):n._bubbleUp(e,...t))}_convertToEmptyObject(){this.edit({}),this.insertPlaceholder()}_convertToEmptyArray(){this.edit([]),this.insertPlaceholder()}_isElementEmpty(e){return!!e&&e.isAdded()&&e.isBlank()}_generateElements(e){return new _(this,e)}_removeAddedElements(){if(this.elements)for(const e of this.elements)e.isAdded()&&this.elements.remove(e)}getVisibleElements(){return this.elements&&this.expanded?[...this.elements].slice(0,this.maxVisibleElementsCount):[]}setMaxVisibleElementsCount(e){this._isExpandable()&&(this.maxVisibleElementsCount=e,this.emitVisibleElementsChanged())}getTotalVisibleElementsCount(){return this.elements&&this.expanded?this.getVisibleElements().reduce(((e,t)=>e+1+t.getTotalVisibleElementsCount()),0):0}findUUIDs(){let e=0,t=0;if(!this.elements)return{subtype4Count:e,subtype3Count:t};for(const n of this.elements)if("Binary"===n.currentType)4===n.currentValue.sub_type&&e++,3===n.currentValue.sub_type&&t++;else if("Object"===n.currentType||"Array"===n.currentType){const{subtype3Count:a,subtype4Count:o}=n.findUUIDs();t+=a,e+=o}return{subtype4Count:e,subtype3Count:t}}emitVisibleElementsChanged(e=this){e.isRoot()?e.emit(D.VisibleElementsChanged,e):e.expanded&&e._bubbleUp(h.VisibleElementsChanged,e,e.getRoot())}static get Events(){return h}}class _{elements;parent;constructor(e,t){this.parent=e,this.elements=Object.entries(t??{}).map((([t,n])=>new N(this.isArray()?parseInt(t,10):t,n,e,!!e.isRoot()&&e.cloned)))}isArray(){return"Array"===this.parent.currentType}get size(){return this.elements.length}at(e){return this.elements[e]}get(e){return this.elements.find((t=>t.currentKey===e))}some(e){return this.elements.some(e)}every(e){return this.elements.every(e)}get firstElement(){return this.elements[0]}get lastElement(){return this.elements[this.elements.length-1]}insertAfter(e,t,n,a=!0){let o,r=-1;for(const[i,s]of this.elements.entries())e!==s?o&&this.isArray()&&(s.currentKey=i+1):(r=i+1,o=new N(this.isArray()?r:t,n,this.parent,a));return o&&this.elements.splice(r,0,o),o}insertBefore(e,t,n,a=!0){let o,r=-1;for(const[i,s]of this.elements.entries())e===s&&(r=i,o=new N(this.isArray()?r:t,n,this.parent,a)),o&&this.isArray()&&(s.currentKey=i+1);return o&&this.elements.splice(r,0,o),o}insertBeginning(e,t,n=!0){const a=new N(this.isArray()?0:e,t,this.parent,n);return this.isArray()&&this.elements.forEach((e=>{e.currentKey+=1})),this.elements.unshift(a),a}insertEnd(e,t,n=!0){const a=new N(this.isArray()?this.elements.length:e,t,this.parent,n);return this.elements.push(a),a}remove(e){let t=-1;for(const[n,a]of this.elements.entries())a!==e?-1!==t&&this.isArray()&&(a.currentKey-=1):t=n;return-1!==t&&this.elements.splice(t,1),this}findNext(e){const t=this.elements.indexOf(e);return-1!==t?this.elements[t+1]:void 0}findPrevious(e){const t=this.elements.indexOf(e);return-1!==t?this.elements[t-1]:void 0}*[Symbol.iterator](){yield*this.elements}}const F=25;class P extends(o()){uuid;doc;cloned;isUpdatable;elements;type;currentType;size=null;expanded=!1;maxVisibleElementsCount=F;editing=!1;markedForDeletion=!1;modifiedEJSONString=null;cancel(){for(const e of Array.from(this.elements))e.cancel();this.emit(D.Cancel)}constructor(e,t=!1){super(),this.uuid=(new m.UUID).toHexString(),this.doc=e,this.cloned=t||!1,this.isUpdatable=!0,this.type="Document",this.currentType="Document",this.elements=this._generateElements()}apply(e){"function"==typeof e?.generateObject&&(e=e.generateObject());const t=[];let n=null;for(const[a,o]of Object.entries(e))this.get(a)?this.get(a).edit(o):n?this.insertAfter(this.get(n),a,o):this.insertBeginning(a,o),n=a,t.push(a);for(const e of[...this.elements])t.includes(e.currentKey)||e.remove()}preserveTypes(e){const t=this.generateObject();for(const n of Object.keys(t)){const t=this.get(n),a=e.get(n);t&&a&&t.preserveType(a)}}preserveTypesFromSchema(e){for(const t of this.elements)t.preserveTypeFromSchema(e,"")}generateObject(e){return d.generate(this.elements,e)}generateOriginalObject(e){return d.generateOriginal(this.elements,e)}generateUpdateUnlessChangedInBackgroundQuery(e={}){const t=d.getQueryForOriginalKeysAndValuesForSpecifiedFields(this,e,!0);return{query:{_id:this.getId(),...t},updateDoc:d.generateUpdateDoc(this)}}get(e){return this.elements.get(e)}getChild(e){if(!e)return;let t=this.elements.get(e[0]),n=1;for(;n<e.length;){if(void 0===t)return;t="Array"===t.currentType?t.at(e[n]):t.get(e[n]),n++}return t}getId(){const e=this.get("_id");return e?e.generateObject():null}getQueryForOriginalKeysAndValuesForSpecifiedKeys(e={}){return d.getQueryForOriginalKeysAndValuesForSpecifiedFields(this,e,!1)}getStringId(){const e=this.get("_id");return e?"Array"===e.currentType||"Object"===e.currentType?JSON.stringify(e.generateObject()):String(e.value):null}insertPlaceholder(){return this.insertEnd("","")}insertBeginning(e,t){const n=this.elements.insertBeginning(e,t);return n._bubbleUp(h.Added,n,this),this.emit(D.VisibleElementsChanged,this),n}insertEnd(e,t){const n=this.elements.insertEnd(e,t);return n._bubbleUp(h.Added,n,this),this.emit(D.VisibleElementsChanged,this),n}insertAfter(e,t,n){const a=this.elements.insertAfter(e,t,n);return a?._bubbleUp(h.Added,a,this),a&&this.elements.at(this.maxVisibleElementsCount-1)===e&&this.maxVisibleElementsCount++,this.emit(D.VisibleElementsChanged,this),a}isAdded(){return!1}isModified(){for(const e of this.elements)if(e.isModified())return!0;return!1}isRemoved(){return!1}isRoot(){return!0}_generateElements(){return new _(this,this.doc)}static get Events(){return D}static FromEJSON(e){const t=m.EJSON.parse(e,{relaxed:!1});return new P(t)}static FromEJSONArray(e){const t=m.EJSON.parse(e,{relaxed:!1});return Array.isArray(t)?t.map((e=>new P(e))):[new P(t)]}toEJSON(e="current",t={}){return v("original"===e?this.generateOriginalObject():this.generateObject(),t)}toShellSyntax(e="current",t={}){const n="original"===e?this.generateOriginalObject():this.generateObject();return(0,p.AO)(n,t.indent)||"{}"}expand(){this.expanded=!0;for(const e of this.elements)e.expand(!0);this.emit(D.Expanded),this.emit(D.VisibleElementsChanged,this)}collapse(){this.expanded=!1;for(const e of this.elements)e.collapse();this.emit(D.Collapsed),this.emit(D.VisibleElementsChanged,this)}getVisibleElements(){return[...this.elements].slice(0,this.maxVisibleElementsCount)}setMaxVisibleElementsCount(e){this.maxVisibleElementsCount=e,this.emit(D.VisibleElementsChanged,this)}getTotalVisibleElementsCount(){return this.getVisibleElements().reduce(((e,t)=>e+1+t.getTotalVisibleElementsCount()),0)}findUUIDs(){let e=0,t=0;for(const n of this.elements)if("Binary"===n.currentType)4===n.value.sub_type&&e++,3===n.value.sub_type&&t++;else if("Object"===n.currentType||"Array"===n.currentType){const{subtype3Count:a,subtype4Count:o}=n.findUUIDs();t+=a,e+=o}return{subtype3Count:t,subtype4Count:e}}startEditing(e,t){this.editing||(this.editing=!0,this.emit(D.EditingStarted,e,t))}finishEditing(){this.editing&&(this.editing=!1,this.setModifiedEJSONString(null),this.emit(D.EditingFinished))}onUpdateStart(){this.emit(D.UpdateStarted)}onUpdateSuccess(e){this.emit(D.UpdateSuccess,e),this.finishEditing()}onUpdateBlocked(){this.emit(D.UpdateBlocked)}onUpdateError(e){this.emit(D.UpdateError,e,e.errInfo)}markForDeletion(){this.markedForDeletion||(this.markedForDeletion=!0,this.emit(D.MarkedForDeletion))}finishDeletion(){this.markedForDeletion&&(this.markedForDeletion=!1,this.emit(D.DeletionFinished))}onRemoveStart(){this.emit(D.RemoveStarted)}onRemoveSuccess(){this.emit(D.RemoveSuccess),this.finishDeletion()}onRemoveError(e){this.emit(D.RemoveError,e,e.errInfo)}setModifiedEJSONString(e){this.modifiedEJSONString=e}}class W extends x{}class R extends x{complete(){super.complete(),this.element.isCurrentTypeValid()&&this.element.edit(u.Ay.cast(this.element.currentValue,"Decimal128"))}edit(e){try{u.Ay.cast(e,"Decimal128"),this.element.currentValue=e,this.element.setValid(),this.element._bubbleUp(h.Edited,this.element)}catch(t){this.element.setInvalid(e,this.element.currentType,t.message)}}}class U extends x{size(){return b(this.element.currentValue.valueOf())}}class $ extends x{complete(){super.complete(),this.element.isCurrentTypeValid()&&this.element.edit(u.Ay.cast(this.element.currentValue,"Int64"))}edit(e){try{u.Ay.cast(e,"Int64"),this.element.currentValue=e,this.element.setValid(),this.element._bubbleUp(h.Edited,this.element)}catch(t){this.element.setInvalid(e,this.element.currentType,t.message)}}}class V extends x{complete(){super.complete(),this.element.isCurrentTypeValid()&&this.element.edit(u.Ay.cast(this.element.currentValue,"Double"))}edit(e){try{const t=u.Ay.cast(e,"Double");isNaN(t.value)?this.element.setInvalid(e,"Double",`${String(e)} is not a valid double format`):(this.element.currentValue=e,this.element.setValid(),this.element._bubbleUp(h.Edited,this.element))}catch(t){this.element.setInvalid(e,this.element.currentType,t.message)}}size(){const e=this.element.currentValue;return b("function"==typeof e.valueOf?e.valueOf():e)}}class H extends x{size(){return 4}value(){return"null"}}class K extends x{size(){return 9}value(){return"undefined"}}class j extends x{complete(){super.complete(),this.element.isCurrentTypeValid()&&this.element.edit(u.Ay.cast(this.element.currentValue,"ObjectId"))}edit(e){try{u.Ay.cast(e,"ObjectId"),this.element.currentValue=e,this.element.setValid(),this.element._bubbleUp(h.Edited,this.element)}catch(t){this.element.setInvalid(e,this.element.currentType,t.message)}}start(){super.start(),this.element.isCurrentTypeValid()&&this.edit(String(this.element.currentValue))}}class B extends x{uuidType;constructor(e,t){super(e,t),this.uuidType=(0,u.IM)(this.displayType)?this.displayType:"UUID"}value(){const e=this.element.currentValue;if("string"==typeof e)return e;if("Binary"===(0,u.TB)(e)){const t=e;switch(this.uuidType){case"LegacyJavaUUID":return(e=>{const t=e.toString("hex"),n=(0,u.j$)(t);return(0,u.P6)(n)})(t);case"LegacyCSharpUUID":return(e=>{const t=e.toString("hex"),n=(0,u.q2)(t);return(0,u.P6)(n)})(t);case"LegacyPythonUUID":return(e=>{const t=e.toString("hex");return(0,u.P6)(t)})(t);default:return(e=>{try{return e.toUUID().toString()}catch{return e.toString("hex")}})(t)}}return String(e)}edit(e){try{u.Ay.cast(e,this.uuidType),this.element.currentValue=e,this.element.setValid(),this.element._bubbleUp(h.Edited,this.element)}catch(t){this.element.setInvalid(e,this.element.currentType,t.message)}}start(){super.start(),this.element.isCurrentTypeValid()&&(this.element.currentType=this.uuidType,this.edit(this.value()))}complete(){super.complete(),this.element.isCurrentTypeValid()&&(this.element.edit(u.Ay.cast(this.element.currentValue,this.uuidType)),this.element.currentType=this.uuidType)}}const z=Object.assign(((e,t)=>({Standard:new x(e,t),String:new W(e,t),Decimal128:new R(e,t),Date:new A(e,t),Double:new V(e,t),Int32:new U(e,t),Int64:new $(e,t),Null:new H(e,t),Undefined:new K(e,t),ObjectId:new j(e,t),UUID:new B(e,t)})),{DateEditor:A,StandardEditor:x,StringEditor:W,Decimal128Editor:R,DoubleEditor:V,Int32Editor:U,Int64Editor:$,NullEditor:H,UndefinedEditor:K,ObjectIdEditor:j,UUIDEditor:B});function Y(e){switch(e){case"Date":case"String":case"Decimal128":case"Double":case"Int32":case"Int64":case"Null":case"Undefined":case"ObjectId":return e;case"UUID":case"LegacyJavaUUID":case"LegacyCSharpUUID":case"LegacyPythonUUID":return"UUID";default:return"Standard"}}function q(e){const t=Y(e);return z[`${t}Editor`]}const G=P},43750:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=43750,e.exports=t},44419:()=>{},45363:(e,t,n)=>{n.d(t,{$L:()=>v,BE:()=>u.BE,Vr:()=>C,__:()=>E,i2:()=>u.i2,lB:()=>y,nW:()=>d.n});var a=n(96652),o=n.n(a),r=n(94134),i=n(29719),s=n(62183),l=n(70918),c=n(14956),d=n(25657),u=n(6924);function m(){return(0,r.d4)(i.e6)}const p=Symbol("useActiveWorkspaceSelector"),h=()=>{throw new Error("Can't find Workspaces service in React context. Make sure you are using workspaces service and hooks inside Workspaces scope")},g={getActiveWorkspace:()=>(h(),null),openMyQueriesWorkspace:h,openDataModelingWorkspace:h,openShellWorkspace:h,openDatabasesWorkspace:h,openPerformanceWorkspace:h,openCollectionsWorkspace:h,openCollectionWorkspaceSubtab:h,openCollectionWorkspace:h,openEditViewWorkspace:h,[p]:()=>(h(),null)},f=o().createContext(g),y=({value:e,children:t})=>(e??=(()=>{const e=function(){try{return(0,r.Pj)()}catch{throw new Error("Can't find Workspaces store in React context. Make sure you are using workspaces service and hooks inside Workspaces scope")}}();return(0,a.useRef)({getActiveWorkspace:()=>(0,i.e6)(e.getState()),openMyQueriesWorkspace:t=>{e.dispatch((0,i.OH)({type:"My Queries"},t))},openDataModelingWorkspace:(t={})=>{e.dispatch((0,i.OH)({type:"Data Modeling"},{newTab:t.newTab??!0}))},openShellWorkspace(t,n={}){const{newTab:a,...o}=n;e.dispatch((0,i.OH)({type:"Shell",connectionId:t,...o},{newTab:a}))},openDatabasesWorkspace:(t,n)=>{e.dispatch((0,i.OH)({type:"Databases",connectionId:t},n))},openPerformanceWorkspace:(t,n)=>{e.dispatch((0,i.OH)({type:"Performance",connectionId:t},n))},openCollectionsWorkspace:(t,n,a)=>{e.dispatch((0,i.OH)({type:"Collections",connectionId:t,namespace:n},a))},openCollectionWorkspace:(t,n,a)=>{const{newTab:o,...r}=a??{};e.dispatch((0,i.OH)({type:"Collection",connectionId:t,namespace:n,...r},{newTab:o}))},openCollectionWorkspaceSubtab(t,n){e.dispatch((0,i.pU)(t,n))},openEditViewWorkspace:(t,n,a)=>{const{newTab:o,sourceName:r,sourcePipeline:s}=a??{};e.dispatch((0,i.OH)({type:"Collection",connectionId:t,namespace:r,initialPipeline:s,editViewName:n},{newTab:o}))},[p]:m}).current})(),o().createElement(f.Provider,{value:e},t));function b(){const e=(0,a.useContext)(f);if(!e)throw new Error("Can't find Workspaces service in React context. Make sure you are using workspaces service and hooks inside Workspaces scope");const t=(0,l.Op)();return{...e,...t}}function v(){const{openShellWorkspace:e,openCollectionWorkspace:t,openCollectionsWorkspace:n,openDatabasesWorkspace:a,openMyQueriesWorkspace:o,openDataModelingWorkspace:r,openPerformanceWorkspace:i,openEditViewWorkspace:s}=b();return(0,c.nfZ)({openShellWorkspace:e,openCollectionWorkspace:t,openCollectionsWorkspace:n,openDatabasesWorkspace:a,openMyQueriesWorkspace:o,openDataModelingWorkspace:r,openPerformanceWorkspace:i,openEditViewWorkspace:s})}function C(){const e=b();return e[p]?.(),e.getActiveWorkspace()}const E=(0,s.mb)(b,"workspacesServiceLocator")},46410:e=>{e.exports=window.__compassWebSharedRuntime.ReactDOM},48901:(e,t,n)=>{n.r(t),n.d(t,{__esModule:()=>a.BJ,createAgent:()=>o,createFetch:()=>l,createSocks5Tunnel:()=>i,extractProxySecrets:()=>a.R5,hookLogger:()=>s,mergeProxySecrets:()=>a.On,resetSystemCACache:()=>d,systemCA:()=>c,translateToElectronProxyConfig:()=>a.U$,useOrCreateAgent:()=>r});var a=n(72099);function o(){}function r(){}function i(){}function s(){}function l(){throw new Error("node-fetch like-API not available in compass-web")}function c(){throw new Error("system CA access not available in compass-web")}function d(){throw new Error("system CA access not available in compass-web")}},49042:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c,deflate:()=>l,inflate:()=>s}),n(64990),n(90801),n(95774),n(77767);var a=n(34110).Buffer;const o="deflate";function r(e,t){return"function"==typeof e?e:t}function i(e,t,n){(async()=>{let o;try{o=await async function(e,t){const n=e.writable.getWriter(),o=new Response(e.readable).arrayBuffer();await n.ready,await n.write(t),await n.close();const r=new Uint8Array(await o);return a.from(r.buffer,r.byteOffset,r.byteLength)}(e(),t)}catch(e){return void n(e)}n(null,o)})()}function s(e,t,n){i((()=>new DecompressionStream(o)),e,r(t,n))}function l(e,t,n){i((()=>new CompressionStream(o)),e,r(t,n))}const c={inflate:s,deflate:l}},49797:(e,t,n)=>{n.d(t,{Y1:()=>_h.Y1,JV:()=>Nh,qP:()=>Fh.q,Cv:()=>Fh.C});var a=n(55712),o=n(96652),r=n.n(o),i=n(62183),s=n(60783),l=n(22007),c=n(29719),d=n(14956),u=n(25657),m=n(17855),p=n(44142),h=n(94134),g=n(44457),f=n(70918),y=n(6924);const b=(0,d.AHW)({display:"contents"}),v=({children:e})=>{const t=(0,o.useRef)(!1),[n,a]=(0,y.i2)("hasInteractedOnce",!1);(0,o.useEffect)((()=>(t.current=!0,()=>{t.current=!1})));const i=(0,o.useCallback)((()=>{(0,d.Rbc)((()=>{t.current&&a(!0)}))}),[a]);return(0,f.wT)((()=>!n)),r().createElement("div",{className:b,onKeyDown:i,onClickCapture:i},e)},C=({tab:e,onNamespaceNotFound:t,sectionType:n,children:a})=>{const o=function(e){switch(e.type){case"Welcome":case"My Queries":case"Data Modeling":case"Performance":case"Databases":return null;case"Shell":return{initialEvaluate:e.initialEvaluate,initialInput:e.initialInput};case"Collections":return{namespace:e.namespace};case"Collection":{const{id:t,type:n,connectionId:a,...o}=e;return{tabId:t,...o}}}}(e),{getWorkspacePluginByName:l}=(0,u.n)(),{provider:d}=l(e.type),m="tab-title"===n?function(e){return{..."namespace"in e?{namespace:e.namespace}:{},..."inferredFromPrivileges"in e?{inferredFromPrivileges:e.inferredFromPrivileges}:{},..."Collection"===e.type&&e.editViewName?{editViewName:e.editViewName}:{}}}(e):o;return m&&(a=r().cloneElement(a,m)),a=r().createElement(d,o,a),"namespace"in e&&(a=r().createElement(g.Hr,{namespace:e.namespace,onNamespaceFallbackSelect:n=>{t?.(e,n)}},a)),"connectionId"in e&&(a=r().createElement(s.Av,{connectionInfoId:e.connectionId},a)),"tab-content"===n&&(a=r().createElement(v,null,a)),r().createElement(y.VV,{id:e.id},r().createElement(i.GL,{key:e.id,scopeName:"Workspace Tab",localAppRegistry:(0,c.sN)(e.id),deactivateOnUnmount:!1},r().createElement(s.n2,{connectionId:"connectionId"in e?e.connectionId:void 0},a)))},E=(0,d.AHW)({margin:"0 auto",alignSelf:"center",opacity:.05}),S=()=>{const e=(0,d.D27)();return r().createElement("div",{className:E},r().createElement(d.FHx,{height:2*d.YKD[7],color:e?"white":"black"}))},k=(0,d.AHW)({display:"grid",width:"100%",height:"100%",gridTemplateColumns:"100%",gridTemplateRows:"auto 1fr"}),w=(0,d.AHW)({display:"flex",minHeight:0}),x=(0,d.AHW)({display:"flex",minWidth:"600px",width:"100%"}),A=(0,h.Ng)((e=>{const t=(0,c.e6)(e);return{tabs:e.tabs,activeTab:t,collectionInfo:e.collectionInfo,databaseInfo:e.databaseInfo}}),{onSelectTab:c.cN,onSelectNextTab:c.Ff,onSelectPrevTab:c.fy,onMoveTab:c.HC,onCreateTab:c.r9,onDuplicateTab:c.NC,onCloseTab:c.mR,onCloseAllOtherTabs:c.ye,onNamespaceNotFound:c.qo})((({tabs:e,activeTab:t,collectionInfo:n,databaseInfo:i,openOnEmptyWorkspace:s,onSelectTab:l,onSelectNextTab:c,onSelectPrevTab:h,onMoveTab:g,onCreateTab:f,onDuplicateTab:y,onCloseTab:b,onCloseAllOtherTabs:v,onNamespaceNotFound:E})=>{const{log:A,mongoLogId:D}=(0,p.Ul)("COMPASS-WORKSPACES"),{getWorkspacePluginByName:I}=(0,u.n)(),M=e.findIndex((e=>e===t)),T=(0,o.useCallback)((()=>{f(s)}),[f,s]),L=(0,o.useMemo)((()=>e.map((e=>{const t=I(e.type);if(!t)throw new Error(`Content component for workspace "${e.type}" is missing in context. Did you forget to set up WorkspacesProvider?`);const{content:o,header:s}=t;let l;if("Collections"===e.type){const t=e.namespace,n=`${e.connectionId}.${t}`,{inferredFromPrivileges:a}=i[n]??{};l=a}else if("Collection"===e.type){const{ns:t}=(0,m.Ay)(e.namespace),a=`${e.connectionId}.${t}`,{inferredFromPrivileges:o}=n[a]??{};l=o}return{id:e.id,renderTab:t=>r().createElement(d.tHk,{displayName:e.type,onError:(t,n)=>{A.error(D(1001000360),"Workspace","Rendering workspace tab header failed",{name:e.type,error:t.message,errorInfo:n})}},r().createElement(C,{tab:e,sectionType:"tab-title"},r().createElement(s,(0,a.A)({},t,l?{inferredFromPrivileges:l}:{})))),content:r().createElement(d.tHk,{displayName:e.type,onError:(t,n)=>{A.error(D(1001000277),"Workspace","Rendering workspace tab content failed",{name:e.type,error:t.message,errorInfo:n})}},r().createElement(C,{tab:e,sectionType:"tab-content",onNamespaceNotFound:E},r().createElement(o,null)))}}))),[I,e,A,n,i,D,E]),O=L[M]?.content??null;return r().createElement("div",{className:k,"data-testid":"workspace-tabs-container"},r().createElement(d.A6A,{"aria-label":"Workspace Tabs",onSelectTab:l,onSelectNextTab:c,onSelectPrevTab:h,onMoveTab:g,onCreateNewTab:T,onDuplicateTab:y,onCloseTab:b,onCloseAllOtherTabs:v,tabs:L,selectedTabIndex:M}),r().createElement("div",{className:w},r().createElement(d.fDz,null,r().createElement("div",{className:x},t&&O?O:r().createElement(S,null)))))}));var D=n(45363),I=n(94363);const M=(0,d.AHW)({backgroundColor:d.MFm.white,color:d.MFm.gray.dark2}),T=(0,d.AHW)({backgroundColor:d.MFm.black,color:d.MFm.white}),L=(0,d.AHW)({width:"100%",height:"100%",display:"grid",gridTemplateColumns:"min-content auto",minHeight:0,overflowX:"auto"}),O=(0,d.AHW)({minHeight:0,overflow:"hidden",minWidth:"730px"}),N=(0,d.AHW)({minHeight:0}),_=(0,h.Ng)((e=>{const t=(0,c.e6)(e);return{activeTab:t,activeTabCollectionInfo:"Collection"===t?.type?e.collectionInfo[`${t.connectionId}.${t.namespace}`]:null}}))((({activeTab:e,activeTabCollectionInfo:t,openOnEmptyWorkspace:n,onActiveWorkspaceTabChange:a,renderSidebar:i,renderModals:s})=>{const l=(0,d.D27)(),c=(0,d.HIF)(a);return(0,o.useEffect)((()=>{c.current(e,t)}),[e,t,c]),(0,I.ZX)("activeWorkspace",e),r().createElement(D.lB,null,r().createElement("div",{className:(0,d.cx)(L,l?T:M)},r().createElement("div",{className:N},i?.()),r().createElement("div",{className:O},r().createElement(A,{openOnEmptyWorkspace:n}))),s?.())}));var F=n(82162),P=n(67219);const W=(()=>{let e;return(t,n)=>{clearTimeout(e),e=setTimeout((()=>{!async function(e,t){try{const n={tabs:e.tabs.filter((e=>"Welcome"!==e.type)),activeTabId:e.activeTabId,timestamp:Date.now()};await t.userData.write("saved-workspaces",n)}catch(e){t.logger.log.error((0,p.oW)(1001000229),"Workspaces middleware","Failed to save workspace state to UserData",{error:e})}}(t,n)}),250)}})();var R=n(20625),U=n(56900);const $=U.z.enum(["Documents","Aggregations","Schema","Indexes","Validation","GlobalWrites"]),V=U.z.object({type:U.z.literal("Welcome")}),H=U.z.object({type:U.z.literal("My Queries")}),K=U.z.object({type:U.z.literal("Data Modeling")}),j=U.z.object({type:U.z.literal("Databases"),connectionId:U.z.string()}),B=U.z.object({type:U.z.literal("Performance"),connectionId:U.z.string()}),z=U.z.object({type:U.z.literal("Shell"),connectionId:U.z.string(),initialEvaluate:U.z.union([U.z.string(),U.z.array(U.z.string())]).optional(),initialInput:U.z.string().optional()}),Y=U.z.object({type:U.z.literal("Collections"),connectionId:U.z.string(),namespace:U.z.string(),inferredFromPrivileges:U.z.boolean().optional()}),q=U.z.object({type:U.z.literal("Collection"),subTab:$,initialQuery:U.z.record(U.z.any()).optional(),initialPipeline:U.z.array(U.z.unknown()).optional(),initialPipelineText:U.z.string().optional(),initialAggregation:U.z.unknown().optional(),editViewName:U.z.string().optional(),connectionId:U.z.string(),namespace:U.z.string(),inferredFromPrivileges:U.z.boolean().optional()}),G=U.z.discriminatedUnion("type",[V,H,K,j,B,z,Y,q]).and(U.z.object({id:U.z.string()})),Z=U.z.object({tabs:U.z.array(G),activeTabId:U.z.string().nullable(),timestamp:U.z.number()}),J=()=>{throw new Error("Can't find Workspaces storage service in React context")};class Q extends U.ZN{write(){return J(),Promise.resolve(!0)}delete(){return J(),Promise.resolve(!0)}readAll(){return J(),Promise.resolve({data:[],errors:[]})}readOne(){return J(),Promise.resolve(void 0)}updateAttributes(){return J(),Promise.resolve(!0)}}const X=new Q(Z,"WorkspacesState"),ee=r().createContext(X),te=(0,i.mb)((()=>(0,o.useContext)(ee)),"workspacesStorageServiceLocator");var ne=n(13353);const ae=({orgId:e,projectId:t,atlasService:n,children:a})=>{const o=(0,d.nfZ)(new U.Tu(Z,"WorkspacesState",{orgId:e,projectId:t,atlasService:n,serialize:e=>ne.EJSON.stringify(e,{relaxed:!1}),deserialize:e=>ne.EJSON.parse(e)}));return r().createElement(ee.Provider,{value:o},a)};const oe=(0,i.nk)({name:"Workspaces",component:_,activate:function({initialWorkspaceTabs:e,onBeforeUnloadCallbackRequest:t},{globalAppRegistry:n,instancesManager:a,connections:o,logger:r,preferences:i,userData:s},{on:l,cleanup:d,addCleanup:u}){const m=function(e,t){const n=e&&e.length>0?e.map((e=>(0,c.Tr)(e))):[],a=(0,F.y$)(c.Ay,{tabs:n,activeTabId:n[n.length-1]?.id??null,collectionInfo:{},databaseInfo:{}},(0,F.Tw)(P.A.withExtraArgument(t),function(e){return t=>n=>a=>{const o=t.getState(),r=n(a),i=t.getState();return o!==i&&e.preferences.getPreferences().enableRestoreWorkspaces&&W(i,e),r}}(t)));return a}(e,{globalAppRegistry:n,instancesManager:a,connections:o,logger:r,preferences:i,userData:s});m.dispatch((0,c.yv)()),u(c.KB);const p=(e,t)=>{l(t,"change:collections._id",(e=>{const{_id:t}=e.previousAttributes();m.dispatch((0,c.fL)(t,e.ns))})),l(t,"change:databases.inferred_from_privileges",(t=>{const n=`${e}.${t._id}`,a={inferredFromPrivileges:t.inferred_from_privileges};m.dispatch((0,c.vn)(n,a))})),l(t,"change:collections.inferred_from_privileges",(t=>{const n=`${e}.${t._id}`,a={isTimeSeries:t.isTimeSeries,isReadonly:t.readonly??t.isView,sourceName:t.sourceName,inferredFromPrivileges:t.inferred_from_privileges};m.dispatch((0,c.gb)(n,a))})),l(t,"remove:collections",(e=>{m.dispatch((0,c.Xc)(e.ns))})),l(t,"remove:databases",(e=>{m.dispatch((0,c.mS)(e.name))}))};for(const[e,t]of a.listMongoDBInstances())p(e,t);return l(a,g.hV.InstanceCreated,(function(e,t){p(e,t)})),l(o,"disconnected",(function(e){m.dispatch((0,c.oY)(e))})),t?.((()=>m.dispatch((0,c.PM)()))),{store:m,context:h.hN,deactivate:d}}},{instancesManager:g.Q3,connections:s.u4,logger:(0,p.fF)("COMPASS-WORKSPACES-UI"),preferences:R.fx,userData:te});var re=n(28508),ie=n(40260),se=n.n(ie);function le(e,t){return e.type===t}const ce={collections:[],collectionsLoadingStatus:{status:"initial",error:null},instance:{isWritable:!1,isDataLake:!1}},de="compass-collections/COLLECTIONS_CHANGED",ue="compass-collections/INSTANCE_CHANGED",me=e=>({type:ue,isWritable:e.isWritable,isDataLake:e.dataLake.isDataLake}),pe=(e=ce,t)=>le(t,de)?{...e,collections:t.collections,collectionsLoadingStatus:t.status===e.collectionsLoadingStatus.status?e.collectionsLoadingStatus:{status:t.status,error:t.error}}:le(t,ue)?{...e,instance:{isWritable:t.isWritable,isDataLake:t.isDataLake}}:e;function he(e,t){return e.type===t}const ge={databases:[],databasesLoadingStatus:{status:"initial",error:null},instance:{isReadonly:!1,isWritable:!0,isGenuineMongoDB:!0,isDataLake:!1}},fe="databases-workspace/instance-changed",ye="databases-workspaces/databases-changed",be=(e=ge,t)=>he(t,fe)?{...e,instance:{isWritable:t.isWritable,isDataLake:t.isDataLake,isGenuineMongoDB:t.isGenuineMongoDB}}:he(t,ye)?{...e,databases:t.databases,databasesLoadingStatus:{status:t.status,error:t.error}}:e,ve="Collections",Ce=(0,i.nk)({name:"Collections",component:function({children:e}){return r().createElement(r().Fragment,null,e)},activate:function(e,{globalAppRegistry:t,instance:n,dataService:a,database:o},{on:r,cleanup:i,addCleanup:s}){const l=(0,F.y$)(pe,{collections:o.collections.toJSON(),collectionsLoadingStatus:{status:o.collectionsStatus,error:o.collectionsStatusError},instance:{isWritable:n.isWritable,isDataLake:n.dataLake.isDataLake}},(0,F.Tw)(P.A.withExtraArgument({globalAppRegistry:t,database:o,dataService:a}))),c=se()((()=>{l.dispatch((e=>({type:de,status:e.collectionsStatus,error:e.collectionsStatusError,collections:e.collections.toJSON()}))(o))}),300,{leading:!0,trailing:!0});return s((()=>{c.cancel()})),r(o,"change:collectionsStatus",c),r(o,"change:collections.status",c),r(o,"change:collections._id",c),r(o,"add:collections",c),r(o,"remove:collections",c),r(n,"change:dataLake.isDataLake",(()=>{l.dispatch(me(n))})),r(n,"change:isWritable",(()=>{l.dispatch(me(n))})),o.fetchCollectionsDetails({dataService:a}),{store:l,deactivate:i}}},{instance:g.A$,database:g.p8,dataService:s.S1});var Ee=n(19125),Se=(n(95039),n(9174)),ke=n(39061);const we={isRunning:!1,isVisible:!1,databaseName:null,error:null,connectionId:"",connectionMetaData:{}},xe="databases-collections/Reset",Ae="databases-collections/create-collection/Open",De="databases-collections/create-collection/Close",Ie="databases-collections/error/HandleError",Me="databases-collections/error/ClearError",Te="databases-collections/is-running/ToggleIsRunning",Le="databases-collections/TopologyChanged",Oe="databases-collections/ServerVersionRetrieved",Ne="databases-collections/KMSProvidersRetrieved",_e=(e,t=null)=>(n,a,{track:o})=>{o("Screen",{name:t?"create_collection_modal":"create_database_modal"},void 0),n({type:Ae,connectionId:e,databaseName:t})},Fe=e=>({type:Ie,error:e}),Pe=()=>({type:Me}),We=e=>({type:Te,isRunning:e}),Re=(e,t)=>({type:Le,connectionId:e,newTopology:t}),Ue=(e,t)=>({type:Oe,connectionId:e,version:t});function $e(e,t){return e.type===t}const Ve=(e=we,t)=>$e(t,xe)?{...we}:$e(t,De)?{...we,connectionMetaData:e.connectionMetaData}:$e(t,Ae)?{...e,connectionId:t.connectionId,databaseName:t.databaseName,isRunning:!1,isVisible:!0,error:null}:$e(t,Ie)?{...e,error:t.error}:$e(t,Me)?{...e,error:null}:$e(t,Te)?{...e,isRunning:t.isRunning}:$e(t,Le)?{...e,connectionMetaData:{...e.connectionMetaData,[t.connectionId]:{...e.connectionMetaData[t.connectionId],currentTopologyType:t.newTopology}}}:$e(t,Oe)?{...e,connectionMetaData:{...e.connectionMetaData,[t.connectionId]:{...e.connectionMetaData[t.connectionId],serverVersion:t.version}}}:$e(t,Ne)?{...e,connectionMetaData:{...e.connectionMetaData,[t.connectionId]:{...e.connectionMetaData[t.connectionId],configuredKMSProviders:t.configuredKMSProviders}}}:e;var He=n(75342),Ke=n.n(He),je=n(90605),Be=n.n(je);function ze({collectionName:e,onChangeCollectionName:t}){return r().createElement(d.GEW,null,r().createElement(d.ksK,{required:!0,label:"Collection Name","data-testid":"collection-name",onChange:e=>t(e.target.value),value:e,spellCheck:!1}))}ze.propTypes={collectionName:Ke().string.isRequired,onChangeCollectionName:Ke().func.isRequired};const Ye=ze;function qe({databaseName:e,onChangeDatabaseName:t}){return r().createElement(d.GEW,null,r().createElement(d.ksK,{required:!0,label:"Database Name","data-testid":"database-name",onChange:e=>t(e.target.value),value:e,spellCheck:!1}))}qe.propTypes={databaseName:Ke().string.isRequired,onChangeDatabaseName:Ke().func.isRequired};const Ge=qe;var Ze=n(48783),Je=n.n(Ze);const Qe=(0,d.AHW)({zIndex:1,"button:focus, button:focus-within":{zIndex:20}}),Xe=["seconds","minutes","hours"];function et({isTimeSeries:e,isClustered:t,isFLE2:n,onChangeIsTimeSeries:a,onChangeField:i,timeSeries:s,expireAfterSeconds:l,supportsFlexibleBucketConfiguration:c}){const{granularity:u,metaField:m,timeField:p,bucketMaxSpanSeconds:h,bucketRoundingSeconds:g}=s,f=(0,o.useCallback)((e=>{const{name:t,value:n}=e.currentTarget;i(t,n)}),[i]);return r().createElement(d.V7r,{disabled:t||n,onToggle:e=>a(e),toggled:e,label:"Time-Series","data-testid":"time-series-fields",helpUrl:"https://www.mongodb.com/docs/manual/core/timeseries-collections/",description:"Time-series collections efficiently store sequences of measurements over a period of time."},r().createElement(d.GEW,null,r().createElement(d.ksK,{value:p,label:"timeField",name:"timeSeries.timeField",description:"Specify which field should be used as timeField for the time-series collection. This field must have a BSON type date.",required:!0,onChange:f,spellCheck:!1})),r().createElement(d.GEW,null,r().createElement(d.ksK,{label:"metaField",name:"timeSeries.metaField",description:"The metaField is the designated field for metadata.",optional:!0,value:m,onChange:f,spellCheck:!1})),r().createElement(d.GEW,null,r().createElement(d.l6P,{id:"timeSeries-granularity",className:Qe,label:"granularity",name:"timeSeries.granularity",placeholder:"Select a value [optional]",description:"The granularity field allows specifying a coarser granularity so measurements over a longer time span can be more efficiently stored and queried.",onChange:e=>i("timeSeries.granularity",e),allowDeselect:!0,value:u,disabled:!(!h&&!g)},Xe.map((e=>r().createElement(d.c$x,{key:e,value:e},e))))),c&&r().createElement(r().Fragment,null,r().createElement(d.GEW,null,r().createElement(d.ksK,{value:h,label:"bucketMaxSpanSeconds",name:"timeSeries.bucketMaxSpanSeconds",description:"The maximum time span between measurements in a bucket.",optional:!0,type:"number",onChange:f,spellCheck:!1,disabled:!!u})),r().createElement(d.GEW,null,r().createElement(d.ksK,{value:g,label:"bucketRoundingSeconds",name:"timeSeries.bucketRoundingSeconds",description:"The time interval that determines the starting timestamp for a new bucket.",optional:!0,type:"number",onChange:f,spellCheck:!1,disabled:!!u}))),r().createElement(d.GEW,null,r().createElement(d.ksK,{value:l,label:"expireAfterSeconds",name:"expireAfterSeconds",description:"The expireAfterSeconds field enables automatic deletion of documents older than the specified number of seconds.",optional:!0,type:"number",onChange:f,spellCheck:!1})))}et.propTypes={isTimeSeries:Ke().bool.isRequired,isClustered:Ke().bool.isRequired,isFLE2:Ke().bool.isRequired,onChangeIsTimeSeries:Ke().func.isRequired,onChangeField:Ke().func.isRequired,timeSeries:Ke().object.isRequired,expireAfterSeconds:Ke().string.isRequired,supportsFlexibleBucketConfiguration:Ke().bool.isRequired};const tt=et;function nt({isTimeSeries:e,isClustered:t,clusteredIndex:n,onChangeIsClustered:a,onChangeField:i,expireAfterSeconds:s}){const l=(0,o.useCallback)((e=>{const{name:t,value:n}=e.currentTarget;i(t,n)}),[i]);return r().createElement(d.V7r,{toggled:t,disabled:e,onToggle:e=>a(e),label:"Clustered Collection","data-testid":"clustered-collection-fields",helpUrl:"https://www.mongodb.com/docs/manual/core/clustered-collections/",description:"Clustered collections store documents ordered by a user-defined cluster key."},r().createElement(d.GEW,null,r().createElement(d.ksK,{name:"clusteredIndex.name",value:n.name,label:"name","data-testid":"clustered-index-name",type:"text",description:"The clustered index name is optional, otherwise automatically generated.",optional:!0,onChange:l,spellCheck:!1})),r().createElement(d.GEW,null,r().createElement(d.ksK,{value:s,label:"expireAfterSeconds",name:"expireAfterSeconds",description:"The expireAfterSeconds field enables automatic deletion of documents older than the specified number of seconds. The _id field must be a date or an array that contains date values.",optional:!0,type:"number",onChange:l,spellCheck:!1})))}nt.propTypes={isTimeSeries:Ke().bool.isRequired,isClustered:Ke().bool.isRequired,clusteredIndex:Ke().object.isRequired,onChangeIsClustered:Ke().func.isRequired,onChangeField:Ke().func.isRequired,expireAfterSeconds:Ke().string.isRequired};const at=nt;function ot(e){try{return Je().gte(e,"6.3.0-alpha0")}catch{return!0}}var rt=n(80223);const it={local:"Local",gcp:"GCP",azure:"Azure",aws:"AWS",kmip:"KMIP"},st={local:"/* No KeyEncryptionKey required */\n{}",aws:"{\n region: '',\n key: ''\n}",gcp:"{\n projectId: '',\n location: '',\n keyRing: '',\n keyName: '',\n}",azure:"{\n keyName: '',\n keyVaultEndpoint: '',\n}",kmip:"/* No KeyEncryptionKey required */\n{}"};function lt(e){return st[e.split(":")[0]]}const ct="queryable-encrypted-fields-editor-id",dt="key-encryption-key-editor-id";function ut({isTimeSeries:e,isFLE2:t,onChangeIsFLE2:n,onChangeField:a,fle2:i,configuredKMSProviders:s}){const[l,c]=(0,o.useState)(i.keyEncryptionKey||st[i.kmsProvider]);return r().createElement(d.V7r,{toggled:t,disabled:e,onToggle:e=>n(e),label:"Queryable Encryption","data-testid":"fle2-fields",helpUrl:"https://dochub.mongodb.org/core/rqe-encrypted-fields",description:"Encrypt a subset of the fields using Queryable Encryption."},r().createElement(d.GEW,null,r().createElement(d.JU7,{htmlFor:ct},"Encrypted fields"),r().createElement(d.VYo,null,"Indicate which fields should be encrypted and whether they should be queryable."),r().createElement(rt.Jn,{id:ct,text:i.encryptedFields,onChangeText:e=>a("fle2.encryptedFields",e),"data-testid":"fle2-encryptedFields"})),r().createElement(d.GEW,null,r().createElement(d.JU7,{htmlFor:"createcollection-radioboxgroup"},"KMS Provider"),r().createElement(d.VYo,null,"Optional. If no keyId is specified in the encrypted fields config, Compass will create new data keys for each encrypted field using the specified KMS."),r().createElement(d.E99,{onChange:e=>{e.preventDefault(),a(["fle2.kmsProvider","fle2.keyEncryptionKey"],[e.target.value,lt(e.target.value)])},id:"createcollection-radioboxgroup",value:i.kmsProvider},(s||Object.keys(it)).map((e=>r().createElement(d.VCA,{id:`${e}-kms-button`,"data-testid":`${e}-kms-button`,checked:i.kmsProvider===e,value:e,key:e},function(e){const t=e.split(":");return 1===t.length?it[t[0]]:`${it[t[0]]} ${t[1]}`}(e)))))),r().createElement(d.GEW,null,r().createElement(d.JU7,{htmlFor:dt},"Key Encryption Key"),r().createElement(d.VYo,null,"Specify which key encryption key to use for creating new data encryption keys."),r().createElement(rt.Jn,{id:dt,text:l,onChangeText:e=>{c(e),a("fle2.keyEncryptionKey",e)},"data-testid":"fle2-keyEncryptionKey"})))}ut.propTypes={isTimeSeries:Ke().bool.isRequired,isFLE2:Ke().bool.isRequired,onChangeIsFLE2:Ke().func.isRequired,onChangeField:Ke().func.isRequired,fle2:Ke().object.isRequired,configuredKMSProviders:Ke().array};const mt=ut,pt=[{field:"locale",values:[{value:"af",label:"af - Afrikaans"},{value:"sq",label:"sq - Albanian"},{value:"am",label:"am - Amharic"},{value:"ar",label:"ar - Arabic"},{value:"ar@collation=compat",label:"ar - Arabic - compat"},{value:"hy",label:"hy - Armenian"},{value:"as",label:"as - Assamese"},{value:"az",label:"az - Azeri"},{value:"az@collation=search",label:"az - Azeri - search"},{value:"be",label:"be - Belarusian"},{value:"bn",label:"bn - Bengali"},{value:"bn@collation=traditional",label:"bn - Bengali - traditional"},{value:"bs",label:"bs - Bosnian"},{value:"bs@collation=search",label:"bs - Bosnian - search"},{value:"bs_Cyrl",label:"bs_Cyrl - Bosnian (Cyrillic)"},{value:"bg",label:"bg - Bulgarian"},{value:"my",label:"my - Burmese"},{value:"ca",label:"ca - Catalan"},{value:"ca@collation=search",label:"ca - Catalan - search"},{value:"chr",label:"chr - Cherokee"},{value:"zh",label:"zh - Chinese"},{value:"zh@collation=big5han",label:"zh - Chinese - big5han"},{value:"zh@collation=gb2312han",label:"zh - Chinese - gb2312han"},{value:"zh@collation=pinyin",label:"zh - Chinese - pinyin"},{value:"zh@collation=unihan",label:"zh - Chinese - unihan"},{value:"zh@collation=zhuyin",label:"zh - Chinese - zhuyin"},{value:"zh_Hant",label:"zh_Hant - Chinese (Traditional)"},{value:"zh_Hant@collation=stroke",label:"zh_Hant - Chinese (Traditional) - stroke"},{value:"hr",label:"hr - Croatian"},{value:"hr@collation=search",label:"hr - Croatian - search"},{value:"cs",label:"cs - Czech"},{value:"cs@collation=search",label:"cs - Czech - search"},{value:"da",label:"da - Danish"},{value:"da@collation=search",label:"da - Danish - search"},{value:"nl",label:"nl - Dutch"},{value:"dz",label:"dz - Dzongkha"},{value:"en",label:"en - English"},{value:"en_US",label:"en_US - English (United States)"},{value:"en_US_POSIX",label:"en_US_POSIX - English (United States, Computer)"},{value:"eo",label:"eo - Esperanto"},{value:"et",label:"et - Estonian"},{value:"ee",label:"ee - Ewe"},{value:"fo",label:"fo - Faroese"},{value:"fil",label:"fil - Filipino"},{value:"fi_FI",label:"fi_FI - Finnish"},{value:"fi_FI@collation=search",label:"fi_FI - Finnish - search"},{value:"fi_FI@collation=traditional",label:"fi_FI - Finnish - traditional"},{value:"fr",label:"fr - French"},{value:"fr_CA",label:"fr_CA - French (Canada)"},{value:"gl",label:"gl - Galician"},{value:"gl@collation=search",label:"gl - Galician - search"},{value:"ka",label:"ka - Georgian"},{value:"de",label:"de - German"},{value:"de@collation=search",label:"de - German - search"},{value:"de@collation=eor",label:"de - German - eor"},{value:"de@collation=phonebook",label:"de - German - phonebook"},{value:"de_AT",label:"de_AT - German (Austria)"},{value:"de_AT@collation=phonebook",label:"de_AT - German (Austria) - phonebook"},{value:"el",label:"el - Greek"},{value:"gu",label:"gu - Gujarati"},{value:"ha",label:"ha - Hausa"},{value:"haw",label:"haw - Hawaiian"},{value:"he",label:"he - Hebrew"},{value:"he@collation=search",label:"he - Hebrew - search"},{value:"hi",label:"hi - Hindi"},{value:"hu",label:"hu - Hungarian"},{value:"is",label:"is - Icelandic"},{value:"is@collation=search",label:"is - Icelandic - search"},{value:"ig",label:"ig - Igbo"},{value:"smn",label:"smn - Inari Sami"},{value:"smn@collation=search",label:"smn - Inari Sami - search"},{value:"id",label:"id - Indonesian"},{value:"ga",label:"ga - Irish"},{value:"it",label:"it - Italian"},{value:"ja",label:"ja - Japanese"},{value:"ja@collation=unihan",label:"ja - Japanese - unihan"},{value:"kl",label:"kl - Kalaallisut"},{value:"kl@collation=search",label:"kl - Kalaallisut - search"},{value:"kn",label:"kn - Kannada"},{value:"kn@collation=traditional",label:"kn - Kannada - traditional"},{value:"kk",label:"kk - Kazakh"},{value:"km",label:"km - Khmer"},{value:"kok",label:"kok - Konkani"},{value:"ko",label:"ko - Korean"},{value:"ko@collation=search",label:"ko - Korean - search"},{value:"ko@collation=searchjl",label:"ko - Korean - searchjl"},{value:"ko@collation=unihan",label:"ko - Korean - unihan"},{value:"ky",label:"ky - Kyrgyz"},{value:"lk",label:"lk - Lakota"},{value:"lo",label:"lo - Lao"},{value:"lv",label:"lv - Latvian"},{value:"li",label:"li - Lingala"},{value:"li@collation=phonetic",label:"li - Lingala - phonetic"},{value:"lt",label:"lt - Lithuanian"},{value:"dsb",label:"dsb - Lower Sorbian"},{value:"lb",label:"lb - Luxembourgish"},{value:"mk",label:"mk - Macedonian"},{value:"ms",label:"ms - Malay"},{value:"ml",label:"ml - Malayalam"},{value:"mt",label:"mt - Maltese"},{value:"mr",label:"mr - Marathi"},{value:"mn",label:"mn - Mongolian"},{value:"ne",label:"ne - Nepali"},{value:"se",label:"se - Northern Sami"},{value:"se@collation=search",label:"se - Northern Sami - search"},{value:"nb",label:"nb - Norwegian Bokmål"},{value:"nb@collation=search",label:"nb - Norwegian Bokmål - search"},{value:"nn",label:"nn - Norwegian Nynorsk"},{value:"nn@collation=search",label:"nn - Norwegian Nynorsk - search"},{value:"or",label:"or - Oriya"},{value:"om",label:"om - Oromo"},{value:"ps",label:"ps - Pashto"},{value:"fa",label:"fa - Persian"},{value:"fa_AF",label:"fa_AF - Persian (Afghanistan)"},{value:"pl",label:"pl - Polish"},{value:"pt",label:"pt - Portuguese"},{value:"pa",label:"pa - Punjabi"},{value:"ro",label:"ro - Romanian"},{value:"ru",label:"ru - Russian"},{value:"sr",label:"sr - Serbian"},{value:"sr_Latn",label:"sr_Latn - Serbian (Latin)"},{value:"sr_Latn@collation=search",label:"sr_Latn - Serbian (Latin) - search"},{value:"si",label:"si - Sinhala"},{value:"si@collation=dictionary",label:"si - Sinhala - dictionary"},{value:"sk",label:"sk - Slovak"},{value:"sk@collation=search",label:"sk - Slovak - search"},{value:"sl",label:"sl - Slovenian"},{value:"es",label:"es - Spanish"},{value:"es@collation=search",label:"es - Spanish - search"},{value:"es@collation=traditional",label:"es - Spanish - traditional"},{value:"sw",label:"sw - Swahili"},{value:"sv",label:"sv - Swedish"},{value:"sv@collation=search",label:"sv - Swedish - search"},{value:"ta",label:"ta - Tamil"},{value:"te",label:"te - Telugu"},{value:"th",label:"th - Thai"},{value:"bo",label:"bo - Tibetan"},{value:"to",label:"to - Tongan"},{value:"tr",label:"tr - Turkish"},{value:"tr@collation=search",label:"tr - Turkish - search"},{value:"uk",label:"uk - Ukrainian"},{value:"hsb",label:"hsb - Upper Sorbian"},{value:"ur",label:"ur - Urdu"},{value:"ug",label:"ug - Uyghur"},{value:"vi",label:"vi - Vietnamese"},{value:"vi@collation=traditional",label:"vi - Vietnamese - traditional"},{value:"wae",label:"wae - Walser"},{value:"cy",label:"cy - Welsh"},{value:"yi",label:"yi - Yiddish"},{value:"yi@collation=search",label:"yi - Yiddish - search"},{value:"yo",label:"yo - Yoruba"},{value:"zu",label:"zu - Zulu"},{value:"simple",label:"simple"}],required:!0},{field:"strength",label:"Strength",values:[1,2,3,4,5]},{field:"caseLevel",values:[{value:!0,label:"true"},{value:!1,label:"false"}]},{field:"caseFirst",label:"Case First",values:["upper","lower","off"]},{field:"numericOrdering",values:[{value:!0,label:"true"},{value:!1,label:"false"}]},{field:"alternate",label:"Alternate",values:["non-ignorable","shifted"]},{field:"maxVariable",label:"Max-Variable",values:["punct","space"]},{field:"backwards",values:[{value:!0,label:"true"},{value:!1,label:"false"}]},{field:"normalization",values:[{value:!0,label:"true"},{value:!1,label:"false"}]}],ht=(0,d.AHW)({zIndex:1,"button[aria-expanded=true]":{zIndex:20}});function gt({collation:e,changeCollationOption:t}){return pt.map((n=>r().createElement(d.GEW,{key:n.field},r().createElement(d.l6P,{id:`collation-field-${n.field}`,className:ht,label:n.field,name:n.field,placeholder:"Select a value"+(n.required?"":" [optional]"),onChange:e=>{return t(n.field,(a=e,Object.is(+a,NaN)?"false"!==a&&("true"===a||a):+a));var a},size:d.AJJ.Small,allowDeselect:!1,value:Be().isNil(e[n.field])?"":String(e[n.field])},function(e){const t=e.map((e=>({value:"object"==typeof e?e.value:e,label:"object"==typeof e?e.label:e})));return Be().sortBy(t,"value").map((({value:e,label:t})=>r().createElement(d.c$x,{key:t,value:`${e}`},t)))}(n.values)))))}gt.propTypes={collation:Ke().object.isRequired,changeCollationOption:Ke().func.isRequired};const ft=gt;function yt({collation:e,isCustomCollation:t,onChangeCollationOption:n,onChangeIsCustomCollation:a}){return r().createElement(d.V7r,{onToggle:e=>{a(e)},label:"Use Custom Collation","data-testid":"use-custom-collation-fields",toggled:t,description:"Collation allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks.",helpUrl:"https://docs.mongodb.com/master/reference/collation/"},r().createElement(ft,{collation:e,changeCollationOption:n}))}yt.propTypes={collation:Ke().object.isRequired,isCustomCollation:Ke().bool.isRequired,onChangeCollationOption:Ke().func.isRequired,onChangeIsCustomCollation:Ke().func.isRequired};const bt=yt,vt=(0,d.AHW)({paddingLeft:d.YKD[400]});function Ct(e){return!Be().isNil(e)&&`${e}`?+e:void 0}function Et(e){const t={};for(const[n,a]of Object.entries(e))Be().isNil(a)||Be().isString(a)&&""===a.trim()||(t[n]=Be().isObjectLike(a)?Et(a):a);return t}class St extends o.PureComponent{static propTypes={onChange:Ke().func.isRequired,serverVersion:Ke().string,withDatabase:Ke().bool,configuredKMSProviders:Ke().array,currentTopologyType:Ke().string};state={isCustomCollation:!1,isTimeSeries:!1,isClustered:!1,isFLE2:!1,fields:{collation:{},collectionName:"",databaseName:"",timeSeries:{},expireAfterSeconds:"",clusteredIndex:{name:"",unique:!0,key:{_id:1}},fle2:{encryptedFields:'{\n fields: [\n {\n path: "encryptedField",\n // keyId: UUID("..."), // or specify KMS + Key encryption key below\n bsonType: "string",\n queries: { "queryType": "equality" } // optional\n }\n ]\n}',kmsProvider:1===(this.props.configuredKMSProviders||[]).length?this.props.configuredKMSProviders[0]:"",keyEncryptionKey:""}}};setField(e,t){const n=Be().cloneDeep(this.state.fields);if(Array.isArray(e))for(let a=0;a<e.length;a++)Be().set(n,e[a],t[a]);else Be().set(n,e,t);this.setState({fields:n},this.updateOptions)}updateOptions=()=>{this.props.onChange({database:this.state.fields.databaseName,collection:this.state.fields.collectionName,options:this.buildOptions()})};buildOptions(){const{isCustomCollation:e,isTimeSeries:t,isClustered:n,isFLE2:a,fields:o}=this.state;return Et({...e?{collation:o.collation}:{},...t?{timeseries:{...o.timeSeries,bucketMaxSpanSeconds:Ct(o.timeSeries.bucketMaxSpanSeconds),bucketRoundingSeconds:Ct(o.timeSeries.bucketRoundingSeconds)},expireAfterSeconds:Ct(o.expireAfterSeconds)}:{},...n?{clusteredIndex:{...o.clusteredIndex},expireAfterSeconds:Ct(o.expireAfterSeconds)}:{},...a?{encryptedFields:o.fle2.encryptedFields.trim(),kmsProvider:`${o.fle2.kmsProvider||""}`,keyEncryptionKey:o.fle2.keyEncryptionKey.trim()}:{}})}render(){const{serverVersion:e,withDatabase:t}=this.props,{fields:n,isCustomCollation:a,isTimeSeries:o,isClustered:i,isFLE2:s}=this.state,{collectionName:l,databaseName:c,collation:u,timeSeries:m,expireAfterSeconds:p,clusteredIndex:h,fle2:g}=n;return r().createElement(r().Fragment,null,t&&r().createElement(Ge,{databaseName:c,onChangeDatabaseName:e=>this.setField("databaseName",e)}),r().createElement(Ye,{collectionName:l,onChangeCollectionName:e=>this.setField("collectionName",e)}),function(e){try{return Je().gte(e,"5.0.0-alpha0")}catch(e){return!0}}(e)&&r().createElement(tt,{isTimeSeries:o,isClustered:i,isFLE2:s,onChangeIsTimeSeries:e=>this.setState({isTimeSeries:e,expireAfterSeconds:""},this.updateOptions),onChangeField:(e,t)=>this.setField(e,t),timeSeries:m,expireAfterSeconds:p,supportsFlexibleBucketConfiguration:ot(e)}),r().createElement(d.nD3,{"data-testid":"additional-collection-preferences",text:"Additional preferences",hintText:"(e.g. Custom collation, Clustered collections)"},r().createElement("div",{className:vt},r().createElement(bt,{collation:u,onChangeCollationOption:(e,t)=>{this.setField(`collation.${e}`,t)},onChangeIsCustomCollation:e=>this.setState({isCustomCollation:e},this.updateOptions),isCustomCollation:a}),function(e){try{return Je().gte(e,"5.3.0-alpha0")}catch(e){return!0}}(e)&&r().createElement(at,{isTimeSeries:o,isClustered:i,clusteredIndex:h,expireAfterSeconds:p,onChangeIsClustered:e=>this.setState({isClustered:e,expireAfterSeconds:""},this.updateOptions),onChangeField:(e,t)=>{this.setField(e,t)}}),function(e,t,n){if("Single"===t)return!1;if(!n||0===n.length)return!1;try{return Je().gte(e,"6.0.0-alpha0")}catch(e){return!0}}(e,this.props.currentTopologyType,this.props.configuredKMSProviders)&&r().createElement(mt,{isTimeSeries:o,isFLE2:s,fle2:g,configuredKMSProviders:this.props.configuredKMSProviders,onChangeIsFLE2:e=>this.setState({isFLE2:e,encryptedFields:{},kmsProvider:"",keyEncryptionKey:{}},this.updateOptions),onChangeField:(e,t)=>{this.setField(e,t)}}))))}}const kt=St,wt=(0,d.AHW)({marginTop:d.YKD[400],"&:not(:last-child)":{marginBottom:d.YKD[200]}});class xt extends o.PureComponent{state={data:{}};errorBannerRef=(0,o.createRef)();onDismissErrorMessage=()=>{this.props.clearError()};onCancel=()=>this.props.close();onConfirm=()=>{this.props.createNamespace(this.state.data)};onChange=e=>{this.setState({data:e})};renderError(){if(this.props.error)return r().createElement("div",{ref:this.errorBannerRef},r().createElement(d.lZ$,{variant:"danger",dismissible:!0,onClose:this.props.clearError},this.props.error.message))}renderCollectionNameRequiredNotice(){return r().createElement(d.lZ$,{className:wt,variant:"info"},"Before MongoDB can save your new database, a collection name must also be specified at the time of creation. ",r().createElement(d.N_E,{href:"https://www.mongodb.com/docs/manual/faq/fundamentals/#how-do-i-create-a-database-and-a-collection-",target:"_blank"},"More Information"))}render(){const e=null!==this.props.databaseName,t=!!(this.props.databaseName??this.state.data.database??"").trim(),n=!!(this.state.data.collection??"").trim(),a=e?"Create Collection":"Create Database";return r().createElement(d.k5W,{title:a,open:this.props.isVisible,onSubmit:this.onConfirm,onCancel:this.onCancel,submitButtonText:a,submitDisabled:!n||!t,"data-testid":e?"create-collection-modal":"create-database-modal"},r().createElement(kt,{serverVersion:this.props.serverVersion,withDatabase:!e,onChange:this.onChange,configuredKMSProviders:this.props.configuredKMSProviders,currentTopologyType:this.props.currentTopologyType}),!e&&!n&&this.renderCollectionNameRequiredNotice(),this.renderError())}componentDidUpdate(){this.errorBannerRef.current?.scrollIntoView()}}const At=(0,Ee.Ng)((e=>{const t=e.connectionMetaData[e.connectionId]??{};return{connectionId:e.connectionId,databaseName:e.databaseName,isCreateCollection:null!==e.databaseName,isRunning:e.isRunning,isVisible:e.isVisible,error:e.error,serverVersion:t.serverVersion,configuredKMSProviders:t.configuredKMSProviders,currentTopologyType:t.currentTopologyType}}),{createNamespace:e=>async(t,n,{globalAppRegistry:a,connections:o,logger:{debug:r},track:i,workspaces:s})=>{const{databaseName:l,connectionId:c}=n(),d=null!==l?"Collection":"Database",u=l??e.database?.trim(),p=`${u}.${e.collection.trim()}`;t(Pe()),u&&u.includes(".")&&t(Fe(new Error('Database names may not contain a "."')));try{t(We(!0));const n=o.getDataServiceForConnection(c),r=await async function(e,t){if(!t)return t;if((t={...t}).encryptedFields){try{t.encryptedFields=(0,Se.aN)(t.encryptedFields)}catch(e){throw new Error(`Could not parse encryptedFields config: ${e.message}`)}if(0===Object.keys(t.encryptedFields).length)delete t.encryptedFields;else if(t.kmsProvider){let n;try{n=(0,Se.aN)(t.keyEncryptionKey||"{}")}catch(e){throw new Error(`Could not parse keyEncryptionKey: ${e.message}`)}const a=t.encryptedFields?.fields;if(Array.isArray(a)){const o=[];for(const r of a)r.keyId||o.push((async()=>{r.keyId=await e.createDataKey(t.kmsProvider,{masterKey:n})})());await Promise.all(o)}}}else delete t.encryptedFields;return delete t.kmsProvider,delete t.keyEncryptionKey,t}(n,e.options);await n.createCollection(p,r??{});const l={has_collation:!!e.options.collation,is_timeseries:!!e.options.timeseries,is_clustered:!!e.options.clusteredIndex,is_fle2:!!e.options.encryptedFields,expires:!!e.options.expireAfterSeconds},u=o.getConnectionById(c)?.info;i(`${d} Created`,l,u),a.emit("collection-created",p,{connectionId:c});const h=(0,m.Ay)(p).isSpecial,g=u&&(0,ke.jD)(u,"globalWrites");s.openCollectionWorkspace(c,p,{newTab:!0,initialSubtab:!h&&g?"GlobalWrites":void 0}),t({type:xe})}catch(e){r("create collection failed",e),t(We(!1)),t(Fe(e))}},close:()=>({type:De}),clearError:Pe})(xt),Dt=At,It="Databases",Mt=(0,i.nk)({name:"Databases",component:function({children:e}){return r().createElement(r().Fragment,null,e)},activate:function(e,{globalAppRegistry:t,instance:n,dataService:a},{on:o,cleanup:r,addCleanup:i}){const s=(0,F.y$)(be,{databases:n.databases.toJSON(),databasesLoadingStatus:{status:n.databasesStatus,error:n.databasesStatusError},instance:{isWritable:n.isWritable,isDataLake:n.dataLake.isDataLake,isGenuineMongoDB:n.genuineMongoDB.isGenuine}},(0,F.Tw)(P.A.withExtraArgument({globalAppRegistry:t}))),l=se()((()=>{s.dispatch((e=>({type:ye,status:e.databasesStatus,error:e.databasesStatusError,databases:e.databases.toJSON()}))(n))}),300,{leading:!0,trailing:!0});i((()=>{l.cancel()})),o(n,"change:databasesStatus",l),o(n,"change:databases.status",l),o(n,"add:databases",l),o(n,"remove:databases",l);const c=()=>{s.dispatch((e=>({type:fe,isWritable:e.isWritable,isDataLake:e.dataLake.isDataLake,isGenuineMongoDB:e.genuineMongoDB.isGenuine}))(n))};return o(n,"change:isWritable",c),o(n,"change:dataLake.isDataLake",c),o(n,"change:genuineMongoDB.isGenuine",c),n.fetchDatabases({dataService:a}),{store:s,deactivate:r}}},{instance:g.A$,dataService:s.S1}),Tt="databases-collections/rename-collection/OPEN",Lt="databases-collections/rename-collection/CONFIRMATION_REQUIRED",Ot="database-collections/rename-collection/CLOSE",Nt="database-collections/rename-collection/TOGGLE_IS_RUNNING",_t="database-collections/rename-collection/HANDLE_ERROR",Ft=()=>({type:Ot}),Pt=e=>({type:_t,error:e}),Wt={isRunning:!1,modalState:"hidden",error:null,connectionId:"",databaseName:"",initialCollectionName:"",collections:[],areSavedQueriesAndAggregationsImpacted:!0},Rt=(e=Wt,t)=>t.type===Ot?Wt:t.type===Tt?{initialCollectionName:t.collection,connectionId:t.connectionId,databaseName:t.db,collections:t.collections,areSavedQueriesAndAggregationsImpacted:t.areSavedQueriesAndAggregationsImpacted,modalState:"input-form",isRunning:!1,error:null}:t.type===Nt?{...e,isRunning:!0,error:null}:t.type===_t?{...e,error:t.error,modalState:"input-form",isRunning:!1}:t.type===Lt?{...e,modalState:"confirmation-screen"}:e,Ut=(0,d.AHW)({display:"flex",gap:d.YKD[200],alignItems:"center"}),$t=(0,d.AHW)({marginTop:0,marginBottom:0,"&:not(:last-child)":{marginBottom:d.YKD[200]}});function Vt({areSavedQueriesAndAggregationsImpacted:e}){return r().createElement(d.lZ$,{variant:"warning","data-testid":"rename-collection-modal-warning"},r().createElement("p",{className:$t},"Renaming collection will result in loss of any unsaved queries, filters or aggregation pipelines."),e&&r().createElement("p",{className:$t},r().createElement("b",null,"Additionally, any saved queries or aggregations targeting this collection will need to be remapped to the new namespace.")))}const Ht=(0,Ee.Ng)((e=>e),{hideModal:()=>e=>{e(Ft())},submitModal:e=>async(t,n)=>{const{modalState:a}=n();"confirmation-screen"!==a?t({type:Lt}):await t((e=>async(t,n,{connections:a,globalAppRegistry:o,track:r})=>{const i=e.trim(),s=n(),{connectionId:l,databaseName:c,initialCollectionName:u}=s,m=a.getDataServiceForConnection(l);t({type:Nt});const p=`${c}.${u}`,h=`${c}.${i}`;try{await m.renameCollection(p,i),r("Collection Renamed",{},a.getConnectionById(l)?.info),o.emit("collection-renamed",{to:h,from:p},{connectionId:l}),t(Ft()),(0,d.c3r)("collection-rename-success",{variant:"success",title:`Collection renamed to ${i}`,timeout:5e3})}catch(e){t(Pt(e))}})(e))},clearError:()=>e=>{e(Pt(null))}})((function({modalState:e,error:t,initialCollectionName:n,collections:a,areSavedQueriesAndAggregationsImpacted:i,isRunning:s,hideModal:l,submitModal:c,clearError:u}){const[m,p]=(0,o.useState)(n),h=(0,o.useMemo)((()=>"hidden"!==e),[e]);(0,d.wTI)((()=>{h&&p(n)}),[h]);const g=(0,o.useCallback)((e=>{u(),p(e?.target.value)}),[p,u]);(0,re.ou)((e=>{h&&e("Screen",{name:"rename_collection_modal"},void 0)}),[h],void 0);const f=(0,o.useCallback)((()=>{l()}),[l]),y=a.filter((({name:e})=>e!==n&&e===m)).length>0,b=t?t.message.match(/target namespace exists/i)?"This collection name already exists in this database.":t.message:y?"This collection name already exists in this database.":void 0;return r().createElement(d.k5W,{title:"confirmation-screen"===e?"Confirm rename collection":"Rename collection",open:"hidden"!==e,onSubmit:()=>{c(m)},onCancel:f,submitButtonText:"input-form"===e?"Proceed to Rename":"Yes, rename collection",variant:"primary",submitDisabled:"input-form"===e&&(""===m||n===m||y),"data-testid":"rename-collection-modal"},"input-form"===e&&r().createElement(d.GEW,null,r().createElement(d.ksK,{"data-testid":"rename-collection-name-input",label:"New collection name",value:m,onChange:g})),"confirmation-screen"===e&&r().createElement(d.GEW,null,r().createElement("div",{"data-testid":"rename-collection-confirmation-screen"},`Are you sure you want to rename "${n}" to "${m}"?`)),b&&"input-form"===e&&r().createElement(d.lZ$,{variant:"danger","data-testid":"rename-collection-modal-error"},b),"confirmation-screen"===e&&r().createElement(Vt,{areSavedQueriesAndAggregationsImpacted:i}),s&&r().createElement(d.nBu,{className:Ut},r().createElement(d.Q0K,null),r().createElement("span",null,"Renaming Collection…")))})),Kt=Ht;var jt=n(2155),Bt=n(96452),zt=n(70002);const Yt=(0,d.AHW)({whiteSpace:"nowrap"}),qt=(0,d.AHW)({paddingTop:d.YKD[200],paddingRight:d.YKD[400],paddingBottom:d.YKD[400],paddingLeft:d.YKD[400],display:"grid",gridTemplate:"1fr / 100%",gap:d.YKD[200]}),Gt=(0,d.AHW)({display:"flex",alignItems:"center",gap:d.YKD[200]}),Zt=(0,d.AHW)({flex:"none"}),Jt=(0,d.AHW)({display:"flex",minWidth:0,paddingTop:d.YKD[200],paddingBottom:d.YKD[200]}),Qt=(0,d.AHW)({marginLeft:"auto"}),Xt=[],en=(0,d.AHW)({paddingTop:d.YKD[200]}),tn=({namespace:e,itemType:t,onCreateItemClick:n,onRefreshClick:a,renderLoadSampleDataBanner:i})=>{const l=(0,s.qm)(),c=(0,Bt.T8)(l),{openDatabasesWorkspace:u,openCollectionsWorkspace:p,openShellWorkspace:h}=(0,D.$L)(),g=(0,re.Jr)(),{enableShell:f}=(0,R.gc)(["enableShell"]),y=(0,o.useMemo)((()=>{const{database:t}=(0,m.Ay)(e??""),n=[{name:c,onClick:()=>{u(l.id)}}];return t&&n.push({name:t,onClick:()=>{p(l.id,t)}}),n}),[l.id,c,e,p,u]),b=i?.();return r().createElement("div",{className:qt},r().createElement("div",{className:Gt},r().createElement("div",{className:Jt},r().createElement(d.BIu,{items:y})),r().createElement("div",{className:(0,d.cx)(Gt,Zt,Qt)},f&&r().createElement(d.$nd,{size:"small",onClick:()=>{h(l.id,e?{initialEvaluate:`use(${JSON.stringify(e)})`}:void 0),g("Open Shell",{entrypoint:`${t}s`},l)},leftGlyph:r().createElement(d.Int,{glyph:"Shell"})},"Open MongoDB shell"),l.atlasMetadata&&r().createElement(d.$nd,{"data-testid":`${t}-header-view-monitoring`,size:"small",href:(0,zt.k4)(l.atlasMetadata),target:"_blank",rel:"noopener noreferrer",leftGlyph:r().createElement(d.Int,{glyph:"TimeSeries"})},"View monitoring"),l.atlasMetadata&&r().createElement(d.$nd,{"data-testid":`${t}-header-visualize-your-data`,size:"small",href:(0,zt.r0)(l.atlasMetadata,e),target:"_self",rel:"noopener noreferrer",leftGlyph:r().createElement(d.Int,{glyph:"Charts"})},"Visualize your data"),n&&r().createElement("div",{className:Zt,"data-testid":"create-controls"},r().createElement(d.$nd,{variant:"primary",leftGlyph:r().createElement(d.Int,{role:"presentation",glyph:"Plus"}),onClick:n,className:Yt,size:"small"},`Create ${t}`)),a&&r().createElement("div",{className:Zt,"data-testid":"refresh-controls"},r().createElement(d.$nd,{variant:"default",leftGlyph:r().createElement(d.Int,{role:"presentation",glyph:"Refresh"}),onClick:a,size:"small"},"Refresh")))),b&&r().createElement("div",{className:en},b))},nn=(0,d.AHW)({width:"100%",height:"100%"}),an=(0,d.AHW)({width:"100%",height:"100%",padding:`0 ${d.YKD[400]}px`}),on="item-actions-cell",rn=(0,d.AHW)({":hover":{[`.${on}`]:{button:{opacity:1}}}}),sn=(0,d.AHW)({button:{opacity:0,"&:focus":{opacity:1}},"*:has(button)":{minWidth:d.YKD[800]}}),ln=({item:e,onDeleteItemClick:t})=>{const{readOnly:n}=(0,R.gc)(["readOnly"]),a=(0,o.useMemo)((()=>((e,{readOnly:t,hasDeleteHandler:n})=>{const a=[];return t||!n||e.inferred_from_privileges||a.push({action:"delete",label:`Delete ${e.name}`,tooltip:`Delete ${e.name}`,icon:"Trash"}),a})(e,{readOnly:n,hasDeleteHandler:!!t})),[e,t,n]),i=(0,o.useCallback)((n=>{"delete"===n&&t?.(e._id)}),[e,t]);return r().createElement(d.ful,{"data-testid":"item-actions",actions:a,onAction:i})};function cn(e,t){return t?[...e,{id:"actions",header:"",maxSize:40,cell:e=>r().createElement(ln,{item:e.row.original,onDeleteItemClick:t})}]:e}const dn=({"data-testid":e,namespace:t,itemType:n,items:a,onItemClick:i,onCreateItemClick:s,onRefreshClick:l,renderLoadSampleDataBanner:c,tableContainerRef:u,table:m,rowItems:p})=>r().createElement("div",{className:nn,"data-testid":e},r().createElement(d.XvC,{toolbar:r().createElement(tn,{itemType:n,namespace:t,onCreateItemClick:s,onRefreshClick:l,renderLoadSampleDataBanner:c})},r().createElement(d.XIK,{table:m,shouldAlternateRowColor:!0,ref:u,className:an,shouldTruncate:!1,"aria-rowcount":a.length},r().createElement(d.ndF,{isSticky:!0},m.getHeaderGroups().map((e=>r().createElement(d.Syw,{key:e.id},e.headers.map((e=>r().createElement(d.A3f,{key:e.id,header:e},(0,d.KvR)(e.column.columnDef.header,e.getContext())))))))),r().createElement(d.BFY,{"data-testid":`${e}-body`},p.map((({row:t,virtualRow:n})=>{const a=t.isExpandedContent??!1;return r().createElement(o.Fragment,{key:t.id},!a&&r().createElement(d.fI1,{className:rn,"data-testid":`${e}-row-${t.original.name??t.id}`,row:t,virtualRow:n,onClick:()=>i(t.original._id)},t.getVisibleCells().map((e=>{const t="actions"===e.column.id;return r().createElement(d.fhW,{key:e.id,id:e.id,cell:e,className:(0,d.cx)({[on]:t,[sn]:t})},(0,d.KvR)(e.column.columnDef.cell,e.getContext()))}))),a&&r().createElement(d.bHD,{row:t}))})))))),un=({"data-testid":e,namespace:t,itemType:n,columns:a,items:i,onItemClick:s,onDeleteItemClick:l,onCreateItemClick:c,onRefreshClick:u,renderLoadSampleDataBanner:m})=>{const p=r().useRef(null),h=(0,o.useMemo)((()=>cn(a,l)),[a,l]),[g,f]=(0,D.i2)(`${n}-list-virtual-items-table`,Xt),y=(0,d.bQl)({containerRef:p,data:i,columns:h,virtualizerOptions:{estimateSize:()=>40,overscan:10},state:{sorting:g},onSortingChange:f,autoResetPageIndex:!1}),b=function(e){return e.virtual.getVirtualItems().map((e=>({row:e.row,virtualRow:e})))}(y);return r().createElement(dn,{"data-testid":e,namespace:t,itemType:n,items:i,onItemClick:s,onCreateItemClick:c,onRefreshClick:u,renderLoadSampleDataBanner:m,tableContainerRef:p,table:y,rowItems:b})},mn=({"data-testid":e,namespace:t,itemType:n,columns:a,items:i,onItemClick:s,onDeleteItemClick:l,onCreateItemClick:c,onRefreshClick:u,renderLoadSampleDataBanner:m})=>{const p=(0,o.useMemo)((()=>cn(a,l)),[a,l]),[h,g]=(0,D.i2)(`${n}-list-virtual-items-table`,Xt),f=(0,d.iXE)({data:i,columns:p,state:{sorting:h},onSortingChange:g,autoResetPageIndex:!1}),y=function(e){return e.getRowModel().rows.map((e=>({row:e,virtualRow:void 0})))}(f);return r().createElement(dn,{"data-testid":e,namespace:t,itemType:n,items:i,onItemClick:s,onCreateItemClick:c,onRefreshClick:u,renderLoadSampleDataBanner:m,table:f,rowItems:y})};var pn=n(15088).process;const hn=(0,d.AHW)({display:"flex",gap:d.YKD[100],flexWrap:"wrap",alignItems:"anchor-center",wordBreak:"break-word"}),gn=(0,d.AHW)({display:"flex"}),fn=(0,d.AHW)({color:d.MFm.gray.dark1}),yn=(0,d.AHW)({color:d.MFm.gray.base}),bn=(0,d.AHW)({display:"flex",gap:d.YKD[100],flexWrap:"wrap",alignItems:"anchor-center"}),vn=(0,d.AHW)({});function Cn(e){return"initial"!==e&&"fetching"!==e}const En=({databases:e,onDatabaseClick:t,onDeleteDatabaseClick:n,onCreateDatabaseClick:a,onRefreshClick:o,renderLoadSampleDataBanner:i})=>{let s=!0;"true"===pn.env.COMPASS_DISABLE_VIRTUAL_TABLE_RENDERING&&(s=!1);const l=(0,R.Fg)("enableDbAndCollStats"),c=(0,d.D27)(),u=r().useMemo((()=>function({darkMode:e,enableDbAndCollStats:t}){return[{accessorKey:"name",header:"Database name",enableSorting:!0,sortUndefined:"last",minSize:300,cell:t=>{const n=t.row.original,a=n.name;return r().createElement("span",{className:hn},r().createElement("span",{className:(0,d.cx)(n.inferred_from_privileges&&!e&&fn,n.inferred_from_privileges&&e&&yn)},a),n.inferred_from_privileges&&r().createElement(d.m_M,{align:"bottom",justify:"start",trigger:r().createElement("div",{className:gn},r().createElement(d.Int,{glyph:"InfoWithCircle"}))},"Your privileges grant you access to this namespace, but it might not currently exist"))}},{accessorKey:"storage_size",header:"Storage size",enableSorting:!0,sortUndefined:"last",maxSize:110,cell:e=>{const n=e.row.original;return Cn(n.status)?t&&void 0!==n.storage_size?(0,d.V0R)(n.storage_size):"-":r().createElement(d.OrA,{maxChar:10})}},{accessorKey:"data_size",header:"Data size",enableSorting:!0,sortUndefined:"last",maxSize:80,cell:e=>{const n=e.row.original;return Cn(n.status)?t&&void 0!==n.data_size?(0,d.V0R)(n.data_size):"-":r().createElement(d.OrA,{maxChar:10})}},{accessorKey:"collectionsLength",header:"Collections",enableSorting:!0,sortUndefined:"last",maxSize:110,cell:e=>{const n=e.row.original;if(!Cn(n.status))return r().createElement(d.OrA,{maxChar:10});const a=t?(0,d.$Mb)(n.collectionsLength):"-";return r().createElement("span",{className:bn},r().createElement("span",{className:vn},a),t&&e.getValue()>1e4&&r().createElement(d.gIH,{signals:d.qpO.get("too-many-collections")}))}},{accessorKey:"index_count",header:"Indexes",enableSorting:!0,sortUndefined:"last",maxSize:110,cell:e=>{const n=e.row.original;return Cn(n.status)?t&&void 0!==n.index_count?(0,d.$Mb)(n.index_count):"-":r().createElement(d.OrA,{maxChar:10})}}]}({darkMode:c,enableDbAndCollStats:l})),[c,l]),m=s?un:mn;return r().createElement(m,{virtual:s,"data-testid":"databases-list",columns:u,items:e,itemType:"database",onItemClick:t,onDeleteItemClick:n,onCreateItemClick:a,onRefreshClick:o,renderLoadSampleDataBanner:i})};var Sn=n(15088).process;const kn=(0,d.AHW)({display:"flex",gap:d.YKD[200],minHeight:20}),wn=({children:e})=>r().createElement("div",{className:kn},e),xn=(0,d.AHW)({gap:d.YKD[100],whiteSpace:"nowrap"}),An=(0,d.AHW)({fontWeight:"bold"}),Dn=(0,d.AHW)({color:d.MFm.white}),In=(0,d.AHW)({color:d.MFm.black}),Mn=({id:e,name:t,icon:n,variant:i,hint:s})=>{const l=(0,o.useCallback)((({className:o,children:s,...l}={})=>r().createElement(d.Exy,(0,a.A)({"data-testid":`collection-badge-${e}`,className:(0,d.cx)(xn,o),variant:i},l),n&&r().createElement(d.Int,{size:"small",glyph:n}),r().createElement("span",null,t),s)),[e,n,t,i]);return s?r().createElement(d.m_M,{trigger:l},s):l()},Tn=(0,d.AHW)({display:"flex",gap:d.YKD[100],flexWrap:"wrap",alignItems:"anchor-center",wordBreak:"break-word"}),Ln=(0,d.AHW)({display:"flex"}),On=(0,d.AHW)({color:d.MFm.gray.dark1}),Nn=(0,d.AHW)({color:d.MFm.gray.base});function _n(e){return"initial"!==e&&"fetching"!==e}const Fn=({namespace:e,collections:t,onCollectionClick:n,onDeleteCollectionClick:o,onCreateCollectionClick:i,onRefreshClick:s})=>{let l=!0;"true"===Sn.env.COMPASS_DISABLE_VIRTUAL_TABLE_RENDERING&&(l=!1);const c=(0,R.Fg)("enableDbAndCollStats"),u=(0,d.D27)(),m=r().useMemo((()=>function({darkMode:e,enableDbAndCollStats:t}){return[{accessorKey:"name",header:"Collection name",enableSorting:!0,sortUndefined:"last",minSize:250,cell:t=>{const n=t.row.original,a=(0,d.OXX)(n.name);return r().createElement("div",{className:Tn},r().createElement("span",{className:(0,d.cx)(n.inferred_from_privileges&&!e&&On,n.inferred_from_privileges&&e&&Nn)},a),n.inferred_from_privileges&&r().createElement(d.m_M,{align:"bottom",justify:"start",trigger:r().createElement("div",{className:Ln},r().createElement(d.Int,{glyph:"InfoWithCircle"}))},"Your privileges grant you access to this namespace, but it might not currently exist"))}},{accessorKey:"properties",header:"Properties",enableSorting:!0,sortUndefined:"last",cell:t=>{const n=t.row.original;if(!_n(n.status))return r().createElement(d.OrA,{maxChar:10});const o=n.properties.map((t=>function(e,t,{id:n,options:a}){switch(n){case"collation":return{id:n,name:n,variant:"darkgray",hint:r().createElement(r().Fragment,null,Object.entries(a??{}).map((([e,t])=>t?r().createElement("div",{key:e},r().createElement("strong",null,e,":")," ",String(t)):null)))};case"view":return{id:n,name:n,variant:"darkgray",icon:"Visibility",hint:r().createElement(r().Fragment,null,"Derived from"," ",r().createElement("span",{className:(0,d.cx)(An,t?In:Dn)},e.view_on))};case"capped":case"clustered":return{id:n,name:n,variant:"darkgray"};case"timeseries":{let t;return void 0===e.bucket_count&&void 0===e.avg_bucket_size||(t=r().createElement(r().Fragment,null,void 0!==e.bucket_count&&r().createElement("div",null,r().createElement("strong",null,"Bucket count:")," ",(0,d.$Mb)(e.bucket_count)),void 0!==e.avg_bucket_size&&r().createElement("div",null,r().createElement("strong",null,"Avg. bucket size:")," ",(0,d.V0R)(e.avg_bucket_size)))),{id:n,name:n,variant:"darkgray",icon:"TimeSeries",hint:t}}case"fle2":return{id:n,name:"Queryable Encryption",variant:"darkgray",icon:"Key"};default:return{id:n,name:n}}}(n,e,t)));return 0===o.length?"-":r().createElement(wn,null,o.map((e=>r().createElement(Mn,(0,a.A)({key:e.id},e)))))}},{accessorKey:"storage_size",header:"Storage size",enableSorting:!0,sortUndefined:"last",maxSize:110,cell:e=>{const n=e.row.original;if(!_n(n.status))return r().createElement(d.OrA,{maxChar:10});if("view"===n.type)return"-";if(!t||void 0===n.storage_size)return"-";const a=n.storage_size,o=(0,d.V0R)(a);if(void 0===n.free_storage_size)return o;const i=n.free_storage_size,s=a-i,l=r().createElement("div",null,r().createElement("div",null,r().createElement("strong",null,"Storage Size:")," ",(0,d.V0R)(a)," (total allocated)"),r().createElement("div",null,r().createElement("strong",null,"Used:")," ",(0,d.V0R)(s)),r().createElement("div",null,r().createElement("strong",null,"Free:")," ",(0,d.V0R)(i)));return r().createElement(d.p8Z,{definition:l,tooltipProps:{align:"top",justify:"start"}},o)}},{accessorKey:"document_size",header:"Data size",enableSorting:!0,sortUndefined:"last",maxSize:80,cell:e=>{const n=e.row.original;return _n(n.status)?"view"===n.type?"-":t&&void 0!==n.document_size?(0,d.V0R)(n.document_size):"-":r().createElement(d.OrA,{maxChar:10})}},{accessorKey:"document_count",header:"Documents",enableSorting:!0,sortUndefined:"last",maxSize:110,cell:e=>{const n=e.row.original;if(!_n(n.status))return r().createElement(d.OrA,{maxChar:10});const a=n.type;return"view"===a||"timeseries"===a?"-":t&&void 0!==n.document_count?(0,d.$Mb)(n.document_count):"-"}},{accessorKey:"avg_document_size",header:"Avg. document size",enableSorting:!0,sortUndefined:"last",maxSize:140,cell:e=>{const n=e.row.original;if(!_n(n.status))return r().createElement(d.OrA,{maxChar:10});const a=n.type;return"view"===a||"timeseries"===a?"-":t&&void 0!==n.avg_document_size?(0,d.V0R)(n.avg_document_size):"-"}},{accessorKey:"index_count",header:"Indexes",enableSorting:!0,sortUndefined:"last",maxSize:90,cell:e=>{const n=e.row.original;return _n(n.status)?"view"===n.type?"-":t&&void 0!==n.index_count?(0,d.$Mb)(n.index_count):"-":r().createElement(d.OrA,{maxChar:10})}},{accessorKey:"index_size",header:"Total index size",enableSorting:!0,sortUndefined:"last",maxSize:120,cell:e=>{const n=e.row.original;if(!_n(n.status))return r().createElement(d.OrA,{maxChar:10});if("view"===n.type)return"-";const a=n.index_size;return t&&void 0!==a?(0,d.V0R)(a):"-"}}]}({darkMode:u,enableDbAndCollStats:c})),[u,c]),p=l?un:mn;return r().createElement(p,{"data-testid":"collections-list",namespace:e,columns:m,items:t,itemType:"collection",onItemClick:n,onDeleteItemClick:o,onCreateItemClick:i,onRefreshClick:s})},Pn=()=>{const e=(0,d.D27)(),t=(0,o.useMemo)((()=>e?d.MFm.white:d.MFm.black),[e]);return r().createElement("svg",{width:"72",height:"72",viewBox:"0 0 72 72",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r().createElement("path",{d:"M68 31.975H65.8901M65.8901 31.975C62.7253 31.975 60.2637 34.425 60.2637 37.575V55.775C60.2637 60.325 56.5714 64 52 64H20C15.4286 64 11.7363 60.325 11.7363 55.775V37.575C11.7363 34.425 9.27472 31.975 6.10989 31.975M65.8901 31.975C62.7253 31.975 60.2637 29.525 60.2637 26.375V16.225C60.2637 11.675 56.5714 8 52 8H20C15.4286 8 11.7363 11.675 11.7363 16.225V26.375C11.7363 29.525 9.27472 31.975 6.10989 31.975M6.10989 31.975H4M20 11.0331C20 11.0331 34.0659 15.0771 52 11.0331",stroke:t,strokeMiterlimit:"10"}),r().createElement("path",{d:"M24 36.1318C24 42.7318 29.4 48.1318 36 48.1318C42.6 48.1318 48 42.7318 48 36.1318C48 29.5318 42.6 24.1318 36 24.1318C29.4 24.1318 24 29.5318 24 36.1318Z",fill:d.MFm.green.base,stroke:t,strokeMiterlimit:"10"}),r().createElement("path",{d:"M31 36.1318H31.3982M31.3982 36.1318C31.9735 36.1318 32.4159 36.5718 32.4159 37.0518V38.7718C32.4159 39.5318 33.0797 40.1318 33.9204 40.1318M31.3982 36.1318C31.9735 36.1318 32.4161 35.6919 32.4161 35.2119V33.4919C32.4161 32.7318 33.0798 32.1318 33.9205 32.1318M41 36.1318H40.6018M40.6018 36.1318C40.0265 36.1318 39.5841 36.5718 39.5841 37.0518V38.7718C39.5841 39.5318 38.9203 40.1318 38.0796 40.1318M40.6018 36.1318C40.0265 36.1318 39.5841 35.6919 39.5841 35.2119V33.4919C39.5841 32.7318 38.9203 32.1318 38.0796 32.1318",stroke:t,strokeMiterlimit:"10"}))};function Wn(e){const t=e.size??60;return r().createElement("svg",(0,a.A)({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 60 60",width:t,height:t},e),r().createElement("g",{fill:"none"},r().createElement("path",{fill:"#116149",d:"M52.75 43.75c0-4.97-4.03-9-8.998-9a9 9 0 0 0-9.002 9 9.001 9.001 0 0 0 18 0zm2 0c0 6.074-4.926 11-10.998 11-6.076 0-11.002-4.925-11.002-11 0-6.077 4.925-11 11.002-11 6.072 0 10.998 4.925 10.998 11z"}),r().createElement("path",{fill:"#116149",d:"M50.113 51.527a1 1 0 0 1 1.414-1.414l7.93 7.93a1 1 0 0 1-1.414 1.414zM27.012 45a1 1 0 0 1 0 2H6a6 6 0 0 1-6-6V6a6 6 0 0 1 6-6h47.5c3.312 0 6 2.688 6 6v35a1 1 0 0 1-2 0V6c0-2.208-1.792-4-4-4H6a4 4 0 0 0-4 4v35a4 4 0 0 0 4 4z"}),r().createElement("path",{fill:"#116149",d:"M1 14a1 1 0 0 1 0-2h57.5a1 1 0 0 1 0 2zm11.25-6.5a2.249 2.249 0 1 1-4.5 0 2.249 2.249 0 1 1 4.5 0zm7.5 0a2.249 2.249 0 1 1-4.5 0 2.249 2.249 0 1 1 4.5 0zm7.5 0a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0z"}),r().createElement("path",{fill:"#16cc62",d:"M8.789 22a1 1 0 0 1 0-2h9.883a1 1 0 0 1 0 2zm0 16a1 1 0 0 1 0-2h4.883a1 1 0 0 1 0 2zm0-8a1 1 0 0 1 0-2h12.383a1 1 0 0 1 0 2zm10 8a1 1 0 0 1 0-2h9.883a1 1 0 0 1 0 2zm7.5-8a1 1 0 0 1 0-2h12.383a1 1 0 0 1 0 2zm-2.5-8a1 1 0 0 1 0-2h12.422a1 1 0 0 1 0 2zm17.539 0a1 1 0 0 1 0-2h9.922a1 1 0 0 1 0 2zm2.5 8a1 1 0 0 1 0-2h7.423a1 1 0 0 1 0 2z"})))}var Rn=n(21655).URL;function Un(e,t){return new Rn(`/v2/${e}#/addData/${encodeURIComponent(t)}/load`,window.location.origin).toString()}const $n=(0,d.AHW)({width:"100%",padding:d.YKD[400]}),Vn=(0,d.AHW)({display:"flex",gap:d.YKD[300]});function Hn({projectId:e,clusterName:t,canCreateDatabase:n,onCreateDatabase:a}){return r().createElement("div",{className:$n,"data-testid":"add-data-zero-state"},r().createElement(d.HYq,{icon:Wn,title:"Looks like your cluster is empty",subTitle:n?r().createElement(r().Fragment,null,"Create database or load sample data to your cluster to quickly get started experimenting with data in MongoDB."):r().createElement(r().Fragment,null,"You can load sample data to quickly get started experimenting with data in MongoDB."),callToActionLink:r().createElement("div",{className:Vn},n&&r().createElement(d.$nd,{variant:"default",onClick:a},"Create database"),r().createElement(d.$nd,{variant:"primary",href:Un(e,t),target:"_blank",rel:"noopener noreferrer"},"Load sample data"))}))}const Kn=(0,d.AHW)({display:"flex",alignItems:"center",gap:d.YKD[200]}),jn=(0,d.AHW)({marginLeft:"auto",whiteSpace:"nowrap",textOverflow:"ellipsis"}),Bn=()=>null;function zn({projectId:e,clusterName:t}){return r().createElement(d.lZ$,{image:r().createElement(Bn,null)},r().createElement("div",{className:Kn},r().createElement("span",null,"Working with MongoDB is easy, but first you’ll need some data to get started. Sample data is available for loading."),r().createElement("div",null,r().createElement(d.$nd,{className:jn,onClick:()=>{window.open(Un(e,t),"_blank","noopener noreferrer")},leftGlyph:r().createElement(d.Int,{glyph:"Upload"}),size:"small"},"Load sample data"))))}const Yn=(0,d.AHW)({padding:d.YKD[400]}),qn=(0,d.AHW)({width:"100%"}),Gn="An error occurred while loading databases";function Zn(){return r().createElement("div",{className:qn,"data-testid":"databases-non-genuine-warning"},r().createElement(d.HYq,{icon:Pn,title:"Unable to display databases and collections",subTitle:"This server or service appears to be emulating MongoDB. Some documented MongoDB features may work differently, may be entirely missing or incomplete, or may have unexpectedly different performance characteristics than would be found when connecting to a real MongoDB server or service.",callToActionLink:r().createElement(d.N_E,{href:"https://www.mongodb.com/atlas/database"},"Try MongoDB Atlas")}))}const Jn=(0,Ee.Ng)((e=>({databases:e.databases,databasesLoadingStatus:e.databasesLoadingStatus.status,databasesLoadingError:e.databasesLoadingStatus.error,isWritable:e.instance.isWritable,isDataLake:e.instance.isDataLake,isGenuineMongoDB:e.instance.isGenuineMongoDB})),{onRefreshClick:e=>(t,n,{globalAppRegistry:a})=>{a.emit("refresh-databases",{connectionId:e})},onDeleteDatabaseClick:(e,t)=>(n,a,{globalAppRegistry:o})=>{o.emit("open-drop-database",t,{connectionId:e})},onCreateDatabaseClick:e=>(t,n,{globalAppRegistry:a})=>{a.emit("open-create-database",{connectionId:e})}})((({databases:e,databasesLoadingStatus:t,databasesLoadingError:n,isWritable:i,isDataLake:l,isGenuineMongoDB:c,onDeleteDatabaseClick:u,onCreateDatabaseClick:p,onRefreshClick:h})=>{const g=(0,s.qm)(),{id:f,atlasMetadata:y}=g,b=(0,R.Fg)("readOnly"),{openCollectionsWorkspace:v}=(0,D.$L)(),C=(0,o.useCallback)((e=>{v(f,e)}),[f,v]),E=(0,o.useCallback)((e=>{u(f,e)}),[f,u]),S=(0,o.useCallback)((()=>{p(f)}),[f,p]),k=(0,o.useCallback)((()=>{h(f)}),[f,h]);(0,re.ou)((e=>{e("Screen",{name:"databases"},g)}),[g]);const w=(0,o.useCallback)((()=>!y||e.some((e=>!(0,m.Ay)(e.name).specialish))?null:r().createElement(zn,{projectId:y.projectId,clusterName:y.clusterName})),[e,y]),x=i&&!b;if("fetching"===t)return null;if("error"===t)return r().createElement("div",{className:Yn},r().createElement(d.lZ$,{variant:d.uAY.Danger},n?`${Gn}: ${n}`:Gn));if(0===e.length&&!c)return r().createElement(Zn,null);if(y&&0===e.length)return r().createElement(Hn,{projectId:y.projectId,clusterName:y.clusterName,canCreateDatabase:x,onCreateDatabase:S});const A=Object.assign({onDatabaseClick:C,onRefreshClick:k},x&&!l?{onDeleteDatabaseClick:E,onCreateDatabaseClick:S}:{});return r().createElement(En,(0,a.A)({databases:e,renderLoadSampleDataBanner:w},A))})),Qn=Jn,Xn="An error occurred while loading collections",ea=(0,d.AHW)({padding:d.YKD[400]}),ta=(0,Ee.Ng)(((e,{namespace:t})=>{const n=e.instance.isWritable&&!e.instance.isDataLake;return{namespace:t,collections:e.collections,collectionsLoadingStatus:e.collectionsLoadingStatus.status,collectionsLoadingError:e.collectionsLoadingStatus.error,isEditable:n}}),{onRefreshClick:()=>(e,t,{database:n,dataService:a})=>{n.fetchCollectionsDetails({dataService:a,force:!0})},onDeleteCollectionClick:(e,t)=>(n,a,{globalAppRegistry:o})=>{o.emit("open-drop-collection",(0,m.Ay)(t),{connectionId:e})},onCreateCollectionClick:(e,t)=>(n,a,{globalAppRegistry:o})=>{o.emit("open-create-collection",(0,m.Ay)(t),{connectionId:e})}})((({namespace:e,collections:t,collectionsLoadingStatus:n,collectionsLoadingError:i,isEditable:l,onDeleteCollectionClick:c,onCreateCollectionClick:u,onRefreshClick:p})=>{const h=!(0,R.Fg)("readOnly"),g=(0,o.useMemo)((()=>h&&l),[h,l]),f=(0,s.qm)(),{id:y}=f,{openCollectionWorkspace:b}=(0,D.$L)();(0,re.ou)((e=>{e("Screen",{name:"collections"},f)}),[f]);const v=(0,o.useCallback)((e=>{b(y,e)}),[y,b]),C=(0,o.useCallback)((()=>{u(y,(0,m.Ay)(e).database)}),[y,e,u]),E=(0,o.useCallback)((e=>{c(y,e)}),[y,c]);if("error"===n)return r().createElement("div",{className:ea},r().createElement(d.lZ$,{variant:d.uAY.Danger},i?`${Xn}: ${i}`:Xn));const S=Object.assign({onCollectionClick:v,onRefreshClick:p},g?{onCreateCollectionClick:C,onDeleteCollectionClick:E}:{});return r().createElement(Fn,(0,a.A)({namespace:e,collections:t},S))})),na={name:ve,provider:Ce,content:ta,header:function({namespace:e,inferredFromPrivileges:t,...n}){const{id:o}=(0,s.qm)(),{getConnectionById:i}=(0,s.cy)(),l=i(o)?.title||"";return r().createElement(d.N81,(0,a.A)({},n,{connectionName:l,type:ve,title:e,tooltip:[["Connection",l||""],["Database",e]],iconGlyph:t?"EmptyDatabase":"Database","data-namespace":e,inferredFromPrivileges:t}))}},aa={name:It,provider:Mt,content:Qn,header:function(e){const{id:t}=(0,s.qm)(),{getConnectionById:n}=(0,s.cy)(),o=n(t)?.title||"";return r().createElement(d.N81,(0,a.A)({},e,{connectionName:o,type:It,title:o,tooltip:[["Connection",o||""]],iconGlyph:"Server"}))}},oa=(0,i.nk)({name:"CreateNamespace",activate:function(e,t,{on:n,cleanup:a}){const{instancesManager:o,connections:r,globalAppRegistry:i}=t,s=function(e){return(0,F.y$)(Ve,(0,F.Tw)(P.A.withExtraArgument(e)))}(t),l=(e,t)=>{s.dispatch(Ue(e,t.build.version)),s.dispatch(Re(e,t.topologyDescription.type)),n(t,"change:build.version",(()=>{s.dispatch(Ue(e,t.build.version))})),n(t,"change:topologyDescription",(()=>{s.dispatch(Re(e,t.topologyDescription.type))}))},c=e=>{const t=r.getDataServiceForConnection(e);s.dispatch(((e,t)=>({type:Ne,connectionId:e,configuredKMSProviders:t}))(e,t.configuredKMSProviders()))};for(const[e,t]of o.listMongoDBInstances())l(e,t),c(e);return n(o,g.hV.InstanceCreated,l),n(r,"connected",c),n(i,"open-create-database",(({connectionId:e}={})=>{if(!e)throw new Error("Cannot create a database without specifying a connection id");s.dispatch(_e(e,null))})),n(i,"open-create-collection",((e,{connectionId:t}={})=>{if(!t)throw new Error("Cannot create a collection without specifying a connection id");s.dispatch(_e(t,e.database))})),{store:s,deactivate:a}},component:Dt},{logger:(0,p.fF)("COMPASS-CREATE-NAMESPACE-UI"),track:re.yL,connections:s.u4,instancesManager:g.Q3,workspaces:D.__}),ra=(0,i.nk)({name:"DropNamespace",component:({children:e})=>r().createElement(d.ETl,null,r().createElement(d.t8G,null,e)),activate:function(e,{globalAppRegistry:t,connections:n,track:a},{on:o,cleanup:r,signal:i}){const s=async(e,{connectionId:o}={})=>{if("string"==typeof e&&(e=(0,m.Ay)(e)),!o)throw new Error("Cannot drop a namespace without specifying connectionId");const{ns:r,validCollectionName:s,database:l,collection:c}=e,u=s?"Collection":"Database";if(a("Screen",{name:s?"drop_collection_modal":"drop_database_modal"},void 0),await(0,d.$TK)({variant:"danger",title:`Drop ${u}?`,description:`Are you sure you want to drop ${u.toLocaleLowerCase()} "${r}"?`,requiredInputText:s?c:l,buttonText:`Drop ${u}`,"data-testid":"drop-namespace-confirmation-modal",signal:i}))try{const e=s?"dropCollection":"dropDatabase",i=n.getDataServiceForConnection(o);await i[e](r),a(s?"Collection Dropped":"Database Dropped",{},n.getConnectionById(o)?.info),t.emit(s?"collection-dropped":"database-dropped",r,{connectionId:o}),(0,d.c3r)("drop-namespace-success",{variant:"success",title:`${u} "${r}" dropped`,timeout:3e3})}catch(e){if(i.aborted)return;(0,d.c3r)("drop-namespace-error",{variant:"important",title:`Failed to drop ${u.toLocaleLowerCase()} "${r}"`,description:e.message,timeout:3e3})}};return o(t,"open-drop-database",s),o(t,"open-drop-collection",s),{store:{},deactivate:r}}},{logger:(0,p.fF)("COMPASS-DROP-NAMESPACE-UI"),track:re.yL,connections:s.u4}),ia=(0,i.nk)({name:"RenameCollectionPlugin",component:Kt,activate:function(e,{globalAppRegistry:t,connections:n,track:a,instancesManager:o,queryStorage:r,pipelineStorage:i},{cleanup:s,on:l}){const c=(0,F.Yl)(Rt,(0,F.Tw)(P.A.withExtraArgument({globalAppRegistry:t,instancesManager:o,connections:n,track:a})));return l(t,"open-rename-collection",((e,{connectionId:t}={})=>{if(!t)throw new Error("Cannot rename a namespace without specifying connectionId");const n=o.getMongoDBInstanceForConnection(t),a=n.databases.get(e.database)?.collections??[];(async function(e){const t=await(i?.getStorage().loadAll().then((t=>t.some((({namespace:t})=>t===e)))).catch((()=>!1))),n=await(r?.getStorage().loadAll().then((t=>t.some((({_ns:t})=>t===e)))).catch((()=>!1)));return Boolean(t||n)})(`${e.database}.${e.collection}`).then((n=>{c.dispatch((({connectionId:e,db:t,collection:n,collections:a,areSavedQueriesAndAggregationsImpacted:o})=>({type:Tt,connectionId:e,db:t,collection:n,collections:a,areSavedQueriesAndAggregationsImpacted:o}))({connectionId:t,db:e.database,collection:e.collection,collections:a,areSavedQueriesAndAggregationsImpacted:n}))}))})),{store:c,deactivate:s}}},{connections:s.u4,track:re.yL,instancesManager:g.Q3,queryStorage:jt.yS,pipelineStorage:jt.oC});var sa=n(86712);const la=(0,d.AHW)({paddingLeft:d.YKD[400],paddingRight:d.YKD[400],display:"flex",justifyContent:"space-between",alignItems:"center"}),ca=(0,d.AHW)({lineHeight:"32px",fontWeight:600}),da=[{action:"open-compass-settings",label:"Compass Settings",icon:"Settings"}];function ua({onAction:e,isCompassWeb:t}){const n=(0,R.Fg)("enableCompassWebSettings");return r().createElement("div",{className:la,"data-testid":"sidebar-header"},r().createElement(d.Pds,{className:ca},t?"Data Explorer":"Compass",false),(!t||n)&&r().createElement(d.eDW,{onAction:e,iconSize:"small",actions:da,"data-testid":"connections-sidebar-title-actions"}))}const ma=(0,d.AHW)({cursor:"pointer",color:"var(--item-color)",position:"relative",paddingLeft:d.YKD[400],"&:hover .item-background":{display:"block",backgroundColor:"var(--item-bg-color-hover)"},"&:hover":{backgroundColor:"var(--item-bg-color-hover)"},svg:{flexShrink:0}}),pa=(0,d.AHW)({color:"var(--item-color-active)",fontWeight:"bold",backgroundColor:"var(--item-bg-color-active)"}),ha=(0,d.AHW)({zIndex:1,minWidth:0,display:"flex",alignItems:"center",justifyContent:"flex-start",gap:d.YKD[200],paddingTop:d.YKD[150],paddingBottom:d.YKD[150]}),ga=(0,d.AHW)({overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"});function fa({onClick:e,glyph:t,label:n,isActive:a}){const[o]=(0,d.v69)(),i=(0,d.pR2)(e),s=(0,d.v63)({className:(0,d.cx)(ma,a&&pa),role:"button","aria-label":n,"aria-current":a,tabIndex:0},o,i);return r().createElement("div",s,r().createElement("div",{className:ha},r().createElement(d.Int,{glyph:t,size:"small"}),r().createElement("span",{className:ga},n)))}function ya({currentLocation:e}){const{hasWorkspacePlugin:t}=(0,D.nW)(),{openMyQueriesWorkspace:n,openDataModelingWorkspace:a}=(0,D.$L)(),o=(0,R.Fg)("enableMyQueries");return r().createElement("div",null,t("My Queries")&&o&&r().createElement(fa,{onClick:n,glyph:"CurlyBraces",label:"My Queries",isActive:"My Queries"===e}),r().createElement(fa,{onClick:a,glyph:"Diagram",label:"Data Modeling",isActive:"Data Modeling"===e}))}var ba=n(91399);const va=(0,d.AHW)({margin:`${d.YKD[400]}px 0`});function Ca({children:e}){return r().createElement(d.nBu,{weight:"medium"},e)}function Ea({children:e}){return r().createElement(d.nBu,null,e)}function Sa({term:e,children:t}){return r().createElement("div",{className:va},r().createElement("dt",null,r().createElement(Ca,null,e)),r().createElement("dd",null,r().createElement(Ea,null,t)))}function ka({isEnterprise:e,isAtlas:t,isLocalAtlas:n}){return t?"Atlas":n?"AtlasLocalDev":void 0===e?"":e?"Enterprise":"Community"}function wa(e,t,n){return 1===e?`1 ${t}`:`${e} ${n}`}function xa(e){const t=[],{instance:n,connectionOptions:a}=e;return n?(t.push(function({instance:e,databases:t}){const n="ready"===e?.refreshingStatus,a=n?t.length:"-",o=n?t.map((e=>e.collectionsLength)).reduce(((e,t)=>e+t),0):"-";return{term:"Stats",description:r().createElement("div",null,r().createElement("div",null,`${a} DB${1===a?"":"s"}`),r().createElement("div",null,`${o} Collection${1===o?"":"s"}`))}}(e)),t.push(function({instance:e}){const{type:t,servers:n=[]}=e?.topologyDescription??{};let a=1===n.length?"Host":"Hosts";return t===ba.TopologyType.LOAD_BALANCED&&(a+=" (Load Balancer)"),{term:a,description:1===n.length?n[0].address:r().createElement("div",null,n.map(((e,t)=>r().createElement("div",{key:t},e.address))))}}(e)),!1===n.dataLake.isDataLake&&n.topologyDescription.type!==ba.TopologyType.LOAD_BALANCED&&t.push(function({instance:e}){const{type:t,setName:n,servers:a=[]}=e?.topologyDescription??{};let o,i;switch(t){case ba.TopologyType.SHARDED:o="Sharded",i=wa(a.length,"Mongos","Mongoses");break;case ba.TopologyType.REPLICA_SET_NO_PRIMARY:case ba.TopologyType.REPLICA_SET_WITH_PRIMARY:o=`Replica Set ${n}`,i=wa(a.length,"Node","Nodes");break;default:o=ba.ServerType.humanize(a[0]?.type??"Unknown")}return{term:"Cluster",description:i?r().createElement("div",null,r().createElement("div",null,o),r().createElement("div",null,i)):o}}(e)),t.push(function({instance:e}){return{term:"Edition",description:e?.dataLake.isDataLake?`Atlas Data Federation ${e?.dataLake.version??""}`:`MongoDB ${e?.build.version} ${ka({isEnterprise:e?.build.isEnterprise,isLocalAtlas:e?.isLocalAtlas,isAtlas:e?.isAtlas})}`}}(e)),a.sshTunnel&&t.push(function({connectionOptions:e}){const{sshTunnelHostPortString:t}=e;return{term:"SSH Connection Via",description:t}}(e)),t):t}const Aa=(0,Ee.Ng)(((e,{connectionInfo:t})=>{if(!t)return{infos:[]};const n=e.instance[t.id],a=e.databases[t.id],o=e.connectionOptions[t.id];return{infos:xa({instance:n,databases:a?.databases??[],connectionInfo:t,connectionOptions:o||{}})}}),{})((function({isVisible:e,close:t,infos:n=[]}){return r().createElement(d.WhU,{title:"Connection info",open:e,onClose:t,size:"small","data-testid":"connection-info-modal"},r().createElement("dl",null,n.map(((e,t)=>r().createElement(Sa,{key:t,term:e.term},e.description)))))})),Da=Aa;var Ia=n(4863),Ma=n(23412);const Ta="sidebar/databases/CHANGE_DATABASES",La={},Oa=(e,t)=>{const n=[];for(const a of e){const e=!t||t.test(a.name),o=Na(a.collections,t,a.name);if(e||o.length){const r=!e&&o.length?o:a.collections.map((e=>({...e,isMatch:!t||t.test(e.name)})));n.push({...a,isMatch:e,collections:r})}}return n},Na=(e,t,n)=>e.filter((({name:e})=>!t||t.test(e)||t.test(`${n}.${e}`))).map((e=>({...e,isMatch:!0}))),_a=(e,t)=>{const n={...e};return t.forEach((e=>{if("connected"===e.connectionStatus){const{connectionInfo:{id:t},databases:a}=e,o=a.length&&a[0].isMatch;n[t]||(n[t]={state:void 0,databases:{}}),o&&"collapsed"===n[t].state&&(n[t].state="tempExpanded"),a.forEach((({_id:e,collections:a})=>{a.length&&a.some((e=>e.isMatch))&&a.length&&("collapsed"===n[t].state&&(n[t].state="tempExpanded"),n[t].databases?n[t].databases[e]="tempExpanded":n[t].databases={[e]:"tempExpanded"})}))}})),n},Fa=e=>{const t=Object.fromEntries(Object.entries(e).map((([e,{state:t,databases:n}])=>[e,{state:"tempExpanded"===t?"collapsed":t,databases:Object.fromEntries(Object.entries(n||[]).map((([e,t])=>[e,"tempExpanded"===t?void 0:t])))}])));return t},Pa=e=>{const t={};for(const{id:n}of e)t[n]={state:"collapsed",databases:{}};return t},Wa="sidebar/active-connections/FILTER_CONNECTIONS",Ra="sidebar/active-connections/CLEAR_FILTER",Ua="sidebar/active-connections/CONNECTION_TOGGLE",$a="sidebar/active-connections/DATABASE_TOGGLE",Va="sidebar/active-connections/CONNECTIONS_CHANGED",Ha="sidebar/active-connections/COLLAPSE_ALL",Ka=(e,t)=>{switch(t.type){case Ha:return{...e,expanded:Pa(t.connections)};case Wa:{const n=((e,t,n)=>{const a=[];for(const o of e){const e="connected"!==o.connectionStatus&&"connecting"!==o.connectionStatus;if(n&&e)continue;const r=!t||t.test(o.name);let i=[];"connected"===o.connectionStatus&&(i=Oa(o.databases,t)),(r||i.length)&&a.push({...o,isMatch:r,..."connected"===o.connectionStatus?{databases:!r&&i.length?i:o.databases}:{}})}return a})(t.connections,t.filterRegex,t.excludeInactive),a=Fa(e.expanded);return{...e,filtered:n,expanded:_a(a,n)}}case Ra:return{...e,filtered:void 0,expanded:Fa(e.expanded)};case Ua:{const{connectionId:n,expand:a}=t,o=e.expanded[n]?.state;return"collapsed"!==o||a?{...e,expanded:{...e.expanded,[n]:{...e.expanded[n],state:a?void 0:"collapsed"}}}:e}case $a:{const{connectionId:n,databaseId:a,expand:o}=t,r=e.expanded[n]?.databases?.[a];return!r&&!o||"expanded"===r&&o?e:{...e,expanded:{...e.expanded,[n]:{...e.expanded[n],databases:{...e.expanded[n]?.databases,[a]:o?"expanded":void 0}}}}}case Va:{const{connections:n}=t;return{...e,expanded:Object.fromEntries(n.map((({id:t})=>[t,e.expanded[t]||{state:void 0,databases:{}}])))}}default:return e}},ja=(0,d.AHW)({display:"flex",flexDirection:"column",alignItems:"flex-start",padding:d.YKD[300],minWidth:270}),Ba=(0,d.AHW)({position:"absolute",top:d.YKD[50],right:d.YKD[50]}),za=(0,d.AHW)({display:"flex",flexDirection:"row",gap:d.YKD[200],marginTop:d.YKD[200]});function Ya({open:e,setOpen:t,filter:n,onFilterChange:a,disabled:i=!1}){const s=(0,re.Jr)(),l=(0,o.useCallback)((e=>{a((t=>({...t,excludeInactive:e}))),s("Sidebar Connections Active Connections Filter Toggled",{active_only:e})}),[a,s]),c=(0,d.BiT)(),u=(0,d.BiT)(),m=n.excludeInactive,[p,h]=(0,o.useState)(!1),g=(0,o.useCallback)((()=>h(!0)),[h]),f=(0,o.useCallback)((()=>h(!1)),[h]);return r().createElement(r().Fragment,null,r().createElement(d.m_M,{align:"right",open:p&&!e,setOpen:h},"Filter connections"),r().createElement(d.WA6,{open:e,setOpen:t,containerClassName:ja,hideCloseButton:!0,trigger:({onClick:t,children:n,ref:a})=>r().createElement(r().Fragment,null,r().createElement(d.K0,{onClick:t,onMouseEnter:g,onMouseLeave:f,active:e,"aria-label":"Filter connections",ref:a,disabled:i},r().createElement(d.Int,{glyph:"Filter"}),m&&r().createElement("svg",{className:Ba,width:"6",height:"6",viewBox:"0 0 6 6",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r().createElement("circle",{cx:"3",cy:"3",r:"3",fill:d.MFm.blue.base}))),n)},r().createElement(d.bz9,null,"Filter Options"),r().createElement("div",{className:za},r().createElement(d.lMk,{id:c,"aria-labelledby":u,checked:n.excludeInactive,onChange:l,size:"small"}),r().createElement(d.JU7,{htmlFor:c,id:u},"Show only active connections"))))}const qa=(0,d.AHW)({display:"flex",flexDirection:"row",alignItems:"center",gap:d.YKD[200],paddingLeft:d.YKD[400],paddingRight:d.YKD[400]}),Ga=(0,d.AHW)({flexGrow:1});function Za(e){try{return e?new RegExp(e,"i"):null}catch{return null}}function Ja({placeholder:e="Search",ariaLabel:t="Search",title:n="Search",filter:a,onFilterChange:i,disabled:s=!1}){const l=(0,o.useCallback)((e=>{i((t=>({...t,regex:Za(e.target.value)})))}),[i]),[c,u]=(0,o.useState)(!1),m=(0,o.useCallback)((e=>{e.preventDefault(),e.stopPropagation()}),[]);return r().createElement("form",{noValidate:!0,className:qa,onSubmit:m},r().createElement(d.ksK,{"data-testid":"sidebar-filter-input",placeholder:e,type:"search","aria-label":t,title:n,onChange:l,className:Ga,disabled:s}),r().createElement(Ya,{open:c,setOpen:u,filter:a,onFilterChange:i,disabled:s}))}var Qa=n(858);const Xa=(0,d.AHW)({height:"100%",paddingBottom:d.YKD[400],display:"flex",flexDirection:"column",gap:d.YKD[200]}),eo=(0,d.AHW)({display:"flex",justifyContent:"space-between",alignItems:"center",paddingLeft:d.YKD[400],paddingRight:d.YKD[400]}),to=(0,d.AHW)({marginTop:0,marginBottom:0,textTransform:"uppercase",fontSize:"12px",lineHeight:`${d.YKD[800]}px`}),no=(0,d.AHW)({fontWeight:"normal",marginLeft:d.YKD[100]}),ao=(0,d.AHW)({opacity:.6}),oo=(0,d.AHW)({paddingLeft:d.YKD[400],paddingRight:d.YKD[400],display:"flex",flexDirection:"column",gap:d.YKD[200]}),ro=(0,d.AHW)({paddingLeft:d.YKD[400],paddingRight:d.YKD[400],paddingTop:d.YKD[400]}),io=(0,o.createContext)(!1);function so(e,t){const{database:n,collection:a}=(0,m.Ay)(e);return t.find((e=>e._id===n))?.collections.find((e=>e.name===a))??null}const lo=(0,d.AHW)({display:"grid",gridTemplateColumns:"1fr",gridAutoRows:d.YKD[400]+d.YKD[300],alignItems:"center",paddingLeft:d.YKD[400]+d.YKD[100],paddingRight:d.YKD[400]});function co(){return r().createElement("div",{"data-testid":"connections-placeholder",className:lo},Array.from({length:3},((e,t)=>r().createElement(d.OrA,{key:t,height:d.YKD[400]}))))}const uo={onRefreshDatabases:e=>(t,n,{globalAppRegistry:a})=>{a.emit("refresh-databases",{connectionId:e})},onNamespaceAction:(e,t,n)=>(a,o,{globalAppRegistry:r})=>{const i=(e,...t)=>{r.emit(e,...t)},s=(0,m.Ay)(t);switch(n){case"create-database":return void i("open-create-database",{connectionId:e});case"drop-database":return void i("open-drop-database",s.database,{connectionId:e});case"rename-collection":return void i("open-rename-collection",s,{connectionId:e});case"drop-collection":return void i("open-drop-collection",s,{connectionId:e});case"create-collection":return void i("open-create-collection",s,{connectionId:e});case"duplicate-view":{const n=so(t,o().databases[e].databases);return void(n&&n.sourceName&&i("open-create-view",{source:n.sourceName,pipeline:n.pipeline,duplicate:!0},{connectionId:e}))}}},onDatabaseExpand:(e,t)=>(n,a,{globalAppRegistry:o})=>{o.emit("sidebar-expand-database",t,{connectionId:e}),n({type:"sidebar/instance/EXPAND_DATABASE",connectionId:e,databaseId:t})},fetchAllCollections:e=>(t,n,{globalAppRegistry:a})=>{a.emit("sidebar-filter-navigation-list",{connectionId:e}),t({type:"sidebar/instance/FETCH_ALL_COLLECTIONS"})}},mo=(0,Ee.Ng)((e=>({instances:e.instance,databases:e.databases,isPerformanceTabSupported:e.isPerformanceTabSupported})),uo)((({connectionsWithStatus:e,activeWorkspace:t,filter:n,instances:a,databases:i,isPerformanceTabSupported:l,onFilterChange:c,onConnect:u,onConnectInNewWindow:p,onNewConnection:h,onEditConnection:g,onRemoveConnection:f,onDuplicateConnection:y,onCopyConnectionString:b,onToggleFavoriteConnectionInfo:v,onOpenCsfleModal:C,onOpenNonGenuineMongoDBModal:E,onOpenConnectionInfo:S,onDisconnect:k,onDatabaseExpand:w,fetchAllCollections:x,onRefreshDatabases:A,onNamespaceAction:I,onOpenConnectViaModal:M})=>{const{openShellWorkspace:T,openPerformanceWorkspace:L,openDatabasesWorkspace:O,openCollectionsWorkspace:N,openCollectionWorkspace:_,openEditViewWorkspace:F}=(0,D.$L)(),{hasWorkspacePlugin:P}=(0,D.nW)(),W=(0,re.Jr)(),U=(0,o.useMemo)((()=>{const t=[];for(const{connectionInfo:n,connectionStatus:o}of e)if(o!==s.vk.Connected)t.push({name:(0,Bt.T8)(n),connectionInfo:n,connectionStatus:o});else{const e=a[n.id],o=i[n.id],r=e?.databasesStatus,c=void 0!==r&&!["initial","fetching"].includes(r),d=e?.dataLake?.isDataLake??!1,u=e?.isWritable??!1,m=!d&&!!l[n.id];t.push({isReady:c,isDataLake:d,isWritable:u,isPerformanceTabAvailable:P("Performance"),isPerformanceTabSupported:m,name:(0,Bt.T8)(n),connectionInfo:n,databasesLength:o?.databases?.length??0,databasesStatus:r,databases:o?.databases??[],connectionStatus:s.vk.Connected,isGenuineMongoDB:!1!==e?.genuineMongoDB.isGenuine,csfleMode:e?.csfleMode})}return t}),[e,a,i,l,P]),{supportsConnectionImportExport:$,openConnectionImportExportModal:V}=(0,Qa.M)({context:"connectionsList"}),H=(0,R.Fg)("enableCreatingNewConnections"),{filtered:K,expanded:j,onCollapseAll:B,onConnectionToggle:z,onDatabaseToggle:Y}=(({connections:e,filter:t,fetchAllCollections:n,onDatabaseExpand:a})=>{const[{filtered:r,expanded:i},s]=(0,o.useReducer)(Ka,{filtered:void 0,expanded:{}}),l=(0,o.useMemo)((()=>e.filter((({connectionStatus:e})=>"connected"===e)).map((({connectionInfo:e})=>e))),[e]);(0,o.useEffect)((()=>{s({type:Va,connections:l})}),[l]);const c=(t.regex||t.excludeInactive)&&e;(0,o.useEffect)((()=>{t.regex||t.excludeInactive?c&&(n(),s({type:Wa,connections:c,filterRegex:t.regex,excludeInactive:t.excludeInactive})):s({type:Ra})}),[t.regex,t.excludeInactive,c,n]);const d=(0,o.useCallback)(((e,t)=>s({type:Ua,connectionId:e,expand:t})),[]),u=(0,o.useRef)(i);u.current=i;const p=(0,o.useRef)(a);p.current=a;const h=(0,o.useCallback)(((e,t,n)=>{const{database:a}=(0,m.Ay)(t);n&&!u.current[e]?.databases?.[a]&&p.current(e,a),s({type:$a,connectionId:e,databaseId:a,expand:n})}),[]),g=(0,o.useCallback)((()=>{s({type:Ha,connections:l})}),[l]),f=(0,o.useMemo)((()=>{const t=Object.create(null);for(const{connectionInfo:n,connectionStatus:a}of e){if("connected"!==a){t[n.id]=!1;continue}const e=Object.create(null),{state:o,databases:r}=i[n.id]??{databases:{}};for(const t in r)e[t]=!!r[t];t[n.id]="collapsed"!==o&&e}return t}),[i,e]),y=(0,o.useMemo)((()=>{if(r)return function(e){const t=[];for(const n of e)"connected"===n.connectionStatus?t.push({...Be().omit(n,["isMatch"]),databases:n.databases.map((e=>({...Be().omit(e,["isMatch"]),collections:e.collections.map((e=>Be().omit(e,["isMatch"])))})))}):t.push({...Be().omit(n,["isMatch"])});return t}(r)}),[r]);return{filtered:y,expanded:f,onCollapseAll:g,onConnectionToggle:d,onDatabaseToggle:h}})({connections:U,filter:n,fetchAllCollections:x,onDatabaseExpand:w}),q=(0,o.useMemo)((()=>{const e=[{action:"collapse-all-connections",label:"Collapse all connections",icon:r().createElement(d.pzy,{width:14,height:14})}];return H&&e.push({action:"add-new-connection",label:"Add new connection",icon:"Plus"}),$&&e.push({action:"import-saved-connections",label:"Import connections",icon:"Download"},{action:"export-saved-connections",label:"Export connections",icon:"Export"}),e}),[$,H]),G=(0,o.useCallback)(((e,t)=>{const n=e=>{switch(e.type){case"connection":return e.connectionInfo;case"database":return e.connectionItem.connectionInfo;case"view":case"collection":case"timeseries":return e.databaseItem.connectionItem.connectionInfo;default:throw new Error(`Item type does not have connection info for action ${t}`)}},a=e=>{if("connection"===e.type)throw new Error(`Item type ${e.type} does not have a namespace for action ${t}`);return"database"===e.type?e.dbName:e.namespace},o="connection"===e.type?e.connectionInfo.id:e.connectionId;switch(t){case"select-connection":return void O(o);case"refresh-databases":return void A(o);case"create-database":return void I(o,"",t);case"open-shell":{let t,a;return"database"===e.type&&(t=`use(${JSON.stringify(e.dbName)});`),"collection"===e.type&&(t=`use(${JSON.stringify(e.databaseItem.dbName)});`,a=`db[${JSON.stringify(e.name)}].find()`),T(o,{newTab:!0,initialEvaluate:t,initialInput:a}),void W("Open Shell",{entrypoint:e.entrypoint??"sidebar"},n(e))}case"connection-performance-metrics":return void L(o);case"open-connection-info":return void S(o);case"connection-disconnect":return void k(o);case"connection-connect":return void u(n(e));case"connection-connect-in-new-window":return void p(n(e));case"edit-connection":return void g(n(e));case"copy-connection-string":return void b(n(e));case"connection-toggle-favorite":return void v(n(e));case"duplicate-connection":return void y(n(e));case"remove-connection":return void f(n(e));case"open-csfle-modal":return void C(o);case"open-non-genuine-mongodb-modal":return void E(o);case"show-connect-via-modal":return void M?.(n(e).atlasMetadata);case"connection-atlas-performance-metrics":{const{atlasMetadata:t}=n(e);return void(t&&window.open((0,zt.FU)(t),"_blank"))}case"connection-cluster-overview":{const{atlasMetadata:t}=n(e);return void(t&&window.open((0,zt.d2)(t),"_blank"))}case"connection-view-monitoring":{const{atlasMetadata:t}=n(e);return void(t&&window.open((0,zt.k4)(t),"_blank"))}case"connection-query-insights":{const{atlasMetadata:t}=n(e);return void(t&&window.open((0,zt.bv)(t),"_blank"))}case"select-database":return void N(o,a(e));case"select-collection":return void _(o,a(e));case"open-in-new-tab":return void _(o,a(e),{newTab:!0});case"modify-view":{const t=so(a(e),U.find((e=>e.connectionStatus===s.vk.Connected&&e.connectionInfo.id===o))?.databases??[]);return void(t&&t.sourceName&&t.pipeline&&F(o,t._id,{sourceName:t.sourceName,sourcePipeline:t.pipeline,newTab:!0}))}default:return void I(o,a(e),t)}}),[O,A,T,W,L,S,k,u,p,g,b,v,y,f,C,E,M,U,N,_,F,I]),Z=(0,o.useCallback)(((e,t)=>{"connection"===e.type?z(e.connectionInfo.id,t):"database"===e.type&&Y(e.connectionId,e.dbName,t)}),[z,Y]),J=(0,o.useCallback)((e=>{"collapse-all-connections"===e?(B(),W("Sidebar Connections Collapsed All",{})):"add-new-connection"===e?h():"import-saved-connections"!==e&&"export-saved-connections"!==e||V(e)}),[B,h,V,W]),Q=(0,d.MdH)((()=>[{telemetryLabel:"Connection List Title Actions",items:q.map((({label:e,action:t})=>({label:e,onAction:()=>J(t)})))}]),[q,J]);(0,o.useEffect)((()=>{if(t&&("Databases"===t.type||"Collections"===t.type||"Collection"===t.type)){const e=t.connectionId;if(z(e,!0),"Databases"!==t.type){const n=t.namespace;Y(e,n,!0)}}}),[t,Y,z]);const X=(0,o.useContext)(io),{isInitialLoad:ee}=(0,s.VW)(),te=ee?r().createElement("span",{className:(0,d.cx)(no,ao)},"(…)"):0!==U.length?r().createElement("span",{className:no},"(",U.length,")"):void 0;return r().createElement("div",{className:Xa},r().createElement("div",{className:eo,"data-testid":"connections-header",ref:Q},r().createElement(d.Pds,{className:to},X?"Clusters":"Connections",te),r().createElement(d.eDW,{iconSize:"xsmall",actions:q,onAction:J,"data-testid":"connections-list-title-actions",collapseToMenuThreshold:3,collapseAfter:2})),r().createElement(Ja,{placeholder:X?"Search clusters":"Search connections",filter:n,onFilterChange:c,disabled:ee||0===U.length}),ee?r().createElement(co,null):U.length>0?K&&0===K.length?r().createElement("div",{className:ro,"data-testid":"no-search-results"},r().createElement(d.nBu,null,"No results found.")):r().createElement(Ma.w,{connections:K||U,activeWorkspace:t,onItemAction:G,onItemExpand:Z,expanded:j}):0===U.length?r().createElement("div",{className:oo},r().createElement(d.nBu,{"data-testid":"no-deployments-text"},"You have not connected to any deployments."),H&&r().createElement(d.$nd,{"data-testid":"add-new-connection-button",variant:d.AkO.Primary,leftGlyph:r().createElement(d.Int,{glyph:"Plus"}),onClick:h},"Add new connection")):null)})),po=(0,d.AHW)({marginTop:d.YKD[400],marginBottom:d.YKD[400],marginRight:d.YKD[400]}),ho=(0,d.AHW)({display:"flex",alignItems:"center"}),go=(0,d.AHW)({marginTop:d.YKD[400]}),fo=(0,Ee.Ng)((({instance:e},{connectionId:t})=>{const n=t?e[t]:null;return{open:!(!t||!n),csfleMode:n?.csfleMode}}))((function({open:e,csfleMode:t,onClose:n,setConnectionIsCSFLEEnabled:a}){const i=(0,o.useCallback)((e=>{a(e)}),[a]);return(0,re.ou)((t=>{e&&t("Screen",{name:"csfle_connection_modal"},void 0)}),[e],void 0),r().createElement(d.WhU,{title:"In-Use Encryption Connection Options",open:e,onClose:n,"data-testid":"csfle-connection-modal"},r().createElement(d.nBu,null,"This connection is configured with In-Use Encryption enabled."),r().createElement("div",{className:ho},r().createElement(d.lMk,{className:po,id:"set-csfle-enabled","aria-labelledby":"set-csfle-enabled-label",size:"small",type:"button",checked:"enabled"===t,onChange:i}),r().createElement(d.JU7,{id:"set-csfle-enabled-label",htmlFor:"set-csfle-enabled"},"Enable In-Use Encryption for this connection")),r().createElement(d.VYo,null,"Disabling In-Use Encryption only affects how Compass accesses data. In order to make Compass forget KMS credentials, the connection must be fully closed."),r().createElement(d.lZ$,{className:go},"In-Use Encryption is an Enterprise/Atlas-only feature of MongoDB. ",r().createElement(d.N_E,{href:"https://dochub.mongodb.org/core/rqe-encrypted-fields"},"Learn More")))})),yo=(0,d.AHW)({zIndex:0,display:"flex",flexDirection:"column",height:"100%",paddingTop:d.YKD[400],gap:d.YKD[200]}),bo=(0,Ee.Ng)(void 0,{onSidebarAction:(e,...t)=>(n,a,{globalAppRegistry:o})=>{o.emit(e,...t)},onConnectionCsfleModeChanged:(e,t)=>(n,a,{globalAppRegistry:o,connections:r})=>{r.getDataServiceForConnection(e).setCSFLEEnabled(t),queueMicrotask((()=>{o?.emit("refresh-data")}))}})((function({activeWorkspace:e,onSidebarAction:t,onConnectionCsfleModeChanged:n,onOpenConnectViaModal:a,isCompassWeb:i}){const[l,c]=(0,o.useState)(void 0),[u,m]=(0,o.useState)({regex:null,excludeInactive:!1}),[p,h]=(0,o.useState)(),g=(0,Ia.w)(),f=(0,s.tT)(),{connect:y,connectInNewWindow:b,disconnect:v,createNewConnection:C,editConnection:E,removeConnection:S,duplicateConnection:k,toggleFavoritedConnectionStatus:w,showNonGenuineMongoDBWarningModal:x}=(0,s.PM)(),A=(0,o.useCallback)((e=>h(e)),[]),D=(0,o.useCallback)((()=>h(void 0)),[]),I=(0,o.useCallback)((e=>{!async function(e){try{await navigator.clipboard.writeText(e),(0,d.c3r)("copy-to-clipboard",{title:"Success",description:"Copied to clipboard.",variant:"success",timeout:5e3})}catch{(0,d.c3r)("copy-to-clipboard",{title:"Error",description:"An error occurred when copying to clipboard. Please try again.",variant:"warning",timeout:5e3})}}(g(e?.connectionOptions.connectionString))}),[g]),M=(0,o.useCallback)((e=>{c(e)}),[]),T=(0,o.useCallback)((()=>{c(void 0)}),[]),L=(0,o.useCallback)((e=>{l&&n(l,e)}),[l,n]);return r().createElement(d.q$V,{"data-testid":"navigation-sidebar",useNewTheme:!0},r().createElement("aside",{className:yo},r().createElement(r().Fragment,null,r().createElement(ua,{onAction:t,isCompassWeb:i}),r().createElement(ya,{currentLocation:e?.type??null}),r().createElement(d.d$,null)),r().createElement(mo,{connectionsWithStatus:f,activeWorkspace:e,filter:u,onFilterChange:m,onConnect:e=>{y(e)},onConnectInNewWindow:b,onNewConnection:C,onEditConnection:e=>{E(e.id)},onRemoveConnection:e=>{S(e.id)},onDuplicateConnection:e=>{k(e.id)},onCopyConnectionString:I,onToggleFavoriteConnectionInfo:e=>{w(e.id)},onOpenConnectionInfo:A,onDisconnect:e=>{v(e)},onOpenCsfleModal:M,onOpenNonGenuineMongoDBModal:e=>{x(e)},onOpenConnectViaModal:a}),r().createElement(fo,{connectionId:l,onClose:T,setConnectionIsCSFLEEnabled:L}),r().createElement(Da,{connectionInfo:p?(O=p,f.find((({connectionInfo:e,connectionStatus:t})=>e.id===O&&t===s.vk.Connected))?.connectionInfo):void 0,isVisible:!!p,close:D})));var O})),vo=(0,d.AHW)({width:d.q$X}),Co="sidebar/connection-options/CHANGE_CONNECTION_OPTIONS",Eo={};const So="compass-sidebar/SET_IS_PERFORMANCE_TAB_SUPPORTED";function ko(e,t){return{type:So,connectionId:e,isSupported:t}}const wo="sidebar/instance/SETUP_INSTANCE",xo="sidebar/instance/CLOSE_INSTANCE",Ao={},Do=(e,t)=>(n,a,{connections:o,logger:{log:r,mongoLogId:i}})=>{const{instance:s}=a();if(s[e])return;const l=se()((()=>{n({type:wo,connectionId:e,instance:{status:t.status,refreshingStatus:t.refreshingStatus,databasesStatus:t.databasesStatus,csfleMode:t.csfleMode,build:{isEnterprise:t.build.isEnterprise,version:t.build.version},dataLake:{isDataLake:t.dataLake.isDataLake,version:t.dataLake.version},genuineMongoDB:{serverName:t.genuineMongoDB.serverName,isGenuine:t.genuineMongoDB.isGenuine},topologyDescription:{servers:t.topologyDescription.servers,setName:t.topologyDescription.setName,type:t.topologyDescription.type},isWritable:t.isWritable,env:t.env,isAtlas:t.isAtlas,isLocalAtlas:t.isLocalAtlas}})}),300,{leading:!0,trailing:!0});function c(e){return{_id:e._id,name:e.name,collectionsStatus:e.collectionsStatus,collectionsLength:e.collectionsLength,inferredFromPrivileges:e.inferred_from_privileges}}const d=se()((()=>{const a=t.databases.map((e=>({...c(e),collections:e.collections.map((e=>function(e){return{_id:e._id,name:e.name,type:e.type,sourceName:e.sourceName,pipeline:e.pipeline,inferredFromPrivileges:e.inferred_from_privileges}}(e)))})));n(((e,t)=>({type:Ta,connectionId:e,databases:t}))(e,a))}),300,{leading:!0,trailing:!0});t.on("change:status",l),t.on("change:refreshingStatus",l),t.on("change:databasesStatus",l),t.on("change:csfleMode",l),t.on("change:topologyDescription",l),t.on("change:isWritable",l),t.on("change:env",l),t.on("change:databasesStatus",d),t.on("add:databases",d),t.on("remove:databases",d),t.on("change:databases",d),t.on("change:databases.collectionsStatus",d),t.on("add:collections",d),t.on("remove:collections",d),t.on("change:collections._id",d),t.on("change:collections.status",d);const u=o.getDataServiceForConnection(e),m=u.getConnectionOptions();n(function(e,t){const n=!!t.sshTunnel,a=t?.sshTunnel?.host??"",o=t?.sshTunnel?.port??"",r=t.sshTunnel?(s=o,(i=a).length>=25?`${i.slice(0,9)}...${i.slice(-9)}:${s}`:`${i}:${s}`):"";var i,s;return{type:Co,connectionId:e,options:{sshTunnel:n,sshTunnelHostname:a,sshTunnelPort:o,sshTunnelHostPortString:r}}}(e,m)),Promise.all([u.currentOp(),u.top()]).then((()=>{n(ko(e,!0))}),(t=>{r.info(i(1001000278),"Sidebar","Performance tab required commands failed",{error:t.message});const a="AtlasError"!==t.codeName;n(ko(e,a))})),l(),d()},Io=(0,F.HY)({databases:function(e=La,t){if("sidebar/databases/TOGGLE_DATABASE"===t.type){const{expandedDbList:n}=e[t.connectionId]||{};return n&&n[t.database]===t.expanded?e:{...e,[t.connectionId]:{...e[t.connectionId],expandedDbList:{...n,[t.database]:t.expanded}}}}return t.type===Ta?{...e,[t.connectionId]:{...e[t.connectionId],databases:t.databases}}:e},connectionOptions:function(e=Eo,t){return t.type===Co?{...e,[t.connectionId]:t.options}:e},instance:function(e=Ao,t){if(t.type===wo)return{...e,[t.connectionId]:t.instance};if(t.type===xo){const n={...e};return delete n[t.connectionId],n}return e},isPerformanceTabSupported:(e={},t)=>t.type===So?{...e,[t.connectionId]:t.isSupported}:e});const Mo=(0,i.nk)({name:"CompassSidebar",component:({onOpenConnectViaModal:e,isCompassWeb:t})=>{const n=(0,D.Vr)(),{log:a,mongoLogId:o}=(0,p.Ul)("COMPASS-SIDEBAR-UI");return r().createElement(d.tHk,{className:vo,displayName:"Sidebar",onError:(e,t)=>{a.error(o(1001000148),"Sidebar","Rendering sidebar failed",{error:e.message,errorInfo:t})}},r().createElement(bo,{activeWorkspace:n,onOpenConnectViaModal:e,isCompassWeb:t}))},activate(e,{globalAppRegistry:t,connections:n,instancesManager:a,logger:o},r){const{store:i,deactivate:s}=function({globalAppRegistry:e,connections:t,instancesManager:n,logger:a},{on:o,cleanup:r}){const i=(0,F.y$)(Io,(0,F.Tw)(P.A.withExtraArgument({globalAppRegistry:e,connections:t,instancesManager:n,logger:a}))),s=n.listMongoDBInstances();for(const[e,t]of s)i.dispatch(Do(e,t));return o(n,g.hV.InstanceCreated,((e,t)=>i.dispatch(Do(e,t)))),o(n,g.hV.InstanceRemoved,(e=>i.dispatch((e=>(t,n)=>{const{instance:a}=n();a[e]&&t({type:xo,connectionId:e})})(e)))),{store:i,deactivate:r}}({globalAppRegistry:t,connections:n,instancesManager:a,logger:o},r);return{store:i,deactivate:s}}},{connections:s.u4,instancesManager:g.Q3,logger:(0,p.fF)("COMPASS-SIDEBAR-UI")}),To=io.Provider;var Lo=n(25540),Oo=n(38673),No=n(19814);const _o="initial",Fo="analyzing",Po="complete";var Wo=n(39059);const Ro=e=>"circle"===e.type?(e=>{return{[e.field]:{$geoWithin:{$centerSphere:[[e.lng,e.lat],(t=e.radius,t/1609.344/3963.2)]}}};var t})(e):"polygon"===e.type?(e=>({[e.field]:{$geoWithin:{$geometry:{type:"Polygon",coordinates:e.coordinates}}}}))(e):void 0,Uo=e=>{const t=Object.values(e);return 1===t.length?Ro(t[0]):(e=>({$or:e.map((e=>Ro(e)))}))(t)};var $o=n(6909);const Vo=async(e,t,n,a,o,{log:r,mongoLogId:i,debug:s})=>{try{r.info(i(1001000089),"Schema","Starting schema analysis",{ns:n});const s=e.sampleCursor(n,a,{...o,promoteValues:!1,signal:t},{fallbackReadPreference:"secondaryPreferred"}),l={signal:t,storedValuesLengthLimit:100},c=await(0,$o.Dy)(s,l);return r.info(i(1001000090),"Schema","Schema analysis completed",{ns:n}),c}catch(e){if(r.error(i(1001000091),"Schema","Schema analysis failed",{ns:n,error:e.message,aborted:t.aborted,...t.aborted?{abortReason:t.reason?.message??t.reason}:{}}),t.aborted)return void s("caught background operation terminated error",e);const a=function(e){return e?("MongoError"===e.name&&void 0!==e.code&&(e.code=JSON.parse(JSON.stringify(e.code))),e):new Error("Unknown error")}(e);throw s("schema analysis failed",e),a}};function Ho(e){return void 0!==e.bsonType}const Ko=["Point","LineString","Polygon","MultiPoint","MultiLineString","MultiPolygon","GeometryCollection"];async function jo(e){let t=!1;const n={};let a=0,o=0,r=0,i=0,s=0;return await async function e(l,c){if(r++,1e3===r&&(r=0,await(async()=>new Promise((e=>setTimeout(e))))()),l&&0!==l.length){i=Math.max(c,i);for(const r of l){if("type"===r.path[r.path.length-1]&&r.values&&Ko.find((e=>r.values?.find((t=>t===e))))&&(t=!0),Ho(r)?"Undefined"!==r.bsonType&&(n[r.bsonType]=(n[r.bsonType]??0)+1):1===c&&(r.types&&(r.types.length>2||r.types?.filter((e=>"Undefined"!==e.name)).length>1)&&a++,r.probability<1&&o++),"Document"===r.bsonType)await e(r.fields,c+1);else if("Array"===r.bsonType||r.types){const t="Array"===r.bsonType?1:0;await e(r.types,c+t)}Ho(r)||s++}}}(e.fields,1),{field_types:n,geo_data:t,optional_field_count:o,schema_depth:i,variable_type_count:a,distinct_field_count:s}}function Bo(e,t){return e.type===t}function zo({metricsId:e,metricsType:t,clusterName:n}){const a=encodeURIComponent(n),o=encodeURIComponent(t),r=encodeURIComponent(e);return"serverless"===t||"flex"===t?`#/${o}/advisor/${a}/createIndexes`:`#/metrics/${o}/${r}/advisor`}const Yo="schema-service/schema-analysis/analysisStarted",qo="schema-service/schema-analysis/analysisFinished",Go="schema-service/schema-analysis/analysisFailed",Zo="schema-service/schema-analysis/analysisErrorDismissed";function Jo(e){let t="general";return 50===e.code&&(t="timeout"),{errorType:t,errorMessage:e.message||"Unknown error"}}function Qo(){return(new ne.UUID).toString()}const Xo=(e,t,n)=>(a,o,{geoLayersRef:r})=>{r.current=((e,t,n)=>t._latlngs?((e,t,n)=>{const a={...n};var o;return a[t._leaflet_id]={field:e,coordinates:(o=t._latlngs,o.map((e=>{const t=e.map((e=>[e.lng,e.lat]));return t.push(t[0]),t}))),type:"polygon"},a})(e,t,n):t._latlng?((e,t,n)=>{const a={...n};return a[t._leaflet_id]={field:e,lat:t._latlng.lat,lng:t._latlng.lng,radius:t._mRadius,type:"circle"},a})(e,t,n):n)(e,t,r.current),n(Uo(r.current))},er="standardJSON",tr="schema-service/schema-export/openExportSchema",nr="schema-service/schema-export/closeExportSchema",ar="schema-service/schema-export/openLegacyModal",or="schema-service/schema-export/closeLegacyModal",rr="schema-service/schema-export/setLegacyModalChoice",ir="schema-service/schema-export/changeExportSchemaFormatStarted",sr="schema-service/schema-export/changeExportSchemaFormatComplete",lr="schema-service/schema-export/changeExportSchemaFormatError",cr="schema-service/schema-export/cancelExportSchema",dr=()=>e=>{e(gr(er)),e({type:tr})},ur=()=>(e,t,{exportAbortControllerRef:n})=>(n.current?.abort(),e({type:cr})),mr=({stage:e,track:t,connectionInfoRef:n,exportedSchema:a,exportFormat:o})=>{t("Schema Export Failed",{has_schema:!!a,schema_length:a?.length||0,format:o,stage:e},n.current)},pr=({schema:e,source:t,format:n,track:a,connectionInfoRef:o})=>{a("Schema Exported",(async()=>{const{geo_data:a,schema_depth:o}=e?await jo(e):{geo_data:!1,schema_depth:0};return{has_schema:null!==e,format:n,source:t,schema_width:e?.fields?.length??0,schema_depth:o,geo_data:a}}),o.current)},hr=()=>(e,t,{track:n,connectionInfoRef:a})=>{const{schemaAnalysis:{schema:o},schemaExport:{exportFormat:r}}=t();pr({schema:o,format:r,source:"schema_tab",track:n,connectionInfoRef:a})},gr=e=>async(t,n,{logger:{log:a},exportAbortControllerRef:o,schemaAccessorRef:r,namespace:i,track:s,connectionInfoRef:l})=>{o.current?.abort(),o.current=new AbortController;const c=o.current.signal;let d;t({type:ir,exportFormat:e}),a.info((0,p.oW)(1001000342),"Schema export formatting","Formatting schema",{format:e});try{const t=r.current;if(!t)throw new Error("No schema analysis available. Please analyze the collection's schema before exporting.");d=await async function({exportFormat:e,schemaAccessor:t,signal:n}){let a;switch(e){case"standardJSON":a=await t.getStandardJsonSchema({signal:n});break;case"mongoDBJSON":a={$jsonSchema:await t.getMongoDBJsonSchema({signal:n})};break;case"expandedJSON":a=await t.getExpandedJSONSchema({signal:n});break;case"legacyJSON":a=await t.getInternalSchema({signal:n})}return JSON.stringify(a,null,2)}({schemaAccessor:t,exportFormat:e,signal:c})}catch(n){if(c.aborted)return;return a.error((0,p.oW)(1001000343),"Schema export formatting","Error formatting schema",{error:n.stack}),t({type:lr,errorMessage:n.message}),void mr({stage:"switching format",track:s,connectionInfoRef:l,exportedSchema:void 0,exportFormat:e})}if(c.aborted)return;a.info((0,p.oW)(1001000344),"Schema export formatting complete","Formatting schema complete",{format:e,exportedSchemaLength:d.length});const u=`schema-${i.replace(".","-")}-${e}.json`;t({type:sr,exportedSchema:d,filename:u})},fr="schemaExportLegacyModalChoice",yr=()=>(e,t,{namespace:n,track:a,connectionInfoRef:o})=>{const{schemaAnalysis:{schema:r}}=t(),i=null!==r;i&&navigator.clipboard.writeText(JSON.stringify(r,null," ")),pr({schema:r,source:"app_menu",format:"legacyJSON",track:a,connectionInfoRef:o}),e({type:or}),(0,d.c3r)("share-schema",i?{variant:"success",title:"Schema Copied",description:`The schema definition of ${n} has been copied to your clipboard in JSON format.`,timeout:5e3}:{variant:"warning",title:"Analyze Schema First",description:"Please analyze the schema in the schema tab before sharing the schema."})},br=(0,d.AHW)({display:"flex",flexDirection:"column",alignItems:"center",gap:d.YKD[400],padding:d.YKD[400]}),vr=(0,d.AHW)({width:"100%",position:"relative"}),Cr=(0,d.AHW)({width:"100%",display:"flex",alignItems:"center"}),Er=(0,d.AHW)({flexShrink:0,flexGrow:1,display:"flex",alignItems:"center",justifyContent:"flex-end",gap:d.YKD[200],paddingLeft:d.YKD[200]}),Sr=(0,Ee.Ng)((e=>({analysisState:e.schemaAnalysis.analysisState,error:e.schemaAnalysis.error,sampleSize:e.schemaAnalysis.schema?.count??0,schemaResultId:e.schemaAnalysis.resultId??""})),{onExportSchemaClicked:dr,onDismissError:()=>e=>e({type:Zo})})((({analysisState:e,error:t,onDismissError:n,isOutdated:a,onAnalyzeSchemaClicked:i,onExportSchemaClicked:s,onResetClicked:l,sampleSize:c,schemaResultId:u,setShowLegacyExportTooltip:m,showLegacyExportTooltip:p})=>{const h=(0,o.useMemo)((()=>1===c?"document":"documents"),[c]);return r().createElement("div",{className:br},r().createElement("div",{className:vr},r().createElement(Lo.sJ,{source:"schema",buttonLabel:"Analyze",resultId:u,onApply:i,onReset:l})),e===Po&&!a&&r().createElement("div",{className:Cr},Po&&r().createElement("div",null,r().createElement(d.m_M,{id:"export-schema-tooltip",open:p,onClose:()=>m(!1),triggerEvent:"click",trigger:r().createElement(d.$nd,{variant:"default",onClick:s,"data-testid":"open-schema-export-button",size:"xsmall",leftGlyph:r().createElement(d.Int,{glyph:"Export"})},"Export Schema")},"Next time, export the schema directly from Compass' Schema tab.")),r().createElement("div",{className:Er,"data-testid":"schema-document-count"},r().createElement(d.nBu,{"data-testid":"schema-analysis-message"},"This report is based on a sample of ",r().createElement("b",null,c)," ",h,"."),r().createElement(d.N_E,{"aria-label":"Schema sampling documentation",href:"https://docs.mongodb.com/compass/current/sampling#sampling",target:"_blank"},"Learn more"))),"general"===t?.errorType&&r().createElement(d.dFH,{"data-testid":"schema-toolbar-error-message",errors:[`An error occurred during schema analysis: ${t.errorMessage}`],dismissible:!0,onClose:n}),"timeout"===t?.errorType&&r().createElement(d.rpn,{"data-testid":"schema-toolbar-timeout-message",warnings:["Operation exceeded time limit. Please try increasing the maxTimeMS for the query in the filter options."],dismissible:!0,onClose:n}),e===Po&&a&&r().createElement(d.rpn,{warnings:['The schema content is outdated and no longer in sync with the documents view. Press "Analyze" again to see the schema for the current query.']}))}));var kr=n(93161),wr=n.n(kr);const xr=(0,d.AHW)({textTransform:"lowercase"}),Ar=(0,d.AHW)({lineHeight:`${d.YKD[100]}px`,display:"inline-block",verticalAlign:"top"}),Dr=(0,d.AHW)({overflow:"hidden",cursor:"pointer",border:"none",margin:0,padding:0,background:"none",textAlign:"left",width:"100%"}),Ir=(0,d.AHW)({cursor:"default"}),Mr=(0,d.AHW)({height:"5px",marginRight:"2px",background:d.MFm.gray.light1}),Tr=(0,d.AHW)({background:d.MFm.gray.dark2}),Lr=(0,d.AHW)({background:d.MFm.white,border:`1px solid ${d.MFm.gray.light1}`});function Or(e){return e?.sort(((e,t)=>"Undefined"===e.name?1:"Undefined"===t.name?-1:t.probability-e.probability))||[]}function Nr({types:e,onSetTypeActive:t,activeType:n}){const a=(0,o.useCallback)((e=>{t({...e,isInArray:!0})}),[t]),i=(0,o.useMemo)((()=>Or(e)),[e]),s=i.find((e=>e.name===n?.name&&!0===n?.isInArray));return r().createElement("div",{"data-testid":"schema-field-type-list"},i.map((e=>r().createElement(Fr,{key:`subtype-${e.name}`,activeType:s,onSetTypeActive:()=>a(e),type:e,types:e.types,typeName:e.name,probability:e.probability,showSubTypes:!1}))))}const _r=({name:e})=>r().createElement(d.MWq,{className:xr},e);function Fr({type:e,typeName:t,types:n,activeType:a,probability:i,onSetTypeActive:s,showSubTypes:l}){const c=(0,o.useCallback)((n=>{n.stopPropagation(),"Undefined"!==t&&s(e)}),[s,e,t]),u=(0,o.useMemo)((()=>{const e=i>.99&&i<1||i>0&&i<.01?"0.0%":"0%";return`${t} (${wr()(i).format(e)})`}),[i,t]),m="Undefined"===t,p="Array"===t,h=t===a?.name&&!0!==a?.isInArray;return r().createElement("div",{className:(0,d.cx)(Ar),style:{width:100*i+"%"}},r().createElement(d.m_M,{trigger:r().createElement("button",{className:(0,d.cx)(Dr,m&&Ir),onClick:c},l?r().createElement(_r,{name:t}):null,r().createElement("div",{className:(0,d.cx)(Mr,h&&Tr,m&&Lr)}))},u),p&&l&&r().createElement(Nr,{activeType:a,onSetTypeActive:s,types:n||[]}),r().createElement("button",{className:(0,d.cx)(Dr,m&&Ir),onClick:c},l?null:r().createElement(_r,{name:t})))}var Pr=n(81358);const Wr={DECIMAL_128:"Decimal128",DOUBLE:"Double",LONG:"Long",INT_32:"Int32",STRING:"String",NUMBER:"Number"};var Rr=n(67092);const{DECIMAL_128:Ur,DOUBLE:$r,LONG:Vr,INT_32:Hr}=Wr,Kr=(0,d.AHW)({backgroundColor:d.MFm.gray.light2,border:"1px solid transparent",color:d.MFm.gray.dark3,padding:`${d.YKD[100]/2} ${d.YKD[100]}`,borderRadius:d.YKD[100],"&:hover":{cursor:"pointer"}}),jr=(0,d.AHW)({whiteSpace:"pre-wrap"}),Br=(0,d.AHW)({backgroundColor:d.MFm.gray.dark2,color:d.MFm.gray.light3}),zr=(0,d.AHW)({backgroundColor:d.MFm.yellow.base,color:d.MFm.gray.dark3});function Yr({fieldName:e,queryValue:t,value:n,onQueryChanged:a}){const i=(0,d.D27)(),s=(0,o.useCallback)((t=>{a(t.shiftKey?"toggleDistinctValue":"setValue",{field:e,value:n,unsetIfSet:!0})}),[a,e,n]),l=(0,o.useMemo)((()=>function(e){const t=(0,Rr.TB)(e);if(t){if([Ur,Vr].includes(t))return e.toString();if([$r,Hr].includes(t))return String(e.value)}return(0,je.isString)(e)?e:String(e)}(n)),[n]),c=(0,o.useMemo)((()=>(0,Pr.mC)(t,n)),[t,n]);return r().createElement("li",{className:"bubble"},r().createElement(d.nBu,null,r().createElement("button",{type:"button","aria-label":`${c?"Remove":"Add"} ${l} ${c?"from":"to"} query`,className:(0,d.cx)(Kr,(0,je.isString)(n)&&jr,i&&Br,c&&zr),onClick:s},l)))}class qr extends o.Component{static displayName="UniqueMiniChartComponent";static propTypes={fieldName:Ke().string.isRequired,queryValue:Ke().oneOfType([Ke().string,Ke().object]),type:Ke().object.isRequired,width:Ke().number,onQueryChanged:Ke().func};constructor(e){super(e),this.state={sample:(0,je.sampleSize)(this.props.type.values,20)}}onRefresh(e){e.stopPropagation(),e.preventDefault(),this.setState({sample:(0,je.sampleSize)(this.props.type.values,20)})}render(){if(!this.props.type.values)return r().createElement("div",null);const e=this.state.sample||[],t=this.props.fieldName.toLowerCase(),n=this.props.type.name.toLowerCase(),a=e.map(((e,a)=>r().createElement(Yr,{key:`${t}-${n}-${a}`,value:e,queryValue:this.props.queryValue,fieldName:this.props.fieldName,onQueryChanged:this.props.onQueryChanged}))),o={width:this.props.width};return r().createElement("div",{className:"minichart unique",style:o},r().createElement("dl",{className:"dl-horizontal"},r().createElement("dt",null,r().createElement(d.K0,{"aria-label":"Refresh sample values",onClick:this.onRefresh.bind(this)},r().createElement(d.Int,{glyph:"Refresh"}))),r().createElement("dd",null,r().createElement("ul",null,a))))}}const Gr=qr,Zr=function({nestedDocType:e}){let t="";if(e){const n=e.fields?.length??0;t=`Document with ${n} nested field${1===n?"":"s"}.`}return r().createElement(d.nBu,null,t)},Jr=function({nestedDocType:e,type:t}){let n="";if(e){const t=e.fields?.length??0;n=`Array of documents with ${t} nested field${1===t?"":"s"}.`}const a=Math.min(...t.lengths),o=wr()(t.averageLength).format("0.0[0]"),i=Math.max(...t.lengths);return r().createElement(r().Fragment,null,r().createElement(d.nBu,null,n),r().createElement(d.nBu,{as:"div"},r().createElement("dl",null,r().createElement("dt",null,"Array lengths"),r().createElement("dd",null,r().createElement("ul",null,r().createElement("li",null,"min: ",a),r().createElement("li",null,"average: ",o),r().createElement("li",null,"max: ",i))))))};var Qr=n(70455),Xr=n.n(Qr),ei=n(63362),ti=n(22140),ni=n(82354),ai=n(73076),oi=(n(29192),n(54805),n(8023),n(92560),n(95593)),ri=n.n(oi),ii=n(92926),si=n.n(ii),li=n(28742),ci=n.n(li),di=n(37385),ui=n.n(di),mi=n(56565),pi=n.n(mi),hi=n(20930),gi=n.n(hi),fi=n(65654),yi={};yi.styleTagTransform=gi(),yi.setAttributes=ui(),yi.insert=ci().bind(null,"head"),yi.domAPI=si(),yi.insertStyleElement=pi(),ri()(fi.A,yi),fi.A&&fi.A.locals&&fi.A.locals;var bi=n(45585),vi=n(51768),Ci=n(93276),Ei={};Ei.styleTagTransform=gi(),Ei.setAttributes=ui(),Ei.insert=ci().bind(null,"head"),Ei.domAPI=si(),Ei.insertStyleElement=pi(),ri()(Ci.A,Ei);const Si=Ci.A&&Ci.A.locals?Ci.A.locals:void 0,ki=({fields:e})=>r().createElement(vi.A,{closeButton:!1,className:Si.popup},r().createElement(wi,{fields:e}));ki.propTypes={fields:Ke().array};const wi=({fields:e})=>e.filter((e=>e.key)).map((e=>{const{key:t,value:n}=e;return r().createElement("span",{className:Si.line,key:t},r().createElement("span",{className:Si.key},t,":")," ",r().createElement("span",{className:Si.value},n))})),xi=ki,Ai={weight:1,radius:5,fillOpacity:.6},Di=(e,t)=>{const n={...Ai,...t};return r().createElement(e,(0,a.A)({},n,{onMouseOver:e=>{e.target.openPopup()},onMouseOut:e=>{e.target.closePopup()}}),r().createElement(xi,n))};Di.propTypes={fields:Ke().array};const Ii=({data:e})=>e.map(((e,t)=>(e.key=t,Di(bi.A,e))));Ii.propTypes={data:Ke().array.isRequired};const Mi=Ii,Ti=(new Date).getFullYear();let Li=function(){let e;return async function(){return e||(e=await async function(){const e=await fetch("https://compass-maps.mongodb.com/compass/copyright/v3").then((e=>e.json())),t=e.resources.base.styles["lite.day"];return Object.values(Be().pick(e.copyrights,t)).flat().map((e=>({alt:e.copyrightText,label:e.label,maxLevel:e.maxLevel,minLevel:e.minLevel,boxes:e.boundingBoxes.map((e=>Xr().latLngBounds(Xr().latLng(e.south,e.west),Xr().latLng(e.north,e.east))))})))}()),e}}();const Oi=d.MFm.blue.light1,Ni={center:[0,0],zoom:1},_i=e=>!isNaN(+e[0])&&!isNaN(+e[1])||(console.warn("@mongodb-js/compass-schema:coordinates-minichart: Dropping invalid coordinate value",e),!1);class Fi extends o.PureComponent{static displayName="CoorddinatesMinichart";static propTypes={_id:Ke().string,type:Ke().shape({name:Ke().string.isRequired,count:Ke().number.isRequired,probability:Ke().number.isRequired,unique:Ke().number,values:Ke().array}),fieldName:Ke().string.isRequired,darkMode:Ke().bool,onGeoQueryChanged:Ke().func.isRequired,geoLayerAdded:Ke().func.isRequired,geoLayersEdited:Ke().func.isRequired,geoLayersDeleted:Ke().func.isRequired};state={ready:!1,attributionMessage:""};fitMapBounds(){const e=this.mapRef;if(!e)return;const t=e.leafletElement,n=this.props.type.values.filter(_i);let a=Xr().latLngBounds();1===n.length?a=Xr().latLng(+n[0][1],+n[0][0]).toBounds(800):n.forEach((e=>{a.extend(Xr().latLng(+e[1],+e[0]))})),a._northEast.lat===a._southWest.lat&&a._northEast.lng===a._southWest.lng&&(a._northEast.lat=a._northEast.lat+.1,a._southWest.lng=a._southWest.lng-.1),t.fitBounds(a)}componentDidUpdate(e){e.type?.values!==this.props.type?.values&&this.fitMapBounds(),this.invalidateMapSize()}whenMapReady=()=>{this.state.ready||(this.disableAttributionPrefix(),this.getTileAttribution(),this.setState({ready:!0},(()=>{this.invalidateMapSize(),this.fitMapBounds()})))};disableAttributionPrefix(){const e=this.mapRef;if(!e)return;const t=e.leafletElement;t?.attributionControl?.setPrefix(!1)}async getTileAttribution(){const e=await async function(e){let t="";if(e){const n=e.leafletElement.getBounds(),a=e.leafletElement.getZoom();t=await async function(e,t){const n=await Li(),a=[];n.forEach((n=>{n.boxes.some((t=>e.intersects(t)))>0&&t>n.minLevel&&t<n.maxLevel&&a.push(n.label)}));const o=a.join(", ");return` <a target="_blank" href="https://leafletjs.com/">Leaflet</a> | &copy; 1987-${Ti} HERE${o.length>0?`, ${o}`:""} | <a target="_blank" href="https://legal.here.com/en/terms/serviceterms/us">Terms of Use</a>`}(n,a)}return t}(this.mapRef);this.setState({attributionMessage:e})}invalidateMapSize(){const e=this.mapRef;e&&(e.container.style.height=12*d.YKD[5]+"px",e.container.style.width="100%",e.leafletElement.invalidateSize())}onMoveEnd=(0,je.debounce)((()=>{this.getTileAttribution()}));renderMapItems(){const{fieldName:e}=this.props,t=this.props.type.values.filter(_i).map((t=>{const n=(e=>{const[t,n]=[+e[0],+e[1]];return{type:"Point",coordinates:[n,t],center:[n,t],color:Oi,fields:[{key:"[longitude, latitude]",value:`[Lat = ${n}, Long = ${t}]`}]}})(t);return n.fields[0].key=e,n}));return r().createElement(Mi,{data:t})}onCreated=e=>{this.props.geoLayerAdded(this.props.fieldName,e.layer,this.props.onGeoQueryChanged)};onEdited=e=>{this.props.geoLayersEdited(this.props.fieldName,e.layers,this.props.onGeoQueryChanged)};onDeleted=e=>{this.props.geoLayersDeleted(e.layers,this.props.onGeoQueryChanged)};render(){const{attributionMessage:e}=this.state;return r().createElement("div",{style:{background:d.MFm.gray.dark3}},r().createElement(ei.A,{minZoom:1,viewport:Ni,whenReady:this.whenMapReady,ref:e=>{this.mapRef=e},onMoveend:this.onMoveEnd},this.renderMapItems(),r().createElement(ti.A,{url:this.props.darkMode?"https://compass-maps.mongodb.com/compass/maptile/v3/lite.night/{z}/{x}/{y}/512":"https://compass-maps.mongodb.com/compass/maptile/v3/lite.day/{z}/{x}/{y}/512",attribution:e}),r().createElement(ni.A,null,r().createElement(ai.M,{position:"topright",onEdited:this.onEdited,onCreated:this.onCreated,onDeleted:this.onDeleted,onMounted:this.onMounted,onEditStop:this.onEditStop,onDeleteStop:this.onDeleteStop,draw:{rectangle:!1,polyline:!1,marker:!1,circlemarker:!1}}))))}}const Pi=({onQueryChanged:e,...t})=>{const n=(0,d.D27)(),i=(0,o.useCallback)((t=>{e("mergeGeoQuery",t)}),[e]);return r().createElement(Fi,(0,a.A)({},t,{darkMode:n,onGeoQueryChanged:i}))};Pi.propTypes={onQueryChanged:Ke().func};const Wi=(0,Ee.Ng)(void 0,{geoLayerAdded:Xo,geoLayersEdited:(e,t,n)=>(a,o,{geoLayersRef:r})=>{t.eachLayer((t=>{a(Xo(e,t,(()=>{})))})),n(Uo(r.current))},geoLayersDeleted:(e,t)=>(n,a,{geoLayersRef:o})=>{e.eachLayer((e=>{delete o.current[e._leaflet_id]})),t(Uo(o.current))}})(Pi);var Ri=n(25213),Ui=n.n(Ri);const $i={Double:e=>e.map((e=>e.value)),Int32:e=>e.map((e=>e.value)),Long:e=>e.map((e=>e.toNumber())),Decimal128:e=>e.map((e=>e.toString()))},Vi={Long:e=>ne.Long.fromNumber(e),Decimal128:e=>ne.Decimal128.fromString(e),Date:e=>new Date(e),ObjectId:e=>ne.ObjectId.createFromHexString(e)};Vi.ObjectID=Vi.ObjectId;const Hi=e=>e;class Ki extends o.Component{static displayName="D3Component";static propTypes={fieldName:Ke().string.isRequired,type:Ke().object.isRequired,renderMode:Ke().oneOf(["svg","div"]),width:Ke().number,height:Ke().number,chart:Ke().any.isRequired,query:Ke().any};constructor(e){super(e),this.state={chart:this.props.chart}}componentDidMount(){this._redraw()}componentDidUpdate(){this._redraw()}componentWillUnmount(){this._cleanup()}_getContainer(){let e={className:"minichart",ref:e=>{this.containerRef=e}};const t={width:this.props.width,height:this.props.height};return"svg"===this.props.renderMode?(e=Object.assign(e,t),r().createElement("svg",e,r().createElement("defs",null,r().createElement("pattern",{id:"diagonal-stripes",width:"4",height:"4",patternUnits:"userSpaceOnUse",patternTransform:"rotate(45)"},r().createElement("rect",{width:"2.5",height:"4",transform:"translate(0,0)",fill:d.MFm.white})),r().createElement("mask",{id:"mask-stripe"},r().createElement("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"url(#diagonal-stripes)"}))))):(e=Object.assign(e,{style:t}),r().createElement("div",e))}_cleanup(){this.state.chart&&this.state.chart.cleanup()}_redraw(){const e=this.containerRef;e&&(this.state.chart.width(this.props.width).height(this.props.height),this.state.chart.options({fieldName:this.props.fieldName,unique:this.props.type.unique,query:this.props.query,promoter:Vi[this.props.type.bsonType]||Hi}),$i[this.props.type.bsonType]?Ui().select(e).datum($i[this.props.type.bsonType](this.props.type.values)).call(this.state.chart):Ui().select(e).datum(this.props.type.values).call(this.state.chart))}render(){const e=this._getContainer();return r().createElement("div",{className:"minichart-wrapper"},e)}}const ji=Ki,Bi={margin:{top:10,right:0,bottom:10,left:40},friendlyPercentFormat:function(e){const t=Ui().format(".1r"),n=Ui().format(".0f"),a=(e>1?n:t)(e),o=function(e){return(+e).toFixed(20).replace(/^-?\d*\.?|0+$/g,"").length}(a);return function(t,n){return t===e?a+"%":t>1&&!n?Ui().round(t,o)+"%":Ui().round(t/e*a,o+1)+"%"}},truncateTooltip:function(e,t){return t=t||500,e.length>t&&(e=e.substring(0,t-1)+"&hellip;"),e},tooltip:function(e,t){return`\n <div class="tooltip-wrapper">\n <div class="tooltip-label">${e=e.replaceAll(/</g,"&lt;").replaceAll(/>/g,"&gt;")}</div>\n <div class=".tooltip-value">${t}</div>\n </div>`}},zi=Bi;n(73578)(Ui());const Yi=e=>d.AHW`
2
2
  z-index: 5;
3
3
  line-height: 1;
4
4
  padding: 8px;
@@ -179,4 +179,4 @@ var e,t,n,a={1568:(e,t,n)=>{n.r(t),n.d(t,{connect:()=>o});var a=n(51390);const o
179
179
  line-height: 120%;
180
180
  max-width: 400px;
181
181
  }
182
- `},Zs=Gs(!1),Js=Gs(!0),Qs=({onApplyClicked:e})=>r().createElement(d.HYq,{icon:ws,title:"Explore your schema",subTitle:"Quickly visualize your schema to understand the frequency, types and ranges of fields in your data set.",callToAction:r().createElement(d.$nd,{onClick:e,"data-testid":"analyze-schema-button",variant:"primary",size:"small"},"Analyze schema"),callToActionLink:r().createElement(d.N_E,{href:"https://docs.mongodb.com/compass/master/schema/",target:"_blank"},"Learn more about schema analysis")}),Xs=({onCancelClicked:e})=>r().createElement("div",{className:Bs},r().createElement(d.yao,{"data-testid":"analyzing-documents",progressText:"Analyzing Documents",cancelText:"Stop",onCancel:e})),el=({schema:e,analysisState:t})=>{const n=(0,d.D27)();if(t!==Po)return null;const o=e?.fields??[];return 0===o.length?r().createElement(d.HYq,{icon:d.pyG,title:"No results",subTitle:"Try modifying your query to get results."}):r().createElement("div",{className:(0,d.cx)(zs,n?Js:Zs)},r().createElement("div",{"data-testid":"schema-field-list"},o.map((e=>r().createElement(ks,(0,a.A)({key:e.name},e))))))},tl="Atlas’ Performance Advisor.",nl=()=>{const e=(0,s.qm)(),t=(0,re.Jr)(),[n,a]=(0,d.yRS)("mongodb_compass_dismissedSearchIndexesBanner",!1);return n?r().createElement(r().Fragment,null):r().createElement(d.lZ$,{variant:"info",dismissible:!0,onClose:()=>a(!0)},r().createElement(d.nBu,{weight:"medium"},"Looking for schema anti-patterns?"),"In its place, you may refer to Data Explorer’s performance insights"," ",r().createElement(d.Exy,{className:qs,variant:"blue"},r().createElement(d.Int,{glyph:"Bulb",size:"small"}),"Insight")," ","or"," ",e.atlasMetadata?r().createElement(d.N_E,{href:zo(e.atlasMetadata),onClick:()=>t("Performance Advisor Clicked",{},e),hideExternalIcon:!0},tl):tl)},al=(0,Ee.Ng)((e=>({analysisState:e.schemaAnalysis.analysisState,isExportSchemaModalOpen:e.schemaExport.isOpen,schema:e.schemaAnalysis.schema})),{onStartAnalysis:()=>async(e,t,{queryBar:n,preferences:a,logger:{debug:o,log:r},dataService:i,logger:s,fieldStoreService:l,analysisAbortControllerRef:c,schemaAccessorRef:d,namespace:u,geoLayersRef:m,connectionInfoRef:h,track:g})=>{const{schemaAnalysis:{analysisState:f}}=t();if(f===Fo)return void o("analysis already in progress. ignoring subsequent start");g("Schema Analysis Started",{},h.current);const y=n.getLastAppliedQuery("schema"),b=y.limit?Math.min(1e3,y.limit):1e3,v={query:y.filter??{},size:b,fields:y.project??void 0},C={maxTimeMS:(0,R.Tv)(a,y.maxTimeMS),hint:y.hint??void 0};c.current=new AbortController;const E=c.current.signal,S=Date.now();try{o("analysis started"),e({type:Yo,analysisStartTime:S});const t=await Vo(i,E,u,v,C,s);if(E?.aborted)throw new Error(E?.reason||new Error("Operation aborted"));d.current=t;let n=null;t&&(n=await t.getInternalSchema(),n.fields=n.fields.filter((({path:e})=>!(0,Wo.v6)(e[0]))));const a=Date.now()-S;null!==n&&l.updateFieldsFromSchema(u,n),e({type:qo,schema:n}),g("Schema Analyzed",(({schema:e,query:t,analysisTime:n})=>async()=>{const{field_types:a,geo_data:o,optional_field_count:r,schema_depth:i,variable_type_count:s,distinct_field_count:l}=e?await jo(e):{field_types:{},geo_data:!1,optional_field_count:0,schema_depth:0,variable_type_count:0,distinct_field_count:0};return{with_filter:Object.entries(t.filter??{}).length>0,schema_width:e?.fields?.length??0,field_types:a,variable_type_count:s,optional_field_count:r,schema_depth:i,geo_data:o,distinct_field_count:l,analysis_time_ms:n}})({schema:n,query:y,analysisTime:a}),h.current),m.current={}}catch(t){if(E?.aborted)return void e({type:Go,error:t});const n=Jo(t),a=Date.now()-S;g("Schema Analysis Failed",{error_type:n.errorType,with_filter:Object.entries(y.filter??{}).length>0,analysis_time_ms:a},h.current),r.error((0,p.oW)(1001000188),"Schema analysis","Error sampling schema",{error:t.stack}),e({type:Go,error:t})}finally{c.current=void 0}},onStopAnalysis:()=>(e,t,{analysisAbortControllerRef:n,connectionInfoRef:a,queryBar:o,track:r})=>{if(!n.current)return;const i=Date.now()-(t().schemaAnalysis.analysisStartTime??0),s=o.getLastAppliedQuery("schema");r("Schema Analysis Cancelled",{analysis_time_ms:i,with_filter:Object.entries(s.filter??{}).length>0},a.current),n.current?.abort("Analysis cancelled")},onExportSchemaClicked:dr})((({analysisState:e,isExportSchemaModalOpen:t,schema:n,onStartAnalysis:a,onStopAnalysis:i})=>{const s=(0,o.useCallback)((()=>{a()}),[a]),[l,c]=(0,o.useState)(!1),u=(0,Lo.PW)("schema"),m=(0,R.Fg)("enablePerformanceAdvisorBanner");return r().createElement(r().Fragment,null,r().createElement("div",{className:js},r().createElement(d.XvC,{toolbar:r().createElement(Sr,{onAnalyzeSchemaClicked:s,onResetClicked:s,showLegacyExportTooltip:l&&!t,setShowLegacyExportTooltip:c,isOutdated:!!u})},r().createElement("div",{className:Ys},m&&r().createElement(nl,null),e===_o&&r().createElement(Qs,{onApplyClicked:s}),e===Fo&&r().createElement(Xs,{onCancelClicked:i}),e===Po&&r().createElement(el,{schema:n,analysisState:e})))),r().createElement(Ps,null),r().createElement(Ks,{setShowLegacyExportTooltip:c}))})),ol=(0,F.HY)({schemaAnalysis:(e=(()=>({analysisState:_o,schema:null,resultId:Qo()}))(),t)=>Bo(t,Yo)?{...e,analysisStartTime:t.analysisStartTime,analysisState:Fo,error:void 0,schema:null}:Bo(t,qo)?{...e,analysisState:t.schema?Po:_o,schema:t.schema,resultId:Qo()}:Bo(t,Go)?{...e,error:Jo(t.error),analysisState:_o,resultId:Qo()}:Bo(t,Zo)?{...e,error:void 0}:e,schemaExport:(e=(()=>({errorMessage:void 0,exportFormat:er,exportStatus:"inprogress",exportedSchema:void 0,isOpen:!1,isLegacyModalOpen:!1,legacyModalChoice:void 0}))(),t)=>Bo(t,tr)?{...e,isOpen:!0}:Bo(t,nr)?{...e,isOpen:!1}:Bo(t,ar)?{...e,isLegacyModalOpen:!0}:Bo(t,or)?{...e,isLegacyModalOpen:!1}:Bo(t,rr)?{...e,legacyModalChoice:t.choice}:Bo(t,ir)?{...e,exportStatus:"inprogress",exportFormat:t.exportFormat}:Bo(t,lr)?{...e,errorMessage:t.errorMessage,exportStatus:"error"}:Bo(t,sr)?{...e,exportedSchema:t.exportedSchema,filename:t.filename,exportStatus:"complete"}:Bo(t,cr)?{...e,exportStatus:"error",errorMessage:"cancelled",abortController:void 0}:e});var rl=n(25607);const il={name:"Schema",provider:(0,i.nk)({name:"CompassSchemaPlugin",component:function({children:e,...t}){return r().createElement(r().Fragment,null,r().isValidElement(e)?r().cloneElement(e,t):null)},activate:function({namespace:e},t,{on:n,cleanup:a,addCleanup:o}){const r=function(e,t){return(0,F.y$)(ol,(0,F.Tw)(P.A.withExtraArgument({...e,analysisAbortControllerRef:{current:void 0},exportAbortControllerRef:{current:void 0},schemaAccessorRef:{current:void 0},geoLayersRef:{current:{}},namespace:t})))}(t,e);return n(t.localAppRegistry,"menu-share-schema-json",(()=>{r.dispatch(((e,t)=>{const n=t().schemaExport.legacyModalChoice,a=n||localStorage.getItem(fr);if(a){if(a!==n&&e({type:rr,choice:a}),"legacy"===a)return void e(yr());if("export"===a)return void e(dr())}e({type:ar})}))})),o((()=>r.dispatch(((e,t,{analysisAbortControllerRef:n})=>{n.current&&n.current?.abort()})))),o((()=>r.dispatch(ur()))),{store:r,deactivate(){a()}}}},{dataService:s.S1,logger:(0,p.fF)("COMPASS-SCHEMA-UI"),track:re.yL,preferences:R.fx,fieldStoreService:rl.bM,queryBar:Lo.hx,connectionInfoRef:s.wj}),content:al,header:()=>r().createElement("div",{"data-testid":"schema-tab-title"},"Schema")};var sl=n(23476);const ll=(0,m.Ay)(""),cl="4.0.0";var dl=n(69692);function ul(e,t){return e.type===t}const ml="validation/edit-mode/EDIT_MODE_CHANGED",pl="validation/edit-mode/ENABLE_EDIT_RULES",hl="validation/edit-mode/DISABLE_EDIT_RULES",gl={collectionReadOnly:!1,collectionTimeSeries:!1,writeStateStoreReadOnly:!1,oldServerReadOnly:!1,constraintValidation:"none",isEditingEnabledByUser:!1},fl=()=>({type:pl}),yl="validation/namespace/IS_ZERO_STATE_CHANGED",bl=e=>({type:yl,isZeroState:e}),vl="compass-schema-validation/validation/ValidatorChanged",Cl="compass-schema-validation/validation/ValidationCanceled",El="compass-schema-validation/validation/ValidationSaveStarted",Sl="compass-schema-validation/validation/ValidationSaveEnded",kl="compass-schema-validation/validation/ValidationSaveFailed",wl="compass-schema-validation/validation/ValidationFetched",xl="compass-schema-validation/validation/EmptyValidationFetched",Al="compass-schema-validation/validation/ValidationActionChanged",Dl="compass-schema-validation/validation/ValidationLevelChanged",Il="compass-schema-validation/validation/ValidationFetchErrored",Ml={validator:"",validationAction:"error",validationLevel:"strict",isChanged:!1,isSaving:!1,syntaxError:null,error:null},Tl={validator:"{}",validationAction:"error",validationLevel:"strict"},Ll=e=>{const t={syntaxError:null,validator:e};if(""===e)t.syntaxError={message:"The validator must be an object."};else try{t.validator=(0,Se.aN)(e)}catch(e){t.syntaxError=e}return t},Ol=e=>({type:Dl,validationLevel:e}),Nl=e=>({type:vl,validator:e}),_l=e=>async(t,n,{dataService:a})=>{try{const n=await a.collectionInfo(e.database,e.collection);if(!n?.validation?.validator)return void t((({validationTemplate:e})=>({type:xl,validationTemplate:e}))({validationTemplate:dl.nF}));t((({validator:e,validationLevel:t,validationAction:n,prepareConstraintValidationLevel:a})=>({type:wl,validator:e,validationLevel:t,validationAction:n,prepareConstraintValidationLevel:a}))({validationAction:n.validation.validationAction??Ml.validationAction,validationLevel:n.validation.validationLevel??Ml.validationLevel,validator:n.validation.validator,prepareConstraintValidationLevel:n.validation.prepareConstraintValidationLevel}))}catch(e){t({type:Il,error:e})}},Fl={validDocumentState:"initial",validDocument:void 0,invalidDocumentState:"initial",invalidDocument:void 0},Pl="validation/namespace/CLEAR_SAMPLE_DOCUMENTS",Wl="validation/namespace/FETCHING_SAMPLE_DOCUMENTS",Rl="validation/namespace/FETCHED_VALID_DOCUMENT",Ul="validation/namespace/FETCHING_VALID_DOCUMENT_FAILED",$l="validation/namespace/FETCHED_INVALID_DOCUMENT",Vl="validation/namespace/FETCHING_INVALID_DOCUMENT_FAILED",Hl=()=>Fl,Kl=e=>({...e,validDocumentState:"loading",invalidDocumentState:"loading"}),jl={[Pl]:Hl,[Rl]:(e,t)=>({...e,validDocumentState:"success",validDocument:t.document}),[Ul]:e=>({...e,validDocumentState:"error",validDocument:void 0}),[$l]:(e,t)=>({...e,invalidDocumentState:"success",invalidDocument:t.document}),[Vl]:e=>({...e,invalidDocumentState:"error",invalidDocument:void 0})},Bl=async({pipeline:e,namespace:t,dataService:n,preferences:a})=>{const o={allowDiskUse:!0,maxTimeMS:a.getPreferences().maxTimeMS};return e.unshift({$sample:{size:1e4}}),await n.aggregate(t,e,o)},zl="Operation cancelled",Yl="schema-validation/rules-generation/generationStarted",ql="schema-validation/rules-generation/generationFailed",Gl="schema-validation/rules-generation/generationFinished",Zl="schema-validation/rules-generation/generationErrorCleared",Jl={isInProgress:!1,isGenerated:!1};function Ql(e){let t="general";return 50===e.code&&(t="timeout"),{errorType:t,errorMessage:e.message||"Unknown error"}}const Xl=()=>async(e,t,{dataService:n,logger:a,preferences:o,rulesGenerationAbortControllerRef:r,analyzeSchema:i,track:s,connectionInfoRef:l})=>{e({type:Yl}),r.current=new AbortController;const c=r.current.signal,{namespace:d}=t(),{maxTimeMS:u}=o.getPreferences();try{const t={query:{},size:1e3,fields:void 0},o={maxTimeMS:u},r=await i(n,c,d.toString(),t,o,a);if(c?.aborted)throw new Error(zl);const m=await(r?.getMongoDBJsonSchema({signal:c}));if(c?.aborted)throw new Error(zl);const p=JSON.stringify({$jsonSchema:m},void 0,2);e(Ol("moderate")),e(Nl(p)),e(fl()),e({type:Gl}),e(bl(!1)),(async({schemaAccessor:e,track:t,connectionInfoRef:n})=>{const a=await(e?.getInternalSchema());if(!a)return;const{variable_type_count:o,optional_field_count:r}=await jo(a);t("Schema Validation Generated",{variable_type_count:o,optional_field_count:r},n.current)})({schemaAccessor:r,connectionInfoRef:l,track:s})}catch(t){if(c.aborted)return void e({type:Gl});e({type:ql,error:t})}},ec={namespace:ll,serverVersion:cl,validation:Ml,rulesGeneration:Jl,sampleDocuments:Fl,isZeroState:!0,isLoaded:!1,editMode:gl},tc=(0,F.HY)({namespace:function(e=ll,t){return"validation/namespace/NAMESPACE_CHANGED"===t.type?t.namespace:e},serverVersion:function(e=cl,t){return"validation/server-version/SERVER_VERSION_CHANGED"===t.type&&t.version||e},validation:function(e=Ml,t){if(ul(t,vl)){const n=Ll(t.validator),a={...e,validator:t.validator,syntaxError:n.syntaxError,error:null};return{...a,isChanged:!(0,je.isEqual)((0,je.pick)(a,["validator","validationAction","validationLevel"]),e.prevValidation)}}if(ul(t,El))return{...e,error:null,isSaving:!0};if(ul(t,Sl))return{...e,isSaving:!1};if(ul(t,kl))return{...e,error:t.error};if(ul(t,xl))return{...e,prevValidation:{...Tl},...Tl,isChanged:!1,error:null,syntaxError:null,validator:t.validationTemplate};if(ul(t,Il))return{...e,prevValidation:{...Tl},isChanged:!0,error:t.error,syntaxError:null,...Tl};if(ul(t,wl)){const n=(0,Se.AO)(t.validator,2)??"{}";return{...e,prevValidation:{validator:n,validationAction:t.validationAction,validationLevel:t.validationLevel},isChanged:!1,validator:n,validationAction:t.validationAction,validationLevel:t.validationLevel,syntaxError:null,error:null}}if(ul(t,Al))return{...e,validationAction:t.validationAction,isChanged:!(0,je.isEqual)({validator:e.validator,validationAction:t.validationAction,validationLevel:e.validationLevel},e.prevValidation)};if(ul(t,yl))return{...e,isChanged:!0};if(ul(t,Dl))return{...e,validationLevel:t.validationLevel,isChanged:!(0,je.isEqual)({validator:e.validator,validationAction:e.validationAction,validationLevel:t.validationLevel},e.prevValidation)};if(ul(t,Cl)){const t=e.prevValidation;return{...e,isChanged:!1,validator:t?.validator??"{}",validationAction:t?.validationAction??Ml.validationAction,validationLevel:t?.validationLevel??Ml.validationLevel,error:null}}return e},sampleDocuments:function(e=Fl,t){let n;return"initial"!==e.validDocumentState?n=jl[t.type]:t.type===Wl&&(n=Kl),ul(t,Cl)&&(n=Hl),n?n(e,t):e},isZeroState:function(e=!0,t){return!ul(t,wl)&&(!(!ul(t,xl)&&!ul(t,Il))||(t.type===yl?t.isZeroState:e))},isLoaded:function(e=!1,t){return!!(ul(t,wl)||ul(t,xl)||ul(t,Il))||("validation/namespace/IS_LOADED_CHANGED"===t.type?t.isLoaded:e)},editMode:function(e=gl,t){return t.type===ml?{...e,...t.editMode}:t.type===pl?{...e,isEditingEnabledByUser:!0}:t.type===hl?{...e,isEditingEnabledByUser:!1}:ul(t,xl)?{...e,constraintValidation:"none",isEditingEnabledByUser:!0}:ul(t,wl)?{...e,constraintValidation:"constraint"===t.validationLevel?"active":t.prepareConstraintValidationLevel?"prepared":"none",isEditingEnabledByUser:!1}:ul(t,Cl)?{...e,isEditingEnabledByUser:!1}:e},rulesGeneration:(e=Jl,t)=>ul(t,Yl)?{...e,isInProgress:!0,error:void 0}:ul(t,Gl)?{...e,isInProgress:!1,isGenerated:!0}:ul(t,ql)?{...e,isInProgress:!1,error:Ql(t.error)}:ul(t,vl)&&e.isGenerated||ul(t,Sl)&&e.isGenerated?{...e,isGenerated:!1}:ul(t,Zl)?{...e,error:void 0}:e}),nc=(e,t)=>"validation/reset"===t.type?{...ec}:tc(e,t),ac=(0,d.AHW)({display:"flex",marginLeft:d.YKD[600],alignItems:"center"}),oc=(0,d.AHW)({width:2*d.YKD[1600]});function rc({isEditable:e,validationActionChanged:t,validationAction:n,serverVersion:a}){const o=(0,d.BiT)(),i=(0,d.BiT)();return r().createElement("div",{className:ac},r().createElement(d.JU7,{htmlFor:i},"Action"),r().createElement(d.K0,{href:"https://www.mongodb.com/docs/manual/reference/command/collMod/#mongodb-collflag-validationAction",target:"_blank","aria-label":"More information on validation actions"},r().createElement(d.Int,{glyph:"InfoWithCircle",size:"small"})),r().createElement(d.l6P,{"data-testid":"validation-action-selector","aria-labelledby":o,disabled:!e,onChange:t,value:n,allowDeselect:!1,className:oc,size:"small"},r().createElement(d.c$x,{value:"warn"},"Warning"),r().createElement(d.c$x,{value:"error"},"Error"),(e=>{try{return Je().gte(e,"8.1.0-rc.0")}catch{return!1}})(a)&&r().createElement(d.c$x,{value:"errorAndLog","data-testid":"validation-action-option-error-and-log"},"Error and Log")))}function ic({isEditable:e,validationLevelChanged:t,validationLevel:n}){const a=(0,d.BiT)(),o=(0,d.BiT)();return r().createElement("div",{className:ac},r().createElement(d.JU7,{htmlFor:o},"Level"),r().createElement(d.K0,{href:"https://www.mongodb.com/docs/manual/reference/command/collMod/#mongodb-collflag-validationLevel",target:"_blank","aria-label":"More information on validation levels"},r().createElement(d.Int,{glyph:"InfoWithCircle",size:"small"})),r().createElement(d.l6P,{"data-testid":"validation-level-selector","aria-labelledby":a,disabled:!e,onChange:t,value:n,allowDeselect:!1,className:oc,size:"small"},r().createElement(d.c$x,{value:"off"},"Off"),r().createElement(d.c$x,{value:"moderate"},"Moderate"),r().createElement(d.c$x,{value:"strict"},"Strict"),"constraint"===n&&r().createElement(d.c$x,{value:"constraint","data-testid":"validation-level-option-constraint"},"Constraint")))}const sc=(0,d.AHW)({padding:d.YKD[400]}),lc=(0,d.AHW)({display:"flex"}),cc=(0,d.AHW)({flexGrow:1}),dc=(0,d.AHW)({display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:d.YKD[400]}),uc=(0,d.AHW)({marginTop:d.YKD[400]}),mc=(0,d.AHW)({borderLeft:`3px solid ${d.MFm.gray.light2}`}),pc=(0,d.AHW)({borderLeft:`3px solid ${d.MFm.gray.dark2}`}),hc=(0,d.AHW)({color:d.MFm.yellow.dark2,display:"flex",alignItems:"center",gap:d.YKD[200],flex:1}),gc=(0,d.AHW)({color:d.MFm.green.dark2,display:"flex",alignItems:"center",gap:d.YKD[200],flex:1}),fc=(0,d.AHW)({color:d.MFm.green.light2}),yc=(0,d.AHW)({color:d.MFm.yellow.light2}),bc=(0,d.AHW)({marginLeft:d.YKD[200]}),vc=({namespace:e,text:t,onChangeText:n,readOnly:a,serverVersion:o})=>{const i=(0,rl.jv)(e),s=r().useMemo((()=>(0,rt.g7)({fields:i,serverVersion:o})),[i,o]);return r().createElement(rt.Jn,{id:"validation-code-editor",language:"javascript-expression",text:t,onChangeText:n,readOnly:a,formattable:!a,completer:s})},Cc=(0,Ee.Ng)((e=>({serverVersion:e.serverVersion,isEditingEnabled:e.editMode.isEditingEnabledByUser,validation:e.validation,namespace:e.namespace.ns,isRulesGenerationInProgress:e.rulesGeneration.isInProgress,isValidatorGenerated:e.rulesGeneration.isGenerated,isSavingInProgress:e.validation.isSaving})),{clearSampleDocuments:()=>({type:Pl}),validatorChanged:Nl,cancelValidation:()=>({type:Cl}),saveValidation:e=>async(t,n,{dataService:a,track:o,connectionInfoRef:r})=>{const i=n().namespace,s={validator:Ll(e.validator).validator,validationAction:e.validationAction,validationLevel:e.validationLevel,isChanged:!1};o("Schema Validation Updated",{validation_action:e.validationAction,validation_level:e.validationLevel},r.current),t({type:El});try{await a.updateCollection(`${i.database}.${i.collection}`,{validator:s.validator,validationAction:s.validationAction,validationLevel:s.validationLevel}),t(_l(i)),(0,d.c3r)("schema-validation-update",{title:"New validation rules applied",variant:"success"}),t({type:hl})}catch(e){t((e=>({type:kl,error:e}))(e))}finally{t({type:Sl})}},onClickEnableEditRules:fl,validationActionChanged:e=>({type:Al,validationAction:e}),validationLevelChanged:Ol,generateValidationRules:Xl})((({namespace:e,clearSampleDocuments:t,onClickEnableEditRules:n,validatorChanged:a,validationActionChanged:i,validationLevelChanged:l,cancelValidation:c,saveValidation:u,generateValidationRules:m,serverVersion:p,validation:h,isEditable:g,isEditingEnabled:f,isRulesGenerationInProgress:y,isSavingInProgress:b,isValidatorGenerated:v})=>{const C=(0,re.Jr)(),E=(0,s.jj)(),S=(0,d.HIF)(t),k=(0,d.HIF)(a),w=(0,d.HIF)(u),x=(0,d.HIF)(h),A=(0,o.useCallback)((e=>{const t=Ll(e),n={json_schema:"object"==typeof t.validator&&!!t.validator?.$jsonSchema};C("Schema Validation Edited",n,E.current)}),[E,C]),D=(0,o.useMemo)((()=>(0,je.debounce)((e=>{S.current(),A(e)}),750)),[S,A]);(0,o.useEffect)((()=>()=>{D.cancel()}),[D]);const I=(0,o.useCallback)((e=>{k.current(e),D(e)}),[D,k]),M=(0,d.D27)(),{validationAction:T,validationLevel:L,error:O,syntaxError:N,isChanged:_}=h,F=(0,o.useCallback)((async()=>{await(0,d.$TK)({title:"Are you sure you want to apply these validation rules?",description:"These rules will be enforced on updates & inserts of your document. Please make sure you have reviewed the rules before applying them."})&&w.current(x.current)}),[w,x]),P=(0,o.useMemo)((()=>{if(!h.validator||0===h.validator.length)return!0;try{return 0===Object.keys(JSON.parse(h.validator)).length}catch{return!1}}),[h.validator]);return r().createElement(d.yY_,{"data-testid":"validation-editor",className:sc},r().createElement("div",{className:lc},r().createElement("div",{className:cc},r().createElement(d.m_M,{enabled:!P,trigger:r().createElement(d.$nd,{"data-testid":"generate-rules-button",disabled:!P,isLoading:y,loadingIndicator:r().createElement(d.Q0K,null),onClick:m,variant:d.AkO.Primary,size:"small"},"Generate rules")},"Clear existing rules before generating new ones")),r().createElement(rc,{isEditable:g&&f,validationActionChanged:i,validationAction:T,serverVersion:p}),r().createElement(ic,{isEditable:g&&f,validationLevelChanged:l,validationLevel:L})),r().createElement("div",{className:(0,d.cx)(uc,M?pc:mc)},r().createElement(vc,{namespace:e,text:h.validator,onChangeText:e=>{I(e)},readOnly:!g||!f,serverVersion:p})),N&&r().createElement(d.lZ$,{variant:"danger"},N.message),!N&&O&&r().createElement(d.lZ$,{variant:"danger"},O.message),g&&r().createElement("div",{className:dc},f?r().createElement(r().Fragment,null,_&&!v&&r().createElement(d.nBu,{className:(0,d.cx)(hc,M&&yc),"data-testid":"validation-action-message"},r().createElement(d.Int,{glyph:"InfoWithCircle"})," Rules are modified & not applied. Please review before applying."),v&&r().createElement(d.nBu,{className:(0,d.cx)(gc,M&&fc),"data-testid":"validation-action-message"},r().createElement(d.Int,{glyph:"Checkmark"})," Rules generated. Please review before applying."),r().createElement(d.$nd,{type:"button",className:bc,variant:"default","data-testid":"cancel-validation-button",onClick:c},"Cancel"),_&&r().createElement(d.$nd,{type:"button",className:bc,variant:"primary","data-testid":"update-validation-button",onClick:()=>{F()},isLoading:b,loadingIndicator:r().createElement(d.Q0K,{title:"Updating validation…"}),disabled:!!N},"Apply")):r().createElement(d.$nd,{type:"button",leftGlyph:r().createElement(d.Int,{glyph:"Edit"}),variant:"primaryOutline","data-testid":"enable-edit-validation-button",onClick:n},"Edit rules")))})),Ec=(0,d.AHW)({display:"flex",height:3*d.YKD[1600],padding:0,overflow:"auto",position:"relative"}),Sc=(0,d.AHW)({alignItems:"center"}),kc=(0,d.AHW)({padding:d.YKD[400],textAlign:"center",fontStyle:"italic",width:"100%"});function wc({document:e}){return r().createElement(d.yY_,{className:(0,d.cx)(Ec,e?void 0:Sc),"data-testid":"document-preview"},e?r().createElement(Oo.yo,{doc:e,editable:!1}):r().createElement(d.nBu,{"data-testid":"load-sample-no-preview",className:kc},"No Preview Documents"))}const xc=(0,d.AHW)({marginTop:d.YKD[600],display:"flex",flexDirection:"column",gap:d.YKD[200],border:`1px solid ${d.MFm.gray.light2}`,borderRadius:d.YKD[200],padding:d.YKD[400]}),Ac=(0,d.AHW)({border:`1px solid ${d.MFm.gray.dark2}`}),Dc=(0,d.AHW)({display:"flex",gap:d.YKD[400]}),Ic=(0,d.AHW)({overflow:"auto",flex:"50%"}),Mc=(0,d.AHW)({display:"flex",alignItems:"center",gap:d.YKD[100],marginBottom:d.YKD[400]}),Tc=(0,d.AHW)({color:d.MFm.green.dark2}),Lc=(0,d.AHW)({color:d.MFm.red.dark2}),Oc=(0,d.AHW)({color:d.MFm.green.dark1}),Nc=(0,d.AHW)({color:d.MFm.red.light1}),_c=(0,d.AHW)({fontWeight:"bold",color:"inherit"}),Fc=(0,d.AHW)({display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"228px",gap:d.YKD[300]}),Pc=(0,d.AHW)({fontSize:d.YKD[400],fontWeight:"bold",color:d.MFm.green.dark2,marginTop:d.YKD[200]}),Wc=(0,d.AHW)({color:d.MFm.green.light2}),Rc=()=>{const e=(0,d.D27)(),t=(0,o.useMemo)((()=>e?d.MFm.green.light1:d.MFm.green.base),[e]),n=(0,o.useMemo)((()=>e?d.MFm.white:d.MFm.black),[e]);return r().createElement("svg",{width:"64",height:"58",viewBox:"0 0 64 58",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r().createElement("rect",{x:"0.5",y:"1",width:"63",height:"56",rx:"2",stroke:n}),r().createElement("line",{y1:"28.5",x2:"64",y2:"28.5",stroke:n}),r().createElement("line",{x1:"8.61035",y1:"15.5898",x2:"32.9054",y2:"15.5898",stroke:n}),r().createElement("circle",{cx:"44.9268",cy:"16.0898",r:"2",fill:t,stroke:n}),r().createElement("circle",{cx:"52.8896",cy:"16.0898",r:"2",fill:t,stroke:n}))},Uc=({onPreviewClick:e})=>{const t=(0,d.D27)();return r().createElement("div",{className:Fc},r().createElement(Rc,null),r().createElement("div",{className:(0,d.cx)(Pc,t&&Wc)},"Preview sample documents"),r().createElement("div",null,"This section displays one document that passed validation and one that failed validation."),r().createElement(d.$nd,{onClick:e,variant:d.AkO.PrimaryOutline,"data-testid":"load-sample-documents"},"Preview documents"))},$c=(0,Ee.Ng)((e=>({validDocument:e.sampleDocuments.validDocument,invalidDocument:e.sampleDocuments.invalidDocument,isInitialState:"initial"===e.sampleDocuments.validDocumentState})),{fetchSampleDocuments:()=>(e,t)=>{e({type:Wl});const n=t(),a=n.namespace.ns,o=n.validation.validator,r=Ll(o).validator;e((({namespace:e,query:t})=>async(n,a,{preferences:o,dataService:r})=>{try{n((e=>({type:Rl,document:e}))((await Bl({namespace:e,dataService:r,preferences:o,pipeline:[{$match:t},{$limit:1}]}))[0]))}catch{n({type:Ul})}})({namespace:a,query:r})),e((({namespace:e,query:t})=>async(n,a,{preferences:o,dataService:r})=>{try{n((e=>({type:$l,document:e}))((await Bl({namespace:e,dataService:r,preferences:o,pipeline:[{$match:{$nor:[t]}},{$limit:1}]}))[0]))}catch{n({type:Vl})}})({namespace:a,query:r}))}})((function({validDocument:e,invalidDocument:t,isInitialState:n,fetchSampleDocuments:a}){const o=(0,d.D27)();return r().createElement("div",{className:(0,d.cx)(xc,o&&Ac)},n?r().createElement(Uc,{onPreviewClick:a}):r().createElement("div",{className:Dc},r().createElement("div",{className:Ic,"data-testid":"matching-documents"},r().createElement("div",{className:(0,d.cx)(Mc,o?Oc:Tc)},r().createElement(d.Int,{glyph:"CheckmarkWithCircle",size:"small"}),r().createElement(d.nBu,{className:_c},"Passed validation")),r().createElement(wc,{document:e})),r().createElement("div",{className:Ic,"data-testid":"notmatching-documents"},r().createElement("div",{className:(0,d.cx)(Mc,o?Nc:Lc)},r().createElement(d.Int,{glyph:"XWithCircle",size:"small"}),r().createElement(d.nBu,{className:_c},"Failed validation")),r().createElement(wc,{document:t}))))})),Vc=(0,d.AHW)({marginLeft:d.YKD[300]}),Hc=()=>{const e=(0,d.D27)(),t=(0,o.useMemo)((()=>e?d.MFm.white:d.MFm.black),[e]);return r().createElement("svg",{width:"72",height:"72",viewBox:"0 0 72 72",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:Vc},r().createElement("path",{d:"M41 16V4.00001L55 18H43C41.8954 18 41 17.1046 41 16Z",fill:d.MFm.green.base}),r().createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.8649 33.1158L23.6549 26.6382L24.3451 27.3618L17.5602 33.8346C17.4799 33.9177 17.4799 34.0823 17.5602 34.1654L24.3451 40.6382L23.6549 41.3618L16.8573 34.8769C16.3808 34.4028 16.3809 33.5973 16.8573 33.1232L16.8649 33.1158ZM44.708 33.8346L37.9231 27.3618L38.6133 26.6382L45.4109 33.1231C45.8874 33.5972 45.8873 34.4028 45.4109 34.8768L45.4034 34.8843L38.6133 41.3618L37.9231 40.6382L44.708 34.1654C44.7882 34.0823 44.7882 33.9177 44.708 33.8346ZM34.2704 27.3677L28.0022 40.9953L27.0937 40.5774L33.3619 26.9499L34.2704 27.3677Z",fill:t}),r().createElement("path",{d:"M40 56C40 62.6182 45.3818 68 52 68C58.6182 68 64 62.6182 64 56C64 49.3818 58.6182 44 52 44C45.3818 44 40 49.3818 40 56Z",fill:d.MFm.green.base}),r().createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M40.7755 61.5H9C7.63127 61.5 6.5 60.3975 6.5 59.0311V5.96893C6.5 4.60253 7.63127 3.50002 9 3.50002H40.7778C40.816 3.50002 40.8533 3.50431 40.8891 3.51245C41.0547 3.47474 41.2307 3.52362 41.3536 3.64646L55.3536 17.6465C55.4799 17.7728 55.528 17.9554 55.4841 18.125C55.4945 18.1651 55.5 18.2072 55.5 18.2505C55.5 18.2503 55.5 18.2502 55.433 18.2501L55.5 18.2505L55.4998 20.0065C55.4996 21.1241 55.4992 22.7206 55.4984 24.6361C55.4969 28.4671 55.4937 33.5741 55.4875 38.6781C55.4853 40.4683 55.4827 42.2581 55.4797 43.9924C60.6855 45.5025 64.5 50.3128 64.5 56C64.5 62.8943 58.8943 68.5 52 68.5C47.0782 68.5 42.8131 65.6431 40.7755 61.5ZM9 4.50002H40.5V16C40.5 17.3807 41.6193 18.5 43 18.5H54.5L54.4998 20.0063C54.4996 21.1239 54.4992 22.7203 54.4984 24.6357C54.4969 28.4665 54.4938 33.5733 54.4875 38.6769C54.4854 40.3832 54.483 42.0892 54.4801 43.7469C53.6783 43.585 52.8489 43.5 52 43.5C45.1057 43.5 39.5 49.1057 39.5 56C39.5 57.5857 39.7965 59.1032 40.3371 60.5H9C8.16873 60.5 7.5 59.8305 7.5 59.0311V5.96893C7.5 5.16952 8.16873 4.50002 9 4.50002ZM41.5 5.20712V16C41.5 16.8284 42.1716 17.5 43 17.5H53.7929L41.5 5.20712ZM40.5 56C40.5 49.658 45.658 44.5 52 44.5C58.342 44.5 63.5 49.658 63.5 56C63.5 62.3421 58.342 67.5 52 67.5C45.658 67.5 40.5 62.3421 40.5 56Z",fill:t}),r().createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M58.3904 51.3124L51.1067 60.4171C50.5385 61.1273 49.4742 61.1725 48.8478 60.5132L45.6375 57.1339L46.3625 56.4451L49.5728 59.8244C49.7816 60.0442 50.1364 60.0291 50.3258 59.7924L57.6096 50.6877L58.3904 51.3124Z",fill:t}))},Kc=(0,d.AHW)({padding:d.YKD[400],height:"100%"}),jc=(0,d.AHW)({height:"100%"}),Bc=(0,d.AHW)({display:"flex",gap:d.YKD[400]}),zc=(0,d.AHW)({height:"100%",display:"flex",justifyContent:"center"}),Yc="Schema validation for time-series collections is not supported.",qc="Schema validation for readonly views is not supported.",Gc="This action is not available on a secondary node.",Zc='This collection uses the "constraint" validation level, which guarantees every document matches the validator. The rules cannot be changed while it is in effect.',Jc='This collection is prepared for an upgrade to the "constraint" validation level. The rules cannot be changed until the upgrade completes, or until the prepared state is cleared by running collMod with prepareConstraintValidationLevel: false.',Qc="Compass no longer supports the visual rule builder for server versions below 3.2. To use the visual rule builder, please";function Xc({editMode:e}){return e.collectionTimeSeries?r().createElement(d.rpn,{warnings:Yc,"data-testid":"collection-validation-warning"}):e.collectionReadOnly?r().createElement(d.rpn,{warnings:qc,"data-testid":"collection-validation-warning"}):e.writeStateStoreReadOnly?r().createElement(d.rpn,{warnings:Gc,"data-testid":"collection-validation-warning"}):"active"===e.constraintValidation?r().createElement(d.rpn,{warnings:Zc,"data-testid":"collection-validation-warning"}):"prepared"===e.constraintValidation?r().createElement(d.rpn,{warnings:Jc,"data-testid":"collection-validation-warning"}):e.oldServerReadOnly?r().createElement(d.lZ$,{variant:"warning"},r().createElement("div",{"data-testid":"old-server-read-only"},Qc," ",r().createElement(d.N_E,{target:"_blank",href:"https://docs.mongodb.com/manual/tutorial/upgrade-revision/"},"upgrade to MongoDB 3.2."))):null}const ed=({onCancelClicked:e})=>r().createElement("div",{className:zc},r().createElement(d.yao,{"data-testid":"generating-rules",progressText:"Generating rules",cancelText:"Stop",onCancel:e})),td=({error:e,onDismissError:t})=>"timeout"===e?.errorType?r().createElement(d.rpn,{"data-testid":"rules-generation-timeout-message",warnings:["Operation exceeded time limit. Please try increasing the maxTimeMS in Compass Settings."],dismissible:!0,onClose:t}):r().createElement(d.dFH,{"data-testid":"rules-generation-error-message",errors:[`Error occured during rules generation: ${e.errorMessage}`],dismissible:!0,onClose:t}),nd=(0,Ee.Ng)((e=>({isZeroState:e.isZeroState,isLoaded:e.isLoaded,editMode:e.editMode,isRulesGenerationInProgress:e.rulesGeneration.isInProgress,rulesGenerationError:e.rulesGeneration.error})),{changeZeroState:e=>(t,n,{track:a,connectionInfoRef:o})=>(!1===e&&a("Schema Validation Added",{},o.current),t(fl()),t(bl(e))),generateValidationRules:Xl,clearRulesGenerationError:()=>e=>e({type:Zl}),stopRulesGeneration:()=>(e,t,{rulesGenerationAbortControllerRef:n})=>{n.current&&n.current?.abort(zl)}})((function({isZeroState:e,isRulesGenerationInProgress:t,rulesGenerationError:n,isLoaded:a,changeZeroState:o,generateValidationRules:i,clearRulesGenerationError:s,stopRulesGeneration:l,editMode:c}){const{readOnly:u}=(0,R.gc)(["readOnly"]),m=!(c.collectionReadOnly||c.collectionTimeSeries||c.writeStateStoreReadOnly||c.oldServerReadOnly||"none"!==c.constraintValidation||u);return r().createElement("div",{className:Kc,"data-testid":"schema-validation-states"},n&&r().createElement(td,{error:n,onDismissError:s}),r().createElement(Xc,{editMode:c}),!a&&r().createElement("div",{className:zc},r().createElement(d.iyS,{progressText:"Loading Validation"})),a&&r().createElement(r().Fragment,null,e&&!t&&r().createElement(d.HYq,{icon:Hc,title:"Create validation rules",subTitle:"Generate rules via schema analysis from existing sample data or add them manually to enforce document structure during updates and inserts",callToAction:r().createElement("div",{className:Bc},r().createElement(d.$nd,{"data-testid":"generate-rules-button",disabled:!m,onClick:i,variant:d.AkO.Primary,size:"small"},"Generate rules"),r().createElement(d.$nd,{"data-testid":"add-rule-button",disabled:!m,onClick:()=>o(!1),variant:d.AkO.PrimaryOutline,size:"small"},"Add rule")),callToActionLink:r().createElement(d.N_E,{href:"https://docs.mongodb.com/manual/core/schema-validation/",target:"_blank"},"Learn more about validations")}),e&&t&&r().createElement(ed,{onCancelClicked:l}),!e&&r().createElement("div",{className:jc},r().createElement(Cc,{isEditable:m}),r().createElement($c,null))))})),ad=(0,i.nk)({name:"CompassSchemaValidationPlugin",component:function({children:e}){return r().createElement(r().Fragment,null,e)},activate:function(e,{globalAppRegistry:t,dataService:n,connectionInfoRef:a,preferences:o,instance:r,logger:i,workspaces:s,track:l},{on:c,cleanup:d,addCleanup:u},p){const h=function(e,t,n=Vo){return(0,F.y$)(nc,{...ec,...e},(0,F.Tw)(P.A.withExtraArgument({...t,rulesGenerationAbortControllerRef:{current:void 0},analyzeSchema:n})))}({namespace:(0,m.Ay)(e.namespace),serverVersion:r.build.version,editMode:{collectionTimeSeries:!!e.isTimeSeries,collectionReadOnly:!!e.isReadonly,writeStateStoreReadOnly:!r.isWritable,oldServerReadOnly:Je().gte("3.2.0",r.build.version),constraintValidation:"none",isEditingEnabledByUser:!1}},{dataService:n,connectionInfoRef:a,preferences:o,globalAppRegistry:t,workspaces:s,logger:i,track:l},p);c(r,"change:isWritable",(()=>{var e;h.dispatch((e={writeStateStoreReadOnly:!r.isWritable},{type:ml,editMode:e}))})),h.dispatch(((e,t)=>{const n=t().namespace;e(_l(n))}));const g=()=>!h.getState().validation.isChanged;return u(s.onTabReplace?.(g)),u(s.onTabClose?.(g)),{store:h,deactivate:d}}},{dataService:s.S1,connectionInfoRef:s.wj,instance:g.A$,preferences:R.fx,logger:(0,p.fF)("COMPASS-SCHEMA-VALIDATION-UI"),track:re.yL,workspaces:D.__}),od={name:"Validation",provider:ad,content:function(){return r().createElement(d.XvC,{"data-testid":"compass-schema-validation"},r().createElement(nd,null))},header:function(){return r().createElement("div",{"data-testid":"validation-tab-title"},"Validation")}};var rd=n(37334),id=n(85561),sd=n(83869);const ld={"set-cli":r().createElement(d.lZ$,{variant:d.uAY.Info,"data-testid":"set-cli-banner"},"This setting cannot be modified as it has been set at Compass startup."),"set-global":r().createElement(d.lZ$,{variant:d.uAY.Info,"data-testid":"set-global-banner"},"This setting cannot be modified as it has been set in the global Compass configuration file."),hardcoded:r().createElement(d.lZ$,{variant:d.uAY.Info,"data-testid":"hardcoded-banner"},"This setting cannot be modified as it is disabled for this Compass edition."),derived:r().createElement(d.lZ$,{variant:d.uAY.Info,"data-testid":"derived-banner"},"This setting cannot be modified as its value is implied by another option."),"set-cloud-user":null,"set-cloud-project":null,"set-cloud-org":null,"":null},cd={isModalOpen:!1,settings:{},preferenceStates:{},updatedFields:[],loadingState:"loading",tab:void 0},dd="compass-settings/SettingsFetchedStart",ud="compass-settings/settingsFetched",md="compass-settings/ChangeFieldValue",pd="compass-settings/settingsUpdated",hd="compass-settings/OpenSettingsModal",gd="compass-settings/SelectTab",fd="compass-settings/CloseSettingsModal";function yd(e,t){return e.type===t}const bd=(e=cd,t)=>yd(t,dd)?{...cd,isModalOpen:e.isModalOpen,tab:e.tab}:yd(t,hd)?{...e,isModalOpen:!0,tab:t.tab}:yd(t,gd)?{...e,tab:t.tab??e.tab}:yd(t,fd)?{...e,isModalOpen:!1}:yd(t,md)?"ready"!==e.loadingState?e:{...e,settings:{...e.settings,[t.field]:t.value}}:yd(t,ud)?{...e,loadingState:"ready",settings:t.settings,preferenceStates:t.preferenceStates,updatedFields:t.updatedFields}:yd(t,pd)?{...e,isModalOpen:!1}:e,vd=()=>async(e,t,{preferencesSandbox:n})=>{const{userPreferences:a,preferenceStates:o,updatedFields:r}=await n.getSandboxState();e({type:ud,settings:a,preferenceStates:o,updatedFields:r})},Cd=(e,t)=>async(n,a,{preferencesSandbox:o,logger:r,track:i})=>{const{loadingState:s}=a().settings;if("loading"===s)throw new Error("Can't change preferences while sandbox is being set up");i("Setting Changed",{setting:e}),n({type:md,field:e,value:t});try{await o.updateField(e,t)}catch(e){r.log.error(r.mongoLogId(1001000223),"Settings","Failed to change settings value",{error:e.stack})}await n(vd())},Ed=(0,d.AHW)({display:"flex",flexDirection:"row",justifyContent:"space-between",gap:d.YKD[200]}),Sd=(0,d.AHW)({display:"flex",alignItems:"center",gap:d.YKD[100]}),kd={enableDbAndCollStats:function(){return r().createElement(r().Fragment,null,"When enabled, Compass occasionally calls the"," ",r().createElement(d.N_E,{href:"https://www.mongodb.com/docs/manual/reference/command/dbStats/#mongodb-dbcommand-dbcmd.dbStats"},"dbStats")," ","and"," ",r().createElement(d.N_E,{href:"https://www.mongodb.com/docs/manual/reference/command/collStats/"},"collStats")," ","commands to access storage statistics for a given database or collection. Disabling this setting can help reduce Compass' overhead on your MongoDB deployments.")},defaultSortOrder:function(){return r().createElement(r().Fragment,null,"All queries executed from the query bar will apply this sort."," ",r().createElement("strong",null,"Not available for views and timeseries."))},enableGenAIToolCalling:function(){return r().createElement(r().Fragment,null,"Allow the MongoDB Assistant to interact with your databases. All actions require your approval before running. Learn more about"," ",r().createElement(d.N_E,{href:"https://www.mongodb.com/docs/compass/query-with-natural-language/compass-ai-assistant/",target:"_blank"},"MongoDB database tools"))},timezone:function({value:e}){return r().createElement("div",{className:Ed,"data-testid":"timezone-description"},r().createElement("span",null,"The data will still always be stored in UTC."),!!e&&(0,R.Gu)(e)&&r().createElement(d.p8Z,{className:Sd,tooltipProps:{align:"top",justify:"start"},definition:"This timezone observes daylight savings."},r().createElement(d.Int,{glyph:"Sun"}),"Observes daylight savings"))}},wd={defaultSortOrder:R.ls,legacyUUIDDisplayEncoding:R.di,timezone:R.TA},xd=(0,d.AHW)({marginTop:d.YKD[400],marginBottom:d.YKD[400]}),Ad=(0,d.AHW)({marginLeft:d.YKD[200]}),Dd=(0,d.AHW)({margin:`${d.YKD[400]}px 0`,fieldset:{paddingLeft:`${d.YKD[600]}px`}});function Id({name:e,value:t}){const{short:n,long:a}=(0,R.Zq)(e).description,o=kd[e],i=R.of.find((t=>t.name===e));return r().createElement(r().Fragment,null,r().createElement(d.JU7,{htmlFor:e,id:`${e}-label`},n,"development"===i?.stage&&r().createElement("span",null,r().createElement(d.Exy,{className:Ad},"dev"))),(o||a)&&r().createElement(d.VYo,null,o?r().createElement(o,{value:t}):a))}function Md({name:e,onChange:t,value:n,disabled:a}){const i=(0,o.useCallback)((n=>{t(e,n.target.checked)}),[e,t]);return r().createElement(d.Sc0,{key:e,className:xd,name:e,id:e,"data-testid":e,onChange:i,label:r().createElement(Id,{name:e,value:n}),checked:n,disabled:a})}function Td({name:e,onChange:t,value:n,disabled:a,required:i}){const s=(0,o.useCallback)((n=>{const{value:a}=n.target;t(e,""===a?i?0:void 0:+a)}),[e,t,i]);return r().createElement(r().Fragment,null,r().createElement(Id,{name:e,value:n}),r().createElement(d.ksK,{className:xd,"aria-labelledby":`${e}-label`,id:e,name:e,"data-testid":e,type:"number",value:void 0===n?i?"0":"":`${n}`,onChange:s,disabled:a,optional:!i}))}function Ld({name:e,onChange:t,value:n,disabled:a}){const{short:i,options:s}=(0,R.Zq)(e).description;if(!s)throw new Error(`No option descriptions found for preference ${e}`);const l=(0,o.useCallback)((n=>{null!==n&&t(e,n)}),[e,t]),c=Object.keys(s).some((e=>""===e))?r().createElement(d.l6P,{className:xd,allowDeselect:!1,"aria-labelledby":`${e}-label`,id:e,name:e,"data-testid":e,value:n,onChange:l,disabled:a},Object.entries(s).map((([e,t])=>r().createElement(d.c$x,{key:e,value:e,glyph:t.glyph?r().createElement(d.Int,{glyph:t.glyph}):void 0,description:t.description},t.label)))):r().createElement(d.G3_,{className:xd,"aria-label":i,id:e,"data-testid":e,value:n,multiselect:!1,clearable:!1,onChange:l,disabled:a},Object.entries(s).map((([e,t])=>r().createElement(d.jOs,{key:e,value:e,glyph:t.glyph?r().createElement(d.Int,{glyph:t.glyph}):void 0,displayName:t.label,description:t.description}))));return r().createElement(r().Fragment,null,r().createElement(Id,{name:e,value:n}),c)}function Od({name:e,onChange:t,value:n,disabled:a,required:i}){const s=(0,o.useCallback)((n=>{const{value:a}=n.target;t(e,""===a?i?"":void 0:a)}),[e,t,i]);return r().createElement(r().Fragment,null,r().createElement(Id,{name:e,value:n}),r().createElement(d.ksK,{className:xd,"aria-labelledby":`${e}-label`,id:e,name:e,"data-testid":e,value:void 0===n?"":`${n}`,onChange:s,disabled:a,optional:!i}))}const Nd=(0,Ee.Ng)(((e,t)=>{const{settings:{settings:n,preferenceStates:a}}=e,{name:o}=t,r=o in n,{type:i}=r?(0,R.Zq)(o):{};return{isConfigurableUserPreference:r,value:n[o],type:i,disabled:!!a[o],stateLabel:ld[a[o]??""]}}),{onChange:Cd})((function({stateLabel:e="",disabled:t=!1,required:n=!1,...a}){if(!0!==a.isConfigurableUserPreference)return null;if(!function(e){return["number","string","boolean"].includes(e.type)}(a))throw new Error(`Do not know how to render type ${String(a.type)} for preference ${a.name}`);let o=null;const{name:i,type:s,onChange:l,value:c}=a;return"boolean"===s?o=r().createElement(Md,{name:i,onChange:l,value:!!c,disabled:!!t}):"string"===s&&function(e){return e in wd}(i)?o=r().createElement(Ld,{name:i,onChange:l,value:c,disabled:!!t}):"number"===s?o=r().createElement(Td,{name:i,onChange:l,value:c,required:!!n,disabled:!!t}):"string"===s&&(o=r().createElement(Od,{name:i,onChange:l,value:c,required:!!n,disabled:!!t})),r().createElement("div",{"data-testid":`setting-${i}`},r().createElement(d.GEW,{className:Dd},o,e??""))}));function _d({fields:e}){return r().createElement(r().Fragment,null,e.map((e=>r().createElement(Nd,{key:e,name:e}))))}const Fd=r().memo(_d);var Pd=n(15088).process;const Wd=["readOnly","enableShell","protectConnectionStrings","timezone","defaultSortOrder","showKerberosPasswordField","maxTimeMS","enableDevTools",...["darwin","win32"].includes(Pd.platform)?["installURLHandlers"]:[],"enableShowDialogOnQuit","enableDbAndCollStats","inferNamespacesFromPrivileges","legacyUUIDDisplayEncoding"],Rd=()=>r().createElement("div",{"data-testid":"general-settings"},r().createElement("div",null,"To enhance the user experience, Compass can enable or disable particular features. Please choose from the settings below:"),r().createElement(Fd,{fields:Wd}));var Ud=n(21655).URL;function $d(e){return String(e&&"object"==typeof e&&"message"in e?e.message:e)}function Vd(e){try{const t=e?new Ud(e):{username:"",password:"",href:""},{username:n,password:a}=t;return t.username="",t.password="",{proxyUrl:t.href,proxyUrlState:"none",proxyUrlErrorMessage:void 0,proxyUsername:n,proxyPassword:a}}catch(t){return{proxyUrl:e||"",proxyUrlState:"error",proxyUrlErrorMessage:$d(t),proxyUsername:"",proxyPassword:""}}}function Hd(e){if(!e.proxyUrl)return"";const t=new Ud(e.proxyUrl);return t.username=e.proxyUsername,t.password=e.proxyPassword,t.href}const Kd=({disabled:e,proxyOptions:t,setProxyOptions:n})=>{const[a,i]=(0,o.useState)((()=>Vd(t.proxy)));(0,d.wTI)((()=>{i((e=>t.proxy&&Hd(e)===t.proxy?e:Vd(t.proxy)))}),[t.proxy]);const s=(0,o.useCallback)(((e,o)=>{const r={...a,...e};if(!o)try{const e=new Ud(r.proxyUrl);(e.username||e.password)&&(r.proxyUsername=decodeURIComponent(e.username),r.proxyPassword=decodeURIComponent(e.password))}catch{}try{const e=Hd(r),a=Vd(e);o&&(r.proxyUrl=a.proxyUrl),n({...t,proxy:e})}catch(e){return void i({...r,proxyUrlState:"error",proxyUrlErrorMessage:$d(e)})}i({...r,proxyUrlState:"none",proxyUrlErrorMessage:""})}),[a,t,n,i]),{proxyUrl:l,proxyUrlState:c,proxyUrlErrorMessage:u,proxyUsername:m,proxyPassword:p}=a,h=(0,o.useCallback)((e=>s({proxyUrl:e.target.value.trim()},!1)),[s]),g=(0,o.useCallback)((e=>s({proxyUsername:e.target.value},!0)),[s]),f=(0,o.useCallback)((e=>s({proxyPassword:e.target.value},!0)),[s]);return r().createElement("div",{"data-testid":"proxy-settings-custom"},r().createElement(d.GEW,null,r().createElement(d.JU7,{htmlFor:"proxy-url",id:"proxy-url-label"},"Proxy URL"),r().createElement(d.VYo,null,"Specify a ",r().createElement("code",null,"http://"),", ",r().createElement("code",null,"https://"),","," ",r().createElement("code",null,"socks5://"),"or ",r().createElement("code",null,"pac+https://")," URL."),r().createElement(d.ksK,{id:"proxy-url","data-testid":"proxy-url","aria-labelledby":"proxy-url-label",onChange:h,value:l,disabled:e,state:c,errorMessage:u,placeholder:"https://example.com:8080"})),r().createElement(d.GEW,null,r().createElement(d.JU7,{htmlFor:"proxy-username",id:"proxy-username-label"},"Username"),r().createElement(d.ksK,{id:"proxy-username","data-testid":"proxy-username","aria-labelledby":"proxy-username-label",onChange:g,value:m,optional:!0,disabled:e})),r().createElement(d.GEW,null,r().createElement(d.JU7,{htmlFor:"proxy-password",id:"proxy-password-label"},"Password"),r().createElement(d.ksK,{type:"password",id:"proxy-password","data-testid":"proxy-password","aria-labelledby":"proxy-password-label",onChange:f,value:p,optional:!0,disabled:e})),(p||m)&&r().createElement(d.lZ$,{variant:"warning"},"Some resources, such as map data for geographic visualizations, cannot currently be loaded through proxies which require authentication."))},jd=["proxy"],Bd=(0,Ee.Ng)((e=>{const{settings:{settings:t,preferenceStates:n}}=e;return{proxy:t.proxy,proxySettingsState:n.proxy}}),{onChange:Cd})((({onChange:e,proxy:t,proxySettingsState:n})=>{const[a]=(0,o.useMemo)((()=>[(0,R.nV)(t)]),[t]),i=(0,o.useCallback)((t=>{e("proxy",(0,R.r2)(t))}),[e]),s=!!n,l=ld[n??""],c="string"==typeof a.proxy?"custom":a.useEnvironmentVariableProxies?"env":"no-proxy",u=(0,o.useCallback)((e=>{const t=e.target.value;i({...a,...{env:{proxy:void 0,useEnvironmentVariableProxies:!0},"no-proxy":{proxy:void 0,useEnvironmentVariableProxies:!1},custom:{proxy:"",useEnvironmentVariableProxies:!0}}[t]})}),[a,i]),m=a.noProxyHosts,p=(0,o.useCallback)((e=>{i({...a,noProxyHosts:e.target.value})}),[a,i]);return r().createElement("div",{"data-testid":"proxy-settings"},r().createElement(d.GEW,null,r().createElement(d.E99,{onChange:u,value:c},r().createElement(d.VCA,{value:"no-proxy",disabled:s,"data-testid":"no-proxy-radio"},"No Proxy"),r().createElement(d.VCA,{value:"env",disabled:s,"data-testid":"env-radio"},"System Proxy"),r().createElement(d.VCA,{value:"custom",disabled:s,"data-testid":"custom-radio"},"Manual Configuration"))),"custom"===c&&r().createElement(Kd,{disabled:s,proxyOptions:a,setProxyOptions:i}),("env"===c||"custom"===c)&&r().createElement(d.GEW,null,r().createElement(d.JU7,{htmlFor:"proxy-no-proxy-hosts",id:"proxy-no-proxy-hosts-label"},"Excluded hosts"),r().createElement(d.VYo,null,"Comma-separated list of hostnames and IP addresses. Connections to these hosts will not be forwarded through the proxy."),r().createElement(d.ksK,{id:"proxy-no-proxy-hosts","data-testid":"proxy-no-proxy-hosts","aria-labelledby":"proxy-no-proxy-hosts-label",onChange:p,value:m,optional:!0,disabled:s})),l)})),zd=["browserCommandForOIDCAuth","showOIDCDeviceAuthFlow","persistOIDCTokens"],Yd=()=>r().createElement("div",{"data-testid":"oidc-settings"},r().createElement("div",null,"Change the behavior of the OIDC authentication mechanism for server connection and Atlas Login in Compass."),r().createElement(Fd,{fields:["browserCommandForOIDCAuth"]}),r().createElement("div",null,r().createElement("strong",null,"MongoDB server OIDC Authentication options")),r().createElement(Fd,{fields:["showOIDCDeviceAuthFlow","persistOIDCTokens"]})),qd=["enableGenAIFeatures","enableGenAISampleDocumentPassing","enableGenAIToolCalling"],Gd=(0,Ee.Ng)((e=>({isAIFeatureEnabled:!!e.settings.settings.enableGenAIFeatures,isToolCallingEnabled:!!e.settings.settings.enableToolCalling})),null)((({isAIFeatureEnabled:e,isToolCallingEnabled:t})=>r().createElement("div",{"data-testid":"gen-ai-settings"},r().createElement("div",null,"Provides access to advanced generative AI capabilities."),r().createElement(Fd,{fields:["enableGenAIFeatures"]}),e&&r().createElement(r().Fragment,null,r().createElement(Fd,{fields:["enableGenAISampleDocumentPassing"]}),t&&r().createElement(Fd,{fields:["enableGenAIToolCalling"]}))))),Zd=["autoUpdates","enableMaps","trackUsageStatistics","enableFeedbackPanel"],Jd=()=>r().createElement("div",{"data-testid":"privacy-settings"},r().createElement("div",null,"To enhance the user experience, Compass can integrate with 3rd party services, which requires external network requests. Please choose from the settings below:"),r().createElement(Fd,{fields:Zd}),r().createElement("div",null,"With any of these options, none of your personal information or stored data will be submitted.",r().createElement("br",null),"Learn more: ",r().createElement(d.N_E,{href:"https://www.mongodb.com/legal/privacy-policy"},"MongoDB Privacy Policy"))),Qd=(0,d.AHW)({marginTop:d.YKD[400],marginBottom:d.YKD[400]}),Xd=(0,d.AHW)({div:{textAlign:"left",padding:d.YKD[400],justifyContent:"flex-start"}}),eu=(0,d.AHW)({marginRight:d.YKD[200],maxWidth:"50%"}),tu=({theme:e})=>{const t={fg:d.MFm.gray.base,bg:d.MFm.white},n={fg:d.MFm.black,bg:d.MFm.gray.dark1},{fg:a,bg:o}="DARK"===e?n:t;return r().createElement("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",fill:"none",viewBox:"0 0 171 119",className:eu},r().createElement("defs",null,r().createElement("clipPath",{id:"sidebar-clip"},r().createElement("path",{d:"M6 0 L42 0 Q48 0, 48 6 L48 113 Q48 119, 42 119 L6 119 Q0 119, 0 113 L0 6 Q0 0, 6 0 Z"}))),r().createElement("rect",{width:"171",height:"119",fill:o,rx:"6"}),r().createElement("rect",{width:"42",height:"119",fill:a,clipPath:"url(#sidebar-clip)"}),r().createElement("rect",{width:"117",height:"7",x:"48",y:"34",fill:a,rx:"3.5"}),r().createElement("rect",{width:"28",height:"7",x:"48",y:"21",fill:a,rx:"3.5"}),r().createElement("rect",{width:"28",height:"7",x:"82",y:"21",fill:a,rx:"3.5"}),r().createElement("rect",{width:"28",height:"7",x:"116",y:"21",fill:a,rx:"3.5"}),r().createElement("rect",{width:"117",height:"7",x:"48",y:"47",fill:a,rx:"3.5"}),r().createElement("rect",{width:"117",height:"7",x:"48",y:"60",fill:a,rx:"3.5"}),r().createElement("rect",{width:"117",height:"7",x:"48",y:"73",fill:a,rx:"3.5"}),r().createElement("rect",{width:"170",height:"118",x:".5",y:".5",stroke:a,rx:"5.5"}))},nu={onChange:Cd},au=["theme"],ou=(0,Ee.Ng)((({settings:{settings:e,preferenceStates:t}})=>({themeValue:e.theme??"OS_THEME",preferenceStates:t})),nu)((({themeValue:e,preferenceStates:t,onChange:n})=>{const a=(0,o.useCallback)((e=>{n("theme",e.target.checked?"OS_THEME":"LIGHT")}),[n]),i=(0,o.useCallback)((e=>{n("theme",e.target.value)}),[n]);return r().createElement("div",{"data-testid":"theme-settings"},r().createElement("div",null,"Change the appearance of Compass."),r().createElement(d.GEW,null,r().createElement(d.Sc0,{className:Qd,name:"use-os-theme",id:"use-os-theme","data-testid":"use-os-theme",label:r().createElement(r().Fragment,null,r().createElement(d.JU7,{htmlFor:"use-os-theme"},"Sync with OS"),r().createElement(d.VYo,null,"Automatically switch between light and dark themes based on your OS settings")),onChange:a,checked:"OS_THEME"===e,disabled:!!t.theme}),ld[t.theme??""]),r().createElement(d.GEW,null,r().createElement(d.E99,{id:"theme-selector",onChange:i,value:e,size:"full"},r().createElement(d.VCA,{id:"theme-selector-light","data-testid":"theme-selector-light",className:Xd,value:"LIGHT",disabled:!!t.theme||"OS_THEME"===e},r().createElement(tu,{theme:"LIGHT"}),"Light Theme"),r().createElement(d.VCA,{id:"theme-selector-dark","data-testid":"theme-selector-dark",className:Xd,value:"DARK",disabled:!!t.theme||"OS_THEME"===e},r().createElement(tu,{theme:"DARK"}),"Dark Theme"))))})),ru=R.of.filter((e=>"preview"===e.stage)).map((e=>e.name)),iu=R.of.filter((e=>"development"===e.stage)).map((e=>e.name));function su(){return((0,R.Fg)("showDevFeatureFlags")??!1)&&iu.length>0}function lu(){return ru.length>0}const cu=()=>{const e=lu(),t=su();return r().createElement("div",{"data-testid":"feature-flag-settings"},r().createElement("div",null,"These settings control experimental behavior of Compass. Use them at your own risk!"),r().createElement("div",null,e&&r().createElement(Fd,{fields:ru}),t&&r().createElement(Fd,{fields:iu})))},du=(0,d.AHW)({borderRadius:d.YKD[100],cursor:"pointer",marginBottom:d.YKD[100],background:"none",border:"none",width:"100%",padding:d.YKD[200],textAlign:"left",fontWeight:500}),uu=(0,d.AHW)({"&:hover,&:focus":{backgroundColor:d.MFm.green.light2,color:d.MFm.gray.dark3}}),mu=(0,d.AHW)({backgroundColor:d.MFm.green.light3,color:d.MFm.gray.dark3,"&:active,&:focus":{backgroundColor:d.MFm.green.light3,color:d.MFm.gray.dark3}}),pu=(0,d.AHW)({"&:hover,&:focus":{backgroundColor:d.MFm.gray.dark3,color:d.MFm.white}}),hu=(0,d.AHW)({backgroundColor:d.MFm.gray.dark2,color:d.MFm.white,"&:active,&:focus":{backgroundColor:d.MFm.gray.dark2,color:d.MFm.white}}),gu=({activeItem:e,items:t,onSelectItem:n})=>{const a=(0,d.D27)();return r().createElement("div",{"data-testid":"settings-modal-sidebar",role:"tablist","aria-labelledby":"modal-title"},t.map((([t,o])=>r().createElement("button",{type:"button",key:t,role:"tab","aria-controls":`${t}-section`,"aria-selected":e===t,className:(0,d.cx)(du,{[a?pu:uu]:t!==e,[a?hu:mu]:t===e}),id:`${t}-tab`,"data-testid":`sidebar-${t}-item`,onClick:()=>n(t)},o))))},fu=(0,d.AHW)({display:"flex",height:5*d.YKD[7],paddingTop:d.YKD[200]}),yu=(0,d.AHW)({position:"absolute",width:3*d.YKD[1600]}),bu=(0,d.AHW)({width:"80%",marginLeft:3*d.YKD[1600]},d.Rg),vu=(0,d.AHW)({paddingRight:d.YKD[200],paddingLeft:d.YKD[400],paddingBottom:d.YKD[200]}),Cu=(0,Ee.Ng)((e=>({isOpen:e.settings.isModalOpen&&"ready"===e.settings.loadingState,hasChangedSettings:e.settings.updatedFields.length>0,selectedTab:e.settings.tab,userConfigurableSettings:e.settings.settings})),{onClose:()=>e=>{e({type:fd})},onSave:()=>async(e,t,{preferencesSandbox:n,logger:a})=>{const{loadingState:o}=t().settings;if("loading"===o)throw new Error("Can't update user settings while sandbox is being set up");try{await n.applySandboxChangesToPreferences(),e({type:pd})}catch(e){a.log.warn(a.mongoLogId(1001000146),"Settings","Failed to update settings",{message:e.message})}},onSelectTab:e=>({type:gd,tab:e})})((({isOpen:e,selectedTab:t,onMount:n,onClose:a,onSave:i,onSelectTab:s,hasChangedSettings:l,userConfigurableSettings:c})=>{const u=(0,o.useRef)(n);(0,o.useEffect)((()=>{u.current?.()}),[]);const m=function(){const e=su();return lu()||e}(),p=(0,o.useMemo)((()=>{const e=[{tabId:"general",preferences:Wd,name:"General",component:Rd},{tabId:"theme",preferences:au,name:"Theme",component:ou},{tabId:"privacy",preferences:Zd,name:"Privacy",component:Jd},{tabId:"proxy",preferences:jd,name:"Proxy Configuration",component:Bd},{tabId:"oidc",preferences:zd,name:"OIDC",component:Yd},{tabId:"ai",preferences:qd,name:"Artificial Intelligence",component:Gd}].filter((e=>e.preferences.some((e=>Object.hasOwn(c,e)))));return m&&e.push({tabId:"preview",name:"Feature Preview",preferences:[],component:cu}),e}),[c,m]);t??=p[0].tabId;const h=p.find((e=>e.tabId===t))?.component??null;return r().createElement(d.k5W,{size:"large",title:"Settings",open:e,submitButtonText:"Save",onSubmit:i,submitDisabled:!l,onCancel:a,"data-testid":"settings-modal",minBodyHeight:2*d.YKD[1600]},r().createElement("div",{className:fu},r().createElement("div",{className:yu},r().createElement(gu,{activeItem:t,onSelectItem:s,items:p.map((e=>[e.tabId,e.name]))})),r().createElement("div",{className:bu,"data-testid":"settings-modal-content",role:"tabpanel",tabIndex:0,id:`${t}-section`,"aria-labelledby":`${t}-tab`},r().createElement("div",{className:vu},h&&r().createElement(h,null)))))}));var Eu=n(16151);class Su{_sandbox=null;get sandbox(){if(!this._sandbox)throw new Error("Trying to access sandbox before setup was called");return this._sandbox}preferences;constructor(e){this.preferences=e}async setupSandbox(){this._sandbox=await this.preferences.createSandbox()}async updateField(e,t){await this.sandbox.savePreferences({[e]:t})}async getSandboxState(){const[e,t]=await Promise.all([this.sandbox.getSettingsUIPreferences(),this.sandbox.getPreferenceStates()]),n=Object.keys(e).filter((n=>e[n]!==this.preferences.getPreferences()[n]&&void 0===t[n]));return{userPreferences:e,preferenceStates:t,updatedFields:n}}async applySandboxChangesToPreferences(){const{userPreferences:e,updatedFields:t}=await this.getSandboxState();var n,a;await this.preferences.savePreferences((n=e,a=t,Object.fromEntries(Object.entries(n).filter((([e])=>a.includes(e))))))}}const ku=(0,i.nk)({name:"CompassSettings",component:()=>r().createElement(r().Fragment,null,r().createElement(d.ETl,null,r().createElement(Cu,null))),activate:(e,t,{on:n,cleanup:a})=>{const o=function(e){const t=e?.preferencesSandbox??new Su(e.preferences);return(0,F.y$)((0,F.HY)({settings:bd}),(0,F.Tw)(P.A.withExtraArgument({preferences:e.preferences,preferencesSandbox:t,logger:e.logger,track:e.track,atlasAuthService:e.atlasAuthService,atlasAiService:e.atlasAiService})))}(t),{globalAppRegistry:r}=t,i=e=>{var t;o.dispatch((t=e,async e=>{e({type:hd,tab:t}),await e((async(e,t,{preferencesSandbox:n,logger:a})=>{try{e({type:dd}),await n.setupSandbox(),await e(vd())}catch(e){a.log.warn(a.mongoLogId(1001000145),"Settings","Failed to fetch settings",{message:e.message})}}))}))};return Eu.ipcRenderer&&n(Eu.ipcRenderer,"window:show-settings",(()=>i())),n(r,"open-compass-settings",i),{store:o,deactivate:a}}},{logger:(0,p.fF)("COMPASS-SETTINGS"),track:re.yL,preferences:R.fx,atlasAiService:sd.Dr,atlasAuthService:zt.L1});var wu=n(98051),xu=n(96441),Au=n(98540),Du=n(93885);const Iu=["IDLE","REPAIRING","UPDATING","PAUSED","CREATING","DELETING","DELETED"];class Mu extends Du.A0{loadAllPromise;atlasService;orgId;projectId;logger;constructor(e,t,n,a){super(),this.atlasService=e,this.orgId=t,this.projectId=n,this.logger=a}async load({id:e}){return(await this.loadAll()).find((t=>t.id===e))}async _loadAndNormalizeClusterDescriptionInfo(){let e=[];try{const t=await this.atlasService.authenticatedFetch(this.atlasService.cloudEndpoint(`/explorer/v1/groups/${this.projectId}/clusters/connectionInfo`));e=await t.json()}catch(e){throw this.logger.log.error((0,p.oW)(1001000357),"LoadAndNormalizeClusterDescriptionInfo","Failed to load connection list",{error:e.message}),e}return e.map((e=>e.atlasMetadata&&Iu.includes(e.atlasMetadata.clusterState)?e:(this.logger.log.warn((0,p.oW)(1001000358),"LoadAndNormalizeClusterDescriptionInfo","Skipping connection info due to unsupported cluster state or missing metadata",{connectionInfo:e}),null))).filter((e=>!!e))}loadAll(){return this.loadAllPromise??=this._loadAndNormalizeClusterDescriptionInfo().finally((()=>{delete this.loadAllPromise})),this.loadAllPromise}}const Tu=(0,i.xw)((function({orgId:e,projectId:t,children:n}){const a=(0,p.Ul)("ATLAS-CLOUD-CONNECTION-STORAGE"),i=(0,zt.fA)(),s=(0,o.useRef)(new Mu(i,e,t,a));return r().createElement(Du.n4,{value:s.current},n)}));class Lu extends zt.nH{signIn(){return this.getUserInfo()}signOut(){return Promise.resolve()}isAuthenticated(){return Promise.resolve(!0)}getUserInfo(){throw new Error("AtlasCloudAuthService.getUserInfo not implemented")}}const Ou=new Lu;function Nu({children:e}){return r().createElement(zt.sr,{value:Ou},e)}var _u=n(78268);function Fu(e,t={current:{}}){return Object.assign(((...n)=>{t.current.onDebug?.(e,...n)}),{namespace:e,color:"",diff:-1,enabled:!0,log:(...n)=>{t.current.onDebug?.(e,...n)},destroy:()=>!1,extend:(n,a=":")=>Fu(`${e}${a}${n}`,t)})}const Pu={logging:null,tracking:null};class Wu{log;debug;component;callbackRef;constructor(e,t){this.component=e,this.callbackRef=t;const n={write(e,n){const a=JSON.parse(e);Pu.logging?.push(a),t.current.onLog?.(a),n()},end(e){e()}};this.log=new _u.MongoLogWriter("","",n).bindComponent(this.component),this.debug=Fu(this.component,this.callbackRef)}mongoLogId=p.oW;createLogger=e=>new Wu(e,this.callbackRef)}const Ru="compass-welcome/welcome-modal/ModalClosed",Uu="compass-welcome/welcome-modal/OpenSettingsClicked",$u=(e={isOpen:!1},t)=>t.type===Ru||t.type===Uu?{isOpen:!1}:e;function Vu(e){return r().createElement("svg",(0,a.A)({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 480 640"},e),r().createElement("defs",null,r().createElement("clipPath",{id:"b"},r().createElement("path",{style:{fill:"none"},d:"M-642.12 0h600v220h-600z"})),r().createElement("style",null,".g,.h{fill:none}.i{fill:#e3fcf7}.g,.h,.i,.j,.k,.l,.m,.o,.p{stroke:#000000;stroke-linecap:round;stroke-linejoin:round}.j{fill:#ffc010}.k,.o{fill:#ffffff}.l{fill:#ffc010}.m{fill:#00ed64}.h{stroke-dasharray:0 0 2 2}.o{stroke-width:.8px}")),r().createElement("g",{style:{clipPath:"url(#b)"},id:"a"},r().createElement("path",{d:"M-236.03 137.38c0-26.17 20.86-47.41 47.03-47.41h.76c25.79 0 47.03-21.24 47.03-47.03v-.76c0-26.17 21.24-47.03 47.03-47.03h.38c26.17 0 47.03-20.86 47.03-47.03v-.76c0-25.79 21.24-47.03 47.03-47.03h.76c25.79 0 47.03 21.24 47.03 47.03v236.68c0 52.72-42.86 95.2-95.2 95.2h-236.68c-25.79 0-47.03-21.24-47.03-47.03v-.76c0-26.17 21.24-47.03 47.41-47.03 26.17.38 47.41-20.86 47.41-47.03Z",style:{fill:"#00ed64"},id:"c"})),r().createElement("g",{id:"e"},r().createElement("path",{className:"j",d:"M63.21 188.68c-4.1-21.5 1.96-49.29 18.26-74.75s39-42.61 60.24-47.88l8.3-12.97 27.22 17.43c26.63 17.05 26.92 64.12.65 105.15-26.27 41.03-69.14 60.47-95.77 43.42l-27.22-17.43 8.3-12.97Z"}),r().createElement("path",{className:"p",d:"M81.48 113.92c2.32-3.63 4.78-7.08 7.33-10.35l95.43 61.09c-1.91 3.69-4.02 7.37-6.34 10.99-26.27 41.03-69.14 60.47-95.77 43.42l-27.22-17.43 8.3-12.97c-4.1-21.5 1.96-49.29 18.26-74.75Z"}),r().createElement("ellipse",{className:"j",cx:102.47,cy:127.36,rx:88.2,ry:57.25,transform:"rotate(-57.37 102.477 127.362)"}),r().createElement("path",{className:"p",d:"M54.25 96.5c1.57-2.46 3.21-4.84 4.9-7.14-21.7 39.13-19.94 81.69 5.09 97.71 25.03 16.02 64.42-.2 90.87-36.28-1.38 2.5-2.86 4.98-4.43 7.44-26.27 41.03-69.14 60.47-95.77 43.42-26.63-17.05-26.92-64.12-.65-105.15Z"}),r().createElement("path",{className:"l",d:"M64.24 187.07c19.83 12.69 53.02-3.75 74.13-36.72 21.11-32.98 22.15-70 2.32-82.69-19.83-12.69-63.77-20.41-92.72 24.82-28.95 45.22-3.56 81.9 16.27 94.6Z"}),r().createElement("ellipse",{className:"h",cx:102.47,cy:127.36,rx:70.9,ry:42.63,transform:"rotate(-57.37 102.477 127.362)"}),r().createElement("path",{className:"p",d:"m96.05 123.25-18.81 49.11 36.73-37.63 18.81-49.12-36.73 37.64z"}),r().createElement("path",{className:"g",d:"m55.11 147.29 10.03-4.33M138.83 111.16l10.04-4.34M103.24 178.1l-.27-10.93M101.01 86.94l-.27-10.93"}),r().createElement("path",{className:"m",d:"m89.65 119.16-18.81 49.11 36.73-37.64 18.81-49.11-36.73 37.64z"}),r().createElement("ellipse",{className:"p",cx:98.61,cy:124.89,rx:7.2,ry:4.58,transform:"rotate(-57.37 98.615 124.893)"}),r().createElement("path",{className:"h",d:"M43.26 100.66c1.63 27.26 16.2 53.73 41.48 69.91 7.58 4.85 15.59 8.44 23.79 10.82-15.92 10.46-32.47 13.23-44.29 5.67-18.62-11.92-42.14-44.98-20.98-86.41Z"}),r().createElement("path",{className:"g",d:"m122 139.69 8.76 5.96M70.84 106.01l8.77 5.96"}),r().createElement("path",{className:"i",d:"m163.4 460.46-69.58-34.79V214.39l69.58 34.79v211.28z"}),r().createElement("path",{className:"p",d:"m93.82 328.45 47.08 23.54v-16.83l-47.08-23.54v16.83z"}),r().createElement("ellipse",{className:"p",cx:445.67,cy:451.77,rx:12.98,ry:29.42,transform:"rotate(-61.08 445.695 451.781)"}),r().createElement("path",{className:"k",d:"M475.78 458.11c3.47-6.28-5.25-17.73-19.48-25.59-14.22-7.86-28.56-9.14-32.03-2.87l-4.36 7.89c3.47-6.28 17.81-4.99 32.03 2.87 14.22 7.86 22.94 19.31 19.48 25.59l4.36-7.89Z"}),r().createElement("path",{className:"k",d:"M475.78 458.11c3.47-6.28-5.25-17.73-19.48-25.59-14.22-7.86-28.56-9.14-32.03-2.87l-4.36 7.89c3.47-6.28 17.81-4.99 32.03 2.87 14.22 7.86 22.94 19.31 19.48 25.59l4.36-7.89Z"}),r().createElement("path",{className:"k",d:"M462.34 462.5c2.33-4.22-3.53-11.92-13.09-17.2-9.56-5.28-19.2-6.14-21.53-1.93l-3.92 7.09c2.33-4.22 11.97-3.36 21.53 1.93 9.56 5.28 15.42 12.98 13.09 17.2l3.92-7.09Z"}),r().createElement("path",{className:"j",d:"M464.91 476.81c3.41-6.17-5.05-17.37-18.9-25.02-13.84-7.65-27.83-8.85-31.24-2.68l-80.79 133.16 67.38 37.22 63.55-142.69Z"}),r().createElement("path",{className:"l",d:"M375.28 514.28c3.98-7.21 20.31-5.81 36.48 3.13 15.34 8.48 25.02 20.69 22.56 28.07l30.58-68.67c3.41-6.17-5.05-17.37-18.9-25.02-13.84-7.65-27.83-8.85-31.24-2.68l-39.73 65.48.24-.31Z"}),r().createElement("path",{className:"p",d:"M431.2 446.02c-7.9-1.75-14.28-.8-16.43 3.1l-80.79 133.16 10.9 6.02 86.32-142.28Z"}),r().createElement("ellipse",{className:"k",cx:367.67,cy:600.89,rx:16.98,ry:38.49,transform:"rotate(-61.08 367.688 600.904)"}),r().createElement("ellipse",{className:"i",cx:367.67,cy:600.89,rx:11.28,ry:30.89,transform:"rotate(-61.08 367.688 600.904)"}),r().createElement("path",{className:"g",d:"m381.64 596.43-34.56 3.39M388.36 602.19l-34.55 3.39"}),r().createElement("ellipse",{className:"p",cx:387.06,cy:416.67,rx:12.98,ry:29.42,transform:"rotate(-57.08 387.085 416.683)"}),r().createElement("path",{className:"k",d:"M367.26 393.12c3.9-6.02 18.11-3.74 31.75 5.09s21.54 20.87 17.64 26.89l-4.9 7.56c3.9-6.02-4-18.06-17.64-26.89-13.64-8.83-27.86-11.11-31.75-5.09l4.9-7.56Z"}),r().createElement("path",{className:"k",d:"M367.26 393.12c3.9-6.02 18.11-3.74 31.75 5.09s21.54 20.87 17.64 26.89l-4.9 7.56c3.9-6.02-4-18.06-17.64-26.89-13.64-8.83-27.86-11.11-31.75-5.09l4.9-7.56Z"}),r().createElement("path",{className:"k",d:"M369.73 407.04c2.62-4.05 12.18-2.51 21.35 3.42 9.17 5.94 14.48 14.03 11.86 18.07l-4.4 6.8c2.62-4.05-2.69-12.14-11.86-18.07-9.17-5.94-18.73-7.47-21.35-3.42l4.4-6.8Z"}),r().createElement("path",{className:"j",d:"M355.91 411.53c3.83-5.92 17.7-3.74 30.98 4.85 13.28 8.6 20.94 20.36 17.11 26.28l-79.26 134.08-64.62-41.83 95.8-123.38Z"}),r().createElement("path",{className:"g",d:"M365.18 508.23c4.47-6.91-4.47-20.65-19.98-30.69-15.51-10.04-31.7-12.57-36.18-5.66"}),r().createElement("path",{className:"l",d:"M386.88 416.38c-13.28-8.59-27.15-10.77-30.98-4.85l-46.1 59.37c5.35-5.65 20.68-2.88 35.39 6.64 15.51 10.04 24.45 23.78 19.98 30.69l.02.04 38.79-65.61c3.83-5.92-3.83-17.68-17.11-26.28Z"}),r().createElement("path",{className:"p",d:"M373.04 409.76c-7.99-2.48-14.66-2.05-17.13 1.77l-95.8 123.38 10.49 6.79 102.44-131.93Z"}),r().createElement("ellipse",{className:"k",cx:292.42,cy:555.82,rx:16.98,ry:38.49,transform:"rotate(-57.08 292.438 555.839)"}),r().createElement("ellipse",{className:"i",cx:292.42,cy:555.82,rx:11.28,ry:30.89,transform:"rotate(-57.08 292.438 555.839)"}),r().createElement("path",{className:"g",d:"m305.5 551.38-32.39 3.18M311.83 557.18l-32.37 3.18"}),r().createElement("path",{className:"p",d:"m412.4 500.82-1.99 3.32c-1.92 3.2-5.43 2-7.33.1-.88-.88-1.62-1.88-2.29-2.91-3.34-5.16-8.86-10.4-15.88-14.6h0c-7.02-4.2-14.24-6.59-20.37-7.11-1.23-.1-2.46-.28-3.65-.64-2.57-.79-5.29-3.31-3.37-6.52l1.99-3.32 32.96 9.09 19.93 22.59"}),r().createElement("path",{className:"m",d:"M394.21 471.2h0c-14.61-8.75-30.14-9.67-34.7-2.06-1.92 3.2.8 5.73 3.37 6.52 1.19.36 2.42.54 3.65.64 6.13.51 13.35 2.9 20.37 7.11h0c7.02 4.2 12.54 9.45 15.88 14.6.67 1.04 1.41 2.03 2.29 2.91 1.91 1.9 5.42 3.1 7.33-.1 4.56-7.61-3.59-20.87-18.19-29.62Z"}),r().createElement("path",{className:"g",d:"m380.51 465.29-7.24 12.09"}),r().createElement("path",{className:"p",d:"M379.94 391.54c.28-.43.63-.81 1.01-1.15-6.43-1.33-11.58-.52-13.69 2.74l-4.9 7.56c2.08-3.22 7.13-4.04 13.46-2.78l4.12-6.36ZM437.52 426.6c.12-.21.25-.42.39-.61-6.6-.93-11.75.24-13.64 3.67l-4.36 7.89c1.89-3.42 7.02-4.59 13.59-3.68l4.01-7.26ZM93.82 293.89l25.1 12.55v-16.83l-25.1-12.54v16.82z"}),r().createElement("path",{className:"m",d:"M149.16 349.08 45.92 297.46v-16.83l103.24 51.62v16.83zM63.47 254.82v16.83l69.58 34.79v-16.83l-69.58-34.79z"}),r().createElement("path",{className:"k",d:"m163.4 460.46 69.59-34.79V214.39l-69.59 34.79v211.28z"}),r().createElement("path",{className:"i",d:"m302.57 460.46-69.58-34.79V214.39l69.58 34.79v211.28z"}),r().createElement("path",{className:"k",d:"m302.57 460.46 69.59-34.79V214.39l-69.59 34.79v211.28z"}),r().createElement("path",{className:"m",d:"M18.61 232.65v16.83l33.07 16.53v-16.83l-33.07-16.53z"}),r().createElement("path",{className:"h",d:"m133.03 407.98 30.4 15.2L189 410.4V291.75l44.01-22 12.44 6.22h0v58.6l35.03 17.52v-31.22l-18.5-9.25v72.23l40.62 20.3 28.07-14.04v-88.48"}),r().createElement("path",{className:"m",d:"m302.57 270.9-69.58-34.79v-21.94l69.58 34.79v21.94z"}),r().createElement("path",{className:"m",d:"m302.57 270.9 69.59-34.79v-21.94l-69.59 34.79v21.94zM163.4 270.9l-69.58-34.79v-21.94l69.58 34.79v21.94zM163.4 270.9l69.59-34.79v-21.94l-69.59 34.79v21.94z"}),r().createElement("path",{className:"g",d:"m323.14 295.62 14.23-21.89M323.14 280.75l14.23 7.84"}),r().createElement("path",{className:"g",transform:"rotate(-45 276.745 195.298)",d:"M269.28 187.83h14.92v14.92h-14.92z"}),r().createElement("ellipse",{className:"o",cx:107.56,cy:231.94,rx:3.89,ry:6.18,transform:"rotate(-38.44 107.547 231.93)"}),r().createElement("ellipse",{className:"o",cx:121.15,cy:238.27,rx:3.89,ry:6.18,transform:"rotate(-38.44 121.136 238.26)"}),r().createElement("ellipse",{className:"o",cx:134.74,cy:244.61,rx:3.89,ry:6.18,transform:"rotate(-38.44 134.72 244.604)"}),r().createElement("path",{className:"m",d:"M135.56 385.08c0 5.52-10 20.8-10 20.8s-10-15.28-10-20.8 4.48-10 10-10 10 4.48 10 10Z"}),r().createElement("circle",{className:"k",cx:125.55,cy:384.87,r:5.61}),r().createElement("path",{className:"p",d:"M132.58 393.7s16.19.32 5.35 5.99l-12.38 6.2"}),r().createElement("path",{className:"k",d:"m213.82 542.78 70.95-91.39M188.97 574.77l17.09-22M210.17 511.09l34.79-44.8"}),r().createElement("circle",{className:"k",cx:91.59,cy:24.58,r:9.28}),r().createElement("path",{d:"M85.95 31.95s11.7-3.9 13.37-12.51c2 2.69 2.55 8.58-1.62 12.11-4.27 3.62-8.62 2.14-11.75.4Z",style:{strokeWidth:0,stroke:"#000000",strokeLinecap:"round",strokeLinejoin:"round"}}),r().createElement("path",{className:"k",d:"m195.9 529.94 1.28-10.12 1.27-10.12 8.13 6.16 8.12 6.17-9.4 3.95-9.4 3.96z"}),r().createElement("path",{d:"m202.82 520.81 11.88 1.22-16.25-12.33 4.37 11.11z"}),r().createElement("path",{className:"k",d:"m202.82 520.81-6.92 9.13M425.39 371.16l-18.96 29.3M430.45 341.09l-33.51 51.75"}),r().createElement("path",{className:"g",d:"M6.39 111.97c8.12-34.74 32.38-63.27 64.45-77.24M3.46 137.55c0-5.75.43-11.4 1.27-16.92"}),r().createElement("path",{className:"p",d:"m269.55 232.45-3.36 3.35 10.55 10.56 6.87-6.88-14.06-7.03zM158.95 458.23 98.26 440.7v-12.81l60.69 30.34zM167.86 458.23l65.13-20.69 62.47 19.36-62.47-31.23-65.13 32.56zM327.06 448.21l-4.04 5.4 44.69-12.91v-12.81l-40.65 20.32z"})))}function Hu(e){return r().createElement("svg",(0,a.A)({className:"darkreader-ignore-child-inline-style",width:"298",height:"198",viewBox:"0 0 298 198",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e),r().createElement("path",{d:"M242.877 47.8056C238.507 32.8626 224.691 21.946 208.321 21.946C195.037 21.946 183.437 29.1352 177.197 39.8325C176.159 39.7129 175.108 39.6464 174.038 39.6464C159.044 39.6464 146.892 51.7856 146.892 66.7618C146.892 81.7381 159.044 93.8772 174.038 93.8772H242.737C255.469 93.8772 265.792 83.5652 265.792 70.8481C265.792 58.1309 255.549 47.8987 242.877 47.8189V47.8056Z",fill:"black"}),r().createElement("path",{d:"M242.877 39.1482C238.507 24.2052 224.691 13.2886 208.321 13.2886C195.037 13.2886 183.437 20.4777 177.197 31.175C176.159 31.0554 175.108 30.989 174.038 30.989C159.044 30.989 146.892 43.1281 146.892 58.1043C146.892 73.0806 159.044 85.2197 174.038 85.2197H242.737C255.469 85.2197 265.792 74.9078 265.792 62.1906C265.792 49.4734 255.549 39.2412 242.877 39.1615V39.1482Z",fill:"white",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M139.229 89.2661H47.6801C39.1351 89.2661 32.208 96.1854 32.208 104.721V104.727C32.208 113.263 39.1351 120.182 47.6801 120.182H139.229C147.774 120.182 154.701 113.263 154.701 104.727V104.721C154.701 96.1854 147.774 89.2661 139.229 89.2661Z",fill:"white",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M96.9497 103.06H47.0812C46.1591 103.06 45.4116 103.806 45.4116 104.727C45.4116 105.648 46.1591 106.395 47.0812 106.395H96.9497C97.8717 106.395 98.6193 105.648 98.6193 104.727C98.6193 103.806 97.8717 103.06 96.9497 103.06Z",fill:"white",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M109.023 123.664C121.947 142.806 147.962 147.856 167.133 134.946C186.296 122.036 191.352 96.05 178.427 76.9011C165.503 57.7589 139.488 52.7093 120.317 65.6191C101.154 78.529 96.0983 104.515 109.023 123.664Z",fill:"white"}),r().createElement("path",{d:"M174.463 104.721C174.463 93.4785 165.25 84.2761 153.995 84.2761H105.058C99.8765 96.794 100.874 111.591 109.029 123.664C109.375 124.175 109.734 124.68 110.1 125.172H154.002C165.257 125.172 174.47 115.969 174.47 104.727L174.463 104.721Z",fill:"#FFC010",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M194.06 184.087C194.06 184.087 195.596 186.293 201.157 182.432C206.718 178.565 205.175 176.36 205.175 176.36L180.45 141.151C180.45 141.151 178.401 139.497 173.446 142.939C168.49 146.387 169.335 148.879 169.335 148.879L194.06 184.087Z",fill:"white",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M205.175 176.36L180.45 141.151C180.45 141.151 178.401 139.497 173.446 142.939C168.969 146.055 169.228 148.387 169.315 148.812C174.25 145.39 176.293 147.045 176.293 147.045L201.017 182.253C201.017 182.253 201.064 182.326 201.117 182.459C201.13 182.452 201.144 182.439 201.157 182.432C206.718 178.565 205.175 176.36 205.175 176.36Z",fill:"black"}),r().createElement("path",{d:"M169.82 150.992C169.82 150.992 172.168 152.606 177.516 148.998C182.871 145.391 182.252 142.613 182.252 142.613L175.62 132.793C175.62 132.793 174.224 134.507 169.76 137.517C165.297 140.527 163.182 141.171 163.182 141.171L169.813 150.992H169.82Z",fill:"white",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M117.97 66.1041C139.375 51.6793 168.437 57.327 182.878 78.7083C197.319 100.09 191.665 129.119 170.259 143.543C148.854 157.968 119.792 152.32 105.351 130.939C90.9101 109.558 96.5641 80.5289 117.97 66.1041ZM109.415 128.202C122.34 147.344 148.355 152.394 167.525 139.484C186.689 126.574 191.745 100.588 178.82 81.4391C165.896 62.2969 139.881 57.2473 120.71 70.1571C101.546 83.067 96.491 109.053 109.415 128.202Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M117.584 61.566C138.989 47.1413 168.051 52.7889 182.492 74.1702C196.933 95.5516 191.279 124.581 169.874 139.005C148.468 153.43 119.406 147.782 104.965 126.401C90.5244 105.02 96.1784 75.9908 117.584 61.566ZM109.03 123.664C121.954 142.806 147.969 147.855 167.14 134.946C186.303 122.036 191.359 96.0499 178.434 76.901C165.51 57.7588 139.495 52.7092 120.324 65.619C101.161 78.5289 96.1052 104.515 109.03 123.664Z",fill:"#00F04C",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M117.584 61.566C138.989 47.1413 168.051 52.7889 182.492 74.1702C196.933 95.5516 191.279 124.581 169.874 139.005C148.468 153.43 119.406 147.782 104.965 126.401C90.5244 105.02 96.1784 75.9908 117.584 61.566ZM109.03 123.664C121.954 142.806 147.969 147.855 167.14 134.946C186.303 122.036 191.359 96.0499 178.434 76.901C165.51 57.7588 139.495 52.7092 120.324 65.619C101.161 78.5289 96.1052 104.515 109.03 123.664Z",fill:"#00F04C",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M172.361 137.444L179.332 147.736C179.332 147.736 182.698 144.892 182.306 142.56L176.472 133.949L172.361 137.437V137.444Z",fill:"black"}),r().createElement("path",{d:"M154.787 102.521H110.36C109.14 102.521 108.151 103.509 108.151 104.727C108.151 105.946 109.14 106.933 110.36 106.933H154.787C156.007 106.933 156.995 105.946 156.995 104.727C156.995 103.509 156.007 102.521 154.787 102.521Z",fill:"white",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}))}const Ku=(0,d.AHW)({padding:`0 ${d.YKD[900]}px`}),ju=(0,d.AHW)({fontSize:"inherit"}),Bu=(0,Ee.Ng)((e=>({isOpen:e.isOpen})),{onClose:()=>(e,t,{preferences:n})=>{n.savePreferences({showedNetworkOptIn:!0}),e({type:Ru})},onOpenSettingsClick:()=>(e,t,{preferences:n,globalAppRegistry:a})=>{n.savePreferences({showedNetworkOptIn:!0}),e({type:Uu}),a.emit("open-compass-settings","privacy")}})((({isOpen:e,onClose:t,onOpenSettingsClick:n})=>{const a=(0,R.Fg)("networkTraffic"),o=(0,d.D27)();return r().createElement(d._U_,{"data-testid":"welcome-modal",open:e,onClose:t,buttonProps:{onClick:t,children:"Start"},title:"Welcome to Compass",showBlob:!0,blobPosition:"top right",disclaimer:a?r().createElement("div",{className:Ku},"To help improve our products, anonymous usage data is collected and sent to MongoDB in accordance with MongoDB's privacy policy.",r().createElement("br",null),"Manage this behaviour on the Compass"," ",r().createElement(d.N_E,{"data-testid":"open-settings-link",hideExternalIcon:!0,className:ju,onClick:n},"Settings")," ","page."):void 0,graphic:r().createElement(Vu,{width:156,height:209}),linkText:"",darkMode:o},r().createElement(d.nBu,null,"Build aggregation pipelines, optimize queries, analyze schemas, and more. All with the GUI built by - and for - MongoDB."))})),zu=.35,Yu=1.82875*Math.PI,qu=Yu+Math.PI,Gu=29.7,Zu="#FFE212",Ju="#8a7b0bff";function Qu({offsetX:e,offsetY:t,rotation:n,sparkOffsetDirection:a,sparkOffsetAmount:o,scale:i}){const s=e+Math.cos(a)*o,l=t+Math.sin(a)*o;return r().createElement("g",{transform:`translate(${s}, ${l}) rotate(${n})`},r().createElement("g",{transform:`scale(${i})`},r().createElement("path",{d:"M-8 -10 L4 2 L-2 2 L8 12 L-6 4 L0 4 Z",fill:Zu,stroke:Ju,strokeWidth:"0.8"}),r().createElement("path",{d:"M6 -16 L14 -6 L10 -6 L18 0 L8 -4 L12 -4 Z",fill:Zu,stroke:Ju,strokeWidth:"0.5",opacity:"0.8"}),r().createElement("path",{d:"M-18 6 L-8 14 L-12 14 L-4 20 L-14 16 L-10 16 Z",fill:Zu,stroke:Ju,strokeWidth:"0.5",opacity:"0.7"})))}function Xu(){const e=function(){const e=(0,s.w2)((e=>"connected"===e.status));return(0,o.useMemo)((()=>e.length>0),[e])}(),t=(0,o.useRef)(null),[n,a]=(0,o.useState)(e?1:0);(0,o.useLayoutEffect)((()=>{const n=()=>{t.current&&cancelAnimationFrame(t.current)};if(e){n();const e=Date.now(),o=()=>{const n=Date.now()-e,r=Math.min(n/500,1),i=(s=r)*s*(5.7*s-4.7);var s;a((e=>e>=.99999?e:i)),r<.99999&&(t.current=requestAnimationFrame(o))};t.current=requestAnimationFrame(o)}else if(!e){n();const e=Date.now(),o=()=>{const n=Date.now()-e,r=Math.min(n/200,1),i=1-r;r>1e-6&&(t.current=requestAnimationFrame(o)),a((e=>e<=1e-6?e:i))};t.current=requestAnimationFrame(o)}return n}),[e]);const i=n*Gu*Math.cos(Yu),l=n*Gu*Math.sin(Yu),c=n*Gu*Math.cos(qu),d=n*Gu*Math.sin(qu),u=Math.min(Math.max((n-.65)/zu,0),1),m=e&&n>.65?5*u*Math.pow(1-u,4)*5:0,p=1.5*u,h=u*u*44;return r().createElement("svg",{className:"darkreader-ignore-child-inline-style","data-testid":"connection-plug-svg",width:"298",height:"198",viewBox:"0 0 448 298",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r().createElement("path",{d:"M313.02 232.35C313.02 209.35 331.69 190.67 354.7 190.67C377.71 190.67 396.38 172 396.38 148.99V65.6502C396.38 42.6502 377.71 23.9702 354.7 23.9702C331.69 23.9702 313.02 42.6402 313.02 65.6502C313.02 88.6602 294.35 107.33 271.34 107.33H187.99C164.99 107.33 146.31 126 146.31 149.01C146.31 172.02 127.64 190.69 104.63 190.69C81.6202 190.69 62.9502 209.36 62.9502 232.37C62.9502 255.38 81.6202 274.05 104.63 274.05H271.33C294.33 274.05 313.01 255.38 313.01 232.37L313.02 232.35Z",fill:"#E3FCF7"}),r().createElement("path",{d:"M89.8202 186.92C98.8611 186.92 106.19 179.591 106.19 170.55C106.19 161.509 98.8611 154.18 89.8202 154.18C80.7793 154.18 73.4502 161.509 73.4502 170.55C73.4502 179.591 80.7793 186.92 89.8202 186.92Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M361.32 171.49C370.361 171.49 377.69 164.161 377.69 155.12C377.69 146.079 370.361 138.75 361.32 138.75C352.279 138.75 344.95 146.079 344.95 155.12C344.95 164.161 352.279 171.49 361.32 171.49Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M360.95 164.37C369.991 164.37 377.32 157.041 377.32 148C377.32 138.959 369.991 131.63 360.95 131.63C351.909 131.63 344.58 138.959 344.58 148C344.58 157.041 351.909 164.37 360.95 164.37Z",fill:"#FFE212",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M360.95 155.66C365.181 155.66 368.61 152.23 368.61 148C368.61 143.769 365.181 140.34 360.95 140.34C356.72 140.34 353.29 143.769 353.29 148C353.29 152.23 356.72 155.66 360.95 155.66Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M89.4403 179.8C98.4812 179.8 105.81 172.47 105.81 163.43C105.81 154.389 98.4812 147.06 89.4403 147.06C80.3994 147.06 73.0703 154.389 73.0703 163.43C73.0703 172.47 80.3994 179.8 89.4403 179.8Z",fill:"#FFE212",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M89.4403 171.09C93.6708 171.09 97.1003 167.661 97.1003 163.43C97.1003 159.2 93.6708 155.77 89.4403 155.77C85.2098 155.77 81.7803 159.2 81.7803 163.43C81.7803 167.661 85.2098 171.09 89.4403 171.09Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:`M363.88 150.97L411.3 123.59C427.27 114.37 432.74 93.9598 423.52 77.9898L420.41 72.6098C411.19 56.6398 390.78 51.1698 374.81 60.3898L${256.48+c} ${128.71+d}L${260.83+c} ${136.24+d}L379.16 67.9198C390.97 61.0998 406.07 65.1498 412.88 76.9598L415.99 82.3398C422.81 94.1498 418.76 109.25 406.95 116.06L359.53 143.44C358.19 144.22 357.36 145.65 357.36 147.2C357.36 150.55 360.98 152.64 363.88 150.96V150.97Z`,fill:"#FFE212",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("g",{transform:`translate(${i}, ${l})`},r().createElement("path",{d:"M211.184 145.864L209.204 142.434L198.76 148.464L200.74 151.894L211.184 145.864Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M225.221 170.178L223.241 166.748L212.797 172.778L214.777 176.208L225.221 170.178Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"})),r().createElement("g",{transform:`translate(${c}, ${d})`},r().createElement("path",{d:"M262.886 173.028C272.299 167.594 271.64 148.831 261.414 131.119C251.189 113.408 235.269 103.456 225.856 108.89C216.443 114.325 217.102 133.088 227.328 150.799C237.553 168.511 253.473 178.463 262.886 173.028Z",fill:"white",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M299.33 149.41C298.85 149.69 298.36 149.93 297.86 150.16L274.69 163.54L266.63 127.66L239.67 102.88L262.84 89.4996C263.29 89.1796 263.75 88.8796 264.23 88.5996C274.44 82.6996 288.67 87.5596 298.67 99.4296L301.08 98.0396C305.15 95.6896 310.35 97.0896 312.7 101.15C315.05 105.22 313.65 110.42 309.59 112.77L307.18 114.16C312.46 128.75 309.55 143.5 299.34 149.4L299.33 149.41Z",fill:"#00ED64",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M278.861 120.6C271.071 107.11 259.991 98.0395 250.731 96.4995L238.471 103.58L240.561 105.73C248.811 106.72 259.131 115.15 266.421 127.79C273.071 139.3 275.431 151.24 273.331 159.05L274.691 163.55L285.571 157.27C289.011 148.5 286.721 134.23 278.861 120.61V120.6Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M263.23 173.79C253.3 179.52 236.69 169.34 226.13 151.05C215.57 132.76 215.06 113.28 224.98 107.55L234.88 101.84C244.81 96.1098 261.42 106.29 271.98 124.58C282.54 142.87 283.05 162.35 273.13 168.08L263.23 173.79ZM262.15 171.92C271.1 166.75 270.28 148.57 260.31 131.3C250.34 114.04 235.01 104.23 226.05 109.4C217.1 114.57 217.92 132.75 227.89 150.02C237.86 167.28 253.19 177.09 262.15 171.92Z",fill:"#00ED64",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M301.531 97.7798C306.901 99.9198 310.831 107.39 310.041 112.51L306.941 114.3C305.731 110.41 301.851 103.66 298.431 99.5698L301.531 97.7798Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M309.5 97.8897L312.49 96.1597C312.49 96.1597 314.2 96.6297 315.74 99.2997C317.28 101.97 316.96 103.61 316.96 103.61L313.84 105.41C313.84 105.41 314.12 103.8 312.62 101.2C311.12 98.5997 309.49 97.8797 309.49 97.8797L309.5 97.8897Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M250.171 131.84L254.791 139.84C254.791 139.84 249.941 141.99 247.911 138.48C245.881 134.97 250.171 131.84 250.171 131.84Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M240.074 129.072L238.094 125.642L227.649 131.672L229.629 135.102L240.074 129.072Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M254.121 153.386L252.141 149.956L241.696 155.986L243.676 159.416L254.121 153.386Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M283.78 144.93L291.21 140.64C291.21 140.64 315.45 127.55 303.35 106.6C303.35 106.6 310.64 116.67 309.55 130.97C309.06 137.41 306.74 142.42 303.94 145.62C300.53 149.52 296.15 151.14 290.25 154.55C279.5 160.75 284.61 157.39 284.61 157.39L283.77 144.93H283.78Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"})),r().createElement("path",{d:`M92.62 163.48C92.62 165 91.8 166.4 90.48 167.17L41.03 195.85C29.36 202.59 25.27 217.47 31.78 229.21C38.48 241.29 54.24 245.24 66.2 238.33L${122.54+i} ${205.8+l}L${126.89+i} ${213.33+l}L70.64 245.81C54.47 255.15 33.24 249.75 24.18 233.42C15.38 217.55 20.91 197.43 36.68 188.32L86.18 159.74C89.05 158.08 92.64 160.17 92.62 163.48Z`,fill:"#FFE212",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("g",{transform:`translate(${i}, ${l})`},r().createElement("path",{d:"M210.446 202.625C219.859 197.19 219.2 178.427 208.975 160.716C198.749 143.004 182.829 133.052 173.416 138.487C164.004 143.921 164.662 162.684 174.888 180.396C185.114 198.107 201.034 208.059 210.446 202.625Z",fill:"white",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M210.57 203.02C220.19 197.47 219.69 178.6 209.46 160.88C199.23 143.16 183.14 133.29 173.52 138.85L163.93 144.39C154.31 149.94 154.81 168.81 165.04 186.53C175.27 204.25 191.36 214.12 200.98 208.56L210.57 203.02Z",fill:"#00ED64",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M137.64 212.07L135.23 213.46C131.16 215.81 125.96 214.41 123.61 210.35C121.26 206.28 122.66 201.08 126.72 198.73L129.13 197.34C123.85 182.75 126.76 168 136.97 162.1C137.45 161.82 137.94 161.58 138.44 161.35L164.93 146.12C173.6 141.11 188.46 150.61 198.12 167.33C207.77 184.05 208.57 201.67 199.9 206.68L173.47 222.01C173.02 222.33 172.56 222.63 172.08 222.91C161.87 228.81 147.64 223.95 137.64 212.08V212.07Z",fill:"#00ED64",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M119.37 207.92L122.47 206.13C122.47 206.13 124.21 206.56 125.74 209.21C127.27 211.85 126.9 213.5 126.9 213.5L123.67 215.37C123.67 215.37 123.99 213.75 122.51 211.18C121.03 208.61 119.37 207.92 119.37 207.92Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M205.87 190.36L169.04 211.62C169.04 211.62 149.96 223.37 137.35 210.31C135.98 208.89 137.22 211.45 136.03 209.4C136.03 209.4 135.13 208.79 137.64 212.07C140.49 215.8 144.62 219.37 151.5 222.68C164.43 228.89 170.58 223.9 181.33 217.69C192.08 211.49 200.94 206.16 200.94 206.16C200.94 206.16 206.76 202.47 205.88 190.36H205.87Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M216.87 180.8L205.54 187.34C205.54 187.34 206.54 194.21 204.85 200.22C202.57 204.98 202.8 204.94 193.94 210.04C193.7 210.11 195.89 210.54 198.89 209.49C200.13 209.05 201.64 208.11 203.19 207.22C208.46 204.18 211.98 202.03 211.98 202.03C211.98 202.03 216.13 198.49 217.12 192.13C218.07 186.05 216.87 180.8 216.87 180.8Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M137.64 212.07L133.75 214.14C135.73 209.94 132.89 201.84 126.73 198.73L129.14 197.34C129.14 197.34 133.36 196.51 136.36 201.91C139.62 207.78 137.64 212.07 137.64 212.07Z",fill:"black"}),r().createElement("path",{d:"M137.64 212.07L133.75 214.14C135.73 209.94 132.89 201.84 126.73 198.73L129.14 197.34C129.14 197.34 133.36 196.51 136.36 201.91C139.62 207.78 137.64 212.07 137.64 212.07",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"})),r().createElement("g",{opacity:m},r().createElement(Qu,{offsetX:200,offsetY:104,sparkOffsetDirection:Yu-Math.PI/2,sparkOffsetAmount:h,scale:p,rotation:0}),r().createElement(Qu,{offsetX:250,offsetY:185,sparkOffsetDirection:Yu+Math.PI/2,sparkOffsetAmount:h,scale:p,rotation:180})))}function em(){return(0,s.w2)((e=>"connecting"===e.status||"connected"===e.status||"failed"===e.status))}const tm=(0,d.AHW)({marginTop:d.YKD[400],listStyle:"none",padding:0,minHeight:3*d.YKD[200]+72+"px"}),nm=(0,d.i7C)({"0%":{opacity:0,transform:`translateY(-${d.YKD[100]}px)`},"100%":{opacity:1,transform:"translateY(0)"}}),am=(0,d.AHW)({marginBottom:d.YKD[200],display:"flex",alignItems:"center",gap:d.YKD[200],animation:`${nm} 300ms ease-out`});function om({connectionId:e}){const t=(0,s.Gv)(e),n=(0,s.EE)(e);if(!t||!n)return null;const a=t.title,o=n.status,{icon:i,statusText:l}="connected"===o?{icon:r().createElement(d.Int,{glyph:"Checkmark",size:"small",color:d.MFm.green.dark2}),statusText:`Connected to ${a}`}:"failed"===o?{icon:r().createElement(d.Int,{glyph:"X",size:"small",color:d.MFm.red.base}),statusText:`Failed to connect to ${a}`}:{icon:r().createElement(d.Q0K,{size:16}),statusText:`Connecting to ${a}`};return r().createElement("li",{className:am},i,r().createElement(d.VYo,null,l))}function rm(){const e=em();return 0===e.length?null:r().createElement("ul",{className:tm},e.map((e=>r().createElement(om,{key:e,connectionId:e}))))}(0,d.AHW)({margin:0,padding:d.YKD[600],paddingBottom:0,maxWidth:"450px",borderRadius:d.YKD[200]}),(0,d.AHW)({backgroundColor:d.MFm.green.light3,border:`1px solid ${d.MFm.green.light2}`,paddingBottom:d.YKD[600]}),(0,d.AHW)({backgroundColor:d.MFm.green.dark3,borderColor:d.MFm.green.dark2}),(0,d.AHW)({fontSize:"14px"}),(0,d.AHW)({marginTop:d.YKD[200]}),(0,d.AHW)({marginTop:d.YKD[200]}),(0,d.AHW)({fontWeight:"bold"}),(0,d.AHW)({background:d.MFm.white,"&:hover":{background:d.MFm.white},"&:focus":{background:d.MFm.white}}),(0,d.AHW)({display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto",gap:d.YKD[200]}),(0,d.AHW)({margin:`${d.YKD[400]}px 0`});const im=(0,d.AHW)({display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto",gap:d.YKD[200]}),sm=(0,d.AHW)({display:"flex",flexDirection:"column",gap:d.YKD[400],alignItems:"flex-start"}),lm="Welcome";const cm=(0,i.nk)({name:lm,component:({children:e})=>r().createElement(r().Fragment,null,e),activate:()=>({store:{},deactivate:()=>{}})}),dm={name:lm,provider:cm,content:function(){const e=(0,s.w2)().length,t=em();return r().createElement("div",{className:im},t.length?r().createElement(Xu,null):r().createElement(Hu,null),r().createElement("div",null,r().createElement(d.H3,null,"Welcome! Explore your data"),!t.length&&r().createElement("div",{className:sm},r().createElement(d.nBu,null,0===e?"To get started, create your first MongoDB Cluster.":"To get started, connect to an existing cluster."),0===e&&r().createElement(r().Fragment,null,r().createElement(d.$nd,{as:d.N_E,"data-testid":"add-new-atlas-cluster-button",variant:d.AkO.Primary,href:"#/clusters/starterTemplates"},"Create a Cluster"),r().createElement(d.nBu,null,"Need more help?"," ",r().createElement(d.N_E,{href:"https://www.mongodb.com/docs/atlas/create-connect-deployments/"},"View documentation")))),t.length>0?r().createElement(rm,null):null))},header:function(e){return r().createElement(d.N81,(0,a.A)({},e,{type:lm,title:lm,iconGlyph:"Logo"}))}},um=((0,i.nk)({name:"WelcomeModal",component:Bu,activate(e,t,{cleanup:n}){const{showedNetworkOptIn:a}=t.preferences.getPreferences();return{store:(0,F.y$)($u,{isOpen:!a},(0,F.Tw)(P.A.withExtraArgument(t))),deactivate:n}}},{preferences:R.fx}),"compass-saved-aggregations-queries/deleteItemConfirm"),mm="compass-saved-aggregations-queries/itemsFetched",pm={loading:!0,items:[]},hm=()=>async(e,t,{pipelineStorage:n,queryStorage:a})=>{const o=await Promise.allSettled([n?.loadAll().then((e=>e.map(gm)))??Promise.resolve([]),a?.loadAll().then((e=>e.map(fm)))??Promise.resolve([])]);e({type:mm,payload:o.map((e=>"fulfilled"===e.status?e.value:[])).flat()})},gm=e=>{const{database:t,collection:n}=(0,m.Ay)(e.namespace);return{id:e.id,lastModified:e.lastModified?e.lastModified.getTime():0,name:e.name,database:t,collection:n,type:"aggregation",aggregation:e}},fm=e=>{const{database:t,collection:n}=(0,m.Ay)(e._ns);return{id:e._id,name:e._name,lastModified:(e._dateModified??e._dateSaved).getTime(),database:t,collection:n,type:e.update?"updatemany":"query",query:e}},ym=(e=pm,t)=>{switch(t.type){case mm:return{...e,items:t.payload,loading:!1};case um:{const n=e.items.filter((e=>e.id!==t.id));return{...e,items:n}}default:return e}};function bm(e,t){return e.type===t}const vm={openedModal:null,selectedItem:null,connections:[],selectedConnection:null,databases:[],selectedDatabase:null,databasesStatus:"initial",collections:[],selectedCollection:null,collectionsStatus:"initial",updateItemNamespace:!1},Cm="compass-saved-aggregations-queries/openModal",Em="compass-saved-aggregations-queries/closeModal",Sm="compass-saved-aggregations-queries/connectionSelected",km="compass-saved-aggregations-queries/connectionSelectedForPreSelectedNamespace",wm="compass-saved-aggregations-queries/DatabaseSelected",xm="compass-saved-aggregations-queries/loadDatabases",Am="compass-saved-aggregations-queries/loadDatabasesSuccess",Dm="compass-saved-aggregations-queries/loadDatabasesError",Im="compass-saved-aggregations-queries/collectionSelected",Mm="compass-saved-aggregations-queries/loadCollections",Tm="compass-saved-aggregations-queries/loadCollectionsSuccess",Lm="compass-saved-aggregations-queries/loadCollectionsError",Om="compass-saved-aggregations-queries/updateNamespaceChecked",Nm=e=>({id:e.id,name:(0,Bt.T8)(e),color:e.favorite?.color}),_m=e=>async(t,n,{connections:a,instancesManager:o})=>{t({type:xm});try{const n=o.getMongoDBInstanceForConnection(e),r=a.getDataServiceForConnection(e);await n.fetchDatabases({dataService:r}),t({type:Am,databases:n.databases.map((e=>e.name))})}catch{t({type:Dm})}},Fm=()=>({type:Cm,modal:"no-active-connections-modal",connections:[]}),Pm=()=>({type:Em}),Wm=(e,t,n,a)=>(o,r,{track:i,workspaces:s,connections:l})=>{const c=l.getConnectionById(t)?.info;i("aggregation"===e.type?"Aggregation Opened":"Query History Favorite Used",{id:e.id,screen:"my_queries"},c),s.openCollectionWorkspace(t,`${n}.${a}`,{initialAggregation:"aggregation"===e.type?e.aggregation:void 0,initialQuery:"query"===e.type||"updatemany"===e.type?e.query:void 0,newTab:!0})},Rm=()=>async(e,t,{queryStorage:n,pipelineStorage:a})=>{const{openItem:{selectedItem:o,selectedConnection:r,selectedDatabase:i,selectedCollection:s,updateItemNamespace:l}}=t();if(o&&r&&i&&s){if(l){const e=o.id,t=`${i}.${s}`;switch(o.type){case"aggregation":await(a?.updateAttributes(e,{namespace:t}));break;case"query":case"updatemany":await(n?.updateAttributes(e,{_ns:t}))}}e({type:Em}),e(Wm(o,r,i,s))}},Um=(e=vm,t)=>bm(t,Cm)?{...e,openedModal:t.modal,connections:t.connections,selectedItem:t.selectedItem??e.selectedItem,selectedConnection:t.selectedConnection??e.selectedConnection,selectedDatabase:t.selectedDatabase??e.selectedDatabase,selectedCollection:t.selectedCollection??e.selectedCollection}:bm(t,Em)?{...vm}:bm(t,Sm)?{...e,selectedConnection:t.selectedConnection,selectedDatabase:null,databases:[],databasesStatus:"initial",collections:[],collectionsStatus:"initial",selectedCollection:null}:bm(t,km)?{...e,selectedConnection:t.selectedConnection}:bm(t,wm)?{...e,selectedDatabase:t.database,collections:[],collectionsStatus:"initial",selectedCollection:null}:bm(t,xm)?{...e,databasesStatus:"fetching"}:bm(t,Dm)?{...e,databasesStatus:"error"}:bm(t,Am)?{...e,databases:t.databases,databasesStatus:"ready"}:bm(t,Im)?{...e,selectedCollection:t.collection}:bm(t,Mm)?{...e,collectionsStatus:"fetching"}:bm(t,Lm)?{...e,collectionsStatus:"error"}:bm(t,Tm)?{...e,collections:t.collections,collectionsStatus:"ready"}:bm(t,Om)?{...e,updateItemNamespace:t.updateItemNamespace}:e;function $m(e,t){return e.type===t}const Vm={id:void 0},Hm="compass-saved-aggregations-queries/edit-item/editItemClicked",Km="compass-saved-aggregations-queries/edit-item/editItemCancelled",jm="compass-saved-aggregations-queries/edit-item/editItemUpdated",Bm=(e=Vm,t)=>$m(t,Hm)?{id:t.id}:$m(t,Km)||$m(t,jm)?{id:void 0}:e,zm=(0,d.AHW)({display:"flex",alignItems:"center",gap:d.YKD[200],minWidth:0}),Ym=(0,d.AHW)({flex:"none"}),qm=(0,d.AHW)({whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden"}),Gm=({type:e,name:t})=>r().createElement("div",{className:zm},r().createElement(d.Int,{title:null,glyph:"database"===e?"Database":"Folder",color:d.MFm.gray.dark1,className:Ym}),r().createElement("span",{className:qm},t)),Zm=4*d.YKD[1600],Jm=(0,d.AHW)({minWidth:0,width:"100%",paddingTop:d.YKD[400],paddingBottom:d.YKD[400],paddingLeft:d.YKD[400],paddingRight:d.YKD[400]}),Qm=(0,d.AHW)({display:"flex",alignItems:"center",minHeight:28,marginBottom:d.YKD[200]}),Xm=(0,d.AHW)({flex:"none"}),ep=(0,d.AHW)({flex:"none",marginLeft:"auto"}),tp=(0,d.AHW)({color:d.MFm.green.light2}),np=(0,d.AHW)({color:d.MFm.green.dark2}),ap=(0,d.AHW)({fontWeight:"bold",height:2*d.YKD[600],marginBottom:d.YKD[400],display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:2,textOverflow:"ellipsis",overflow:"hidden"}),op=(0,d.AHW)({display:"grid",gap:d.YKD[200],marginBottom:d.YKD[400]}),rp=(0,d.AHW)({fontStyle:"italic"}),ip=[{action:"copy",label:"Copy"},{action:"rename",label:"Rename"},{action:"delete",label:"Delete"},{action:"open-in",label:"Open in"}],sp=({itemId:e,isVisible:t,onAction:n})=>{const a=(0,o.useCallback)((t=>{n(e,t)}),[e,n]);return r().createElement(d.pNw,{"data-testid":"saved-item-actions",isVisible:t,actions:ip,onAction:a})},lp=({id:e,type:t,name:n,database:o,collection:i,lastModified:s,onAction:l,...c})=>{const[u,m]=(0,d.v69)(),[p,h]=(0,d.$vP)(),g=(0,d.pR2)((()=>{l(e,"open")})),f=(0,d.v63)({className:Jm},c,u,p,g);let y;switch(t){case"query":y="find";break;case"updatemany":y="updatemany";break;case"aggregation":y="aggregate"}const b=(0,d.Unm)(s),v=(0,d.D27)();return r().createElement(d.ZpM,(0,a.A)({key:e,contentStyle:"clickable","data-id":e},f),r().createElement("div",{className:Qm},r().createElement(d.Exy,{variant:"darkgray",className:Xm},".",y),r().createElement("div",{className:ep},r().createElement(sp,{itemId:e,isVisible:m||[d.X1w.FocusVisible,d.X1w.FocusWithinVisible].includes(h),onAction:l}))),r().createElement(d.Pds,{as:"div",className:(0,d.cx)(ap,v?tp:np),title:n},n),r().createElement("div",{className:op},r().createElement(Gm,{type:"database",name:o}),r().createElement(Gm,{type:"collection",name:i})),r().createElement("div",{className:rp},"Last modified: ",b))},cp=()=>r().createElement("svg",{width:"72",height:"72",viewBox:"0 0 72 72",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r().createElement("path",{d:"M43.875 43.875L64 64M50 29C50 40.598 40.598 50 29 50C17.402 50 8 40.598 8 29C8 17.402 17.402 8 29 8C40.598 8 50 17.402 50 29Z",stroke:"#001e2b"}),r().createElement("path",{d:"M22 43C22 45.1132 22.2625 47.1879 22.875 49.125C24.8 49.7413 26.9 50 29 50C40.6375 50 50 40.7107 50 29C50 26.8868 49.7375 24.8121 49.125 22.875C47.2 22.2586 45.1 22 43 22C31.3625 22 22 31.2893 22 43Z",fill:"#00ed64",stroke:"#001e2b",strokeMiterlimit:"10",strokeLinecap:"round",strokeLinejoin:"round"})),dp=()=>r().createElement(d.HYq,{icon:d.m3F,title:"No saved queries yet.",subTitle:"Start saving your aggregations and find queries, you'll see them here.",callToAction:r().createElement("div",null,"Not sure where to start?  ",r().createElement(d.N_E,{hideExternalIcon:!0,href:"https://docs.mongodb.com/compass/current/query/queries/"},"Visit our Docs →"))}),up=()=>r().createElement(d.HYq,{icon:cp,title:"No results found.",subTitle:"We can't find any item matching your search."}),mp={onSubmit:(e,t)=>async(n,a,{queryStorage:o,pipelineStorage:r})=>{const{savedItems:{items:i}}=a(),s=i.find((t=>t.id===e));if(s){switch(s.type){case"aggregation":await(r?.updateAttributes(e,t));break;case"query":case"updatemany":await(o?.updateAttributes(e,{_name:t.name,_dateModified:new Date}))}n({type:jm,id:e}),await n(hm())}},onCancel:()=>({type:Km})},pp=(0,Ee.Ng)((({editItem:{id:e},savedItems:{items:t}})=>({isModalOpen:Boolean(e),item:t.find((t=>t.id===e))})),mp)((({isModalOpen:e,item:t,onSubmit:n,onCancel:a})=>{const[i,s]=(0,o.useState)(t?.name??"");(0,d.wTI)((()=>{s(t?.name??"")}),[t]);const l=()=>!i||i===t?.name;return r().createElement(d.k5W,{open:e,onCancel:a,onSubmit:()=>{!l()&&t&&n(t.id,{name:i})},submitButtonText:"Update",submitDisabled:l(),title:`Rename ${t?.type??""}`,"data-testid":"edit-item-modal"},r().createElement(d.ksK,{"aria-label":"Name",label:"Name",name:"name",value:i,onChange:e=>{s(e.target.value)}}))}));var hp=n(83650);const gp=(0,d.AHW)({display:"flex",flexDirection:"row"}),fp=(0,d.AHW)({marginRight:d.YKD[200],width:`calc(16ch + ${d.YKD[1600]}px)`}),yp=(0,d.AHW)({display:"flex"}),bp=(0,d.AHW)({width:"300px",marginRight:d.YKD[200]}),vp=({options:e,onSelect:t,value:n,placeholder:a})=>{const o=(0,d.BiT)(),i=(0,d.BiT)();return r().createElement(d.l6P,{disabled:0===e.length,id:i,"aria-labelledby":o,allowDeselect:!0,placeholder:a,className:fp,onChange:t,value:n,name:n},e.map((e=>r().createElement(d.c$x,{key:e,value:e},e))))};function Cp(e,t,n){const a=function(e,t){return t&&1!==t.length?new hp.A(e,{findAllMatches:!0,shouldSort:!1,minMatchCharLength:2,threshold:.3,ignoreLocation:!0,includeScore:!0,keys:[{name:"name",weight:4},{name:"namespace",weight:3},{name:"tags",weight:2},{name:"data",weight:1}],getFn:(e,t)=>{const n=Array.isArray(t)?t[0]:t;return"namespace"===n?`${e.database}.${e.collection}`:"tags"===n?"query"===e.type?["find","query"]:["aggregate","aggregation","pipeline"]:"data"===n?"query"===e.type||"updatemany"===e.type?JSON.stringify({filter:e.query.filter}):"aggregation"===e.type?e.aggregation.pipelineText:[]:e[n]}}).search(t).map((e=>({item:e.item,score:e.score??0}))):e.map((e=>({item:e,score:1})))}(e,n);return function(e,t){const n={...t};for(const e in n)n[e]||delete n[e];return[...e].filter((e=>function(e,t){if(0===Object.keys(t).length)return!0;let n=!0;for(const a in t)e[a]!==t[a]&&(n=!1);return n}(e.item,n)))}(a,t)}const Ep=(0,d.AHW)({display:"grid",gridAutoColumns:"1fr",rowGap:d.YKD[600],columnGap:d.YKD[400],gridTemplateAreas:"\n 'description'\n 'connection'\n "}),Sp=(0,d.AHW)({gridArea:"description"}),kp=(0,d.AHW)({gridArea:"connection"}),wp={onSubmit:Rm,onClose:Pm,onSelectConnection:e=>({type:km,selectedConnection:e})},xp=(0,Ee.Ng)((({openItem:{openedModal:e,selectedConnection:t,selectedItem:n,connections:a}})=>({isModalOpen:"select-connection-modal"===e,isSubmitDisabled:!t,namespace:`${n?.database??""}.${n?.collection??""}`,itemType:n?.type??"",itemName:n?.name??"",connections:a,selectedConnection:t})),wp)((({namespace:e,itemType:t,itemName:n,isModalOpen:a,isSubmitDisabled:i,connections:s,selectedConnection:l,onSelectConnection:c,onSubmit:u,onClose:m})=>{const p=(0,o.useCallback)((e=>{c(e.target.value)}),[c]);return r().createElement(d.k5W,{open:a,onCancel:m,onSubmit:()=>u(),title:"Select a Connection",submitButtonText:"Run Query",submitDisabled:i,scroll:!1,"data-testid":"select-connection-modal"},r().createElement("div",{className:Ep},r().createElement("div",{className:Sp},"The namespace ",r().createElement("strong",null,e)," for the saved ",t," ",r().createElement("strong",null,n),r().createElement("br",null),"exists in multiple active connections. Please select which connection you’d like to",r().createElement("br",null),"run the ",t," against."),r().createElement("div",{className:kp},r().createElement(d.z6M,{name:"connection",size:"small",onChange:p,value:l??""},s.map((({id:e,name:t})=>r().createElement(d.sxL,{key:e,value:e,"data-testid":`connection-item-${e}`},t)))))))}));var Ap=n(34615);const Dp=(0,d.AHW)({button:{zIndex:999}}),Ip=({name:e,label:t,items:n,selectedItem:a,isLoading:o,onChange:i})=>r().createElement(d.l6P,{name:e,label:t,value:a??"",onChange:i,disabled:o,className:Dp,"data-testid":`${e}-select`},n.map((e=>r().createElement(d.c$x,{key:e,value:e},e)))),Mp=(0,Ee.Ng)((({openItem:{selectedConnection:e,connections:t}})=>({items:t,selectedItem:e})),{onChange:e=>t=>{t({type:Sm,selectedConnection:e}),t(_m(e))}})((({items:e,selectedItem:t,onChange:n})=>{const{connectionColorToHex:a}=(0,Ap.DM)(),i=(0,o.useCallback)((e=>n(e)),[n]);return r().createElement(d.l6P,{name:"connection",label:"Connection",value:t??"",onChange:i,className:Dp,dropdownWidthBasis:"option","data-testid":"connection-select"},e.map((({id:e,name:t,color:n})=>{const o=n&&"no-color"!==n?r().createElement(Ap.wO,{hexColor:a(n)}):void 0;return r().createElement(d.c$x,{key:e,value:e,glyph:o},t)})))})),Tp=(0,Ee.Ng)((({openItem:{databases:e,databasesStatus:t,selectedDatabase:n}})=>({items:e,selectedItem:n,isLoading:["initial","fetching"].includes(t)})),{onChange:e=>async(t,n,{instancesManager:a,connections:o})=>{const{openItem:{selectedDatabase:r,selectedConnection:i}}=n();if(e!==r){t({type:wm,database:e}),t({type:Mm});try{if(!i)throw new Error("Select a connection first");const r=o.getDataServiceForConnection(i),s=a.getMongoDBInstanceForConnection(i).databases.get(e);if(!s)throw new Error("Database not found");await s.fetchCollections({dataService:r}),e===n().openItem.selectedDatabase&&t({type:Tm,collections:s.collections.map((e=>e.name))})}catch{e===n().openItem.selectedDatabase&&t({type:Lm})}}}})(Ip),Lp=(0,Ee.Ng)((({openItem:{collections:e,collectionsStatus:t,selectedCollection:n}})=>({items:e,selectedItem:n,isLoading:["initial","fetching"].includes(t)})),{onChange:e=>({type:Im,collection:e})})(Ip),Op=(0,d.AHW)({display:"grid",gridAutoColumns:"1fr",rowGap:d.YKD[600],columnGap:d.YKD[400]}),Np=(0,d.cx)(Op,(0,d.AHW)({gridTemplateAreas:"\n 'description description'\n 'database collection'\n 'checkbox checkbox'\n "})),_p=(0,d.cx)(Op,(0,d.AHW)({gridTemplateAreas:"\n 'description description description'\n 'connection database collection'\n 'checkbox checkbox checkbox'\n "})),Fp=(0,d.AHW)({gridArea:"description"}),Pp=(0,d.AHW)({gridArea:"connection"}),Wp=(0,d.AHW)({gridArea:"database"}),Rp=(0,d.AHW)({gridArea:"collection"}),Up=(0,d.AHW)({gridArea:"checkbox"}),$p={onSubmit:Rm,onClose:Pm,onUpdateNamespaceChecked:e=>({type:Om,updateItemNamespace:e})},Vp=(0,Ee.Ng)((({openItem:{openedModal:e,selectedConnection:t,selectedDatabase:n,selectedCollection:a,selectedItem:o,updateItemNamespace:r,connections:i}})=>({openedModal:e,namespace:`${o?.database??""}.${o?.collection??""}`,itemName:o?.name??"",itemType:o?.type??"",showConnectionSelect:i.length>1,isSubmitDisabled:!(t&&n&&a),updateItemNamespace:r})),$p)((({openedModal:e,namespace:t,itemName:n,itemType:a,showConnectionSelect:i,isSubmitDisabled:s,updateItemNamespace:l,onSubmit:c,onClose:u,onUpdateNamespaceChecked:m})=>{const{isOpened:p,title:h,description:g}=(0,o.useMemo)((()=>{const o=i?r().createElement(r().Fragment,null,"The namespace ",r().createElement("strong",null,t)," for the saved ",a," ",r().createElement("strong",null,n)," doesn’t exist in any of the active connections. Please select another target to open saved"," ",a):r().createElement(r().Fragment,null,"The namespace ",r().createElement("strong",null,t)," for the saved ",a," ",r().createElement("strong",null,n)," doesn’t exist in the current connection. Please select another namespace to open saved"," ",a,".");return{isOpened:"namespace-not-found-modal"===e||"select-connection-and-namespace-modal"===e,title:i?"Select a Connection and Namespace":"Select a Namespace",description:"namespace-not-found-modal"===e?o:null}}),[i,e,n,a,t]);return r().createElement(d.k5W,{open:p,onCancel:u,onSubmit:()=>c(),title:h,submitButtonText:"Run Query",submitDisabled:s,scroll:!1,"data-testid":"open-item-modal"},r().createElement("div",{className:i?_p:Np},g&&r().createElement("div",{"data-testid":"description",className:Fp},g),i&&r().createElement("div",{className:Pp,"data-testid":"connection-select-field"},r().createElement(Mp,null)),r().createElement("div",{className:Wp,"data-testid":"database-select-field"},r().createElement(Tp,{name:"database",label:"Database"})),r().createElement("div",{className:Rp,"data-testid":"collection-select-field"},r().createElement(Lp,{name:"collection",label:"Collection"})),r().createElement(d.Sc0,{className:Up,checked:l,onChange:e=>{m(e.target.checked)},label:`Update this ${a} with the newly selected namespace`,"data-testid":"update-query-aggregation-checkbox"})))})),Hp={onClose:Pm},Kp=(0,Ee.Ng)((({openItem:{openedModal:e}})=>({isOpened:"no-active-connections-modal"===e})),Hp)((({isOpened:e,onClose:t})=>r().createElement(d.WhU,{title:"Connect to a cluster",open:e,onClose:t,showCloseButton:!1,"data-testid":"no-active-connection-modal"},r().createElement(d.lZ$,{variant:"warning"},"It appears that you are not connected to a cluster. Establish a connection first.")))),jp=[{name:"name",label:"Name"},{name:"lastModified",label:"Last Modified"}],Bp=(0,d.AHW)({padding:d.YKD[400],display:"flex",justifyContent:"space-between"}),zp=(0,d.AHW)({gap:d.YKD[200],paddingLeft:d.YKD[400],paddingRight:d.YKD[400],paddingBottom:d.YKD[200]}),Yp=(0,d.AHW)({width:"100%"}),qp=r().createContext({filterControls:null,sortControls:null}),Gp=()=>{const{filterControls:e,sortControls:t}=(0,o.useContext)(qp);return r().createElement("div",{className:Bp},r().createElement("div",null,e),r().createElement("div",null,t))},Zp={onMount:hm,onOpenItem:(e,t)=>async(n,a,{instancesManager:o,connections:r,logger:{log:i,mongoLogId:s}})=>{const{savedItems:{items:l}}=a();if(!t.length)return void n(Fm());const c=l.find((t=>t.id===e));if(!c)return;const{database:d,collection:u}=c,m=[],p=[];for(const e of t)try{const t=r.getDataServiceForConnection(e.id),n=o.getMongoDBInstanceForConnection(e.id);await n.getNamespace({dataService:t,database:d,collection:u})&&p.push(e)}catch(t){m.push({connectionId:e.id,error:t})}if(m.length&&i.info(s(1001000316),"Saved Aggregations Queries","Failed to lookup namespace in some connections",m),0===p.length){const e=1===t.length?t[0]:void 0;n(((e,t,n)=>a=>{a({type:Cm,modal:"namespace-not-found-modal",selectedItem:e,connections:t,selectedConnection:n}),n&&a(_m(n))})(c,t.map(Nm),e?.id))}else 1===p.length?n(Wm(c,p[0].id,d,u)):n(((e,t,n,a)=>({type:Cm,modal:"select-connection-modal",selectedItem:e,connections:t,selectedDatabase:n,selectedCollection:a}))(c,p.map(Nm),d,u))},onOpenItemForDiffTarget:(e,t)=>(n,a)=>{const{savedItems:{items:o}}=a();if(!t.length)return void n(Fm());const r=o.find((t=>t.id===e));if(!r)return;const i=t.map(Nm),s=1===i.length?i[0].id:void 0;n({type:Cm,modal:"select-connection-and-namespace-modal",selectedItem:r,connections:i,selectedConnection:s}),s&&n(_m(s))},onEditItem:e=>({type:Hm,id:e}),onDeleteItem:e=>async(t,n,{pipelineStorage:a,queryStorage:o,track:r})=>{const{savedItems:{items:i}}=n(),s=i.find((t=>t.id===e));if(!s)return;const l=`Are you sure you want to delete your ${"query"===s.type?"query":"aggregation"}?`;if(await(0,d.$TK)({title:l,description:"This action can not be undone.",variant:d.WlR.Danger,buttonText:"Delete"})){switch(r("aggregation"===s.type?"Aggregation Deleted":"Query History Favorite Removed",{id:s.id,screen:"my_queries"},void 0),s.type){case"aggregation":await(a?.delete(s.id));break;case"query":case"updatemany":await(o?.delete(s.id))}t({type:um,id:s.id})}},onCopyToClipboard:function(e){return async(t,n,{track:a})=>{const{savedItems:{items:o}}=n(),r=o.find((t=>t.id===e));if(!r)return;a("aggregation"===r.type?"Aggregation Copied":"Query History Favorite Copied",{id:r.id,screen:"my_queries"});const i="aggregation"===r.type?r.aggregation.pipelineText:function(e){const{collation:t,filter:n,limit:a,project:o,skip:r,sort:i}=e;return ne.EJSON.stringify({collation:t,filter:n,limit:a,project:o,skip:r,sort:i},void 0,2)}(r.query);await navigator.clipboard.writeText(i)}}},Jp=(0,Ee.Ng)((({savedItems:{items:e,loading:t}})=>({items:e,loading:t})),Zp)((({loading:e,items:t,onMount:n,onOpenItem:i,onOpenItemForDiffTarget:l,onEditItem:c,onDeleteItem:u,onCopyToClipboard:m})=>{(0,o.useEffect)((()=>{n()}),[n]);const p=(0,s.pV)(),h=(0,o.useCallback)((e=>{i(e,p)}),[p,i]),g=(0,o.useCallback)((e=>{l(e,p)}),[p,l]),{controls:f,conditions:y,search:b}=function(e){const[t,n]=function(e){const[t,n]=(0,o.useState)(),[a,i]=(0,o.useState)(),[s,l]=(0,o.useState)([]),c=e.map((e=>e.database)).filter(((e,t,n)=>n.indexOf(e)===t)),d=(0,o.useMemo)((()=>t=>{n(t),i(void 0);const a=e.filter((e=>e.database===t)).map((e=>e.collection)).filter(((e,t,n)=>n.indexOf(e)===t));l(a)}),[e]),u=(0,o.useMemo)((()=>e=>{i(e)}),[]);return[(0,o.useMemo)((()=>r().createElement("div",{className:gp},r().createElement(vp,{options:c,placeholder:"All databases",onSelect:d,value:t??""}),r().createElement(vp,{options:s,placeholder:"All collections",onSelect:u,value:a??""}))),[c,d,t,s,u,a]),(0,o.useMemo)((()=>({database:t,collection:a})),[t,a])]}(e),[a,i]=function(){const e=(0,re.Jr)(),[t,n]=(0,o.useState)("");return[(0,o.useMemo)((()=>r().createElement(d.ksK,{className:bp,"aria-label":"Search",type:"search",placeholder:"Search",value:t,onChange:e=>{n(e.target.value)},onBlur:()=>{t.length>0&&e("My Queries Search",{})},spellCheck:!1})),[t,e]),t]}();return{controls:(0,o.useMemo)((()=>r().createElement("div",{className:yp},a,t)),[a,t]),conditions:n,search:i}}(t),v=Cp(t,y,b).sort(((e,t)=>e.score-t.score)).map((e=>e.item));(0,re.ou)((e=>{e("Screen",{name:"my_queries"},void 0)}),[]),(0,re.ou)((e=>{y.database&&e("My Queries Filter",{type:"database"})}),[y.database]),(0,re.ou)((e=>{y.collection&&e("My Queries Filter",{type:"collection"})}),[y.collection]);const[C,E]=(0,d.yRS)("saved-queries-list-controls",{name:jp[0].name,order:1}),[S,k]=(0,d.yv$)(jp,{isDisabled:Boolean(b),initialState:C,onChange:E});(0,re.ou)((e=>{e("My Queries Sort",{sort_by:k.name,order:1===k.order?"ascending":"descending"})}),[k]);const w=(0,d.Vdw)(v,k),x=(0,o.useCallback)(((e,t)=>{switch(t){case"open":return void h(e);case"open-in":return void g(e);case"rename":return void c(e);case"delete":return void u(e);case"copy":return void m(e)}}),[h,g,c,u,m]),A=(0,o.useCallback)((({index:e,...t})=>{const n=w[e];return r().createElement(lp,(0,a.A)({id:n.id,type:n.type,name:n.name,database:n.database,collection:n.collection,lastModified:n.lastModified,onAction:x,"data-testid":`grid-item-${e}`},t))}),[x,w]);return e?null:0===t.length?r().createElement("div",{className:Yp,"data-testid":"my-queries-list"},r().createElement(dp,null)):r().createElement(qp.Provider,{value:{filterControls:f??null,sortControls:S??null}},r().createElement(d.Q$5,{"data-testid":"my-queries-list",itemMinWidth:Zm,itemHeight:218+d.YKD[200],itemsCount:w.length,renderItem:A,itemKey:e=>w[e].id,renderHeader:Gp,headerHeight:d.YKD[800]+36,renderEmptyList:up,classNames:{row:zp},resetActiveItemOnBlur:!1}),r().createElement(xp,null),r().createElement(Vp,null),r().createElement(Kp,null),r().createElement(pp,null))})),Qp="My Queries",Xp={name:Qp,provider:(0,i.nk)({name:Qp,component:function({children:e}){return r().createElement(r().Fragment,null,e)},activate:function(e,t){const n=function({globalAppRegistry:e,connections:t,instancesManager:n,preferencesAccess:a,logger:o,track:r,workspaces:i,pipelineStorage:s,favoriteQueryStorageAccess:l}){return(0,F.y$)((0,F.HY)({savedItems:ym,openItem:Um,editItem:Bm}),(0,F.Tw)(P.A.withExtraArgument({globalAppRegistry:e,connections:t,instancesManager:n,preferencesAccess:a,logger:o,track:r,pipelineStorage:s?.getStorage(),queryStorage:l?.getStorage(),workspaces:i})))}(t);return{store:n,deactivate(){}}}},{connections:s.u4,instancesManager:g.Q3,preferencesAccess:R.fx,logger:(0,p.fF)("COMPASS-MY-QUERIES-UI"),track:re.yL,workspaces:D.__,pipelineStorage:jt.oC,favoriteQueryStorageAccess:jt.yS}),content:Jp,header:function(e){return r().createElement(d.N81,(0,a.A)({},e,{type:Qp,title:Qp,iconGlyph:"CurlyBraces"}))}};n(59509),n(25691),n(23177),n(3142),n(51615),n(84217),n(25953),n(42319),n(28465),n(12887),n(36106),n(84542),n(57068),n(69517);const eh={"X-Request-Origin":"atlas-data-explorer"};function th(...e){return"/"+e.map((e=>encodeURIComponent(e))).filter(Boolean).join("/")}const nh={enableExplainPlan:!0,enableAggregationBuilderRunPipeline:!0,enableAggregationBuilderExtraOptions:!0,enableAtlasSearchIndexes:!1,enableImportExport:!1,enableGenAIFeatures:!0,enableGenAIFeaturesAtlasProject:!1,enableGenAISampleDocumentPassing:!1,enableGenAIFeaturesAtlasOrg:!1,enableGenAIToolCallingAtlasProject:!0,enableAssistantConnectionDebugging:!1,enableAtlasConnectionErrorDebuggerTool:!1,enableAtlasSignIn:!1,enablePerformanceAdvisorBanner:!0,enableMyQueries:!1,maximumNumberOfActiveConnections:10,trackUsageStatistics:!0,enableShell:!1,enableCreatingNewConnections:!1,enableGlobalWrites:!1,optInGenAIFeatures:!1,enableConnectInNewWindow:!1,maxTimeMSEnvLimit:3e5},ah=new Map;function oh(e=window.location.host){return e.includes("cloud-dev")?"atlas-dev":e.includes("cloud-qa")?"atlas-qa":e.includes("cloud-stage")?"atlas-staging":e.includes("cloud-local")||e.includes("localhost")?"atlas-local":"atlas"}const rh=new Map(R.of.map((e=>[e.name,e]))),ih=e=>{if(e?.isDataAccessAdmin)return{};const t=Boolean(e?.isGroupIndexManager&&e?.isDataAccessAny);return e?.isDataAccessWrite?{readWrite:!0,enableIndexesManagement:t}:{readOnly:!0,enableIndexesManagement:t}};async function sh(e){const t=ah.get(e);if(t)return t;if(!e)throw new Error("Cannot load preferences without an Atlas project id");const n=async function(e){try{const{atlasCloudUserPreferences:t,atlasCloudProjectPreferences:n,atlasCloudOrgPreferences:a}=await async function(e){const{featureFlags:t,userAuid:n,appUser:a,currentOrganization:o,userRoles:r}=await async function(e){const t=await fetch(`/explorer/v1/groups/${e}/preferences`,{headers:eh,credentials:"include"});if(!t.ok)throw new Error(`Failed to fetch preferences: ${t.status} ${t.statusText}`);return t.json()}(e),i={atlasServiceBackendPreset:oh(),telemetryAtlasUserId:n,optInGenAIFeatures:a.isOptedIntoDataExplorerGenAIFeatures,timezone:a.timeZoneId,...ih(r)},s={},l={enableGenAIFeaturesAtlasOrg:o.genAIFeaturesEnabled??!1};for(const[e,n]of Object.entries(t))if((0,R.xl)(e)&&(i[e]=n,rh.has(e))){const t=rh.get(e)?.atlasCloudFeatureScope;"organization"===t?l[e]=n:s[e]=n}return{atlasCloudUserPreferences:i,atlasCloudProjectPreferences:s,atlasCloudOrgPreferences:l}}(e),o=new R.Fc({...nh,...t,...n,...a},{atlasCloudUser:t,atlasCloudProject:n,atlasCloudOrg:a});return ah.set(e,o),o}catch(t){throw ah.delete(e),t}}(e);return ah.set(e,n),n}var lh=n(9312),ch=n(9118);const dh={filter:U.z.any().optional(),project:U.z.any().optional(),collation:U.z.any().optional(),sort:U.z.any().optional(),skip:U.z.number().optional(),limit:U.z.number().optional(),update:U.z.any().optional(),hint:U.z.any().optional()},uh={_id:U.z.string().uuid(),_lastExecuted:U.z.union([U.z.coerce.date(),U.z.number()]).transform((e=>new Date(e))),_ns:U.z.string(),_host:U.z.string().optional()},mh=U.z.object({...dh,...uh}),ph=U.z.object({...dh,...uh,_name:U.z.string().nonempty(),_dateModified:U.z.union([U.z.coerce.date(),U.z.number()]).optional().transform((e=>void 0!==e?new Date(e):e)),_dateSaved:U.z.union([U.z.coerce.date(),U.z.number()]).transform((e=>new Date(e)))});function hh(e){const t=`[\n${(e?.map((({stageOperator:e,isEnabled:t,stage:n})=>function(e,t,n){const a=`{\n ${e}: ${t}\n}`;return n?a.split("\n").map((e=>`// ${e}`)).join("\n"):a}(e,n,!t)))??[]).join(",\n")}\n]`;try{return(0,rt.G8)(t)}catch{return t}}const gh=U.z.preprocess((e=>{const{pipeline:t,pipelineText:n,...a}=e;return{...a,pipelineText:n??hh(t)}}),U.z.object({id:U.z.string(),name:U.z.string(),namespace:U.z.string(),comments:U.z.boolean().optional(),autoPreview:U.z.boolean().optional(),collationString:U.z.string().optional(),host:U.z.string().nullable().optional(),pipelineText:U.z.string(),lastModified:U.z.number().default(0).transform((e=>new Date(e)))}));class fh{userData;dataType;constructor(e,t,n){this.dataType=t,this.userData=n}async loadAll(e){try{const{data:t}=await this.userData.readAll();return t.sort(((e,t)=>t._lastExecuted.getTime()-e._lastExecuted.getTime())).filter((t=>!e||t._ns===e))}catch{return[]}}async write(e,t){return await this.userData.write(e,t)}async delete(e){return await this.userData.delete(e)}async updateAttributes(e,t){return await this.userData.updateAttributes(e,t)}}class yh extends fh{maxAllowedQueries=30;constructor(e){super(mh,"RecentQueries",e)}async saveQuery(e){const t=await this.loadAll();if(t.length>=this.maxAllowedQueries){const e=t[t.length-1];await this.delete(e._id)}const n=(new ne.UUID).toString(),a={...e,_id:n,_lastExecuted:new Date};await this.userData.write(n,a)}}class bh extends fh{constructor(e){super(ph,"FavoriteQueries",e)}async saveQuery(e,t){t??=(new ne.UUID).toString();const n={...e,_id:t,_lastExecuted:new Date,_dateSaved:new Date};await this.userData.write(t,n)}}class vh{userData;constructor(e){this.userData=e}async loadAll(){try{const{data:e}=await this.userData.readAll();return e}catch{return[]}}loadMany(e){return this.loadAll().then((t=>t.filter(e)))}async createOrUpdate(e,t){const n=Boolean(await this.userData.readOne(e));return await(n?this.updateAttributes(e,t):this.create(t))}async create(e){try{return await this.userData.write(e.id,{...e,lastModified:Date.now()}),!0}catch{return!1}}async updateAttributes(e,t){try{return await this.userData.write(e,{...await this.userData.readOne(e),...t,lastModified:Date.now()}),!0}catch{return!1}}async delete(e){await this.userData.delete(e)}}function Ch({appName:e}){const t=(0,g.bV)();return r().createElement(I.GS,{appName:e,hasNonGenuineConnections:t})}var Eh=n(7570);setTimeout((function(){const e=function(e=window.location.pathname){return e.match(/\/v2\/([a-f0-9]{24})/i)?.[1]}();e&&sh(e)}));const Sh=(0,d.AHW)({width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center"}),kh=({children:e})=>r().createElement(Nu,null,r().createElement(To,{value:!0},r().createElement(zt.AW,{options:{defaultHeaders:eh}},r().createElement(Au.FK,null,r().createElement(sd.Q9,{apiURLPreset:"cloud"},e))))),wh=(0,i.xw)((function({projectId:e,children:t}){const n=(0,o.useRef)(new AbortController),a=(0,p.Ul)("COMPASS-WEB-MULTIPLEXING"),i=(0,zt.fA)(),s=(0,o.useMemo)((()=>i.multiplexWebsocketEndpoint(e)),[i,e]);return(0,o.useEffect)((()=>{const e=n.current,t=new Eh.N_({baseUrls:s,logger:a});return(0,Eh.Ze)(t),t.connect(e.signal).catch((e=>{"AbortError"!==e.name&&(a.log.error(a.mongoLogId(1001000427),"COMPASS-WEB-MULTIPLEXING","Multiplex WebSocket transport failed",{error:e.message}),(0,d.c3r)("multiplex-websocket-connection-failed",{title:"WebSocket Connection Failed",description:e.message,variant:"warning"}))})),()=>{e.abort(),t.close("Compass Web Entrypoint Unmount"),(0,Eh.Ze)(null)}}),[s,a]),r().createElement(r().Fragment,null,t)})),xh=(0,i.xw)((function({orgId:e,projectId:t,children:n}){const a=(0,zt.fA)(),i=(0,o.useRef)({getStorage:()=>function(e){const t=new U.Tu(gh,"SavedPipelines",{orgId:e.orgId,projectId:e.projectId,atlasService:e.atlasService,serialize:e=>ne.EJSON.stringify(e),deserialize:e=>ne.EJSON.parse(e)});return new vh(t)}({orgId:e,projectId:t,atlasService:a})}),s=(0,o.useRef)({getStorage:()=>function(e){const t=new U.Tu(ph,"FavoriteQueries",{orgId:e.orgId,projectId:e.projectId,atlasService:e.atlasService,serialize:e=>ne.EJSON.stringify(e),deserialize:e=>ne.EJSON.parse(e)});return new bh(t)}({orgId:e,projectId:t,atlasService:a})}),l=(0,o.useRef)({getStorage:()=>function(e){const t=new U.Tu(mh,"RecentQueries",{orgId:e.orgId,projectId:e.projectId,atlasService:e.atlasService,serialize:e=>ne.EJSON.stringify(e),deserialize:e=>ne.EJSON.parse(e)});return new yh(t)}({orgId:e,projectId:t,atlasService:a})});return r().createElement(jt.tU,{value:i.current},r().createElement(jt.HD,{value:s.current},r().createElement(jt.I4,{value:l.current},r().createElement(ae,{orgId:e,projectId:t,atlasService:a},n))))}));function Ah({initialWorkspaceTabs:e,onActiveWorkspaceTabChange:t,onOpenConnectViaModal:n,onBeforeUnloadCallbackRequest:a}){return r().createElement(u.K,{value:[dm,aa,na,sa.N,lh.y,Xp]},r().createElement(sa.K,{queryBar:Lo.Ay,tabs:[Oo.UZ,No.RH,il,sl.Q,od,rd.R],modals:[wu.A,xu.A]},r().createElement("div",{"data-testid":"compass-web-connected",className:Mh},r().createElement(oe,{onBeforeUnloadCallbackRequest:a,initialWorkspaceTabs:e,openOnEmptyWorkspace:{type:"Welcome"},onActiveWorkspaceTabChange:t,renderSidebar:()=>r().createElement(Mo,{onOpenConnectViaModal:n,isCompassWeb:!0}),renderModals:()=>r().createElement(r().Fragment,null,r().createElement(No.tz,null),r().createElement(oa,null),r().createElement(ra,null),r().createElement(ia,null),r().createElement(Ch,{appName:"Data Explorer"}))}))))}const Dh=({children:e})=>{const t=(0,s.PM)();return(0,o.useEffect)((()=>{const e=setInterval((()=>{t.refreshConnections()}),6e4);return()=>{clearInterval(e)}}),[t]),r().createElement(r().Fragment,null,e)},Ih={utmSource:"DE",utmMedium:"product"},Mh=(0,d.AHW)({width:"100%",height:"100%",display:"flex"}),Th=({darkMode:e,children:t})=>{const n=(0,re.Jr)(),{enableGuideCues:o,legacyUUIDDisplayEncoding:i,timezone:s}=(0,R.gc)(["enableGuideCues","legacyUUIDDisplayEncoding","timezone"]);return r().createElement(d.Gf9,(0,a.A)({darkMode:e,legacyUUIDDisplayEncoding:i,timezone:s,stackedElementsZIndex:1e4,onGuideCueShown:e=>{n("Guide Cue Shown",{groupId:e.groupId,cueId:e.cueId,step:e.step})},onNextGuideGue:e=>{n("Guide Cue Dismissed",{groupId:e.groupId,cueId:e.cueId,step:e.step})},onNextGuideCueGroup:e=>{e.groupSteps!==e.step&&n("Guide Cue Group Dismissed",{groupId:e.groupId,cueId:e.cueId,step:e.step})},onContextMenuOpen:e=>{e.length>0&&n("Context Menu Opened",{item_groups:e.map((e=>e.telemetryLabel))})},onContextMenuItemClick:(e,t)=>{n("Context Menu Item Clicked",{item_group:e.telemetryLabel,item_label:t.label})},onDrawerSectionOpen:e=>{n("Drawer Section Opened",{sectionId:e})},onDrawerSectionHide:e=>{n("Drawer Section Closed",{sectionId:e})},onSignalMount:e=>{n("Signal Shown",{id:e})},onSignalOpen:e=>{n("Signal Opened",{id:e})},onSignalPrimaryActionClick:e=>{n("Signal Action Button Clicked",{id:e})},onSignalLinkClick:e=>{n("Signal Link Clicked",{id:e})},onSignalClose:e=>{n("Signal Closed",{id:e})},disableGuideCues:!o},Ih),t)},Lh=()=>{const{enableCompassWebSettings:e}=(0,R.gc)(["enableCompassWebSettings"]);return e?r().createElement(ku,null):null},Oh=({appName:e,orgId:t,preferences:n,projectId:a,darkMode:s,onLog:c,onDebug:u,onTrack:h,onOpenConnectViaModal:g,history:f,historyRoutePrefix:y})=>{const b=(0,d.nfZ)(new i.Ay),{logger:v,telemetry:C}=function({preferences:e,...t}){const n=(0,d.HIF)(t),a=(0,d.nfZ)((()=>new Wu("COMPASS-WEB",n)));return{logger:a,telemetry:(0,d.nfZ)({sendTrack:(e,t={})=>{Pu.tracking?.push({event:e,properties:t}),n.current.onTrack?.(e,t)},logger:a,preferences:e})}}({onLog:c,onDebug:u,onTrack:h,preferences:n}),{initialWorkspaceTabs:E,autoconnectId:S,onActiveWorkspaceTabChange:k,onBeforeUnloadCallbackRequest:w}=function(e,t="explorer"){const n=(0,d.nfZ)((()=>`/${t.replace(/^\//,"")}`)),a=(0,d.HIF)(e),r=(0,o.useRef)((()=>!0)),i=(0,d.nfZ)((()=>{if(!a.current)return[];const e=function(e){const[,t,n,a,o]=decodeURIComponent(e).split("/");if(t&&n&&a){const e=function(e){switch(e){case"find":return"Documents";case"aggregation":return"Aggregations";case"schema":return"Schema";case"indexes":return"Indexes";case"validation":return"Validation";case"global-writes":return"GlobalWrites";default:return}}(o);return{type:"Collection",connectionId:t,namespace:`${n}.${a}`,...e&&{initialSubtab:e}}}return t&&n?{type:"Collections",connectionId:t,namespace:n}:t?{type:"Databases",connectionId:t}:{type:"Welcome"}}(a.current.location.pathname.replace(n,""));return e?[e]:[]})),s=(0,d.nfZ)((()=>i[0]&&"connectionId"in i[0]?i[0].connectionId:void 0)),l=(0,o.useCallback)((e=>{const t=n+function(e){let t;switch(e?.type){case"Databases":t=th(e.connectionId);break;case"Collections":t=th(e.connectionId,e.namespace);break;case"Collection":{const{database:n,collection:a}=(0,m.Ay)(e.namespace);t=th(e.connectionId,n,a,function(e){switch(e){case"Documents":return"find";case"Aggregations":return"aggregation";case"Schema":return"schema";case"Indexes":return"indexes";case"Validation":return"validation";case"GlobalWrites":return"global-writes";default:return""}}(e.subTab));break}default:t="/"}return t}(e);a.current?.replace(t)}),[a,n]),c=(0,o.useCallback)((e=>{r.current=e}),[]);return function(e,t,n){(0,o.useEffect)((()=>{if(!e.current)return;const a=e.current,o=({location:e,retry:i,action:s})=>{function l(){const s=e.pathname.startsWith(n);(s||t.current()||window.confirm("The content of Data Explorer has been modified. You will lose your changes if you navigate away from it."))&&(r(),i(),s&&(r=a.block(o)))}"POP"===s?window.addEventListener("popstate",l,{once:!0}):l()};let r=e.current.block(o);const i=()=>{t.current()&&r()};return window.addEventListener("beforeunload",i,!0),()=>{window.removeEventListener("beforeunload",i,!0),r()}}),[t,e,n])}(a,r,n),{initialWorkspaceTabs:i,autoconnectId:s,onActiveWorkspaceTabChange:l,onBeforeUnloadCallbackRequest:c}}(f,y);return r().createElement(i.Pe,{value:b},r().createElement(i.GL,{scopeName:"Compass Web Root"},r().createElement(R.wb,{value:n},r().createElement(p.IB,{value:v},r().createElement(re.Hb,{options:C},r().createElement(Th,{darkMode:s},r().createElement(kh,null,r().createElement(wh,{projectId:a},r().createElement(xh,{orgId:t,projectId:a},r().createElement(ch.D,{orgId:t,projectId:a},r().createElement(Tu,{orgId:t,projectId:a},r().createElement(sd.fP,null,r().createElement(I.Sq,{originForPrompt:"atlas-data-explorer",appNameForPrompt:I.Wn.DataExplorer,projectId:a},r().createElement(ke.Ay,{appName:e??"Compass Web",showErrorStateOnConnectionLoadError:!0,onExtraConnectionDataRequest:()=>Promise.resolve([{},null]),onAutoconnectInfoRequest:e=>S?e.loadAll().then((e=>e.find((e=>e.id===S))),(e=>{const{log:t,mongoLogId:n}=v;t.warn(n(1001000329),"Compass Web","Could not load connections when trying to autoconnect",{err:e.message})})):Promise.resolve(void 0)},r().createElement(l.M,null,r().createElement(rl.Ay,null,r().createElement(Dh,null,r().createElement(Ah,{initialWorkspaceTabs:E,onActiveWorkspaceTabChange:k,onOpenConnectViaModal:g,onBeforeUnloadCallbackRequest:w}))),r().createElement(id.In,{projectId:a,isCloudOptIn:!0}),r().createElement(Lh,null))))))))))))))))},Nh=e=>{const{preferencesAccess:t,isLoading:n,error:i}=function(e){const[t,n]=(0,o.useState)((()=>function(e){const t=ah.get(e);return t instanceof R.Fc?t:null}(e))),[a,r]=(0,o.useState)(null);return(0,o.useEffect)((()=>{let t=!0;return sh(e).then((e=>{t&&n(e)}),(e=>{t&&r(e)})),()=>{t=!1}}),[e]),{preferencesAccess:t,isLoading:!t&&!a,error:a}}(e.projectId);if(n)return r().createElement("div",{className:Sh},r().createElement(d.iyS,{darkMode:e.darkMode,"data-testid":"compass-web-preferences-loader",progressText:"Loading Data Explorer…"}));if(i)throw i;if(!t)throw new Error("Failed to load data explorer preferences");return r().createElement(Oh,(0,a.A)({},e,{preferences:t}))};n(13154),n(26544),n(15088).process;var _h=n(83145),Fh=n(17931);n(81895)},50207:()=>{},50339:()=>{},51390:(e,t,n)=>{n.r(t),n.d(t,{createConnection:()=>c,isIP:()=>l,isIPv4:()=>a.wM,isIPv6:()=>a.w7}),n(64990),n(90801),n(95774),n(77767);var a=n(32098),o=n(64371),r=n(7570),i=n(34110).Buffer;class s extends o.Duplex{_localPort=0;_remoteHost="";_remotePort=0;constructor(){super()}connect(e){const t=(0,r.Zk)();if(!t)throw new Error("Link is not available");return this._remoteHost=e.host,this._remotePort=e.port,this._localPort=t.allocatePort(),t.registerSocket(this._localPort,{onData:e=>{queueMicrotask((()=>{this.push(i.from(e))}))},onClose:()=>{this._teardown(),queueMicrotask((()=>this.emit("close")))},onError:e=>{this._teardown(),queueMicrotask((()=>this.emit("error",e)))}}).then((()=>{queueMicrotask((()=>{this.emit(e.tls?"secureConnect":"connect")}))})).catch((e=>{queueMicrotask((()=>this.emit("error",e instanceof Error?e:new Error(String(e)))))})),this}_read(){}_write(e,t,n){const a=(0,r.Zk)();a&&0!==this._localPort?(a.sendData(this._localPort,this._remoteHost,this._remotePort,new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),queueMicrotask((()=>{n()}))):queueMicrotask((()=>{n(new Error("Socket not connected: link unavailable"))}))}_teardown(e){if(0===this._localPort)return;const t=(0,r.Zk)();e&&t&&t.sendError(this._localPort,this._remoteHost,this._remotePort,e),t?.unregisterSocket(this._localPort),this._localPort=0}destroy(){return 0!==this._localPort&&this._teardown("Stream destroyed by client"),this}end(e){return 0!==this._localPort?(this._teardown("Stream ended by client"),queueMicrotask((()=>{e?.()})),this):this}setKeepAlive(){return this}setTimeout(){return this}setNoDelay(){return this}}const l=e=>(0,a.UR)(e)??0,c=e=>{const t=new s;return queueMicrotask((()=>{t.connect(e)})),t}},51731:(e,t,n)=>{function a(e){try{return new window.URL(`http://${e}`).hostname}catch{return null}}function o(){throw new Error("Not implemented")}n.r(t),n.d(t,{toASCII:()=>a,toUnicode:()=>o})},56130:(e,t,n)=>{n(95039),n(59509),n(25691),n(23177),n(3142),n(51615),n(84217),n(25953),n(42319),n(28465),n(12887),n(36106),n(84542),n(57068),n(69517),n(10838),n(63678);const a=n(5389),{Collection:o}=n(15857),r=n(99091),i=n(28937),s=n(36430),l=n(17961),c=new Map,d=new WeakSet;function u(e){if(e&&e.off&&!d.has(e)){d.add(e),e.off(),e.isCollection&&e.forEach((e=>{u(e)}));for(const t of Object.values(e))u(t)}}const m=a.extend({props:{user:{type:"object",default:null},roles:{type:"array",default:null},privileges:{type:"array",default:null}}}),p=a.extend({props:{arch:"string",cpu_cores:"number",cpu_frequency:"number",memory_bits:"number",os:"string",os_family:"string",kernel_version:"string",kernel_version_string:"string"}}),h=a.extend({props:{isEnterprise:"boolean",version:"string"}}),g=a.extend({props:{isGenuine:{type:"boolean",default:!0},serverName:"string"}}),f=a.extend({props:{isDataLake:{type:"boolean",default:!1},version:"string"}});function y(e,t){return t||"initial"!==e}function b(e,t){return t||"ready"!==e}const v=a.extend((C=["fetch","fetchDatabases","refresh"],{initialize(){C.forEach((e=>{if(e in this&&"function"==typeof this[e]){const n=this[e];this[e]=(t=n,function(...e){const n=this.isCollection?`${this.parent.cid}$$coll$$${t.name}`:`${this.cid}$$${t.name}`;if(c.has(n))return c.get(n);const a=t.call(this,...e).finally((()=>{c.delete(n)}));return c.set(n,a),a})}var t}))}}),{modelType:"Instance",idAttribute:"_id",props:{_id:{type:"string",required:!0},hostname:{type:"string",required:!0},port:"number",status:{type:"string",default:"initial"},statusError:{type:"string",default:null},databasesStatus:{type:"string",default:"initial"},databasesStatusError:{type:"string",default:null},refreshingStatus:{type:"string",default:"initial"},refreshingStatusError:{type:"string",default:null},isAtlas:{type:"boolean",default:!1},isLocalAtlas:{type:"boolean",default:!1},isSearchIndexesSupported:"boolean",atlasVersion:{type:"string",default:""},csfleMode:{type:"string",default:"unavailable"}},initialize:function({preferences:e,...t}){this.preferences=e,a.prototype.initialize.call(this,t)},derived:{isRefreshing:{deps:["refreshingStatus"],fn(){return["fetching","refreshing"].includes(this.refreshingStatus)}},isTopologyWritable:{deps:["topologyDescription.type"],fn(){return r.isWritable(this.topologyDescription.type)}},singleServerType:{deps:["topologyDescription.type","topologyDescription.servers"],fn(){return this.topologyDescription.type===r.SINGLE?this.topologyDescription.servers[0].type:null}},isServerWritable:{deps:["singleServerType"],fn(){return null!==this.singleServerType&&i.isWritable(this.singleServerType)}},isWritable:{deps:["topologyDescription.type","isTopologyWritable","isServerWritable"],fn(){return!!this.isTopologyWritable&&(this.topologyDescription.type!==r.SINGLE||this.isServerWritable)}},description:{deps:["topologyDescription.type","isTopologyWritable","isServerWritable","singleServerType"],fn(){const e=this.topologyDescription.type;if(this.isTopologyWritable){if(e===r.SINGLE){const e=this.isServerWritable?"is writable":"is not writable";return`Single connection to server type: ${i.humanize(this.singleServerType)} ${e}`}return`Topology type: ${r.humanize(e)} is writable`}return`Topology type: ${r.humanize(e)} is not writable`}},env:{deps:["isAtlas","isLocalAtlas","dataLake"],fn(){return this.isAtlas||this.isLocalAtlas?this.dataLake.isDataLake?s.ADL:s.ATLAS:s.ON_PREM}}},children:{host:p,build:h,genuineMongoDB:g,dataLake:f,auth:m,topologyDescription:l},collections:{databases:o},async fetch({dataService:e,force:t=!1}){if(b(this.status,t))try{const t="initial"===this.status?"fetching":"refreshing";this.set({status:t});const n=await e.instance();this.set({status:"ready",statusError:null,...n})}catch(e){throw this.set({status:"error",statusError:e.message}),e}},async fetchDatabases({dataService:e,force:t=!1}){if(b(this.databasesStatus,t))try{const t="initial"===this.databasesStatus?"fetching":"refreshing";this.set({databasesStatus:t}),await this.databases.fetch({dataService:e}),this.set({databasesStatus:"ready",databasesStatusError:null})}catch(e){throw this.set({databasesStatus:"error",databasesStatusError:e.message}),e}},async getIsSearchSupported({ns:e,dataService:t,force:n=!1}){if(void 0===this.isSearchIndexesSupported||n){const n=await t.isListSearchIndexesSupported(e);this.set({isSearchIndexesSupported:n})}return this.isSearchIndexesSupported},async refresh({dataService:e,fetchDatabases:t=!1,fetchDbStats:n=!1,fetchCollections:a=!1,fetchCollStats:o=!1,firstRun:r=!1}){this.set({refreshingStatus:"initial"===this.refreshingStatus?"fetching":"refreshing"});try{await this.fetch({dataService:e,force:!r}),y(this.databasesStatus,t)&&await this.fetchDatabases({dataService:e,force:!0}),await Promise.all(this.databases.map((t=>{if(y(t.collectionsStatus,a))return t.fetchCollections({dataService:e,force:!0})}))),await Promise.allSettled(this.databases.map((t=>[y(t.status,n)&&t.fetch({dataService:e,force:!0}),...t.collections.map((t=>{if(y(t.status,o))return t.fetch({dataService:e,fetchInfo:!1,force:!0})}))])).flat()),this.set({refreshingStatus:"ready",refreshingStatusError:null})}catch(e){throw this.set({refreshingStatus:"error",refreshingStatusError:e.message}),e}},async getNamespace({dataService:e,database:t,collection:n}){await this.fetchDatabases({dataService:e});const a=this.databases.get(t);if(!a)return null;await a.fetchCollections({dataService:e});return a.collections.get(n,"name")||null},shouldFetchDbAndCollStats(){return this.preferences.getPreferences().enableDbAndCollStats},shouldFetchNamespacesFromPrivileges(){return this.preferences.getPreferences().inferNamespacesFromPrivileges},removeAllListeners(){v.removeAllListeners(this)},toJSON(e={derived:!0}){return this.serialize(e)}});var C;e.exports=Object.assign(v,{removeAllListeners(e){u(e)}})},56900:(e,t,n)=>{n.d(t,{Tu:()=>l,ZN:()=>s,z:()=>c}),n(95039),n(4308),n(78773);var a=n(26544);n(12738),n(13068);const{log:o,mongoLogId:r}=(0,a.h)("COMPASS-USER-STORAGE"),i=["RecentQueries","FavoriteQueries","SavedPipelines","DataModelDescriptions","WorkspacesState","AppPreferences","Users","Connections","AtlasState","ShellHistory"];class s{validator;dataType;serialize;deserialize;constructor(e,t,{serialize:n=e=>JSON.stringify(e,null,2),deserialize:a=JSON.parse}={}){this.validator=e,function(e){if(!i.includes(e))throw new Error(`Invalid UserDataType: ${String(e)}`)}(t),this.dataType=t,this.serialize=n,this.deserialize=a}}class l extends s{atlasService;orgId="";projectId="";constructor(e,t,{orgId:n,projectId:a,atlasService:o,serialize:r,deserialize:i}){super(e,t,{serialize:r,deserialize:i}),this.atlasService=o,this.orgId=n,this.projectId=a}async write(e,t){const n=this.atlasService.userDataEndpoint(this.orgId,this.projectId,this.dataType,e);try{return this.validator.parse(t),await this.atlasService.authenticatedFetch(n,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({data:this.serialize(t),createdAt:new Date})}),!0}catch(e){return o.error(r(1001000373),"Atlas Backend","Error writing data",{url:n,error:e.message}),!1}}async delete(e){const t=this.atlasService.userDataEndpoint(this.orgId,this.projectId,this.dataType,e);try{return await this.atlasService.authenticatedFetch(t,{method:"DELETE"}),!0}catch(e){return o.error(r(1001000374),"Atlas Backend","Error deleting data",{url:t,error:e.message}),!1}}async readAll(){const e={data:[],errors:[]};try{const t=await this.atlasService.authenticatedFetch(this.atlasService.userDataEndpoint(this.orgId,this.projectId,this.dataType,void 0),{method:"GET"}),n=await t.json();for(const t of n)try{const n=this.deserialize(t.data);e.data.push(this.validator.parse(n))}catch(t){e.errors.push(t)}return e}catch(t){return e.errors.push(t),e}}async updateAttributes(e,t){const n=this.atlasService.userDataEndpoint(this.orgId,this.projectId,this.dataType,e);try{const a={...await this.readOne(e),...t};return await this.atlasService.authenticatedFetch(n,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({data:this.serialize(a),createdAt:new Date})}),!0}catch(e){return o.error(r(1001000375),"Atlas Backend","Error updating data",{url:n,error:e.message}),!1}}async readOne(e){const t=this.atlasService.userDataEndpoint(this.orgId,this.projectId,this.dataType,e);try{const e=await this.atlasService.authenticatedFetch(t,{method:"GET"}),n=await e.json();return this.validator.parse(this.deserialize(n.data))}catch(e){o.error(r(1001000376),"Atlas Backend","Error reading data",{url:t,error:e.message})}}}var c=n(21842)},60484:(e,t,n)=>{n(95039),n(59509),n(25691),n(23177),n(3142),n(51615),n(84217),n(25953),n(42319),n(28465),n(12887),n(36106),n(84542),n(57068),n(69517),n(81546);const a=n(5389),o=n(4579),{Collection:r}=n(40220),i=n(49862),s=new Map;function l(e){return{initialize(){e.forEach((e=>{if(e in this&&"function"==typeof this[e]){const n=this[e];this[e]=(t=n,function(...e){const n=this.isCollection?`${this.parent.cid}$$coll$$${t.name}`:`${this.cid}$$${t.name}`;if(s.has(n))return s.get(n);const a=t.call(this,...e).finally((()=>{s.delete(n)}));return s.set(n,a),a})}var t}))}}}function c(e){return e.parent??e.collection??null}function d(e,...t){let n=c(this);for(;n;)n.emit(e,...t),n=c(n)}function u(e,t){const n=c(e);return n?n.modelType===t?n:u(n,t):null}function m(e,t){return t||"ready"!==e}const p=a.extend(l(["fetch","fetchCollections"]),{modelType:"Database",idAttribute:"_id",props:{_id:"string",name:"string",status:{type:"string",default:"initial"},statusError:{type:"string",default:null},collectionsStatus:{type:"string",default:"initial"},collectionsStatusError:{type:"string",default:null},inferred_from_privileges:"boolean",collection_count:"number",document_count:"number",storage_size:"number",data_size:"number",index_count:"number",index_size:"number"},derived:{collectionsLength:{deps:["collection_count","collectionsStatus","collections"],fn(){return["ready","refreshing"].includes(this.collectionsStatus)?this.collections.length:this.collection_count??0}}},collections:{collections:r},async fetch({dataService:e,force:t=!1}){const n=u(this,"Instance").shouldFetchDbAndCollStats();if(m(this.status,t))if(n)try{const t="initial"===this.status?"fetching":"refreshing";this.set({status:t});const n=await e.databaseStats(this.getId());this.set({status:"ready",statusError:null,...n})}catch(e){throw this.set({status:"error",statusError:e.message}),e}else this.set({status:"ready"})},async fetchCollections({dataService:e,force:t=!1}){if(m(this.collectionsStatus,t))try{const n="initial"===this.collectionsStatus?"fetching":"refreshing";this.set({collectionsStatus:n}),await this.collections.fetch({dataService:e,force:t}),this.set({collectionsStatus:"ready",collectionsStatusError:null})}catch(e){throw this.set({collectionsStatus:"error",collectionsStatusError:e.message}),e}},async fetchCollectionsDetails({dataService:e,nameOnly:t=!1,force:n=!1}){await this.fetchCollections({dataService:e,force:n}),t||await Promise.allSettled(this.collections.map((t=>t.fetch({dataService:e,fetchInfo:!1,force:n}))))},toJSON(e={derived:!0}){return this.serialize(e)}}),h=o.extend(function(...e){return{initialize(...t){e.forEach((({initialize:e})=>{e.call(this,...t)}))}}}(l(["fetch"]),(g="databases",{initialize(){if(this.isCollection){this.on("add",d.bind(this,`add:${g}`)),this.on("remove",d.bind(this,`remove:${g}`)),this.on("change",d.bind(this,`change:${g}`));for(const e of Object.keys(this.model.prototype._definition))this.on(`change:${e}`,d.bind(this,`change:${g}.${e}`))}}})),{modelType:"DatabaseCollection",mainIndex:"_id",indexes:["name"],comparator:"_id",model:p,async fetch({dataService:e}){const t=u(this,"Instance");if(!t)throw new Error(`Trying to fetch ${this.modelType} that doesn't have the Instance parent model`);const n=t.shouldFetchNamespacesFromPrivileges(),a=await e.listDatabases({nameOnly:!0,fetchNamespacesFromPrivileges:n,privileges:t.auth.privileges,roles:t.auth.roles});this.set(a.filter((e=>{const t=i(e._id);return!t.internal||"__mdb_internal_search"===t.database})).map((({_id:e,name:t,inferred_from_privileges:n})=>({_id:e,name:t,inferred_from_privileges:n}))))},toJSON(e={derived:!0}){return this.map((t=>t.toJSON(e)))}});var g;h.prototype[Symbol.iterator]=function*(){for(let e=0,t=this.length;e<t;e++)yield this.at(e)},e.exports=p,e.exports.Collection=h},62086:()=>{},64113:()=>{throw new Error("Module not supported in the browser environment")},65654:(e,t,n)=>{n.d(t,{A:()=>h});var a=n(71520),o=n.n(a),r=n(76507),i=n.n(r),s=n(12196),l=n(40259),c=n(78109),d=o()(!1),u=i()(s),m=i()(l),p=i()(c);d.push([e.id,".leaflet-draw-toolbar a {\n background-image: url("+u+");\n background-image: linear-gradient(transparent, transparent),\n url("+m+");\n}\n\n.leaflet-retina .leaflet-draw-toolbar a {\n background-image: url("+p+");\n background-image: linear-gradient(transparent, transparent),\n url("+m+");\n}\n",""]);const h=d},66363:()=>{},67092:(e,t,n)=>{n.d(t,{II:()=>I,Ay:()=>N,TB:()=>i,IM:()=>y,q2:()=>k,j$:()=>S,P6:()=>E}),n(95039);var a=n(90605),o=n(13353),r=n(34110).Buffer;function i(e){return e?.[o.bsonType]}const s="Long",l="Int64",c=/\[object (\w+)\]/,d=2147483647,u=-2147483648,m=Math.pow(2,63)-1,p=-m,h=/^-?\d+$/,g=["Long","Int32","Double","Decimal128"],f=["UUID","LegacyJavaUUID","LegacyCSharpUUID","LegacyPythonUUID"];function y(e){return f.includes(e)}const b=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,v=e=>{if(!b.test(e))throw new Error(`'${e}' is not a valid UUID string (expected format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)`)},C=e=>e.replace(/-/g,""),E=e=>e.substring(0,8)+"-"+e.substring(8,12)+"-"+e.substring(12,16)+"-"+e.substring(16,20)+"-"+e.substring(20,32),S=e=>{let t=e.substring(0,16),n=e.substring(16,32);return t=t.substring(14,16)+t.substring(12,14)+t.substring(10,12)+t.substring(8,10)+t.substring(6,8)+t.substring(4,6)+t.substring(2,4)+t.substring(0,2),n=n.substring(14,16)+n.substring(12,14)+n.substring(10,12)+n.substring(8,10)+n.substring(6,8)+n.substring(4,6)+n.substring(2,4)+n.substring(0,2),t+n},k=e=>e.substring(6,8)+e.substring(4,6)+e.substring(2,4)+e.substring(0,2)+(e.substring(10,12)+e.substring(8,10))+(e.substring(14,16)+e.substring(12,14))+e.substring(16,32),w=()=>(new o.UUID).toString(),x=(e,t)=>{const n=e.toString("hex");if(e.sub_type===o.Binary.SUBTYPE_UUID)return E(n);switch(t){case"Java":return E(S(n));case"CSharp":return E(k(n));default:return E(n)}},A=(e,t)=>e instanceof o.Binary&&(e.sub_type===o.Binary.SUBTYPE_UUID||e.sub_type===o.Binary.SUBTYPE_UUID_OLD)?x(e,t):(0,a.toString)(e).trim(),D=Object.assign(Object.create(null),{UUID:void 0,LegacyJavaUUID:"Java",LegacyCSharpUUID:"CSharp",LegacyPythonUUID:"Python"}),I=(e,t,n)=>{const a=D[t],r=x(e,a),i=C(r);switch(n){case"UUID":return o.Binary.createFromHexString(i,o.Binary.SUBTYPE_UUID);case"LegacyJavaUUID":return o.Binary.createFromHexString(S(i),o.Binary.SUBTYPE_UUID_OLD);case"LegacyCSharpUUID":return o.Binary.createFromHexString(k(i),o.Binary.SUBTYPE_UUID_OLD);case"LegacyPythonUUID":return o.Binary.createFromHexString(i,o.Binary.SUBTYPE_UUID_OLD);default:throw new Error(`Unknown UUID type: ${n}`)}},M={Array:e=>(0,a.isArray)(e)?e:(0,a.isPlainObject)(e)?[]:[e],Binary:e=>{const t=ArrayBuffer.isView(e)?r.from(e):r.from((0,a.toString)(e),"utf8");return new o.Binary(t,o.Binary.SUBTYPE_DEFAULT)},Boolean:e=>{if((0,a.isString)(e)){if("true"===e.toLowerCase())return!0;if("false"===e.toLowerCase())return!1;throw new Error(`'${e}' is not a valid boolean string`)}return!!e},Code:e=>new o.Code((0,a.toString)(e)),Date:e=>new Date(e),Decimal128:e=>{if(g.includes(i(e))){const t=e;e=i(e)===s?t.toString():t.valueOf()}return o.Decimal128.fromString((0,a.toString)(e))},Double:e=>{if("-"===e||""===e)throw new Error(`Value '${e}' is not a valid Double value`);if((0,a.isString)(e)&&e.endsWith("."))throw new Error("Please enter at least one digit after the decimal");const t=(0,a.toNumber)(e);return new o.Double(t)},Int32:e=>{if("-"===e||""===e)throw new Error(`Value '${e}' is not a valid Int32 value`);const t=(0,a.toNumber)(e);if(t>=u&&t<=d)return new o.Int32(t);throw new Error(`Value ${t} is outside the valid Int32 range`)},Int64:e=>{if("-"===e||""===e)throw new Error(`Value '${e}' is not a valid Int64 value`);const t=(0,a.toNumber)(e);if(t>=p&&t<=m)return e?.value||"number"==typeof e?o.Long.fromNumber(t):"object"==typeof e&&null!==e&&"toString"in e?o.Long.fromString(e.toString()):o.Long.fromString((0,a.toString)(e));throw new Error(`Value ${(0,a.toString)(e)} is outside the valid Int64 range`)},MaxKey:()=>new o.MaxKey,MinKey:()=>new o.MinKey,Null:()=>null,Object:e=>(0,a.isPlainObject)(e)?e:{},ObjectId:e=>(0,a.isString)(e)&&""!==e?o.ObjectId.createFromHexString(e):new o.ObjectId,BSONRegExp:e=>new o.BSONRegExp((0,a.toString)(e)),String:a.toString,BSONSymbol:e=>new o.BSONSymbol((0,a.toString)(e)),Timestamp:e=>{const t=(0,a.toNumber)(e);return o.Timestamp.fromNumber(t)},Undefined:()=>{},UUID:e=>{const t=A(e);if(!t)return(new o.UUID).toBinary();v(t);const n=C(t);return o.Binary.createFromHexString(n,o.Binary.SUBTYPE_UUID)},LegacyJavaUUID:e=>{let t=A(e,"Java");t?v(t):t=w();const n=C(t),a=S(n);return o.Binary.createFromHexString(a,o.Binary.SUBTYPE_UUID_OLD)},LegacyCSharpUUID:e=>{let t=A(e,"CSharp");t?v(t):t=w();const n=C(t),a=k(n);return o.Binary.createFromHexString(a,o.Binary.SUBTYPE_UUID_OLD)},LegacyPythonUUID:e=>{let t=A(e,"Python");t?v(t):t=w();const n=C(t);return o.Binary.createFromHexString(n,o.Binary.SUBTYPE_UUID_OLD)}},T=(0,a.keys)(M),L=new class{test(e){if(h.test(e)){const t=(0,a.toNumber)(e);return t>=u&&t<=d}return!1}},O=new class{test(e){return!!h.test(e)&&Number.isSafeInteger((0,a.toNumber)(e))}},N=new class{cast(e,t){const n=M[t];let a=e;return n&&(a=n(e)),"[object Object]"===a&&a!==e?"":a}type(e,t){const n=i(e);if(n){if(n===s)return l;if("Binary"===n){const n=e;if(n.sub_type===o.Binary.SUBTYPE_UUID)return"UUID";if(n.sub_type===o.Binary.SUBTYPE_UUID_OLD&&16===n.buffer.length&&t)return t}return n}return(0,a.isNumber)(e)?(e=>{const t=(0,a.toString)(e);return L.test(t)?"Int32":O.test(t)?l:"Double"})(e):(0,a.isPlainObject)(e)?"Object":(0,a.isArray)(e)?"Array":Object.prototype.toString.call(e).replace(c,"$1")}castableTypes(e=!1){return!0===e?T:(0,a.without)(T,"Decimal128")}}},69470:()=>{},70918:(e,t,n)=>{n.d(t,{A2:()=>c,Ct:()=>l,Op:()=>h,aC:()=>u,wT:()=>p}),n(59509),n(25691),n(23177),n(3142),n(51615),n(84217),n(25953),n(42319),n(28465),n(12887),n(36106),n(84542),n(57068),n(69517);var a=n(96652),o=n(6924),r=n(78332);const i={close:new Map,replace:new Map},s=(e,t)=>{const n=i[e].get(t.id)??[];for(const e of n)if(!1===e())return!1;return!0},l=e=>s("close",e),c=e=>s("replace",e),d=(e,t,n)=>{const a=i[e],o=a.get(t)??[];return a.set(t,o.concat(n)),()=>{u(e,t,n)}},u=(e,t,n)=>{n&&t&&e?i[e].set(t,(i[e].get(t)??[]).filter((e=>e!==n))):t&&e?i[e].delete(t):e?i[e].clear():Object.values(i).forEach((e=>{e.clear()}))};function m(e,t){const n=(0,o.BE)(),i=(0,r.HIF)(t);(0,a.useEffect)((()=>d(e,n,(()=>i.current()))),[e,n,i])}m.bind(null,"close");const p=m.bind(null,"replace");function h(){let e;try{e=(0,o.BE)()}catch{}if(e)return{onTabClose:d.bind(null,"close",e),onTabReplace:d.bind(null,"replace",e)}}},72176:()=>{},73578:function(e){var t;t=function(e){return function(){let t=function(){return"n"},n=function(){return[0,0]},a=u(),o=function(){return" "},r=null,i=null,s=null;function l(e){r=function(e){if(e=e.node())return"svg"===e.tagName.toLowerCase()?e:e.ownerSVGElement}(e),r&&(i=r.createSVGPoint(),document.body.appendChild(a))}l.show=function(){const e=Array.prototype.slice.call(arguments);e[e.length-1]instanceof SVGElement&&(s=e.pop());const a=o.apply(this,e),r=n.apply(this,e),i=t.apply(this,e),u=m(),p=document.documentElement.scrollTop||document.body.scrollTop,h=document.documentElement.scrollLeft||document.body.scrollLeft;let g=d.length,f=null;for(u.html(a).style({opacity:1,"pointer-events":"all",display:"block"});g--;)u.classed(d[g],!1);return f=c.get(i).apply(this),u.classed(i,!0).style({top:(f.top+r[0]+p).toString()+"px",left:(f.left+r[1]+h).toString()+"px"}),l},l.hide=function(){return m().style({opacity:0,"pointer-events":"none",display:"none"}),l},l.attr=function(t,n){if(arguments.length<2&&"string"==typeof t)return m().attr(t);{const t=Array.prototype.slice.call(arguments);e.selection.prototype.attr.apply(m(),t)}return l},l.style=function(t,n){if(arguments.length<2&&"string"==typeof t)return m().style(t);{const t=Array.prototype.slice.call(arguments);e.selection.prototype.style.apply(m(),t)}return l},l.direction=function(n){return arguments.length?(t=null==n?n:e.functor(n),l):t},l.offset=function(t){return arguments.length?(n=null==t?t:e.functor(t),l):n},l.html=function(t){return arguments.length?(o=null==t?t:e.functor(t),l):o},l.destroy=function(){return a&&(m().remove(),a=null),l};const c=e.map({n:function(){const e=p();return{top:e.n.y-a.offsetHeight,left:e.n.x-a.offsetWidth/2}},s:function(){const e=p();return{top:e.s.y,left:e.s.x-a.offsetWidth/2}},e:function(){const e=p();return{top:e.e.y-a.offsetHeight/2,left:e.e.x}},w:function(){const e=p();return{top:e.w.y-a.offsetHeight/2,left:e.w.x-a.offsetWidth}},nw:function(){const e=p();return{top:e.nw.y-a.offsetHeight,left:e.nw.x-a.offsetWidth}},ne:function(){const e=p();return{top:e.ne.y-a.offsetHeight,left:e.ne.x}},sw:function(){const e=p();return{top:e.sw.y,left:e.sw.x-a.offsetWidth}},se:function(){const e=p();return{top:e.se.y,left:e.e.x}}}),d=c.keys();function u(){const t=e.select(document.createElement("div"));return t.style({position:"absolute",top:0,opacity:0,"pointer-events":"none","box-sizing":"border-box",display:"none"}),t.node()}function m(){return null===a&&(a=u(),document.body.appendChild(a)),e.select(a)}function p(){let t=s;for(t||(t=e.event.target);void 0===t.getScreenCTM&&"undefined"!==t.parentNode;)t=t.parentNode;const n={},a=t.getScreenCTM(),o=t.getBBox(),r=o.width,l=o.height,c=o.x,d=o.y;return i.x=c,i.y=d,n.nw=i.matrixTransform(a),i.x+=r,n.ne=i.matrixTransform(a),i.y+=l,n.se=i.matrixTransform(a),i.x-=r,n.sw=i.matrixTransform(a),i.y-=l/2,n.w=i.matrixTransform(a),i.x+=r,n.e=i.matrixTransform(a),i.x-=r/2,i.y-=l/2,n.n=i.matrixTransform(a),i.y+=l,n.s=i.matrixTransform(a),n}return l}},e.exports?e.exports=function(e){return e.tip=t(e),e.tip}:this.d3.tip=t(this.d3)},73850:(e,t,n)=>{function a(){return{}}n.d(t,{A:()=>a})},75227:(e,t,n)=>{n.r(t),n.d(t,{default:()=>a});const a=n(4308).promises},75531:()=>{},79498:(e,t,n)=>{n.r(t),n.d(t,{TIMEOUT:()=>r,default:()=>s,promises:()=>i});var a=n(82844);const o=n(15088).process.env.COMPASS_WEB_DOH_ENDPOINT??["dns.google","dns.cloudflare.com"],r="ETIMEOUT",i={resolve:async function(e,t){if("SRV"===t)return await async function(e){const{answers:t}=await(0,a.P)({question:{type:"SRV",name:e}},{endpoints:o});return t?.flatMap((e=>"SRV"===e.type?{...e.data,name:e.data.target}:[]))??[]}(e);if("TXT"===t)return await async function(e){const{entries:t}=await(0,a.t4)(e,{endpoints:o});return t.map((e=>[e.data]))}(e);throw new Error(`Unsupported rrtype for dns.resolve polyfill: ${t}`)}},s={promises:i,TIMEOUT:r}},81358:(e,t,n)=>{n.d(t,{VU:()=>o,mC:()=>i,cF:()=>s}),n(95039);var a=n(67092);const o=(e,t)=>{const n=(0,a.TB)(e),o=(0,a.TB)(t);if(n&&"string"==typeof n&&o&&"string"==typeof o)return"ObjectId"===n?e.equals(t):["Decimal128","Long"].includes(n)?e.toString()===t.toString():["Int32","Double"].includes(n)?e.value===t.value:void 0};var r=n(90605);const i=(e,t)=>{if(void 0===e)return!1;if((0,r.isPlainObject)(e)&&(0,r.has)(e,"$in")){const n=e.$in;return(0,r.some)(n,(e=>(0,r.isEqualWith)(t,e,o)))}return(0,r.isEqualWith)(e,t,o)},s=(e,t)=>{const n={$gte:function(e,t){return e>=t},$gt:function(e,t){return e>t},$lte:function(e,t){return e<=t},$lt:function(e,t){return e<t},$exists:function(e,t){return e||t},$eq:function(e,t){return e===t}},a=[],i=[];(0,r.isPlainObject)(e)?(0,r.forOwn)(e,(function(e,t){const o=n[t];o&&(a.push((0,r.curryRight)(o)(e)),i.push(e))})):(a.push((function(t){return(0,r.isEqualWith)(t,e,o)})),i.push(e));const s=(0,r.get)(t,"dx",null),l=s?(0,r.uniq)([t.value,t.value+s]):[t.bson||t.value],c=(0,r.map)(l,(function(e,t){return t>0&&(e-=1e-5*Math.abs(e)+1e-5),(0,r.every)((0,r.map)(a,(function(t){return t(e)})))}));return(0,r.every)(c)?"yes":(0,r.some)(c)||(0,r.every)(i,(function(e){return e>l[0]&&e<l[l.length-1]}))?"partial":"no"}},81895:(e,t,n)=>{n.d(t,{p:()=>r});var a=n(17931),o=n(83145);const r=()=>{const e=(0,o.RI)(a.C.searchActivationProgramP1,!0);return{enableSearchActivationProgramP1:e?.assignment?.assignmentData?.variant===a.q.searchActivationProgramP1Variant}}},83145:(e,t,n)=>{n.d(t,{RI:()=>c,SJ:()=>s,Y1:()=>l,qv:()=>d});var a=n(96652),o=n.n(a),r=n(78332);const i={useAssignment:()=>({assignment:null,asyncStatus:"SUCCESS",error:null,isLoading:!1,isError:!1,isSuccess:!0}),assignExperiment:()=>Promise.resolve(null),getAssignment:()=>Promise.resolve(null),useTrackInSample:()=>({asyncStatus:null,error:null,isLoading:!1,isError:!1,isSuccess:!0})},s=(0,a.createContext)(i),l=({children:e,useAssignment:t,assignExperiment:n,getAssignment:a,useTrackInSample:i})=>{const l=(0,r.nfZ)({useAssignment:t,assignExperiment:n,getAssignment:a,useTrackInSample:i});return Object.assign(l,{useAssignment:t,assignExperiment:n,getAssignment:a,useTrackInSample:i}),o().createElement(s.Provider,{value:l},e)},c=(...e)=>(0,a.useContext)(s).useAssignment(...e),d=(...e)=>(0,a.useContext)(s).useTrackInSample(...e)},83265:()=>{},86983:()=>{},88992:()=>{},89951:(e,t,n)=>{n.d(t,{A:()=>i});var a=n(94664),o=n.n(a);function r(e){this[e]?console.warn("Not attaching event "+String(e)+"; key already exists"):this[e]=o().createAction()}const i={store:()=>({setState:function(e){let t=!1;const n={...this.state};for(const n of Object.keys(e))this.state[n]!==e[n]&&(this.state[n]=e[n],this[n].trigger(e[n]),t=!0);t&&("function"==typeof this.storeDidUpdate&&this.storeDidUpdate(n),this.trigger(this.state))},init:function(){if("function"==typeof this.getInitialState){this.state=this.getInitialState();for(const e of Object.keys(this.state))r.call(this,e)}}})}},91136:()=>{},91399:(e,t,n)=>{t.MongoDBInstance=n(56130),t.TopologyType=n(99091),t.ServerType=n(28937),n(36430)},93276:(e,t,n)=>{n.d(t,{A:()=>r});var a=n(71520),o=n.n(a)()(!1);o.push([e.id,".marker-popup-module-popup__Z3L5O {\n pointer-events: none;\n}\n.leaflet-popup-content-wrapper {\n background-color: rgba(255, 255, 255, 0.95) !important;\n border-radius: 3px !important;\n}\n.leaflet-container {\n font-family: 'Euclid Circular A', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n font-size: 12px;\n z-index: 1;\n background-color: transparent;\n}\n.marker-popup-module-line__m3D1L {\n display: block;\n}\n.marker-popup-module-key__0m30l {\n color: #889397;\n}\n.marker-popup-module-value__XTOzl {\n font-weight: 500;\n}\n",""]),o.locals={popup:"marker-popup-module-popup__Z3L5O",line:"marker-popup-module-line__m3D1L",key:"marker-popup-module-key__0m30l",value:"marker-popup-module-value__XTOzl"};const r=o},93885:(e,t,n)=>{n.d(t,{n4:()=>s,A0:()=>r,Qn:()=>l});var a=n(96652),o=n(62183);class r{connections;constructor(e=[]){this.connections=[...e]}static async createAsync(e){const t=await(e?.())??[];return new r(t)}loadAll(){return Promise.resolve(this.connections)}load({id:e}){return Promise.resolve(this.connections.find((t=>t.id===e)))}_save({connectionInfo:e}){const t=this.connections.findIndex((t=>t.id===e.id));if(-1!==t){const n=this.connections[t];this.connections.splice(t,1,{...n,...e})}else this.connections.push(e)}save({connectionInfo:e}){return this._save({connectionInfo:e}),Promise.resolve()}delete({id:e}){const t=this.connections.findIndex((t=>t.id===e));return-1!==t&&this.connections.splice(t,1),Promise.resolve()}importConnections(){return Promise.resolve()}exportConnections(){return Promise.resolve("")}deserializeConnections(){return Promise.resolve([])}}const i=(0,a.createContext)(null),s=i.Provider,l=(0,o.mb)((function(){const e=(0,a.useContext)(i);if(!e)throw new Error("Could not find the current ConnectionStorage. Did you forget to setup the ConnectionStorageProvider?");return e}),"connectionStorageLocator")},94134:(e,t,n)=>{n.d(t,{Ng:()=>c,Pj:()=>s,d4:()=>l,hN:()=>i});var a=n(96652),o=n.n(a),r=n(19125);const i=o().createContext(null),s=(0,r.Nk)(i),l=((0,r.iI)(i),(0,r.jO)(i)),c=(e,t=null,n=null)=>(0,r.Ng)(e,t,n,{context:i})},94185:()=>{},96062:()=>{},96452:(e,t,n)=>{n.d(t,{T8:()=>r}),n(90605);var a=n(95012);n(70140),n(41652);const o=new WeakMap;function r(e){let t=o.get(e);if(t)return t;if(e.atlasMetadata?.clusterName)t=e.atlasMetadata.clusterName;else if(e.favorite?.name)t=e.favorite.name;else try{t=new a.Ay(e.connectionOptions.connectionString).hosts.join(",")}catch{t=e.connectionOptions.connectionString||"Connection"}return o.set(e,t),t}},96652:e=>{e.exports=window.__compassWebSharedRuntime.React},97781:(e,t,n)=>{n.r(t),n.d(t,{channel:()=>r,default:()=>d,hasSubscribers:()=>s,subscribe:()=>l,tracingChannel:()=>i,unsubscribe:()=>c});const a={hasSubscribers:!1,publish(){},subscribe(){},unsubscribe(){}},o={hasSubscribers:!1,tracePromise:e=>e(),traceSync:e=>e(),traceCallback:(e,...t)=>e(...t),start:a,end:a,asyncStart:a,asyncEnd:a,error:a};function r(e){return a}function i(e){return o}function s(e){return!1}function l(){}function c(){}const d={channel:r,tracingChannel:i,hasSubscribers:s,subscribe:l,unsubscribe:c}},99091:(e,t,n)=>{n(95039);const a="Single",o="ReplicaSetNoPrimary",r="ReplicaSetWithPrimary",i="Sharded",s="LoadBalanced",l="Unknown",c=[a,o,r,i,s,l],d=["primaryPreferred","secondary","secondaryPreferred","nearest"],u=d.concat(["primary"]),m=[a,r,s,i],p={Single:"Single",ReplicaSetNoPrimary:"Replica Set (No Primary)",ReplicaSetWithPrimary:"Replica Set (With Primary)",Sharded:"Sharded Cluster",LoadBalanced:"Using Load Balancer",Unknown:"Unknown"};e.exports={humanize:e=>p[e],isWritable:e=>m.includes(e),isReadable:(e,t)=>{switch(e){case l:return!1;case o:return d.includes(t);case r:return u.includes(t);default:return!0}},SINGLE:a,REPLICA_SET_NO_PRIMARY:o,REPLICA_SET_WITH_PRIMARY:r,SHARDED:i,LOAD_BALANCED:s,UNKNOWN:l,TOPOLOGY_TYPES:c,WRITABLE_TOPOLOGY_TYPES:m}}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={id:e,loaded:!1,exports:{}};return a[e].call(n.exports,n,n.exports,r),n.loaded=!0,n.exports}r.m=a,r.amdO={},e=[],r.O=(t,n,a,o)=>{if(!n){var i=1/0;for(d=0;d<e.length;d++){for(var[n,a,o]=e[d],s=!0,l=0;l<n.length;l++)(!1&o||i>=o)&&Object.keys(r.O).every((e=>r.O[e](n[l])))?n.splice(l--,1):(s=!1,o<i&&(i=o));if(s){e.splice(d--,1);var c=a();void 0!==c&&(t=c)}}return t}o=o||0;for(var d=e.length;d>0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[n,a,o]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},n=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var o=Object.create(null);r.r(o);var i={};t=t||[null,n({}),n([]),n(n)];for(var s=2&a&&e;("object"==typeof s||"function"==typeof s)&&!~t.indexOf(s);s=n(s))Object.getOwnPropertyNames(s).forEach((t=>i[t]=()=>e[t]));return i.default=()=>e,r.d(o,i),o},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var i,s=r;export{s as __webpack_require__};i={456:0},r.C=e=>{var t,n,{__webpack_esm_ids__:a,__webpack_esm_modules__:o,__webpack_esm_runtime__:s}=e,l=0;for(t in o)r.o(o,t)&&(r.m[t]=o[t]);for(s&&s(r);l<a.length;l++)n=a[l],r.o(i,n)&&i[n]&&i[n][0](),i[a[l]]=0;r.O()},r.O.j=e=>0===i[e],r.nc=void 0;import*as l from"./872.8e7d5b8a3b8fcff75118.mjs";r.C(l);import*as c from"./810.c52538ab1ee7a0892ac8.mjs";r.C(c);import*as d from"./260.22d04797e908a8464d8f.mjs";r.C(d);import*as u from"./65.0f0eb2e998535a138203.mjs";r.C(u);import*as m from"./318.e28eef3a6f052df2dd22.mjs";r.C(m);import*as p from"./568.5af0b00ce345e98d8b78.mjs";r.C(p);import*as h from"./641.9949264e344f753ec909.mjs";r.C(h);import*as g from"./112.cc6e81f79429e73c45e2.mjs";r.C(g);import*as f from"./302.21e186c638bb98594c8f.mjs";r.C(f);import*as y from"./797.f011900fbc0adc5fef75.mjs";r.C(y);import*as b from"./128.2ec06394c7c1718c925f.mjs";r.C(b);import*as v from"./index-bde52cb3.79ced92f5eb98874dbcb.mjs";r.C(v);import*as C from"./index-0b9a48a6.23a217523e1f14bb9fce.mjs";r.C(C);var E=r.O(void 0,[872,810,260,65,318,568,641,112,302,797,128,354,923],(()=>r(49797)));const S=(E=r.O(E)).Y1,k=E.JV,w=E.qP,x=E.Cv;export{S as CompassExperimentationProvider,k as CompassWeb,w as ExperimentTestGroups,x as ExperimentTestNames};
182
+ `},Zs=Gs(!1),Js=Gs(!0),Qs=({onApplyClicked:e})=>r().createElement(d.HYq,{icon:ws,title:"Explore your schema",subTitle:"Quickly visualize your schema to understand the frequency, types and ranges of fields in your data set.",callToAction:r().createElement(d.$nd,{onClick:e,"data-testid":"analyze-schema-button",variant:"primary",size:"small"},"Analyze schema"),callToActionLink:r().createElement(d.N_E,{href:"https://docs.mongodb.com/compass/master/schema/",target:"_blank"},"Learn more about schema analysis")}),Xs=({onCancelClicked:e})=>r().createElement("div",{className:Bs},r().createElement(d.yao,{"data-testid":"analyzing-documents",progressText:"Analyzing Documents",cancelText:"Stop",onCancel:e})),el=({schema:e,analysisState:t})=>{const n=(0,d.D27)();if(t!==Po)return null;const o=e?.fields??[];return 0===o.length?r().createElement(d.HYq,{icon:d.pyG,title:"No results",subTitle:"Try modifying your query to get results."}):r().createElement("div",{className:(0,d.cx)(zs,n?Js:Zs)},r().createElement("div",{"data-testid":"schema-field-list"},o.map((e=>r().createElement(ks,(0,a.A)({key:e.name},e))))))},tl="Atlas’ Performance Advisor.",nl=()=>{const e=(0,s.qm)(),t=(0,re.Jr)(),[n,a]=(0,d.yRS)("mongodb_compass_dismissedSearchIndexesBanner",!1);return n?r().createElement(r().Fragment,null):r().createElement(d.lZ$,{variant:"info",dismissible:!0,onClose:()=>a(!0)},r().createElement(d.nBu,{weight:"medium"},"Looking for schema anti-patterns?"),"In its place, you may refer to Data Explorer’s performance insights"," ",r().createElement(d.Exy,{className:qs,variant:"blue"},r().createElement(d.Int,{glyph:"Bulb",size:"small"}),"Insight")," ","or"," ",e.atlasMetadata?r().createElement(d.N_E,{href:zo(e.atlasMetadata),onClick:()=>t("Performance Advisor Clicked",{},e),hideExternalIcon:!0},tl):tl)},al=(0,Ee.Ng)((e=>({analysisState:e.schemaAnalysis.analysisState,isExportSchemaModalOpen:e.schemaExport.isOpen,schema:e.schemaAnalysis.schema})),{onStartAnalysis:()=>async(e,t,{queryBar:n,preferences:a,logger:{debug:o,log:r},dataService:i,logger:s,fieldStoreService:l,analysisAbortControllerRef:c,schemaAccessorRef:d,namespace:u,geoLayersRef:m,connectionInfoRef:h,track:g})=>{const{schemaAnalysis:{analysisState:f}}=t();if(f===Fo)return void o("analysis already in progress. ignoring subsequent start");g("Schema Analysis Started",{},h.current);const y=n.getLastAppliedQuery("schema"),b=y.limit?Math.min(1e3,y.limit):1e3,v={query:y.filter??{},size:b,fields:y.project??void 0},C={maxTimeMS:(0,R.Tv)(a,y.maxTimeMS),hint:y.hint??void 0};c.current=new AbortController;const E=c.current.signal,S=Date.now();try{o("analysis started"),e({type:Yo,analysisStartTime:S});const t=await Vo(i,E,u,v,C,s);if(E?.aborted)throw new Error(E?.reason||new Error("Operation aborted"));d.current=t;let n=null;t&&(n=await t.getInternalSchema(),n.fields=n.fields.filter((({path:e})=>!(0,Wo.v6)(e[0]))));const a=Date.now()-S;null!==n&&l.updateFieldsFromSchema(u,n),e({type:qo,schema:n}),g("Schema Analyzed",(({schema:e,query:t,analysisTime:n})=>async()=>{const{field_types:a,geo_data:o,optional_field_count:r,schema_depth:i,variable_type_count:s,distinct_field_count:l}=e?await jo(e):{field_types:{},geo_data:!1,optional_field_count:0,schema_depth:0,variable_type_count:0,distinct_field_count:0};return{with_filter:Object.entries(t.filter??{}).length>0,schema_width:e?.fields?.length??0,field_types:a,variable_type_count:s,optional_field_count:r,schema_depth:i,geo_data:o,distinct_field_count:l,analysis_time_ms:n}})({schema:n,query:y,analysisTime:a}),h.current),m.current={}}catch(t){if(E?.aborted)return void e({type:Go,error:t});const n=Jo(t),a=Date.now()-S;g("Schema Analysis Failed",{error_type:n.errorType,with_filter:Object.entries(y.filter??{}).length>0,analysis_time_ms:a},h.current),r.error((0,p.oW)(1001000188),"Schema analysis","Error sampling schema",{error:t.stack}),e({type:Go,error:t})}finally{c.current=void 0}},onStopAnalysis:()=>(e,t,{analysisAbortControllerRef:n,connectionInfoRef:a,queryBar:o,track:r})=>{if(!n.current)return;const i=Date.now()-(t().schemaAnalysis.analysisStartTime??0),s=o.getLastAppliedQuery("schema");r("Schema Analysis Cancelled",{analysis_time_ms:i,with_filter:Object.entries(s.filter??{}).length>0},a.current),n.current?.abort("Analysis cancelled")},onExportSchemaClicked:dr})((({analysisState:e,isExportSchemaModalOpen:t,schema:n,onStartAnalysis:a,onStopAnalysis:i})=>{const s=(0,o.useCallback)((()=>{a()}),[a]),[l,c]=(0,o.useState)(!1),u=(0,Lo.PW)("schema"),m=(0,R.Fg)("enablePerformanceAdvisorBanner");return r().createElement(r().Fragment,null,r().createElement("div",{className:js},r().createElement(d.XvC,{toolbar:r().createElement(Sr,{onAnalyzeSchemaClicked:s,onResetClicked:s,showLegacyExportTooltip:l&&!t,setShowLegacyExportTooltip:c,isOutdated:!!u})},r().createElement("div",{className:Ys},m&&r().createElement(nl,null),e===_o&&r().createElement(Qs,{onApplyClicked:s}),e===Fo&&r().createElement(Xs,{onCancelClicked:i}),e===Po&&r().createElement(el,{schema:n,analysisState:e})))),r().createElement(Ps,null),r().createElement(Ks,{setShowLegacyExportTooltip:c}))})),ol=(0,F.HY)({schemaAnalysis:(e=(()=>({analysisState:_o,schema:null,resultId:Qo()}))(),t)=>Bo(t,Yo)?{...e,analysisStartTime:t.analysisStartTime,analysisState:Fo,error:void 0,schema:null}:Bo(t,qo)?{...e,analysisState:t.schema?Po:_o,schema:t.schema,resultId:Qo()}:Bo(t,Go)?{...e,error:Jo(t.error),analysisState:_o,resultId:Qo()}:Bo(t,Zo)?{...e,error:void 0}:e,schemaExport:(e=(()=>({errorMessage:void 0,exportFormat:er,exportStatus:"inprogress",exportedSchema:void 0,isOpen:!1,isLegacyModalOpen:!1,legacyModalChoice:void 0}))(),t)=>Bo(t,tr)?{...e,isOpen:!0}:Bo(t,nr)?{...e,isOpen:!1}:Bo(t,ar)?{...e,isLegacyModalOpen:!0}:Bo(t,or)?{...e,isLegacyModalOpen:!1}:Bo(t,rr)?{...e,legacyModalChoice:t.choice}:Bo(t,ir)?{...e,exportStatus:"inprogress",exportFormat:t.exportFormat}:Bo(t,lr)?{...e,errorMessage:t.errorMessage,exportStatus:"error"}:Bo(t,sr)?{...e,exportedSchema:t.exportedSchema,filename:t.filename,exportStatus:"complete"}:Bo(t,cr)?{...e,exportStatus:"error",errorMessage:"cancelled",abortController:void 0}:e});var rl=n(25607);const il={name:"Schema",provider:(0,i.nk)({name:"CompassSchemaPlugin",component:function({children:e,...t}){return r().createElement(r().Fragment,null,r().isValidElement(e)?r().cloneElement(e,t):null)},activate:function({namespace:e},t,{on:n,cleanup:a,addCleanup:o}){const r=function(e,t){return(0,F.y$)(ol,(0,F.Tw)(P.A.withExtraArgument({...e,analysisAbortControllerRef:{current:void 0},exportAbortControllerRef:{current:void 0},schemaAccessorRef:{current:void 0},geoLayersRef:{current:{}},namespace:t})))}(t,e);return n(t.localAppRegistry,"menu-share-schema-json",(()=>{r.dispatch(((e,t)=>{const n=t().schemaExport.legacyModalChoice,a=n||localStorage.getItem(fr);if(a){if(a!==n&&e({type:rr,choice:a}),"legacy"===a)return void e(yr());if("export"===a)return void e(dr())}e({type:ar})}))})),o((()=>r.dispatch(((e,t,{analysisAbortControllerRef:n})=>{n.current&&n.current?.abort()})))),o((()=>r.dispatch(ur()))),{store:r,deactivate(){a()}}}},{dataService:s.S1,logger:(0,p.fF)("COMPASS-SCHEMA-UI"),track:re.yL,preferences:R.fx,fieldStoreService:rl.bM,queryBar:Lo.hx,connectionInfoRef:s.wj}),content:al,header:()=>r().createElement("div",{"data-testid":"schema-tab-title"},"Schema")};var sl=n(23476);const ll=(0,m.Ay)(""),cl="4.0.0";var dl=n(69692);function ul(e,t){return e.type===t}const ml="validation/edit-mode/EDIT_MODE_CHANGED",pl="validation/edit-mode/ENABLE_EDIT_RULES",hl="validation/edit-mode/DISABLE_EDIT_RULES",gl={collectionReadOnly:!1,collectionTimeSeries:!1,writeStateStoreReadOnly:!1,oldServerReadOnly:!1,constraintValidation:"none",isEditingEnabledByUser:!1},fl=()=>({type:pl}),yl="validation/namespace/IS_ZERO_STATE_CHANGED",bl=e=>({type:yl,isZeroState:e}),vl="compass-schema-validation/validation/ValidatorChanged",Cl="compass-schema-validation/validation/ValidationCanceled",El="compass-schema-validation/validation/ValidationSaveStarted",Sl="compass-schema-validation/validation/ValidationSaveEnded",kl="compass-schema-validation/validation/ValidationSaveFailed",wl="compass-schema-validation/validation/ValidationFetched",xl="compass-schema-validation/validation/EmptyValidationFetched",Al="compass-schema-validation/validation/ValidationActionChanged",Dl="compass-schema-validation/validation/ValidationLevelChanged",Il="compass-schema-validation/validation/ValidationFetchErrored",Ml={validator:"",validationAction:"error",validationLevel:"strict",isChanged:!1,isSaving:!1,syntaxError:null,error:null},Tl={validator:"{}",validationAction:"error",validationLevel:"strict"},Ll=e=>{const t={syntaxError:null,validator:e};if(""===e)t.syntaxError={message:"The validator must be an object."};else try{t.validator=(0,Se.aN)(e)}catch(e){t.syntaxError=e}return t},Ol=e=>({type:Dl,validationLevel:e}),Nl=e=>({type:vl,validator:e}),_l=e=>async(t,n,{dataService:a})=>{try{const n=await a.collectionInfo(e.database,e.collection);if(!n?.validation?.validator)return void t((({validationTemplate:e})=>({type:xl,validationTemplate:e}))({validationTemplate:dl.nF}));t((({validator:e,validationLevel:t,validationAction:n,prepareConstraintValidationLevel:a})=>({type:wl,validator:e,validationLevel:t,validationAction:n,prepareConstraintValidationLevel:a}))({validationAction:n.validation.validationAction??Ml.validationAction,validationLevel:n.validation.validationLevel??Ml.validationLevel,validator:n.validation.validator,prepareConstraintValidationLevel:n.validation.prepareConstraintValidationLevel}))}catch(e){t({type:Il,error:e})}},Fl={validDocumentState:"initial",validDocument:void 0,invalidDocumentState:"initial",invalidDocument:void 0},Pl="validation/namespace/CLEAR_SAMPLE_DOCUMENTS",Wl="validation/namespace/FETCHING_SAMPLE_DOCUMENTS",Rl="validation/namespace/FETCHED_VALID_DOCUMENT",Ul="validation/namespace/FETCHING_VALID_DOCUMENT_FAILED",$l="validation/namespace/FETCHED_INVALID_DOCUMENT",Vl="validation/namespace/FETCHING_INVALID_DOCUMENT_FAILED",Hl=()=>Fl,Kl=e=>({...e,validDocumentState:"loading",invalidDocumentState:"loading"}),jl={[Pl]:Hl,[Rl]:(e,t)=>({...e,validDocumentState:"success",validDocument:t.document}),[Ul]:e=>({...e,validDocumentState:"error",validDocument:void 0}),[$l]:(e,t)=>({...e,invalidDocumentState:"success",invalidDocument:t.document}),[Vl]:e=>({...e,invalidDocumentState:"error",invalidDocument:void 0})},Bl=async({pipeline:e,namespace:t,dataService:n,preferences:a})=>{const o={allowDiskUse:!0,maxTimeMS:a.getPreferences().maxTimeMS};return e.unshift({$sample:{size:1e4}}),await n.aggregate(t,e,o)},zl="Operation cancelled",Yl="schema-validation/rules-generation/generationStarted",ql="schema-validation/rules-generation/generationFailed",Gl="schema-validation/rules-generation/generationFinished",Zl="schema-validation/rules-generation/generationErrorCleared",Jl={isInProgress:!1,isGenerated:!1};function Ql(e){let t="general";return 50===e.code&&(t="timeout"),{errorType:t,errorMessage:e.message||"Unknown error"}}const Xl=()=>async(e,t,{dataService:n,logger:a,preferences:o,rulesGenerationAbortControllerRef:r,analyzeSchema:i,track:s,connectionInfoRef:l})=>{e({type:Yl}),r.current=new AbortController;const c=r.current.signal,{namespace:d}=t(),{maxTimeMS:u}=o.getPreferences();try{const t={query:{},size:1e3,fields:void 0},o={maxTimeMS:u},r=await i(n,c,d.toString(),t,o,a);if(c?.aborted)throw new Error(zl);const m=await(r?.getMongoDBJsonSchema({signal:c}));if(c?.aborted)throw new Error(zl);const p=JSON.stringify({$jsonSchema:m},void 0,2);e(Ol("moderate")),e(Nl(p)),e(fl()),e({type:Gl}),e(bl(!1)),(async({schemaAccessor:e,track:t,connectionInfoRef:n})=>{const a=await(e?.getInternalSchema());if(!a)return;const{variable_type_count:o,optional_field_count:r}=await jo(a);t("Schema Validation Generated",{variable_type_count:o,optional_field_count:r},n.current)})({schemaAccessor:r,connectionInfoRef:l,track:s})}catch(t){if(c.aborted)return void e({type:Gl});e({type:ql,error:t})}},ec={namespace:ll,serverVersion:cl,validation:Ml,rulesGeneration:Jl,sampleDocuments:Fl,isZeroState:!0,isLoaded:!1,editMode:gl},tc=(0,F.HY)({namespace:function(e=ll,t){return"validation/namespace/NAMESPACE_CHANGED"===t.type?t.namespace:e},serverVersion:function(e=cl,t){return"validation/server-version/SERVER_VERSION_CHANGED"===t.type&&t.version||e},validation:function(e=Ml,t){if(ul(t,vl)){const n=Ll(t.validator),a={...e,validator:t.validator,syntaxError:n.syntaxError,error:null};return{...a,isChanged:!(0,je.isEqual)((0,je.pick)(a,["validator","validationAction","validationLevel"]),e.prevValidation)}}if(ul(t,El))return{...e,error:null,isSaving:!0};if(ul(t,Sl))return{...e,isSaving:!1};if(ul(t,kl))return{...e,error:t.error};if(ul(t,xl))return{...e,prevValidation:{...Tl},...Tl,isChanged:!1,error:null,syntaxError:null,validator:t.validationTemplate};if(ul(t,Il))return{...e,prevValidation:{...Tl},isChanged:!0,error:t.error,syntaxError:null,...Tl};if(ul(t,wl)){const n=(0,Se.AO)(t.validator,2)??"{}";return{...e,prevValidation:{validator:n,validationAction:t.validationAction,validationLevel:t.validationLevel},isChanged:!1,validator:n,validationAction:t.validationAction,validationLevel:t.validationLevel,syntaxError:null,error:null}}if(ul(t,Al))return{...e,validationAction:t.validationAction,isChanged:!(0,je.isEqual)({validator:e.validator,validationAction:t.validationAction,validationLevel:e.validationLevel},e.prevValidation)};if(ul(t,yl))return{...e,isChanged:!0};if(ul(t,Dl))return{...e,validationLevel:t.validationLevel,isChanged:!(0,je.isEqual)({validator:e.validator,validationAction:e.validationAction,validationLevel:t.validationLevel},e.prevValidation)};if(ul(t,Cl)){const t=e.prevValidation;return{...e,isChanged:!1,validator:t?.validator??"{}",validationAction:t?.validationAction??Ml.validationAction,validationLevel:t?.validationLevel??Ml.validationLevel,error:null}}return e},sampleDocuments:function(e=Fl,t){let n;return"initial"!==e.validDocumentState?n=jl[t.type]:t.type===Wl&&(n=Kl),ul(t,Cl)&&(n=Hl),n?n(e,t):e},isZeroState:function(e=!0,t){return!ul(t,wl)&&(!(!ul(t,xl)&&!ul(t,Il))||(t.type===yl?t.isZeroState:e))},isLoaded:function(e=!1,t){return!!(ul(t,wl)||ul(t,xl)||ul(t,Il))||("validation/namespace/IS_LOADED_CHANGED"===t.type?t.isLoaded:e)},editMode:function(e=gl,t){return t.type===ml?{...e,...t.editMode}:t.type===pl?{...e,isEditingEnabledByUser:!0}:t.type===hl?{...e,isEditingEnabledByUser:!1}:ul(t,xl)?{...e,constraintValidation:"none",isEditingEnabledByUser:!0}:ul(t,wl)?{...e,constraintValidation:"constraint"===t.validationLevel?"active":t.prepareConstraintValidationLevel?"prepared":"none",isEditingEnabledByUser:!1}:ul(t,Cl)?{...e,isEditingEnabledByUser:!1}:e},rulesGeneration:(e=Jl,t)=>ul(t,Yl)?{...e,isInProgress:!0,error:void 0}:ul(t,Gl)?{...e,isInProgress:!1,isGenerated:!0}:ul(t,ql)?{...e,isInProgress:!1,error:Ql(t.error)}:ul(t,vl)&&e.isGenerated||ul(t,Sl)&&e.isGenerated?{...e,isGenerated:!1}:ul(t,Zl)?{...e,error:void 0}:e}),nc=(e,t)=>"validation/reset"===t.type?{...ec}:tc(e,t),ac=(0,d.AHW)({display:"flex",marginLeft:d.YKD[600],alignItems:"center"}),oc=(0,d.AHW)({width:2*d.YKD[1600]});function rc({isEditable:e,validationActionChanged:t,validationAction:n,serverVersion:a}){const o=(0,d.BiT)(),i=(0,d.BiT)();return r().createElement("div",{className:ac},r().createElement(d.JU7,{htmlFor:i},"Action"),r().createElement(d.K0,{href:"https://www.mongodb.com/docs/manual/reference/command/collMod/#mongodb-collflag-validationAction",target:"_blank","aria-label":"More information on validation actions"},r().createElement(d.Int,{glyph:"InfoWithCircle",size:"small"})),r().createElement(d.l6P,{"data-testid":"validation-action-selector","aria-labelledby":o,disabled:!e,onChange:t,value:n,allowDeselect:!1,className:oc,size:"small"},r().createElement(d.c$x,{value:"warn"},"Warning"),r().createElement(d.c$x,{value:"error"},"Error"),(e=>{try{return Je().gte(e,"8.1.0-rc.0")}catch{return!1}})(a)&&r().createElement(d.c$x,{value:"errorAndLog","data-testid":"validation-action-option-error-and-log"},"Error and Log")))}function ic({isEditable:e,validationLevelChanged:t,validationLevel:n}){const a=(0,d.BiT)(),o=(0,d.BiT)();return r().createElement("div",{className:ac},r().createElement(d.JU7,{htmlFor:o},"Level"),r().createElement(d.K0,{href:"https://www.mongodb.com/docs/manual/reference/command/collMod/#mongodb-collflag-validationLevel",target:"_blank","aria-label":"More information on validation levels"},r().createElement(d.Int,{glyph:"InfoWithCircle",size:"small"})),r().createElement(d.l6P,{"data-testid":"validation-level-selector","aria-labelledby":a,disabled:!e,onChange:t,value:n,allowDeselect:!1,className:oc,size:"small"},r().createElement(d.c$x,{value:"off"},"Off"),r().createElement(d.c$x,{value:"moderate"},"Moderate"),r().createElement(d.c$x,{value:"strict"},"Strict"),"constraint"===n&&r().createElement(d.c$x,{value:"constraint","data-testid":"validation-level-option-constraint"},"Constraint")))}const sc=(0,d.AHW)({padding:d.YKD[400]}),lc=(0,d.AHW)({display:"flex"}),cc=(0,d.AHW)({flexGrow:1}),dc=(0,d.AHW)({display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:d.YKD[400]}),uc=(0,d.AHW)({marginTop:d.YKD[400]}),mc=(0,d.AHW)({borderLeft:`3px solid ${d.MFm.gray.light2}`}),pc=(0,d.AHW)({borderLeft:`3px solid ${d.MFm.gray.dark2}`}),hc=(0,d.AHW)({color:d.MFm.yellow.dark2,display:"flex",alignItems:"center",gap:d.YKD[200],flex:1}),gc=(0,d.AHW)({color:d.MFm.green.dark2,display:"flex",alignItems:"center",gap:d.YKD[200],flex:1}),fc=(0,d.AHW)({color:d.MFm.green.light2}),yc=(0,d.AHW)({color:d.MFm.yellow.light2}),bc=(0,d.AHW)({marginLeft:d.YKD[200]}),vc=({namespace:e,text:t,onChangeText:n,readOnly:a,serverVersion:o})=>{const i=(0,rl.jv)(e),s=r().useMemo((()=>(0,rt.g7)({fields:i,serverVersion:o})),[i,o]);return r().createElement(rt.Jn,{id:"validation-code-editor",language:"javascript-expression",text:t,onChangeText:n,readOnly:a,formattable:!a,completer:s})},Cc=(0,Ee.Ng)((e=>({serverVersion:e.serverVersion,isEditingEnabled:e.editMode.isEditingEnabledByUser,validation:e.validation,namespace:e.namespace.ns,isRulesGenerationInProgress:e.rulesGeneration.isInProgress,isValidatorGenerated:e.rulesGeneration.isGenerated,isSavingInProgress:e.validation.isSaving})),{clearSampleDocuments:()=>({type:Pl}),validatorChanged:Nl,cancelValidation:()=>({type:Cl}),saveValidation:e=>async(t,n,{dataService:a,track:o,connectionInfoRef:r})=>{const i=n().namespace,s={validator:Ll(e.validator).validator,validationAction:e.validationAction,validationLevel:e.validationLevel,isChanged:!1};o("Schema Validation Updated",{validation_action:e.validationAction,validation_level:e.validationLevel},r.current),t({type:El});try{await a.updateCollection(`${i.database}.${i.collection}`,{validator:s.validator,validationAction:s.validationAction,validationLevel:s.validationLevel}),t(_l(i)),(0,d.c3r)("schema-validation-update",{title:"New validation rules applied",variant:"success"}),t({type:hl})}catch(e){t((e=>({type:kl,error:e}))(e))}finally{t({type:Sl})}},onClickEnableEditRules:fl,validationActionChanged:e=>({type:Al,validationAction:e}),validationLevelChanged:Ol,generateValidationRules:Xl})((({namespace:e,clearSampleDocuments:t,onClickEnableEditRules:n,validatorChanged:a,validationActionChanged:i,validationLevelChanged:l,cancelValidation:c,saveValidation:u,generateValidationRules:m,serverVersion:p,validation:h,isEditable:g,isEditingEnabled:f,isRulesGenerationInProgress:y,isSavingInProgress:b,isValidatorGenerated:v})=>{const C=(0,re.Jr)(),E=(0,s.jj)(),S=(0,d.HIF)(t),k=(0,d.HIF)(a),w=(0,d.HIF)(u),x=(0,d.HIF)(h),A=(0,o.useCallback)((e=>{const t=Ll(e),n={json_schema:"object"==typeof t.validator&&!!t.validator?.$jsonSchema};C("Schema Validation Edited",n,E.current)}),[E,C]),D=(0,o.useMemo)((()=>(0,je.debounce)((e=>{S.current(),A(e)}),750)),[S,A]);(0,o.useEffect)((()=>()=>{D.cancel()}),[D]);const I=(0,o.useCallback)((e=>{k.current(e),D(e)}),[D,k]),M=(0,d.D27)(),{validationAction:T,validationLevel:L,error:O,syntaxError:N,isChanged:_}=h,F=(0,o.useCallback)((async()=>{await(0,d.$TK)({title:"Are you sure you want to apply these validation rules?",description:"These rules will be enforced on updates & inserts of your document. Please make sure you have reviewed the rules before applying them."})&&w.current(x.current)}),[w,x]),P=(0,o.useMemo)((()=>{if(!h.validator||0===h.validator.length)return!0;try{return 0===Object.keys(JSON.parse(h.validator)).length}catch{return!1}}),[h.validator]);return r().createElement(d.yY_,{"data-testid":"validation-editor",className:sc},r().createElement("div",{className:lc},r().createElement("div",{className:cc},r().createElement(d.m_M,{enabled:!P,trigger:r().createElement(d.$nd,{"data-testid":"generate-rules-button",disabled:!P,isLoading:y,loadingIndicator:r().createElement(d.Q0K,null),onClick:m,variant:d.AkO.Primary,size:"small"},"Generate rules")},"Clear existing rules before generating new ones")),r().createElement(rc,{isEditable:g&&f,validationActionChanged:i,validationAction:T,serverVersion:p}),r().createElement(ic,{isEditable:g&&f,validationLevelChanged:l,validationLevel:L})),r().createElement("div",{className:(0,d.cx)(uc,M?pc:mc)},r().createElement(vc,{namespace:e,text:h.validator,onChangeText:e=>{I(e)},readOnly:!g||!f,serverVersion:p})),N&&r().createElement(d.lZ$,{variant:"danger"},N.message),!N&&O&&r().createElement(d.lZ$,{variant:"danger"},O.message),g&&r().createElement("div",{className:dc},f?r().createElement(r().Fragment,null,_&&!v&&r().createElement(d.nBu,{className:(0,d.cx)(hc,M&&yc),"data-testid":"validation-action-message"},r().createElement(d.Int,{glyph:"InfoWithCircle"})," Rules are modified & not applied. Please review before applying."),v&&r().createElement(d.nBu,{className:(0,d.cx)(gc,M&&fc),"data-testid":"validation-action-message"},r().createElement(d.Int,{glyph:"Checkmark"})," Rules generated. Please review before applying."),r().createElement(d.$nd,{type:"button",className:bc,variant:"default","data-testid":"cancel-validation-button",onClick:c},"Cancel"),_&&r().createElement(d.$nd,{type:"button",className:bc,variant:"primary","data-testid":"update-validation-button",onClick:()=>{F()},isLoading:b,loadingIndicator:r().createElement(d.Q0K,{title:"Updating validation…"}),disabled:!!N},"Apply")):r().createElement(d.$nd,{type:"button",leftGlyph:r().createElement(d.Int,{glyph:"Edit"}),variant:"primaryOutline","data-testid":"enable-edit-validation-button",onClick:n},"Edit rules")))})),Ec=(0,d.AHW)({display:"flex",height:3*d.YKD[1600],padding:0,overflow:"auto",position:"relative"}),Sc=(0,d.AHW)({alignItems:"center"}),kc=(0,d.AHW)({padding:d.YKD[400],textAlign:"center",fontStyle:"italic",width:"100%"});function wc({document:e}){return r().createElement(d.yY_,{className:(0,d.cx)(Ec,e?void 0:Sc),"data-testid":"document-preview"},e?r().createElement(Oo.yo,{doc:e,editable:!1}):r().createElement(d.nBu,{"data-testid":"load-sample-no-preview",className:kc},"No Preview Documents"))}const xc=(0,d.AHW)({marginTop:d.YKD[600],display:"flex",flexDirection:"column",gap:d.YKD[200],border:`1px solid ${d.MFm.gray.light2}`,borderRadius:d.YKD[200],padding:d.YKD[400]}),Ac=(0,d.AHW)({border:`1px solid ${d.MFm.gray.dark2}`}),Dc=(0,d.AHW)({display:"flex",gap:d.YKD[400]}),Ic=(0,d.AHW)({overflow:"auto",flex:"50%"}),Mc=(0,d.AHW)({display:"flex",alignItems:"center",gap:d.YKD[100],marginBottom:d.YKD[400]}),Tc=(0,d.AHW)({color:d.MFm.green.dark2}),Lc=(0,d.AHW)({color:d.MFm.red.dark2}),Oc=(0,d.AHW)({color:d.MFm.green.dark1}),Nc=(0,d.AHW)({color:d.MFm.red.light1}),_c=(0,d.AHW)({fontWeight:"bold",color:"inherit"}),Fc=(0,d.AHW)({display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"228px",gap:d.YKD[300]}),Pc=(0,d.AHW)({fontSize:d.YKD[400],fontWeight:"bold",color:d.MFm.green.dark2,marginTop:d.YKD[200]}),Wc=(0,d.AHW)({color:d.MFm.green.light2}),Rc=()=>{const e=(0,d.D27)(),t=(0,o.useMemo)((()=>e?d.MFm.green.light1:d.MFm.green.base),[e]),n=(0,o.useMemo)((()=>e?d.MFm.white:d.MFm.black),[e]);return r().createElement("svg",{width:"64",height:"58",viewBox:"0 0 64 58",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r().createElement("rect",{x:"0.5",y:"1",width:"63",height:"56",rx:"2",stroke:n}),r().createElement("line",{y1:"28.5",x2:"64",y2:"28.5",stroke:n}),r().createElement("line",{x1:"8.61035",y1:"15.5898",x2:"32.9054",y2:"15.5898",stroke:n}),r().createElement("circle",{cx:"44.9268",cy:"16.0898",r:"2",fill:t,stroke:n}),r().createElement("circle",{cx:"52.8896",cy:"16.0898",r:"2",fill:t,stroke:n}))},Uc=({onPreviewClick:e})=>{const t=(0,d.D27)();return r().createElement("div",{className:Fc},r().createElement(Rc,null),r().createElement("div",{className:(0,d.cx)(Pc,t&&Wc)},"Preview sample documents"),r().createElement("div",null,"This section displays one document that passed validation and one that failed validation."),r().createElement(d.$nd,{onClick:e,variant:d.AkO.PrimaryOutline,"data-testid":"load-sample-documents"},"Preview documents"))},$c=(0,Ee.Ng)((e=>({validDocument:e.sampleDocuments.validDocument,invalidDocument:e.sampleDocuments.invalidDocument,isInitialState:"initial"===e.sampleDocuments.validDocumentState})),{fetchSampleDocuments:()=>(e,t)=>{e({type:Wl});const n=t(),a=n.namespace.ns,o=n.validation.validator,r=Ll(o).validator;e((({namespace:e,query:t})=>async(n,a,{preferences:o,dataService:r})=>{try{n((e=>({type:Rl,document:e}))((await Bl({namespace:e,dataService:r,preferences:o,pipeline:[{$match:t},{$limit:1}]}))[0]))}catch{n({type:Ul})}})({namespace:a,query:r})),e((({namespace:e,query:t})=>async(n,a,{preferences:o,dataService:r})=>{try{n((e=>({type:$l,document:e}))((await Bl({namespace:e,dataService:r,preferences:o,pipeline:[{$match:{$nor:[t]}},{$limit:1}]}))[0]))}catch{n({type:Vl})}})({namespace:a,query:r}))}})((function({validDocument:e,invalidDocument:t,isInitialState:n,fetchSampleDocuments:a}){const o=(0,d.D27)();return r().createElement("div",{className:(0,d.cx)(xc,o&&Ac)},n?r().createElement(Uc,{onPreviewClick:a}):r().createElement("div",{className:Dc},r().createElement("div",{className:Ic,"data-testid":"matching-documents"},r().createElement("div",{className:(0,d.cx)(Mc,o?Oc:Tc)},r().createElement(d.Int,{glyph:"CheckmarkWithCircle",size:"small"}),r().createElement(d.nBu,{className:_c},"Passed validation")),r().createElement(wc,{document:e})),r().createElement("div",{className:Ic,"data-testid":"notmatching-documents"},r().createElement("div",{className:(0,d.cx)(Mc,o?Nc:Lc)},r().createElement(d.Int,{glyph:"XWithCircle",size:"small"}),r().createElement(d.nBu,{className:_c},"Failed validation")),r().createElement(wc,{document:t}))))})),Vc=(0,d.AHW)({marginLeft:d.YKD[300]}),Hc=()=>{const e=(0,d.D27)(),t=(0,o.useMemo)((()=>e?d.MFm.white:d.MFm.black),[e]);return r().createElement("svg",{width:"72",height:"72",viewBox:"0 0 72 72",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:Vc},r().createElement("path",{d:"M41 16V4.00001L55 18H43C41.8954 18 41 17.1046 41 16Z",fill:d.MFm.green.base}),r().createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.8649 33.1158L23.6549 26.6382L24.3451 27.3618L17.5602 33.8346C17.4799 33.9177 17.4799 34.0823 17.5602 34.1654L24.3451 40.6382L23.6549 41.3618L16.8573 34.8769C16.3808 34.4028 16.3809 33.5973 16.8573 33.1232L16.8649 33.1158ZM44.708 33.8346L37.9231 27.3618L38.6133 26.6382L45.4109 33.1231C45.8874 33.5972 45.8873 34.4028 45.4109 34.8768L45.4034 34.8843L38.6133 41.3618L37.9231 40.6382L44.708 34.1654C44.7882 34.0823 44.7882 33.9177 44.708 33.8346ZM34.2704 27.3677L28.0022 40.9953L27.0937 40.5774L33.3619 26.9499L34.2704 27.3677Z",fill:t}),r().createElement("path",{d:"M40 56C40 62.6182 45.3818 68 52 68C58.6182 68 64 62.6182 64 56C64 49.3818 58.6182 44 52 44C45.3818 44 40 49.3818 40 56Z",fill:d.MFm.green.base}),r().createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M40.7755 61.5H9C7.63127 61.5 6.5 60.3975 6.5 59.0311V5.96893C6.5 4.60253 7.63127 3.50002 9 3.50002H40.7778C40.816 3.50002 40.8533 3.50431 40.8891 3.51245C41.0547 3.47474 41.2307 3.52362 41.3536 3.64646L55.3536 17.6465C55.4799 17.7728 55.528 17.9554 55.4841 18.125C55.4945 18.1651 55.5 18.2072 55.5 18.2505C55.5 18.2503 55.5 18.2502 55.433 18.2501L55.5 18.2505L55.4998 20.0065C55.4996 21.1241 55.4992 22.7206 55.4984 24.6361C55.4969 28.4671 55.4937 33.5741 55.4875 38.6781C55.4853 40.4683 55.4827 42.2581 55.4797 43.9924C60.6855 45.5025 64.5 50.3128 64.5 56C64.5 62.8943 58.8943 68.5 52 68.5C47.0782 68.5 42.8131 65.6431 40.7755 61.5ZM9 4.50002H40.5V16C40.5 17.3807 41.6193 18.5 43 18.5H54.5L54.4998 20.0063C54.4996 21.1239 54.4992 22.7203 54.4984 24.6357C54.4969 28.4665 54.4938 33.5733 54.4875 38.6769C54.4854 40.3832 54.483 42.0892 54.4801 43.7469C53.6783 43.585 52.8489 43.5 52 43.5C45.1057 43.5 39.5 49.1057 39.5 56C39.5 57.5857 39.7965 59.1032 40.3371 60.5H9C8.16873 60.5 7.5 59.8305 7.5 59.0311V5.96893C7.5 5.16952 8.16873 4.50002 9 4.50002ZM41.5 5.20712V16C41.5 16.8284 42.1716 17.5 43 17.5H53.7929L41.5 5.20712ZM40.5 56C40.5 49.658 45.658 44.5 52 44.5C58.342 44.5 63.5 49.658 63.5 56C63.5 62.3421 58.342 67.5 52 67.5C45.658 67.5 40.5 62.3421 40.5 56Z",fill:t}),r().createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M58.3904 51.3124L51.1067 60.4171C50.5385 61.1273 49.4742 61.1725 48.8478 60.5132L45.6375 57.1339L46.3625 56.4451L49.5728 59.8244C49.7816 60.0442 50.1364 60.0291 50.3258 59.7924L57.6096 50.6877L58.3904 51.3124Z",fill:t}))},Kc=(0,d.AHW)({padding:d.YKD[400],height:"100%"}),jc=(0,d.AHW)({height:"100%"}),Bc=(0,d.AHW)({display:"flex",gap:d.YKD[400]}),zc=(0,d.AHW)({height:"100%",display:"flex",justifyContent:"center"}),Yc="Schema validation for time-series collections is not supported.",qc="Schema validation for readonly views is not supported.",Gc="This action is not available on a secondary node.",Zc='This collection uses the "constraint" validation level, which guarantees every document matches the validator. The rules cannot be changed while it is in effect.',Jc='This collection is prepared for an upgrade to the "constraint" validation level. The rules cannot be changed until the upgrade completes, or until the prepared state is cleared by running collMod with prepareConstraintValidationLevel: false.',Qc="Compass no longer supports the visual rule builder for server versions below 3.2. To use the visual rule builder, please";function Xc({editMode:e}){return e.collectionTimeSeries?r().createElement(d.rpn,{warnings:Yc,"data-testid":"collection-validation-warning"}):e.collectionReadOnly?r().createElement(d.rpn,{warnings:qc,"data-testid":"collection-validation-warning"}):e.writeStateStoreReadOnly?r().createElement(d.rpn,{warnings:Gc,"data-testid":"collection-validation-warning"}):"active"===e.constraintValidation?r().createElement(d.rpn,{warnings:Zc,"data-testid":"collection-validation-warning"}):"prepared"===e.constraintValidation?r().createElement(d.rpn,{warnings:Jc,"data-testid":"collection-validation-warning"}):e.oldServerReadOnly?r().createElement(d.lZ$,{variant:"warning"},r().createElement("div",{"data-testid":"old-server-read-only"},Qc," ",r().createElement(d.N_E,{target:"_blank",href:"https://docs.mongodb.com/manual/tutorial/upgrade-revision/"},"upgrade to MongoDB 3.2."))):null}const ed=({onCancelClicked:e})=>r().createElement("div",{className:zc},r().createElement(d.yao,{"data-testid":"generating-rules",progressText:"Generating rules",cancelText:"Stop",onCancel:e})),td=({error:e,onDismissError:t})=>"timeout"===e?.errorType?r().createElement(d.rpn,{"data-testid":"rules-generation-timeout-message",warnings:["Operation exceeded time limit. Please try increasing the maxTimeMS in Compass Settings."],dismissible:!0,onClose:t}):r().createElement(d.dFH,{"data-testid":"rules-generation-error-message",errors:[`Error occured during rules generation: ${e.errorMessage}`],dismissible:!0,onClose:t}),nd=(0,Ee.Ng)((e=>({isZeroState:e.isZeroState,isLoaded:e.isLoaded,editMode:e.editMode,isRulesGenerationInProgress:e.rulesGeneration.isInProgress,rulesGenerationError:e.rulesGeneration.error})),{changeZeroState:e=>(t,n,{track:a,connectionInfoRef:o})=>(!1===e&&a("Schema Validation Added",{},o.current),t(fl()),t(bl(e))),generateValidationRules:Xl,clearRulesGenerationError:()=>e=>e({type:Zl}),stopRulesGeneration:()=>(e,t,{rulesGenerationAbortControllerRef:n})=>{n.current&&n.current?.abort(zl)}})((function({isZeroState:e,isRulesGenerationInProgress:t,rulesGenerationError:n,isLoaded:a,changeZeroState:o,generateValidationRules:i,clearRulesGenerationError:s,stopRulesGeneration:l,editMode:c}){const{readOnly:u}=(0,R.gc)(["readOnly"]),m=!(c.collectionReadOnly||c.collectionTimeSeries||c.writeStateStoreReadOnly||c.oldServerReadOnly||"none"!==c.constraintValidation||u);return r().createElement("div",{className:Kc,"data-testid":"schema-validation-states"},n&&r().createElement(td,{error:n,onDismissError:s}),r().createElement(Xc,{editMode:c}),!a&&r().createElement("div",{className:zc},r().createElement(d.iyS,{progressText:"Loading Validation"})),a&&r().createElement(r().Fragment,null,e&&!t&&r().createElement(d.HYq,{icon:Hc,title:"Create validation rules",subTitle:"Generate rules via schema analysis from existing sample data or add them manually to enforce document structure during updates and inserts",callToAction:r().createElement("div",{className:Bc},r().createElement(d.$nd,{"data-testid":"generate-rules-button",disabled:!m,onClick:i,variant:d.AkO.Primary,size:"small"},"Generate rules"),r().createElement(d.$nd,{"data-testid":"add-rule-button",disabled:!m,onClick:()=>o(!1),variant:d.AkO.PrimaryOutline,size:"small"},"Add rule")),callToActionLink:r().createElement(d.N_E,{href:"https://docs.mongodb.com/manual/core/schema-validation/",target:"_blank"},"Learn more about validations")}),e&&t&&r().createElement(ed,{onCancelClicked:l}),!e&&r().createElement("div",{className:jc},r().createElement(Cc,{isEditable:m}),r().createElement($c,null))))})),ad=(0,i.nk)({name:"CompassSchemaValidationPlugin",component:function({children:e}){return r().createElement(r().Fragment,null,e)},activate:function(e,{globalAppRegistry:t,dataService:n,connectionInfoRef:a,preferences:o,instance:r,logger:i,workspaces:s,track:l},{on:c,cleanup:d,addCleanup:u},p){const h=function(e,t,n=Vo){return(0,F.y$)(nc,{...ec,...e},(0,F.Tw)(P.A.withExtraArgument({...t,rulesGenerationAbortControllerRef:{current:void 0},analyzeSchema:n})))}({namespace:(0,m.Ay)(e.namespace),serverVersion:r.build.version,editMode:{collectionTimeSeries:!!e.isTimeSeries,collectionReadOnly:!!e.isReadonly,writeStateStoreReadOnly:!r.isWritable,oldServerReadOnly:Je().gte("3.2.0",r.build.version),constraintValidation:"none",isEditingEnabledByUser:!1}},{dataService:n,connectionInfoRef:a,preferences:o,globalAppRegistry:t,workspaces:s,logger:i,track:l},p);c(r,"change:isWritable",(()=>{var e;h.dispatch((e={writeStateStoreReadOnly:!r.isWritable},{type:ml,editMode:e}))})),h.dispatch(((e,t)=>{const n=t().namespace;e(_l(n))}));const g=()=>!h.getState().validation.isChanged;return u(s.onTabReplace?.(g)),u(s.onTabClose?.(g)),{store:h,deactivate:d}}},{dataService:s.S1,connectionInfoRef:s.wj,instance:g.A$,preferences:R.fx,logger:(0,p.fF)("COMPASS-SCHEMA-VALIDATION-UI"),track:re.yL,workspaces:D.__}),od={name:"Validation",provider:ad,content:function(){return r().createElement(d.XvC,{"data-testid":"compass-schema-validation"},r().createElement(nd,null))},header:function(){return r().createElement("div",{"data-testid":"validation-tab-title"},"Validation")}};var rd=n(37334),id=n(85561),sd=n(83869);const ld={"set-cli":r().createElement(d.lZ$,{variant:d.uAY.Info,"data-testid":"set-cli-banner"},"This setting cannot be modified as it has been set at Compass startup."),"set-global":r().createElement(d.lZ$,{variant:d.uAY.Info,"data-testid":"set-global-banner"},"This setting cannot be modified as it has been set in the global Compass configuration file."),hardcoded:r().createElement(d.lZ$,{variant:d.uAY.Info,"data-testid":"hardcoded-banner"},"This setting cannot be modified as it is disabled for this Compass edition."),derived:r().createElement(d.lZ$,{variant:d.uAY.Info,"data-testid":"derived-banner"},"This setting cannot be modified as its value is implied by another option."),"set-cloud-user":null,"set-cloud-project":null,"set-cloud-org":null,"":null},cd={isModalOpen:!1,settings:{},preferenceStates:{},updatedFields:[],loadingState:"loading",tab:void 0},dd="compass-settings/SettingsFetchedStart",ud="compass-settings/settingsFetched",md="compass-settings/ChangeFieldValue",pd="compass-settings/settingsUpdated",hd="compass-settings/OpenSettingsModal",gd="compass-settings/SelectTab",fd="compass-settings/CloseSettingsModal";function yd(e,t){return e.type===t}const bd=(e=cd,t)=>yd(t,dd)?{...cd,isModalOpen:e.isModalOpen,tab:e.tab}:yd(t,hd)?{...e,isModalOpen:!0,tab:t.tab}:yd(t,gd)?{...e,tab:t.tab??e.tab}:yd(t,fd)?{...e,isModalOpen:!1}:yd(t,md)?"ready"!==e.loadingState?e:{...e,settings:{...e.settings,[t.field]:t.value}}:yd(t,ud)?{...e,loadingState:"ready",settings:t.settings,preferenceStates:t.preferenceStates,updatedFields:t.updatedFields}:yd(t,pd)?{...e,isModalOpen:!1}:e,vd=()=>async(e,t,{preferencesSandbox:n})=>{const{userPreferences:a,preferenceStates:o,updatedFields:r}=await n.getSandboxState();e({type:ud,settings:a,preferenceStates:o,updatedFields:r})},Cd=(e,t)=>async(n,a,{preferencesSandbox:o,logger:r,track:i})=>{const{loadingState:s}=a().settings;if("loading"===s)throw new Error("Can't change preferences while sandbox is being set up");i("Setting Changed",{setting:e}),n({type:md,field:e,value:t});try{await o.updateField(e,t)}catch(e){r.log.error(r.mongoLogId(1001000223),"Settings","Failed to change settings value",{error:e.stack})}await n(vd())},Ed=(0,d.AHW)({display:"flex",flexDirection:"row",justifyContent:"space-between",gap:d.YKD[200]}),Sd=(0,d.AHW)({display:"flex",alignItems:"center",gap:d.YKD[100]}),kd={enableDbAndCollStats:function(){return r().createElement(r().Fragment,null,"When enabled, Compass occasionally calls the"," ",r().createElement(d.N_E,{href:"https://www.mongodb.com/docs/manual/reference/command/dbStats/#mongodb-dbcommand-dbcmd.dbStats"},"dbStats")," ","and"," ",r().createElement(d.N_E,{href:"https://www.mongodb.com/docs/manual/reference/command/collStats/"},"collStats")," ","commands to access storage statistics for a given database or collection. Disabling this setting can help reduce Compass' overhead on your MongoDB deployments.")},defaultSortOrder:function(){return r().createElement(r().Fragment,null,"All queries executed from the query bar will apply this sort."," ",r().createElement("strong",null,"Not available for views and timeseries."))},enableGenAIToolCalling:function(){return r().createElement(r().Fragment,null,"Allow the MongoDB Assistant to interact with your databases. All actions require your approval before running. Learn more about"," ",r().createElement(d.N_E,{href:"https://www.mongodb.com/docs/compass/query-with-natural-language/compass-ai-assistant/",target:"_blank"},"MongoDB database tools"))},timezone:function({value:e}){return r().createElement("div",{className:Ed,"data-testid":"timezone-description"},r().createElement("span",null,"The data will still always be stored in UTC."),!!e&&(0,R.Gu)(e)&&r().createElement(d.p8Z,{className:Sd,tooltipProps:{align:"top",justify:"start"},definition:"This timezone observes daylight savings."},r().createElement(d.Int,{glyph:"Sun"}),"Observes daylight savings"))}},wd={defaultSortOrder:R.ls,legacyUUIDDisplayEncoding:R.di,timezone:R.TA},xd=(0,d.AHW)({marginTop:d.YKD[400],marginBottom:d.YKD[400]}),Ad=(0,d.AHW)({marginLeft:d.YKD[200]}),Dd=(0,d.AHW)({margin:`${d.YKD[400]}px 0`,fieldset:{paddingLeft:`${d.YKD[600]}px`}});function Id({name:e,value:t}){const{short:n,long:a}=(0,R.Zq)(e).description,o=kd[e],i=R.of.find((t=>t.name===e));return r().createElement(r().Fragment,null,r().createElement(d.JU7,{htmlFor:e,id:`${e}-label`},n,"development"===i?.stage&&r().createElement("span",null,r().createElement(d.Exy,{className:Ad},"dev"))),(o||a)&&r().createElement(d.VYo,null,o?r().createElement(o,{value:t}):a))}function Md({name:e,onChange:t,value:n,disabled:a}){const i=(0,o.useCallback)((n=>{t(e,n.target.checked)}),[e,t]);return r().createElement(d.Sc0,{key:e,className:xd,name:e,id:e,"data-testid":e,onChange:i,label:r().createElement(Id,{name:e,value:n}),checked:n,disabled:a})}function Td({name:e,onChange:t,value:n,disabled:a,required:i}){const s=(0,o.useCallback)((n=>{const{value:a}=n.target;t(e,""===a?i?0:void 0:+a)}),[e,t,i]);return r().createElement(r().Fragment,null,r().createElement(Id,{name:e,value:n}),r().createElement(d.ksK,{className:xd,"aria-labelledby":`${e}-label`,id:e,name:e,"data-testid":e,type:"number",value:void 0===n?i?"0":"":`${n}`,onChange:s,disabled:a,optional:!i}))}function Ld({name:e,onChange:t,value:n,disabled:a}){const{short:i,options:s}=(0,R.Zq)(e).description;if(!s)throw new Error(`No option descriptions found for preference ${e}`);const l=(0,o.useCallback)((n=>{null!==n&&t(e,n)}),[e,t]),c=Object.keys(s).some((e=>""===e))?r().createElement(d.l6P,{className:xd,allowDeselect:!1,"aria-labelledby":`${e}-label`,id:e,name:e,"data-testid":e,value:n,onChange:l,disabled:a},Object.entries(s).map((([e,t])=>r().createElement(d.c$x,{key:e,value:e,glyph:t.glyph?r().createElement(d.Int,{glyph:t.glyph}):void 0,description:t.description},t.label)))):r().createElement(d.G3_,{className:xd,"aria-label":i,id:e,"data-testid":e,value:n,multiselect:!1,clearable:!1,onChange:l,disabled:a},Object.entries(s).map((([e,t])=>r().createElement(d.jOs,{key:e,value:e,glyph:t.glyph?r().createElement(d.Int,{glyph:t.glyph}):void 0,displayName:t.label,description:t.description}))));return r().createElement(r().Fragment,null,r().createElement(Id,{name:e,value:n}),c)}function Od({name:e,onChange:t,value:n,disabled:a,required:i}){const s=(0,o.useCallback)((n=>{const{value:a}=n.target;t(e,""===a?i?"":void 0:a)}),[e,t,i]);return r().createElement(r().Fragment,null,r().createElement(Id,{name:e,value:n}),r().createElement(d.ksK,{className:xd,"aria-labelledby":`${e}-label`,id:e,name:e,"data-testid":e,value:void 0===n?"":`${n}`,onChange:s,disabled:a,optional:!i}))}const Nd=(0,Ee.Ng)(((e,t)=>{const{settings:{settings:n,preferenceStates:a}}=e,{name:o}=t,r=o in n,{type:i}=r?(0,R.Zq)(o):{};return{isConfigurableUserPreference:r,value:n[o],type:i,disabled:!!a[o],stateLabel:ld[a[o]??""]}}),{onChange:Cd})((function({stateLabel:e="",disabled:t=!1,required:n=!1,...a}){if(!0!==a.isConfigurableUserPreference)return null;if(!function(e){return["number","string","boolean"].includes(e.type)}(a))throw new Error(`Do not know how to render type ${String(a.type)} for preference ${a.name}`);let o=null;const{name:i,type:s,onChange:l,value:c}=a;return"boolean"===s?o=r().createElement(Md,{name:i,onChange:l,value:!!c,disabled:!!t}):"string"===s&&function(e){return e in wd}(i)?o=r().createElement(Ld,{name:i,onChange:l,value:c,disabled:!!t}):"number"===s?o=r().createElement(Td,{name:i,onChange:l,value:c,required:!!n,disabled:!!t}):"string"===s&&(o=r().createElement(Od,{name:i,onChange:l,value:c,required:!!n,disabled:!!t})),r().createElement("div",{"data-testid":`setting-${i}`},r().createElement(d.GEW,{className:Dd},o,e??""))}));function _d({fields:e}){return r().createElement(r().Fragment,null,e.map((e=>r().createElement(Nd,{key:e,name:e}))))}const Fd=r().memo(_d);var Pd=n(15088).process;const Wd=["readOnly","enableShell","protectConnectionStrings","timezone","defaultSortOrder","showKerberosPasswordField","maxTimeMS","enableDevTools",...["darwin","win32"].includes(Pd.platform)?["installURLHandlers"]:[],"enableShowDialogOnQuit","enableDbAndCollStats","inferNamespacesFromPrivileges","legacyUUIDDisplayEncoding"],Rd=()=>r().createElement("div",{"data-testid":"general-settings"},r().createElement("div",null,"To enhance the user experience, Compass can enable or disable particular features. Please choose from the settings below:"),r().createElement(Fd,{fields:Wd}));var Ud=n(21655).URL;function $d(e){return String(e&&"object"==typeof e&&"message"in e?e.message:e)}function Vd(e){try{const t=e?new Ud(e):{username:"",password:"",href:""},{username:n,password:a}=t;return t.username="",t.password="",{proxyUrl:t.href,proxyUrlState:"none",proxyUrlErrorMessage:void 0,proxyUsername:n,proxyPassword:a}}catch(t){return{proxyUrl:e||"",proxyUrlState:"error",proxyUrlErrorMessage:$d(t),proxyUsername:"",proxyPassword:""}}}function Hd(e){if(!e.proxyUrl)return"";const t=new Ud(e.proxyUrl);return t.username=e.proxyUsername,t.password=e.proxyPassword,t.href}const Kd=({disabled:e,proxyOptions:t,setProxyOptions:n})=>{const[a,i]=(0,o.useState)((()=>Vd(t.proxy)));(0,d.wTI)((()=>{i((e=>t.proxy&&Hd(e)===t.proxy?e:Vd(t.proxy)))}),[t.proxy]);const s=(0,o.useCallback)(((e,o)=>{const r={...a,...e};if(!o)try{const e=new Ud(r.proxyUrl);(e.username||e.password)&&(r.proxyUsername=decodeURIComponent(e.username),r.proxyPassword=decodeURIComponent(e.password))}catch{}try{const e=Hd(r),a=Vd(e);o&&(r.proxyUrl=a.proxyUrl),n({...t,proxy:e})}catch(e){return void i({...r,proxyUrlState:"error",proxyUrlErrorMessage:$d(e)})}i({...r,proxyUrlState:"none",proxyUrlErrorMessage:""})}),[a,t,n,i]),{proxyUrl:l,proxyUrlState:c,proxyUrlErrorMessage:u,proxyUsername:m,proxyPassword:p}=a,h=(0,o.useCallback)((e=>s({proxyUrl:e.target.value.trim()},!1)),[s]),g=(0,o.useCallback)((e=>s({proxyUsername:e.target.value},!0)),[s]),f=(0,o.useCallback)((e=>s({proxyPassword:e.target.value},!0)),[s]);return r().createElement("div",{"data-testid":"proxy-settings-custom"},r().createElement(d.GEW,null,r().createElement(d.JU7,{htmlFor:"proxy-url",id:"proxy-url-label"},"Proxy URL"),r().createElement(d.VYo,null,"Specify a ",r().createElement("code",null,"http://"),", ",r().createElement("code",null,"https://"),","," ",r().createElement("code",null,"socks5://"),"or ",r().createElement("code",null,"pac+https://")," URL."),r().createElement(d.ksK,{id:"proxy-url","data-testid":"proxy-url","aria-labelledby":"proxy-url-label",onChange:h,value:l,disabled:e,state:c,errorMessage:u,placeholder:"https://example.com:8080"})),r().createElement(d.GEW,null,r().createElement(d.JU7,{htmlFor:"proxy-username",id:"proxy-username-label"},"Username"),r().createElement(d.ksK,{id:"proxy-username","data-testid":"proxy-username","aria-labelledby":"proxy-username-label",onChange:g,value:m,optional:!0,disabled:e})),r().createElement(d.GEW,null,r().createElement(d.JU7,{htmlFor:"proxy-password",id:"proxy-password-label"},"Password"),r().createElement(d.ksK,{type:"password",id:"proxy-password","data-testid":"proxy-password","aria-labelledby":"proxy-password-label",onChange:f,value:p,optional:!0,disabled:e})),(p||m)&&r().createElement(d.lZ$,{variant:"warning"},"Some resources, such as map data for geographic visualizations, cannot currently be loaded through proxies which require authentication."))},jd=["proxy"],Bd=(0,Ee.Ng)((e=>{const{settings:{settings:t,preferenceStates:n}}=e;return{proxy:t.proxy,proxySettingsState:n.proxy}}),{onChange:Cd})((({onChange:e,proxy:t,proxySettingsState:n})=>{const[a]=(0,o.useMemo)((()=>[(0,R.nV)(t)]),[t]),i=(0,o.useCallback)((t=>{e("proxy",(0,R.r2)(t))}),[e]),s=!!n,l=ld[n??""],c="string"==typeof a.proxy?"custom":a.useEnvironmentVariableProxies?"env":"no-proxy",u=(0,o.useCallback)((e=>{const t=e.target.value;i({...a,...{env:{proxy:void 0,useEnvironmentVariableProxies:!0},"no-proxy":{proxy:void 0,useEnvironmentVariableProxies:!1},custom:{proxy:"",useEnvironmentVariableProxies:!0}}[t]})}),[a,i]),m=a.noProxyHosts,p=(0,o.useCallback)((e=>{i({...a,noProxyHosts:e.target.value})}),[a,i]);return r().createElement("div",{"data-testid":"proxy-settings"},r().createElement(d.GEW,null,r().createElement(d.E99,{onChange:u,value:c},r().createElement(d.VCA,{value:"no-proxy",disabled:s,"data-testid":"no-proxy-radio"},"No Proxy"),r().createElement(d.VCA,{value:"env",disabled:s,"data-testid":"env-radio"},"System Proxy"),r().createElement(d.VCA,{value:"custom",disabled:s,"data-testid":"custom-radio"},"Manual Configuration"))),"custom"===c&&r().createElement(Kd,{disabled:s,proxyOptions:a,setProxyOptions:i}),("env"===c||"custom"===c)&&r().createElement(d.GEW,null,r().createElement(d.JU7,{htmlFor:"proxy-no-proxy-hosts",id:"proxy-no-proxy-hosts-label"},"Excluded hosts"),r().createElement(d.VYo,null,"Comma-separated list of hostnames and IP addresses. Connections to these hosts will not be forwarded through the proxy."),r().createElement(d.ksK,{id:"proxy-no-proxy-hosts","data-testid":"proxy-no-proxy-hosts","aria-labelledby":"proxy-no-proxy-hosts-label",onChange:p,value:m,optional:!0,disabled:s})),l)})),zd=["browserCommandForOIDCAuth","showOIDCDeviceAuthFlow","persistOIDCTokens"],Yd=()=>r().createElement("div",{"data-testid":"oidc-settings"},r().createElement("div",null,"Change the behavior of the OIDC authentication mechanism for server connection and Atlas Login in Compass."),r().createElement(Fd,{fields:["browserCommandForOIDCAuth"]}),r().createElement("div",null,r().createElement("strong",null,"MongoDB server OIDC Authentication options")),r().createElement(Fd,{fields:["showOIDCDeviceAuthFlow","persistOIDCTokens"]})),qd=["enableGenAIFeatures","enableGenAISampleDocumentPassing","enableGenAIToolCalling"],Gd=(0,Ee.Ng)((e=>({isAIFeatureEnabled:!!e.settings.settings.enableGenAIFeatures,isToolCallingEnabled:!!e.settings.settings.enableToolCalling})),null)((({isAIFeatureEnabled:e,isToolCallingEnabled:t})=>r().createElement("div",{"data-testid":"gen-ai-settings"},r().createElement("div",null,"Provides access to advanced generative AI capabilities."),r().createElement(Fd,{fields:["enableGenAIFeatures"]}),e&&r().createElement(r().Fragment,null,r().createElement(Fd,{fields:["enableGenAISampleDocumentPassing"]}),t&&r().createElement(Fd,{fields:["enableGenAIToolCalling"]}))))),Zd=["autoUpdates","enableMaps","trackUsageStatistics","enableFeedbackPanel"],Jd=()=>r().createElement("div",{"data-testid":"privacy-settings"},r().createElement("div",null,"To enhance the user experience, Compass can integrate with 3rd party services, which requires external network requests. Please choose from the settings below:"),r().createElement(Fd,{fields:Zd}),r().createElement("div",null,"With any of these options, none of your personal information or stored data will be submitted.",r().createElement("br",null),"Learn more: ",r().createElement(d.N_E,{href:"https://www.mongodb.com/legal/privacy-policy"},"MongoDB Privacy Policy"))),Qd=(0,d.AHW)({marginTop:d.YKD[400],marginBottom:d.YKD[400]}),Xd=(0,d.AHW)({div:{textAlign:"left",padding:d.YKD[400],justifyContent:"flex-start"}}),eu=(0,d.AHW)({marginRight:d.YKD[200],maxWidth:"50%"}),tu=({theme:e})=>{const t={fg:d.MFm.gray.base,bg:d.MFm.white},n={fg:d.MFm.black,bg:d.MFm.gray.dark1},{fg:a,bg:o}="DARK"===e?n:t;return r().createElement("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",fill:"none",viewBox:"0 0 171 119",className:eu},r().createElement("defs",null,r().createElement("clipPath",{id:"sidebar-clip"},r().createElement("path",{d:"M6 0 L42 0 Q48 0, 48 6 L48 113 Q48 119, 42 119 L6 119 Q0 119, 0 113 L0 6 Q0 0, 6 0 Z"}))),r().createElement("rect",{width:"171",height:"119",fill:o,rx:"6"}),r().createElement("rect",{width:"42",height:"119",fill:a,clipPath:"url(#sidebar-clip)"}),r().createElement("rect",{width:"117",height:"7",x:"48",y:"34",fill:a,rx:"3.5"}),r().createElement("rect",{width:"28",height:"7",x:"48",y:"21",fill:a,rx:"3.5"}),r().createElement("rect",{width:"28",height:"7",x:"82",y:"21",fill:a,rx:"3.5"}),r().createElement("rect",{width:"28",height:"7",x:"116",y:"21",fill:a,rx:"3.5"}),r().createElement("rect",{width:"117",height:"7",x:"48",y:"47",fill:a,rx:"3.5"}),r().createElement("rect",{width:"117",height:"7",x:"48",y:"60",fill:a,rx:"3.5"}),r().createElement("rect",{width:"117",height:"7",x:"48",y:"73",fill:a,rx:"3.5"}),r().createElement("rect",{width:"170",height:"118",x:".5",y:".5",stroke:a,rx:"5.5"}))},nu={onChange:Cd},au=["theme"],ou=(0,Ee.Ng)((({settings:{settings:e,preferenceStates:t}})=>({themeValue:e.theme??"OS_THEME",preferenceStates:t})),nu)((({themeValue:e,preferenceStates:t,onChange:n})=>{const a=(0,o.useCallback)((e=>{n("theme",e.target.checked?"OS_THEME":"LIGHT")}),[n]),i=(0,o.useCallback)((e=>{n("theme",e.target.value)}),[n]);return r().createElement("div",{"data-testid":"theme-settings"},r().createElement("div",null,"Change the appearance of Compass."),r().createElement(d.GEW,null,r().createElement(d.Sc0,{className:Qd,name:"use-os-theme",id:"use-os-theme","data-testid":"use-os-theme",label:r().createElement(r().Fragment,null,r().createElement(d.JU7,{htmlFor:"use-os-theme"},"Sync with OS"),r().createElement(d.VYo,null,"Automatically switch between light and dark themes based on your OS settings")),onChange:a,checked:"OS_THEME"===e,disabled:!!t.theme}),ld[t.theme??""]),r().createElement(d.GEW,null,r().createElement(d.E99,{id:"theme-selector",onChange:i,value:e,size:"full"},r().createElement(d.VCA,{id:"theme-selector-light","data-testid":"theme-selector-light",className:Xd,value:"LIGHT",disabled:!!t.theme||"OS_THEME"===e},r().createElement(tu,{theme:"LIGHT"}),"Light Theme"),r().createElement(d.VCA,{id:"theme-selector-dark","data-testid":"theme-selector-dark",className:Xd,value:"DARK",disabled:!!t.theme||"OS_THEME"===e},r().createElement(tu,{theme:"DARK"}),"Dark Theme"))))})),ru=R.of.filter((e=>"preview"===e.stage)).map((e=>e.name)),iu=R.of.filter((e=>"development"===e.stage)).map((e=>e.name));function su(){return((0,R.Fg)("showDevFeatureFlags")??!1)&&iu.length>0}function lu(){return ru.length>0}const cu=()=>{const e=lu(),t=su();return r().createElement("div",{"data-testid":"feature-flag-settings"},r().createElement("div",null,"These settings control experimental behavior of Compass. Use them at your own risk!"),r().createElement("div",null,e&&r().createElement(Fd,{fields:ru}),t&&r().createElement(Fd,{fields:iu})))},du=(0,d.AHW)({borderRadius:d.YKD[100],cursor:"pointer",marginBottom:d.YKD[100],background:"none",border:"none",width:"100%",padding:d.YKD[200],textAlign:"left",fontWeight:500}),uu=(0,d.AHW)({"&:hover,&:focus":{backgroundColor:d.MFm.green.light2,color:d.MFm.gray.dark3}}),mu=(0,d.AHW)({backgroundColor:d.MFm.green.light3,color:d.MFm.gray.dark3,"&:active,&:focus":{backgroundColor:d.MFm.green.light3,color:d.MFm.gray.dark3}}),pu=(0,d.AHW)({"&:hover,&:focus":{backgroundColor:d.MFm.gray.dark3,color:d.MFm.white}}),hu=(0,d.AHW)({backgroundColor:d.MFm.gray.dark2,color:d.MFm.white,"&:active,&:focus":{backgroundColor:d.MFm.gray.dark2,color:d.MFm.white}}),gu=({activeItem:e,items:t,onSelectItem:n})=>{const a=(0,d.D27)();return r().createElement("div",{"data-testid":"settings-modal-sidebar",role:"tablist","aria-labelledby":"modal-title"},t.map((([t,o])=>r().createElement("button",{type:"button",key:t,role:"tab","aria-controls":`${t}-section`,"aria-selected":e===t,className:(0,d.cx)(du,{[a?pu:uu]:t!==e,[a?hu:mu]:t===e}),id:`${t}-tab`,"data-testid":`sidebar-${t}-item`,onClick:()=>n(t)},o))))},fu=(0,d.AHW)({display:"flex",height:5*d.YKD[7],paddingTop:d.YKD[200]}),yu=(0,d.AHW)({position:"absolute",width:3*d.YKD[1600]}),bu=(0,d.AHW)({width:"80%",marginLeft:3*d.YKD[1600]},d.Rg),vu=(0,d.AHW)({paddingRight:d.YKD[200],paddingLeft:d.YKD[400],paddingBottom:d.YKD[200]}),Cu=(0,Ee.Ng)((e=>({isOpen:e.settings.isModalOpen&&"ready"===e.settings.loadingState,hasChangedSettings:e.settings.updatedFields.length>0,selectedTab:e.settings.tab,userConfigurableSettings:e.settings.settings})),{onClose:()=>e=>{e({type:fd})},onSave:()=>async(e,t,{preferencesSandbox:n,logger:a})=>{const{loadingState:o}=t().settings;if("loading"===o)throw new Error("Can't update user settings while sandbox is being set up");try{await n.applySandboxChangesToPreferences(),e({type:pd})}catch(e){a.log.warn(a.mongoLogId(1001000146),"Settings","Failed to update settings",{message:e.message})}},onSelectTab:e=>({type:gd,tab:e})})((({isOpen:e,selectedTab:t,onMount:n,onClose:a,onSave:i,onSelectTab:s,hasChangedSettings:l,userConfigurableSettings:c})=>{const u=(0,o.useRef)(n);(0,o.useEffect)((()=>{u.current?.()}),[]);const m=function(){const e=su();return lu()||e}(),p=(0,o.useMemo)((()=>{const e=[{tabId:"general",preferences:Wd,name:"General",component:Rd},{tabId:"theme",preferences:au,name:"Theme",component:ou},{tabId:"privacy",preferences:Zd,name:"Privacy",component:Jd},{tabId:"proxy",preferences:jd,name:"Proxy Configuration",component:Bd},{tabId:"oidc",preferences:zd,name:"OIDC",component:Yd},{tabId:"ai",preferences:qd,name:"Artificial Intelligence",component:Gd}].filter((e=>e.preferences.some((e=>Object.hasOwn(c,e)))));return m&&e.push({tabId:"preview",name:"Feature Preview",preferences:[],component:cu}),e}),[c,m]);t??=p[0].tabId;const h=p.find((e=>e.tabId===t))?.component??null;return r().createElement(d.k5W,{size:"large",title:"Settings",open:e,submitButtonText:"Save",onSubmit:i,submitDisabled:!l,onCancel:a,"data-testid":"settings-modal",minBodyHeight:2*d.YKD[1600]},r().createElement("div",{className:fu},r().createElement("div",{className:yu},r().createElement(gu,{activeItem:t,onSelectItem:s,items:p.map((e=>[e.tabId,e.name]))})),r().createElement("div",{className:bu,"data-testid":"settings-modal-content",role:"tabpanel",tabIndex:0,id:`${t}-section`,"aria-labelledby":`${t}-tab`},r().createElement("div",{className:vu},h&&r().createElement(h,null)))))}));var Eu=n(16151);class Su{_sandbox=null;get sandbox(){if(!this._sandbox)throw new Error("Trying to access sandbox before setup was called");return this._sandbox}preferences;constructor(e){this.preferences=e}async setupSandbox(){this._sandbox=await this.preferences.createSandbox()}async updateField(e,t){await this.sandbox.savePreferences({[e]:t})}async getSandboxState(){const[e,t]=await Promise.all([this.sandbox.getSettingsUIPreferences(),this.sandbox.getPreferenceStates()]),n=Object.keys(e).filter((n=>e[n]!==this.preferences.getPreferences()[n]&&void 0===t[n]));return{userPreferences:e,preferenceStates:t,updatedFields:n}}async applySandboxChangesToPreferences(){const{userPreferences:e,updatedFields:t}=await this.getSandboxState();var n,a;await this.preferences.savePreferences((n=e,a=t,Object.fromEntries(Object.entries(n).filter((([e])=>a.includes(e))))))}}const ku=(0,i.nk)({name:"CompassSettings",component:()=>r().createElement(r().Fragment,null,r().createElement(d.ETl,null,r().createElement(Cu,null))),activate:(e,t,{on:n,cleanup:a})=>{const o=function(e){const t=e?.preferencesSandbox??new Su(e.preferences);return(0,F.y$)((0,F.HY)({settings:bd}),(0,F.Tw)(P.A.withExtraArgument({preferences:e.preferences,preferencesSandbox:t,logger:e.logger,track:e.track,atlasAuthService:e.atlasAuthService,atlasAiService:e.atlasAiService})))}(t),{globalAppRegistry:r}=t,i=e=>{var t;o.dispatch((t=e,async e=>{e({type:hd,tab:t}),await e((async(e,t,{preferencesSandbox:n,logger:a})=>{try{e({type:dd}),await n.setupSandbox(),await e(vd())}catch(e){a.log.warn(a.mongoLogId(1001000145),"Settings","Failed to fetch settings",{message:e.message})}}))}))};return Eu.ipcRenderer&&n(Eu.ipcRenderer,"window:show-settings",(()=>i())),n(r,"open-compass-settings",i),{store:o,deactivate:a}}},{logger:(0,p.fF)("COMPASS-SETTINGS"),track:re.yL,preferences:R.fx,atlasAiService:sd.Dr,atlasAuthService:zt.L1});var wu=n(98051),xu=n(96441),Au=n(98540),Du=n(93885);const Iu=["IDLE","REPAIRING","UPDATING","PAUSED","CREATING","DELETING","DELETED"];class Mu extends Du.A0{loadAllPromise;atlasService;orgId;projectId;logger;constructor(e,t,n,a){super(),this.atlasService=e,this.orgId=t,this.projectId=n,this.logger=a}async load({id:e}){return(await this.loadAll()).find((t=>t.id===e))}async _loadAndNormalizeClusterDescriptionInfo(){let e=[];try{const t=await this.atlasService.authenticatedFetch(this.atlasService.cloudEndpoint(`/explorer/v1/groups/${this.projectId}/clusters/connectionInfo`));e=await t.json()}catch(e){throw this.logger.log.error((0,p.oW)(1001000357),"LoadAndNormalizeClusterDescriptionInfo","Failed to load connection list",{error:e.message}),e}return e.map((e=>e.atlasMetadata&&Iu.includes(e.atlasMetadata.clusterState)?e:(this.logger.log.warn((0,p.oW)(1001000358),"LoadAndNormalizeClusterDescriptionInfo","Skipping connection info due to unsupported cluster state or missing metadata",{connectionInfo:e}),null))).filter((e=>!!e))}loadAll(){return this.loadAllPromise??=this._loadAndNormalizeClusterDescriptionInfo().finally((()=>{delete this.loadAllPromise})),this.loadAllPromise}}const Tu=(0,i.xw)((function({orgId:e,projectId:t,children:n}){const a=(0,p.Ul)("ATLAS-CLOUD-CONNECTION-STORAGE"),i=(0,zt.fA)(),s=(0,o.useRef)(new Mu(i,e,t,a));return r().createElement(Du.n4,{value:s.current},n)}));class Lu extends zt.nH{signIn(){return this.getUserInfo()}signOut(){return Promise.resolve()}isAuthenticated(){return Promise.resolve(!0)}getUserInfo(){throw new Error("AtlasCloudAuthService.getUserInfo not implemented")}}const Ou=new Lu;function Nu({children:e}){return r().createElement(zt.sr,{value:Ou},e)}var _u=n(78268);function Fu(e,t={current:{}}){return Object.assign(((...n)=>{t.current.onDebug?.(e,...n)}),{namespace:e,color:"",diff:-1,enabled:!0,log:(...n)=>{t.current.onDebug?.(e,...n)},destroy:()=>!1,extend:(n,a=":")=>Fu(`${e}${a}${n}`,t)})}const Pu={logging:null,tracking:null};class Wu{log;debug;component;callbackRef;constructor(e,t){this.component=e,this.callbackRef=t;const n={write(e,n){const a=JSON.parse(e);Pu.logging?.push(a),t.current.onLog?.(a),n()},end(e){e()}};this.log=new _u.MongoLogWriter("","",n).bindComponent(this.component),this.debug=Fu(this.component,this.callbackRef)}mongoLogId=p.oW;createLogger=e=>new Wu(e,this.callbackRef)}const Ru="compass-welcome/welcome-modal/ModalClosed",Uu="compass-welcome/welcome-modal/OpenSettingsClicked",$u=(e={isOpen:!1},t)=>t.type===Ru||t.type===Uu?{isOpen:!1}:e;function Vu(e){return r().createElement("svg",(0,a.A)({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 480 640"},e),r().createElement("defs",null,r().createElement("clipPath",{id:"b"},r().createElement("path",{style:{fill:"none"},d:"M-642.12 0h600v220h-600z"})),r().createElement("style",null,".g,.h{fill:none}.i{fill:#e3fcf7}.g,.h,.i,.j,.k,.l,.m,.o,.p{stroke:#000000;stroke-linecap:round;stroke-linejoin:round}.j{fill:#ffc010}.k,.o{fill:#ffffff}.l{fill:#ffc010}.m{fill:#00ed64}.h{stroke-dasharray:0 0 2 2}.o{stroke-width:.8px}")),r().createElement("g",{style:{clipPath:"url(#b)"},id:"a"},r().createElement("path",{d:"M-236.03 137.38c0-26.17 20.86-47.41 47.03-47.41h.76c25.79 0 47.03-21.24 47.03-47.03v-.76c0-26.17 21.24-47.03 47.03-47.03h.38c26.17 0 47.03-20.86 47.03-47.03v-.76c0-25.79 21.24-47.03 47.03-47.03h.76c25.79 0 47.03 21.24 47.03 47.03v236.68c0 52.72-42.86 95.2-95.2 95.2h-236.68c-25.79 0-47.03-21.24-47.03-47.03v-.76c0-26.17 21.24-47.03 47.41-47.03 26.17.38 47.41-20.86 47.41-47.03Z",style:{fill:"#00ed64"},id:"c"})),r().createElement("g",{id:"e"},r().createElement("path",{className:"j",d:"M63.21 188.68c-4.1-21.5 1.96-49.29 18.26-74.75s39-42.61 60.24-47.88l8.3-12.97 27.22 17.43c26.63 17.05 26.92 64.12.65 105.15-26.27 41.03-69.14 60.47-95.77 43.42l-27.22-17.43 8.3-12.97Z"}),r().createElement("path",{className:"p",d:"M81.48 113.92c2.32-3.63 4.78-7.08 7.33-10.35l95.43 61.09c-1.91 3.69-4.02 7.37-6.34 10.99-26.27 41.03-69.14 60.47-95.77 43.42l-27.22-17.43 8.3-12.97c-4.1-21.5 1.96-49.29 18.26-74.75Z"}),r().createElement("ellipse",{className:"j",cx:102.47,cy:127.36,rx:88.2,ry:57.25,transform:"rotate(-57.37 102.477 127.362)"}),r().createElement("path",{className:"p",d:"M54.25 96.5c1.57-2.46 3.21-4.84 4.9-7.14-21.7 39.13-19.94 81.69 5.09 97.71 25.03 16.02 64.42-.2 90.87-36.28-1.38 2.5-2.86 4.98-4.43 7.44-26.27 41.03-69.14 60.47-95.77 43.42-26.63-17.05-26.92-64.12-.65-105.15Z"}),r().createElement("path",{className:"l",d:"M64.24 187.07c19.83 12.69 53.02-3.75 74.13-36.72 21.11-32.98 22.15-70 2.32-82.69-19.83-12.69-63.77-20.41-92.72 24.82-28.95 45.22-3.56 81.9 16.27 94.6Z"}),r().createElement("ellipse",{className:"h",cx:102.47,cy:127.36,rx:70.9,ry:42.63,transform:"rotate(-57.37 102.477 127.362)"}),r().createElement("path",{className:"p",d:"m96.05 123.25-18.81 49.11 36.73-37.63 18.81-49.12-36.73 37.64z"}),r().createElement("path",{className:"g",d:"m55.11 147.29 10.03-4.33M138.83 111.16l10.04-4.34M103.24 178.1l-.27-10.93M101.01 86.94l-.27-10.93"}),r().createElement("path",{className:"m",d:"m89.65 119.16-18.81 49.11 36.73-37.64 18.81-49.11-36.73 37.64z"}),r().createElement("ellipse",{className:"p",cx:98.61,cy:124.89,rx:7.2,ry:4.58,transform:"rotate(-57.37 98.615 124.893)"}),r().createElement("path",{className:"h",d:"M43.26 100.66c1.63 27.26 16.2 53.73 41.48 69.91 7.58 4.85 15.59 8.44 23.79 10.82-15.92 10.46-32.47 13.23-44.29 5.67-18.62-11.92-42.14-44.98-20.98-86.41Z"}),r().createElement("path",{className:"g",d:"m122 139.69 8.76 5.96M70.84 106.01l8.77 5.96"}),r().createElement("path",{className:"i",d:"m163.4 460.46-69.58-34.79V214.39l69.58 34.79v211.28z"}),r().createElement("path",{className:"p",d:"m93.82 328.45 47.08 23.54v-16.83l-47.08-23.54v16.83z"}),r().createElement("ellipse",{className:"p",cx:445.67,cy:451.77,rx:12.98,ry:29.42,transform:"rotate(-61.08 445.695 451.781)"}),r().createElement("path",{className:"k",d:"M475.78 458.11c3.47-6.28-5.25-17.73-19.48-25.59-14.22-7.86-28.56-9.14-32.03-2.87l-4.36 7.89c3.47-6.28 17.81-4.99 32.03 2.87 14.22 7.86 22.94 19.31 19.48 25.59l4.36-7.89Z"}),r().createElement("path",{className:"k",d:"M475.78 458.11c3.47-6.28-5.25-17.73-19.48-25.59-14.22-7.86-28.56-9.14-32.03-2.87l-4.36 7.89c3.47-6.28 17.81-4.99 32.03 2.87 14.22 7.86 22.94 19.31 19.48 25.59l4.36-7.89Z"}),r().createElement("path",{className:"k",d:"M462.34 462.5c2.33-4.22-3.53-11.92-13.09-17.2-9.56-5.28-19.2-6.14-21.53-1.93l-3.92 7.09c2.33-4.22 11.97-3.36 21.53 1.93 9.56 5.28 15.42 12.98 13.09 17.2l3.92-7.09Z"}),r().createElement("path",{className:"j",d:"M464.91 476.81c3.41-6.17-5.05-17.37-18.9-25.02-13.84-7.65-27.83-8.85-31.24-2.68l-80.79 133.16 67.38 37.22 63.55-142.69Z"}),r().createElement("path",{className:"l",d:"M375.28 514.28c3.98-7.21 20.31-5.81 36.48 3.13 15.34 8.48 25.02 20.69 22.56 28.07l30.58-68.67c3.41-6.17-5.05-17.37-18.9-25.02-13.84-7.65-27.83-8.85-31.24-2.68l-39.73 65.48.24-.31Z"}),r().createElement("path",{className:"p",d:"M431.2 446.02c-7.9-1.75-14.28-.8-16.43 3.1l-80.79 133.16 10.9 6.02 86.32-142.28Z"}),r().createElement("ellipse",{className:"k",cx:367.67,cy:600.89,rx:16.98,ry:38.49,transform:"rotate(-61.08 367.688 600.904)"}),r().createElement("ellipse",{className:"i",cx:367.67,cy:600.89,rx:11.28,ry:30.89,transform:"rotate(-61.08 367.688 600.904)"}),r().createElement("path",{className:"g",d:"m381.64 596.43-34.56 3.39M388.36 602.19l-34.55 3.39"}),r().createElement("ellipse",{className:"p",cx:387.06,cy:416.67,rx:12.98,ry:29.42,transform:"rotate(-57.08 387.085 416.683)"}),r().createElement("path",{className:"k",d:"M367.26 393.12c3.9-6.02 18.11-3.74 31.75 5.09s21.54 20.87 17.64 26.89l-4.9 7.56c3.9-6.02-4-18.06-17.64-26.89-13.64-8.83-27.86-11.11-31.75-5.09l4.9-7.56Z"}),r().createElement("path",{className:"k",d:"M367.26 393.12c3.9-6.02 18.11-3.74 31.75 5.09s21.54 20.87 17.64 26.89l-4.9 7.56c3.9-6.02-4-18.06-17.64-26.89-13.64-8.83-27.86-11.11-31.75-5.09l4.9-7.56Z"}),r().createElement("path",{className:"k",d:"M369.73 407.04c2.62-4.05 12.18-2.51 21.35 3.42 9.17 5.94 14.48 14.03 11.86 18.07l-4.4 6.8c2.62-4.05-2.69-12.14-11.86-18.07-9.17-5.94-18.73-7.47-21.35-3.42l4.4-6.8Z"}),r().createElement("path",{className:"j",d:"M355.91 411.53c3.83-5.92 17.7-3.74 30.98 4.85 13.28 8.6 20.94 20.36 17.11 26.28l-79.26 134.08-64.62-41.83 95.8-123.38Z"}),r().createElement("path",{className:"g",d:"M365.18 508.23c4.47-6.91-4.47-20.65-19.98-30.69-15.51-10.04-31.7-12.57-36.18-5.66"}),r().createElement("path",{className:"l",d:"M386.88 416.38c-13.28-8.59-27.15-10.77-30.98-4.85l-46.1 59.37c5.35-5.65 20.68-2.88 35.39 6.64 15.51 10.04 24.45 23.78 19.98 30.69l.02.04 38.79-65.61c3.83-5.92-3.83-17.68-17.11-26.28Z"}),r().createElement("path",{className:"p",d:"M373.04 409.76c-7.99-2.48-14.66-2.05-17.13 1.77l-95.8 123.38 10.49 6.79 102.44-131.93Z"}),r().createElement("ellipse",{className:"k",cx:292.42,cy:555.82,rx:16.98,ry:38.49,transform:"rotate(-57.08 292.438 555.839)"}),r().createElement("ellipse",{className:"i",cx:292.42,cy:555.82,rx:11.28,ry:30.89,transform:"rotate(-57.08 292.438 555.839)"}),r().createElement("path",{className:"g",d:"m305.5 551.38-32.39 3.18M311.83 557.18l-32.37 3.18"}),r().createElement("path",{className:"p",d:"m412.4 500.82-1.99 3.32c-1.92 3.2-5.43 2-7.33.1-.88-.88-1.62-1.88-2.29-2.91-3.34-5.16-8.86-10.4-15.88-14.6h0c-7.02-4.2-14.24-6.59-20.37-7.11-1.23-.1-2.46-.28-3.65-.64-2.57-.79-5.29-3.31-3.37-6.52l1.99-3.32 32.96 9.09 19.93 22.59"}),r().createElement("path",{className:"m",d:"M394.21 471.2h0c-14.61-8.75-30.14-9.67-34.7-2.06-1.92 3.2.8 5.73 3.37 6.52 1.19.36 2.42.54 3.65.64 6.13.51 13.35 2.9 20.37 7.11h0c7.02 4.2 12.54 9.45 15.88 14.6.67 1.04 1.41 2.03 2.29 2.91 1.91 1.9 5.42 3.1 7.33-.1 4.56-7.61-3.59-20.87-18.19-29.62Z"}),r().createElement("path",{className:"g",d:"m380.51 465.29-7.24 12.09"}),r().createElement("path",{className:"p",d:"M379.94 391.54c.28-.43.63-.81 1.01-1.15-6.43-1.33-11.58-.52-13.69 2.74l-4.9 7.56c2.08-3.22 7.13-4.04 13.46-2.78l4.12-6.36ZM437.52 426.6c.12-.21.25-.42.39-.61-6.6-.93-11.75.24-13.64 3.67l-4.36 7.89c1.89-3.42 7.02-4.59 13.59-3.68l4.01-7.26ZM93.82 293.89l25.1 12.55v-16.83l-25.1-12.54v16.82z"}),r().createElement("path",{className:"m",d:"M149.16 349.08 45.92 297.46v-16.83l103.24 51.62v16.83zM63.47 254.82v16.83l69.58 34.79v-16.83l-69.58-34.79z"}),r().createElement("path",{className:"k",d:"m163.4 460.46 69.59-34.79V214.39l-69.59 34.79v211.28z"}),r().createElement("path",{className:"i",d:"m302.57 460.46-69.58-34.79V214.39l69.58 34.79v211.28z"}),r().createElement("path",{className:"k",d:"m302.57 460.46 69.59-34.79V214.39l-69.59 34.79v211.28z"}),r().createElement("path",{className:"m",d:"M18.61 232.65v16.83l33.07 16.53v-16.83l-33.07-16.53z"}),r().createElement("path",{className:"h",d:"m133.03 407.98 30.4 15.2L189 410.4V291.75l44.01-22 12.44 6.22h0v58.6l35.03 17.52v-31.22l-18.5-9.25v72.23l40.62 20.3 28.07-14.04v-88.48"}),r().createElement("path",{className:"m",d:"m302.57 270.9-69.58-34.79v-21.94l69.58 34.79v21.94z"}),r().createElement("path",{className:"m",d:"m302.57 270.9 69.59-34.79v-21.94l-69.59 34.79v21.94zM163.4 270.9l-69.58-34.79v-21.94l69.58 34.79v21.94zM163.4 270.9l69.59-34.79v-21.94l-69.59 34.79v21.94z"}),r().createElement("path",{className:"g",d:"m323.14 295.62 14.23-21.89M323.14 280.75l14.23 7.84"}),r().createElement("path",{className:"g",transform:"rotate(-45 276.745 195.298)",d:"M269.28 187.83h14.92v14.92h-14.92z"}),r().createElement("ellipse",{className:"o",cx:107.56,cy:231.94,rx:3.89,ry:6.18,transform:"rotate(-38.44 107.547 231.93)"}),r().createElement("ellipse",{className:"o",cx:121.15,cy:238.27,rx:3.89,ry:6.18,transform:"rotate(-38.44 121.136 238.26)"}),r().createElement("ellipse",{className:"o",cx:134.74,cy:244.61,rx:3.89,ry:6.18,transform:"rotate(-38.44 134.72 244.604)"}),r().createElement("path",{className:"m",d:"M135.56 385.08c0 5.52-10 20.8-10 20.8s-10-15.28-10-20.8 4.48-10 10-10 10 4.48 10 10Z"}),r().createElement("circle",{className:"k",cx:125.55,cy:384.87,r:5.61}),r().createElement("path",{className:"p",d:"M132.58 393.7s16.19.32 5.35 5.99l-12.38 6.2"}),r().createElement("path",{className:"k",d:"m213.82 542.78 70.95-91.39M188.97 574.77l17.09-22M210.17 511.09l34.79-44.8"}),r().createElement("circle",{className:"k",cx:91.59,cy:24.58,r:9.28}),r().createElement("path",{d:"M85.95 31.95s11.7-3.9 13.37-12.51c2 2.69 2.55 8.58-1.62 12.11-4.27 3.62-8.62 2.14-11.75.4Z",style:{strokeWidth:0,stroke:"#000000",strokeLinecap:"round",strokeLinejoin:"round"}}),r().createElement("path",{className:"k",d:"m195.9 529.94 1.28-10.12 1.27-10.12 8.13 6.16 8.12 6.17-9.4 3.95-9.4 3.96z"}),r().createElement("path",{d:"m202.82 520.81 11.88 1.22-16.25-12.33 4.37 11.11z"}),r().createElement("path",{className:"k",d:"m202.82 520.81-6.92 9.13M425.39 371.16l-18.96 29.3M430.45 341.09l-33.51 51.75"}),r().createElement("path",{className:"g",d:"M6.39 111.97c8.12-34.74 32.38-63.27 64.45-77.24M3.46 137.55c0-5.75.43-11.4 1.27-16.92"}),r().createElement("path",{className:"p",d:"m269.55 232.45-3.36 3.35 10.55 10.56 6.87-6.88-14.06-7.03zM158.95 458.23 98.26 440.7v-12.81l60.69 30.34zM167.86 458.23l65.13-20.69 62.47 19.36-62.47-31.23-65.13 32.56zM327.06 448.21l-4.04 5.4 44.69-12.91v-12.81l-40.65 20.32z"})))}function Hu(e){return r().createElement("svg",(0,a.A)({className:"darkreader-ignore-child-inline-style",width:"298",height:"198",viewBox:"0 0 298 198",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e),r().createElement("path",{d:"M242.877 47.8056C238.507 32.8626 224.691 21.946 208.321 21.946C195.037 21.946 183.437 29.1352 177.197 39.8325C176.159 39.7129 175.108 39.6464 174.038 39.6464C159.044 39.6464 146.892 51.7856 146.892 66.7618C146.892 81.7381 159.044 93.8772 174.038 93.8772H242.737C255.469 93.8772 265.792 83.5652 265.792 70.8481C265.792 58.1309 255.549 47.8987 242.877 47.8189V47.8056Z",fill:"black"}),r().createElement("path",{d:"M242.877 39.1482C238.507 24.2052 224.691 13.2886 208.321 13.2886C195.037 13.2886 183.437 20.4777 177.197 31.175C176.159 31.0554 175.108 30.989 174.038 30.989C159.044 30.989 146.892 43.1281 146.892 58.1043C146.892 73.0806 159.044 85.2197 174.038 85.2197H242.737C255.469 85.2197 265.792 74.9078 265.792 62.1906C265.792 49.4734 255.549 39.2412 242.877 39.1615V39.1482Z",fill:"white",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M139.229 89.2661H47.6801C39.1351 89.2661 32.208 96.1854 32.208 104.721V104.727C32.208 113.263 39.1351 120.182 47.6801 120.182H139.229C147.774 120.182 154.701 113.263 154.701 104.727V104.721C154.701 96.1854 147.774 89.2661 139.229 89.2661Z",fill:"white",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M96.9497 103.06H47.0812C46.1591 103.06 45.4116 103.806 45.4116 104.727C45.4116 105.648 46.1591 106.395 47.0812 106.395H96.9497C97.8717 106.395 98.6193 105.648 98.6193 104.727C98.6193 103.806 97.8717 103.06 96.9497 103.06Z",fill:"white",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M109.023 123.664C121.947 142.806 147.962 147.856 167.133 134.946C186.296 122.036 191.352 96.05 178.427 76.9011C165.503 57.7589 139.488 52.7093 120.317 65.6191C101.154 78.529 96.0983 104.515 109.023 123.664Z",fill:"white"}),r().createElement("path",{d:"M174.463 104.721C174.463 93.4785 165.25 84.2761 153.995 84.2761H105.058C99.8765 96.794 100.874 111.591 109.029 123.664C109.375 124.175 109.734 124.68 110.1 125.172H154.002C165.257 125.172 174.47 115.969 174.47 104.727L174.463 104.721Z",fill:"#FFC010",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M194.06 184.087C194.06 184.087 195.596 186.293 201.157 182.432C206.718 178.565 205.175 176.36 205.175 176.36L180.45 141.151C180.45 141.151 178.401 139.497 173.446 142.939C168.49 146.387 169.335 148.879 169.335 148.879L194.06 184.087Z",fill:"white",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M205.175 176.36L180.45 141.151C180.45 141.151 178.401 139.497 173.446 142.939C168.969 146.055 169.228 148.387 169.315 148.812C174.25 145.39 176.293 147.045 176.293 147.045L201.017 182.253C201.017 182.253 201.064 182.326 201.117 182.459C201.13 182.452 201.144 182.439 201.157 182.432C206.718 178.565 205.175 176.36 205.175 176.36Z",fill:"black"}),r().createElement("path",{d:"M169.82 150.992C169.82 150.992 172.168 152.606 177.516 148.998C182.871 145.391 182.252 142.613 182.252 142.613L175.62 132.793C175.62 132.793 174.224 134.507 169.76 137.517C165.297 140.527 163.182 141.171 163.182 141.171L169.813 150.992H169.82Z",fill:"white",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M117.97 66.1041C139.375 51.6793 168.437 57.327 182.878 78.7083C197.319 100.09 191.665 129.119 170.259 143.543C148.854 157.968 119.792 152.32 105.351 130.939C90.9101 109.558 96.5641 80.5289 117.97 66.1041ZM109.415 128.202C122.34 147.344 148.355 152.394 167.525 139.484C186.689 126.574 191.745 100.588 178.82 81.4391C165.896 62.2969 139.881 57.2473 120.71 70.1571C101.546 83.067 96.491 109.053 109.415 128.202Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M117.584 61.566C138.989 47.1413 168.051 52.7889 182.492 74.1702C196.933 95.5516 191.279 124.581 169.874 139.005C148.468 153.43 119.406 147.782 104.965 126.401C90.5244 105.02 96.1784 75.9908 117.584 61.566ZM109.03 123.664C121.954 142.806 147.969 147.855 167.14 134.946C186.303 122.036 191.359 96.0499 178.434 76.901C165.51 57.7588 139.495 52.7092 120.324 65.619C101.161 78.5289 96.1052 104.515 109.03 123.664Z",fill:"#00F04C",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M117.584 61.566C138.989 47.1413 168.051 52.7889 182.492 74.1702C196.933 95.5516 191.279 124.581 169.874 139.005C148.468 153.43 119.406 147.782 104.965 126.401C90.5244 105.02 96.1784 75.9908 117.584 61.566ZM109.03 123.664C121.954 142.806 147.969 147.855 167.14 134.946C186.303 122.036 191.359 96.0499 178.434 76.901C165.51 57.7588 139.495 52.7092 120.324 65.619C101.161 78.5289 96.1052 104.515 109.03 123.664Z",fill:"#00F04C",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M172.361 137.444L179.332 147.736C179.332 147.736 182.698 144.892 182.306 142.56L176.472 133.949L172.361 137.437V137.444Z",fill:"black"}),r().createElement("path",{d:"M154.787 102.521H110.36C109.14 102.521 108.151 103.509 108.151 104.727C108.151 105.946 109.14 106.933 110.36 106.933H154.787C156.007 106.933 156.995 105.946 156.995 104.727C156.995 103.509 156.007 102.521 154.787 102.521Z",fill:"white",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}))}const Ku=(0,d.AHW)({padding:`0 ${d.YKD[900]}px`}),ju=(0,d.AHW)({fontSize:"inherit"}),Bu=(0,Ee.Ng)((e=>({isOpen:e.isOpen})),{onClose:()=>(e,t,{preferences:n})=>{n.savePreferences({showedNetworkOptIn:!0}),e({type:Ru})},onOpenSettingsClick:()=>(e,t,{preferences:n,globalAppRegistry:a})=>{n.savePreferences({showedNetworkOptIn:!0}),e({type:Uu}),a.emit("open-compass-settings","privacy")}})((({isOpen:e,onClose:t,onOpenSettingsClick:n})=>{const a=(0,R.Fg)("networkTraffic"),o=(0,d.D27)();return r().createElement(d._U_,{"data-testid":"welcome-modal",open:e,onClose:t,buttonProps:{onClick:t,children:"Start"},title:"Welcome to Compass",showBlob:!0,blobPosition:"top right",disclaimer:a?r().createElement("div",{className:Ku},"To help improve our products, anonymous usage data is collected and sent to MongoDB in accordance with MongoDB's privacy policy.",r().createElement("br",null),"Manage this behaviour on the Compass"," ",r().createElement(d.N_E,{"data-testid":"open-settings-link",hideExternalIcon:!0,className:ju,onClick:n},"Settings")," ","page."):void 0,graphic:r().createElement(Vu,{width:156,height:209}),linkText:"",darkMode:o},r().createElement(d.nBu,null,"Build aggregation pipelines, optimize queries, analyze schemas, and more. All with the GUI built by - and for - MongoDB."))})),zu=.35,Yu=1.82875*Math.PI,qu=Yu+Math.PI,Gu=29.7,Zu="#FFE212",Ju="#8a7b0bff";function Qu({offsetX:e,offsetY:t,rotation:n,sparkOffsetDirection:a,sparkOffsetAmount:o,scale:i}){const s=e+Math.cos(a)*o,l=t+Math.sin(a)*o;return r().createElement("g",{transform:`translate(${s}, ${l}) rotate(${n})`},r().createElement("g",{transform:`scale(${i})`},r().createElement("path",{d:"M-8 -10 L4 2 L-2 2 L8 12 L-6 4 L0 4 Z",fill:Zu,stroke:Ju,strokeWidth:"0.8"}),r().createElement("path",{d:"M6 -16 L14 -6 L10 -6 L18 0 L8 -4 L12 -4 Z",fill:Zu,stroke:Ju,strokeWidth:"0.5",opacity:"0.8"}),r().createElement("path",{d:"M-18 6 L-8 14 L-12 14 L-4 20 L-14 16 L-10 16 Z",fill:Zu,stroke:Ju,strokeWidth:"0.5",opacity:"0.7"})))}function Xu(){const e=function(){const e=(0,s.w2)((e=>"connected"===e.status));return(0,o.useMemo)((()=>e.length>0),[e])}(),t=(0,o.useRef)(null),[n,a]=(0,o.useState)(e?1:0);(0,o.useLayoutEffect)((()=>{const n=()=>{t.current&&cancelAnimationFrame(t.current)};if(e){n();const e=Date.now(),o=()=>{const n=Date.now()-e,r=Math.min(n/500,1),i=(s=r)*s*(5.7*s-4.7);var s;a((e=>e>=.99999?e:i)),r<.99999&&(t.current=requestAnimationFrame(o))};t.current=requestAnimationFrame(o)}else if(!e){n();const e=Date.now(),o=()=>{const n=Date.now()-e,r=Math.min(n/200,1),i=1-r;r>1e-6&&(t.current=requestAnimationFrame(o)),a((e=>e<=1e-6?e:i))};t.current=requestAnimationFrame(o)}return n}),[e]);const i=n*Gu*Math.cos(Yu),l=n*Gu*Math.sin(Yu),c=n*Gu*Math.cos(qu),d=n*Gu*Math.sin(qu),u=Math.min(Math.max((n-.65)/zu,0),1),m=e&&n>.65?5*u*Math.pow(1-u,4)*5:0,p=1.5*u,h=u*u*44;return r().createElement("svg",{className:"darkreader-ignore-child-inline-style","data-testid":"connection-plug-svg",width:"298",height:"198",viewBox:"0 0 448 298",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r().createElement("path",{d:"M313.02 232.35C313.02 209.35 331.69 190.67 354.7 190.67C377.71 190.67 396.38 172 396.38 148.99V65.6502C396.38 42.6502 377.71 23.9702 354.7 23.9702C331.69 23.9702 313.02 42.6402 313.02 65.6502C313.02 88.6602 294.35 107.33 271.34 107.33H187.99C164.99 107.33 146.31 126 146.31 149.01C146.31 172.02 127.64 190.69 104.63 190.69C81.6202 190.69 62.9502 209.36 62.9502 232.37C62.9502 255.38 81.6202 274.05 104.63 274.05H271.33C294.33 274.05 313.01 255.38 313.01 232.37L313.02 232.35Z",fill:"#E3FCF7"}),r().createElement("path",{d:"M89.8202 186.92C98.8611 186.92 106.19 179.591 106.19 170.55C106.19 161.509 98.8611 154.18 89.8202 154.18C80.7793 154.18 73.4502 161.509 73.4502 170.55C73.4502 179.591 80.7793 186.92 89.8202 186.92Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M361.32 171.49C370.361 171.49 377.69 164.161 377.69 155.12C377.69 146.079 370.361 138.75 361.32 138.75C352.279 138.75 344.95 146.079 344.95 155.12C344.95 164.161 352.279 171.49 361.32 171.49Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M360.95 164.37C369.991 164.37 377.32 157.041 377.32 148C377.32 138.959 369.991 131.63 360.95 131.63C351.909 131.63 344.58 138.959 344.58 148C344.58 157.041 351.909 164.37 360.95 164.37Z",fill:"#FFE212",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M360.95 155.66C365.181 155.66 368.61 152.23 368.61 148C368.61 143.769 365.181 140.34 360.95 140.34C356.72 140.34 353.29 143.769 353.29 148C353.29 152.23 356.72 155.66 360.95 155.66Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M89.4403 179.8C98.4812 179.8 105.81 172.47 105.81 163.43C105.81 154.389 98.4812 147.06 89.4403 147.06C80.3994 147.06 73.0703 154.389 73.0703 163.43C73.0703 172.47 80.3994 179.8 89.4403 179.8Z",fill:"#FFE212",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M89.4403 171.09C93.6708 171.09 97.1003 167.661 97.1003 163.43C97.1003 159.2 93.6708 155.77 89.4403 155.77C85.2098 155.77 81.7803 159.2 81.7803 163.43C81.7803 167.661 85.2098 171.09 89.4403 171.09Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:`M363.88 150.97L411.3 123.59C427.27 114.37 432.74 93.9598 423.52 77.9898L420.41 72.6098C411.19 56.6398 390.78 51.1698 374.81 60.3898L${256.48+c} ${128.71+d}L${260.83+c} ${136.24+d}L379.16 67.9198C390.97 61.0998 406.07 65.1498 412.88 76.9598L415.99 82.3398C422.81 94.1498 418.76 109.25 406.95 116.06L359.53 143.44C358.19 144.22 357.36 145.65 357.36 147.2C357.36 150.55 360.98 152.64 363.88 150.96V150.97Z`,fill:"#FFE212",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("g",{transform:`translate(${i}, ${l})`},r().createElement("path",{d:"M211.184 145.864L209.204 142.434L198.76 148.464L200.74 151.894L211.184 145.864Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M225.221 170.178L223.241 166.748L212.797 172.778L214.777 176.208L225.221 170.178Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"})),r().createElement("g",{transform:`translate(${c}, ${d})`},r().createElement("path",{d:"M262.886 173.028C272.299 167.594 271.64 148.831 261.414 131.119C251.189 113.408 235.269 103.456 225.856 108.89C216.443 114.325 217.102 133.088 227.328 150.799C237.553 168.511 253.473 178.463 262.886 173.028Z",fill:"white",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M299.33 149.41C298.85 149.69 298.36 149.93 297.86 150.16L274.69 163.54L266.63 127.66L239.67 102.88L262.84 89.4996C263.29 89.1796 263.75 88.8796 264.23 88.5996C274.44 82.6996 288.67 87.5596 298.67 99.4296L301.08 98.0396C305.15 95.6896 310.35 97.0896 312.7 101.15C315.05 105.22 313.65 110.42 309.59 112.77L307.18 114.16C312.46 128.75 309.55 143.5 299.34 149.4L299.33 149.41Z",fill:"#00ED64",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M278.861 120.6C271.071 107.11 259.991 98.0395 250.731 96.4995L238.471 103.58L240.561 105.73C248.811 106.72 259.131 115.15 266.421 127.79C273.071 139.3 275.431 151.24 273.331 159.05L274.691 163.55L285.571 157.27C289.011 148.5 286.721 134.23 278.861 120.61V120.6Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M263.23 173.79C253.3 179.52 236.69 169.34 226.13 151.05C215.57 132.76 215.06 113.28 224.98 107.55L234.88 101.84C244.81 96.1098 261.42 106.29 271.98 124.58C282.54 142.87 283.05 162.35 273.13 168.08L263.23 173.79ZM262.15 171.92C271.1 166.75 270.28 148.57 260.31 131.3C250.34 114.04 235.01 104.23 226.05 109.4C217.1 114.57 217.92 132.75 227.89 150.02C237.86 167.28 253.19 177.09 262.15 171.92Z",fill:"#00ED64",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M301.531 97.7798C306.901 99.9198 310.831 107.39 310.041 112.51L306.941 114.3C305.731 110.41 301.851 103.66 298.431 99.5698L301.531 97.7798Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M309.5 97.8897L312.49 96.1597C312.49 96.1597 314.2 96.6297 315.74 99.2997C317.28 101.97 316.96 103.61 316.96 103.61L313.84 105.41C313.84 105.41 314.12 103.8 312.62 101.2C311.12 98.5997 309.49 97.8797 309.49 97.8797L309.5 97.8897Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M250.171 131.84L254.791 139.84C254.791 139.84 249.941 141.99 247.911 138.48C245.881 134.97 250.171 131.84 250.171 131.84Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M240.074 129.072L238.094 125.642L227.649 131.672L229.629 135.102L240.074 129.072Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M254.121 153.386L252.141 149.956L241.696 155.986L243.676 159.416L254.121 153.386Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M283.78 144.93L291.21 140.64C291.21 140.64 315.45 127.55 303.35 106.6C303.35 106.6 310.64 116.67 309.55 130.97C309.06 137.41 306.74 142.42 303.94 145.62C300.53 149.52 296.15 151.14 290.25 154.55C279.5 160.75 284.61 157.39 284.61 157.39L283.77 144.93H283.78Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"})),r().createElement("path",{d:`M92.62 163.48C92.62 165 91.8 166.4 90.48 167.17L41.03 195.85C29.36 202.59 25.27 217.47 31.78 229.21C38.48 241.29 54.24 245.24 66.2 238.33L${122.54+i} ${205.8+l}L${126.89+i} ${213.33+l}L70.64 245.81C54.47 255.15 33.24 249.75 24.18 233.42C15.38 217.55 20.91 197.43 36.68 188.32L86.18 159.74C89.05 158.08 92.64 160.17 92.62 163.48Z`,fill:"#FFE212",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("g",{transform:`translate(${i}, ${l})`},r().createElement("path",{d:"M210.446 202.625C219.859 197.19 219.2 178.427 208.975 160.716C198.749 143.004 182.829 133.052 173.416 138.487C164.004 143.921 164.662 162.684 174.888 180.396C185.114 198.107 201.034 208.059 210.446 202.625Z",fill:"white",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M210.57 203.02C220.19 197.47 219.69 178.6 209.46 160.88C199.23 143.16 183.14 133.29 173.52 138.85L163.93 144.39C154.31 149.94 154.81 168.81 165.04 186.53C175.27 204.25 191.36 214.12 200.98 208.56L210.57 203.02Z",fill:"#00ED64",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M137.64 212.07L135.23 213.46C131.16 215.81 125.96 214.41 123.61 210.35C121.26 206.28 122.66 201.08 126.72 198.73L129.13 197.34C123.85 182.75 126.76 168 136.97 162.1C137.45 161.82 137.94 161.58 138.44 161.35L164.93 146.12C173.6 141.11 188.46 150.61 198.12 167.33C207.77 184.05 208.57 201.67 199.9 206.68L173.47 222.01C173.02 222.33 172.56 222.63 172.08 222.91C161.87 228.81 147.64 223.95 137.64 212.08V212.07Z",fill:"#00ED64",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M119.37 207.92L122.47 206.13C122.47 206.13 124.21 206.56 125.74 209.21C127.27 211.85 126.9 213.5 126.9 213.5L123.67 215.37C123.67 215.37 123.99 213.75 122.51 211.18C121.03 208.61 119.37 207.92 119.37 207.92Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M205.87 190.36L169.04 211.62C169.04 211.62 149.96 223.37 137.35 210.31C135.98 208.89 137.22 211.45 136.03 209.4C136.03 209.4 135.13 208.79 137.64 212.07C140.49 215.8 144.62 219.37 151.5 222.68C164.43 228.89 170.58 223.9 181.33 217.69C192.08 211.49 200.94 206.16 200.94 206.16C200.94 206.16 206.76 202.47 205.88 190.36H205.87Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M216.87 180.8L205.54 187.34C205.54 187.34 206.54 194.21 204.85 200.22C202.57 204.98 202.8 204.94 193.94 210.04C193.7 210.11 195.89 210.54 198.89 209.49C200.13 209.05 201.64 208.11 203.19 207.22C208.46 204.18 211.98 202.03 211.98 202.03C211.98 202.03 216.13 198.49 217.12 192.13C218.07 186.05 216.87 180.8 216.87 180.8Z",fill:"black",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"}),r().createElement("path",{d:"M137.64 212.07L133.75 214.14C135.73 209.94 132.89 201.84 126.73 198.73L129.14 197.34C129.14 197.34 133.36 196.51 136.36 201.91C139.62 207.78 137.64 212.07 137.64 212.07Z",fill:"black"}),r().createElement("path",{d:"M137.64 212.07L133.75 214.14C135.73 209.94 132.89 201.84 126.73 198.73L129.14 197.34C129.14 197.34 133.36 196.51 136.36 201.91C139.62 207.78 137.64 212.07 137.64 212.07",stroke:"black",strokeLinecap:"round",strokeLinejoin:"round"})),r().createElement("g",{opacity:m},r().createElement(Qu,{offsetX:200,offsetY:104,sparkOffsetDirection:Yu-Math.PI/2,sparkOffsetAmount:h,scale:p,rotation:0}),r().createElement(Qu,{offsetX:250,offsetY:185,sparkOffsetDirection:Yu+Math.PI/2,sparkOffsetAmount:h,scale:p,rotation:180})))}function em(){return(0,s.w2)((e=>"connecting"===e.status||"connected"===e.status||"failed"===e.status))}const tm=(0,d.AHW)({marginTop:d.YKD[400],listStyle:"none",padding:0,minHeight:3*d.YKD[200]+72+"px"}),nm=(0,d.i7C)({"0%":{opacity:0,transform:`translateY(-${d.YKD[100]}px)`},"100%":{opacity:1,transform:"translateY(0)"}}),am=(0,d.AHW)({marginBottom:d.YKD[200],display:"flex",alignItems:"center",gap:d.YKD[200],animation:`${nm} 300ms ease-out`});function om({connectionId:e}){const t=(0,s.Gv)(e),n=(0,s.EE)(e);if(!t||!n)return null;const a=t.title,o=n.status,{icon:i,statusText:l}="connected"===o?{icon:r().createElement(d.Int,{glyph:"Checkmark",size:"small",color:d.MFm.green.dark2}),statusText:`Connected to ${a}`}:"failed"===o?{icon:r().createElement(d.Int,{glyph:"X",size:"small",color:d.MFm.red.base}),statusText:`Failed to connect to ${a}`}:{icon:r().createElement(d.Q0K,{size:16}),statusText:`Connecting to ${a}`};return r().createElement("li",{className:am},i,r().createElement(d.VYo,null,l))}function rm(){const e=em();return 0===e.length?null:r().createElement("ul",{className:tm},e.map((e=>r().createElement(om,{key:e,connectionId:e}))))}(0,d.AHW)({margin:0,padding:d.YKD[600],paddingBottom:0,maxWidth:"450px",borderRadius:d.YKD[200]}),(0,d.AHW)({backgroundColor:d.MFm.green.light3,border:`1px solid ${d.MFm.green.light2}`,paddingBottom:d.YKD[600]}),(0,d.AHW)({backgroundColor:d.MFm.green.dark3,borderColor:d.MFm.green.dark2}),(0,d.AHW)({fontSize:"14px"}),(0,d.AHW)({marginTop:d.YKD[200]}),(0,d.AHW)({marginTop:d.YKD[200]}),(0,d.AHW)({fontWeight:"bold"}),(0,d.AHW)({background:d.MFm.white,"&:hover":{background:d.MFm.white},"&:focus":{background:d.MFm.white}}),(0,d.AHW)({display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto",gap:d.YKD[200]}),(0,d.AHW)({margin:`${d.YKD[400]}px 0`});const im=(0,d.AHW)({display:"flex",alignItems:"center",justifyContent:"center",margin:"0 auto",gap:d.YKD[200]}),sm=(0,d.AHW)({display:"flex",flexDirection:"column",gap:d.YKD[400],alignItems:"flex-start"}),lm="Welcome";const cm=(0,i.nk)({name:lm,component:({children:e})=>r().createElement(r().Fragment,null,e),activate:()=>({store:{},deactivate:()=>{}})}),dm={name:lm,provider:cm,content:function(){const e=(0,s.w2)().length,t=em();return r().createElement("div",{className:im},t.length?r().createElement(Xu,null):r().createElement(Hu,null),r().createElement("div",null,r().createElement(d.H3,null,"Welcome! Explore your data"),!t.length&&r().createElement("div",{className:sm},r().createElement(d.nBu,null,0===e?"To get started, create your first MongoDB Cluster.":"To get started, connect to an existing cluster."),0===e&&r().createElement(r().Fragment,null,r().createElement(d.$nd,{as:d.N_E,"data-testid":"add-new-atlas-cluster-button",variant:d.AkO.Primary,href:"#/clusters/starterTemplates"},"Create a Cluster"),r().createElement(d.nBu,null,"Need more help?"," ",r().createElement(d.N_E,{href:"https://www.mongodb.com/docs/atlas/create-connect-deployments/"},"View documentation")))),t.length>0?r().createElement(rm,null):null))},header:function(e){return r().createElement(d.N81,(0,a.A)({},e,{type:lm,title:lm,iconGlyph:"Logo"}))}},um=((0,i.nk)({name:"WelcomeModal",component:Bu,activate(e,t,{cleanup:n}){const{showedNetworkOptIn:a}=t.preferences.getPreferences();return{store:(0,F.y$)($u,{isOpen:!a},(0,F.Tw)(P.A.withExtraArgument(t))),deactivate:n}}},{preferences:R.fx}),"compass-saved-aggregations-queries/deleteItemConfirm"),mm="compass-saved-aggregations-queries/itemsFetched",pm={loading:!0,items:[]},hm=()=>async(e,t,{pipelineStorage:n,queryStorage:a})=>{const o=await Promise.allSettled([n?.loadAll().then((e=>e.map(gm)))??Promise.resolve([]),a?.loadAll().then((e=>e.map(fm)))??Promise.resolve([])]);e({type:mm,payload:o.map((e=>"fulfilled"===e.status?e.value:[])).flat()})},gm=e=>{const{database:t,collection:n}=(0,m.Ay)(e.namespace);return{id:e.id,lastModified:e.lastModified?e.lastModified.getTime():0,name:e.name,database:t,collection:n,type:"aggregation",aggregation:e}},fm=e=>{const{database:t,collection:n}=(0,m.Ay)(e._ns);return{id:e._id,name:e._name,lastModified:(e._dateModified??e._dateSaved).getTime(),database:t,collection:n,type:e.update?"updatemany":"query",query:e}},ym=(e=pm,t)=>{switch(t.type){case mm:return{...e,items:t.payload,loading:!1};case um:{const n=e.items.filter((e=>e.id!==t.id));return{...e,items:n}}default:return e}};function bm(e,t){return e.type===t}const vm={openedModal:null,selectedItem:null,connections:[],selectedConnection:null,databases:[],selectedDatabase:null,databasesStatus:"initial",collections:[],selectedCollection:null,collectionsStatus:"initial",updateItemNamespace:!1},Cm="compass-saved-aggregations-queries/openModal",Em="compass-saved-aggregations-queries/closeModal",Sm="compass-saved-aggregations-queries/connectionSelected",km="compass-saved-aggregations-queries/connectionSelectedForPreSelectedNamespace",wm="compass-saved-aggregations-queries/DatabaseSelected",xm="compass-saved-aggregations-queries/loadDatabases",Am="compass-saved-aggregations-queries/loadDatabasesSuccess",Dm="compass-saved-aggregations-queries/loadDatabasesError",Im="compass-saved-aggregations-queries/collectionSelected",Mm="compass-saved-aggregations-queries/loadCollections",Tm="compass-saved-aggregations-queries/loadCollectionsSuccess",Lm="compass-saved-aggregations-queries/loadCollectionsError",Om="compass-saved-aggregations-queries/updateNamespaceChecked",Nm=e=>({id:e.id,name:(0,Bt.T8)(e),color:e.favorite?.color}),_m=e=>async(t,n,{connections:a,instancesManager:o})=>{t({type:xm});try{const n=o.getMongoDBInstanceForConnection(e),r=a.getDataServiceForConnection(e);await n.fetchDatabases({dataService:r}),t({type:Am,databases:n.databases.map((e=>e.name))})}catch{t({type:Dm})}},Fm=()=>({type:Cm,modal:"no-active-connections-modal",connections:[]}),Pm=()=>({type:Em}),Wm=(e,t,n,a)=>(o,r,{track:i,workspaces:s,connections:l})=>{const c=l.getConnectionById(t)?.info;i("aggregation"===e.type?"Aggregation Opened":"Query History Favorite Used",{id:e.id,screen:"my_queries"},c),s.openCollectionWorkspace(t,`${n}.${a}`,{initialAggregation:"aggregation"===e.type?e.aggregation:void 0,initialQuery:"query"===e.type||"updatemany"===e.type?e.query:void 0,newTab:!0})},Rm=()=>async(e,t,{queryStorage:n,pipelineStorage:a})=>{const{openItem:{selectedItem:o,selectedConnection:r,selectedDatabase:i,selectedCollection:s,updateItemNamespace:l}}=t();if(o&&r&&i&&s){if(l){const e=o.id,t=`${i}.${s}`;switch(o.type){case"aggregation":await(a?.updateAttributes(e,{namespace:t}));break;case"query":case"updatemany":await(n?.updateAttributes(e,{_ns:t}))}}e({type:Em}),e(Wm(o,r,i,s))}},Um=(e=vm,t)=>bm(t,Cm)?{...e,openedModal:t.modal,connections:t.connections,selectedItem:t.selectedItem??e.selectedItem,selectedConnection:t.selectedConnection??e.selectedConnection,selectedDatabase:t.selectedDatabase??e.selectedDatabase,selectedCollection:t.selectedCollection??e.selectedCollection}:bm(t,Em)?{...vm}:bm(t,Sm)?{...e,selectedConnection:t.selectedConnection,selectedDatabase:null,databases:[],databasesStatus:"initial",collections:[],collectionsStatus:"initial",selectedCollection:null}:bm(t,km)?{...e,selectedConnection:t.selectedConnection}:bm(t,wm)?{...e,selectedDatabase:t.database,collections:[],collectionsStatus:"initial",selectedCollection:null}:bm(t,xm)?{...e,databasesStatus:"fetching"}:bm(t,Dm)?{...e,databasesStatus:"error"}:bm(t,Am)?{...e,databases:t.databases,databasesStatus:"ready"}:bm(t,Im)?{...e,selectedCollection:t.collection}:bm(t,Mm)?{...e,collectionsStatus:"fetching"}:bm(t,Lm)?{...e,collectionsStatus:"error"}:bm(t,Tm)?{...e,collections:t.collections,collectionsStatus:"ready"}:bm(t,Om)?{...e,updateItemNamespace:t.updateItemNamespace}:e;function $m(e,t){return e.type===t}const Vm={id:void 0},Hm="compass-saved-aggregations-queries/edit-item/editItemClicked",Km="compass-saved-aggregations-queries/edit-item/editItemCancelled",jm="compass-saved-aggregations-queries/edit-item/editItemUpdated",Bm=(e=Vm,t)=>$m(t,Hm)?{id:t.id}:$m(t,Km)||$m(t,jm)?{id:void 0}:e,zm=(0,d.AHW)({display:"flex",alignItems:"center",gap:d.YKD[200],minWidth:0}),Ym=(0,d.AHW)({flex:"none"}),qm=(0,d.AHW)({whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden"}),Gm=({type:e,name:t})=>r().createElement("div",{className:zm},r().createElement(d.Int,{title:null,glyph:"database"===e?"Database":"Folder",color:d.MFm.gray.dark1,className:Ym}),r().createElement("span",{className:qm},t)),Zm=4*d.YKD[1600],Jm=(0,d.AHW)({minWidth:0,width:"100%",paddingTop:d.YKD[400],paddingBottom:d.YKD[400],paddingLeft:d.YKD[400],paddingRight:d.YKD[400]}),Qm=(0,d.AHW)({display:"flex",alignItems:"center",minHeight:28,marginBottom:d.YKD[200]}),Xm=(0,d.AHW)({flex:"none"}),ep=(0,d.AHW)({flex:"none",marginLeft:"auto"}),tp=(0,d.AHW)({color:d.MFm.green.light2}),np=(0,d.AHW)({color:d.MFm.green.dark2}),ap=(0,d.AHW)({fontWeight:"bold",height:2*d.YKD[600],marginBottom:d.YKD[400],display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:2,textOverflow:"ellipsis",overflow:"hidden"}),op=(0,d.AHW)({display:"grid",gap:d.YKD[200],marginBottom:d.YKD[400]}),rp=(0,d.AHW)({fontStyle:"italic"}),ip=[{action:"copy",label:"Copy"},{action:"rename",label:"Rename"},{action:"delete",label:"Delete"},{action:"open-in",label:"Open in"}],sp=({itemId:e,isVisible:t,onAction:n})=>{const a=(0,o.useCallback)((t=>{n(e,t)}),[e,n]);return r().createElement(d.pNw,{"data-testid":"saved-item-actions",isVisible:t,actions:ip,onAction:a})},lp=({id:e,type:t,name:n,database:o,collection:i,lastModified:s,onAction:l,...c})=>{const[u,m]=(0,d.v69)(),[p,h]=(0,d.$vP)(),g=(0,d.pR2)((()=>{l(e,"open")})),f=(0,d.v63)({className:Jm},c,u,p,g);let y;switch(t){case"query":y="find";break;case"updatemany":y="updatemany";break;case"aggregation":y="aggregate"}const b=(0,d.Unm)(s),v=(0,d.D27)();return r().createElement(d.ZpM,(0,a.A)({key:e,contentStyle:"clickable","data-id":e},f),r().createElement("div",{className:Qm},r().createElement(d.Exy,{variant:"darkgray",className:Xm},".",y),r().createElement("div",{className:ep},r().createElement(sp,{itemId:e,isVisible:m||[d.X1w.FocusVisible,d.X1w.FocusWithinVisible].includes(h),onAction:l}))),r().createElement(d.Pds,{as:"div",className:(0,d.cx)(ap,v?tp:np),title:n},n),r().createElement("div",{className:op},r().createElement(Gm,{type:"database",name:o}),r().createElement(Gm,{type:"collection",name:i})),r().createElement("div",{className:rp},"Last modified: ",b))},cp=()=>r().createElement("svg",{width:"72",height:"72",viewBox:"0 0 72 72",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r().createElement("path",{d:"M43.875 43.875L64 64M50 29C50 40.598 40.598 50 29 50C17.402 50 8 40.598 8 29C8 17.402 17.402 8 29 8C40.598 8 50 17.402 50 29Z",stroke:"#001e2b"}),r().createElement("path",{d:"M22 43C22 45.1132 22.2625 47.1879 22.875 49.125C24.8 49.7413 26.9 50 29 50C40.6375 50 50 40.7107 50 29C50 26.8868 49.7375 24.8121 49.125 22.875C47.2 22.2586 45.1 22 43 22C31.3625 22 22 31.2893 22 43Z",fill:"#00ed64",stroke:"#001e2b",strokeMiterlimit:"10",strokeLinecap:"round",strokeLinejoin:"round"})),dp=()=>r().createElement(d.HYq,{icon:d.m3F,title:"No saved queries yet.",subTitle:"Start saving your aggregations and find queries, you'll see them here.",callToAction:r().createElement("div",null,"Not sure where to start?  ",r().createElement(d.N_E,{hideExternalIcon:!0,href:"https://docs.mongodb.com/compass/current/query/queries/"},"Visit our Docs →"))}),up=()=>r().createElement(d.HYq,{icon:cp,title:"No results found.",subTitle:"We can't find any item matching your search."}),mp={onSubmit:(e,t)=>async(n,a,{queryStorage:o,pipelineStorage:r})=>{const{savedItems:{items:i}}=a(),s=i.find((t=>t.id===e));if(s){switch(s.type){case"aggregation":await(r?.updateAttributes(e,t));break;case"query":case"updatemany":await(o?.updateAttributes(e,{_name:t.name,_dateModified:new Date}))}n({type:jm,id:e}),await n(hm())}},onCancel:()=>({type:Km})},pp=(0,Ee.Ng)((({editItem:{id:e},savedItems:{items:t}})=>({isModalOpen:Boolean(e),item:t.find((t=>t.id===e))})),mp)((({isModalOpen:e,item:t,onSubmit:n,onCancel:a})=>{const[i,s]=(0,o.useState)(t?.name??"");(0,d.wTI)((()=>{s(t?.name??"")}),[t]);const l=()=>!i||i===t?.name;return r().createElement(d.k5W,{open:e,onCancel:a,onSubmit:()=>{!l()&&t&&n(t.id,{name:i})},submitButtonText:"Update",submitDisabled:l(),title:`Rename ${t?.type??""}`,"data-testid":"edit-item-modal"},r().createElement(d.ksK,{"aria-label":"Name",label:"Name",name:"name",value:i,onChange:e=>{s(e.target.value)}}))}));var hp=n(83650);const gp=(0,d.AHW)({display:"flex",flexDirection:"row"}),fp=(0,d.AHW)({marginRight:d.YKD[200],width:`calc(16ch + ${d.YKD[1600]}px)`}),yp=(0,d.AHW)({display:"flex"}),bp=(0,d.AHW)({width:"300px",marginRight:d.YKD[200]}),vp=({options:e,onSelect:t,value:n,placeholder:a})=>{const o=(0,d.BiT)(),i=(0,d.BiT)();return r().createElement(d.l6P,{disabled:0===e.length,id:i,"aria-labelledby":o,allowDeselect:!0,placeholder:a,className:fp,onChange:t,value:n,name:n},e.map((e=>r().createElement(d.c$x,{key:e,value:e},e))))};function Cp(e,t,n){const a=function(e,t){return t&&1!==t.length?new hp.A(e,{findAllMatches:!0,shouldSort:!1,minMatchCharLength:2,threshold:.3,ignoreLocation:!0,includeScore:!0,keys:[{name:"name",weight:4},{name:"namespace",weight:3},{name:"tags",weight:2},{name:"data",weight:1}],getFn:(e,t)=>{const n=Array.isArray(t)?t[0]:t;return"namespace"===n?`${e.database}.${e.collection}`:"tags"===n?"query"===e.type?["find","query"]:["aggregate","aggregation","pipeline"]:"data"===n?"query"===e.type||"updatemany"===e.type?JSON.stringify({filter:e.query.filter}):"aggregation"===e.type?e.aggregation.pipelineText:[]:e[n]}}).search(t).map((e=>({item:e.item,score:e.score??0}))):e.map((e=>({item:e,score:1})))}(e,n);return function(e,t){const n={...t};for(const e in n)n[e]||delete n[e];return[...e].filter((e=>function(e,t){if(0===Object.keys(t).length)return!0;let n=!0;for(const a in t)e[a]!==t[a]&&(n=!1);return n}(e.item,n)))}(a,t)}const Ep=(0,d.AHW)({display:"grid",gridAutoColumns:"1fr",rowGap:d.YKD[600],columnGap:d.YKD[400],gridTemplateAreas:"\n 'description'\n 'connection'\n "}),Sp=(0,d.AHW)({gridArea:"description"}),kp=(0,d.AHW)({gridArea:"connection"}),wp={onSubmit:Rm,onClose:Pm,onSelectConnection:e=>({type:km,selectedConnection:e})},xp=(0,Ee.Ng)((({openItem:{openedModal:e,selectedConnection:t,selectedItem:n,connections:a}})=>({isModalOpen:"select-connection-modal"===e,isSubmitDisabled:!t,namespace:`${n?.database??""}.${n?.collection??""}`,itemType:n?.type??"",itemName:n?.name??"",connections:a,selectedConnection:t})),wp)((({namespace:e,itemType:t,itemName:n,isModalOpen:a,isSubmitDisabled:i,connections:s,selectedConnection:l,onSelectConnection:c,onSubmit:u,onClose:m})=>{const p=(0,o.useCallback)((e=>{c(e.target.value)}),[c]);return r().createElement(d.k5W,{open:a,onCancel:m,onSubmit:()=>u(),title:"Select a Connection",submitButtonText:"Run Query",submitDisabled:i,scroll:!1,"data-testid":"select-connection-modal"},r().createElement("div",{className:Ep},r().createElement("div",{className:Sp},"The namespace ",r().createElement("strong",null,e)," for the saved ",t," ",r().createElement("strong",null,n),r().createElement("br",null),"exists in multiple active connections. Please select which connection you’d like to",r().createElement("br",null),"run the ",t," against."),r().createElement("div",{className:kp},r().createElement(d.z6M,{name:"connection",size:"small",onChange:p,value:l??""},s.map((({id:e,name:t})=>r().createElement(d.sxL,{key:e,value:e,"data-testid":`connection-item-${e}`},t)))))))}));var Ap=n(34615);const Dp=(0,d.AHW)({button:{zIndex:999}}),Ip=({name:e,label:t,items:n,selectedItem:a,isLoading:o,onChange:i})=>r().createElement(d.l6P,{name:e,label:t,value:a??"",onChange:i,disabled:o,className:Dp,"data-testid":`${e}-select`},n.map((e=>r().createElement(d.c$x,{key:e,value:e},e)))),Mp=(0,Ee.Ng)((({openItem:{selectedConnection:e,connections:t}})=>({items:t,selectedItem:e})),{onChange:e=>t=>{t({type:Sm,selectedConnection:e}),t(_m(e))}})((({items:e,selectedItem:t,onChange:n})=>{const{connectionColorToHex:a}=(0,Ap.DM)(),i=(0,o.useCallback)((e=>n(e)),[n]);return r().createElement(d.l6P,{name:"connection",label:"Connection",value:t??"",onChange:i,className:Dp,dropdownWidthBasis:"option","data-testid":"connection-select"},e.map((({id:e,name:t,color:n})=>{const o=n&&"no-color"!==n?r().createElement(Ap.wO,{hexColor:a(n)}):void 0;return r().createElement(d.c$x,{key:e,value:e,glyph:o},t)})))})),Tp=(0,Ee.Ng)((({openItem:{databases:e,databasesStatus:t,selectedDatabase:n}})=>({items:e,selectedItem:n,isLoading:["initial","fetching"].includes(t)})),{onChange:e=>async(t,n,{instancesManager:a,connections:o})=>{const{openItem:{selectedDatabase:r,selectedConnection:i}}=n();if(e!==r){t({type:wm,database:e}),t({type:Mm});try{if(!i)throw new Error("Select a connection first");const r=o.getDataServiceForConnection(i),s=a.getMongoDBInstanceForConnection(i).databases.get(e);if(!s)throw new Error("Database not found");await s.fetchCollections({dataService:r}),e===n().openItem.selectedDatabase&&t({type:Tm,collections:s.collections.map((e=>e.name))})}catch{e===n().openItem.selectedDatabase&&t({type:Lm})}}}})(Ip),Lp=(0,Ee.Ng)((({openItem:{collections:e,collectionsStatus:t,selectedCollection:n}})=>({items:e,selectedItem:n,isLoading:["initial","fetching"].includes(t)})),{onChange:e=>({type:Im,collection:e})})(Ip),Op=(0,d.AHW)({display:"grid",gridAutoColumns:"1fr",rowGap:d.YKD[600],columnGap:d.YKD[400]}),Np=(0,d.cx)(Op,(0,d.AHW)({gridTemplateAreas:"\n 'description description'\n 'database collection'\n 'checkbox checkbox'\n "})),_p=(0,d.cx)(Op,(0,d.AHW)({gridTemplateAreas:"\n 'description description description'\n 'connection database collection'\n 'checkbox checkbox checkbox'\n "})),Fp=(0,d.AHW)({gridArea:"description"}),Pp=(0,d.AHW)({gridArea:"connection"}),Wp=(0,d.AHW)({gridArea:"database"}),Rp=(0,d.AHW)({gridArea:"collection"}),Up=(0,d.AHW)({gridArea:"checkbox"}),$p={onSubmit:Rm,onClose:Pm,onUpdateNamespaceChecked:e=>({type:Om,updateItemNamespace:e})},Vp=(0,Ee.Ng)((({openItem:{openedModal:e,selectedConnection:t,selectedDatabase:n,selectedCollection:a,selectedItem:o,updateItemNamespace:r,connections:i}})=>({openedModal:e,namespace:`${o?.database??""}.${o?.collection??""}`,itemName:o?.name??"",itemType:o?.type??"",showConnectionSelect:i.length>1,isSubmitDisabled:!(t&&n&&a),updateItemNamespace:r})),$p)((({openedModal:e,namespace:t,itemName:n,itemType:a,showConnectionSelect:i,isSubmitDisabled:s,updateItemNamespace:l,onSubmit:c,onClose:u,onUpdateNamespaceChecked:m})=>{const{isOpened:p,title:h,description:g}=(0,o.useMemo)((()=>{const o=i?r().createElement(r().Fragment,null,"The namespace ",r().createElement("strong",null,t)," for the saved ",a," ",r().createElement("strong",null,n)," doesn’t exist in any of the active connections. Please select another target to open saved"," ",a):r().createElement(r().Fragment,null,"The namespace ",r().createElement("strong",null,t)," for the saved ",a," ",r().createElement("strong",null,n)," doesn’t exist in the current connection. Please select another namespace to open saved"," ",a,".");return{isOpened:"namespace-not-found-modal"===e||"select-connection-and-namespace-modal"===e,title:i?"Select a Connection and Namespace":"Select a Namespace",description:"namespace-not-found-modal"===e?o:null}}),[i,e,n,a,t]);return r().createElement(d.k5W,{open:p,onCancel:u,onSubmit:()=>c(),title:h,submitButtonText:"Run Query",submitDisabled:s,scroll:!1,"data-testid":"open-item-modal"},r().createElement("div",{className:i?_p:Np},g&&r().createElement("div",{"data-testid":"description",className:Fp},g),i&&r().createElement("div",{className:Pp,"data-testid":"connection-select-field"},r().createElement(Mp,null)),r().createElement("div",{className:Wp,"data-testid":"database-select-field"},r().createElement(Tp,{name:"database",label:"Database"})),r().createElement("div",{className:Rp,"data-testid":"collection-select-field"},r().createElement(Lp,{name:"collection",label:"Collection"})),r().createElement(d.Sc0,{className:Up,checked:l,onChange:e=>{m(e.target.checked)},label:`Update this ${a} with the newly selected namespace`,"data-testid":"update-query-aggregation-checkbox"})))})),Hp={onClose:Pm},Kp=(0,Ee.Ng)((({openItem:{openedModal:e}})=>({isOpened:"no-active-connections-modal"===e})),Hp)((({isOpened:e,onClose:t})=>r().createElement(d.WhU,{title:"Connect to a cluster",open:e,onClose:t,showCloseButton:!1,"data-testid":"no-active-connection-modal"},r().createElement(d.lZ$,{variant:"warning"},"It appears that you are not connected to a cluster. Establish a connection first.")))),jp=[{name:"name",label:"Name"},{name:"lastModified",label:"Last Modified"}],Bp=(0,d.AHW)({padding:d.YKD[400],display:"flex",justifyContent:"space-between"}),zp=(0,d.AHW)({gap:d.YKD[200],paddingLeft:d.YKD[400],paddingRight:d.YKD[400],paddingBottom:d.YKD[200]}),Yp=(0,d.AHW)({width:"100%"}),qp=r().createContext({filterControls:null,sortControls:null}),Gp=()=>{const{filterControls:e,sortControls:t}=(0,o.useContext)(qp);return r().createElement("div",{className:Bp},r().createElement("div",null,e),r().createElement("div",null,t))},Zp={onMount:hm,onOpenItem:(e,t)=>async(n,a,{instancesManager:o,connections:r,logger:{log:i,mongoLogId:s}})=>{const{savedItems:{items:l}}=a();if(!t.length)return void n(Fm());const c=l.find((t=>t.id===e));if(!c)return;const{database:d,collection:u}=c,m=[],p=[];for(const e of t)try{const t=r.getDataServiceForConnection(e.id),n=o.getMongoDBInstanceForConnection(e.id);await n.getNamespace({dataService:t,database:d,collection:u})&&p.push(e)}catch(t){m.push({connectionId:e.id,error:t})}if(m.length&&i.info(s(1001000316),"Saved Aggregations Queries","Failed to lookup namespace in some connections",m),0===p.length){const e=1===t.length?t[0]:void 0;n(((e,t,n)=>a=>{a({type:Cm,modal:"namespace-not-found-modal",selectedItem:e,connections:t,selectedConnection:n}),n&&a(_m(n))})(c,t.map(Nm),e?.id))}else 1===p.length?n(Wm(c,p[0].id,d,u)):n(((e,t,n,a)=>({type:Cm,modal:"select-connection-modal",selectedItem:e,connections:t,selectedDatabase:n,selectedCollection:a}))(c,p.map(Nm),d,u))},onOpenItemForDiffTarget:(e,t)=>(n,a)=>{const{savedItems:{items:o}}=a();if(!t.length)return void n(Fm());const r=o.find((t=>t.id===e));if(!r)return;const i=t.map(Nm),s=1===i.length?i[0].id:void 0;n({type:Cm,modal:"select-connection-and-namespace-modal",selectedItem:r,connections:i,selectedConnection:s}),s&&n(_m(s))},onEditItem:e=>({type:Hm,id:e}),onDeleteItem:e=>async(t,n,{pipelineStorage:a,queryStorage:o,track:r})=>{const{savedItems:{items:i}}=n(),s=i.find((t=>t.id===e));if(!s)return;const l=`Are you sure you want to delete your ${"query"===s.type?"query":"aggregation"}?`;if(await(0,d.$TK)({title:l,description:"This action can not be undone.",variant:d.WlR.Danger,buttonText:"Delete"})){switch(r("aggregation"===s.type?"Aggregation Deleted":"Query History Favorite Removed",{id:s.id,screen:"my_queries"},void 0),s.type){case"aggregation":await(a?.delete(s.id));break;case"query":case"updatemany":await(o?.delete(s.id))}t({type:um,id:s.id})}},onCopyToClipboard:function(e){return async(t,n,{track:a})=>{const{savedItems:{items:o}}=n(),r=o.find((t=>t.id===e));if(!r)return;a("aggregation"===r.type?"Aggregation Copied":"Query History Favorite Copied",{id:r.id,screen:"my_queries"});const i="aggregation"===r.type?r.aggregation.pipelineText:function(e){const{collation:t,filter:n,limit:a,project:o,skip:r,sort:i}=e;return ne.EJSON.stringify({collation:t,filter:n,limit:a,project:o,skip:r,sort:i},void 0,2)}(r.query);await navigator.clipboard.writeText(i)}}},Jp=(0,Ee.Ng)((({savedItems:{items:e,loading:t}})=>({items:e,loading:t})),Zp)((({loading:e,items:t,onMount:n,onOpenItem:i,onOpenItemForDiffTarget:l,onEditItem:c,onDeleteItem:u,onCopyToClipboard:m})=>{(0,o.useEffect)((()=>{n()}),[n]);const p=(0,s.pV)(),h=(0,o.useCallback)((e=>{i(e,p)}),[p,i]),g=(0,o.useCallback)((e=>{l(e,p)}),[p,l]),{controls:f,conditions:y,search:b}=function(e){const[t,n]=function(e){const[t,n]=(0,o.useState)(),[a,i]=(0,o.useState)(),[s,l]=(0,o.useState)([]),c=e.map((e=>e.database)).filter(((e,t,n)=>n.indexOf(e)===t)),d=(0,o.useMemo)((()=>t=>{n(t),i(void 0);const a=e.filter((e=>e.database===t)).map((e=>e.collection)).filter(((e,t,n)=>n.indexOf(e)===t));l(a)}),[e]),u=(0,o.useMemo)((()=>e=>{i(e)}),[]);return[(0,o.useMemo)((()=>r().createElement("div",{className:gp},r().createElement(vp,{options:c,placeholder:"All databases",onSelect:d,value:t??""}),r().createElement(vp,{options:s,placeholder:"All collections",onSelect:u,value:a??""}))),[c,d,t,s,u,a]),(0,o.useMemo)((()=>({database:t,collection:a})),[t,a])]}(e),[a,i]=function(){const e=(0,re.Jr)(),[t,n]=(0,o.useState)("");return[(0,o.useMemo)((()=>r().createElement(d.ksK,{className:bp,"aria-label":"Search",type:"search",placeholder:"Search",value:t,onChange:e=>{n(e.target.value)},onBlur:()=>{t.length>0&&e("My Queries Search",{})},spellCheck:!1})),[t,e]),t]}();return{controls:(0,o.useMemo)((()=>r().createElement("div",{className:yp},a,t)),[a,t]),conditions:n,search:i}}(t),v=Cp(t,y,b).sort(((e,t)=>e.score-t.score)).map((e=>e.item));(0,re.ou)((e=>{e("Screen",{name:"my_queries"},void 0)}),[]),(0,re.ou)((e=>{y.database&&e("My Queries Filter",{type:"database"})}),[y.database]),(0,re.ou)((e=>{y.collection&&e("My Queries Filter",{type:"collection"})}),[y.collection]);const[C,E]=(0,d.yRS)("saved-queries-list-controls",{name:jp[0].name,order:1}),[S,k]=(0,d.yv$)(jp,{isDisabled:Boolean(b),initialState:C,onChange:E});(0,re.ou)((e=>{e("My Queries Sort",{sort_by:k.name,order:1===k.order?"ascending":"descending"})}),[k]);const w=(0,d.Vdw)(v,k),x=(0,o.useCallback)(((e,t)=>{switch(t){case"open":return void h(e);case"open-in":return void g(e);case"rename":return void c(e);case"delete":return void u(e);case"copy":return void m(e)}}),[h,g,c,u,m]),A=(0,o.useCallback)((({index:e,...t})=>{const n=w[e];return r().createElement(lp,(0,a.A)({id:n.id,type:n.type,name:n.name,database:n.database,collection:n.collection,lastModified:n.lastModified,onAction:x,"data-testid":`grid-item-${e}`},t))}),[x,w]);return e?null:0===t.length?r().createElement("div",{className:Yp,"data-testid":"my-queries-list"},r().createElement(dp,null)):r().createElement(qp.Provider,{value:{filterControls:f??null,sortControls:S??null}},r().createElement(d.Q$5,{"data-testid":"my-queries-list",itemMinWidth:Zm,itemHeight:218+d.YKD[200],itemsCount:w.length,renderItem:A,itemKey:e=>w[e].id,renderHeader:Gp,headerHeight:d.YKD[800]+36,renderEmptyList:up,classNames:{row:zp},resetActiveItemOnBlur:!1}),r().createElement(xp,null),r().createElement(Vp,null),r().createElement(Kp,null),r().createElement(pp,null))})),Qp="My Queries",Xp={name:Qp,provider:(0,i.nk)({name:Qp,component:function({children:e}){return r().createElement(r().Fragment,null,e)},activate:function(e,t){const n=function({globalAppRegistry:e,connections:t,instancesManager:n,preferencesAccess:a,logger:o,track:r,workspaces:i,pipelineStorage:s,favoriteQueryStorageAccess:l}){return(0,F.y$)((0,F.HY)({savedItems:ym,openItem:Um,editItem:Bm}),(0,F.Tw)(P.A.withExtraArgument({globalAppRegistry:e,connections:t,instancesManager:n,preferencesAccess:a,logger:o,track:r,pipelineStorage:s?.getStorage(),queryStorage:l?.getStorage(),workspaces:i})))}(t);return{store:n,deactivate(){}}}},{connections:s.u4,instancesManager:g.Q3,preferencesAccess:R.fx,logger:(0,p.fF)("COMPASS-MY-QUERIES-UI"),track:re.yL,workspaces:D.__,pipelineStorage:jt.oC,favoriteQueryStorageAccess:jt.yS}),content:Jp,header:function(e){return r().createElement(d.N81,(0,a.A)({},e,{type:Qp,title:Qp,iconGlyph:"CurlyBraces"}))}};n(59509),n(25691),n(23177),n(3142),n(51615),n(84217),n(25953),n(42319),n(28465),n(12887),n(36106),n(84542),n(57068),n(69517);const eh={"X-Request-Origin":"atlas-data-explorer"};function th(...e){return"/"+e.map((e=>encodeURIComponent(e))).filter(Boolean).join("/")}const nh={enableExplainPlan:!0,enableAggregationBuilderRunPipeline:!0,enableAggregationBuilderExtraOptions:!0,enableAtlasSearchIndexes:!1,enableImportExport:!1,enableGenAIFeatures:!0,enableGenAIFeaturesAtlasProject:!1,enableGenAISampleDocumentPassing:!1,enableGenAIFeaturesAtlasOrg:!1,enableGenAIToolCallingAtlasProject:!0,enableAssistantConnectionDebugging:!1,enableAtlasConnectionErrorDebuggerTool:!1,enableAtlasSignIn:!1,enablePerformanceAdvisorBanner:!0,enableMyQueries:!1,maximumNumberOfActiveConnections:10,trackUsageStatistics:!0,enableShell:!1,enableCreatingNewConnections:!1,enableGlobalWrites:!1,optInGenAIFeatures:!1,enableConnectInNewWindow:!1,maxTimeMSEnvLimit:3e5},ah=new Map;function oh(e=window.location.host){return e.includes("cloud-dev")?"atlas-dev":e.includes("cloud-qa")?"atlas-qa":e.includes("cloud-stage")?"atlas-staging":e.includes("cloud-local")||e.includes("localhost")?"atlas-local":"atlas"}const rh=new Map(R.of.map((e=>[e.name,e]))),ih=e=>{if(e?.isDataAccessAdmin)return{};const t=Boolean(e?.isGroupIndexManager&&e?.isDataAccessAny);return e?.isDataAccessWrite?{readWrite:!0,enableIndexesManagement:t}:{readOnly:!0,enableIndexesManagement:t}};async function sh(e){const t=ah.get(e);if(t)return t;if(!e)throw new Error("Cannot load preferences without an Atlas project id");const n=async function(e){try{const{atlasCloudUserPreferences:t,atlasCloudProjectPreferences:n,atlasCloudOrgPreferences:a}=await async function(e){const{featureFlags:t,userAuid:n,appUser:a,currentOrganization:o,userRoles:r}=await async function(e){const t=await fetch(`/explorer/v1/groups/${e}/preferences`,{headers:eh,credentials:"include"});if(!t.ok)throw new Error(`Failed to fetch preferences: ${t.status} ${t.statusText}`);return t.json()}(e),i={atlasServiceBackendPreset:oh(),telemetryAtlasUserId:n,optInGenAIFeatures:a.isOptedIntoDataExplorerGenAIFeatures,timezone:a.timeZoneId,...ih(r)},s={},l={enableGenAIFeaturesAtlasOrg:o.genAIFeaturesEnabled??!1};for(const[e,n]of Object.entries(t))if((0,R.xl)(e)&&(i[e]=n,rh.has(e))){const t=rh.get(e)?.atlasCloudFeatureScope;"organization"===t?l[e]=n:s[e]=n}return{atlasCloudUserPreferences:i,atlasCloudProjectPreferences:s,atlasCloudOrgPreferences:l}}(e),o=new R.Fc({...nh,...t,...n,...a},{atlasCloudUser:t,atlasCloudProject:n,atlasCloudOrg:a});return ah.set(e,o),o}catch(t){throw ah.delete(e),t}}(e);return ah.set(e,n),n}var lh=n(9312),ch=n(9118);const dh={filter:U.z.any().optional(),project:U.z.any().optional(),collation:U.z.any().optional(),sort:U.z.any().optional(),skip:U.z.number().optional(),limit:U.z.number().optional(),update:U.z.any().optional(),hint:U.z.any().optional()},uh={_id:U.z.string().uuid(),_lastExecuted:U.z.union([U.z.coerce.date(),U.z.number()]).transform((e=>new Date(e))),_ns:U.z.string(),_host:U.z.string().optional()},mh=U.z.object({...dh,...uh}),ph=U.z.object({...dh,...uh,_name:U.z.string().nonempty(),_dateModified:U.z.union([U.z.coerce.date(),U.z.number()]).optional().transform((e=>void 0!==e?new Date(e):e)),_dateSaved:U.z.union([U.z.coerce.date(),U.z.number()]).transform((e=>new Date(e)))});function hh(e){const t=`[\n${(e?.map((({stageOperator:e,isEnabled:t,stage:n})=>function(e,t,n){const a=`{\n ${e}: ${t}\n}`;return n?a.split("\n").map((e=>`// ${e}`)).join("\n"):a}(e,n,!t)))??[]).join(",\n")}\n]`;try{return(0,rt.G8)(t)}catch{return t}}const gh=U.z.preprocess((e=>{const{pipeline:t,pipelineText:n,...a}=e;return{...a,pipelineText:n??hh(t)}}),U.z.object({id:U.z.string(),name:U.z.string(),namespace:U.z.string(),comments:U.z.boolean().optional(),autoPreview:U.z.boolean().optional(),collationString:U.z.string().optional(),host:U.z.string().nullable().optional(),pipelineText:U.z.string(),lastModified:U.z.number().default(0).transform((e=>new Date(e)))}));class fh{userData;dataType;constructor(e,t,n){this.dataType=t,this.userData=n}async loadAll(e){try{const{data:t}=await this.userData.readAll();return t.sort(((e,t)=>t._lastExecuted.getTime()-e._lastExecuted.getTime())).filter((t=>!e||t._ns===e))}catch{return[]}}async write(e,t){return await this.userData.write(e,t)}async delete(e){return await this.userData.delete(e)}async updateAttributes(e,t){return await this.userData.updateAttributes(e,t)}}class yh extends fh{maxAllowedQueries=30;constructor(e){super(mh,"RecentQueries",e)}async saveQuery(e){const t=await this.loadAll();if(t.length>=this.maxAllowedQueries){const e=t[t.length-1];await this.delete(e._id)}const n=(new ne.UUID).toString(),a={...e,_id:n,_lastExecuted:new Date};await this.userData.write(n,a)}}class bh extends fh{constructor(e){super(ph,"FavoriteQueries",e)}async saveQuery(e,t){t??=(new ne.UUID).toString();const n={...e,_id:t,_lastExecuted:new Date,_dateSaved:new Date};await this.userData.write(t,n)}}class vh{userData;constructor(e){this.userData=e}async loadAll(){try{const{data:e}=await this.userData.readAll();return e}catch{return[]}}loadMany(e){return this.loadAll().then((t=>t.filter(e)))}async createOrUpdate(e,t){const n=Boolean(await this.userData.readOne(e));return await(n?this.updateAttributes(e,t):this.create(t))}async create(e){try{return await this.userData.write(e.id,{...e,lastModified:Date.now()}),!0}catch{return!1}}async updateAttributes(e,t){try{return await this.userData.write(e,{...await this.userData.readOne(e),...t,lastModified:Date.now()}),!0}catch{return!1}}async delete(e){await this.userData.delete(e)}}function Ch({appName:e}){const t=(0,g.bV)();return r().createElement(I.GS,{appName:e,hasNonGenuineConnections:t})}var Eh=n(7570);setTimeout((function(){const e=function(e=window.location.pathname){return e.match(/\/v2\/([a-f0-9]{24})/i)?.[1]}();e&&sh(e)}));const Sh=(0,d.AHW)({width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center"}),kh=({children:e})=>r().createElement(Nu,null,r().createElement(To,{value:!0},r().createElement(zt.AW,{options:{defaultHeaders:eh}},r().createElement(Au.FK,null,r().createElement(sd.Q9,{apiURLPreset:"cloud"},e))))),wh=(0,i.xw)((function({projectId:e,children:t}){const n=(0,o.useRef)(new AbortController),a=(0,p.Ul)("COMPASS-WEB-MULTIPLEXING"),i=(0,zt.fA)(),s=(0,o.useMemo)((()=>i.multiplexWebsocketEndpoint(e)),[i,e]);return(0,o.useEffect)((()=>{const e=n.current,t=new Eh.N_({baseUrls:s,logger:a});return(0,Eh.Ze)(t),t.connect(e.signal).catch((e=>{"AbortError"!==e.name&&(a.log.error(a.mongoLogId(1001000427),"COMPASS-WEB-MULTIPLEXING","Multiplex WebSocket transport failed",{error:e.message}),(0,d.c3r)("multiplex-websocket-connection-failed",{title:"WebSocket Connection Failed",description:e.message,variant:"warning"}))})),()=>{e.abort(),t.close("Compass Web Entrypoint Unmount"),(0,Eh.Ze)(null)}}),[s,a]),r().createElement(r().Fragment,null,t)})),xh=(0,i.xw)((function({orgId:e,projectId:t,children:n}){const a=(0,zt.fA)(),i=(0,o.useRef)({getStorage:()=>function(e){const t=new U.Tu(gh,"SavedPipelines",{orgId:e.orgId,projectId:e.projectId,atlasService:e.atlasService,serialize:e=>ne.EJSON.stringify(e),deserialize:e=>ne.EJSON.parse(e)});return new vh(t)}({orgId:e,projectId:t,atlasService:a})}),s=(0,o.useRef)({getStorage:()=>function(e){const t=new U.Tu(ph,"FavoriteQueries",{orgId:e.orgId,projectId:e.projectId,atlasService:e.atlasService,serialize:e=>ne.EJSON.stringify(e),deserialize:e=>ne.EJSON.parse(e)});return new bh(t)}({orgId:e,projectId:t,atlasService:a})}),l=(0,o.useRef)({getStorage:()=>function(e){const t=new U.Tu(mh,"RecentQueries",{orgId:e.orgId,projectId:e.projectId,atlasService:e.atlasService,serialize:e=>ne.EJSON.stringify(e),deserialize:e=>ne.EJSON.parse(e)});return new yh(t)}({orgId:e,projectId:t,atlasService:a})});return r().createElement(jt.tU,{value:i.current},r().createElement(jt.HD,{value:s.current},r().createElement(jt.I4,{value:l.current},r().createElement(ae,{orgId:e,projectId:t,atlasService:a},n))))}));function Ah({initialWorkspaceTabs:e,onActiveWorkspaceTabChange:t,onOpenConnectViaModal:n,onBeforeUnloadCallbackRequest:a}){return r().createElement(u.K,{value:[dm,aa,na,sa.N,lh.y,Xp]},r().createElement(sa.K,{queryBar:Lo.Ay,tabs:[Oo.UZ,No.RH,il,sl.Q,od,rd.R],modals:[wu.A,xu.A]},r().createElement("div",{"data-testid":"compass-web-connected",className:Mh},r().createElement(oe,{onBeforeUnloadCallbackRequest:a,initialWorkspaceTabs:e,openOnEmptyWorkspace:{type:"Welcome"},onActiveWorkspaceTabChange:t,renderSidebar:()=>r().createElement(Mo,{onOpenConnectViaModal:n,isCompassWeb:!0}),renderModals:()=>r().createElement(r().Fragment,null,r().createElement(No.tz,null),r().createElement(oa,null),r().createElement(ra,null),r().createElement(ia,null),r().createElement(Ch,{appName:"Data Explorer"}))}))))}const Dh=({children:e})=>{const t=(0,s.PM)();return(0,o.useEffect)((()=>{const e=setInterval((()=>{t.refreshConnections()}),6e4);return()=>{clearInterval(e)}}),[t]),r().createElement(r().Fragment,null,e)},Ih={utmSource:"DE",utmMedium:"product"},Mh=(0,d.AHW)({width:"100%",height:"100%",display:"flex"}),Th=({darkMode:e,children:t})=>{const n=(0,re.Jr)(),{enableGuideCues:o,legacyUUIDDisplayEncoding:i,timezone:s}=(0,R.gc)(["enableGuideCues","legacyUUIDDisplayEncoding","timezone"]);return r().createElement(d.Gf9,(0,a.A)({darkMode:e,legacyUUIDDisplayEncoding:i,timezone:s,stackedElementsZIndex:1e4,onGuideCueShown:e=>{n("Guide Cue Shown",{groupId:e.groupId,cueId:e.cueId,step:e.step})},onNextGuideGue:e=>{n("Guide Cue Dismissed",{groupId:e.groupId,cueId:e.cueId,step:e.step})},onNextGuideCueGroup:e=>{e.groupSteps!==e.step&&n("Guide Cue Group Dismissed",{groupId:e.groupId,cueId:e.cueId,step:e.step})},onContextMenuOpen:e=>{e.length>0&&n("Context Menu Opened",{item_groups:e.map((e=>e.telemetryLabel))})},onContextMenuItemClick:(e,t)=>{n("Context Menu Item Clicked",{item_group:e.telemetryLabel,item_label:t.label})},onDrawerSectionOpen:e=>{n("Drawer Section Opened",{sectionId:e})},onDrawerSectionHide:e=>{n("Drawer Section Closed",{sectionId:e})},onSignalMount:e=>{n("Signal Shown",{id:e})},onSignalOpen:e=>{n("Signal Opened",{id:e})},onSignalPrimaryActionClick:e=>{n("Signal Action Button Clicked",{id:e})},onSignalLinkClick:e=>{n("Signal Link Clicked",{id:e})},onSignalClose:e=>{n("Signal Closed",{id:e})},disableGuideCues:!o},Ih),t)},Lh=()=>{const{enableCompassWebSettings:e}=(0,R.gc)(["enableCompassWebSettings"]);return e?r().createElement(ku,null):null},Oh=({appName:e,orgId:t,preferences:n,projectId:a,darkMode:s,onLog:c,onDebug:u,onTrack:h,onOpenConnectViaModal:g,history:f,historyRoutePrefix:y})=>{const b=(0,d.nfZ)(new i.Ay),{logger:v,telemetry:C}=function({preferences:e,...t}){const n=(0,d.HIF)(t),a=(0,d.nfZ)((()=>new Wu("COMPASS-WEB",n)));return{logger:a,telemetry:(0,d.nfZ)({sendTrack:(e,t={})=>{Pu.tracking?.push({event:e,properties:t}),n.current.onTrack?.(e,t)},logger:a,preferences:e})}}({onLog:c,onDebug:u,onTrack:h,preferences:n}),{initialWorkspaceTabs:E,autoconnectId:S,onActiveWorkspaceTabChange:k,onBeforeUnloadCallbackRequest:w}=function(e,t="explorer"){const n=(0,d.nfZ)((()=>`/${t.replace(/^\//,"")}`)),a=(0,d.HIF)(e),r=(0,o.useRef)((()=>!0)),i=(0,d.nfZ)((()=>{if(!a.current)return[];const e=function(e){const[,t,n,a,o]=decodeURIComponent(e).split("/");if(t&&n&&a){const e=function(e){switch(e){case"find":return"Documents";case"aggregation":return"Aggregations";case"schema":return"Schema";case"indexes":return"Indexes";case"validation":return"Validation";case"global-writes":return"GlobalWrites";default:return}}(o);return{type:"Collection",connectionId:t,namespace:`${n}.${a}`,...e&&{initialSubtab:e}}}return t&&n?{type:"Collections",connectionId:t,namespace:n}:t?{type:"Databases",connectionId:t}:{type:"Welcome"}}(a.current.location.pathname.replace(n,""));return e?[e]:[]})),s=(0,d.nfZ)((()=>i[0]&&"connectionId"in i[0]?i[0].connectionId:void 0)),l=(0,o.useCallback)((e=>{const t=n+function(e){let t;switch(e?.type){case"Databases":t=th(e.connectionId);break;case"Collections":t=th(e.connectionId,e.namespace);break;case"Collection":{const{database:n,collection:a}=(0,m.Ay)(e.namespace);t=th(e.connectionId,n,a,function(e){switch(e){case"Documents":return"find";case"Aggregations":return"aggregation";case"Schema":return"schema";case"Indexes":return"indexes";case"Validation":return"validation";case"GlobalWrites":return"global-writes";default:return""}}(e.subTab));break}default:t="/"}return t}(e);a.current?.replace(t)}),[a,n]),c=(0,o.useCallback)((e=>{r.current=e}),[]);return function(e,t,n){(0,o.useEffect)((()=>{if(!e.current)return;const a=e.current,o=({location:e,retry:i,action:s})=>{function l(){const s=e.pathname.startsWith(n);(s||t.current()||window.confirm("The content of Data Explorer has been modified. You will lose your changes if you navigate away from it."))&&(r(),i(),s&&(r=a.block(o)))}"POP"===s?window.addEventListener("popstate",l,{once:!0}):l()};let r=e.current.block(o);const i=()=>{t.current()&&r()};return window.addEventListener("beforeunload",i,!0),()=>{window.removeEventListener("beforeunload",i,!0),r()}}),[t,e,n])}(a,r,n),{initialWorkspaceTabs:i,autoconnectId:s,onActiveWorkspaceTabChange:l,onBeforeUnloadCallbackRequest:c}}(f,y);return r().createElement(i.Pe,{value:b},r().createElement(i.GL,{scopeName:"Compass Web Root"},r().createElement(R.wb,{value:n},r().createElement(p.IB,{value:v},r().createElement(re.Hb,{options:C},r().createElement(Th,{darkMode:s},r().createElement(kh,null,r().createElement(wh,{projectId:a},r().createElement(xh,{orgId:t,projectId:a},r().createElement(ch.D,{orgId:t,projectId:a},r().createElement(Tu,{orgId:t,projectId:a},r().createElement(sd.fP,null,r().createElement(I.Sq,{originForPrompt:"atlas-data-explorer",appNameForPrompt:I.Wn.DataExplorer,projectId:a},r().createElement(ke.Ay,{appName:e??"Compass Web",showErrorStateOnConnectionLoadError:!0,onExtraConnectionDataRequest:()=>Promise.resolve([{},null]),onAutoconnectInfoRequest:e=>S?e.loadAll().then((e=>e.find((e=>e.id===S))),(e=>{const{log:t,mongoLogId:n}=v;t.warn(n(1001000329),"Compass Web","Could not load connections when trying to autoconnect",{err:e.message})})):Promise.resolve(void 0)},r().createElement(l.M,null,r().createElement(rl.Ay,null,r().createElement(Dh,null,r().createElement(Ah,{initialWorkspaceTabs:E,onActiveWorkspaceTabChange:k,onOpenConnectViaModal:g,onBeforeUnloadCallbackRequest:w}))),r().createElement(id.In,{projectId:a,isCloudOptIn:!0}),r().createElement(Lh,null))))))))))))))))},Nh=e=>{const{preferencesAccess:t,isLoading:n,error:i}=function(e){const[t,n]=(0,o.useState)((()=>function(e){const t=ah.get(e);return t instanceof R.Fc?t:null}(e))),[a,r]=(0,o.useState)(null);return(0,o.useEffect)((()=>{let t=!0;return sh(e).then((e=>{t&&n(e)}),(e=>{t&&r(e)})),()=>{t=!1}}),[e]),{preferencesAccess:t,isLoading:!t&&!a,error:a}}(e.projectId);if(n)return r().createElement("div",{className:Sh},r().createElement(d.iyS,{darkMode:e.darkMode,"data-testid":"compass-web-preferences-loader",progressText:"Loading Data Explorer…"}));if(i)throw i;if(!t)throw new Error("Failed to load data explorer preferences");return r().createElement(Oh,(0,a.A)({},e,{preferences:t}))};n(13154),n(26544),n(15088).process;var _h=n(83145),Fh=n(17931);n(81895)},50207:()=>{},50339:()=>{},51390:(e,t,n)=>{n.r(t),n.d(t,{createConnection:()=>c,isIP:()=>l,isIPv4:()=>a.wM,isIPv6:()=>a.w7}),n(64990),n(90801),n(95774),n(77767);var a=n(32098),o=n(64371),r=n(7570),i=n(34110).Buffer;class s extends o.Duplex{_localPort=0;_remoteHost="";_remotePort=0;constructor(){super()}connect(e){const t=(0,r.Zk)();if(!t)throw new Error("Link is not available");return this._remoteHost=e.host,this._remotePort=e.port,this._localPort=t.allocatePort(),t.registerSocket(this._localPort,{onData:e=>{queueMicrotask((()=>{this.push(i.from(e))}))},onClose:()=>{this._teardown(),queueMicrotask((()=>this.emit("close")))},onError:e=>{this._teardown(),queueMicrotask((()=>this.emit("error",e)))}}).then((()=>{queueMicrotask((()=>{this.emit(e.tls?"secureConnect":"connect")}))})).catch((e=>{queueMicrotask((()=>this.emit("error",e instanceof Error?e:new Error(String(e)))))})),this}_read(){}_write(e,t,n){const a=(0,r.Zk)();a&&0!==this._localPort?(a.sendData(this._localPort,this._remoteHost,this._remotePort,new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),queueMicrotask((()=>{n()}))):queueMicrotask((()=>{n(new Error("Socket not connected: link unavailable"))}))}_teardown(e){if(0===this._localPort)return;const t=(0,r.Zk)();e&&t&&t.sendError(this._localPort,this._remoteHost,this._remotePort,e),t?.unregisterSocket(this._localPort),this._localPort=0}destroy(){return 0!==this._localPort&&this._teardown("Stream destroyed by client"),this}end(e){return 0!==this._localPort?(this._teardown("Stream ended by client"),queueMicrotask((()=>{e?.()})),this):this}setKeepAlive(){return this}setTimeout(){return this}setNoDelay(){return this}}const l=e=>(0,a.UR)(e)??0,c=e=>{const t=new s;return queueMicrotask((()=>{t.connect(e)})),t}},51731:(e,t,n)=>{function a(e){try{return new window.URL(`http://${e}`).hostname}catch{return null}}function o(){throw new Error("Not implemented")}n.r(t),n.d(t,{toASCII:()=>a,toUnicode:()=>o})},56130:(e,t,n)=>{n(95039),n(59509),n(25691),n(23177),n(3142),n(51615),n(84217),n(25953),n(42319),n(28465),n(12887),n(36106),n(84542),n(57068),n(69517),n(10838),n(63678);const a=n(5389),{Collection:o}=n(15857),r=n(99091),i=n(28937),s=n(36430),l=n(17961),c=new Map,d=new WeakSet;function u(e){if(e&&e.off&&!d.has(e)){d.add(e),e.off(),e.isCollection&&e.forEach((e=>{u(e)}));for(const t of Object.values(e))u(t)}}const m=a.extend({props:{user:{type:"object",default:null},roles:{type:"array",default:null},privileges:{type:"array",default:null}}}),p=a.extend({props:{arch:"string",cpu_cores:"number",cpu_frequency:"number",memory_bits:"number",os:"string",os_family:"string",kernel_version:"string",kernel_version_string:"string"}}),h=a.extend({props:{isEnterprise:"boolean",version:"string"}}),g=a.extend({props:{isGenuine:{type:"boolean",default:!0},serverName:"string"}}),f=a.extend({props:{isDataLake:{type:"boolean",default:!1},version:"string"}});function y(e,t){return t||"initial"!==e}function b(e,t){return t||"ready"!==e}const v=a.extend((C=["fetch","fetchDatabases","refresh"],{initialize(){C.forEach((e=>{if(e in this&&"function"==typeof this[e]){const n=this[e];this[e]=(t=n,function(...e){const n=this.isCollection?`${this.parent.cid}$$coll$$${t.name}`:`${this.cid}$$${t.name}`;if(c.has(n))return c.get(n);const a=t.call(this,...e).finally((()=>{c.delete(n)}));return c.set(n,a),a})}var t}))}}),{modelType:"Instance",idAttribute:"_id",props:{_id:{type:"string",required:!0},hostname:{type:"string",required:!0},port:"number",status:{type:"string",default:"initial"},statusError:{type:"string",default:null},databasesStatus:{type:"string",default:"initial"},databasesStatusError:{type:"string",default:null},refreshingStatus:{type:"string",default:"initial"},refreshingStatusError:{type:"string",default:null},isAtlas:{type:"boolean",default:!1},isLocalAtlas:{type:"boolean",default:!1},isSearchIndexesSupported:"boolean",atlasVersion:{type:"string",default:""},csfleMode:{type:"string",default:"unavailable"}},initialize:function({preferences:e,...t}){this.preferences=e,a.prototype.initialize.call(this,t)},derived:{isRefreshing:{deps:["refreshingStatus"],fn(){return["fetching","refreshing"].includes(this.refreshingStatus)}},isTopologyWritable:{deps:["topologyDescription.type"],fn(){return r.isWritable(this.topologyDescription.type)}},singleServerType:{deps:["topologyDescription.type","topologyDescription.servers"],fn(){return this.topologyDescription.type===r.SINGLE?this.topologyDescription.servers[0].type:null}},isServerWritable:{deps:["singleServerType"],fn(){return null!==this.singleServerType&&i.isWritable(this.singleServerType)}},isWritable:{deps:["topologyDescription.type","isTopologyWritable","isServerWritable"],fn(){return!!this.isTopologyWritable&&(this.topologyDescription.type!==r.SINGLE||this.isServerWritable)}},description:{deps:["topologyDescription.type","isTopologyWritable","isServerWritable","singleServerType"],fn(){const e=this.topologyDescription.type;if(this.isTopologyWritable){if(e===r.SINGLE){const e=this.isServerWritable?"is writable":"is not writable";return`Single connection to server type: ${i.humanize(this.singleServerType)} ${e}`}return`Topology type: ${r.humanize(e)} is writable`}return`Topology type: ${r.humanize(e)} is not writable`}},env:{deps:["isAtlas","isLocalAtlas","dataLake"],fn(){return this.isAtlas||this.isLocalAtlas?this.dataLake.isDataLake?s.ADL:s.ATLAS:s.ON_PREM}}},children:{host:p,build:h,genuineMongoDB:g,dataLake:f,auth:m,topologyDescription:l},collections:{databases:o},async fetch({dataService:e,force:t=!1}){if(b(this.status,t))try{const t="initial"===this.status?"fetching":"refreshing";this.set({status:t});const n=await e.instance();this.set({status:"ready",statusError:null,...n})}catch(e){throw this.set({status:"error",statusError:e.message}),e}},async fetchDatabases({dataService:e,force:t=!1}){if(b(this.databasesStatus,t))try{const t="initial"===this.databasesStatus?"fetching":"refreshing";this.set({databasesStatus:t}),await this.databases.fetch({dataService:e}),this.set({databasesStatus:"ready",databasesStatusError:null})}catch(e){throw this.set({databasesStatus:"error",databasesStatusError:e.message}),e}},async getIsSearchSupported({ns:e,dataService:t,force:n=!1}){if(void 0===this.isSearchIndexesSupported||n){const n=await t.isListSearchIndexesSupported(e);this.set({isSearchIndexesSupported:n})}return this.isSearchIndexesSupported},async refresh({dataService:e,fetchDatabases:t=!1,fetchDbStats:n=!1,fetchCollections:a=!1,fetchCollStats:o=!1,firstRun:r=!1}){this.set({refreshingStatus:"initial"===this.refreshingStatus?"fetching":"refreshing"});try{await this.fetch({dataService:e,force:!r}),y(this.databasesStatus,t)&&await this.fetchDatabases({dataService:e,force:!0}),await Promise.all(this.databases.map((t=>{if(y(t.collectionsStatus,a))return t.fetchCollections({dataService:e,force:!0})}))),await Promise.allSettled(this.databases.map((t=>[y(t.status,n)&&t.fetch({dataService:e,force:!0}),...t.collections.map((t=>{if(y(t.status,o))return t.fetch({dataService:e,fetchInfo:!1,force:!0})}))])).flat()),this.set({refreshingStatus:"ready",refreshingStatusError:null})}catch(e){throw this.set({refreshingStatus:"error",refreshingStatusError:e.message}),e}},async getNamespace({dataService:e,database:t,collection:n}){await this.fetchDatabases({dataService:e});const a=this.databases.get(t);if(!a)return null;await a.fetchCollections({dataService:e});return a.collections.get(n,"name")||null},shouldFetchDbAndCollStats(){return this.preferences.getPreferences().enableDbAndCollStats},shouldFetchNamespacesFromPrivileges(){return this.preferences.getPreferences().inferNamespacesFromPrivileges},removeAllListeners(){v.removeAllListeners(this)},toJSON(e={derived:!0}){return this.serialize(e)}});var C;e.exports=Object.assign(v,{removeAllListeners(e){u(e)}})},56900:(e,t,n)=>{n.d(t,{Tu:()=>l,ZN:()=>s,z:()=>c}),n(95039),n(4308),n(78773);var a=n(26544);n(12738),n(13068);const{log:o,mongoLogId:r}=(0,a.h)("COMPASS-USER-STORAGE"),i=["RecentQueries","FavoriteQueries","SavedPipelines","DataModelDescriptions","WorkspacesState","AppPreferences","Users","Connections","AtlasState","ShellHistory"];class s{validator;dataType;serialize;deserialize;constructor(e,t,{serialize:n=e=>JSON.stringify(e,null,2),deserialize:a=JSON.parse}={}){this.validator=e,function(e){if(!i.includes(e))throw new Error(`Invalid UserDataType: ${String(e)}`)}(t),this.dataType=t,this.serialize=n,this.deserialize=a}}class l extends s{atlasService;orgId="";projectId="";constructor(e,t,{orgId:n,projectId:a,atlasService:o,serialize:r,deserialize:i}){super(e,t,{serialize:r,deserialize:i}),this.atlasService=o,this.orgId=n,this.projectId=a}async write(e,t){const n=this.atlasService.userDataEndpoint(this.orgId,this.projectId,this.dataType,e);try{return this.validator.parse(t),await this.atlasService.authenticatedFetch(n,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({data:this.serialize(t),createdAt:new Date})}),!0}catch(e){return o.error(r(1001000373),"Atlas Backend","Error writing data",{url:n,error:e.message}),!1}}async delete(e){const t=this.atlasService.userDataEndpoint(this.orgId,this.projectId,this.dataType,e);try{return await this.atlasService.authenticatedFetch(t,{method:"DELETE"}),!0}catch(e){return o.error(r(1001000374),"Atlas Backend","Error deleting data",{url:t,error:e.message}),!1}}async readAll(){const e={data:[],errors:[]};try{const t=await this.atlasService.authenticatedFetch(this.atlasService.userDataEndpoint(this.orgId,this.projectId,this.dataType,void 0),{method:"GET"}),n=await t.json();for(const t of n)try{const n=this.deserialize(t.data);e.data.push(this.validator.parse(n))}catch(t){e.errors.push(t)}return e}catch(t){return e.errors.push(t),e}}async updateAttributes(e,t){const n=this.atlasService.userDataEndpoint(this.orgId,this.projectId,this.dataType,e);try{const a={...await this.readOne(e),...t};return await this.atlasService.authenticatedFetch(n,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({data:this.serialize(a),createdAt:new Date})}),!0}catch(e){return o.error(r(1001000375),"Atlas Backend","Error updating data",{url:n,error:e.message}),!1}}async readOne(e){const t=this.atlasService.userDataEndpoint(this.orgId,this.projectId,this.dataType,e);try{const e=await this.atlasService.authenticatedFetch(t,{method:"GET"}),n=await e.json();return this.validator.parse(this.deserialize(n.data))}catch(e){o.error(r(1001000376),"Atlas Backend","Error reading data",{url:t,error:e.message})}}}var c=n(21842)},60484:(e,t,n)=>{n(95039),n(59509),n(25691),n(23177),n(3142),n(51615),n(84217),n(25953),n(42319),n(28465),n(12887),n(36106),n(84542),n(57068),n(69517),n(81546);const a=n(5389),o=n(4579),{Collection:r}=n(40220),i=n(49862),s=new Map;function l(e){return{initialize(){e.forEach((e=>{if(e in this&&"function"==typeof this[e]){const n=this[e];this[e]=(t=n,function(...e){const n=this.isCollection?`${this.parent.cid}$$coll$$${t.name}`:`${this.cid}$$${t.name}`;if(s.has(n))return s.get(n);const a=t.call(this,...e).finally((()=>{s.delete(n)}));return s.set(n,a),a})}var t}))}}}function c(e){return e.parent??e.collection??null}function d(e,...t){let n=c(this);for(;n;)n.emit(e,...t),n=c(n)}function u(e,t){const n=c(e);return n?n.modelType===t?n:u(n,t):null}function m(e,t){return t||"ready"!==e}const p=a.extend(l(["fetch","fetchCollections"]),{modelType:"Database",idAttribute:"_id",props:{_id:"string",name:"string",status:{type:"string",default:"initial"},statusError:{type:"string",default:null},collectionsStatus:{type:"string",default:"initial"},collectionsStatusError:{type:"string",default:null},inferred_from_privileges:"boolean",collection_count:"number",document_count:"number",storage_size:"number",data_size:"number",index_count:"number",index_size:"number"},derived:{collectionsLength:{deps:["collection_count","collectionsStatus","collections"],fn(){return["ready","refreshing"].includes(this.collectionsStatus)?this.collections.length:this.collection_count??0}}},collections:{collections:r},async fetch({dataService:e,force:t=!1}){const n=u(this,"Instance").shouldFetchDbAndCollStats();if(m(this.status,t))if(n)try{const t="initial"===this.status?"fetching":"refreshing";this.set({status:t});const n=await e.databaseStats(this.getId());this.set({status:"ready",statusError:null,...n})}catch(e){throw this.set({status:"error",statusError:e.message}),e}else this.set({status:"ready"})},async fetchCollections({dataService:e,force:t=!1}){if(m(this.collectionsStatus,t))try{const n="initial"===this.collectionsStatus?"fetching":"refreshing";this.set({collectionsStatus:n}),await this.collections.fetch({dataService:e,force:t}),this.set({collectionsStatus:"ready",collectionsStatusError:null})}catch(e){throw this.set({collectionsStatus:"error",collectionsStatusError:e.message}),e}},async fetchCollectionsDetails({dataService:e,nameOnly:t=!1,force:n=!1}){await this.fetchCollections({dataService:e,force:n}),t||await Promise.allSettled(this.collections.map((t=>t.fetch({dataService:e,fetchInfo:!1,force:n}))))},toJSON(e={derived:!0}){return this.serialize(e)}}),h=o.extend(function(...e){return{initialize(...t){e.forEach((({initialize:e})=>{e.call(this,...t)}))}}}(l(["fetch"]),(g="databases",{initialize(){if(this.isCollection){this.on("add",d.bind(this,`add:${g}`)),this.on("remove",d.bind(this,`remove:${g}`)),this.on("change",d.bind(this,`change:${g}`));for(const e of Object.keys(this.model.prototype._definition))this.on(`change:${e}`,d.bind(this,`change:${g}.${e}`))}}})),{modelType:"DatabaseCollection",mainIndex:"_id",indexes:["name"],comparator:"_id",model:p,async fetch({dataService:e}){const t=u(this,"Instance");if(!t)throw new Error(`Trying to fetch ${this.modelType} that doesn't have the Instance parent model`);const n=t.shouldFetchNamespacesFromPrivileges(),a=await e.listDatabases({nameOnly:!0,fetchNamespacesFromPrivileges:n,privileges:t.auth.privileges,roles:t.auth.roles});this.set(a.filter((e=>{const t=i(e._id);return!t.internal||"__mdb_internal_search"===t.database})).map((({_id:e,name:t,inferred_from_privileges:n})=>({_id:e,name:t,inferred_from_privileges:n}))))},toJSON(e={derived:!0}){return this.map((t=>t.toJSON(e)))}});var g;h.prototype[Symbol.iterator]=function*(){for(let e=0,t=this.length;e<t;e++)yield this.at(e)},e.exports=p,e.exports.Collection=h},62086:()=>{},64113:()=>{throw new Error("Module not supported in the browser environment")},65654:(e,t,n)=>{n.d(t,{A:()=>h});var a=n(71520),o=n.n(a),r=n(76507),i=n.n(r),s=n(12196),l=n(40259),c=n(78109),d=o()(!1),u=i()(s),m=i()(l),p=i()(c);d.push([e.id,".leaflet-draw-toolbar a {\n background-image: url("+u+");\n background-image: linear-gradient(transparent, transparent),\n url("+m+");\n}\n\n.leaflet-retina .leaflet-draw-toolbar a {\n background-image: url("+p+");\n background-image: linear-gradient(transparent, transparent),\n url("+m+");\n}\n",""]);const h=d},66363:()=>{},67092:(e,t,n)=>{n.d(t,{II:()=>I,Ay:()=>N,TB:()=>i,IM:()=>y,q2:()=>k,j$:()=>S,P6:()=>E}),n(95039);var a=n(90605),o=n(13353),r=n(34110).Buffer;function i(e){return e?.[o.bsonType]}const s="Long",l="Int64",c=/\[object (\w+)\]/,d=2147483647,u=-2147483648,m=Math.pow(2,63)-1,p=-m,h=/^-?\d+$/,g=["Long","Int32","Double","Decimal128"],f=["UUID","LegacyJavaUUID","LegacyCSharpUUID","LegacyPythonUUID"];function y(e){return f.includes(e)}const b=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,v=e=>{if(!b.test(e))throw new Error(`'${e}' is not a valid UUID string (expected format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)`)},C=e=>e.replace(/-/g,""),E=e=>e.substring(0,8)+"-"+e.substring(8,12)+"-"+e.substring(12,16)+"-"+e.substring(16,20)+"-"+e.substring(20,32),S=e=>{let t=e.substring(0,16),n=e.substring(16,32);return t=t.substring(14,16)+t.substring(12,14)+t.substring(10,12)+t.substring(8,10)+t.substring(6,8)+t.substring(4,6)+t.substring(2,4)+t.substring(0,2),n=n.substring(14,16)+n.substring(12,14)+n.substring(10,12)+n.substring(8,10)+n.substring(6,8)+n.substring(4,6)+n.substring(2,4)+n.substring(0,2),t+n},k=e=>e.substring(6,8)+e.substring(4,6)+e.substring(2,4)+e.substring(0,2)+(e.substring(10,12)+e.substring(8,10))+(e.substring(14,16)+e.substring(12,14))+e.substring(16,32),w=()=>(new o.UUID).toString(),x=(e,t)=>{const n=e.toString("hex");if(e.sub_type===o.Binary.SUBTYPE_UUID)return E(n);switch(t){case"Java":return E(S(n));case"CSharp":return E(k(n));default:return E(n)}},A=(e,t)=>e instanceof o.Binary&&(e.sub_type===o.Binary.SUBTYPE_UUID||e.sub_type===o.Binary.SUBTYPE_UUID_OLD)?x(e,t):(0,a.toString)(e).trim(),D=Object.assign(Object.create(null),{UUID:void 0,LegacyJavaUUID:"Java",LegacyCSharpUUID:"CSharp",LegacyPythonUUID:"Python"}),I=(e,t,n)=>{const a=D[t],r=x(e,a),i=C(r);switch(n){case"UUID":return o.Binary.createFromHexString(i,o.Binary.SUBTYPE_UUID);case"LegacyJavaUUID":return o.Binary.createFromHexString(S(i),o.Binary.SUBTYPE_UUID_OLD);case"LegacyCSharpUUID":return o.Binary.createFromHexString(k(i),o.Binary.SUBTYPE_UUID_OLD);case"LegacyPythonUUID":return o.Binary.createFromHexString(i,o.Binary.SUBTYPE_UUID_OLD);default:throw new Error(`Unknown UUID type: ${n}`)}},M={Array:e=>(0,a.isArray)(e)?e:(0,a.isPlainObject)(e)?[]:[e],Binary:e=>{const t=ArrayBuffer.isView(e)?r.from(e):r.from((0,a.toString)(e),"utf8");return new o.Binary(t,o.Binary.SUBTYPE_DEFAULT)},Boolean:e=>{if((0,a.isString)(e)){if("true"===e.toLowerCase())return!0;if("false"===e.toLowerCase())return!1;throw new Error(`'${e}' is not a valid boolean string`)}return!!e},Code:e=>new o.Code((0,a.toString)(e)),Date:e=>new Date(e),Decimal128:e=>{if(g.includes(i(e))){const t=e;e=i(e)===s?t.toString():t.valueOf()}return o.Decimal128.fromString((0,a.toString)(e))},Double:e=>{if("-"===e||""===e)throw new Error(`Value '${e}' is not a valid Double value`);if((0,a.isString)(e)&&e.endsWith("."))throw new Error("Please enter at least one digit after the decimal");const t=(0,a.toNumber)(e);return new o.Double(t)},Int32:e=>{if("-"===e||""===e)throw new Error(`Value '${e}' is not a valid Int32 value`);const t=(0,a.toNumber)(e);if(t>=u&&t<=d)return new o.Int32(t);throw new Error(`Value ${t} is outside the valid Int32 range`)},Int64:e=>{if("-"===e||""===e)throw new Error(`Value '${e}' is not a valid Int64 value`);const t=(0,a.toNumber)(e);if(t>=p&&t<=m)return e?.value||"number"==typeof e?o.Long.fromNumber(t):"object"==typeof e&&null!==e&&"toString"in e?o.Long.fromString(e.toString()):o.Long.fromString((0,a.toString)(e));throw new Error(`Value ${(0,a.toString)(e)} is outside the valid Int64 range`)},MaxKey:()=>new o.MaxKey,MinKey:()=>new o.MinKey,Null:()=>null,Object:e=>(0,a.isPlainObject)(e)?e:{},ObjectId:e=>(0,a.isString)(e)&&""!==e?o.ObjectId.createFromHexString(e):new o.ObjectId,BSONRegExp:e=>new o.BSONRegExp((0,a.toString)(e)),String:a.toString,BSONSymbol:e=>new o.BSONSymbol((0,a.toString)(e)),Timestamp:e=>{const t=(0,a.toNumber)(e);return o.Timestamp.fromNumber(t)},Undefined:()=>{},UUID:e=>{const t=A(e);if(!t)return(new o.UUID).toBinary();v(t);const n=C(t);return o.Binary.createFromHexString(n,o.Binary.SUBTYPE_UUID)},LegacyJavaUUID:e=>{let t=A(e,"Java");t?v(t):t=w();const n=C(t),a=S(n);return o.Binary.createFromHexString(a,o.Binary.SUBTYPE_UUID_OLD)},LegacyCSharpUUID:e=>{let t=A(e,"CSharp");t?v(t):t=w();const n=C(t),a=k(n);return o.Binary.createFromHexString(a,o.Binary.SUBTYPE_UUID_OLD)},LegacyPythonUUID:e=>{let t=A(e,"Python");t?v(t):t=w();const n=C(t);return o.Binary.createFromHexString(n,o.Binary.SUBTYPE_UUID_OLD)}},T=(0,a.keys)(M),L=new class{test(e){if(h.test(e)){const t=(0,a.toNumber)(e);return t>=u&&t<=d}return!1}},O=new class{test(e){return!!h.test(e)&&Number.isSafeInteger((0,a.toNumber)(e))}},N=new class{cast(e,t){const n=M[t];let a=e;return n&&(a=n(e)),"[object Object]"===a&&a!==e?"":a}type(e,t){const n=i(e);if(n){if(n===s)return l;if("Binary"===n){const n=e;if(n.sub_type===o.Binary.SUBTYPE_UUID)return"UUID";if(n.sub_type===o.Binary.SUBTYPE_UUID_OLD&&16===n.buffer.length&&t)return t}return n}return(0,a.isNumber)(e)?(e=>{const t=(0,a.toString)(e);return L.test(t)?"Int32":O.test(t)?l:"Double"})(e):(0,a.isPlainObject)(e)?"Object":(0,a.isArray)(e)?"Array":Object.prototype.toString.call(e).replace(c,"$1")}castableTypes(e=!1){return!0===e?T:(0,a.without)(T,"Decimal128")}}},69470:()=>{},70918:(e,t,n)=>{n.d(t,{A2:()=>c,Ct:()=>l,Op:()=>h,aC:()=>u,wT:()=>p}),n(59509),n(25691),n(23177),n(3142),n(51615),n(84217),n(25953),n(42319),n(28465),n(12887),n(36106),n(84542),n(57068),n(69517);var a=n(96652),o=n(6924),r=n(14956);const i={close:new Map,replace:new Map},s=(e,t)=>{const n=i[e].get(t.id)??[];for(const e of n)if(!1===e())return!1;return!0},l=e=>s("close",e),c=e=>s("replace",e),d=(e,t,n)=>{const a=i[e],o=a.get(t)??[];return a.set(t,o.concat(n)),()=>{u(e,t,n)}},u=(e,t,n)=>{n&&t&&e?i[e].set(t,(i[e].get(t)??[]).filter((e=>e!==n))):t&&e?i[e].delete(t):e?i[e].clear():Object.values(i).forEach((e=>{e.clear()}))};function m(e,t){const n=(0,o.BE)(),i=(0,r.HIF)(t);(0,a.useEffect)((()=>d(e,n,(()=>i.current()))),[e,n,i])}m.bind(null,"close");const p=m.bind(null,"replace");function h(){let e;try{e=(0,o.BE)()}catch{}if(e)return{onTabClose:d.bind(null,"close",e),onTabReplace:d.bind(null,"replace",e)}}},72176:()=>{},73578:function(e){var t;t=function(e){return function(){let t=function(){return"n"},n=function(){return[0,0]},a=u(),o=function(){return" "},r=null,i=null,s=null;function l(e){r=function(e){if(e=e.node())return"svg"===e.tagName.toLowerCase()?e:e.ownerSVGElement}(e),r&&(i=r.createSVGPoint(),document.body.appendChild(a))}l.show=function(){const e=Array.prototype.slice.call(arguments);e[e.length-1]instanceof SVGElement&&(s=e.pop());const a=o.apply(this,e),r=n.apply(this,e),i=t.apply(this,e),u=m(),p=document.documentElement.scrollTop||document.body.scrollTop,h=document.documentElement.scrollLeft||document.body.scrollLeft;let g=d.length,f=null;for(u.html(a).style({opacity:1,"pointer-events":"all",display:"block"});g--;)u.classed(d[g],!1);return f=c.get(i).apply(this),u.classed(i,!0).style({top:(f.top+r[0]+p).toString()+"px",left:(f.left+r[1]+h).toString()+"px"}),l},l.hide=function(){return m().style({opacity:0,"pointer-events":"none",display:"none"}),l},l.attr=function(t,n){if(arguments.length<2&&"string"==typeof t)return m().attr(t);{const t=Array.prototype.slice.call(arguments);e.selection.prototype.attr.apply(m(),t)}return l},l.style=function(t,n){if(arguments.length<2&&"string"==typeof t)return m().style(t);{const t=Array.prototype.slice.call(arguments);e.selection.prototype.style.apply(m(),t)}return l},l.direction=function(n){return arguments.length?(t=null==n?n:e.functor(n),l):t},l.offset=function(t){return arguments.length?(n=null==t?t:e.functor(t),l):n},l.html=function(t){return arguments.length?(o=null==t?t:e.functor(t),l):o},l.destroy=function(){return a&&(m().remove(),a=null),l};const c=e.map({n:function(){const e=p();return{top:e.n.y-a.offsetHeight,left:e.n.x-a.offsetWidth/2}},s:function(){const e=p();return{top:e.s.y,left:e.s.x-a.offsetWidth/2}},e:function(){const e=p();return{top:e.e.y-a.offsetHeight/2,left:e.e.x}},w:function(){const e=p();return{top:e.w.y-a.offsetHeight/2,left:e.w.x-a.offsetWidth}},nw:function(){const e=p();return{top:e.nw.y-a.offsetHeight,left:e.nw.x-a.offsetWidth}},ne:function(){const e=p();return{top:e.ne.y-a.offsetHeight,left:e.ne.x}},sw:function(){const e=p();return{top:e.sw.y,left:e.sw.x-a.offsetWidth}},se:function(){const e=p();return{top:e.se.y,left:e.e.x}}}),d=c.keys();function u(){const t=e.select(document.createElement("div"));return t.style({position:"absolute",top:0,opacity:0,"pointer-events":"none","box-sizing":"border-box",display:"none"}),t.node()}function m(){return null===a&&(a=u(),document.body.appendChild(a)),e.select(a)}function p(){let t=s;for(t||(t=e.event.target);void 0===t.getScreenCTM&&"undefined"!==t.parentNode;)t=t.parentNode;const n={},a=t.getScreenCTM(),o=t.getBBox(),r=o.width,l=o.height,c=o.x,d=o.y;return i.x=c,i.y=d,n.nw=i.matrixTransform(a),i.x+=r,n.ne=i.matrixTransform(a),i.y+=l,n.se=i.matrixTransform(a),i.x-=r,n.sw=i.matrixTransform(a),i.y-=l/2,n.w=i.matrixTransform(a),i.x+=r,n.e=i.matrixTransform(a),i.x-=r/2,i.y-=l/2,n.n=i.matrixTransform(a),i.y+=l,n.s=i.matrixTransform(a),n}return l}},e.exports?e.exports=function(e){return e.tip=t(e),e.tip}:this.d3.tip=t(this.d3)},73850:(e,t,n)=>{function a(){return{}}n.d(t,{A:()=>a})},75227:(e,t,n)=>{n.r(t),n.d(t,{default:()=>a});const a=n(4308).promises},75531:()=>{},79498:(e,t,n)=>{n.r(t),n.d(t,{TIMEOUT:()=>r,default:()=>s,promises:()=>i});var a=n(82844);const o=n(15088).process.env.COMPASS_WEB_DOH_ENDPOINT??["dns.google","dns.cloudflare.com"],r="ETIMEOUT",i={resolve:async function(e,t){if("SRV"===t)return await async function(e){const{answers:t}=await(0,a.P)({question:{type:"SRV",name:e}},{endpoints:o});return t?.flatMap((e=>"SRV"===e.type?{...e.data,name:e.data.target}:[]))??[]}(e);if("TXT"===t)return await async function(e){const{entries:t}=await(0,a.t4)(e,{endpoints:o});return t.map((e=>[e.data]))}(e);throw new Error(`Unsupported rrtype for dns.resolve polyfill: ${t}`)}},s={promises:i,TIMEOUT:r}},81358:(e,t,n)=>{n.d(t,{VU:()=>o,mC:()=>i,cF:()=>s}),n(95039);var a=n(67092);const o=(e,t)=>{const n=(0,a.TB)(e),o=(0,a.TB)(t);if(n&&"string"==typeof n&&o&&"string"==typeof o)return"ObjectId"===n?e.equals(t):["Decimal128","Long"].includes(n)?e.toString()===t.toString():["Int32","Double"].includes(n)?e.value===t.value:void 0};var r=n(90605);const i=(e,t)=>{if(void 0===e)return!1;if((0,r.isPlainObject)(e)&&(0,r.has)(e,"$in")){const n=e.$in;return(0,r.some)(n,(e=>(0,r.isEqualWith)(t,e,o)))}return(0,r.isEqualWith)(e,t,o)},s=(e,t)=>{const n={$gte:function(e,t){return e>=t},$gt:function(e,t){return e>t},$lte:function(e,t){return e<=t},$lt:function(e,t){return e<t},$exists:function(e,t){return e||t},$eq:function(e,t){return e===t}},a=[],i=[];(0,r.isPlainObject)(e)?(0,r.forOwn)(e,(function(e,t){const o=n[t];o&&(a.push((0,r.curryRight)(o)(e)),i.push(e))})):(a.push((function(t){return(0,r.isEqualWith)(t,e,o)})),i.push(e));const s=(0,r.get)(t,"dx",null),l=s?(0,r.uniq)([t.value,t.value+s]):[t.bson||t.value],c=(0,r.map)(l,(function(e,t){return t>0&&(e-=1e-5*Math.abs(e)+1e-5),(0,r.every)((0,r.map)(a,(function(t){return t(e)})))}));return(0,r.every)(c)?"yes":(0,r.some)(c)||(0,r.every)(i,(function(e){return e>l[0]&&e<l[l.length-1]}))?"partial":"no"}},81895:(e,t,n)=>{n.d(t,{p:()=>r});var a=n(17931),o=n(83145);const r=()=>{const e=(0,o.RI)(a.C.searchActivationProgramP1,!0);return{enableSearchActivationProgramP1:e?.assignment?.assignmentData?.variant===a.q.searchActivationProgramP1Variant}}},83145:(e,t,n)=>{n.d(t,{RI:()=>c,SJ:()=>s,Y1:()=>l,qv:()=>d});var a=n(96652),o=n.n(a),r=n(14956);const i={useAssignment:()=>({assignment:null,asyncStatus:"SUCCESS",error:null,isLoading:!1,isError:!1,isSuccess:!0}),assignExperiment:()=>Promise.resolve(null),getAssignment:()=>Promise.resolve(null),useTrackInSample:()=>({asyncStatus:null,error:null,isLoading:!1,isError:!1,isSuccess:!0})},s=(0,a.createContext)(i),l=({children:e,useAssignment:t,assignExperiment:n,getAssignment:a,useTrackInSample:i})=>{const l=(0,r.nfZ)({useAssignment:t,assignExperiment:n,getAssignment:a,useTrackInSample:i});return Object.assign(l,{useAssignment:t,assignExperiment:n,getAssignment:a,useTrackInSample:i}),o().createElement(s.Provider,{value:l},e)},c=(...e)=>(0,a.useContext)(s).useAssignment(...e),d=(...e)=>(0,a.useContext)(s).useTrackInSample(...e)},83265:()=>{},86983:()=>{},88992:()=>{},89951:(e,t,n)=>{n.d(t,{A:()=>i});var a=n(94664),o=n.n(a);function r(e){this[e]?console.warn("Not attaching event "+String(e)+"; key already exists"):this[e]=o().createAction()}const i={store:()=>({setState:function(e){let t=!1;const n={...this.state};for(const n of Object.keys(e))this.state[n]!==e[n]&&(this.state[n]=e[n],this[n].trigger(e[n]),t=!0);t&&("function"==typeof this.storeDidUpdate&&this.storeDidUpdate(n),this.trigger(this.state))},init:function(){if("function"==typeof this.getInitialState){this.state=this.getInitialState();for(const e of Object.keys(this.state))r.call(this,e)}}})}},91136:()=>{},91399:(e,t,n)=>{t.MongoDBInstance=n(56130),t.TopologyType=n(99091),t.ServerType=n(28937),n(36430)},93276:(e,t,n)=>{n.d(t,{A:()=>r});var a=n(71520),o=n.n(a)()(!1);o.push([e.id,".marker-popup-module-popup__Z3L5O {\n pointer-events: none;\n}\n.leaflet-popup-content-wrapper {\n background-color: rgba(255, 255, 255, 0.95) !important;\n border-radius: 3px !important;\n}\n.leaflet-container {\n font-family: 'Euclid Circular A', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n font-size: 12px;\n z-index: 1;\n background-color: transparent;\n}\n.marker-popup-module-line__m3D1L {\n display: block;\n}\n.marker-popup-module-key__0m30l {\n color: #889397;\n}\n.marker-popup-module-value__XTOzl {\n font-weight: 500;\n}\n",""]),o.locals={popup:"marker-popup-module-popup__Z3L5O",line:"marker-popup-module-line__m3D1L",key:"marker-popup-module-key__0m30l",value:"marker-popup-module-value__XTOzl"};const r=o},93885:(e,t,n)=>{n.d(t,{n4:()=>s,A0:()=>r,Qn:()=>l});var a=n(96652),o=n(62183);class r{connections;constructor(e=[]){this.connections=[...e]}static async createAsync(e){const t=await(e?.())??[];return new r(t)}loadAll(){return Promise.resolve(this.connections)}load({id:e}){return Promise.resolve(this.connections.find((t=>t.id===e)))}_save({connectionInfo:e}){const t=this.connections.findIndex((t=>t.id===e.id));if(-1!==t){const n=this.connections[t];this.connections.splice(t,1,{...n,...e})}else this.connections.push(e)}save({connectionInfo:e}){return this._save({connectionInfo:e}),Promise.resolve()}delete({id:e}){const t=this.connections.findIndex((t=>t.id===e));return-1!==t&&this.connections.splice(t,1),Promise.resolve()}importConnections(){return Promise.resolve()}exportConnections(){return Promise.resolve("")}deserializeConnections(){return Promise.resolve([])}}const i=(0,a.createContext)(null),s=i.Provider,l=(0,o.mb)((function(){const e=(0,a.useContext)(i);if(!e)throw new Error("Could not find the current ConnectionStorage. Did you forget to setup the ConnectionStorageProvider?");return e}),"connectionStorageLocator")},94134:(e,t,n)=>{n.d(t,{Ng:()=>c,Pj:()=>s,d4:()=>l,hN:()=>i});var a=n(96652),o=n.n(a),r=n(19125);const i=o().createContext(null),s=(0,r.Nk)(i),l=((0,r.iI)(i),(0,r.jO)(i)),c=(e,t=null,n=null)=>(0,r.Ng)(e,t,n,{context:i})},94185:()=>{},96062:()=>{},96452:(e,t,n)=>{n.d(t,{T8:()=>r}),n(90605);var a=n(95012);n(70140),n(41652);const o=new WeakMap;function r(e){let t=o.get(e);if(t)return t;if(e.atlasMetadata?.clusterName)t=e.atlasMetadata.clusterName;else if(e.favorite?.name)t=e.favorite.name;else try{t=new a.Ay(e.connectionOptions.connectionString).hosts.join(",")}catch{t=e.connectionOptions.connectionString||"Connection"}return o.set(e,t),t}},96652:e=>{e.exports=window.__compassWebSharedRuntime.React},97781:(e,t,n)=>{n.r(t),n.d(t,{channel:()=>r,default:()=>d,hasSubscribers:()=>s,subscribe:()=>l,tracingChannel:()=>i,unsubscribe:()=>c});const a={hasSubscribers:!1,publish(){},subscribe(){},unsubscribe(){}},o={hasSubscribers:!1,tracePromise:e=>e(),traceSync:e=>e(),traceCallback:(e,...t)=>e(...t),start:a,end:a,asyncStart:a,asyncEnd:a,error:a};function r(e){return a}function i(e){return o}function s(e){return!1}function l(){}function c(){}const d={channel:r,tracingChannel:i,hasSubscribers:s,subscribe:l,unsubscribe:c}},99091:(e,t,n)=>{n(95039);const a="Single",o="ReplicaSetNoPrimary",r="ReplicaSetWithPrimary",i="Sharded",s="LoadBalanced",l="Unknown",c=[a,o,r,i,s,l],d=["primaryPreferred","secondary","secondaryPreferred","nearest"],u=d.concat(["primary"]),m=[a,r,s,i],p={Single:"Single",ReplicaSetNoPrimary:"Replica Set (No Primary)",ReplicaSetWithPrimary:"Replica Set (With Primary)",Sharded:"Sharded Cluster",LoadBalanced:"Using Load Balancer",Unknown:"Unknown"};e.exports={humanize:e=>p[e],isWritable:e=>m.includes(e),isReadable:(e,t)=>{switch(e){case l:return!1;case o:return d.includes(t);case r:return u.includes(t);default:return!0}},SINGLE:a,REPLICA_SET_NO_PRIMARY:o,REPLICA_SET_WITH_PRIMARY:r,SHARDED:i,LOAD_BALANCED:s,UNKNOWN:l,TOPOLOGY_TYPES:c,WRITABLE_TOPOLOGY_TYPES:m}}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={id:e,loaded:!1,exports:{}};return a[e].call(n.exports,n,n.exports,r),n.loaded=!0,n.exports}r.m=a,r.amdO={},e=[],r.O=(t,n,a,o)=>{if(!n){var i=1/0;for(d=0;d<e.length;d++){for(var[n,a,o]=e[d],s=!0,l=0;l<n.length;l++)(!1&o||i>=o)&&Object.keys(r.O).every((e=>r.O[e](n[l])))?n.splice(l--,1):(s=!1,o<i&&(i=o));if(s){e.splice(d--,1);var c=a();void 0!==c&&(t=c)}}return t}o=o||0;for(var d=e.length;d>0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[n,a,o]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},n=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var o=Object.create(null);r.r(o);var i={};t=t||[null,n({}),n([]),n(n)];for(var s=2&a&&e;("object"==typeof s||"function"==typeof s)&&!~t.indexOf(s);s=n(s))Object.getOwnPropertyNames(s).forEach((t=>i[t]=()=>e[t]));return i.default=()=>e,r.d(o,i),o},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var i,s=r;export{s as __webpack_require__};i={456:0},r.C=e=>{var t,n,{__webpack_esm_ids__:a,__webpack_esm_modules__:o,__webpack_esm_runtime__:s}=e,l=0;for(t in o)r.o(o,t)&&(r.m[t]=o[t]);for(s&&s(r);l<a.length;l++)n=a[l],r.o(i,n)&&i[n]&&i[n][0](),i[a[l]]=0;r.O()},r.O.j=e=>0===i[e],r.nc=void 0;import*as l from"./872.ef5d7ce50c99edff7074.mjs";r.C(l);import*as c from"./810.c52538ab1ee7a0892ac8.mjs";r.C(c);import*as d from"./260.22d04797e908a8464d8f.mjs";r.C(d);import*as u from"./65.0f0eb2e998535a138203.mjs";r.C(u);import*as m from"./318.e28eef3a6f052df2dd22.mjs";r.C(m);import*as p from"./568.5af0b00ce345e98d8b78.mjs";r.C(p);import*as h from"./641.18c979ce0458e2237d9c.mjs";r.C(h);import*as g from"./112.cc6e81f79429e73c45e2.mjs";r.C(g);import*as f from"./302.21e186c638bb98594c8f.mjs";r.C(f);import*as y from"./748.a00d5f64d2d9c20c710e.mjs";r.C(y);import*as b from"./128.2ec06394c7c1718c925f.mjs";r.C(b);import*as v from"./index-bde52cb3.b853042540744e5a5322.mjs";r.C(v);import*as C from"./index-0b9a48a6.ccf0681421db4308ee5e.mjs";r.C(C);var E=r.O(void 0,[872,810,260,65,318,568,641,112,302,748,128,354,923],(()=>r(49797)));const S=(E=r.O(E)).Y1,k=E.JV,w=E.qP,x=E.Cv;export{S as CompassExperimentationProvider,k as CompassWeb,w as ExperimentTestGroups,x as ExperimentTestNames};