(()=>{"use strict";var e={n:n=>{var r=n&&n.__esModule?()=>n.default:()=>n;return e.d(r,{a:r}),r},d:(n,r)=>{for(var t in r)e.o(r,t)&&!e.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:r[t]})},o:(e,n)=>Object.prototype.hasOwnProperty.call(e,n),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},n={};e.r(n),e.d(n,{getMessageBridgeFake:()=>i});const r=require("@k8slens/messaging"),t=require("@ogre-tools/fp"),s=require("lodash/fp"),a=require("@async-fn/jest");var o=e.n(a);const i=()=>{const e=new Map,n=new Map,a=new Set,i=async(e=(e=>e()))=>{const n=[...a.values()];a.clear(),await Promise.all(n.map((n=>e(n.resolve))))};let l=!1;const d=()=>l;return{involve:(...i)=>{i.forEach((i=>{(({di:e,requestListenersByDi:n})=>{const a=new Map;n.set(e,a),e.override(r.requestFromChannelInjectionToken,(()=>async(e,r)=>(0,t.pipeline)([...n.values()],(0,s.map)((n=>null==n?void 0:n.get(e.id))),(0,s.filter)((e=>!!e)),(n=>{if(0===n.length)throw new Error(`Tried to make a request but no listeners for channel "${e.id}" was discovered in any DIs`);if(n.length>1)throw new Error(`Tried to make a request but multiple listeners were discovered for channel "${e.id}" in multiple DIs.`);const r=n[0],[t]=r;return t}),(async e=>e(r))))),e.override(r.enlistRequestChannelListenerInjectionToken,(()=>e=>{a.has(e.channel.id)||a.set(e.channel.id,new Set);const n=a.get(e.channel.id);return null==n||n.add(e.handler),()=>{null==n||n.delete(e.handler)}}))})({di:i,requestListenersByDi:n}),(({di:e,messageListenersByDi:n,messagePropagationBuffer:t,getAsyncModeStatus:s})=>{const a=new Map;n.set(e,a),e.override(r.sendMessageToChannelInjectionToken,(()=>(r,a)=>{[...n.keys()].filter((n=>n!==e)).forEach((e=>{const i=n.get(e),l=null==i?void 0:i.get(r.id);if(l)if(s()){const e=o()();e().then((()=>{l.forEach((e=>e(a,{frameId:42,processId:42})))})),t.add(e)}else l.forEach((e=>e(a,{frameId:42,processId:42})))}))})),e.override(r.enlistMessageChannelListenerInjectionToken,(()=>e=>{a.has(e.channel.id)||a.set(e.channel.id,new Set);const n=a.get(e.channel.id);return null==n||n.add(e.handler),()=>{null==n||n.delete(e.handler)}}))})({di:i,messageListenersByDi:e,messagePropagationBuffer:a,getAsyncModeStatus:d})}))},messagePropagation:i,messagePropagationRecursive:async(e=(e=>e()))=>{for(;a.size;)await i(e)},setAsync:e=>{l=e}}};module.exports=n})();