@hyperfrontend/features 0.1.0 → 0.2.0

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.
Files changed (159) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/_dependencies/@hyperfrontend/builder/bundle/dependencies/index.cjs.js +1 -0
  3. package/_dependencies/@hyperfrontend/builder/bundle/dependencies/index.esm.js +1 -0
  4. package/_dependencies/@hyperfrontend/builder/bundle/dependencies/worker/index.cjs.js +1 -0
  5. package/_dependencies/@hyperfrontend/builder/bundle/dependencies/worker/index.esm.js +1 -0
  6. package/_dependencies/@hyperfrontend/builder/bundle/index.cjs.js +12 -10
  7. package/_dependencies/@hyperfrontend/builder/bundle/index.esm.js +14 -12
  8. package/_dependencies/@hyperfrontend/builder/bundle/rollup/index.cjs.js +2 -0
  9. package/_dependencies/@hyperfrontend/builder/bundle/rollup/index.esm.js +2 -0
  10. package/_dependencies/@hyperfrontend/builder/bundle/rollup/worker/index.cjs.js +2 -0
  11. package/_dependencies/@hyperfrontend/builder/bundle/rollup/worker/index.esm.js +2 -0
  12. package/_dependencies/@hyperfrontend/builder/index.cjs.js +87 -53
  13. package/_dependencies/@hyperfrontend/builder/index.esm.js +89 -55
  14. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/promise/index.cjs.js +4 -0
  15. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/promise/index.esm.js +3 -1
  16. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/reflect/index.cjs.js +10 -0
  17. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/reflect/index.esm.js +6 -0
  18. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/timers/index.cjs.js +5 -0
  19. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/timers/index.esm.js +5 -1
  20. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/typed-arrays/index.cjs.js +2 -2
  21. package/_dependencies/@hyperfrontend/immutable-api-utils/built-in-copy/typed-arrays/index.esm.js +2 -2
  22. package/_dependencies/@hyperfrontend/network-protocol/browser/channel/index.cjs.js +5 -19
  23. package/_dependencies/@hyperfrontend/network-protocol/browser/channel/index.esm.js +1 -15
  24. package/_dependencies/@hyperfrontend/network-protocol/browser/data/index.cjs.js +15 -23
  25. package/_dependencies/@hyperfrontend/network-protocol/browser/data/index.esm.js +7 -15
  26. package/_dependencies/@hyperfrontend/network-protocol/browser/packet/index.cjs.js +6 -14
  27. package/_dependencies/@hyperfrontend/network-protocol/browser/packet/index.esm.js +7 -15
  28. package/_dependencies/@hyperfrontend/network-protocol/browser/receiver/index.cjs.js +4 -18
  29. package/_dependencies/@hyperfrontend/network-protocol/browser/receiver/index.esm.js +1 -15
  30. package/_dependencies/@hyperfrontend/network-protocol/browser/sender/index.cjs.js +5 -19
  31. package/_dependencies/@hyperfrontend/network-protocol/browser/sender/index.esm.js +2 -16
  32. package/_dependencies/@hyperfrontend/network-protocol/browser/v1/index.cjs.js +16 -24
  33. package/_dependencies/@hyperfrontend/network-protocol/browser/v1/index.esm.js +7 -15
  34. package/_dependencies/@hyperfrontend/network-protocol/browser/v2/index.cjs.js +16 -24
  35. package/_dependencies/@hyperfrontend/network-protocol/browser/v2/index.esm.js +7 -15
  36. package/_dependencies/@hyperfrontend/network-protocol/node/channel/index.cjs.js +3 -17
  37. package/_dependencies/@hyperfrontend/network-protocol/node/channel/index.esm.js +1 -15
  38. package/_dependencies/@hyperfrontend/network-protocol/node/data/index.cjs.js +6 -14
  39. package/_dependencies/@hyperfrontend/network-protocol/node/data/index.esm.js +7 -15
  40. package/_dependencies/@hyperfrontend/network-protocol/node/packet/index.cjs.js +6 -14
  41. package/_dependencies/@hyperfrontend/network-protocol/node/packet/index.esm.js +7 -15
  42. package/_dependencies/@hyperfrontend/network-protocol/node/receiver/index.cjs.js +3 -17
  43. package/_dependencies/@hyperfrontend/network-protocol/node/receiver/index.esm.js +1 -15
  44. package/_dependencies/@hyperfrontend/network-protocol/node/sender/index.cjs.js +2 -16
  45. package/_dependencies/@hyperfrontend/network-protocol/node/sender/index.esm.js +2 -16
  46. package/_dependencies/@hyperfrontend/network-protocol/node/v1/index.cjs.js +6 -14
  47. package/_dependencies/@hyperfrontend/network-protocol/node/v1/index.esm.js +7 -15
  48. package/_dependencies/@hyperfrontend/network-protocol/node/v2/index.cjs.js +6 -14
  49. package/_dependencies/@hyperfrontend/network-protocol/node/v2/index.esm.js +7 -15
  50. package/_dependencies/@hyperfrontend/nexus/index.cjs.js +49 -19
  51. package/_dependencies/@hyperfrontend/nexus/index.esm.js +49 -19
  52. package/_dependencies/@hyperfrontend/project-scope/core/fs/index.cjs.js +62 -0
  53. package/_dependencies/@hyperfrontend/project-scope/core/fs/index.esm.js +60 -2
  54. package/_shared/generators/feature/generate-feature-module/index.esm.js +11 -6
  55. package/_shared/generators/metadata/generate-metadata/index.esm.js +1 -0
  56. package/_shared/shared/control/index.cjs.js +12 -2
  57. package/_shared/shared/control/index.esm.js +12 -2
  58. package/_shared/shared/request/index.cjs.js +91 -0
  59. package/_shared/shared/request/index.esm.js +88 -0
  60. package/_shared/shared/shutdown/index.esm.js +12 -0
  61. package/bin/hf.js +643 -70
  62. package/bundle/host/index.iife.js +290 -4041
  63. package/bundle/host/index.iife.min.js +1 -1
  64. package/bundle/host/index.umd.js +290 -4041
  65. package/bundle/host/index.umd.min.js +1 -1
  66. package/bundle/hostee/index.iife.js +215 -2893
  67. package/bundle/hostee/index.iife.min.js +1 -1
  68. package/bundle/hostee/index.umd.js +215 -2893
  69. package/bundle/hostee/index.umd.min.js +1 -1
  70. package/cli/args.d.ts +2 -0
  71. package/cli/args.d.ts.map +1 -1
  72. package/cli/commands/build.d.ts +8 -5
  73. package/cli/commands/build.d.ts.map +1 -1
  74. package/cli/commands/dev.d.ts +7 -2
  75. package/cli/commands/dev.d.ts.map +1 -1
  76. package/cli/config/resolve.d.ts +3 -1
  77. package/cli/config/resolve.d.ts.map +1 -1
  78. package/cli/index.cjs.js +643 -70
  79. package/cli/index.d.ts +21 -10
  80. package/cli/index.esm.js +591 -60
  81. package/cli/usage.d.ts +1 -1
  82. package/cli/usage.d.ts.map +1 -1
  83. package/generators/feature/generate-feature-module.d.ts.map +1 -1
  84. package/generators/index.cjs.js +435 -42
  85. package/generators/index.d.ts +9 -8
  86. package/generators/index.esm.js +404 -30
  87. package/generators/metadata/generate-metadata.d.ts +4 -4
  88. package/generators/metadata/generate-metadata.d.ts.map +1 -1
  89. package/generators/shell/connector-types.d.ts +19 -0
  90. package/generators/shell/connector-types.d.ts.map +1 -0
  91. package/generators/shell/generate-shell.d.ts +5 -4
  92. package/generators/shell/generate-shell.d.ts.map +1 -1
  93. package/generators/shell/schema-type.d.ts +20 -0
  94. package/generators/shell/schema-type.d.ts.map +1 -0
  95. package/generators/shell/source-literal.d.ts +28 -0
  96. package/generators/shell/source-literal.d.ts.map +1 -1
  97. package/host/create-shell.d.ts +4 -1
  98. package/host/create-shell.d.ts.map +1 -1
  99. package/host/display-modes/dialog.d.ts +1 -1
  100. package/host/display-modes/dialog.d.ts.map +1 -1
  101. package/host/display-modes/embedded.d.ts +1 -1
  102. package/host/display-modes/embedded.d.ts.map +1 -1
  103. package/host/index.cjs.js +150 -30
  104. package/host/index.d.ts +53 -38
  105. package/host/index.d.ts.map +1 -1
  106. package/host/index.esm.js +129 -9
  107. package/host/lifecycle.d.ts.map +1 -1
  108. package/host/plugins.d.ts +1 -34
  109. package/host/plugins.d.ts.map +1 -1
  110. package/host/types.d.ts +49 -0
  111. package/host/types.d.ts.map +1 -1
  112. package/hostee/index.cjs.js +54 -9
  113. package/hostee/index.d.ts +41 -1
  114. package/hostee/index.d.ts.map +1 -1
  115. package/hostee/index.esm.js +51 -6
  116. package/hostee/lifecycle.d.ts.map +1 -1
  117. package/hostee/types.d.ts +40 -0
  118. package/hostee/types.d.ts.map +1 -1
  119. package/index.cjs.js +32 -1
  120. package/index.d.ts +89 -3
  121. package/index.d.ts.map +1 -1
  122. package/index.esm.js +32 -1
  123. package/nx/executors/build/index.cjs.js +14975 -137
  124. package/nx/executors/build/index.esm.js +14935 -115
  125. package/nx/executors/serve/executor.d.ts.map +1 -1
  126. package/nx/executors/serve/index.cjs.js +6594 -80
  127. package/nx/executors/serve/index.esm.js +6529 -44
  128. package/nx/generators/feature/index.cjs.js +8751 -108
  129. package/nx/generators/feature/index.esm.js +8711 -81
  130. package/package.json +15 -5
  131. package/server/debug-ui/index.d.ts +2 -0
  132. package/server/debug-ui/index.d.ts.map +1 -0
  133. package/server/debug-ui/index.html +15 -0
  134. package/server/debug-ui/index.iife.js +427 -0
  135. package/server/debug-ui/index.iife.min.js +1 -0
  136. package/server/dev-server.d.ts.map +1 -1
  137. package/server/index.cjs.js +78 -10
  138. package/server/index.esm.js +78 -11
  139. package/server/module-dir.d.ts +17 -0
  140. package/server/module-dir.d.ts.map +1 -0
  141. package/server/module-dir.stub.d.ts +15 -0
  142. package/server/module-dir.stub.d.ts.map +1 -0
  143. package/shared/contract.d.ts +1 -1
  144. package/shared/contract.d.ts.map +1 -1
  145. package/shared/control.d.ts +4 -0
  146. package/shared/control.d.ts.map +1 -1
  147. package/shared/invert-contract.d.ts +20 -0
  148. package/shared/invert-contract.d.ts.map +1 -0
  149. package/shared/request.d.ts +68 -0
  150. package/shared/request.d.ts.map +1 -0
  151. package/{nx/shared → shared}/shutdown.d.ts +3 -2
  152. package/shared/shutdown.d.ts.map +1 -0
  153. package/shared/types.d.ts +72 -1
  154. package/shared/types.d.ts.map +1 -1
  155. package/_shared/nx/shared/context/index.cjs.js +0 -18
  156. package/_shared/nx/shared/context/index.esm.js +0 -16
  157. package/nx/shared/shutdown.d.ts.map +0 -1
  158. package/server/debug-ui/bootstrap.d.ts +0 -2
  159. package/server/debug-ui/bootstrap.d.ts.map +0 -1
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).HyperfrontendFeaturesHost={})}(this,function(e){"use strict";const t=globalThis.Object,n=globalThis.Reflect,r=t.prototype,o=r.hasOwnProperty,i=r.toString,a=t.freeze,s=t.keys,c=t.entries,u=t.assign,d=t.defineProperty,l=t.setPrototypeOf,f=(e,t)=>n.apply(o,e,[t]),p=a({Embedded:"embedded",Dialog:"dialog",Popup:"popup",Standalone:"standalone"}),g=globalThis.Error,m=globalThis.Reflect,y=(e,t)=>m.construct(g,[e,t]),h=globalThis.Math,v=h.abs,b=h.floor,C=h.round,w=h.sin,E=h.random;function $(e){return function(e){const t=1e4*w(e);return t-b(t)}(e.getTime())}function N(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*E()|0;return("x"===e?t:3&t|8).toString(16)})}function S(e){return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/.test(e)}const I="nexus",T={INVALID_REQUEST:`[${I}] invalid-request`,REQUEST_CONNECTION:`[${I}] connection-request`,CANCEL_CONNECTION:`[${I}] connection-request-cancelled`,CANCEL_CONNECTION_ACKNOWLEDGED:`[${I}] connection-request-cancelled-acknowledged`,ACCEPT_CONNECTION:`[${I}] connection-request-accepted`,DENY_CONNECTION:`[${I}] connection-request-denied`,CLOSE_CONNECTION:`[${I}] connection-closed`,CLOSE_CONNECTION_ACKNOWLEDGED:`[${I}] connection-closed-acknowledged`,DESTROY_CONNECTION:`[${I}] connection-destroyed`,OPEN_CONNECTION:`[${I}] connection-opened`,NEW_MESSAGE:`[${I}] new-message`},A=e=>"contract"in e,O=e=>(t,n)=>{const r={type:T.ACCEPT_CONNECTION,processId:t,senderId:e.getBrokerId(),contract:e.getContract()};return a(n?{...r,security:n}:r)},x=e=>t=>a({type:T.CANCEL_CONNECTION,processId:t,senderId:e.getBrokerId()}),k=e=>t=>a({type:T.CLOSE_CONNECTION,processId:t,senderId:e.getBrokerId()}),L=e=>(t,n)=>a({type:T.DENY_CONNECTION,processId:t,senderId:e.getBrokerId(),error:n}),P=e=>()=>a({type:T.DESTROY_CONNECTION,senderId:e.getBrokerId()}),M=e=>(t,n)=>a({type:T.INVALID_REQUEST,processId:t,senderId:e.getBrokerId(),error:n}),R=e=>t=>a({type:T.NEW_MESSAGE,senderId:e.getBrokerId(),data:t}),q=e=>(t,n)=>{const r={type:T.OPEN_CONNECTION,processId:t,senderId:e.getBrokerId()};return a(n?{...r,security:n}:r)},_=e=>(t,n)=>{const r={type:T.REQUEST_CONNECTION,processId:t,senderId:e.getBrokerId(),contract:e.getContract()};return a(n?{...r,security:n}:r)},D=globalThis.Map,j=globalThis.Reflect,B=e=>j.construct(D,e?[e]:[]),U=e=>()=>{e.clear()},W=e=>t=>{const n=N();return e.set(n,t),n},F=e=>t=>e.get(t),z=e=>t=>{e.delete(t)},V=globalThis.Array,G=V.isArray,K=V.from,H=globalThis.Set,Y=globalThis.Reflect,Q=e=>Y.construct(H,e?[e]:[]),J=globalThis.WeakMap,Z=globalThis.Reflect;function X(){const e=Z.construct(J,t?[t]:[]);var t;const n=B(),r=B(),o=Q();return a({add:t=>{if(!(t&&t.id&&t.name&&t.target))throw y("Invalid channel: must have id, name, and target properties");o.add(t),e.set(t.target,t),n.set(t.id,t),r.set(t.name,t)},remove:t=>{t&&(o.delete(t),t.target&&e.delete(t.target),t.id&&n.delete(t.id),t.name&&r.delete(t.name))},getByWindow:t=>e.get(t),getById:e=>n.get(e),getByName:e=>r.get(e),getAll:()=>K(o),clear:()=>{o.clear(),n.clear(),r.clear()}})}function ee(e){if(!e)throw y("Contract cannot be null or undefined");if(null===(t=e)||"object"!=typeof t||G(t))throw y("Contract must be an object");var t;const n=e;if((G(n.emitted)?n.emitted.length:0)+(G(n.accepted)?n.accepted.length:0)===0)throw y("Contract must contain at least one accepted or emitted action");if(G(n.emitted))for(const e of n.emitted)if(!e||"string"!=typeof e.type||""===e.type.toString().trim())throw y("Contract action types must be non-empty strings");if(G(n.accepted))for(const e of n.accepted)if(!e||"string"!=typeof e.type||""===e.type.toString().trim())throw y("Contract action types must be non-empty strings")}const te=["none","error","warn","log","info","debug"],ne={error:4,warn:3,log:2,info:1,debug:0};function re(e){return te.includes(e)}const oe=[],ie=[{classRef:Array,instantiate:()=>[],getKeys:e=>s(e),read:(e,t)=>e[t],write:(e,t,n)=>e[n]=t,remove:(e,t)=>e.splice(t,1)},{classRef:Object,instantiate:()=>({}),getKeys:e=>s(e),read:(e,t)=>e[t],write:(e,t,n)=>e[n]=t,remove:(e,t)=>delete e[t]}],ae=(e,t)=>{"array"===t&&(t=Array.name),"object"===t&&(t=Object.name);const n=ie.find(({classRef:e})=>t===e.name);return void 0===n?[]:n.getKeys(e)},se=e=>{if(null===e)return"null";const t=typeof e;if("object"===t){if(G(e))return"array";for(const t of oe)if(e instanceof t)return t.name}return t},ce=e=>ie.map(({classRef:e})=>{const t=e.name;return t===Object.name?"object":t===Array.name?"array":t}).includes(e),ue=globalThis.Date,de=globalThis.Reflect;function le(...e){return de.construct(ue,e)}const fe=ue.now,pe=ue.parse,ge=ue.UTC,me=(e,t)=>`Expected ${e} to be ${t}.`,ye=(e,t,n,r,o,i,a,s)=>{const c=e(n,r,i,o,a);if(n.exitEarly)return s;c&&t(r,i,o,s,a);const u=se(i);if(!ce(u))return s;return ae(i,u).forEach(r=>{const{nextPath:a,nextValue:c}=((e,t,n)=>({nextPath:[...e,t],nextValue:n[t]}))(o,r,i);ye(e,t,n,r,a,c,i,s)}),s},he=(e=>(t,n,r,o)=>((e,t,n,r,o)=>{if("function"!=typeof n)throw y(me("callback","a function"));if("object"!=typeof r||G(r))throw y(me("options","an object"));if(!G(r.depth))throw y(me("options.depth","an array"));const[i,s]=r.depth;if(void 0!==i&&"number"!=typeof i)throw y(me("options.depth.0","a number"));if(void 0!==s){const e=typeof s;if(!["number","string"].includes(e))throw y(me("options.depth.1","a number or a string"));if("string"===e&&"*"!==s)throw y("Only valid string value in options.depth.1 is '*'.")}const c={depth:a([r.depth[0]??0,r.depth[1]??"*"]),exitEarly:!1};return ye(t,n,c,"",[],e,void 0,o)})(t,e,n,r??{depth:[0,"*"]},o??{}))((e,t,n,r)=>!(r.length<e.depth[0]||e.depth[1]<r.length));const ve=(...e)=>{};function be(e,t=ve,n=ve,r=ve,o=ve){if(Ee(e))throw y($e("error"));if(Ee(t))throw y($e("warn"));if(Ee(n))throw y($e("log"));if(Ee(r))throw y($e("info"));if(Ee(o))throw y($e("debug"));const{setLogLevel:i,getLogLevel:s,shouldLog:c}=function(e="error"){if(!re(e))throw y("Cannot create log level configuration with a valid default log level");const t={level:e};return a({getLogLevel:()=>t.level,setLogLevel:e=>{if(!re(e))throw y(`Cannot set value '${e}' level. Expected levels are ${te}.`);t.level=e},shouldLog:e=>!("none"===t.level||"none"===e||!re(e))&&ne[e]>=ne[t.level]})}(),u=(e,t)=>{if(e===ve)return e;return function(e,t){return function(...n){if(t())return e(...n)}}((n=e,function(...e){try{n(...e)}catch{}}),()=>c(t));var n};return Ce({error:u(e,"error"),warn:u(t,"warn"),log:u(n,"log"),info:u(r,"info"),debug:u(o,"debug"),setLogLevel:i,getLogLevel:s},"")}function Ce(e,t){const n=t?`[${t}]`:"",r=e=>n?(...t)=>e(n,...t):e,o=a({error:r(e.error),warn:r(e.warn),log:r(e.log),info:r(e.info),debug:r(e.debug),setLogLevel:e.setLogLevel,getLogLevel:e.getLogLevel,channel:n=>Ce(e,t?`${t}:${n}`:n),timed:(e,t)=>function(e,t,n){const r=fe();try{const o=n(),i=fe()-r;return e.debug(`${t} completed in ${i}ms`),o}catch(n){const o=fe()-r;throw e.error(`${t} failed after ${o}ms: ${we(n)}`),n}}(o,e,t),timedAsync:(e,t)=>async function(e,t,n){const r=fe();try{const o=await n(),i=fe()-r;return e.debug(`${t} completed in ${i}ms`),o}catch(n){const o=fe()-r;throw e.error(`${t} failed after ${o}ms: ${we(n)}`),n instanceof Error&&n.stack&&e.debug(`Stack trace:\n${n.stack}`),n}}(o,e,t)});return o}function we(e){return e instanceof Error?e.message:String(e)}function Ee(e){return"function"!==se(e)&&e!==ve}function $e(e){return`Cannot create a logger when ${e} is not a function`}function Ne(e){const t=e;return"object"===se(t)&&!G(t)&&"function"===se(t.error)&&"function"===se(t.warn)&&"function"===se(t.log)&&"function"===se(t.info)&&"function"===se(t.debug)&&"function"===se(t.setLogLevel)&&"function"===se(t.getLogLevel)}const Se=globalThis.console,Ie=Se.log.bind(Se),Te=Se.warn.bind(Se),Ae=Se.error.bind(Se),Oe=Se.info.bind(Se),xe=Se.debug.bind(Se);Se.trace.bind(Se),Se.dir.bind(Se),Se.table.bind(Se),Se.assert.bind(Se),Se.clear.bind(Se),Se.count.bind(Se),Se.countReset.bind(Se),Se.group.bind(Se),Se.groupCollapsed.bind(Se),Se.groupEnd.bind(Se),Se.time.bind(Se),Se.timeEnd.bind(Se),Se.timeLog.bind(Se);const ke=be(Ae,Te,Ie,Oe,xe),Le="[nexus]";const Pe=e=>{const{level:t="error",prefix:n=Le,customLogger:r}=e;if(r)return r;ke.setLogLevel("debug");const o=be((...e)=>ke.error(n,...e),(...e)=>ke.warn(n,...e),(...e)=>ke.log(n,...e),(...e)=>ke.info(n,...e),(...e)=>ke.debug(n,...e));return o.setLogLevel(t),o},Me=globalThis.WeakSet,Re=globalThis.Reflect;function qe(e,t){if(!ce(se(e)))return!1;const n=e;if(t.has(n))return!0;t.add(n);const r=se(e),o=ae(e,r);for(const n of o)if(qe(e[n],t))return!0;return!1}function _e(e,t){if(qe(e,Re.construct(Me,n?[n]:[])))throw y(`Circular reference detected in parameter "${t}"`);var n}const De=a({origin:"*",queueMessages:!0,debug:!1,contract:void 0});function je(e,t=!0){if(e.getState().active){if(e.updateState({active:!1}),t){const t=e.createProcess(),n=e.actions.closeConnection(t);e.sendAction(n)}e.notifyEvent("close")}}function Be(e,t){const n=function(e,t){return a({...e,queuedMessages:a([...e.queuedMessages,t])})}(e.getState(),t);e.updateState(n)}const Ue=Q([T.REQUEST_CONNECTION,T.ACCEPT_CONNECTION,T.DENY_CONNECTION,T.CANCEL_CONNECTION,T.CANCEL_CONNECTION_ACKNOWLEDGED,T.OPEN_CONNECTION]);function We(e,t){const n=e.getState();if(!t||"string"!=typeof t.type)throw y("Action must contain a 'type' property that is a non-empty string.");const r=n.securityTransport,o=Ue.has(t.type);r&&r.isReady()&&!o?r.send(t):n.target.postMessage(t,"*")}function Fe(e,t){const n=e.getState();if(!n.active){if(n.queueMessages)return void Be(e,t);throw y(`Cannot send message. Channel ${n.name} is not open.`)}const r=n.securityTransport,o=n.negotiatedProtocol;if(r&&"none"!==o&&!r.isReady()){if(n.queueMessages)return void Be(e,t);throw y(`Cannot send message. Security transport for channel ${n.name} is not ready.`)}if(!(n.contract?.emitted.map(e=>e.type)??[]).includes(t.type))throw y(`Cannot send message to ${n.name} channel. Message type '${t.type}' is not in the emitted actions of channel contract.`);const i=e.actions.newMessage(t.data);We(e,i),e.notifyMessage(t)}function ze(e){const t=e.getState();for(const n of t.queuedMessages)try{Fe(e,n)}catch(e){t.logger&&t.logger.error("Failed to send queued message:",e)}const n=function(e){return a({...e,queuedMessages:a([])})}(t);e.updateState(n)}function Ve(e,t,n){let r;if("string"==typeof t&&"function"==typeof n){const e=t,o=n;r=(t,n,r)=>{t===e&&o(n,r)}}else{if("function"!=typeof t)throw y("Expected callback function.");r=t}if("function"!=typeof r)throw y("Expected callback function.");const o=[...e.getState().eventSubscriptions,r];return e.updateState({eventSubscriptions:o}),()=>{const t=e.getState().eventSubscriptions.filter(e=>e!==r);e.updateState({eventSubscriptions:t})}}function Ge(e,t,n){const r=e.getState();r.logger&&function(e,t,n){e.debug("Channel event:",t,n)}(r.logger,t,n);const o={id:r.id,name:r.name,active:r.active,origin:r.origin,connectTimestamp:r.connectTimestamp,contract:r.contract,queuedMessagesCount:r.queuedMessages.length};for(const e of r.eventSubscriptions)try{e(t,n,o)}catch(e){r.logger&&r.logger.error(`Error in event handler for '${t}' event:`,e)}}function Ke(e,t){const n=e.getState();for(const e of n.messageSubscriptions)try{e(t)}catch(e){n.logger&&n.logger.error(`Error in message handler for '${t.type}' message:`,e)}}function He(e,t){_e(e.settings,"config.settings");const n={...De,...e.settings};let r=function(e,t,n){return a({id:N(),name:e,target:t,origin:null,active:!1,connectTimestamp:null,contract:n.contract??null,acceptedActions:a([]),queuedMessages:a([]),eventSubscriptions:a([]),messageSubscriptions:a([]),scheduledActivation:null,queueMessages:n.queueMessages??!0,logger:n.logger??null,brokerManaged:n.brokerManaged??!1,readyToConnect:!1,negotiatedProtocol:null,securityReady:!1,securityTransport:null,pendingSecurityRequest:null})}(e.name,e.target,n);const o={getState:()=>r,updateState:e=>{r={...r,...e}},sendAction:e=>{We(o,e)},createProcess:()=>t.processManager.create(o),removeProcess:e=>{t.processManager.remove(e)},notifyEvent:(e,t)=>{Ge(o,e,t)},notifyMessage:e=>{Ke(o,e)},actions:t.actions,cleanup:t.cleanup},i={id:r.id,name:r.name,target:r.target,getId:()=>r.id,getName:()=>r.name,getTarget:()=>r.target,isActive:()=>r.active,toJSON:()=>({id:r.id,name:r.name,active:r.active,origin:r.origin,connectTimestamp:r.connectTimestamp,contract:r.contract,queuedMessagesCount:r.queuedMessages.length}),connect:()=>function(e){const t=e.getState();if(t.active)return;if(t.readyToConnect||e.updateState({readyToConnect:!0}),t.connectTimestamp||e.updateState({connectTimestamp:fe()}),t.scheduledActivation){const[n,r,o,i]=t.scheduledActivation;e.updateState({id:n,origin:r,contract:o,acceptedActions:o.accepted.map(e=>e.type),active:!0,scheduledActivation:null});const a=e.actions.acceptConnection(i);return e.sendAction(a),void e.notifyEvent("open",{id:n,origin:r})}if(t.brokerManaged&&t.contract)return e.updateState({origin:"*",active:!0,acceptedActions:t.contract.accepted.map(e=>e.type)}),e.notifyEvent("open",{id:t.id,origin:"*"}),void ze(e);const n=e.createProcess(),r=e.actions.requestConnection(n);e.sendAction(r)}(o),disconnect:e=>je(o,e),cancel:e=>function(e,t=!0){if(e.getState().active)je(e,t);else{if(t){const t=e.createProcess(),n=e.actions.cancelConnection(t);e.sendAction(n)}e.notifyEvent("cancel")}}(o,e),destroy:e=>function(e,t=!0){if(e.updateState({active:!1}),t){const t=e.actions.destroyConnection();e.sendAction(t)}e.cleanup&&e.cleanup()}(o,e),send:(e,t)=>Fe(o,{type:e,data:t}),sendAction:e=>We(o,e),on:(e,t)=>"string"==typeof e&&"function"==typeof t?Ve(o,e,t):Ve(o,e),onMessage:e=>function(e,t){if("function"!=typeof t)throw y("Expected callback function.");const n=[...e.getState().messageSubscriptions,t];return e.updateState({messageSubscriptions:n}),()=>{const n=e.getState().messageSubscriptions.filter(e=>e!==t);e.updateState({messageSubscriptions:n})}}(o,e),activate:(e,t)=>{const n=function(e,t,n){const r=(n.accepted||[]).map(e=>e.type);return a({...e,origin:t,active:!0,connectTimestamp:fe(),contract:n,acceptedActions:a(r),scheduledActivation:null})}(r,e,t);o.updateState(n)},isReadyToConnect:()=>r.readyToConnect||r.brokerManaged,scheduleActivation:(e,t,n,r)=>{o.updateState({scheduledActivation:[e,t,n,r]})},notifyEvent:(e,t)=>{Ge(o,e,t)},notifyMessage:e=>{Ke(o,e)},setPendingSecurityRequest:e=>{o.updateState({pendingSecurityRequest:e})},getPendingSecurityRequest:()=>r.pendingSecurityRequest,setNegotiatedProtocol:e=>{o.updateState({negotiatedProtocol:e})},getNegotiatedProtocol:()=>r.negotiatedProtocol,setSecurityTransport:e=>{o.updateState({securityTransport:e})},getSecurityTransport:()=>r.securityTransport,setSecurityReady:e=>{o.updateState({securityReady:e})},isSecurityReady:()=>r.securityReady};return a(i)}function Ye(e,t){return e.getByWindow(t)}function Qe(e,t){e.remove(t)}function Je(e,t,n,r,o,i,a={}){_e(a,"settings");const s=Ye(t,i);if(s)return s;const c=He({name:o,target:i,settings:{...a,contract:e.contract,logger:e.logger,brokerManaged:!0}},{actions:r,processManager:n,cleanup:()=>{Qe(t,c)}});return function(e,t){e.add(t)}(t,c),c}function Ze(e,t){return e.getById(t)}function Xe(e,t){if("object"==typeof t&&null!==t){return Ye(e,t)??null}if("string"==typeof t){const n=Ze(e,t)??function(e,t){return e.getByName(t)}(e,t);return n??null}return null}function et(e){return e.getAll()}function tt(e){return et(e).map(e=>e.toJSON())}const nt=a({whitelist:a([]),blacklist:a([]),contractExtension:!1,logLevel:"error"});function rt(e,t,n){try{const n=e(t);return Boolean(n)}catch(e){return n.error("Security policy threw an error:",e),!1}}function ot(e,t){const{state:n,processManager:r,logger:o}=e,i=t.data;if(!A(i))return;const a=i.processId,s=i.contract,c=i.security,u=r.get(a);if(!u)return;if(u.isActive())return;try{ee(s)}catch{return void u.sendAction({type:"[nexus] connection-request-cancelled",processId:a,senderId:n.id})}if(n.settings.securityPolicy){if(!rt(n.settings.securityPolicy,t,o))return void u.sendAction({type:"[nexus] connection-request-cancelled",processId:a,senderId:n.id})}let d;if(c){const e=c.negotiated;u.setNegotiatedProtocol(e),o.info(`${n.name} accepted security protocol: ${e}`),"none"===e&&u.setSecurityReady(!0),d={active:"none"!==e,protocol:e}}u.activate(t.origin,s),u.sendAction({type:"[nexus] connection-opened",processId:a,senderId:n.id,...d&&{security:d}}),r.remove(a),u.notifyEvent("open",{origin:t.origin,contract:s})}function it(e,t){const{state:n,registry:r,processManager:o}=e,i=t.data,a=i.senderId,s=i.processId,c=Ze(r,a)||o.get(s);c&&(c.cancel(!1),c.sendAction({type:"[nexus] connection-request-cancelled-acknowledged",processId:s,senderId:n.id}),o.remove(s),c.notifyEvent("cancel",{notify:!0}))}function at(e,t){const{processManager:n}=e,r=t.data.processId,o=n.get(r);o&&(n.remove(r),o.notifyEvent("cancel",{notify:!1}))}function st(e,t){const{state:n,registry:r,processManager:o}=e,i=t.data,a=i.senderId;if(!("processId"in i))return;const s=i.processId,c=Ze(r,a);c&&c.isActive()&&(c.disconnect(!1),c.sendAction({type:"[nexus] connection-closed-acknowledged",processId:s,senderId:n.id}),o.remove(s),c.notifyEvent("close",{notify:!0}))}function ct(e,t){const{processManager:n}=e,r=t.data.processId,o=n.get(r);o&&(n.remove(r),o.notifyEvent("close",{notify:!1}))}function ut(e,t){const{processManager:n}=e,r=t.data,o=r.processId,i=r.error,a=n.get(o);a&&(n.remove(o),a.notifyEvent("deny",{error:i,origin:t.origin}))}function dt(e,t){const{registry:n}=e,r=Ze(n,t.data.senderId);r&&r.destroy(!1)}function lt(e,t){const{processManager:n}=e,r=t.data;if(!(e=>"processId"in e)(r))return;const o=r.processId,i=n.get(o);if(!i)return;const a=r.error;i.notifyEvent("invalid",{reason:a,origin:t.origin})}var ft={$schema:"http://json-schema.org/draft-07/schema#",title:"Message",type:"object",required:["type"],properties:{type:{type:"string",minLength:1},data:{description:"Arbitrary message payload"},timestamp:{type:"number"}},additionalProperties:!0};const pt=globalThis.JSON,gt=pt.parse,mt=pt.stringify,yt=globalThis.Number,ht=globalThis.parseInt,vt=globalThis.isNaN,bt=globalThis.isFinite,Ct=yt.isInteger,wt=ht,Et=vt,$t=bt;function Nt(e,t,n=!0,r=!1,o){const i=B();if(e.definitions)for(const[t,n]of c(e.definitions))i.set(`#/definitions/${t}`,n);return{path:"",errors:[],rootSchema:e,definitions:i,collectAllErrors:n,strictPatterns:r,patternSafetyChecker:o,validate:t}}function St(e,t){const n=String(t).replace(/~/g,"~0").replace(/\//g,"~1");return{...e,path:`${e.path}/${n}`}}function It(e,t,n,r,o){e.errors.push({message:t,path:e.path||"/",instance:n,code:r,params:o})}function Tt(e){return e.collectAllErrors||0===e.errors.length}function At(e,t){if(e===t)return!0;if(null===e||null===t)return!1;if(typeof e!=typeof t)return!1;if("object"==typeof e){if(G(e)&&G(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!At(e[n],t[n]))return!1;return!0}if(G(e)||G(t))return!1;const n=s(e),r=s(t);if(n.length!==r.length)return!1;for(const r of n){if(!f(t,r))return!1;if(!At(e[r],t[r]))return!1}return!0}return!1}const Ot=globalThis.RegExp,xt=globalThis.Reflect,kt=(e,t)=>xt.construct(Ot,[e,t]),Lt=globalThis.URL,Pt=globalThis.Reflect,Mt=(e,t)=>Pt.construct(Lt,[e,t]);"function"==typeof Lt.createObjectURL&&Lt.createObjectURL.bind(Lt),"function"==typeof Lt.revokeObjectURL&&Lt.revokeObjectURL.bind(Lt);const Rt={"date-time":e=>{if(!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/.test(e))return!1;const t=pe(e);return!Et(t)},date:e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;const[t,n,r]=e.split("-").map(Number),o=le(ge(t,n-1,r));return o.getUTCFullYear()===t&&o.getUTCMonth()===n-1&&o.getUTCDate()===r},time:e=>{const t=e.match(/^(\d{2}):(\d{2}):(\d{2})/);if(!t)return!1;const n=Number(t[1]),r=Number(t[2]),o=Number(t[3]);if(n>23||r>59||o>59)return!1;const i=e.slice(8);return""===i||(!!i.match(/^\.\d{1,9}$/)||(!!i.match(/^(Z|[+-]\d{2}:\d{2})$/)||!!i.match(/^\.\d{1,9}(Z|[+-]\d{2}:\d{2})$/)))},email:e=>/^[^\s@]+@[^\s@.]+\.[^\s@.]+$/.test(e),hostname:e=>{if(e.length>253||0===e.length)return!1;const t=e.split(".");for(const e of t){if(0===e.length||e.length>63)return!1;if(!/^[a-zA-Z0-9]$/.test(e[0]))return!1;if(e.length>1&&!/^[a-zA-Z0-9]$/.test(e[e.length-1]))return!1;for(let t=1;t<e.length-1;t++)if(!/^[a-zA-Z0-9-]$/.test(e[t]))return!1}return!0},ipv4:e=>{const t=e.split(".");return 4===t.length&&t.every(e=>{const t=wt(e,10);return!Et(t)&&t>=0&&t<=255&&e===String(t)})},ipv6:e=>{if("::"===e)return!0;if(!e.includes("::")){const t=e.split(":");if(8!==t.length)return!1;const n=/^[0-9a-fA-F]{1,4}$/;return t.every(e=>n.test(e))}const t=e.split("::");if(2!==t.length)return!1;const n=t[0]?t[0].split(":").filter(Boolean):[],r=t[1]?t[1].split(":").filter(Boolean):[];if(n.length+r.length>7)return!1;const o=/^[0-9a-fA-F]{1,4}$/;return n.every(e=>o.test(e))&&r.every(e=>o.test(e))},uri:e=>{try{return Mt(e),!0}catch{return!1}},"uri-reference":e=>{try{return Mt(e,"http://example.com"),!0}catch{return!1}},uuid:e=>/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(e),regex:e=>{try{return kt(e),!0}catch{return!1}},"json-pointer":e=>{if(""===e)return!0;if(!e.startsWith("/"))return!1;const t=e.slice(1).split("/"),n=/^([^/~]|~[01])*$/;return t.every(e=>n.test(e))}};function qt(e,t,n){const r=t.items;if(void 0===r)return!0;let o=!0;if(G(r)){for(let t=0;t<r.length&&t<e.length;t++){const i=r[t];if(!i)continue;const a=St(n,t);if(!n.validate(e[t],i,a)&&(o=!1,!Tt(n)))return!1}e.length>r.length&&(function(e,t,n,r){const o=t.additionalItems;if(void 0===o)return!0;let i=!0;if(!1===o)e.length>r&&(It(n,`Array has too many items. Expected at most ${r}, got ${e.length}`,e,"additionalItems",{limit:r,actual:e.length}),i=!1);else if("object"==typeof o)for(let t=r;t<e.length;t++){const r=St(n,t);if(!n.validate(e[t],o,r)&&(i=!1,!Tt(n)))return!1}return i}(e,t,n,r.length)||(o=!1))}else for(let t=0;t<e.length;t++){const i=St(n,t);if(!n.validate(e[t],r,i)&&(o=!1,!Tt(n)))return!1}return o}const _t={string:e=>"string"==typeof e,number:e=>"number"==typeof e&&$t(e),integer:e=>"number"==typeof e&&$t(e)&&Ct(e),boolean:e=>"boolean"==typeof e,array:e=>G(e),object:e=>null!==e&&"object"==typeof e&&!G(e),null:e=>null===e};function Dt(e,t,n){const r=t.type;if(void 0===r)return!0;const o=G(r)?r:[r];for(const t of o){const n=_t[t];if(n&&n(e))return!0;if("number"===t&&_t.integer?.(e))return!0}const i=function(e){if(null===e)return"null";if(G(e))return"array";const t=typeof e;if("number"===t){const t=e;return $t(t)&&Ct(t)?"integer":"number"}return t}(e);return It(n,`Expected type ${o.join(" or ")} but got ${i}`,e,"type",{expected:o,actual:i}),!1}function jt(e,t,n){const r=Nt(t,Bt,!0,!1,void 0);return{valid:Bt(e,t,r),errors:r.errors}}function Bt(e,t,n){if(t.$ref){const r=function(e,t){const n=t.definitions.get(e);if(n)return n;if(!e.startsWith("#"))return;if("#"===e)return t.rootSchema;const r=e.slice(1);if(!r.startsWith("/"))return;const o=r.split("/").slice(1).map(e=>e.replace(/~1/g,"/").replace(/~0/g,"~"));let i=t.rootSchema;for(const e of o){if(null===i||"object"!=typeof i)return;i=i[e]}if(i&&"object"==typeof i){const n=i;return t.definitions.set(e,n),n}}(t.$ref,n);return!r||Bt(e,r,n)}let r=!0;if(!Dt(e,t,n)&&(r=!1,!Tt(n)))return!1;if(!function(e,t,n){if(!t.enum)return!0;for(const n of t.enum)if(At(e,n))return!0;return It(n,`Value must be one of: ${t.enum.map(e=>mt(e)).join(", ")}`,e,"enum",{allowedValues:t.enum}),!1}(e,t,n)&&(r=!1,!Tt(n)))return!1;if("string"==typeof e){if(!function(e,t,n){let r=!0;if(void 0!==t.minLength&&e.length<t.minLength&&(It(n,`String must be at least ${t.minLength} characters, got ${e.length}`,e,"minLength",{limit:t.minLength,actual:e.length}),r=!1,!Tt(n)))return!1;if(void 0!==t.maxLength&&e.length>t.maxLength&&(It(n,`String must be at most ${t.maxLength} characters, got ${e.length}`,e,"maxLength",{limit:t.maxLength,actual:e.length}),r=!1,!Tt(n)))return!1;if(void 0!==t.pattern){if(n.patternSafetyChecker){const o=n.patternSafetyChecker(t.pattern);if(!o.safe)return It(n,`Unsafe regex pattern: ${o.reason??"Pattern may cause ReDoS"}`,e,"pattern",{pattern:t.pattern,reason:o.reason}),r=!1,!!Tt(n)&&r}try{if(!kt(t.pattern).test(e)&&(It(n,`String does not match pattern: ${t.pattern}`,e,"pattern",{pattern:t.pattern}),r=!1,!Tt(n)))return!1}catch(o){if(n.strictPatterns&&(It(n,`Invalid regex pattern: ${t.pattern}`,e,"pattern",{pattern:t.pattern,error:o instanceof Error?o.message:"Invalid regex"}),r=!1,!Tt(n)))return!1}}return r}(e,t,n)&&(r=!1,!Tt(n)))return!1;if(!function(e,t,n){if(!t.format)return!0;const r=Rt[t.format];return!r||!!r(e)||(It(n,`String does not match format '${t.format}'`,e,"format",{format:t.format}),!1)}(e,t,n)&&(r=!1,!Tt(n)))return!1}if("number"==typeof e&&!function(e,t,n){let r=!0;if(void 0!==t.minimum){const o=!0===t.exclusiveMinimum;if((o?e<=t.minimum:e<t.minimum)&&(It(n,`Number must be ${o?"greater than":"at least"} ${t.minimum}, got ${e}`,e,"minimum",{limit:t.minimum,exclusive:o,actual:e}),r=!1,!Tt(n)))return!1}if(void 0!==t.maximum){const o=!0===t.exclusiveMaximum;if((o?e>=t.maximum:e>t.maximum)&&(It(n,`Number must be ${o?"less than":"at most"} ${t.maximum}, got ${e}`,e,"maximum",{limit:t.maximum,exclusive:o,actual:e}),r=!1,!Tt(n)))return!1}if(void 0!==t.multipleOf&&t.multipleOf>0){const o=v(e%t.multipleOf),i=1e-10;if(o>i&&t.multipleOf-o>i&&(It(n,`Number must be a multiple of ${t.multipleOf}, got ${e}`,e,"multipleOf",{multipleOf:t.multipleOf,actual:e}),r=!1,!Tt(n)))return!1}return r}(e,t,n)&&(r=!1,!Tt(n)))return!1;if(G(e)){if(!qt(e,t,n)&&(r=!1,!Tt(n)))return!1;if(!function(e,t,n){let r=!0;if(void 0!==t.minItems&&e.length<t.minItems&&(It(n,`Array must have at least ${t.minItems} items, got ${e.length}`,e,"minItems",{limit:t.minItems,actual:e.length}),r=!1,!Tt(n)))return!1;if(void 0!==t.maxItems&&e.length>t.maxItems&&(It(n,`Array must have at most ${t.maxItems} items, got ${e.length}`,e,"maxItems",{limit:t.maxItems,actual:e.length}),r=!1,!Tt(n)))return!1;if(!0===t.uniqueItems)for(let t=0;t<e.length;t++)for(let o=t+1;o<e.length;o++)if(At(e[t],e[o])&&(It(n,`Array items must be unique. Duplicate found at indices ${t} and ${o}`,e,"uniqueItems"),r=!1,!Tt(n)))return!1;return r}(e,t,n)&&(r=!1,!Tt(n)))return!1}if(null!==e&&"object"==typeof e&&!G(e)){const o=e;if(!function(e,t,n){if(!t.properties)return!0;let r=!0;for(const[o,i]of c(t.properties))if(f(e,o)){const t=St(n,o);if(!n.validate(e[o],i,t)&&(r=!1,!Tt(n)))return!1}return r}(o,t,n)&&(r=!1,!Tt(n)))return!1;if(!function(e,t,n){if(!t.required)return!0;let r=!0;for(const o of t.required)if(!f(e,o)&&(It(n,`Missing required property: ${o}`,void 0,"required",{missing:o}),r=!1,!Tt(n)))return!1;return r}(o,t,n)&&(r=!1,!Tt(n)))return!1;if(!function(e,t,n){if(!t.patternProperties)return!0;let r=!0;const o=[];for(const[i,a]of c(t.patternProperties)){if(n.patternSafetyChecker){const t=n.patternSafetyChecker(i);if(!t.safe){if(It(n,`Unsafe regex pattern in patternProperties: ${t.reason??"Pattern may cause ReDoS"}`,e,"patternProperties",{pattern:i,reason:t.reason}),r=!1,!Tt(n))return!1;continue}}try{o.push({regex:kt(i),schema:a})}catch(t){if(n.strictPatterns&&(It(n,`Invalid regex pattern in patternProperties: ${i}`,e,"patternProperties",{pattern:i,error:t instanceof Error?t.message:"Invalid regex"}),r=!1,!Tt(n)))return!1}}for(const t of s(e))for(const{regex:i,schema:a}of o)if(i.test(t)){const o=St(n,t);if(!n.validate(e[t],a,o)&&(r=!1,!Tt(n)))return!1}return r}(o,t,n)&&(r=!1,!Tt(n)))return!1;if(!function(e,t,n){const r=t.additionalProperties;if(void 0===r)return!0;const o=Q();if(t.properties)for(const e of s(t.properties))o.add(e);const i=[];if(t.patternProperties)for(const e of s(t.patternProperties))if(!n.patternSafetyChecker||n.patternSafetyChecker(e).safe)try{i.push(kt(e))}catch{}let a=!0;for(const t of s(e))if(!o.has(t)&&!i.some(e=>e.test(t)))if(!1===r){if(It(n,`Additional property not allowed: ${t}`,e[t],"additionalProperties",{property:t}),a=!1,!Tt(n))return!1}else if("object"==typeof r){const o=St(n,t);if(!n.validate(e[t],r,o)&&(a=!1,!Tt(n)))return!1}return a}(o,t,n)&&(r=!1,!Tt(n)))return!1;if(!function(e,t,n){let r=!0;const o=s(e).length;return!(void 0!==t.minProperties&&o<t.minProperties&&(It(n,`Object must have at least ${t.minProperties} properties, got ${o}`,e,"minProperties",{limit:t.minProperties,actual:o}),r=!1,!Tt(n)))&&!(void 0!==t.maxProperties&&o>t.maxProperties&&(It(n,`Object must have at most ${t.maxProperties} properties, got ${o}`,e,"maxProperties",{limit:t.maxProperties,actual:o}),r=!1,!Tt(n)))&&r}(o,t,n)&&(r=!1,!Tt(n)))return!1;if(!function(e,t,n){if(!t.dependencies)return!0;let r=!0;for(const[o,i]of c(t.dependencies))if(f(e,o))if(G(i)){for(const t of i)if(!f(e,t)&&(It(n,`Property '${o}' requires property '${t}' to also be present`,e,"dependencies",{property:o,required:t}),r=!1,!Tt(n)))return!1}else if(!n.validate(e,i,n)&&(r=!1,!Tt(n)))return!1;return r}(o,t,n)&&(r=!1,!Tt(n)))return!1}return!(!function(e,t,n){const r=t.allOf;if(!r||0===r.length)return!0;let o=!0;for(let t=0;t<r.length;t++){const i=r[t];if(i&&!n.validate(e,i,n)&&(o=!1,!Tt(n)))return!1}return o}(e,t,n)&&(r=!1,!Tt(n)))&&(!(!function(e,t,n){const r=t.anyOf;if(!r||0===r.length)return!0;for(const t of r){const r=Nt(n.rootSchema,n.validate,!1);if(d(r,"path",{value:n.path,writable:!1}),n.validate(e,t,r))return!0}return It(n,"Value does not match any of the allowed schemas (anyOf)",e,"anyOf"),!1}(e,t,n)&&(r=!1,!Tt(n)))&&(!(!function(e,t,n){const r=t.oneOf;if(!r||0===r.length)return!0;let o=0;for(const t of r){const r=Nt(n.rootSchema,n.validate,!1);if(d(r,"path",{value:n.path,writable:!1}),n.validate(e,t,r)&&(o++,o>1))break}return 1===o||(0===o?It(n,"Value does not match any of the schemas (oneOf)",e,"oneOf"):It(n,`Value matches ${o} schemas but must match exactly one (oneOf)`,e,"oneOf",{matches:o}),!1)}(e,t,n)&&(r=!1,!Tt(n)))&&(!(!function(e,t,n){const r=t.not;if(!r)return!0;const o=Nt(n.rootSchema,n.validate,!1);return d(o,"path",{value:n.path,writable:!1}),!n.validate(e,r,o)||(It(n,"Value should NOT match the schema",e,"not"),!1)}(e,t,n)&&(r=!1,!Tt(n)))&&r)))}const Ut=function(e){const t=function(e){return t=>jt(t,e)}(e);return e=>{const n=t(e);return{valid:n.valid,errors:n.errors.map(e=>({message:e.message,path:e.path,value:e.instance}))}}}(ft);function Wt(e,t){const{state:n,registry:r,logger:o}=e,i=t.data,a=i.senderId;if(!(e=>"data"in e)(i))return;const s=i.data,c=Ze(r,a);if(!c||!c.isActive())return;const u=function(e){return Ut(e)}(s);u.valid?c.notifyMessage(s):o.info(`${n.name} ignored message from ${c.getName()}`)}function Ft(e,t){const{state:n,processManager:r,logger:o}=e,i=t.data,a=i.processId,s=i.security,c=r.get(a);c&&(r.remove(a),s?(c.getNegotiatedProtocol()||c.setNegotiatedProtocol(s.protocol),c.setSecurityReady(!0),o.info(`${n.name} security ready: protocol=${s.protocol}, active=${s.active}`),c.notifyEvent("security-ready",{protocol:s.protocol,active:s.active})):c.setSecurityReady(!0),c.notifyEvent("open",{origin:t.origin}))}function zt(e,t){for(const n of e.supported)if(t.includes(n))return{negotiated:n,isPreferred:n===e.preferred};return{negotiated:"none",isPreferred:"none"===e.preferred}}function Vt(e,t){return a({negotiated:e})}const Gt=["none"];function Kt(e,t){const{state:n,registry:r,processManager:o,actions:i,logger:a}=e,s=t.data,c=s.senderId;if(!A(s))return;const u=s.processId,d=s.contract,l=s.security;let f,p=Ze(r,c);if(p||(p=Je(n,r,o,i,c,t.source,{})),o.create(p),p.isActive())if(c===p.id){const e=l?Vt(zt(l,Gt).negotiated):void 0;p.sendAction({type:"[nexus] connection-request-accepted",processId:u,senderId:n.id,contract:n.contract,...e&&{security:e}})}else a.info(`${n.name} detected channel [${p.getName()}] reloaded.`);else{try{ee(d)}catch{return p.sendAction({type:"[nexus] connection-request-denied",processId:u,senderId:n.id,error:"Invalid contract."}),void o.remove(u)}if(n.settings.securityPolicy){if(!rt(n.settings.securityPolicy,t,a))return p.sendAction({type:"[nexus] connection-request-denied",processId:u,senderId:n.id,error:"Not accepted."}),void o.remove(u)}if(l&&p.setPendingSecurityRequest(l),!p.isReadyToConnect())return p.scheduleActivation(c,t.origin,d,u),void a.info(`${n.name} scheduled activation for channel ${p.getName()}`);if(l){const e=zt(l,Gt);p.setNegotiatedProtocol(e.negotiated),f=Vt(e.negotiated),a.info(`${n.name} negotiated security protocol: ${e.negotiated}`)}p.activate(t.origin,d),p.sendAction({type:"[nexus] connection-request-accepted",processId:u,senderId:n.id,contract:n.contract,...f&&{security:f}})}}class Ht extends Error{code;originalCause;constructor(e,t,n){super(e),this.name="SecurityError",this.code=t,this.originalCause=n,l(this,Ht.prototype)}}function Yt(e,t,n){const{state:r,registry:o,logger:i}=e,a=n?.origin,s=n?.data;if(!(s instanceof Uint8Array))return void i.warn("routeEncryptedMessage called with non-Uint8Array payload");const c=function(e,t){const n=et(e);for(const e of n){const n=e;if(!n.isActive||"function"!=typeof n.isActive)continue;if(!n.isActive())continue;if(n.toJSON().origin===t)return n}return}(o,a);if(!c)return void i.info(`${r.name} ignored encrypted message - no channel for origin ${a}`);const u=c.getSecurityTransport();if(!u)return void i.warn(`${r.name} received encrypted message but channel has no security transport`);if(!u.isReady())return void i.warn(`${r.name} received encrypted message but security transport not ready`);const d=u;if("function"==typeof d.handleReceive)try{d.handleReceive(s)}catch(e){const t=function(e){if(e instanceof Ht)return{message:e.message,code:e.code,cause:e.originalCause};if(e instanceof Error){const t=function(e){const t=e.message.toLowerCase();return t.includes("decrypt")||t.includes("invalid key")||t.includes("corrupted")||t.includes("cipher")?"decryption_failed":t.includes("deobfuscat")||t.includes("time window")||t.includes("clock skew")||t.includes("timestamp")?"deobfuscation_failed":t.includes("transport")||t.includes("connection")||t.includes("network")?"transport_error":"unknown"}(e);return{message:e.message,code:t,cause:e}}return{message:String(e),code:"unknown"}}(e);!function(e,t,n){const r=`${t} security error:`;"unknown"===n.code?e.error(r,n.message,n.cause):e.warn(r,`[${n.code}]`,n.message)}(i,c.getName(),t),c.notifyEvent("security-error",t)}else i.error("Security transport missing handleReceive method")}function Qt(e){_e(e.contract,"config.contract"),_e(e.settings,"config.settings"),function(e){if(null==e)throw y("Name cannot be null or undefined");if("string"!=typeof e)throw y("Name must be a string");if(0===e.trim().length)throw y("Name cannot be empty")}(e.name),ee(e.contract);const t={...nt,...e.settings,contract:e.contract},n=function(e={}){return Pe(e)}({level:t.logLevel??"error",customLogger:t.logger}),r={id:N(),name:e.name,window:window,contract:e.contract,settings:t,logger:n},o=X(),i=(()=>{const e=B();return a({create:W(e),get:F(e),remove:z(e),clear:U(e),track:(t,n)=>{e.set(t,n)},has:t=>e.has(t)})})(),s=function(){const e=B();return a({register:(t,n)=>{if(!n)throw y(`Cannot register null/undefined provider for ${t}`);e.set(t,n)},unregister:t=>{e.delete(t)},get:t=>{if("none"!==t)return e.get(t)},has:t=>"none"===t||e.has(t),getSupportedVersions:()=>{const t=["none"];return e.has("v1")&&t.unshift("v1"),e.has("v2")&&t.unshift("v2"),t}})}();if(e.settings?.security?.protocols){const t=e.settings.security.protocols;t.v1&&s.register("v1",t.v1),t.v2&&s.register("v2",t.v2)}const u=a({requestConnection:_(d={getBrokerId:()=>r.id,getContract:()=>r.contract}),acceptConnection:O(d),denyConnection:L(d),cancelConnection:x(d),openConnection:q(d),closeConnection:k(d),destroyConnection:P(d),newMessage:R(d),invalidRequest:M(d)});var d;const l=function(e){const t=B();return c(e).forEach(([e,n])=>{t.set(e,n)}),t}({[T.REQUEST_CONNECTION]:Kt,[T.ACCEPT_CONNECTION]:ot,[T.DENY_CONNECTION]:ut,[T.CANCEL_CONNECTION]:it,[T.CANCEL_CONNECTION_ACKNOWLEDGED]:at,[T.CLOSE_CONNECTION]:st,[T.CLOSE_CONNECTION_ACKNOWLEDGED]:ct,[T.OPEN_CONNECTION]:Ft,[T.DESTROY_CONNECTION]:dt,[T.NEW_MESSAGE]:Wt,[T.INVALID_REQUEST]:lt}),f={state:r,registry:o,processManager:i,actions:u,logger:n},p=e=>{const t=e?.origin;!function(e,t=[],n=[]){return t&&t.length>0?t.includes(e):!(n&&n.length>0&&n.includes(e))}(t,r.settings.whitelist,r.settings.blacklist)?n.info(`${r.name} ignored message from ${t}`):e.data instanceof Uint8Array?Yt(f,0,e):function(e,t,n){const{logger:r}=t;try{const o=n?.data,i=o?.type;if(!i)return void r.warn("Received message without action type");!function(e,t,n){e.debug(`Action ${n}:`,t.type,t)}(r,o,"received");const a=e.get(i);if(!a)return void r.warn(`No handler for action type: ${i}`);a(t,n)}catch(e){r.error("Error routing message:",e)}}(l,f,e)};"undefined"!=typeof window&&window.addEventListener("message",p);const g={id:r.id,name:r.name,settings:r.settings,get contract(){return r.contract},get channels(){return tt(o)},get acceptedActionTypes(){return r.contract.accepted.map(e=>e.type)},addChannel:(e,t,n)=>Je(r,o,i,u,e,t,n??{}),getChannel:e=>Xe(o,e),removeChannel(e){const t=Xe(o,e);t&&function(e,t){t.destroy(!1),Qe(e,t)}(o,t)},setSecurityPolicy:e=>(function(e){if("function"!=typeof e)throw y("Security policy must be a function that returns true or false.")}(e),r.settings.securityPolicy=e,g),extendContract(e){if(!r.settings.contractExtension)throw y("Original contract cannot be extended.");return ee(e),r.contract=function(...e){const t={accepted:[],emitted:[]};return e.forEach(e=>{e&&e.accepted&&e.emitted&&(e.accepted.forEach(e=>{t.accepted.some(t=>t.type===e.type)||t.accepted.push(e)}),e.emitted.forEach(e=>{t.emitted.some(t=>t.type===e.type)||t.emitted.push(e)}))}),a({accepted:a(t.accepted),emitted:a(t.emitted)})}(r.contract,e),g},toJSON:()=>({id:r.id,name:r.name,settings:r.settings,acceptedActionTypes:r.contract.accepted.map(e=>e.type),channels:tt(o)}),registerProtocol:(e,t)=>(s.register(e,t),g),unregisterProtocol:e=>(s.unregister(e),g),hasProtocol:e=>s.has(e),getSupportedProtocols:()=>s.getSupportedVersions(),get logger(){return r.logger}};return a(g)}const Jt=a({emitted:a([{type:"MESSAGE",description:"Generic message"},{type:"DATA",description:"Generic data transfer"},{type:"EVENT",description:"Generic event"}]),accepted:a([{type:"MESSAGE",description:"Generic message"},{type:"DATA",description:"Generic data transfer"},{type:"EVENT",description:"Generic event"},{type:"ACK",description:"Acknowledgment"}])});Qt({name:"default-broker",contract:Jt});const Zt=a({Beat:"__hf:beat",Size:"__hf:size"});function Xt(e,t){const n=document.createElement(e);t?.inlineStyle&&u(n.style,t.inlineStyle);const r=[];var o;t?.classNames&&G(t.classNames)&&r.push(...t.classNames),t?.className&&r.push(t.className),n.classList.add(...function(e){return e.filter(e=>![void 0,null,""].includes(e)&&""!==e.trim())}((o=r,K(Q(o)))));let i=!1;const a=e=>{if(!e)return;const t="ref"in e?e.ref:e;n.contains(t)||n.appendChild(t)},s=e=>{if(!e)return;const t="ref"in e?e.ref:e;t.contains(n)||t.appendChild(n)},c=e=>e?`opacity ${(e/1e3).toFixed(1)}s`:"none",d=e=>{n.style.transition=c(e),n.style.opacity="1",i=!0},l=e=>{n.style.transition=c(e),n.style.opacity="0",i=!1},f=e=>{if(!e)return;const t="ref"in e?e.ref:e;n.contains(t)&&n.removeChild(t)},p=()=>{const e=n.parentElement;e&&e.removeChild(n)};return{get addChild(){return a},get attachTo(){return s},get show(){return d},get hide(){return l},get removeChild(){return f},get detachFromParent(){return p},get ref(){return n},get visible(){return i}}}function en(e){return Xt("div",e)}const tn=globalThis.setInterval,nn=globalThis.clearInterval;function rn(e){const t=Xt("iframe",{inlineStyle:{border:"none",width:"100%",height:"100%"}}).ref;return t.src=e,t.setAttribute("allowtransparency","true"),t}const on=a({coverage:.6,aspectRatio:530/550,maxCoverage:.9});function an(){const e=window.innerWidth,t=window.innerHeight;if(!e||!t)return{width:530,height:550};let n=t*on.coverage,r=n*on.aspectRatio;const o=e*on.maxCoverage;return r>o&&(r=o,n=r/on.aspectRatio),{width:C(r),height:C(n)}}const sn=a({get width(){return an().width},get height(){return an().height}});function cn(e,t){const n=window.open(e,"_blank",t);return{target:n,cleanup:()=>{n&&!n.closed&&n.close()}}}const un=a({embedded:({options:e})=>{const t=function(e){if("string"!=typeof e)return e;const t=document.querySelector(e);if(null===t)throw y(`Shell container not found for selector "${e}".`);return t}(e.container),n=rn(e.url??"");return t.appendChild(n),{target:n.contentWindow,frame:n,cleanup:()=>n.remove()}},dialog:({options:e,requestClose:t})=>{const n=en({inlineStyle:{position:"fixed",inset:"0",zIndex:"2147483647"}});if(e.dialogOverlay??1){const e=en({inlineStyle:{position:"absolute",inset:"0",background:"rgba(0, 0, 0, 0.5)"}});e.ref.addEventListener("click",()=>t()),n.addChild(e)}const r=en({inlineStyle:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:`${e.dialogWidth??sn.width}px`,height:`${e.dialogHeight??sn.height}px`,background:"#fff"}}),o=Xt("button",i);var i;o.ref.type="button",o.ref.textContent="×",o.ref.setAttribute("aria-label","Close"),o.ref.addEventListener("click",()=>t());const a=rn(e.url??"");r.addChild(o),r.addChild(a),n.addChild(r),n.attachTo(document.body);const s=!1!==e.closeOnEscape,c=e=>{s&&"Escape"===e.key&&t()};return document.addEventListener("keydown",c),{target:a.contentWindow,cleanup:()=>{document.removeEventListener("keydown",c),n.ref.remove()}}},popup:({options:e})=>{const t=e.dialogWidth??sn.width,n=e.dialogHeight??sn.height;return cn(e.url??"",`width=${t},height=${n},scrollbars=no`)},standalone:({options:e})=>cn(e.url??"")});function dn(e){return un[e]}function ln(e){let t,n=0,r=null;const o=()=>{(e=>{nn(e)})(t),t=void 0};return{beat(){n=0,r=fe()},start(){void 0===t&&(n=0,t=((e,t,...n)=>tn(e,t,...n))(()=>{n+=1,n>=3&&(o(),e(n,r))},1e3))},stop:o}}function fn(e,t,n,r){let o=null,i=null,s=!1,c=0,u=null;const d=()=>{i&&(i(),i=null)},l=()=>{u&&(u.stop(),u=null)},f=()=>{l(),o&&(o.destroy(),o=null),s=!1,d()},g=()=>{o?o.disconnect():d()};return a({open:a=>{f();const m={...t,...a},h=r.selectMount(m.displayMode??p.Embedded)({options:m,requestClose:g});if(i=h.cleanup,null===h.target)return void n.emit("error",y("Feature window could not be opened."));o=e.addChannel(`feature-${c+=1}`,h.target,r.registerSecurity(e,m.protocol,m.sharedKey));const v="content"===m.embedSizing?h.frame:void 0,b=r.createHeartbeatMonitor((e,t)=>((e,t,r)=>{const o=e.onUnresponsive??"emit";"function"!=typeof o?(n.emit("error",y("Feature became unresponsive.")),"unmount"===o&&f()):o({missedBeats:t,lastBeatAt:r,displayMode:e.displayMode??p.Embedded,close:g,destroy:f})})(m,e,t));u=b,o.on("open",()=>{s=!0,n.emit("open"),b.start()}),o.on("close",()=>{s=!1,n.emit("close"),l(),d()}),o.on("deny",e=>n.emit("error",e)),o.on("invalid",e=>n.emit("error",e)),o.onMessage(e=>{!function(e){return e.startsWith("__hf:")}(e.type)?n.emit(e.type,e.data):e.type===Zt.Beat?b.beat():e.type===Zt.Size&&v&&function(e,t){const n=t?.height;"number"==typeof n&&(e.style.height=`${n}px`)}(v,e.data)}),o.connect()},close:g,destroy:f,send:(e,t)=>o?.send(e,t),on:n.on,get isOpen(){return s}})}const pn=globalThis.ArrayBuffer,gn=globalThis.SharedArrayBuffer,mn=globalThis.Uint8Array,yn=globalThis.Uint8ClampedArray,hn=globalThis.Uint16Array,vn=globalThis.Uint32Array,bn=globalThis.Int8Array,Cn=globalThis.Int16Array,wn=globalThis.Int32Array,En=globalThis.Float32Array,$n=globalThis.Float64Array,Nn=globalThis.BigInt64Array,Sn=globalThis.BigUint64Array,In=globalThis.Reflect;function Tn(e,t,n){return"number"==typeof e?In.construct(mn,[e]):e instanceof pn||e instanceof gn?In.construct(mn,[e,t,n]):In.construct(mn,[e])}mn.from.bind(mn),mn.of.bind(mn),yn.from.bind(yn),yn.of.bind(yn),hn.from.bind(hn),hn.of.bind(hn),vn.from.bind(vn),vn.of.bind(vn),bn.from.bind(bn),bn.of.bind(bn),Cn.from.bind(Cn),Cn.of.bind(Cn),wn.from.bind(wn),wn.of.bind(wn),En.from.bind(En),En.of.bind(En),$n.from.bind($n),$n.of.bind($n),Nn.from.bind(Nn),Nn.of.bind(Nn),Sn.from.bind(Sn),Sn.of.bind(Sn);const An=globalThis.TextEncoder,On=globalThis.TextDecoder,xn=globalThis.Reflect,kn=()=>xn.construct(An,[]),Ln=(e,t)=>xn.construct(On,[e,t]);kn();const Pn=Ln("utf8");function Mn(e){return kn().encode(e)}Tn([104,101,108,108,111]),Tn([227,129,147,227,130,147,227,129,171,227,129,161,227,129,175]),Tn([]);const Rn=globalThis.crypto.subtle;const qn=a({name:"AES-GCM"});const _n=function(e,t){return async function(n,r){if("string"!==se(n))throw y("Cannot generate key without a password type string");if(0===n.length)throw y("Cannot generate key with an empty string as password");if(!r)throw y("Cannot generate key without a salt");const o=await e.importKey("raw",t(n),{name:"PBKDF2"},!1,["deriveKey"]);return e.deriveKey({name:"PBKDF2",salt:r,iterations:1e5,hash:"SHA-256"},o,{...qn,length:256},!1,["encrypt","decrypt"])}}(Rn,Mn);const Dn=function(e,t,n){return async function(r,o){if(!r||!r.length)throw y("Cannot decrypt without a message");if(!o)throw y("Cannot decrypt without a password");const i=r.slice(0,16),a=r.slice(16,28),s=r.slice(28),c=await t(o,i),u=await n.decrypt({...qn,iv:a},c,s);return e(u)}}(function(e){return Pn.decode(e)},_n,Rn);const jn=function(e,t,n,r){return async function(o,i){if(!o)throw y("Cannot encrypt an empty message.");if(!i)throw y("Cannot encrypt without a password.");const a=t(16),s=t(12),c=await n(i,a),u=Tn(await r.encrypt({...qn,iv:s},c,e(o))),d=Tn(a.byteLength+s.byteLength+u.byteLength);return d.set(a,0),d.set(s,a.byteLength),d.set(u,a.byteLength+s.byteLength),d}}(Mn,function(e){if(!e)throw y("Cannot generate random values without a byte length.");return globalThis.crypto.getRandomValues(Tn(e))},_n,Rn);const Bn=globalThis.Promise;Bn.resolve.bind(Bn),Bn.reject.bind(Bn),Bn.all.bind(Bn),Bn.race.bind(Bn),Bn.allSettled.bind(Bn),Bn.any.bind(Bn),Bn.withResolvers?.bind(Bn);const Un=function(e){return async function(t,n,r=0){if("number"!==se(r)||r<-1||1<r)throw y("Window offset must be -1, 0, or 1.");const o=le(t.getTime()+r*n*6e4);return await e($(function(e,t){if(!e||!(e instanceof Date)||Et(e.getTime()))throw y("Invalid time input");if(t<=0)throw y("Base time window must be positive");const n=e.getTime(),r=60*t*1e3;return le(b(n/r)*r)}(o,n)).toString())}}(async function(e,t="SHA-256"){try{return K(Tn(await Rn.digest(t,Mn(e)))).map(e=>e.toString(16).padStart(2,"0")).join("")}catch{throw y("Error creating hash")}});const Wn=function(e){return function(t,n){return a({current:()=>e(t,n,0),previous:()=>e(t,n,-1),next:()=>e(t,n,1)})}}(Un);function Fn(e){return async(t,n)=>{if(!function(e){return!!e&&e instanceof Uint8Array}(t))throw y("Cannot deobfuscate an invalid packet");let r,o;try{r=await e(t,n)}catch(e){throw y(`Cannot deobfuscate packet. ${e?.message}`)}try{o=gt(r)}catch{throw y("Cannot deobfuscate packet because cannot deserialize decrypted data")}return a(o)}}function zn(e){const t=e;var n,r;return{isValid:"object"===se(t)&&"origin"in t&&"target"in t&&"data"in t&&(r=t.origin,"string"===se(r)&&36===r.length&&S(r))&&(n=t.target,"string"===se(n)&&36===n.length&&S(n))&&!!t.data,pkt:t}}function Vn(e){const{isValid:t,pkt:n}=zn(e);return t&&(r=n.data,"string"===se(r)&&r.length>0);var r}function Gn(e){return async(t,n)=>{if(!Vn(t))throw y("Cannot obfuscate an invalid packet");let r,o;try{r=mt(t)}catch{throw y("Cannot obfuscate packet because it is not serializable")}try{o=await e(r,n)}catch(e){throw y(`Cannot obfuscate packet. ${e?.message}`)}return o}}function Kn(e){return"number"===se(e)&&e>=1}function Hn(e,t,n,r){return(o=1)=>{if(!Kn(o))throw y("A valid refresh rate must be provided.");const i=()=>le();return a({packetObfuscation:async t=>{const r=await n(i(),o,0);return await e(t,r)},packetDeobfuscation:async e=>{const{current:n,previous:a,next:s}=r(i(),o),c=[n,a,s],u=async n=>{try{const r=await n(),o=await t(e,r);if(Vn(o))return o}catch{}return null};for(const e of c){const t=await u(e);if(null!==t)return t}throw y("Could not deobfuscate data")}})}}function Yn(e){return"function"===se(e)}function Qn(e){return"function"===se(e)}const Jn=function(e,t){return(n,r=1)=>{if(!Ne(n))throw y("Cannot create protocol provider without a valid logger");if(!Kn(r))throw y("Cannot create protocol provider without a valid refresh rate");return(...o)=>{if(!Qn(o[0]))throw y("Cannot create protocol without a valid send function");if(!Yn(o[1]))throw y("Cannot create protocol without a valid receive function");let i;const{packetEncryption:s,packetDecryption:c}=e(()=>i),{packetObfuscation:u,packetDeobfuscation:d}=t(r);return a({packetEncryption:s,packetDecryption:c,packetObfuscation:u,packetDeobfuscation:d,send:o[0],receive:e=>{i=e.data.key,o[1](e)},getLogger:()=>n})}}};function Zn(e){if(!e)return!1;if(e instanceof Uint8Array)return!0;var t;return"[object Uint8Array]"===(t=e,n.apply(i,t,[]))}function Xn(e){const t={valid:!0};return((e,t,n,r)=>{he(e,t,n,r)})(e,(e,t,n,r)=>{var o;r.valid&&(r.valid=null!==(o=t)&&!["undefined","function","symbol","bigint"].includes(se(o)))},{depth:[0,"*"]},t),t.valid}var er="http://json-schema.org/draft-04/schema#",tr="Modified JSON Schema draft v4 that includes the optional '$ref' and 'format'",nr={schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},positiveInteger:{type:"integer",minimum:0},positiveIntegerDefault0:{allOf:[{$ref:"#/definitions/positiveInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},minItems:1,uniqueItems:!0}},rr="object",or={id:{type:"string",format:"uri"},$schema:{type:"string",format:"uri"},$ref:{type:"string"},format:{type:"string"},title:{type:"string"},description:{type:"string"},default:{},multipleOf:{type:"number",minimum:0,exclusiveMinimum:!0},maximum:{type:"number"},exclusiveMaximum:{type:"boolean",default:!1},minimum:{type:"number"},exclusiveMinimum:{type:"boolean",default:!1},maxLength:{$ref:"#/definitions/positiveInteger"},minLength:{$ref:"#/definitions/positiveIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{anyOf:[{type:"boolean"},{$ref:"#"}],default:{}},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:{}},maxItems:{$ref:"#/definitions/positiveInteger"},minItems:{$ref:"#/definitions/positiveIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},maxProperties:{$ref:"#/definitions/positiveInteger"},minProperties:{$ref:"#/definitions/positiveIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#"}],default:{}},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},enum:{type:"array",minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},ir={exclusiveMaximum:["maximum"],exclusiveMinimum:["minimum"]},ar={id:"/v4",$schema:er,description:tr,definitions:nr,type:rr,properties:or,dependencies:ir,default:{}},sr=Object.freeze({__proto__:null,$schema:er,default:ar,definitions:nr,dependencies:ir,description:tr,id:"/v4",properties:or,type:rr});function cr(e){return"string"===se(t=e)&&/^[a-f0-9]{64}$/i.test(t);var t}function ur(e){const t=e;return"object"===se(t)&&(r=t.pid,"string"===se(r)&&36===r.length&&S(r))&&function(e){return"string"===se(e)&&36===e.length&&S(e)}(t.id)&&!!((n=t.sequence)&&"number"===se(n)&&n>0)&&Xn(t.message)&&jt(t.schema,sr).valid&&cr(t.schemaHash);var n,r}const dr=function(e){return async(t,n)=>{const r=se(t);if("object"!==r&&"array"!==r)throw y("Cannot encrypt non existent or invalid data");if("string"!==se(n)||0===n.length)throw y("Cannot encrypt data without a password");let o,i;try{o=mt(t)}catch{throw y("Cannot encrypt data because it is unserializable")}try{i=await e(o,n)}catch{throw y("Cannot encrypt data")}return i}}(jn),lr=function(e){return async(t,n)=>{if(!(t instanceof Uint8Array))throw y("Cannot decrypt data because it is in the wrong format");if("string"!==se(n)||0===n.length)throw y("Cannot decrypt data without a password");let r,o;try{r=await e(t,n)}catch{throw y("Cannot decrypt data")}try{o=gt(r)}catch{throw y("Cannot unserialize data")}return a(o)}}(Dn),fr=function(e){return async(t,n)=>{if(!function(e){const{isValid:t,pkt:n}=zn(e);return t&&ur(n.data)}(t))throw y("Cannot encrypt invalid packet");let r;try{r={...t,data:await e(t.data,n)}}catch(e){throw y(`Cannot encrypt packet. ${e?.message}`)}return a(r)}}(dr),pr=function(e){return async(t,n)=>{if(!function(e){const{isValid:t,pkt:n}=zn(e);return t&&Zn(n.data)}(t))throw y("Cannot decrypt invalid packet");let r;try{r={...t,data:await e(t.data,n)}}catch(e){throw y(`Cannot decrypt packet. ${e?.message}`)}return a(r)}}(lr),gr=Gn(jn),mr=Fn(Dn),yr=function(e,t){return a({serializeWithoutEncryption:async t=>{const n={...t.data,message:mt(t.data.message)},r=mt(n),o=e(r);return a({origin:t.origin,target:t.target,data:o})},deserializeWithoutDecryption:async e=>{const n=t(e.data),r=function(e){return a({...e,message:(t=e.message,gt(t))});var t}(gt(n));return a({origin:e.origin,target:e.target,data:r})}})}(e=>kn().encode(e),e=>Ln().decode(e)),hr=function(e,t,n){return r=>a({packetEncryption:t=>{const o=r();return o?e(t,o):n.serializeWithoutEncryption(t)},packetDecryption:e=>{const o=r();return o?t(e,o):n.deserializeWithoutDecryption(e)}})}(fr,pr,yr),vr=Jn(hr,Hn(gr,mr,Un,Wn));const br=function(e,t,n){const r=function(e,t){return(n,r)=>{if(!n||"string"!=typeof n)throw y("PSK must be a non-empty string");return a({packetEncryption:t=>{const o=r();return e(t,o||n)},packetDecryption:e=>{const o=r();return t(e,o||n)}})}}(e,t);return(e,t,o=1)=>{if(!Ne(e))throw y("Cannot create protocol provider without a valid logger");if(!t||"string"!=typeof t)throw y("Cannot create protocol provider without a valid shared key");if(!Kn(o))throw y("Cannot create protocol provider without a valid refresh rate");return(...i)=>{if(!Qn(i[0]))throw y("Cannot create protocol without a valid send function");if(!Yn(i[1]))throw y("Cannot create protocol without a valid receive function");let s;const{packetEncryption:c,packetDecryption:u}=r(t,()=>s),{packetObfuscation:d,packetDeobfuscation:l}=n(o);return a({packetEncryption:c,packetDecryption:u,packetObfuscation:d,packetDeobfuscation:l,send:i[0],receive:e=>{s=e.data.key,i[1](e)},getLogger:()=>e})}}}(fr,pr,Hn(Gn(jn),Fn(Dn),Un,Wn));function Cr(e,t,n){return"v1"===t?(e.registerProtocol("v1",vr(e.logger)),{security:{protocol:"v1"}}):"v2"===t?(e.registerProtocol("v2",br(e.logger,n??"")),{security:{protocol:"v2",sharedKey:n}}):void 0}let wr=0;function Er(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122}function $r(e,t){const n=function(e){const t=function(e){const t=e.indexOf("://");if(t<=0)return e;for(let n=0;n<t;n+=1){const t=e.charCodeAt(n);if(!(t>=65&&t<=90||t>=97&&t<=122))return e}return e.slice(t+3)}(e);let n="",r=!1;for(let e=0;e<t.length;e+=1)Er(t.charCodeAt(e))?(r&&n.length>0&&(n+="-"),r=!1,n+=t[e].toLowerCase()):r=!0;return n}(e.name??e.url??("string"==typeof e.container?e.container:""));return n.length>0?`shell-${n}-${t}`:`shell-${t}`}e.DisplayMode=p,e.createShell=function(e){const t=function(){const e={};return a({on:(t,n)=>{const r=e[t]??(e[t]=[]);return r.push(n),()=>{e[t]=r.filter(e=>e!==n)}},emit:(t,n)=>{e[t]?.forEach(e=>e(n))}})}(),n=function(e){return{emitted:[...e.emitted,{type:Zt.Beat},{type:Zt.Size}],accepted:[...e.accepted,{type:Zt.Beat},{type:Zt.Size}]}}(e.contract??Jt);return fn(Qt({name:$r(e,wr+=1),contract:n}),e,t,{selectMount:dn,registerSecurity:Cr,createHeartbeatMonitor:ln})}});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).HyperfrontendFeaturesHost={})}(this,function(e){"use strict";const t=globalThis.Object,n=globalThis.Reflect,r=t.prototype,o=r.hasOwnProperty,i=r.toString,a=t.freeze,s=t.keys,c=t.entries,u=t.values,d=t.assign,l=t.defineProperty,f=t.setPrototypeOf,p=(e,t)=>n.apply(o,e,[t]),g=a({Embedded:"embedded",Dialog:"dialog",Popup:"popup",Standalone:"standalone"}),m=globalThis.Error,y=globalThis.Reflect,h=(e,t)=>y.construct(m,[e,t]),v=globalThis.Math,b=v.abs,w=v.floor,C=v.round,$=v.sin,E=v.random;function N(e){return function(e){const t=1e4*$(e);return t-w(t)}(e.getTime())}function T(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*E()|0;return("x"===e?t:3&t|8).toString(16)})}function S(e){return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89aAbB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/.test(e)}const I="nexus",A={INVALID_REQUEST:`[${I}] invalid-request`,REQUEST_CONNECTION:`[${I}] connection-request`,CANCEL_CONNECTION:`[${I}] connection-request-cancelled`,CANCEL_CONNECTION_ACKNOWLEDGED:`[${I}] connection-request-cancelled-acknowledged`,ACCEPT_CONNECTION:`[${I}] connection-request-accepted`,DENY_CONNECTION:`[${I}] connection-request-denied`,CLOSE_CONNECTION:`[${I}] connection-closed`,CLOSE_CONNECTION_ACKNOWLEDGED:`[${I}] connection-closed-acknowledged`,DESTROY_CONNECTION:`[${I}] connection-destroyed`,OPEN_CONNECTION:`[${I}] connection-opened`,NEW_MESSAGE:`[${I}] new-message`},O=e=>"contract"in e,x=e=>(t,n)=>{const r={type:A.ACCEPT_CONNECTION,processId:t,senderId:e.getBrokerId(),contract:e.getContract()};return a(n?{...r,security:n}:r)},k=e=>t=>a({type:A.CANCEL_CONNECTION,processId:t,senderId:e.getBrokerId()}),P=e=>t=>a({type:A.CLOSE_CONNECTION,processId:t,senderId:e.getBrokerId()}),L=e=>(t,n)=>a({type:A.DENY_CONNECTION,processId:t,senderId:e.getBrokerId(),error:n}),R=e=>()=>a({type:A.DESTROY_CONNECTION,senderId:e.getBrokerId()}),M=e=>(t,n)=>a({type:A.INVALID_REQUEST,processId:t,senderId:e.getBrokerId(),error:n}),q=e=>t=>a({type:A.NEW_MESSAGE,senderId:e.getBrokerId(),data:t}),_=e=>(t,n)=>{const r={type:A.OPEN_CONNECTION,processId:t,senderId:e.getBrokerId()};return a(n?{...r,security:n}:r)},j=e=>(t,n)=>{const r={type:A.REQUEST_CONNECTION,processId:t,senderId:e.getBrokerId(),contract:e.getContract()};return a(n?{...r,security:n}:r)},D=globalThis.Map,B=globalThis.Reflect,U=e=>B.construct(D,e?[e]:[]),W=e=>()=>{e.clear()},F=e=>t=>{const n=T();return e.set(n,t),n},V=e=>t=>e.get(t),z=e=>t=>{e.delete(t)},K=globalThis.Array,G=K.isArray,H=K.from,Y=globalThis.Set,Q=globalThis.Reflect,J=e=>Q.construct(Y,e?[e]:[]),Z=globalThis.WeakMap,X=globalThis.Reflect;function ee(){const e=X.construct(Z,t?[t]:[]);var t;const n=U(),r=U(),o=J();return a({add:t=>{if(!(t&&t.id&&t.name&&t.target))throw h("Invalid channel: must have id, name, and target properties");o.add(t),e.set(t.target,t),n.set(t.id,t),r.set(t.name,t)},remove:t=>{t&&(o.delete(t),t.target&&e.delete(t.target),t.id&&n.delete(t.id),t.name&&r.delete(t.name))},getByWindow:t=>e.get(t),getById:e=>n.get(e),getByName:e=>r.get(e),getAll:()=>H(o),clear:()=>{o.clear(),n.clear(),r.clear()}})}function te(e){if(!e)throw h("Contract cannot be null or undefined");if(null===(t=e)||"object"!=typeof t||G(t))throw h("Contract must be an object");var t;const n=e;if((G(n.emitted)?n.emitted.length:0)+(G(n.accepted)?n.accepted.length:0)===0)throw h("Contract must contain at least one accepted or emitted action");if(G(n.emitted))for(const e of n.emitted)if(!e||"string"!=typeof e.type||""===e.type.toString().trim())throw h("Contract action types must be non-empty strings");if(G(n.accepted))for(const e of n.accepted)if(!e||"string"!=typeof e.type||""===e.type.toString().trim())throw h("Contract action types must be non-empty strings")}const ne=["none","error","warn","log","info","debug"],re={error:4,warn:3,log:2,info:1,debug:0};function oe(e){return ne.includes(e)}const ie=[],ae=[{classRef:Array,instantiate:()=>[],getKeys:e=>s(e),read:(e,t)=>e[t],write:(e,t,n)=>e[n]=t,remove:(e,t)=>e.splice(t,1)},{classRef:Object,instantiate:()=>({}),getKeys:e=>s(e),read:(e,t)=>e[t],write:(e,t,n)=>e[n]=t,remove:(e,t)=>delete e[t]}],se=(e,t)=>{"array"===t&&(t=Array.name),"object"===t&&(t=Object.name);const n=ae.find(({classRef:e})=>t===e.name);return void 0===n?[]:n.getKeys(e)},ce=e=>{if(null===e)return"null";const t=typeof e;if("object"===t){if(G(e))return"array";for(const t of ie)if(e instanceof t)return t.name}return t},ue=e=>ae.map(({classRef:e})=>{const t=e.name;return t===Object.name?"object":t===Array.name?"array":t}).includes(e),de=globalThis.Date,le=globalThis.Reflect;function fe(...e){return le.construct(de,e)}const pe=de.now,ge=de.parse,me=de.UTC,ye=(e,t)=>`Expected ${e} to be ${t}.`,he=(e,t,n,r,o,i,a,s)=>{const c=e(n,r,i,o,a);if(n.exitEarly)return s;c&&t(r,i,o,s,a);const u=ce(i);if(!ue(u))return s;return se(i,u).forEach(r=>{const{nextPath:a,nextValue:c}=((e,t,n)=>({nextPath:[...e,t],nextValue:n[t]}))(o,r,i);he(e,t,n,r,a,c,i,s)}),s},ve=(e=>(t,n,r,o)=>((e,t,n,r,o)=>{if("function"!=typeof n)throw h(ye("callback","a function"));if("object"!=typeof r||G(r))throw h(ye("options","an object"));if(!G(r.depth))throw h(ye("options.depth","an array"));const[i,s]=r.depth;if(void 0!==i&&"number"!=typeof i)throw h(ye("options.depth.0","a number"));if(void 0!==s){const e=typeof s;if(!["number","string"].includes(e))throw h(ye("options.depth.1","a number or a string"));if("string"===e&&"*"!==s)throw h("Only valid string value in options.depth.1 is '*'.")}const c={depth:a([r.depth[0]??0,r.depth[1]??"*"]),exitEarly:!1};return he(t,n,c,"",[],e,void 0,o)})(t,e,n,r??{depth:[0,"*"]},o??{}))((e,t,n,r)=>!(r.length<e.depth[0]||e.depth[1]<r.length));const be=(...e)=>{};function we(e,t=be,n=be,r=be,o=be){if(Ee(e))throw h(Ne("error"));if(Ee(t))throw h(Ne("warn"));if(Ee(n))throw h(Ne("log"));if(Ee(r))throw h(Ne("info"));if(Ee(o))throw h(Ne("debug"));const{setLogLevel:i,getLogLevel:s,shouldLog:c}=function(e="error"){if(!oe(e))throw h("Cannot create log level configuration with a valid default log level");const t={level:e};return a({getLogLevel:()=>t.level,setLogLevel:e=>{if(!oe(e))throw h(`Cannot set value '${e}' level. Expected levels are ${ne}.`);t.level=e},shouldLog:e=>!("none"===t.level||"none"===e||!oe(e))&&re[e]>=re[t.level]})}(),u=(e,t)=>{if(e===be)return e;return function(e,t){return function(...n){if(t())return e(...n)}}((n=e,function(...e){try{n(...e)}catch{}}),()=>c(t));var n};return Ce({error:u(e,"error"),warn:u(t,"warn"),log:u(n,"log"),info:u(r,"info"),debug:u(o,"debug"),setLogLevel:i,getLogLevel:s},"")}function Ce(e,t){const n=t?`[${t}]`:"",r=e=>n?(...t)=>e(n,...t):e,o=a({error:r(e.error),warn:r(e.warn),log:r(e.log),info:r(e.info),debug:r(e.debug),setLogLevel:e.setLogLevel,getLogLevel:e.getLogLevel,channel:n=>Ce(e,t?`${t}:${n}`:n),timed:(e,t)=>function(e,t,n){const r=pe();try{const o=n(),i=pe()-r;return e.debug(`${t} completed in ${i}ms`),o}catch(n){const o=pe()-r;throw e.error(`${t} failed after ${o}ms: ${$e(n)}`),n}}(o,e,t),timedAsync:(e,t)=>async function(e,t,n){const r=pe();try{const o=await n(),i=pe()-r;return e.debug(`${t} completed in ${i}ms`),o}catch(n){const o=pe()-r;throw e.error(`${t} failed after ${o}ms: ${$e(n)}`),n instanceof Error&&n.stack&&e.debug(`Stack trace:\n${n.stack}`),n}}(o,e,t)});return o}function $e(e){return e instanceof Error?e.message:String(e)}function Ee(e){return"function"!==ce(e)&&e!==be}function Ne(e){return`Cannot create a logger when ${e} is not a function`}function Te(e){const t=e;return"object"===ce(t)&&!G(t)&&"function"===ce(t.error)&&"function"===ce(t.warn)&&"function"===ce(t.log)&&"function"===ce(t.info)&&"function"===ce(t.debug)&&"function"===ce(t.setLogLevel)&&"function"===ce(t.getLogLevel)}const Se=globalThis.console,Ie=Se.log.bind(Se),Ae=Se.warn.bind(Se),Oe=Se.error.bind(Se),xe=Se.info.bind(Se),ke=Se.debug.bind(Se);Se.trace.bind(Se),Se.dir.bind(Se),Se.table.bind(Se),Se.assert.bind(Se),Se.clear.bind(Se),Se.count.bind(Se),Se.countReset.bind(Se),Se.group.bind(Se),Se.groupCollapsed.bind(Se),Se.groupEnd.bind(Se),Se.time.bind(Se),Se.timeEnd.bind(Se),Se.timeLog.bind(Se);const Pe=we(Oe,Ae,Ie,xe,ke),Le="[nexus]";const Re=e=>{const{level:t="error",prefix:n=Le,customLogger:r}=e;if(r)return r;Pe.setLogLevel("debug");const o=we((...e)=>Pe.error(n,...e),(...e)=>Pe.warn(n,...e),(...e)=>Pe.log(n,...e),(...e)=>Pe.info(n,...e),(...e)=>Pe.debug(n,...e));return o.setLogLevel(t),o},Me=globalThis.WeakSet,qe=globalThis.Reflect;function _e(e,t){if(!ue(ce(e)))return!1;const n=e;if(t.has(n))return!0;t.add(n);const r=ce(e),o=se(e,r);for(const n of o)if(_e(e[n],t))return!0;return!1}function je(e,t){if(_e(e,qe.construct(Me,n?[n]:[])))throw h(`Circular reference detected in parameter "${t}"`);var n}const De=a({origin:"*",queueMessages:!0,debug:!1,contract:void 0});function Be(e,t=!0){if(e.getState().active){if(e.updateState({active:!1}),t){const t=e.createProcess(),n=e.actions.closeConnection(t);e.sendAction(n)}e.notifyEvent("close")}}function Ue(e,t){const n=function(e,t){return a({...e,queuedMessages:a([...e.queuedMessages,t])})}(e.getState(),t);e.updateState(n)}const We=J([A.REQUEST_CONNECTION,A.ACCEPT_CONNECTION,A.DENY_CONNECTION,A.CANCEL_CONNECTION,A.CANCEL_CONNECTION_ACKNOWLEDGED,A.OPEN_CONNECTION]);function Fe(e,t){const n=e.getState();if(!t||"string"!=typeof t.type)throw h("Action must contain a 'type' property that is a non-empty string.");const r=n.securityTransport,o=We.has(t.type);r&&r.isReady()&&!o?r.send(t):n.target.postMessage(t,"*")}function Ve(e,t){const n=e.getState();if(!n.active){if(n.queueMessages)return void Ue(e,t);throw h(`Cannot send message. Channel ${n.name} is not open.`)}const r=n.securityTransport,o=n.negotiatedProtocol;if(r&&"none"!==o&&!r.isReady()){if(n.queueMessages)return void Ue(e,t);throw h(`Cannot send message. Security transport for channel ${n.name} is not ready.`)}if(!(n.contract?.emitted.map(e=>e.type)??[]).includes(t.type))throw h(`Cannot send message to ${n.name} channel. Message type '${t.type}' is not in the emitted actions of channel contract.`);const i=e.actions.newMessage(t);Fe(e,i),e.notifyMessage(t)}function ze(e){const t=e.getState();for(const n of t.queuedMessages)try{Ve(e,n)}catch(e){t.logger&&t.logger.error("Failed to send queued message:",e)}const n=function(e){return a({...e,queuedMessages:a([])})}(t);e.updateState(n)}function Ke(e,t,n){let r;if("string"==typeof t&&"function"==typeof n){const e=t,o=n;r=(t,n,r)=>{t===e&&o(n,r)}}else{if("function"!=typeof t)throw h("Expected callback function.");r=t}if("function"!=typeof r)throw h("Expected callback function.");const o=[...e.getState().eventSubscriptions,r];return e.updateState({eventSubscriptions:o}),()=>{const t=e.getState().eventSubscriptions.filter(e=>e!==r);e.updateState({eventSubscriptions:t})}}function Ge(e,t,n){const r=e.getState();r.logger&&function(e,t,n){e.debug("Channel event:",t,n)}(r.logger,t,n);const o={id:r.id,name:r.name,active:r.active,origin:r.origin,connectTimestamp:r.connectTimestamp,contract:r.contract,queuedMessagesCount:r.queuedMessages.length};for(const e of r.eventSubscriptions)try{e(t,n,o)}catch(e){r.logger&&r.logger.error(`Error in event handler for '${t}' event:`,e)}}function He(e,t){const n=e.getState();for(const e of n.messageSubscriptions)try{e(t)}catch(e){n.logger&&n.logger.error(`Error in message handler for '${t.type}' message:`,e)}}function Ye(e,t){je(e.settings,"config.settings");const n={...De,...e.settings};let r=function(e,t,n){return a({id:T(),name:e,target:t,origin:null,active:!1,connectTimestamp:null,contract:n.contract??null,acceptedActions:a([]),queuedMessages:a([]),eventSubscriptions:a([]),messageSubscriptions:a([]),scheduledActivation:null,queueMessages:n.queueMessages??!0,logger:n.logger??null,brokerManaged:n.brokerManaged??!1,readyToConnect:!1,negotiatedProtocol:null,securityReady:!1,securityTransport:null,pendingSecurityRequest:null})}(e.name,e.target,n);const o={getState:()=>r,updateState:e=>{r={...r,...e}},sendAction:e=>{Fe(o,e)},createProcess:()=>t.processManager.create(o),removeProcess:e=>{t.processManager.remove(e)},notifyEvent:(e,t)=>{Ge(o,e,t)},notifyMessage:e=>{He(o,e)},actions:t.actions,cleanup:t.cleanup},i={id:r.id,name:r.name,target:r.target,getId:()=>r.id,getName:()=>r.name,getTarget:()=>r.target,isActive:()=>r.active,getAcceptedTypes:()=>r.acceptedActions,toJSON:()=>({id:r.id,name:r.name,active:r.active,origin:r.origin,connectTimestamp:r.connectTimestamp,contract:r.contract,queuedMessagesCount:r.queuedMessages.length}),connect:()=>function(e){const t=e.getState();if(t.active)return;if(t.readyToConnect||e.updateState({readyToConnect:!0}),t.connectTimestamp||e.updateState({connectTimestamp:pe()}),t.scheduledActivation){const[n,r,o,i]=t.scheduledActivation;e.updateState({id:n,origin:r,contract:o,acceptedActions:o.accepted.map(e=>e.type),active:!0,scheduledActivation:null});const a=e.actions.acceptConnection(i);return e.sendAction(a),void e.notifyEvent("open",{id:n,origin:r})}if(t.brokerManaged&&t.contract)return e.updateState({origin:"*",active:!0,acceptedActions:t.contract.accepted.map(e=>e.type)}),e.notifyEvent("open",{id:t.id,origin:"*"}),void ze(e);const n=e.createProcess(),r=e.actions.requestConnection(n);e.sendAction(r)}(o),disconnect:e=>Be(o,e),cancel:e=>function(e,t=!0){if(e.getState().active)Be(e,t);else{if(t){const t=e.createProcess(),n=e.actions.cancelConnection(t);e.sendAction(n)}e.notifyEvent("cancel")}}(o,e),destroy:e=>function(e,t=!0){if(e.updateState({active:!1}),t){const t=e.actions.destroyConnection();e.sendAction(t)}e.cleanup&&e.cleanup()}(o,e),send:(e,t)=>Ve(o,{type:e,data:t}),sendAction:e=>Fe(o,e),on:(e,t)=>"string"==typeof e&&"function"==typeof t?Ke(o,e,t):Ke(o,e),onMessage:e=>function(e,t){if("function"!=typeof t)throw h("Expected callback function.");const n=[...e.getState().messageSubscriptions,t];return e.updateState({messageSubscriptions:n}),()=>{const n=e.getState().messageSubscriptions.filter(e=>e!==t);e.updateState({messageSubscriptions:n})}}(o,e),activate:(e,t)=>{const n=function(e,t,n){const r=(n.accepted||[]).map(e=>e.type);return a({...e,origin:t,active:!0,connectTimestamp:pe(),contract:n,acceptedActions:a(r),scheduledActivation:null})}(r,e,t);o.updateState(n)},isReadyToConnect:()=>r.readyToConnect||r.brokerManaged,scheduleActivation:(e,t,n,r)=>{o.updateState({scheduledActivation:[e,t,n,r]})},notifyEvent:(e,t)=>{Ge(o,e,t)},notifyMessage:e=>{He(o,e)},setPendingSecurityRequest:e=>{o.updateState({pendingSecurityRequest:e})},getPendingSecurityRequest:()=>r.pendingSecurityRequest,setNegotiatedProtocol:e=>{o.updateState({negotiatedProtocol:e})},getNegotiatedProtocol:()=>r.negotiatedProtocol,setSecurityTransport:e=>{o.updateState({securityTransport:e})},getSecurityTransport:()=>r.securityTransport,setSecurityReady:e=>{o.updateState({securityReady:e})},isSecurityReady:()=>r.securityReady};return a(i)}function Qe(e,t){return e.getByWindow(t)}function Je(e,t){e.remove(t)}function Ze(e,t,n,r,o,i,a={}){je(a,"settings");const s=Qe(t,i);if(s)return s;const c=Ye({name:o,target:i,settings:{...a,contract:e.contract,logger:e.logger,brokerManaged:!0}},{actions:r,processManager:n,cleanup:()=>{Je(t,c)}});return function(e,t){e.add(t)}(t,c),c}function Xe(e,t){return e.getById(t)}function et(e,t){if("object"==typeof t&&null!==t){return Qe(e,t)??null}if("string"==typeof t){const n=Xe(e,t)??function(e,t){return e.getByName(t)}(e,t);return n??null}return null}function tt(e){return e.getAll()}function nt(e){return tt(e).map(e=>e.toJSON())}const rt=a({whitelist:a([]),blacklist:a([]),contractExtension:!1,logLevel:"error"});function ot(e,t,n){try{const n=e(t);return Boolean(n)}catch(e){return n.error("Security policy threw an error:",e),!1}}function it(e,t){const{state:n,processManager:r,logger:o}=e,i=t.data;if(!O(i))return;const a=i.processId,s=i.contract,c=i.security,u=r.get(a);if(!u)return;if(u.isActive())return;try{te(s)}catch{return void u.sendAction({type:"[nexus] connection-request-cancelled",processId:a,senderId:n.id})}if(n.settings.securityPolicy){if(!ot(n.settings.securityPolicy,t,o))return void u.sendAction({type:"[nexus] connection-request-cancelled",processId:a,senderId:n.id})}let d;if(c){const e=c.negotiated;u.setNegotiatedProtocol(e),o.info(`${n.name} accepted security protocol: ${e}`),"none"===e&&u.setSecurityReady(!0),d={active:"none"!==e,protocol:e}}u.activate(t.origin,s),u.sendAction({type:"[nexus] connection-opened",processId:a,senderId:n.id,...d&&{security:d}}),r.remove(a),u.notifyEvent("open",{origin:t.origin,contract:s})}function at(e,t){const n=t.source;if(n){const t=e.getByWindow(n);if(t)return t}return e.getById(t.data.senderId)}function st(e,t){const{state:n,registry:r,processManager:o}=e,i=t.data.processId,a=at(r,t)||o.get(i);a&&(a.cancel(!1),a.sendAction({type:"[nexus] connection-request-cancelled-acknowledged",processId:i,senderId:n.id}),o.remove(i),a.notifyEvent("cancel",{notify:!0}))}function ct(e,t){const{processManager:n}=e,r=t.data.processId,o=n.get(r);o&&(n.remove(r),o.notifyEvent("cancel",{notify:!1}))}function ut(e,t){const{state:n,registry:r,processManager:o}=e,i=t.data;if(!("processId"in i))return;const a=i.processId,s=at(r,t);s&&s.isActive()&&(s.disconnect(!1),s.sendAction({type:"[nexus] connection-closed-acknowledged",processId:a,senderId:n.id}),o.remove(a),s.notifyEvent("close",{notify:!0}))}function dt(e,t){const{processManager:n}=e,r=t.data.processId,o=n.get(r);o&&(n.remove(r),o.notifyEvent("close",{notify:!1}))}function lt(e,t){const{processManager:n}=e,r=t.data,o=r.processId,i=r.error,a=n.get(o);a&&(n.remove(o),a.notifyEvent("deny",{error:i,origin:t.origin}))}function ft(e,t){const{registry:n}=e,r=at(n,t);r&&r.destroy(!1)}function pt(e,t){const{processManager:n}=e,r=t.data;if(!(e=>"processId"in e)(r))return;const o=r.processId,i=n.get(o);if(!i)return;const a=r.error;i.notifyEvent("invalid",{reason:a,origin:t.origin})}var gt={$schema:"http://json-schema.org/draft-07/schema#",title:"Message",type:"object",required:["type"],properties:{type:{type:"string",minLength:1},data:{description:"Arbitrary message payload"},timestamp:{type:"number"}},additionalProperties:!0};const mt=globalThis.JSON,yt=mt.parse,ht=mt.stringify,vt=globalThis.Number,bt=globalThis.parseInt,wt=globalThis.isNaN,Ct=globalThis.isFinite,$t=vt.isInteger,Et=bt,Nt=wt,Tt=Ct;function St(e,t,n=!0,r=!1,o){const i=U();if(e.definitions)for(const[t,n]of c(e.definitions))i.set(`#/definitions/${t}`,n);return{path:"",errors:[],rootSchema:e,definitions:i,collectAllErrors:n,strictPatterns:r,patternSafetyChecker:o,validate:t}}function It(e,t){const n=String(t).replace(/~/g,"~0").replace(/\//g,"~1");return{...e,path:`${e.path}/${n}`}}function At(e,t,n,r,o){e.errors.push({message:t,path:e.path||"/",instance:n,code:r,params:o})}function Ot(e){return e.collectAllErrors||0===e.errors.length}function xt(e,t){if(e===t)return!0;if(null===e||null===t)return!1;if(typeof e!=typeof t)return!1;if("object"==typeof e){if(G(e)&&G(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!xt(e[n],t[n]))return!1;return!0}if(G(e)||G(t))return!1;const n=s(e),r=s(t);if(n.length!==r.length)return!1;for(const r of n){if(!p(t,r))return!1;if(!xt(e[r],t[r]))return!1}return!0}return!1}const kt=globalThis.RegExp,Pt=globalThis.Reflect,Lt=(e,t)=>Pt.construct(kt,[e,t]),Rt=globalThis.URL,Mt=globalThis.Reflect,qt=(e,t)=>Mt.construct(Rt,[e,t]);"function"==typeof Rt.createObjectURL&&Rt.createObjectURL.bind(Rt),"function"==typeof Rt.revokeObjectURL&&Rt.revokeObjectURL.bind(Rt);const _t={"date-time":e=>{if(!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/.test(e))return!1;const t=ge(e);return!Nt(t)},date:e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;const[t,n,r]=e.split("-").map(Number),o=fe(me(t,n-1,r));return o.getUTCFullYear()===t&&o.getUTCMonth()===n-1&&o.getUTCDate()===r},time:e=>{const t=e.match(/^(\d{2}):(\d{2}):(\d{2})/);if(!t)return!1;const n=Number(t[1]),r=Number(t[2]),o=Number(t[3]);if(n>23||r>59||o>59)return!1;const i=e.slice(8);return""===i||(!!i.match(/^\.\d{1,9}$/)||(!!i.match(/^(Z|[+-]\d{2}:\d{2})$/)||!!i.match(/^\.\d{1,9}(Z|[+-]\d{2}:\d{2})$/)))},email:e=>/^[^\s@]+@[^\s@.]+\.[^\s@.]+$/.test(e),hostname:e=>{if(e.length>253||0===e.length)return!1;const t=e.split(".");for(const e of t){if(0===e.length||e.length>63)return!1;if(!/^[a-zA-Z0-9]$/.test(e[0]))return!1;if(e.length>1&&!/^[a-zA-Z0-9]$/.test(e[e.length-1]))return!1;for(let t=1;t<e.length-1;t++)if(!/^[a-zA-Z0-9-]$/.test(e[t]))return!1}return!0},ipv4:e=>{const t=e.split(".");return 4===t.length&&t.every(e=>{const t=Et(e,10);return!Nt(t)&&t>=0&&t<=255&&e===String(t)})},ipv6:e=>{if("::"===e)return!0;if(!e.includes("::")){const t=e.split(":");if(8!==t.length)return!1;const n=/^[0-9a-fA-F]{1,4}$/;return t.every(e=>n.test(e))}const t=e.split("::");if(2!==t.length)return!1;const n=t[0]?t[0].split(":").filter(Boolean):[],r=t[1]?t[1].split(":").filter(Boolean):[];if(n.length+r.length>7)return!1;const o=/^[0-9a-fA-F]{1,4}$/;return n.every(e=>o.test(e))&&r.every(e=>o.test(e))},uri:e=>{try{return qt(e),!0}catch{return!1}},"uri-reference":e=>{try{return qt(e,"http://example.com"),!0}catch{return!1}},uuid:e=>/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(e),regex:e=>{try{return Lt(e),!0}catch{return!1}},"json-pointer":e=>{if(""===e)return!0;if(!e.startsWith("/"))return!1;const t=e.slice(1).split("/"),n=/^([^/~]|~[01])*$/;return t.every(e=>n.test(e))}};function jt(e,t,n){const r=t.items;if(void 0===r)return!0;let o=!0;if(G(r)){for(let t=0;t<r.length&&t<e.length;t++){const i=r[t];if(!i)continue;const a=It(n,t);if(!n.validate(e[t],i,a)&&(o=!1,!Ot(n)))return!1}e.length>r.length&&(function(e,t,n,r){const o=t.additionalItems;if(void 0===o)return!0;let i=!0;if(!1===o)e.length>r&&(At(n,`Array has too many items. Expected at most ${r}, got ${e.length}`,e,"additionalItems",{limit:r,actual:e.length}),i=!1);else if("object"==typeof o)for(let t=r;t<e.length;t++){const r=It(n,t);if(!n.validate(e[t],o,r)&&(i=!1,!Ot(n)))return!1}return i}(e,t,n,r.length)||(o=!1))}else for(let t=0;t<e.length;t++){const i=It(n,t);if(!n.validate(e[t],r,i)&&(o=!1,!Ot(n)))return!1}return o}const Dt={string:e=>"string"==typeof e,number:e=>"number"==typeof e&&Tt(e),integer:e=>"number"==typeof e&&Tt(e)&&$t(e),boolean:e=>"boolean"==typeof e,array:e=>G(e),object:e=>null!==e&&"object"==typeof e&&!G(e),null:e=>null===e};function Bt(e,t,n){const r=t.type;if(void 0===r)return!0;const o=G(r)?r:[r];for(const t of o){const n=Dt[t];if(n&&n(e))return!0;if("number"===t&&Dt.integer?.(e))return!0}const i=function(e){if(null===e)return"null";if(G(e))return"array";const t=typeof e;if("number"===t){const t=e;return Tt(t)&&$t(t)?"integer":"number"}return t}(e);return At(n,`Expected type ${o.join(" or ")} but got ${i}`,e,"type",{expected:o,actual:i}),!1}function Ut(e,t,n){const r=St(t,Wt,!0,!1,void 0);return{valid:Wt(e,t,r),errors:r.errors}}function Wt(e,t,n){if(t.$ref){const r=function(e,t){const n=t.definitions.get(e);if(n)return n;if(!e.startsWith("#"))return;if("#"===e)return t.rootSchema;const r=e.slice(1);if(!r.startsWith("/"))return;const o=r.split("/").slice(1).map(e=>e.replace(/~1/g,"/").replace(/~0/g,"~"));let i=t.rootSchema;for(const e of o){if(null===i||"object"!=typeof i)return;i=i[e]}if(i&&"object"==typeof i){const n=i;return t.definitions.set(e,n),n}}(t.$ref,n);return!r||Wt(e,r,n)}let r=!0;if(!Bt(e,t,n)&&(r=!1,!Ot(n)))return!1;if(!function(e,t,n){if(!t.enum)return!0;for(const n of t.enum)if(xt(e,n))return!0;return At(n,`Value must be one of: ${t.enum.map(e=>ht(e)).join(", ")}`,e,"enum",{allowedValues:t.enum}),!1}(e,t,n)&&(r=!1,!Ot(n)))return!1;if("string"==typeof e){if(!function(e,t,n){let r=!0;if(void 0!==t.minLength&&e.length<t.minLength&&(At(n,`String must be at least ${t.minLength} characters, got ${e.length}`,e,"minLength",{limit:t.minLength,actual:e.length}),r=!1,!Ot(n)))return!1;if(void 0!==t.maxLength&&e.length>t.maxLength&&(At(n,`String must be at most ${t.maxLength} characters, got ${e.length}`,e,"maxLength",{limit:t.maxLength,actual:e.length}),r=!1,!Ot(n)))return!1;if(void 0!==t.pattern){if(n.patternSafetyChecker){const o=n.patternSafetyChecker(t.pattern);if(!o.safe)return At(n,`Unsafe regex pattern: ${o.reason??"Pattern may cause ReDoS"}`,e,"pattern",{pattern:t.pattern,reason:o.reason}),r=!1,!!Ot(n)&&r}try{if(!Lt(t.pattern).test(e)&&(At(n,`String does not match pattern: ${t.pattern}`,e,"pattern",{pattern:t.pattern}),r=!1,!Ot(n)))return!1}catch(o){if(n.strictPatterns&&(At(n,`Invalid regex pattern: ${t.pattern}`,e,"pattern",{pattern:t.pattern,error:o instanceof Error?o.message:"Invalid regex"}),r=!1,!Ot(n)))return!1}}return r}(e,t,n)&&(r=!1,!Ot(n)))return!1;if(!function(e,t,n){if(!t.format)return!0;const r=_t[t.format];return!r||!!r(e)||(At(n,`String does not match format '${t.format}'`,e,"format",{format:t.format}),!1)}(e,t,n)&&(r=!1,!Ot(n)))return!1}if("number"==typeof e&&!function(e,t,n){let r=!0;if(void 0!==t.minimum){const o=!0===t.exclusiveMinimum;if((o?e<=t.minimum:e<t.minimum)&&(At(n,`Number must be ${o?"greater than":"at least"} ${t.minimum}, got ${e}`,e,"minimum",{limit:t.minimum,exclusive:o,actual:e}),r=!1,!Ot(n)))return!1}if(void 0!==t.maximum){const o=!0===t.exclusiveMaximum;if((o?e>=t.maximum:e>t.maximum)&&(At(n,`Number must be ${o?"less than":"at most"} ${t.maximum}, got ${e}`,e,"maximum",{limit:t.maximum,exclusive:o,actual:e}),r=!1,!Ot(n)))return!1}if(void 0!==t.multipleOf&&t.multipleOf>0){const o=b(e%t.multipleOf),i=1e-10;if(o>i&&t.multipleOf-o>i&&(At(n,`Number must be a multiple of ${t.multipleOf}, got ${e}`,e,"multipleOf",{multipleOf:t.multipleOf,actual:e}),r=!1,!Ot(n)))return!1}return r}(e,t,n)&&(r=!1,!Ot(n)))return!1;if(G(e)){if(!jt(e,t,n)&&(r=!1,!Ot(n)))return!1;if(!function(e,t,n){let r=!0;if(void 0!==t.minItems&&e.length<t.minItems&&(At(n,`Array must have at least ${t.minItems} items, got ${e.length}`,e,"minItems",{limit:t.minItems,actual:e.length}),r=!1,!Ot(n)))return!1;if(void 0!==t.maxItems&&e.length>t.maxItems&&(At(n,`Array must have at most ${t.maxItems} items, got ${e.length}`,e,"maxItems",{limit:t.maxItems,actual:e.length}),r=!1,!Ot(n)))return!1;if(!0===t.uniqueItems)for(let t=0;t<e.length;t++)for(let o=t+1;o<e.length;o++)if(xt(e[t],e[o])&&(At(n,`Array items must be unique. Duplicate found at indices ${t} and ${o}`,e,"uniqueItems"),r=!1,!Ot(n)))return!1;return r}(e,t,n)&&(r=!1,!Ot(n)))return!1}if(null!==e&&"object"==typeof e&&!G(e)){const o=e;if(!function(e,t,n){if(!t.properties)return!0;let r=!0;for(const[o,i]of c(t.properties))if(p(e,o)){const t=It(n,o);if(!n.validate(e[o],i,t)&&(r=!1,!Ot(n)))return!1}return r}(o,t,n)&&(r=!1,!Ot(n)))return!1;if(!function(e,t,n){if(!t.required)return!0;let r=!0;for(const o of t.required)if(!p(e,o)&&(At(n,`Missing required property: ${o}`,void 0,"required",{missing:o}),r=!1,!Ot(n)))return!1;return r}(o,t,n)&&(r=!1,!Ot(n)))return!1;if(!function(e,t,n){if(!t.patternProperties)return!0;let r=!0;const o=[];for(const[i,a]of c(t.patternProperties)){if(n.patternSafetyChecker){const t=n.patternSafetyChecker(i);if(!t.safe){if(At(n,`Unsafe regex pattern in patternProperties: ${t.reason??"Pattern may cause ReDoS"}`,e,"patternProperties",{pattern:i,reason:t.reason}),r=!1,!Ot(n))return!1;continue}}try{o.push({regex:Lt(i),schema:a})}catch(t){if(n.strictPatterns&&(At(n,`Invalid regex pattern in patternProperties: ${i}`,e,"patternProperties",{pattern:i,error:t instanceof Error?t.message:"Invalid regex"}),r=!1,!Ot(n)))return!1}}for(const t of s(e))for(const{regex:i,schema:a}of o)if(i.test(t)){const o=It(n,t);if(!n.validate(e[t],a,o)&&(r=!1,!Ot(n)))return!1}return r}(o,t,n)&&(r=!1,!Ot(n)))return!1;if(!function(e,t,n){const r=t.additionalProperties;if(void 0===r)return!0;const o=J();if(t.properties)for(const e of s(t.properties))o.add(e);const i=[];if(t.patternProperties)for(const e of s(t.patternProperties))if(!n.patternSafetyChecker||n.patternSafetyChecker(e).safe)try{i.push(Lt(e))}catch{}let a=!0;for(const t of s(e))if(!o.has(t)&&!i.some(e=>e.test(t)))if(!1===r){if(At(n,`Additional property not allowed: ${t}`,e[t],"additionalProperties",{property:t}),a=!1,!Ot(n))return!1}else if("object"==typeof r){const o=It(n,t);if(!n.validate(e[t],r,o)&&(a=!1,!Ot(n)))return!1}return a}(o,t,n)&&(r=!1,!Ot(n)))return!1;if(!function(e,t,n){let r=!0;const o=s(e).length;return!(void 0!==t.minProperties&&o<t.minProperties&&(At(n,`Object must have at least ${t.minProperties} properties, got ${o}`,e,"minProperties",{limit:t.minProperties,actual:o}),r=!1,!Ot(n)))&&!(void 0!==t.maxProperties&&o>t.maxProperties&&(At(n,`Object must have at most ${t.maxProperties} properties, got ${o}`,e,"maxProperties",{limit:t.maxProperties,actual:o}),r=!1,!Ot(n)))&&r}(o,t,n)&&(r=!1,!Ot(n)))return!1;if(!function(e,t,n){if(!t.dependencies)return!0;let r=!0;for(const[o,i]of c(t.dependencies))if(p(e,o))if(G(i)){for(const t of i)if(!p(e,t)&&(At(n,`Property '${o}' requires property '${t}' to also be present`,e,"dependencies",{property:o,required:t}),r=!1,!Ot(n)))return!1}else if(!n.validate(e,i,n)&&(r=!1,!Ot(n)))return!1;return r}(o,t,n)&&(r=!1,!Ot(n)))return!1}return!(!function(e,t,n){const r=t.allOf;if(!r||0===r.length)return!0;let o=!0;for(let t=0;t<r.length;t++){const i=r[t];if(i&&!n.validate(e,i,n)&&(o=!1,!Ot(n)))return!1}return o}(e,t,n)&&(r=!1,!Ot(n)))&&(!(!function(e,t,n){const r=t.anyOf;if(!r||0===r.length)return!0;for(const t of r){const r=St(n.rootSchema,n.validate,!1);if(l(r,"path",{value:n.path,writable:!1}),n.validate(e,t,r))return!0}return At(n,"Value does not match any of the allowed schemas (anyOf)",e,"anyOf"),!1}(e,t,n)&&(r=!1,!Ot(n)))&&(!(!function(e,t,n){const r=t.oneOf;if(!r||0===r.length)return!0;let o=0;for(const t of r){const r=St(n.rootSchema,n.validate,!1);if(l(r,"path",{value:n.path,writable:!1}),n.validate(e,t,r)&&(o++,o>1))break}return 1===o||(0===o?At(n,"Value does not match any of the schemas (oneOf)",e,"oneOf"):At(n,`Value matches ${o} schemas but must match exactly one (oneOf)`,e,"oneOf",{matches:o}),!1)}(e,t,n)&&(r=!1,!Ot(n)))&&(!(!function(e,t,n){const r=t.not;if(!r)return!0;const o=St(n.rootSchema,n.validate,!1);return l(o,"path",{value:n.path,writable:!1}),!n.validate(e,r,o)||(At(n,"Value should NOT match the schema",e,"not"),!1)}(e,t,n)&&(r=!1,!Ot(n)))&&r)))}const Ft=function(e){const t=function(e){return t=>Ut(t,e)}(e);return e=>{const n=t(e);return{valid:n.valid,errors:n.errors.map(e=>({message:e.message,path:e.path,value:e.instance}))}}}(gt);function Vt(e,t){const{state:n,registry:r,logger:o}=e,i=t.data;if(!(e=>"data"in e)(i))return;const a=i.data,s=at(r,t);if(!s||!s.isActive())return;const c=function(e){return Ft(e)}(a);c.valid?s.getAcceptedTypes().includes(a.type)?s.notifyMessage(a):o.info(`${n.name} dropped message type '${a.type}' not accepted by the ${s.getName()} channel contract`):o.info(`${n.name} ignored message from ${s.getName()}`)}function zt(e,t){const{state:n,processManager:r,logger:o}=e,i=t.data,a=i.processId,s=i.security,c=r.get(a);c&&(r.remove(a),s?(c.getNegotiatedProtocol()||c.setNegotiatedProtocol(s.protocol),c.setSecurityReady(!0),o.info(`${n.name} security ready: protocol=${s.protocol}, active=${s.active}`),c.notifyEvent("security-ready",{protocol:s.protocol,active:s.active})):c.setSecurityReady(!0),c.notifyEvent("open",{origin:t.origin}))}function Kt(e,t){for(const n of e.supported)if(t.includes(n))return{negotiated:n,isPreferred:n===e.preferred};return{negotiated:"none",isPreferred:"none"===e.preferred}}function Gt(e,t){return a({negotiated:e})}const Ht=["none"];function Yt(e,t){const{state:n,registry:r,processManager:o,actions:i,logger:a}=e,s=t.data,c=s.senderId;if(!O(s))return;const u=s.processId,d=s.contract,l=s.security;let f,p=Xe(r,c);if(p||(p=Ze(n,r,o,i,c,t.source,{})),o.create(p),p.isActive())if(c===p.id){const e=l?Gt(Kt(l,Ht).negotiated):void 0;p.sendAction({type:"[nexus] connection-request-accepted",processId:u,senderId:n.id,contract:n.contract,...e&&{security:e}})}else a.info(`${n.name} detected channel [${p.getName()}] reloaded.`);else{try{te(d)}catch{return p.sendAction({type:"[nexus] connection-request-denied",processId:u,senderId:n.id,error:"Invalid contract."}),void o.remove(u)}if(n.settings.securityPolicy){if(!ot(n.settings.securityPolicy,t,a))return p.sendAction({type:"[nexus] connection-request-denied",processId:u,senderId:n.id,error:"Not accepted."}),void o.remove(u)}if(l&&p.setPendingSecurityRequest(l),!p.isReadyToConnect())return p.scheduleActivation(c,t.origin,d,u),void a.info(`${n.name} scheduled activation for channel ${p.getName()}`);if(l){const e=Kt(l,Ht);p.setNegotiatedProtocol(e.negotiated),f=Gt(e.negotiated),a.info(`${n.name} negotiated security protocol: ${e.negotiated}`)}p.activate(t.origin,d),p.sendAction({type:"[nexus] connection-request-accepted",processId:u,senderId:n.id,contract:n.contract,...f&&{security:f}})}}class Qt extends Error{code;originalCause;constructor(e,t,n){super(e),this.name="SecurityError",this.code=t,this.originalCause=n,f(this,Qt.prototype)}}function Jt(e,t,n){const{state:r,registry:o,logger:i}=e,a=n?.origin,s=n?.data;if(!(s instanceof Uint8Array))return void i.warn("routeEncryptedMessage called with non-Uint8Array payload");const c=function(e,t){const n=tt(e);for(const e of n){const n=e;if(!n.isActive||"function"!=typeof n.isActive)continue;if(!n.isActive())continue;if(n.toJSON().origin===t)return n}return}(o,a);if(!c)return void i.info(`${r.name} ignored encrypted message - no channel for origin ${a}`);const u=c.getSecurityTransport();if(!u)return void i.warn(`${r.name} received encrypted message but channel has no security transport`);if(!u.isReady())return void i.warn(`${r.name} received encrypted message but security transport not ready`);const d=u;if("function"==typeof d.handleReceive)try{d.handleReceive(s)}catch(e){const t=function(e){if(e instanceof Qt)return{message:e.message,code:e.code,cause:e.originalCause};if(e instanceof Error){const t=function(e){const t=e.message.toLowerCase();return t.includes("decrypt")||t.includes("invalid key")||t.includes("corrupted")||t.includes("cipher")?"decryption_failed":t.includes("deobfuscat")||t.includes("time window")||t.includes("clock skew")||t.includes("timestamp")?"deobfuscation_failed":t.includes("transport")||t.includes("connection")||t.includes("network")?"transport_error":"unknown"}(e);return{message:e.message,code:t,cause:e}}return{message:String(e),code:"unknown"}}(e);!function(e,t,n){const r=`${t} security error:`;"unknown"===n.code?e.error(r,n.message,n.cause):e.warn(r,`[${n.code}]`,n.message)}(i,c.getName(),t),c.notifyEvent("security-error",t)}else i.error("Security transport missing handleReceive method")}function Zt(e){je(e.contract,"config.contract"),je(e.settings,"config.settings"),function(e){if(null==e)throw h("Name cannot be null or undefined");if("string"!=typeof e)throw h("Name must be a string");if(0===e.trim().length)throw h("Name cannot be empty")}(e.name),te(e.contract);const t=e.window??("undefined"!=typeof window?window:void 0);if(!t)throw h("Cannot create broker: no window is available. Pass an explicit `window` in the broker config when running outside a browser environment.");const n={...rt,...e.settings,contract:e.contract},r=function(e={}){return Re(e)}({level:n.logLevel??"error",customLogger:n.logger}),o={id:T(),name:e.name,window:t,contract:e.contract,settings:n,logger:r},i=ee(),s=(()=>{const e=U();return a({create:F(e),get:V(e),remove:z(e),clear:W(e),track:(t,n)=>{e.set(t,n)},has:t=>e.has(t)})})(),u=function(){const e=U();return a({register:(t,n)=>{if(!n)throw h(`Cannot register null/undefined provider for ${t}`);e.set(t,n)},unregister:t=>{e.delete(t)},get:t=>{if("none"!==t)return e.get(t)},has:t=>"none"===t||e.has(t),getSupportedVersions:()=>{const t=["none"];return e.has("v1")&&t.unshift("v1"),e.has("v2")&&t.unshift("v2"),t}})}();if(e.settings?.security?.protocols){const t=e.settings.security.protocols;t.v1&&u.register("v1",t.v1),t.v2&&u.register("v2",t.v2)}const d=a({requestConnection:j(l={getBrokerId:()=>o.id,getContract:()=>o.contract}),acceptConnection:x(l),denyConnection:L(l),cancelConnection:k(l),openConnection:_(l),closeConnection:P(l),destroyConnection:R(l),newMessage:q(l),invalidRequest:M(l)});var l;const f=function(e){const t=U();return c(e).forEach(([e,n])=>{t.set(e,n)}),t}({[A.REQUEST_CONNECTION]:Yt,[A.ACCEPT_CONNECTION]:it,[A.DENY_CONNECTION]:lt,[A.CANCEL_CONNECTION]:st,[A.CANCEL_CONNECTION_ACKNOWLEDGED]:ct,[A.CLOSE_CONNECTION]:ut,[A.CLOSE_CONNECTION_ACKNOWLEDGED]:dt,[A.OPEN_CONNECTION]:zt,[A.DESTROY_CONNECTION]:ft,[A.NEW_MESSAGE]:Vt,[A.INVALID_REQUEST]:pt}),p={state:o,registry:i,processManager:s,actions:d,logger:r};t.addEventListener("message",e=>{const t=e?.origin;!function(e,t=[],n=[]){return t&&t.length>0?t.includes(e):!(n&&n.length>0&&n.includes(e))}(t,o.settings.whitelist,o.settings.blacklist)?r.info(`${o.name} ignored message from ${t}`):e.data instanceof Uint8Array?Jt(p,0,e):function(e,t,n){const{logger:r}=t;try{const o=n?.data,i=o?.type;if(!i)return void r.warn("Received message without action type");!function(e,t,n){e.debug(`Action ${n}:`,t.type,t)}(r,o,"received");const a=e.get(i);if(!a)return void r.warn(`No handler for action type: ${i}`);a(t,n)}catch(e){r.error("Error routing message:",e)}}(f,p,e)});const g={id:o.id,name:o.name,settings:o.settings,get contract(){return o.contract},get channels(){return nt(i)},get acceptedActionTypes(){return o.contract.accepted.map(e=>e.type)},addChannel:(e,t,n)=>Ze(o,i,s,d,e,t,n??{}),getChannel:e=>et(i,e),removeChannel(e){const t=et(i,e);t&&function(e,t){t.destroy(!1),Je(e,t)}(i,t)},setSecurityPolicy:e=>(function(e){if("function"!=typeof e)throw h("Security policy must be a function that returns true or false.")}(e),o.settings.securityPolicy=e,g),extendContract(e){if(!o.settings.contractExtension)throw h("Original contract cannot be extended.");return te(e),o.contract=function(...e){const t={accepted:[],emitted:[]};return e.forEach(e=>{e&&e.accepted&&e.emitted&&(e.accepted.forEach(e=>{t.accepted.some(t=>t.type===e.type)||t.accepted.push(e)}),e.emitted.forEach(e=>{t.emitted.some(t=>t.type===e.type)||t.emitted.push(e)}))}),a({accepted:a(t.accepted),emitted:a(t.emitted)})}(o.contract,e),g},toJSON:()=>({id:o.id,name:o.name,settings:o.settings,acceptedActionTypes:o.contract.accepted.map(e=>e.type),channels:nt(i)}),registerProtocol:(e,t)=>(u.register(e,t),g),unregisterProtocol:e=>(u.unregister(e),g),hasProtocol:e=>u.has(e),getSupportedProtocols:()=>u.getSupportedVersions(),get logger(){return o.logger}};return a(g)}const Xt=a({emitted:a([{type:"MESSAGE",description:"Generic message"},{type:"DATA",description:"Generic data transfer"},{type:"EVENT",description:"Generic event"}]),accepted:a([{type:"MESSAGE",description:"Generic message"},{type:"DATA",description:"Generic data transfer"},{type:"EVENT",description:"Generic event"},{type:"ACK",description:"Acknowledgment"}])}),en=globalThis.Reflect,tn=en.get,nn=en.has,rn=en.ownKeys,on=en.getOwnPropertyDescriptor;let an=null;function sn(){return an||(an=Zt({name:"default-broker",contract:Xt})),an}new Proxy({},{get:(e,t)=>tn(sn(),t),has:(e,t)=>nn(sn(),t),ownKeys:()=>rn(sn()),getOwnPropertyDescriptor:(e,t)=>{const n=on(sn(),t);return n?{...n,configurable:!0}:void 0}});const cn=a({Beat:"__hf:beat",Size:"__hf:size",Request:"__hf:request",Response:"__hf:response"});function un(e){return e.map(e=>yt(ht(e)))}function dn(e,t){const n=document.createElement(e);t?.inlineStyle&&d(n.style,t.inlineStyle);const r=[];t?.classNames&&G(t.classNames)&&r.push(...t.classNames),t?.className&&r.push(t.className),n.classList.add(...function(e){return e.filter(e=>![void 0,null,""].includes(e)&&""!==e.trim())}(function(e){return H(J(e))}(r)));let o=!1;const i=e=>{if(!e)return;const t="ref"in e?e.ref:e;n.contains(t)||n.appendChild(t)},a=e=>{if(!e)return;const t="ref"in e?e.ref:e;t.contains(n)||t.appendChild(n)},s=e=>e?`opacity ${(e/1e3).toFixed(1)}s`:"none",c=e=>{n.style.transition=s(e),n.style.opacity="1",o=!0},u=e=>{n.style.transition=s(e),n.style.opacity="0",o=!1},l=e=>{if(!e)return;const t="ref"in e?e.ref:e;n.contains(t)&&n.removeChild(t)},f=()=>{const e=n.parentElement;e&&e.removeChild(n)};return{get addChild(){return i},get attachTo(){return a},get show(){return c},get hide(){return u},get removeChild(){return l},get detachFromParent(){return f},get ref(){return n},get visible(){return o}}}function ln(e){return dn("div",e)}const fn=globalThis.setTimeout,pn=globalThis.setInterval,gn=globalThis.clearTimeout,mn=globalThis.clearInterval,yn=e=>{gn(e)};function hn(e){const t=dn("iframe",{inlineStyle:{border:"none",width:"100%",height:"100%"}}).ref;return t.src=e,t.setAttribute("allowtransparency","true"),t}const vn=a({coverage:.6,aspectRatio:530/550,maxCoverage:.9});function bn(){const e=window.innerWidth,t=window.innerHeight;if(!e||!t)return{width:530,height:550};let n=t*vn.coverage,r=n*vn.aspectRatio;const o=e*vn.maxCoverage;return r>o&&(r=o,n=r/vn.aspectRatio),{width:C(r),height:C(n)}}const wn=a({get width(){return bn().width},get height(){return bn().height}});function Cn(e,t){const n=window.open(e,"_blank",t);return{target:n,cleanup:()=>{n&&!n.closed&&n.close()}}}const $n=a({embedded:({options:e})=>{const t=function(e){if("string"!=typeof e)return e;const t=document.querySelector(e);if(null===t)throw h(`Shell container not found for selector "${e}".`);return t}(e.container),n=hn(e.url??"");return t.appendChild(n),{target:n.contentWindow,element:n,frame:n,cleanup:()=>n.remove()}},dialog:({options:e,requestClose:t})=>{const n=ln({inlineStyle:{position:"fixed",inset:"0",zIndex:"2147483647"}});if(e.dialogOverlay??1){const e=ln({inlineStyle:{position:"absolute",inset:"0",background:"rgba(0, 0, 0, 0.5)"}});e.ref.addEventListener("click",()=>t()),n.addChild(e)}const r=ln({inlineStyle:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:`${e.dialogWidth??wn.width}px`,height:`${e.dialogHeight??wn.height}px`,background:"#fff"}}),o=dn("button",i);var i;o.ref.type="button",o.ref.textContent="×",o.ref.setAttribute("aria-label","Close"),o.ref.addEventListener("click",()=>t());const a=hn(e.url??"");r.addChild(o),r.addChild(a),n.addChild(r),n.attachTo(document.body);const s=!1!==e.closeOnEscape,c=e=>{s&&"Escape"===e.key&&t()};return document.addEventListener("keydown",c),{target:a.contentWindow,element:n.ref,cleanup:()=>{document.removeEventListener("keydown",c),n.ref.remove()}}},popup:({options:e})=>{const t=e.dialogWidth??wn.width,n=e.dialogHeight??wn.height;return Cn(e.url??"",`width=${t},height=${n},scrollbars=no`)},standalone:({options:e})=>Cn(e.url??"")});function En(e){return $n[e]}function Nn(e){let t,n=0,r=null;const o=()=>{(e=>{mn(e)})(t),t=void 0};return{beat(){n=0,r=pe()},start(){void 0===t&&(n=0,t=((e,t,...n)=>pn(e,t,...n))(()=>{n+=1,n>=3&&(o(),e(n,r))},1e3))},stop:o}}const Tn=globalThis.Promise,Sn=globalThis.Reflect,In=Tn.resolve.bind(Tn),An=Tn.reject.bind(Tn);Tn.all.bind(Tn),Tn.race.bind(Tn),Tn.allSettled.bind(Tn),Tn.any.bind(Tn),Tn.withResolvers?.bind(Tn);function On(e,t){let n={};const r={};let o=0;const i=(n,r)=>t(cn.Response,{correlationId:n.correlationId,from:e,innerType:n.innerType,...r}),s=e=>{const t=(e=>{const t=n[e];return t&&(yn(t.timer),delete n[e]),t})(e.correlationId);t&&(e.ok?t.resolve(e.payload):t.reject(h(e.error??`Request '${e.innerType}' failed.`)))};return a({request:(r,i,a)=>{return s=(s,c)=>{const u=a?.timeoutMs??3e4,d=`${e}-${o+=1}`,l=((e,t,...n)=>fn(e,t,...n))(()=>{delete n[d],c(h(`Request '${r}' timed out after ${u}ms.`))},u);n[d]={resolve:s,reject:c,timer:l},t(cn.Request,{correlationId:d,from:e,innerType:r,payload:i})},Sn.construct(Tn,[s]);var s},handle:(e,t)=>{if(r[e])throw h(`A handler for '${e}' is already registered.`);return r[e]=t,()=>{r[e]===t&&delete r[e]}},dispatch:(t,n)=>{const o="object"==typeof n?n:null;o&&o.from!==e&&(t!==cn.Request?t===cn.Response&&s(o):(e=>{const t=r[e.innerType];t?In().then(()=>t(e.payload)).then(t=>i(e,{ok:!0,payload:t}),t=>i(e,{ok:!1,error:t instanceof Error?t.message:`${t}`})):i(e,{ok:!1,error:`No handler is registered for '${e.innerType}'.`})})(o))},rejectAll:e=>{const t=u(n);n={};for(const n of t)yn(n.timer),n.reject(h(e))}})}function xn(e,t,n,r){let o=null,i=null,s=!1,c=0,u=null,d=null,l=null,f=null;const p=On("host",(e,t)=>o?.send(e,t)),m=e=>n.emit("error",e),y=()=>{i&&(i(),i=null)},v=()=>{u&&(u.stop(),u=null)},b=(e,t)=>{d=null;let n=In();for(const t of[...e.registered].reverse())n=n.then(()=>t.onUnmount?.(e.context)).catch(m);l=n.then(()=>{for(const t of[...e.teardowns].reverse())try{t()}catch(e){m(e)}t(),l=null;const n=f;f=null,n?.()})},w=()=>{o&&(o.destroy(),o=null),s=!1,y()},C=()=>{if(p.rejectAll("The shell was destroyed before the feature responded."),f=null,l)return;v();d?b(d,w):w()},$=()=>{o?o.disconnect():y()},E=w=>{if(C(),l)return void(f=()=>E(w));const N={...t,...w},T=N.displayMode??g.Embedded,S=r.selectMount(T)({options:N,requestClose:$});if(i=S.cleanup,null===S.target)return void n.emit("error",h("Feature window could not be opened."));N.plugins&&N.plugins.length>0&&((e,t,n)=>{const r=a({element:t,displayMode:n}),o=[];for(const t of e)try{const e=t.onMount?.(r);e&&o.push(e)}catch(e){m(e)}d={registered:e,context:r,teardowns:o}})(N.plugins,S.element??null,T),o=e.addChannel(`feature-${c+=1}`,S.target,r.registerSecurity(e,N.protocol,N.sharedKey));const I="content"===N.embedSizing?S.frame:void 0,A=r.createHeartbeatMonitor((e,t)=>((e,t,r)=>{const o=e.onUnresponsive??"emit";"function"!=typeof o?(n.emit("error",h("Feature became unresponsive.")),"unmount"===o&&C()):o({missedBeats:t,lastBeatAt:r,displayMode:e.displayMode??g.Embedded,close:$,destroy:C})})(N,e,t));u=A,o.on("open",()=>{s=!0,n.emit("open"),A.start()}),o.on("close",()=>{if(s=!1,n.emit("close"),v(),p.rejectAll("The feature channel closed before the feature responded."),l)return;d?b(d,y):y()}),o.on("deny",e=>n.emit("error",e)),o.on("invalid",e=>n.emit("error",e)),o.onMessage(e=>{!function(e){return e.startsWith("__hf:")}(e.type)?n.emit(e.type,e.data):e.type===cn.Beat?A.beat():e.type===cn.Size&&I?function(e,t){const n=t?.height;"number"==typeof n&&(e.style.height=`${n}px`)}(I,e.data):p.dispatch(e.type,e.data)}),o.connect()};return a({open:E,close:$,destroy:C,send:(e,t)=>o?.send(e,t),request:(e,t,n)=>o?p.request(e,t,n):An(h(`Cannot send request '${e}': the shell is not open.`)),handle:p.handle,on:n.on,get isOpen(){return s}})}const kn=globalThis.ArrayBuffer,Pn="function"==typeof globalThis.SharedArrayBuffer?globalThis.SharedArrayBuffer:void 0,Ln=globalThis.Uint8Array,Rn=globalThis.Uint8ClampedArray,Mn=globalThis.Uint16Array,qn=globalThis.Uint32Array,_n=globalThis.Int8Array,jn=globalThis.Int16Array,Dn=globalThis.Int32Array,Bn=globalThis.Float32Array,Un=globalThis.Float64Array,Wn=globalThis.BigInt64Array,Fn=globalThis.BigUint64Array,Vn=globalThis.Reflect;function zn(e,t,n){return"number"==typeof e?Vn.construct(Ln,[e]):e instanceof kn||void 0!==Pn&&e instanceof Pn?Vn.construct(Ln,[e,t,n]):Vn.construct(Ln,[e])}Ln.from.bind(Ln),Ln.of.bind(Ln),Rn.from.bind(Rn),Rn.of.bind(Rn),Mn.from.bind(Mn),Mn.of.bind(Mn),qn.from.bind(qn),qn.of.bind(qn),_n.from.bind(_n),_n.of.bind(_n),jn.from.bind(jn),jn.of.bind(jn),Dn.from.bind(Dn),Dn.of.bind(Dn),Bn.from.bind(Bn),Bn.of.bind(Bn),Un.from.bind(Un),Un.of.bind(Un),Wn.from.bind(Wn),Wn.of.bind(Wn),Fn.from.bind(Fn),Fn.of.bind(Fn);const Kn=globalThis.TextEncoder,Gn=globalThis.TextDecoder,Hn=globalThis.Reflect,Yn=()=>Hn.construct(Kn,[]),Qn=(e,t)=>Hn.construct(Gn,[e,t]);let Jn;function Zn(e){return Yn().encode(e)}const Xn=globalThis.crypto.subtle;const er=a({name:"AES-GCM"});const tr=function(e,t){return async function(n,r){if("string"!==ce(n))throw h("Cannot generate key without a password type string");if(0===n.length)throw h("Cannot generate key with an empty string as password");if(!r)throw h("Cannot generate key without a salt");const o=await e.importKey("raw",t(n),{name:"PBKDF2"},!1,["deriveKey"]);return e.deriveKey({name:"PBKDF2",salt:r,iterations:1e5,hash:"SHA-256"},o,{...er,length:256},!1,["encrypt","decrypt"])}}(Xn,Zn);const nr=function(e,t,n){return async function(r,o){if(!r||!r.length)throw h("Cannot decrypt without a message");if(!o)throw h("Cannot decrypt without a password");const i=r.slice(0,16),a=r.slice(16,28),s=r.slice(28),c=await t(o,i),u=await n.decrypt({...er,iv:a},c,s);return e(u)}}(function(e){return(Jn??=Qn("utf8"),Jn).decode(e)},tr,Xn);const rr=function(e,t,n,r){return async function(o,i){if(!o)throw h("Cannot encrypt an empty message.");if(!i)throw h("Cannot encrypt without a password.");const a=t(16),s=t(12),c=await n(i,a),u=zn(await r.encrypt({...er,iv:s},c,e(o))),d=zn(a.byteLength+s.byteLength+u.byteLength);return d.set(a,0),d.set(s,a.byteLength),d.set(u,a.byteLength+s.byteLength),d}}(Zn,function(e){if(!e)throw h("Cannot generate random values without a byte length.");return globalThis.crypto.getRandomValues(zn(e))},tr,Xn);const or=function(e){return async function(t,n,r=0){if("number"!==ce(r)||r<-1||1<r)throw h("Window offset must be -1, 0, or 1.");const o=fe(t.getTime()+r*n*6e4);return await e(N(function(e,t){if(!e||!(e instanceof Date)||Nt(e.getTime()))throw h("Invalid time input");if(t<=0)throw h("Base time window must be positive");const n=e.getTime(),r=60*t*1e3;return fe(w(n/r)*r)}(o,n)).toString())}}(async function(e,t="SHA-256"){try{return H(zn(await Xn.digest(t,Zn(e)))).map(e=>e.toString(16).padStart(2,"0")).join("")}catch{throw h("Error creating hash")}});const ir=function(e){return function(t,n){return a({current:()=>e(t,n,0),previous:()=>e(t,n,-1),next:()=>e(t,n,1)})}}(or);function ar(e){return async(t,n)=>{if(!function(e){return!!e&&e instanceof Uint8Array}(t))throw h("Cannot deobfuscate an invalid packet");let r,o;try{r=await e(t,n)}catch(e){throw h(`Cannot deobfuscate packet. ${e?.message}`)}try{o=yt(r)}catch{throw h("Cannot deobfuscate packet because cannot deserialize decrypted data")}return a(o)}}function sr(e){const t=e;var n,r;return{isValid:"object"===ce(t)&&"origin"in t&&"target"in t&&"data"in t&&(r=t.origin,"string"===ce(r)&&36===r.length&&S(r))&&(n=t.target,"string"===ce(n)&&36===n.length&&S(n))&&!!t.data,pkt:t}}function cr(e){const{isValid:t,pkt:n}=sr(e);return t&&(r=n.data,"string"===ce(r)&&r.length>0);var r}function ur(e){return async(t,n)=>{if(!cr(t))throw h("Cannot obfuscate an invalid packet");let r,o;try{r=ht(t)}catch{throw h("Cannot obfuscate packet because it is not serializable")}try{o=await e(r,n)}catch(e){throw h(`Cannot obfuscate packet. ${e?.message}`)}return o}}function dr(e){return"number"===ce(e)&&e>=1}function lr(e,t,n,r){return(o=1)=>{if(!dr(o))throw h("A valid refresh rate must be provided.");const i=()=>fe();return a({packetObfuscation:async t=>{const r=await n(i(),o,0);return await e(t,r)},packetDeobfuscation:async e=>{const{current:n,previous:a,next:s}=r(i(),o),c=[n,a,s],u=async n=>{try{const r=await n(),o=await t(e,r);if(cr(o))return o}catch{}return null};for(const e of c){const t=await u(e);if(null!==t)return t}throw h("Could not deobfuscate data")}})}}function fr(e){return"function"===ce(e)}function pr(e){return"function"===ce(e)}const gr=function(e,t){return(n,r=1)=>{if(!Te(n))throw h("Cannot create protocol provider without a valid logger");if(!dr(r))throw h("Cannot create protocol provider without a valid refresh rate");return(...o)=>{if(!pr(o[0]))throw h("Cannot create protocol without a valid send function");if(!fr(o[1]))throw h("Cannot create protocol without a valid receive function");let i;const{packetEncryption:s,packetDecryption:c}=e(()=>i),{packetObfuscation:u,packetDeobfuscation:d}=t(r);return a({packetEncryption:s,packetDecryption:c,packetObfuscation:u,packetDeobfuscation:d,send:o[0],receive:e=>{i=e.data.key,o[1](e)},getLogger:()=>n})}}};function mr(e){if(!e)return!1;if(e instanceof Uint8Array)return!0;var t;return"[object Uint8Array]"===(t=e,n.apply(i,t,[]))}function yr(e){const t={valid:!0};return((e,t,n,r)=>{ve(e,t,n,r)})(e,(e,t,n,r)=>{var o;r.valid&&(r.valid=null!==(o=t)&&!["undefined","function","symbol","bigint"].includes(ce(o)))},{depth:[0,"*"]},t),t.valid}var hr="http://json-schema.org/draft-04/schema#",vr="Modified JSON Schema draft v4 that includes the optional '$ref' and 'format'",br={schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},positiveInteger:{type:"integer",minimum:0},positiveIntegerDefault0:{allOf:[{$ref:"#/definitions/positiveInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},minItems:1,uniqueItems:!0}},wr="object",Cr={id:{type:"string",format:"uri"},$schema:{type:"string",format:"uri"},$ref:{type:"string"},format:{type:"string"},title:{type:"string"},description:{type:"string"},default:{},multipleOf:{type:"number",minimum:0,exclusiveMinimum:!0},maximum:{type:"number"},exclusiveMaximum:{type:"boolean",default:!1},minimum:{type:"number"},exclusiveMinimum:{type:"boolean",default:!1},maxLength:{$ref:"#/definitions/positiveInteger"},minLength:{$ref:"#/definitions/positiveIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{anyOf:[{type:"boolean"},{$ref:"#"}],default:{}},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:{}},maxItems:{$ref:"#/definitions/positiveInteger"},minItems:{$ref:"#/definitions/positiveIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},maxProperties:{$ref:"#/definitions/positiveInteger"},minProperties:{$ref:"#/definitions/positiveIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#"}],default:{}},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},enum:{type:"array",minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},$r={exclusiveMaximum:["maximum"],exclusiveMinimum:["minimum"]},Er={id:"/v4",$schema:hr,description:vr,definitions:br,type:wr,properties:Cr,dependencies:$r,default:{}},Nr=Object.freeze({__proto__:null,$schema:hr,default:Er,definitions:br,dependencies:$r,description:vr,id:"/v4",properties:Cr,type:wr});function Tr(e){return"string"===ce(t=e)&&/^[a-f0-9]{64}$/i.test(t);var t}function Sr(e){const t=e;return"object"===ce(t)&&(r=t.pid,"string"===ce(r)&&36===r.length&&S(r))&&function(e){return"string"===ce(e)&&36===e.length&&S(e)}(t.id)&&!!((n=t.sequence)&&"number"===ce(n)&&n>0)&&yr(t.message)&&Ut(t.schema,Nr).valid&&Tr(t.schemaHash);var n,r}const Ir=function(e){return async(t,n)=>{const r=ce(t);if("object"!==r&&"array"!==r)throw h("Cannot encrypt non existent or invalid data");if("string"!==ce(n)||0===n.length)throw h("Cannot encrypt data without a password");let o,i;try{o=ht(t)}catch{throw h("Cannot encrypt data because it is unserializable")}try{i=await e(o,n)}catch{throw h("Cannot encrypt data")}return i}}(rr),Ar=function(e){return async(t,n)=>{if(!(t instanceof Uint8Array))throw h("Cannot decrypt data because it is in the wrong format");if("string"!==ce(n)||0===n.length)throw h("Cannot decrypt data without a password");let r,o;try{r=await e(t,n)}catch{throw h("Cannot decrypt data")}try{o=yt(r)}catch{throw h("Cannot unserialize data")}return a(o)}}(nr),Or=function(e){return async(t,n)=>{if(!function(e){const{isValid:t,pkt:n}=sr(e);return t&&Sr(n.data)}(t))throw h("Cannot encrypt invalid packet");let r;try{r={...t,data:await e(t.data,n)}}catch(e){throw h(`Cannot encrypt packet. ${e?.message}`)}return a(r)}}(Ir),xr=function(e){return async(t,n)=>{if(!function(e){const{isValid:t,pkt:n}=sr(e);return t&&mr(n.data)}(t))throw h("Cannot decrypt invalid packet");let r;try{r={...t,data:await e(t.data,n)}}catch(e){throw h(`Cannot decrypt packet. ${e?.message}`)}return a(r)}}(Ar),kr=ur(rr),Pr=ar(nr),Lr=function(e,t){return a({serializeWithoutEncryption:async t=>{const n={...t.data,message:ht(t.data.message)},r=ht(n),o=e(r);return a({origin:t.origin,target:t.target,data:o})},deserializeWithoutDecryption:async e=>{const n=t(e.data),r=function(e){return a({...e,message:(t=e.message,yt(t))});var t}(yt(n));return a({origin:e.origin,target:e.target,data:r})}})}(e=>Yn().encode(e),e=>Qn().decode(e)),Rr=function(e,t,n){return r=>a({packetEncryption:t=>{const o=r();return o?e(t,o):n.serializeWithoutEncryption(t)},packetDecryption:e=>{const o=r();return o?t(e,o):n.deserializeWithoutDecryption(e)}})}(Or,xr,Lr),Mr=gr(Rr,lr(kr,Pr,or,ir));const qr=function(e,t,n){const r=function(e,t){return(n,r)=>{if(!n||"string"!=typeof n)throw h("PSK must be a non-empty string");return a({packetEncryption:t=>{const o=r();return e(t,o||n)},packetDecryption:e=>{const o=r();return t(e,o||n)}})}}(e,t);return(e,t,o=1)=>{if(!Te(e))throw h("Cannot create protocol provider without a valid logger");if(!t||"string"!=typeof t)throw h("Cannot create protocol provider without a valid shared key");if(!dr(o))throw h("Cannot create protocol provider without a valid refresh rate");return(...i)=>{if(!pr(i[0]))throw h("Cannot create protocol without a valid send function");if(!fr(i[1]))throw h("Cannot create protocol without a valid receive function");let s;const{packetEncryption:c,packetDecryption:u}=r(t,()=>s),{packetObfuscation:d,packetDeobfuscation:l}=n(o);return a({packetEncryption:c,packetDecryption:u,packetObfuscation:d,packetDeobfuscation:l,send:i[0],receive:e=>{s=e.data.key,i[1](e)},getLogger:()=>e})}}}(Or,xr,lr(ur(rr),ar(nr),or,ir));function _r(e,t,n){return"v1"===t?(e.registerProtocol("v1",Mr(e.logger)),{security:{protocol:"v1"}}):"v2"===t?(e.registerProtocol("v2",qr(e.logger,n??"")),{security:{protocol:"v2",sharedKey:n}}):void 0}let jr=0;function Dr(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122}function Br(e,t){const n=function(e){const t=function(e){const t=e.indexOf("://");if(t<=0)return e;for(let n=0;n<t;n+=1){const t=e.charCodeAt(n);if(!(t>=65&&t<=90||t>=97&&t<=122))return e}return e.slice(t+3)}(e);let n="",r=!1;for(let e=0;e<t.length;e+=1)Dr(t.charCodeAt(e))?(r&&n.length>0&&(n+="-"),r=!1,n+=t[e].toLowerCase()):r=!0;return n}(e.name??e.url??("string"==typeof e.container?e.container:""));return n.length>0?`shell-${n}-${t}`:`shell-${t}`}e.DisplayMode=g,e.createShell=function(e){const t=function(){const e={};return a({on:(t,n)=>{const r=e[t]??(e[t]=[]);return r.push(n),()=>{e[t]=r.filter(e=>e!==n)}},emit:(t,n)=>{e[t]?.forEach(e=>e(n))}})}(),n=function(e){const t=()=>[{type:cn.Beat},{type:cn.Size},{type:cn.Request},{type:cn.Response}];return{emitted:[...e.emitted,...t()],accepted:[...e.accepted,...t()]}}(e.contract?function(e){return{emitted:un(e.accepted),accepted:un(e.emitted)}}(e.contract):Xt);return xn(Zt({name:Br(e,jr+=1),contract:n}),e,t,{selectMount:En,registerSecurity:_r,createHeartbeatMonitor:Nn})}});