diff --git a/404.html b/404.html index a6648ece8..79a129a5e 100644 --- a/404.html +++ b/404.html @@ -23,11 +23,11 @@ } whispr - + -

404

How did we get here?
Take me home
- +

404

That's a Four-Oh-Four.
Take me home
+ diff --git a/api/graphql.html b/api/graphql.html index 3153a04c6..51bb94f23 100644 --- a/api/graphql.html +++ b/api/graphql.html @@ -23,7 +23,7 @@ } GraphQL API | whispr - + @@ -219,7 +219,7 @@ ) }

Query variables

{ "webhookId": "5ef5f304a07efa0041904d52" }
-
- + + diff --git a/api/introduction.html b/api/introduction.html index 110aadc40..1178d3507 100644 --- a/api/introduction.html +++ b/api/introduction.html @@ -23,7 +23,7 @@ } Introduction | whispr - + @@ -35,7 +35,7 @@ @IsString() @IsOptional() // class-validator annotations, used by Nest Validation Pipe _id: string; } -

Note: class-validator will also validate GraphQL payloads, but since the GraphQL validation happens before class-validator validation, and the rules should be the same, class-validator validation should always pass.

Warning: we use Nest validation pipe with whitelist option enabled. Therefore you must provide a class-validator annotation on fields you want to add, or they will be automatically removed by the validation pipe.

- +

Note: class-validator will also validate GraphQL payloads, but since the GraphQL validation happens before class-validator validation, and the rules should be the same, class-validator validation should always pass.

Warning: we use Nest validation pipe with whitelist option enabled. Therefore you must provide a class-validator annotation on fields you want to add, or they will be automatically removed by the validation pipe.

+ diff --git a/api/rest.html b/api/rest.html index 35d2664f7..75566edcc 100644 --- a/api/rest.html +++ b/api/rest.html @@ -23,11 +23,11 @@ } REST API | whispr - + -

REST API

TIP

The whispr REST API is very limited compared to the GrahQL API. We will gradually make some improvements but we strongly recommend trying out GraphQL first. It's very simple, and more powerful than REST. You'll love it, we promise!

Get all Whisps

  • Method: GET
  • Path: '/whisp'
  • Success: 200

Returns all the whisps.

Get a Whisp

  • Method: GET
  • Path: '/whisp/:whispId'
  • Success: 200

Returns a whisp identified by its _id

Create a Whisp

  • Method: POST
  • Path: '/whisp'
  • Success: 201

Creates a new whisp from the body. The available fields of the whisp entity are listed here

Update a Whisp

  • Method: PATCH
  • Path: '/whisp/:whispId'
  • Success: 204

Updates the fields given in the body of a whisp identified by its _id. The available fields of the whisp entity are listed here

Replace a Whisp

  • Method: PUT
  • Path: '/whisp/:whispId'
  • Success: 204

Replaces a whisp given identified by its _id by a new whisp given in the body . The available fields of the whisp entity are listed here

Delete a Whisp

  • Method: DELETE
  • Path: '/whisp/:whispId'
  • Success: 204

Deletes a whisp identified by its _id

Get all TagGroups

  • Method: GET
  • Path: '/TagGroup'
  • Success: 200

Returns all the tagGroups.

Get a TagGroup

  • Method: GET
  • Path: '/TagGroup/:tagGroupId'
  • Success: 200

Returns a tagGroup identified by its _id

Create a TagGroup

  • Method: POST
  • Path: '/TagGroup'
  • Success: 201

Creates a new tagGroup from the body. The available fields of the tagGroup entity are listed here

Update a TagGroup

  • Method: PATCH
  • Path: '/TagGroup/:tagGroupId'
  • Success: 204

Updates the fields given in the body of a tagGroup identified by its _id. The available fields of the tagGroup entity are listed here

Replace a TagGroup

  • Method: PUT
  • Path: '/TagGroup/:tagGroupId'
  • Success: 204

Replaces a tagGroup given identified by its _id by a new tagGroup given in the body . The available fields of the tagGroup entity are listed here

Delete a TagGroup

  • Method: DELETE
  • Path: '/TagGroup/:tagGroupId'
  • Success: 204

Deletes a tagGroup identified by its _id

Get all Webhooks

  • Method: GET
  • Path: '/webhook'
  • Success: 200

Returns all the webhooks.

Create a Webhook

  • Method: POST
  • Path: '/webhook'
  • Success: 201

Creates a new webhook from the body. The available fields of the webhook entity are listed here

Delete a Webhook

  • Method: DELETE
  • Path: '/webhook/:id'
  • Success: 204

Deletes a webhook identified by its _id

Last Updated:
Contributors: semantic-release-bot
- +

REST API

TIP

The whispr REST API is very limited compared to the GrahQL API. We will gradually make some improvements but we strongly recommend trying out GraphQL first. It's very simple, and more powerful than REST. You'll love it, we promise!

Get all Whisps

  • Method: GET
  • Path: '/whisp'
  • Success: 200

Returns all the whisps.

Get a Whisp

  • Method: GET
  • Path: '/whisp/:whispId'
  • Success: 200

Returns a whisp identified by its _id

Create a Whisp

  • Method: POST
  • Path: '/whisp'
  • Success: 201

Creates a new whisp from the body. The available fields of the whisp entity are listed here

Update a Whisp

  • Method: PATCH
  • Path: '/whisp/:whispId'
  • Success: 204

Updates the fields given in the body of a whisp identified by its _id. The available fields of the whisp entity are listed here

Replace a Whisp

  • Method: PUT
  • Path: '/whisp/:whispId'
  • Success: 204

Replaces a whisp given identified by its _id by a new whisp given in the body . The available fields of the whisp entity are listed here

Delete a Whisp

  • Method: DELETE
  • Path: '/whisp/:whispId'
  • Success: 204

Deletes a whisp identified by its _id

Get all TagGroups

  • Method: GET
  • Path: '/TagGroup'
  • Success: 200

Returns all the tagGroups.

Get a TagGroup

  • Method: GET
  • Path: '/TagGroup/:tagGroupId'
  • Success: 200

Returns a tagGroup identified by its _id

Create a TagGroup

  • Method: POST
  • Path: '/TagGroup'
  • Success: 201

Creates a new tagGroup from the body. The available fields of the tagGroup entity are listed here

Update a TagGroup

  • Method: PATCH
  • Path: '/TagGroup/:tagGroupId'
  • Success: 204

Updates the fields given in the body of a tagGroup identified by its _id. The available fields of the tagGroup entity are listed here

Replace a TagGroup

  • Method: PUT
  • Path: '/TagGroup/:tagGroupId'
  • Success: 204

Replaces a tagGroup given identified by its _id by a new tagGroup given in the body . The available fields of the tagGroup entity are listed here

Delete a TagGroup

  • Method: DELETE
  • Path: '/TagGroup/:tagGroupId'
  • Success: 204

Deletes a tagGroup identified by its _id

Get all Webhooks

  • Method: GET
  • Path: '/webhook'
  • Success: 200

Returns all the webhooks.

Create a Webhook

  • Method: POST
  • Path: '/webhook'
  • Success: 201

Creates a new webhook from the body. The available fields of the webhook entity are listed here

Delete a Webhook

  • Method: DELETE
  • Path: '/webhook/:id'
  • Success: 204

Deletes a webhook identified by its _id

Last Updated:
Contributors: sairam charan
+ diff --git a/apm.html b/apm.html index d442feabd..6704eb9af 100644 --- a/apm.html +++ b/apm.html @@ -23,7 +23,7 @@ } APM | whispr - + @@ -32,7 +32,7 @@ # Optional - if you're behind a proxy, set this env var to your proxy URL INSTANA_ENDPOINT_PROXY - - + + diff --git a/architecture/index.html b/architecture/index.html index 54df31f7f..909fd9310 100644 --- a/architecture/index.html +++ b/architecture/index.html @@ -23,11 +23,11 @@ } Architecture | whispr - + -

Architecture

Whispr core

  • Nest.js
  • GraphQL (out of the box with Nest.js)
  • Simple REST API

Whispr UI

  • Vue.js
  • Vuetify
Last Updated:
Contributors: semantic-release-bot
- +

Architecture

Whispr core

  • Nest.js
  • GraphQL (out of the box with Nest.js)
  • Simple REST API

Whispr UI

  • Vue.js
  • Vuetify
Last Updated:
Contributors: sairam charan
+ diff --git a/assets/404.c072a64b.js b/assets/404.c97c6bb7.js similarity index 90% rename from assets/404.c072a64b.js rename to assets/404.c97c6bb7.js index 877c720ac..291a0ab2f 100644 --- a/assets/404.c072a64b.js +++ b/assets/404.c97c6bb7.js @@ -1 +1 @@ -import{_ as d,f as i,u as f,g as p,r as v,o as k,a as L,b as o,t as c,d as g,w as x,h as l,e as B}from"./app.5ecbe10d.js";const N={class:"theme-container"},T={class:"theme-default-content"},b=o("h1",null,"404",-1),C=i({setup(M){var a,s,n;const r=f(),e=p(),t=(a=e.value.notFound)!=null?a:["Not Found"],u=()=>t[Math.floor(Math.random()*t.length)],_=(s=e.value.home)!=null?s:r.value,h=(n=e.value.backToHome)!=null?n:"Back to home";return(R,V)=>{const m=v("RouterLink");return k(),L("div",N,[o("div",T,[b,o("blockquote",null,c(u()),1),g(m,{to:l(_)},{default:x(()=>[B(c(l(h)),1)]),_:1},8,["to"])])])}}});var D=d(C,[["__file","404.vue"]]);export{D as default}; +import{_ as d,f as i,u as f,g as p,r as v,o as k,a as L,b as o,t as c,d as g,w as x,h as l,e as B}from"./app.8a6a951d.js";const N={class:"theme-container"},T={class:"theme-default-content"},b=o("h1",null,"404",-1),C=i({setup(M){var a,s,n;const r=f(),e=p(),t=(a=e.value.notFound)!=null?a:["Not Found"],u=()=>t[Math.floor(Math.random()*t.length)],_=(s=e.value.home)!=null?s:r.value,h=(n=e.value.backToHome)!=null?n:"Back to home";return(R,V)=>{const m=v("RouterLink");return k(),L("div",N,[o("div",T,[b,o("blockquote",null,c(u()),1),g(m,{to:l(_)},{default:x(()=>[B(c(l(h)),1)]),_:1},8,["to"])])])}}});var D=d(C,[["__file","404.vue"]]);export{D as default}; diff --git a/assets/404.html.039537b2.js b/assets/404.html.b948fe5b.js similarity index 56% rename from assets/404.html.039537b2.js rename to assets/404.html.b948fe5b.js index 5df1cf06b..d820283d0 100644 --- a/assets/404.html.039537b2.js +++ b/assets/404.html.b948fe5b.js @@ -1 +1 @@ -import{_}from"./app.5ecbe10d.js";const e={};function r(t,c){return null}var f=_(e,[["render",r],["__file","404.html.vue"]]);export{f as default}; +import{_}from"./app.8a6a951d.js";const e={};function r(t,c){return null}var f=_(e,[["render",r],["__file","404.html.vue"]]);export{f as default}; diff --git a/assets/Layout.132bc826.js b/assets/Layout.8a9a1faf.js similarity index 99% rename from assets/Layout.132bc826.js rename to assets/Layout.8a9a1faf.js index 62d64cdae..2f5bf3125 100644 --- a/assets/Layout.132bc826.js +++ b/assets/Layout.8a9a1faf.js @@ -1 +1 @@ -var De=Object.defineProperty,Ie=Object.defineProperties;var Me=Object.getOwnPropertyDescriptors;var de=Object.getOwnPropertySymbols;var He=Object.prototype.hasOwnProperty,Pe=Object.prototype.propertyIsEnumerable;var pe=(l,t,e)=>t in l?De(l,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):l[t]=e,Y=(l,t)=>{for(var e in t||(t={}))He.call(t,e)&&pe(l,e,t[e]);if(de)for(var e of de(t))Pe.call(t,e)&&pe(l,e,t[e]);return l},J=(l,t)=>Ie(l,Me(t));import{_ as C,r as R,o as r,a as c,d as $,f as S,i as P,j as h,k as fe,h as a,F as I,l as A,m as w,b as g,t as T,n as z,p as Q,q as x,w as N,s as he,v as y,e as j,x as X,y as Ee,z as Re,A as Ae,B as Z,C as ee,D as K,E as me,G as be,H as E,u as ge,g as D,T as ke,I as F,J as $e,K as q,L as G,M as Oe,N as Fe,O as te,P as Le,Q as ye,c as ze,R as we,S as We,U,V as ae,W as Ve,X as Ue,Y as je,Z as Ke}from"./app.5ecbe10d.js";const qe={},Ge={class:"theme-default-content custom"};function Xe(l,t){const e=R("Content");return r(),c("div",Ge,[$(e)])}var Ye=C(qe,[["render",Xe],["__file","HomeContent.vue"]]);const Je={key:0,class:"features"},Qe=S({setup(l){const t=P(),e=h(()=>fe(t.value.features)?t.value.features:[]);return(i,o)=>a(e).length?(r(),c("div",Je,[(r(!0),c(I,null,A(a(e),d=>(r(),c("div",{key:d.title,class:"feature"},[g("h2",null,T(d.title),1),g("p",null,T(d.details),1)]))),128))])):w("",!0)}});var Ze=C(Qe,[["__file","HomeFeatures.vue"]]);const et=["innerHTML"],tt=["textContent"],at=S({setup(l){const t=P(),e=h(()=>t.value.footer),i=h(()=>t.value.footerHtml);return(o,d)=>a(e)?(r(),c(I,{key:0},[a(i)?(r(),c("div",{key:0,class:"footer",innerHTML:a(e)},null,8,et)):(r(),c("div",{key:1,class:"footer",textContent:T(a(e))},null,8,tt))],64)):w("",!0)}});var nt=C(at,[["__file","HomeFooter.vue"]]);const rt=["href","rel","target","aria-label"],ot=S({inheritAttrs:!1}),st=S(J(Y({},ot),{props:{item:{type:Object,required:!0}},setup(l){const t=l,e=z(),i=Ae(),{item:o}=Q(t),d=h(()=>X(o.value.link)),f=h(()=>Ee(o.value.link)||Re(o.value.link)),_=h(()=>{if(!f.value){if(o.value.target)return o.value.target;if(d.value)return"_blank"}}),n=h(()=>_.value==="_blank"),s=h(()=>!d.value&&!f.value&&!n.value),u=h(()=>{if(!f.value){if(o.value.rel)return o.value.rel;if(n.value)return"noopener noreferrer"}}),v=h(()=>o.value.ariaLabel||o.value.text),p=h(()=>{const L=Object.keys(i.value.locales);return L.length?!L.some(m=>m===o.value.link):o.value.link!=="/"}),b=h(()=>p.value?e.path.startsWith(o.value.link):!1),k=h(()=>s.value?o.value.activeMatch?new RegExp(o.value.activeMatch).test(e.path):b.value:!1);return(L,m)=>{const B=R("RouterLink"),M=R("AutoLinkExternalIcon");return a(s)?(r(),x(B,he({key:0,class:{"router-link-active":a(k)},to:a(o).link,"aria-label":a(v)},L.$attrs),{default:N(()=>[y(L.$slots,"before"),j(" "+T(a(o).text)+" ",1),y(L.$slots,"after")]),_:3},16,["class","to","aria-label"])):(r(),c("a",he({key:1,class:"external-link",href:a(o).link,rel:a(u),target:a(_),"aria-label":a(v)},L.$attrs),[y(L.$slots,"before"),j(" "+T(a(o).text)+" ",1),a(n)?(r(),x(M,{key:0})):w("",!0),y(L.$slots,"after")],16,rt))}}}));var H=C(st,[["__file","AutoLink.vue"]]);const lt={class:"hero"},ut={key:0,id:"main-title"},it={key:1,class:"description"},ct={key:2,class:"actions"},vt=S({setup(l){const t=P(),e=Z(),i=ee(),o=h(()=>i.value&&t.value.heroImageDark!==void 0?t.value.heroImageDark:t.value.heroImage),d=h(()=>t.value.heroText===null?null:t.value.heroText||e.value.title||"Hello"),f=h(()=>t.value.heroAlt||d.value||"hero"),_=h(()=>t.value.tagline===null?null:t.value.tagline||e.value.description||"Welcome to your VuePress site"),n=h(()=>fe(t.value.actions)?t.value.actions.map(({text:u,link:v,type:p="primary"})=>({text:u,link:v,type:p})):[]),s=()=>{if(!o.value)return null;const u=K("img",{src:me(o.value),alt:f.value});return t.value.heroImageDark===void 0?u:K(be,()=>u)};return(u,v)=>(r(),c("header",lt,[$(s),a(d)?(r(),c("h1",ut,T(a(d)),1)):w("",!0),a(_)?(r(),c("p",it,T(a(_)),1)):w("",!0),a(n).length?(r(),c("p",ct,[(r(!0),c(I,null,A(a(n),p=>(r(),x(H,{key:p.text,class:E(["action-button",[p.type]]),item:p},null,8,["class","item"]))),128))])):w("",!0)]))}});var dt=C(vt,[["__file","HomeHero.vue"]]);const pt={class:"home"},ht=S({setup(l){return(t,e)=>(r(),c("main",pt,[$(dt),$(Ze),$(Ye),$(nt)]))}});var _t=C(ht,[["__file","Home.vue"]]);const ft=S({setup(l){const t=ge(),e=Z(),i=D(),o=ee(),d=h(()=>i.value.home||t.value),f=h(()=>e.value.title),_=h(()=>o.value&&i.value.logoDark!==void 0?i.value.logoDark:i.value.logo),n=()=>{if(!_.value)return null;const s=K("img",{class:"logo",src:me(_.value),alt:f.value});return i.value.logoDark===void 0?s:K(be,()=>s)};return(s,u)=>{const v=R("RouterLink");return r(),x(v,{to:a(d)},{default:N(()=>[$(n),a(f)?(r(),c("span",{key:0,class:E(["site-name",{"can-hide":a(_)}])},T(a(f)),3)):w("",!0)]),_:1},8,["to"])}}});var mt=C(ft,[["__file","NavbarBrand.vue"]]);const bt=S({setup(l){const t=i=>{i.style.height=i.scrollHeight+"px"},e=i=>{i.style.height=""};return(i,o)=>(r(),x(ke,{name:"dropdown",onEnter:t,onAfterEnter:e,onBeforeLeave:t},{default:N(()=>[y(i.$slots,"default")]),_:3}))}});var Ce=C(bt,[["__file","DropdownTransition.vue"]]);const gt=["aria-label"],kt={class:"title"},$t=g("span",{class:"arrow down"},null,-1),Lt=["aria-label"],yt={class:"title"},wt={class:"navbar-dropdown"},Ct={class:"navbar-dropdown-subtitle"},St={key:1},xt={class:"navbar-dropdown-subitem-wrapper"},Tt=S({props:{item:{type:Object,required:!0}},setup(l){const t=l,{item:e}=Q(t),i=h(()=>e.value.ariaLabel||e.value.text),o=F(!1),d=z();$e(()=>d.path,()=>{o.value=!1});const f=n=>{n.detail===0?o.value=!o.value:o.value=!1},_=(n,s)=>s[s.length-1]===n;return(n,s)=>(r(),c("div",{class:E(["navbar-dropdown-wrapper",{open:o.value}])},[g("button",{class:"navbar-dropdown-title",type:"button","aria-label":a(i),onClick:f},[g("span",kt,T(a(e).text),1),$t],8,gt),g("button",{class:"navbar-dropdown-title-mobile",type:"button","aria-label":a(i),onClick:s[0]||(s[0]=u=>o.value=!o.value)},[g("span",yt,T(a(e).text),1),g("span",{class:E(["arrow",o.value?"down":"right"])},null,2)],8,Lt),$(Ce,null,{default:N(()=>[q(g("ul",wt,[(r(!0),c(I,null,A(a(e).children,u=>(r(),c("li",{key:u.text,class:"navbar-dropdown-item"},[u.children?(r(),c(I,{key:0},[g("h4",Ct,[u.link?(r(),x(H,{key:0,item:u,onFocusout:v=>_(u,a(e).children)&&u.children.length===0&&(o.value=!1)},null,8,["item","onFocusout"])):(r(),c("span",St,T(u.text),1))]),g("ul",xt,[(r(!0),c(I,null,A(u.children,v=>(r(),c("li",{key:v.link,class:"navbar-dropdown-subitem"},[$(H,{item:v,onFocusout:p=>_(v,u.children)&&_(u,a(e).children)&&(o.value=!1)},null,8,["item","onFocusout"])]))),128))])],64)):(r(),x(H,{key:1,item:u,onFocusout:v=>_(u,a(e).children)&&(o.value=!1)},null,8,["item","onFocusout"]))]))),128))],512),[[G,o.value]])]),_:1})],2))}});var Bt=C(Tt,[["__file","NavbarDropdown.vue"]]);const _e=l=>decodeURI(l).replace(/#.*$/,"").replace(/(index)?\.(md|html)$/,""),Nt=(l,t)=>{if(t.hash===l)return!0;const e=_e(t.path),i=_e(l);return e===i},Se=(l,t)=>l.link&&Nt(l.link,t)?!0:l.children?l.children.some(e=>Se(e,t)):!1,xe=l=>!X(l)||/github\.com/.test(l)?"GitHub":/bitbucket\.org/.test(l)?"Bitbucket":/gitlab\.com/.test(l)?"GitLab":/gitee\.com/.test(l)?"Gitee":null,Dt={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},It=({docsRepo:l,editLinkPattern:t})=>{if(t)return t;const e=xe(l);return e!==null?Dt[e]:null},Mt=({docsRepo:l,docsBranch:t,docsDir:e,filePathRelative:i,editLinkPattern:o})=>{if(!i)return null;const d=It({docsRepo:l,editLinkPattern:o});return d?d.replace(/:repo/,X(l)?l:`https://github.com/${l}`).replace(/:branch/,t).replace(/:path/,Oe(`${Fe(e)}/${i}`)):null},Ht={key:0,class:"navbar-items"},Pt=S({setup(l){const t=()=>{const s=te(),u=ge(),v=Z(),p=D();return h(()=>{var B,M;const b=Object.keys(v.value.locales);if(b.length<2)return[];const k=s.currentRoute.value.path,L=s.currentRoute.value.fullPath;return[{text:(B=p.value.selectLanguageText)!=null?B:"unknown language",ariaLabel:(M=p.value.selectLanguageAriaLabel)!=null?M:"unkown language",children:b.map(O=>{var oe,se,le,ue,ie,ce;const W=(se=(oe=v.value.locales)==null?void 0:oe[O])!=null?se:{},ne=(ue=(le=p.value.locales)==null?void 0:le[O])!=null?ue:{},re=`${W.lang}`,Be=(ie=ne.selectLanguageName)!=null?ie:re;let V;if(re===v.value.lang)V=L;else{const ve=k.replace(u.value,O);s.getRoutes().some(Ne=>Ne.path===ve)?V=ve:V=(ce=ne.home)!=null?ce:O}return{text:Be,link:V}})}]})},e=()=>{const s=D(),u=h(()=>s.value.repo),v=h(()=>u.value?xe(u.value):null),p=h(()=>u.value&&!X(u.value)?`https://github.com/${u.value}`:u.value),b=h(()=>p.value?s.value.repoLabel?s.value.repoLabel:v.value===null?"Source":v.value:null);return h(()=>!p.value||!b.value?[]:[{text:b.value,link:p.value}])},i=s=>Le(s)?ye(s):s.children?J(Y({},s),{children:s.children.map(i)}):s,d=(()=>{const s=D();return h(()=>(s.value.navbar||[]).map(i))})(),f=t(),_=e(),n=h(()=>[...d.value,...f.value,..._.value]);return(s,u)=>a(n).length?(r(),c("nav",Ht,[(r(!0),c(I,null,A(a(n),v=>(r(),c("div",{key:v.text,class:"navbar-item"},[v.children?(r(),x(Bt,{key:0,item:v},null,8,["item"])):(r(),x(H,{key:1,item:v},null,8,["item"]))]))),128))])):w("",!0)}});var Te=C(Pt,[["__file","NavbarItems.vue"]]);const Et=["title"],Rt={class:"icon",focusable:"false",viewBox:"0 0 32 32"},At=ze('',9),Ot=[At],Ft={class:"icon",focusable:"false",viewBox:"0 0 32 32"},zt=g("path",{d:"M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z",fill:"currentColor"},null,-1),Wt=[zt],Vt=S({setup(l){const t=D(),e=ee(),i=()=>{e.value=!e.value};return(o,d)=>(r(),c("button",{class:"toggle-dark-button",title:a(t).toggleDarkMode,onClick:i},[q((r(),c("svg",Rt,Ot,512)),[[G,!a(e)]]),q((r(),c("svg",Ft,Wt,512)),[[G,a(e)]])],8,Et))}});var Ut=C(Vt,[["__file","ToggleDarkModeButton.vue"]]);const jt=["title"],Kt=g("div",{class:"icon","aria-hidden":"true"},[g("span"),g("span"),g("span")],-1),qt=[Kt],Gt=S({emits:["toggle"],setup(l){const t=D();return(e,i)=>(r(),c("div",{class:"toggle-sidebar-button",title:a(t).toggleSidebar,"aria-expanded":"false",role:"button",tabindex:"0",onClick:i[0]||(i[0]=o=>e.$emit("toggle"))},qt,8,jt))}});var Xt=C(Gt,[["__file","ToggleSidebarButton.vue"]]);const Yt=S({emits:["toggle-sidebar"],setup(l){const t=D(),e=F(null),i=F(null),o=F(0),d=h(()=>o.value?{maxWidth:o.value+"px"}:{}),f=h(()=>t.value.darkMode);we(()=>{const s=_(e.value,"paddingLeft")+_(e.value,"paddingRight"),u=()=>{var v;window.innerWidth<=719?o.value=0:o.value=e.value.offsetWidth-s-(((v=i.value)==null?void 0:v.offsetWidth)||0)};u(),window.addEventListener("resize",u,!1),window.addEventListener("orientationchange",u,!1)});function _(n,s){var p,b,k;const u=(k=(b=(p=n==null?void 0:n.ownerDocument)==null?void 0:p.defaultView)==null?void 0:b.getComputedStyle(n,null))==null?void 0:k[s],v=Number.parseInt(u,10);return Number.isNaN(v)?0:v}return(n,s)=>{const u=R("NavbarSearch");return r(),c("header",{ref_key:"navbar",ref:e,class:"navbar"},[$(Xt,{onToggle:s[0]||(s[0]=v=>n.$emit("toggle-sidebar"))}),g("span",{ref_key:"navbarBrand",ref:i},[$(mt)],512),g("div",{class:"navbar-items-wrapper",style:We(a(d))},[y(n.$slots,"before"),$(Te,{class:"can-hide"}),y(n.$slots,"after"),a(f)?(r(),x(Ut,{key:0})):w("",!0),$(u)],4)],512)}}});var Jt=C(Yt,[["__file","Navbar.vue"]]);const Qt={class:"page-meta"},Zt={key:0,class:"meta-item edit-link"},ea={key:1,class:"meta-item last-updated"},ta={class:"meta-item-label"},aa={class:"meta-item-info"},na={key:2,class:"meta-item contributors"},ra={class:"meta-item-label"},oa={class:"meta-item-info"},sa=["title"],la=j(", "),ua=S({setup(l){const t=()=>{const n=D(),s=U(),u=P();return h(()=>{var M,O,W;if(!((O=(M=u.value.editLink)!=null?M:n.value.editLink)!=null?O:!0))return null;const{repo:p,docsRepo:b=p,docsBranch:k="main",docsDir:L="",editLinkText:m}=n.value;if(!b)return null;const B=Mt({docsRepo:b,docsBranch:k,docsDir:L,filePathRelative:s.value.filePathRelative,editLinkPattern:(W=u.value.editLinkPattern)!=null?W:n.value.editLinkPattern});return B?{text:m!=null?m:"Edit this page",link:B}:null})},e=()=>{const n=D(),s=U(),u=P();return h(()=>{var b,k,L,m;return!((k=(b=u.value.lastUpdated)!=null?b:n.value.lastUpdated)!=null?k:!0)||!((L=s.value.git)!=null&&L.updatedTime)?null:new Date((m=s.value.git)==null?void 0:m.updatedTime).toLocaleString()})},i=()=>{const n=D(),s=U(),u=P();return h(()=>{var p,b,k,L;return((b=(p=u.value.contributors)!=null?p:n.value.contributors)!=null?b:!0)&&(L=(k=s.value.git)==null?void 0:k.contributors)!=null?L:null})},o=D(),d=t(),f=e(),_=i();return(n,s)=>{const u=R("ClientOnly");return r(),c("footer",Qt,[a(d)?(r(),c("div",Zt,[$(H,{class:"meta-item-label",item:a(d)},null,8,["item"])])):w("",!0),a(f)?(r(),c("div",ea,[g("span",ta,T(a(o).lastUpdatedText)+": ",1),$(u,null,{default:N(()=>[g("span",aa,T(a(f)),1)]),_:1})])):w("",!0),a(_)&&a(_).length?(r(),c("div",na,[g("span",ra,T(a(o).contributorsText)+": ",1),g("span",oa,[(r(!0),c(I,null,A(a(_),(v,p)=>(r(),c(I,{key:p},[g("span",{class:"contributor",title:`email: ${v.email}`},T(v.name),9,sa),p!==a(_).length-1?(r(),c(I,{key:0},[la],64)):w("",!0)],64))),128))])])):w("",!0)])}}});var ia=C(ua,[["__file","PageMeta.vue"]]);const ca={key:0,class:"page-nav"},va={class:"inner"},da={key:0,class:"prev"},pa={key:1,class:"next"},ha=S({setup(l){const t=n=>n===!1?null:Le(n)?ye(n):Ve(n)?n:!1,e=(n,s,u)=>{const v=n.findIndex(p=>p.link===s);if(v!==-1){const p=n[v+u];return p!=null&&p.link?p:null}for(const p of n)if(p.children){const b=e(p.children,s,u);if(b)return b}return null},i=P(),o=ae(),d=z(),f=h(()=>{const n=t(i.value.prev);return n!==!1?n:e(o.value,d.path,-1)}),_=h(()=>{const n=t(i.value.next);return n!==!1?n:e(o.value,d.path,1)});return(n,s)=>a(f)||a(_)?(r(),c("nav",ca,[g("p",va,[a(f)?(r(),c("span",da,[$(H,{item:a(f)},null,8,["item"])])):w("",!0),a(_)?(r(),c("span",pa,[$(H,{item:a(_)},null,8,["item"])])):w("",!0)])])):w("",!0)}});var _a=C(ha,[["__file","PageNav.vue"]]);const fa={class:"page"},ma={class:"theme-default-content"},ba=S({setup(l){return(t,e)=>{const i=R("Content");return r(),c("main",fa,[y(t.$slots,"top"),g("div",ma,[$(i)]),$(ia),$(_a),y(t.$slots,"bottom")])}}});var ga=C(ba,[["__file","Page.vue"]]);const ka={class:"sidebar-item-children"},$a=S({props:{item:{type:Object,required:!0},depth:{type:Number,required:!1,default:0}},setup(l){const t=l,{item:e,depth:i}=Q(t),o=z(),d=te(),f=h(()=>Se(e.value,o)),_=h(()=>({"sidebar-item":!0,"sidebar-heading":i.value===0,active:f.value,collapsible:e.value.collapsible})),n=F(!0),s=F(void 0);return e.value.collapsible&&(n.value=f.value,s.value=()=>{n.value=!n.value},d.afterEach(()=>{n.value=f.value})),(u,v)=>{var b;const p=R("SidebarItem",!0);return r(),c("li",null,[a(e).link?(r(),x(H,{key:0,class:E(a(_)),item:a(e)},null,8,["class","item"])):(r(),c("p",{key:1,tabindex:"0",class:E(a(_)),onClick:v[0]||(v[0]=(...k)=>s.value&&s.value(...k)),onKeydown:v[1]||(v[1]=Ue((...k)=>s.value&&s.value(...k),["enter"]))},[j(T(a(e).text)+" ",1),a(e).collapsible?(r(),c("span",{key:0,class:E(["arrow",n.value?"down":"right"])},null,2)):w("",!0)],34)),(b=a(e).children)!=null&&b.length?(r(),x(Ce,{key:2},{default:N(()=>[q(g("ul",ka,[(r(!0),c(I,null,A(a(e).children,k=>(r(),x(p,{key:`${a(i)}${k.text}${k.link}`,item:k,depth:a(i)+1},null,8,["item","depth"]))),128))],512),[[G,n.value]])]),_:1})):w("",!0)])}}});var La=C($a,[["__file","SidebarItem.vue"]]);const ya={key:0,class:"sidebar-items"},wa=S({setup(l){const t=z(),e=ae();return $e(()=>t.hash,i=>{const o=document.querySelector(".sidebar");if(!o)return;const d=document.querySelector(`.sidebar a.sidebar-item[href="${t.path}${i}"]`);if(!d)return;const f=o.getBoundingClientRect().top,_=o.getBoundingClientRect().height,n=d.getBoundingClientRect().top,s=d.getBoundingClientRect().height;nf+_&&d.scrollIntoView(!1)}),(i,o)=>a(e).length?(r(),c("ul",ya,[(r(!0),c(I,null,A(a(e),d=>(r(),x(La,{key:d.link||d.text,item:d},null,8,["item"]))),128))])):w("",!0)}});var Ca=C(wa,[["__file","SidebarItems.vue"]]);const Sa={class:"sidebar"},xa=S({setup(l){return(t,e)=>(r(),c("aside",Sa,[$(Te),y(t.$slots,"top"),$(Ca),y(t.$slots,"bottom")]))}});var Ta=C(xa,[["__file","Sidebar.vue"]]);const Ba=S({setup(l){const t=U(),e=P(),i=D(),o=h(()=>e.value.navbar!==!1&&i.value.navbar!==!1),d=ae(),f=F(!1),_=m=>{f.value=typeof m=="boolean"?m:!f.value},n={x:0,y:0},s=m=>{n.x=m.changedTouches[0].clientX,n.y=m.changedTouches[0].clientY},u=m=>{const B=m.changedTouches[0].clientX-n.x,M=m.changedTouches[0].clientY-n.y;Math.abs(B)>Math.abs(M)&&Math.abs(B)>40&&(B>0&&n.x<=80?_(!0):_(!1))},v=h(()=>[{"no-navbar":!o.value,"no-sidebar":!d.value.length,"sidebar-open":f.value},e.value.pageClass]);let p;we(()=>{p=te().afterEach(()=>{_(!1)})}),je(()=>{p()});const b=Ke(),k=b.resolve,L=b.pending;return(m,B)=>(r(),c("div",{class:E(["theme-container",a(v)]),onTouchstart:s,onTouchend:u},[y(m.$slots,"navbar",{},()=>[a(o)?(r(),x(Jt,{key:0,onToggleSidebar:_},{before:N(()=>[y(m.$slots,"navbar-before")]),after:N(()=>[y(m.$slots,"navbar-after")]),_:3})):w("",!0)]),g("div",{class:"sidebar-mask",onClick:B[0]||(B[0]=M=>_(!1))}),y(m.$slots,"sidebar",{},()=>[$(Ta,null,{top:N(()=>[y(m.$slots,"sidebar-top")]),bottom:N(()=>[y(m.$slots,"sidebar-bottom")]),_:3})]),y(m.$slots,"page",{},()=>[a(e).home?(r(),x(_t,{key:0})):(r(),x(ke,{key:1,name:"fade-slide-y",mode:"out-in",onBeforeEnter:a(k),onBeforeLeave:a(L)},{default:N(()=>[(r(),x(ga,{key:a(t).path},{top:N(()=>[y(m.$slots,"page-top")]),bottom:N(()=>[y(m.$slots,"page-bottom")]),_:3}))]),_:3},8,["onBeforeEnter","onBeforeLeave"]))])],34))}});var Ia=C(Ba,[["__file","Layout.vue"]]);export{Ia as default}; +var De=Object.defineProperty,Ie=Object.defineProperties;var Me=Object.getOwnPropertyDescriptors;var de=Object.getOwnPropertySymbols;var He=Object.prototype.hasOwnProperty,Pe=Object.prototype.propertyIsEnumerable;var pe=(l,t,e)=>t in l?De(l,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):l[t]=e,Y=(l,t)=>{for(var e in t||(t={}))He.call(t,e)&&pe(l,e,t[e]);if(de)for(var e of de(t))Pe.call(t,e)&&pe(l,e,t[e]);return l},J=(l,t)=>Ie(l,Me(t));import{_ as C,r as R,o as r,a as c,d as $,f as S,i as P,j as h,k as fe,h as a,F as I,l as A,m as w,b as g,t as T,n as z,p as Q,q as x,w as N,s as he,v as y,e as j,x as X,y as Ee,z as Re,A as Ae,B as Z,C as ee,D as K,E as me,G as be,H as E,u as ge,g as D,T as ke,I as F,J as $e,K as q,L as G,M as Oe,N as Fe,O as te,P as Le,Q as ye,c as ze,R as we,S as We,U,V as ae,W as Ve,X as Ue,Y as je,Z as Ke}from"./app.8a6a951d.js";const qe={},Ge={class:"theme-default-content custom"};function Xe(l,t){const e=R("Content");return r(),c("div",Ge,[$(e)])}var Ye=C(qe,[["render",Xe],["__file","HomeContent.vue"]]);const Je={key:0,class:"features"},Qe=S({setup(l){const t=P(),e=h(()=>fe(t.value.features)?t.value.features:[]);return(i,o)=>a(e).length?(r(),c("div",Je,[(r(!0),c(I,null,A(a(e),d=>(r(),c("div",{key:d.title,class:"feature"},[g("h2",null,T(d.title),1),g("p",null,T(d.details),1)]))),128))])):w("",!0)}});var Ze=C(Qe,[["__file","HomeFeatures.vue"]]);const et=["innerHTML"],tt=["textContent"],at=S({setup(l){const t=P(),e=h(()=>t.value.footer),i=h(()=>t.value.footerHtml);return(o,d)=>a(e)?(r(),c(I,{key:0},[a(i)?(r(),c("div",{key:0,class:"footer",innerHTML:a(e)},null,8,et)):(r(),c("div",{key:1,class:"footer",textContent:T(a(e))},null,8,tt))],64)):w("",!0)}});var nt=C(at,[["__file","HomeFooter.vue"]]);const rt=["href","rel","target","aria-label"],ot=S({inheritAttrs:!1}),st=S(J(Y({},ot),{props:{item:{type:Object,required:!0}},setup(l){const t=l,e=z(),i=Ae(),{item:o}=Q(t),d=h(()=>X(o.value.link)),f=h(()=>Ee(o.value.link)||Re(o.value.link)),_=h(()=>{if(!f.value){if(o.value.target)return o.value.target;if(d.value)return"_blank"}}),n=h(()=>_.value==="_blank"),s=h(()=>!d.value&&!f.value&&!n.value),u=h(()=>{if(!f.value){if(o.value.rel)return o.value.rel;if(n.value)return"noopener noreferrer"}}),v=h(()=>o.value.ariaLabel||o.value.text),p=h(()=>{const L=Object.keys(i.value.locales);return L.length?!L.some(m=>m===o.value.link):o.value.link!=="/"}),b=h(()=>p.value?e.path.startsWith(o.value.link):!1),k=h(()=>s.value?o.value.activeMatch?new RegExp(o.value.activeMatch).test(e.path):b.value:!1);return(L,m)=>{const B=R("RouterLink"),M=R("AutoLinkExternalIcon");return a(s)?(r(),x(B,he({key:0,class:{"router-link-active":a(k)},to:a(o).link,"aria-label":a(v)},L.$attrs),{default:N(()=>[y(L.$slots,"before"),j(" "+T(a(o).text)+" ",1),y(L.$slots,"after")]),_:3},16,["class","to","aria-label"])):(r(),c("a",he({key:1,class:"external-link",href:a(o).link,rel:a(u),target:a(_),"aria-label":a(v)},L.$attrs),[y(L.$slots,"before"),j(" "+T(a(o).text)+" ",1),a(n)?(r(),x(M,{key:0})):w("",!0),y(L.$slots,"after")],16,rt))}}}));var H=C(st,[["__file","AutoLink.vue"]]);const lt={class:"hero"},ut={key:0,id:"main-title"},it={key:1,class:"description"},ct={key:2,class:"actions"},vt=S({setup(l){const t=P(),e=Z(),i=ee(),o=h(()=>i.value&&t.value.heroImageDark!==void 0?t.value.heroImageDark:t.value.heroImage),d=h(()=>t.value.heroText===null?null:t.value.heroText||e.value.title||"Hello"),f=h(()=>t.value.heroAlt||d.value||"hero"),_=h(()=>t.value.tagline===null?null:t.value.tagline||e.value.description||"Welcome to your VuePress site"),n=h(()=>fe(t.value.actions)?t.value.actions.map(({text:u,link:v,type:p="primary"})=>({text:u,link:v,type:p})):[]),s=()=>{if(!o.value)return null;const u=K("img",{src:me(o.value),alt:f.value});return t.value.heroImageDark===void 0?u:K(be,()=>u)};return(u,v)=>(r(),c("header",lt,[$(s),a(d)?(r(),c("h1",ut,T(a(d)),1)):w("",!0),a(_)?(r(),c("p",it,T(a(_)),1)):w("",!0),a(n).length?(r(),c("p",ct,[(r(!0),c(I,null,A(a(n),p=>(r(),x(H,{key:p.text,class:E(["action-button",[p.type]]),item:p},null,8,["class","item"]))),128))])):w("",!0)]))}});var dt=C(vt,[["__file","HomeHero.vue"]]);const pt={class:"home"},ht=S({setup(l){return(t,e)=>(r(),c("main",pt,[$(dt),$(Ze),$(Ye),$(nt)]))}});var _t=C(ht,[["__file","Home.vue"]]);const ft=S({setup(l){const t=ge(),e=Z(),i=D(),o=ee(),d=h(()=>i.value.home||t.value),f=h(()=>e.value.title),_=h(()=>o.value&&i.value.logoDark!==void 0?i.value.logoDark:i.value.logo),n=()=>{if(!_.value)return null;const s=K("img",{class:"logo",src:me(_.value),alt:f.value});return i.value.logoDark===void 0?s:K(be,()=>s)};return(s,u)=>{const v=R("RouterLink");return r(),x(v,{to:a(d)},{default:N(()=>[$(n),a(f)?(r(),c("span",{key:0,class:E(["site-name",{"can-hide":a(_)}])},T(a(f)),3)):w("",!0)]),_:1},8,["to"])}}});var mt=C(ft,[["__file","NavbarBrand.vue"]]);const bt=S({setup(l){const t=i=>{i.style.height=i.scrollHeight+"px"},e=i=>{i.style.height=""};return(i,o)=>(r(),x(ke,{name:"dropdown",onEnter:t,onAfterEnter:e,onBeforeLeave:t},{default:N(()=>[y(i.$slots,"default")]),_:3}))}});var Ce=C(bt,[["__file","DropdownTransition.vue"]]);const gt=["aria-label"],kt={class:"title"},$t=g("span",{class:"arrow down"},null,-1),Lt=["aria-label"],yt={class:"title"},wt={class:"navbar-dropdown"},Ct={class:"navbar-dropdown-subtitle"},St={key:1},xt={class:"navbar-dropdown-subitem-wrapper"},Tt=S({props:{item:{type:Object,required:!0}},setup(l){const t=l,{item:e}=Q(t),i=h(()=>e.value.ariaLabel||e.value.text),o=F(!1),d=z();$e(()=>d.path,()=>{o.value=!1});const f=n=>{n.detail===0?o.value=!o.value:o.value=!1},_=(n,s)=>s[s.length-1]===n;return(n,s)=>(r(),c("div",{class:E(["navbar-dropdown-wrapper",{open:o.value}])},[g("button",{class:"navbar-dropdown-title",type:"button","aria-label":a(i),onClick:f},[g("span",kt,T(a(e).text),1),$t],8,gt),g("button",{class:"navbar-dropdown-title-mobile",type:"button","aria-label":a(i),onClick:s[0]||(s[0]=u=>o.value=!o.value)},[g("span",yt,T(a(e).text),1),g("span",{class:E(["arrow",o.value?"down":"right"])},null,2)],8,Lt),$(Ce,null,{default:N(()=>[q(g("ul",wt,[(r(!0),c(I,null,A(a(e).children,u=>(r(),c("li",{key:u.text,class:"navbar-dropdown-item"},[u.children?(r(),c(I,{key:0},[g("h4",Ct,[u.link?(r(),x(H,{key:0,item:u,onFocusout:v=>_(u,a(e).children)&&u.children.length===0&&(o.value=!1)},null,8,["item","onFocusout"])):(r(),c("span",St,T(u.text),1))]),g("ul",xt,[(r(!0),c(I,null,A(u.children,v=>(r(),c("li",{key:v.link,class:"navbar-dropdown-subitem"},[$(H,{item:v,onFocusout:p=>_(v,u.children)&&_(u,a(e).children)&&(o.value=!1)},null,8,["item","onFocusout"])]))),128))])],64)):(r(),x(H,{key:1,item:u,onFocusout:v=>_(u,a(e).children)&&(o.value=!1)},null,8,["item","onFocusout"]))]))),128))],512),[[G,o.value]])]),_:1})],2))}});var Bt=C(Tt,[["__file","NavbarDropdown.vue"]]);const _e=l=>decodeURI(l).replace(/#.*$/,"").replace(/(index)?\.(md|html)$/,""),Nt=(l,t)=>{if(t.hash===l)return!0;const e=_e(t.path),i=_e(l);return e===i},Se=(l,t)=>l.link&&Nt(l.link,t)?!0:l.children?l.children.some(e=>Se(e,t)):!1,xe=l=>!X(l)||/github\.com/.test(l)?"GitHub":/bitbucket\.org/.test(l)?"Bitbucket":/gitlab\.com/.test(l)?"GitLab":/gitee\.com/.test(l)?"Gitee":null,Dt={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},It=({docsRepo:l,editLinkPattern:t})=>{if(t)return t;const e=xe(l);return e!==null?Dt[e]:null},Mt=({docsRepo:l,docsBranch:t,docsDir:e,filePathRelative:i,editLinkPattern:o})=>{if(!i)return null;const d=It({docsRepo:l,editLinkPattern:o});return d?d.replace(/:repo/,X(l)?l:`https://github.com/${l}`).replace(/:branch/,t).replace(/:path/,Oe(`${Fe(e)}/${i}`)):null},Ht={key:0,class:"navbar-items"},Pt=S({setup(l){const t=()=>{const s=te(),u=ge(),v=Z(),p=D();return h(()=>{var B,M;const b=Object.keys(v.value.locales);if(b.length<2)return[];const k=s.currentRoute.value.path,L=s.currentRoute.value.fullPath;return[{text:(B=p.value.selectLanguageText)!=null?B:"unknown language",ariaLabel:(M=p.value.selectLanguageAriaLabel)!=null?M:"unkown language",children:b.map(O=>{var oe,se,le,ue,ie,ce;const W=(se=(oe=v.value.locales)==null?void 0:oe[O])!=null?se:{},ne=(ue=(le=p.value.locales)==null?void 0:le[O])!=null?ue:{},re=`${W.lang}`,Be=(ie=ne.selectLanguageName)!=null?ie:re;let V;if(re===v.value.lang)V=L;else{const ve=k.replace(u.value,O);s.getRoutes().some(Ne=>Ne.path===ve)?V=ve:V=(ce=ne.home)!=null?ce:O}return{text:Be,link:V}})}]})},e=()=>{const s=D(),u=h(()=>s.value.repo),v=h(()=>u.value?xe(u.value):null),p=h(()=>u.value&&!X(u.value)?`https://github.com/${u.value}`:u.value),b=h(()=>p.value?s.value.repoLabel?s.value.repoLabel:v.value===null?"Source":v.value:null);return h(()=>!p.value||!b.value?[]:[{text:b.value,link:p.value}])},i=s=>Le(s)?ye(s):s.children?J(Y({},s),{children:s.children.map(i)}):s,d=(()=>{const s=D();return h(()=>(s.value.navbar||[]).map(i))})(),f=t(),_=e(),n=h(()=>[...d.value,...f.value,..._.value]);return(s,u)=>a(n).length?(r(),c("nav",Ht,[(r(!0),c(I,null,A(a(n),v=>(r(),c("div",{key:v.text,class:"navbar-item"},[v.children?(r(),x(Bt,{key:0,item:v},null,8,["item"])):(r(),x(H,{key:1,item:v},null,8,["item"]))]))),128))])):w("",!0)}});var Te=C(Pt,[["__file","NavbarItems.vue"]]);const Et=["title"],Rt={class:"icon",focusable:"false",viewBox:"0 0 32 32"},At=ze('',9),Ot=[At],Ft={class:"icon",focusable:"false",viewBox:"0 0 32 32"},zt=g("path",{d:"M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z",fill:"currentColor"},null,-1),Wt=[zt],Vt=S({setup(l){const t=D(),e=ee(),i=()=>{e.value=!e.value};return(o,d)=>(r(),c("button",{class:"toggle-dark-button",title:a(t).toggleDarkMode,onClick:i},[q((r(),c("svg",Rt,Ot,512)),[[G,!a(e)]]),q((r(),c("svg",Ft,Wt,512)),[[G,a(e)]])],8,Et))}});var Ut=C(Vt,[["__file","ToggleDarkModeButton.vue"]]);const jt=["title"],Kt=g("div",{class:"icon","aria-hidden":"true"},[g("span"),g("span"),g("span")],-1),qt=[Kt],Gt=S({emits:["toggle"],setup(l){const t=D();return(e,i)=>(r(),c("div",{class:"toggle-sidebar-button",title:a(t).toggleSidebar,"aria-expanded":"false",role:"button",tabindex:"0",onClick:i[0]||(i[0]=o=>e.$emit("toggle"))},qt,8,jt))}});var Xt=C(Gt,[["__file","ToggleSidebarButton.vue"]]);const Yt=S({emits:["toggle-sidebar"],setup(l){const t=D(),e=F(null),i=F(null),o=F(0),d=h(()=>o.value?{maxWidth:o.value+"px"}:{}),f=h(()=>t.value.darkMode);we(()=>{const s=_(e.value,"paddingLeft")+_(e.value,"paddingRight"),u=()=>{var v;window.innerWidth<=719?o.value=0:o.value=e.value.offsetWidth-s-(((v=i.value)==null?void 0:v.offsetWidth)||0)};u(),window.addEventListener("resize",u,!1),window.addEventListener("orientationchange",u,!1)});function _(n,s){var p,b,k;const u=(k=(b=(p=n==null?void 0:n.ownerDocument)==null?void 0:p.defaultView)==null?void 0:b.getComputedStyle(n,null))==null?void 0:k[s],v=Number.parseInt(u,10);return Number.isNaN(v)?0:v}return(n,s)=>{const u=R("NavbarSearch");return r(),c("header",{ref_key:"navbar",ref:e,class:"navbar"},[$(Xt,{onToggle:s[0]||(s[0]=v=>n.$emit("toggle-sidebar"))}),g("span",{ref_key:"navbarBrand",ref:i},[$(mt)],512),g("div",{class:"navbar-items-wrapper",style:We(a(d))},[y(n.$slots,"before"),$(Te,{class:"can-hide"}),y(n.$slots,"after"),a(f)?(r(),x(Ut,{key:0})):w("",!0),$(u)],4)],512)}}});var Jt=C(Yt,[["__file","Navbar.vue"]]);const Qt={class:"page-meta"},Zt={key:0,class:"meta-item edit-link"},ea={key:1,class:"meta-item last-updated"},ta={class:"meta-item-label"},aa={class:"meta-item-info"},na={key:2,class:"meta-item contributors"},ra={class:"meta-item-label"},oa={class:"meta-item-info"},sa=["title"],la=j(", "),ua=S({setup(l){const t=()=>{const n=D(),s=U(),u=P();return h(()=>{var M,O,W;if(!((O=(M=u.value.editLink)!=null?M:n.value.editLink)!=null?O:!0))return null;const{repo:p,docsRepo:b=p,docsBranch:k="main",docsDir:L="",editLinkText:m}=n.value;if(!b)return null;const B=Mt({docsRepo:b,docsBranch:k,docsDir:L,filePathRelative:s.value.filePathRelative,editLinkPattern:(W=u.value.editLinkPattern)!=null?W:n.value.editLinkPattern});return B?{text:m!=null?m:"Edit this page",link:B}:null})},e=()=>{const n=D(),s=U(),u=P();return h(()=>{var b,k,L,m;return!((k=(b=u.value.lastUpdated)!=null?b:n.value.lastUpdated)!=null?k:!0)||!((L=s.value.git)!=null&&L.updatedTime)?null:new Date((m=s.value.git)==null?void 0:m.updatedTime).toLocaleString()})},i=()=>{const n=D(),s=U(),u=P();return h(()=>{var p,b,k,L;return((b=(p=u.value.contributors)!=null?p:n.value.contributors)!=null?b:!0)&&(L=(k=s.value.git)==null?void 0:k.contributors)!=null?L:null})},o=D(),d=t(),f=e(),_=i();return(n,s)=>{const u=R("ClientOnly");return r(),c("footer",Qt,[a(d)?(r(),c("div",Zt,[$(H,{class:"meta-item-label",item:a(d)},null,8,["item"])])):w("",!0),a(f)?(r(),c("div",ea,[g("span",ta,T(a(o).lastUpdatedText)+": ",1),$(u,null,{default:N(()=>[g("span",aa,T(a(f)),1)]),_:1})])):w("",!0),a(_)&&a(_).length?(r(),c("div",na,[g("span",ra,T(a(o).contributorsText)+": ",1),g("span",oa,[(r(!0),c(I,null,A(a(_),(v,p)=>(r(),c(I,{key:p},[g("span",{class:"contributor",title:`email: ${v.email}`},T(v.name),9,sa),p!==a(_).length-1?(r(),c(I,{key:0},[la],64)):w("",!0)],64))),128))])])):w("",!0)])}}});var ia=C(ua,[["__file","PageMeta.vue"]]);const ca={key:0,class:"page-nav"},va={class:"inner"},da={key:0,class:"prev"},pa={key:1,class:"next"},ha=S({setup(l){const t=n=>n===!1?null:Le(n)?ye(n):Ve(n)?n:!1,e=(n,s,u)=>{const v=n.findIndex(p=>p.link===s);if(v!==-1){const p=n[v+u];return p!=null&&p.link?p:null}for(const p of n)if(p.children){const b=e(p.children,s,u);if(b)return b}return null},i=P(),o=ae(),d=z(),f=h(()=>{const n=t(i.value.prev);return n!==!1?n:e(o.value,d.path,-1)}),_=h(()=>{const n=t(i.value.next);return n!==!1?n:e(o.value,d.path,1)});return(n,s)=>a(f)||a(_)?(r(),c("nav",ca,[g("p",va,[a(f)?(r(),c("span",da,[$(H,{item:a(f)},null,8,["item"])])):w("",!0),a(_)?(r(),c("span",pa,[$(H,{item:a(_)},null,8,["item"])])):w("",!0)])])):w("",!0)}});var _a=C(ha,[["__file","PageNav.vue"]]);const fa={class:"page"},ma={class:"theme-default-content"},ba=S({setup(l){return(t,e)=>{const i=R("Content");return r(),c("main",fa,[y(t.$slots,"top"),g("div",ma,[$(i)]),$(ia),$(_a),y(t.$slots,"bottom")])}}});var ga=C(ba,[["__file","Page.vue"]]);const ka={class:"sidebar-item-children"},$a=S({props:{item:{type:Object,required:!0},depth:{type:Number,required:!1,default:0}},setup(l){const t=l,{item:e,depth:i}=Q(t),o=z(),d=te(),f=h(()=>Se(e.value,o)),_=h(()=>({"sidebar-item":!0,"sidebar-heading":i.value===0,active:f.value,collapsible:e.value.collapsible})),n=F(!0),s=F(void 0);return e.value.collapsible&&(n.value=f.value,s.value=()=>{n.value=!n.value},d.afterEach(()=>{n.value=f.value})),(u,v)=>{var b;const p=R("SidebarItem",!0);return r(),c("li",null,[a(e).link?(r(),x(H,{key:0,class:E(a(_)),item:a(e)},null,8,["class","item"])):(r(),c("p",{key:1,tabindex:"0",class:E(a(_)),onClick:v[0]||(v[0]=(...k)=>s.value&&s.value(...k)),onKeydown:v[1]||(v[1]=Ue((...k)=>s.value&&s.value(...k),["enter"]))},[j(T(a(e).text)+" ",1),a(e).collapsible?(r(),c("span",{key:0,class:E(["arrow",n.value?"down":"right"])},null,2)):w("",!0)],34)),(b=a(e).children)!=null&&b.length?(r(),x(Ce,{key:2},{default:N(()=>[q(g("ul",ka,[(r(!0),c(I,null,A(a(e).children,k=>(r(),x(p,{key:`${a(i)}${k.text}${k.link}`,item:k,depth:a(i)+1},null,8,["item","depth"]))),128))],512),[[G,n.value]])]),_:1})):w("",!0)])}}});var La=C($a,[["__file","SidebarItem.vue"]]);const ya={key:0,class:"sidebar-items"},wa=S({setup(l){const t=z(),e=ae();return $e(()=>t.hash,i=>{const o=document.querySelector(".sidebar");if(!o)return;const d=document.querySelector(`.sidebar a.sidebar-item[href="${t.path}${i}"]`);if(!d)return;const f=o.getBoundingClientRect().top,_=o.getBoundingClientRect().height,n=d.getBoundingClientRect().top,s=d.getBoundingClientRect().height;nf+_&&d.scrollIntoView(!1)}),(i,o)=>a(e).length?(r(),c("ul",ya,[(r(!0),c(I,null,A(a(e),d=>(r(),x(La,{key:d.link||d.text,item:d},null,8,["item"]))),128))])):w("",!0)}});var Ca=C(wa,[["__file","SidebarItems.vue"]]);const Sa={class:"sidebar"},xa=S({setup(l){return(t,e)=>(r(),c("aside",Sa,[$(Te),y(t.$slots,"top"),$(Ca),y(t.$slots,"bottom")]))}});var Ta=C(xa,[["__file","Sidebar.vue"]]);const Ba=S({setup(l){const t=U(),e=P(),i=D(),o=h(()=>e.value.navbar!==!1&&i.value.navbar!==!1),d=ae(),f=F(!1),_=m=>{f.value=typeof m=="boolean"?m:!f.value},n={x:0,y:0},s=m=>{n.x=m.changedTouches[0].clientX,n.y=m.changedTouches[0].clientY},u=m=>{const B=m.changedTouches[0].clientX-n.x,M=m.changedTouches[0].clientY-n.y;Math.abs(B)>Math.abs(M)&&Math.abs(B)>40&&(B>0&&n.x<=80?_(!0):_(!1))},v=h(()=>[{"no-navbar":!o.value,"no-sidebar":!d.value.length,"sidebar-open":f.value},e.value.pageClass]);let p;we(()=>{p=te().afterEach(()=>{_(!1)})}),je(()=>{p()});const b=Ke(),k=b.resolve,L=b.pending;return(m,B)=>(r(),c("div",{class:E(["theme-container",a(v)]),onTouchstart:s,onTouchend:u},[y(m.$slots,"navbar",{},()=>[a(o)?(r(),x(Jt,{key:0,onToggleSidebar:_},{before:N(()=>[y(m.$slots,"navbar-before")]),after:N(()=>[y(m.$slots,"navbar-after")]),_:3})):w("",!0)]),g("div",{class:"sidebar-mask",onClick:B[0]||(B[0]=M=>_(!1))}),y(m.$slots,"sidebar",{},()=>[$(Ta,null,{top:N(()=>[y(m.$slots,"sidebar-top")]),bottom:N(()=>[y(m.$slots,"sidebar-bottom")]),_:3})]),y(m.$slots,"page",{},()=>[a(e).home?(r(),x(_t,{key:0})):(r(),x(ke,{key:1,name:"fade-slide-y",mode:"out-in",onBeforeEnter:a(k),onBeforeLeave:a(L)},{default:N(()=>[(r(),x(ga,{key:a(t).path},{top:N(()=>[y(m.$slots,"page-top")]),bottom:N(()=>[y(m.$slots,"page-bottom")]),_:3}))]),_:3},8,["onBeforeEnter","onBeforeLeave"]))])],34))}});var Ia=C(Ba,[["__file","Layout.vue"]]);export{Ia as default}; diff --git a/assets/apm.html.094e1360.js b/assets/apm.html.094e1360.js deleted file mode 100644 index 2f7dc2ff1..000000000 --- a/assets/apm.html.094e1360.js +++ /dev/null @@ -1 +0,0 @@ -const e={key:"v-146e5374",path:"/apm.html",title:"APM",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Instana",slug:"instana",children:[]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"apm.md"};export{e as data}; diff --git a/assets/apm.html.3742eb1c.js b/assets/apm.html.3742eb1c.js new file mode 100644 index 000000000..289365e17 --- /dev/null +++ b/assets/apm.html.3742eb1c.js @@ -0,0 +1 @@ +const a={key:"v-146e5374",path:"/apm.html",title:"APM",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Instana",slug:"instana",children:[]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"apm.md"};export{a as data}; diff --git a/assets/apm.html.4bb4d3c6.js b/assets/apm.html.f373cdbd.js similarity index 93% rename from assets/apm.html.4bb4d3c6.js rename to assets/apm.html.f373cdbd.js index 2dae02e0b..c401fe48b 100644 --- a/assets/apm.html.4bb4d3c6.js +++ b/assets/apm.html.f373cdbd.js @@ -1,4 +1,4 @@ -import{_ as e,c as a}from"./app.5ecbe10d.js";const n={},i=a(`

APM

Instana

Whispr is pre-configured to work with Instana APM tool. To enable Instana, set the following environment variables:

INSTANA_ENDPOINT_URL
+import{_ as e,c as a}from"./app.8a6a951d.js";const n={},i=a(`

APM

Instana

Whispr is pre-configured to work with Instana APM tool. To enable Instana, set the following environment variables:

INSTANA_ENDPOINT_URL
 INSTANA_AGENT_KEY
 
 # Optional - if you're behind a proxy, set this env var to your proxy URL
diff --git a/assets/app.5ecbe10d.js b/assets/app.8a6a951d.js
similarity index 97%
rename from assets/app.5ecbe10d.js
rename to assets/app.8a6a951d.js
index 81a9d8515..cfcd57b96 100644
--- a/assets/app.5ecbe10d.js
+++ b/assets/app.8a6a951d.js
@@ -1,4 +1,4 @@
-var vl=Object.defineProperty,_l=Object.defineProperties;var yl=Object.getOwnPropertyDescriptors;var Ao=Object.getOwnPropertySymbols;var bl=Object.prototype.hasOwnProperty,El=Object.prototype.propertyIsEnumerable;var To=(e,t,n)=>t in e?vl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Qe=(e,t)=>{for(var n in t||(t={}))bl.call(t,n)&&To(e,n,t[n]);if(Ao)for(var n of Ao(t))El.call(t,n)&&To(e,n,t[n]);return e},Pn=(e,t)=>_l(e,yl(t));const bo={},wl="modulepreload",Po={},Cl="/whispr/",K=function(t,n){return!n||n.length===0?t():Promise.all(n.map(r=>{if(r=`${Cl}${r}`,r in Po)return;Po[r]=!0;const o=r.endsWith(".css"),s=o?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${r}"]${s}`))return;const i=document.createElement("link");if(i.rel=o?"stylesheet":wl,o||(i.as="script",i.crossOrigin=""),i.href=r,document.head.appendChild(i),o)return new Promise((l,a)=>{i.addEventListener("load",l),i.addEventListener("error",()=>a(new Error(`Unable to preload CSS for ${r}`)))})})).then(()=>t())},Al={"v-8daa1a0e":()=>K(()=>import("./index.html.f9c0292e.js"),[]).then(({data:e})=>e),"v-146e5374":()=>K(()=>import("./apm.html.094e1360.js"),[]).then(({data:e})=>e),"v-2eb76c63":()=>K(()=>import("./fileupload.html.c2264674.js"),[]).then(({data:e})=>e),"v-ecba32a0":()=>K(()=>import("./indexing.html.4d3c69dc.js"),[]).then(({data:e})=>e),"v-6ca815f4":()=>K(()=>import("./installation.html.34138921.js"),[]).then(({data:e})=>e),"v-27b6bb40":()=>K(()=>import("./security.html.aad6b990.js"),[]).then(({data:e})=>e),"v-53401e42":()=>K(()=>import("./testing.html.a1ea7c68.js"),[]).then(({data:e})=>e),"v-fe842d44":()=>K(()=>import("./graphql.html.78c6aca5.js"),[]).then(({data:e})=>e),"v-0e4a26f1":()=>K(()=>import("./introduction.html.d7afc69b.js"),[]).then(({data:e})=>e),"v-e9130d12":()=>K(()=>import("./rest.html.be236b2e.js"),[]).then(({data:e})=>e),"v-63e82ae3":()=>K(()=>import("./index.html.86913dca.js"),[]).then(({data:e})=>e),"v-3ea3fa0e":()=>K(()=>import("./building.html.b67ca598.js"),[]).then(({data:e})=>e),"v-76cfe0bc":()=>K(()=>import("./community.html.a23266a2.js"),[]).then(({data:e})=>e),"v-141584aa":()=>K(()=>import("./credits.html.777869f2.js"),[]).then(({data:e})=>e),"v-7e30aeec":()=>K(()=>import("./guidelines.html.fbbd6a8c.js"),[]).then(({data:e})=>e),"v-17f9b51d":()=>K(()=>import("./index.html.98268d15.js"),[]).then(({data:e})=>e),"v-a8a674e6":()=>K(()=>import("./index.html.ac964044.js"),[]).then(({data:e})=>e),"v-712e14fc":()=>K(()=>import("./index.html.8e69699d.js"),[]).then(({data:e})=>e),"v-66de8e88":()=>K(()=>import("./tagGroup.html.1c5de81c.js"),[]).then(({data:e})=>e),"v-581890ae":()=>K(()=>import("./webhook.html.c607cfa9.js"),[]).then(({data:e})=>e),"v-4b2698d0":()=>K(()=>import("./whisp.html.95fe4ff9.js"),[]).then(({data:e})=>e),"v-67d16688":()=>K(()=>import("./index.html.f96fd055.js"),[]).then(({data:e})=>e),"v-47ce024e":()=>K(()=>import("./index.html.015bda07.js"),[]).then(({data:e})=>e),"v-43f4d00c":()=>K(()=>import("./index.html.b72dac1b.js"),[]).then(({data:e})=>e),"v-3706649a":()=>K(()=>import("./404.html.0f07aaf0.js"),[]).then(({data:e})=>e)};function jr(e,t){const n=Object.create(null),r=e.split(",");for(let o=0;o!!n[o.toLowerCase()]:o=>!!n[o]}const Tl="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Pl=jr(Tl);function Rs(e){return!!e||e===""}function Yn(e){if(J(e)){const t={};for(let n=0;n{if(n){const r=n.split(Ol);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function bn(e){let t="";if(pe(e))t=e;else if(J(e))for(let n=0;npe(e)?e:e==null?"":J(e)||Ee(e)&&(e.toString===ks||!ee(e.toString))?JSON.stringify(e,Ss,2):String(e),Ss=(e,t)=>t&&t.__v_isRef?Ss(e,t.value):Bt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,o])=>(n[`${r} =>`]=o,n),{})}:Ls(t)?{[`Set(${t.size})`]:[...t.values()]}:Ee(t)&&!J(t)&&!Ds(t)?String(t):t,he={},zt=[],Ke=()=>{},Ll=()=>!1,Il=/^on[^a-z]/,En=e=>Il.test(e),Vr=e=>e.startsWith("onUpdate:"),Te=Object.assign,Ur=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},kl=Object.prototype.hasOwnProperty,re=(e,t)=>kl.call(e,t),J=Array.isArray,Bt=e=>Jn(e)==="[object Map]",Ls=e=>Jn(e)==="[object Set]",ee=e=>typeof e=="function",pe=e=>typeof e=="string",qr=e=>typeof e=="symbol",Ee=e=>e!==null&&typeof e=="object",Is=e=>Ee(e)&&ee(e.then)&&ee(e.catch),ks=Object.prototype.toString,Jn=e=>ks.call(e),Dl=e=>Jn(e).slice(8,-1),Ds=e=>Jn(e)==="[object Object]",Kr=e=>pe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,sn=jr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Qn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ml=/-(\w)/g,Je=Qn(e=>e.replace(Ml,(t,n)=>n?n.toUpperCase():"")),Nl=/\B([A-Z])/g,Lt=Qn(e=>e.replace(Nl,"-$1").toLowerCase()),Zn=Qn(e=>e.charAt(0).toUpperCase()+e.slice(1)),lr=Qn(e=>e?`on${Zn(e)}`:""),hn=(e,t)=>!Object.is(e,t),ar=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Ms=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let xo;const Hl=()=>xo||(xo=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});let Me;class Fl{constructor(t=!1){this.active=!0,this.effects=[],this.cleanups=[],!t&&Me&&(this.parent=Me,this.index=(Me.scopes||(Me.scopes=[])).push(this)-1)}run(t){if(this.active){const n=Me;try{return Me=this,t()}finally{Me=n}}}on(){Me=this}off(){Me=this.parent}stop(t){if(this.active){let n,r;for(n=0,r=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},Ns=e=>(e.w&mt)>0,Hs=e=>(e.n&mt)>0,jl=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(c==="length"||c>=r)&&l.push(a)});else switch(n!==void 0&&l.push(i.get(n)),t){case"add":J(e)?Kr(n)&&l.push(i.get("length")):(l.push(i.get(Tt)),Bt(e)&&l.push(i.get(Tr)));break;case"delete":J(e)||(l.push(i.get(Tt)),Bt(e)&&l.push(i.get(Tr)));break;case"set":Bt(e)&&l.push(i.get(Tt));break}if(l.length===1)l[0]&&Pr(l[0]);else{const a=[];for(const c of l)c&&a.push(...c);Pr(Wr(a))}}function Pr(e,t){for(const n of J(e)?e:[...e])(n!==qe||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}const Ul=jr("__proto__,__v_isRef,__isVue"),zs=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(qr)),ql=Yr(),Kl=Yr(!1,!0),Wl=Yr(!0),Ro=Gl();function Gl(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=ie(this);for(let s=0,i=this.length;s{e[t]=function(...n){Wt();const r=ie(this)[t].apply(this,n);return Gt(),r}}),e}function Yr(e=!1,t=!1){return function(r,o,s){if(o==="__v_isReactive")return!e;if(o==="__v_isReadonly")return e;if(o==="__v_isShallow")return t;if(o==="__v_raw"&&s===(e?t?ua:qs:t?Us:Vs).get(r))return r;const i=J(r);if(!e&&i&&re(Ro,o))return Reflect.get(Ro,o,s);const l=Reflect.get(r,o,s);return(qr(o)?zs.has(o):Ul(o))||(e||Fe(r,"get",o),t)?l:Ce(l)?!i||!Kr(o)?l.value:l:Ee(l)?e?Zr(l):Yt(l):l}}const Yl=Bs(),Jl=Bs(!0);function Bs(e=!1){return function(n,r,o,s){let i=n[r];if(pn(i)&&Ce(i)&&!Ce(o))return!1;if(!e&&!pn(o)&&(Ks(o)||(o=ie(o),i=ie(i)),!J(n)&&Ce(i)&&!Ce(o)))return i.value=o,!0;const l=J(n)&&Kr(r)?Number(r)e,Xn=e=>Reflect.getPrototypeOf(e);function xn(e,t,n=!1,r=!1){e=e.__v_raw;const o=ie(e),s=ie(t);t!==s&&!n&&Fe(o,"get",t),!n&&Fe(o,"get",s);const{has:i}=Xn(o),l=r?Jr:n?eo:mn;if(i.call(o,t))return l(e.get(t));if(i.call(o,s))return l(e.get(s));e!==o&&e.get(t)}function On(e,t=!1){const n=this.__v_raw,r=ie(n),o=ie(e);return e!==o&&!t&&Fe(r,"has",e),!t&&Fe(r,"has",o),e===o?n.has(e):n.has(e)||n.has(o)}function Rn(e,t=!1){return e=e.__v_raw,!t&&Fe(ie(e),"iterate",Tt),Reflect.get(e,"size",e)}function So(e){e=ie(e);const t=ie(this);return Xn(t).has.call(t,e)||(t.add(e),nt(t,"add",e,e)),this}function Lo(e,t){t=ie(t);const n=ie(this),{has:r,get:o}=Xn(n);let s=r.call(n,e);s||(e=ie(e),s=r.call(n,e));const i=o.call(n,e);return n.set(e,t),s?hn(t,i)&&nt(n,"set",e,t):nt(n,"add",e,t),this}function Io(e){const t=ie(this),{has:n,get:r}=Xn(t);let o=n.call(t,e);o||(e=ie(e),o=n.call(t,e)),r&&r.call(t,e);const s=t.delete(e);return o&&nt(t,"delete",e,void 0),s}function ko(){const e=ie(this),t=e.size!==0,n=e.clear();return t&&nt(e,"clear",void 0,void 0),n}function Sn(e,t){return function(r,o){const s=this,i=s.__v_raw,l=ie(i),a=t?Jr:e?eo:mn;return!e&&Fe(l,"iterate",Tt),i.forEach((c,f)=>r.call(o,a(c),a(f),s))}}function Ln(e,t,n){return function(...r){const o=this.__v_raw,s=ie(o),i=Bt(s),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,c=o[e](...r),f=n?Jr:t?eo:mn;return!t&&Fe(s,"iterate",a?Tr:Tt),{next(){const{value:p,done:d}=c.next();return d?{value:p,done:d}:{value:l?[f(p[0]),f(p[1])]:f(p),done:d}},[Symbol.iterator](){return this}}}}function ot(e){return function(...t){return e==="delete"?!1:this}}function na(){const e={get(s){return xn(this,s)},get size(){return Rn(this)},has:On,add:So,set:Lo,delete:Io,clear:ko,forEach:Sn(!1,!1)},t={get(s){return xn(this,s,!1,!0)},get size(){return Rn(this)},has:On,add:So,set:Lo,delete:Io,clear:ko,forEach:Sn(!1,!0)},n={get(s){return xn(this,s,!0)},get size(){return Rn(this,!0)},has(s){return On.call(this,s,!0)},add:ot("add"),set:ot("set"),delete:ot("delete"),clear:ot("clear"),forEach:Sn(!0,!1)},r={get(s){return xn(this,s,!0,!0)},get size(){return Rn(this,!0)},has(s){return On.call(this,s,!0)},add:ot("add"),set:ot("set"),delete:ot("delete"),clear:ot("clear"),forEach:Sn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(s=>{e[s]=Ln(s,!1,!1),n[s]=Ln(s,!0,!1),t[s]=Ln(s,!1,!0),r[s]=Ln(s,!0,!0)}),[e,n,t,r]}const[ra,oa,sa,ia]=na();function Qr(e,t){const n=t?e?ia:sa:e?oa:ra;return(r,o,s)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(re(n,o)&&o in r?n:r,o,s)}const la={get:Qr(!1,!1)},aa={get:Qr(!1,!0)},ca={get:Qr(!0,!1)},Vs=new WeakMap,Us=new WeakMap,qs=new WeakMap,ua=new WeakMap;function fa(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function da(e){return e.__v_skip||!Object.isExtensible(e)?0:fa(Dl(e))}function Yt(e){return pn(e)?e:Xr(e,!1,js,la,Vs)}function ha(e){return Xr(e,!1,ta,aa,Us)}function Zr(e){return Xr(e,!0,ea,ca,qs)}function Xr(e,t,n,r,o){if(!Ee(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const s=o.get(e);if(s)return s;const i=da(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return o.set(e,l),l}function jt(e){return pn(e)?jt(e.__v_raw):!!(e&&e.__v_isReactive)}function pn(e){return!!(e&&e.__v_isReadonly)}function Ks(e){return!!(e&&e.__v_isShallow)}function Ws(e){return jt(e)||pn(e)}function ie(e){const t=e&&e.__v_raw;return t?ie(t):e}function Gs(e){return Hn(e,"__v_skip",!0),e}const mn=e=>Ee(e)?Yt(e):e,eo=e=>Ee(e)?Zr(e):e;function Ys(e){ht&&qe&&(e=ie(e),$s(e.dep||(e.dep=Wr())))}function Js(e,t){e=ie(e),e.dep&&Pr(e.dep)}function Ce(e){return!!(e&&e.__v_isRef===!0)}function xe(e){return Zs(e,!1)}function Qs(e){return Zs(e,!0)}function Zs(e,t){return Ce(e)?e:new pa(e,t)}class pa{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:ie(t),this._value=n?t:mn(t)}get value(){return Ys(this),this._value}set value(t){t=this.__v_isShallow?t:ie(t),hn(t,this._rawValue)&&(this._rawValue=t,this._value=this.__v_isShallow?t:mn(t),Js(this))}}function Pt(e){return Ce(e)?e.value:e}const ma={get:(e,t,n)=>Pt(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Ce(o)&&!Ce(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Xs(e){return jt(e)?e:new Proxy(e,ma)}function th(e){const t=J(e)?new Array(e.length):{};for(const n in e)t[n]=va(e,n);return t}class ga{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}}function va(e,t,n){const r=e[t];return Ce(r)?r:new ga(e,t,n)}class _a{constructor(t,n,r,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this._dirty=!0,this.effect=new Gr(t,()=>{this._dirty||(this._dirty=!0,Js(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=r}get value(){const t=ie(this);return Ys(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function ya(e,t,n=!1){let r,o;const s=ee(e);return s?(r=e,o=Ke):(r=e.get,o=e.set),new _a(r,o,s||!o,n)}function pt(e,t,n,r){let o;try{o=r?e(...r):e()}catch(s){wn(s,t,n)}return o}function je(e,t,n,r){if(ee(e)){const s=pt(e,t,n,r);return s&&Is(s)&&s.catch(i=>{wn(i,t,n)}),s}const o=[];for(let s=0;s>>1;gn(Ne[r])Xe&&Ne.splice(t,1)}function ni(e,t,n,r){J(e)?n.push(...e):(!t||!t.includes(e,e.allowRecurse?r+1:r))&&n.push(e),ti()}function Ca(e){ni(e,on,ln,Ht)}function Aa(e){ni(e,ct,an,Ft)}function oo(e,t=null){if(ln.length){for(Or=t,on=[...new Set(ln)],ln.length=0,Ht=0;Htgn(n)-gn(r)),Ft=0;Fte.id==null?1/0:e.id;function ri(e){xr=!1,Fn=!0,oo(e),Ne.sort((n,r)=>gn(n)-gn(r));const t=Ke;try{for(Xe=0;Xe_.trim()):p&&(o=n.map(Ms))}let l,a=r[l=lr(t)]||r[l=lr(Je(t))];!a&&s&&(a=r[l=lr(Lt(t))]),a&&je(a,e,6,o);const c=r[l+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,je(c,e,6,o)}}function oi(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const s=e.emits;let i={},l=!1;if(!ee(e)){const a=c=>{const f=oi(c,t,!0);f&&(l=!0,Te(i,f))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!s&&!l?(r.set(e,null),null):(J(s)?s.forEach(a=>i[a]=null):Te(i,s),r.set(e,i),i)}function er(e,t){return!e||!En(t)?!1:(t=t.slice(2).replace(/Once$/,""),re(e,t[0].toLowerCase()+t.slice(1))||re(e,Lt(t))||re(e,t))}let Pe=null,si=null;function zn(e){const t=Pe;return Pe=e,si=e&&e.type.__scopeId||null,t}function Pa(e,t=Pe,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&Uo(-1);const s=zn(t),i=e(...o);return zn(s),r._d&&Uo(1),i};return r._n=!0,r._c=!0,r._d=!0,r}function cr(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:s,propsOptions:[i],slots:l,attrs:a,emit:c,render:f,renderCache:p,data:d,setupState:_,ctx:b,inheritAttrs:D}=e;let g,v;const P=zn(e);try{if(n.shapeFlag&4){const N=o||r;g=Ue(f.call(N,N,p,s,_,d,b)),v=a}else{const N=t;g=Ue(N.length>1?N(s,{attrs:a,slots:l,emit:c}):N(s,null)),v=t.props?a:xa(a)}}catch(N){un.length=0,wn(N,e,1),g=ye(He)}let S=g;if(v&&D!==!1){const N=Object.keys(v),{shapeFlag:V}=S;N.length&&V&7&&(i&&N.some(Vr)&&(v=Oa(v,i)),S=St(S,v))}return n.dirs&&(S.dirs=S.dirs?S.dirs.concat(n.dirs):n.dirs),n.transition&&(S.transition=n.transition),g=S,zn(P),g}const xa=e=>{let t;for(const n in e)(n==="class"||n==="style"||En(n))&&((t||(t={}))[n]=e[n]);return t},Oa=(e,t)=>{const n={};for(const r in e)(!Vr(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Ra(e,t,n){const{props:r,children:o,component:s}=e,{props:i,children:l,patchFlag:a}=t,c=s.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return r?Do(r,i,c):!!i;if(a&8){const f=t.dynamicProps;for(let p=0;pe.__isSuspense;function ii(e,t){t&&t.pendingBranch?J(e)?t.effects.push(...e):t.effects.push(e):Aa(e)}function xt(e,t){if(we){let n=we.provides;const r=we.parent&&we.parent.provides;r===n&&(n=we.provides=Object.create(r)),n[e]=t}}function Ae(e,t,n=!1){const r=we||Pe;if(r){const o=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(o&&e in o)return o[e];if(arguments.length>1)return n&&ee(t)?t.call(r.proxy):t}}const Mo={};function tt(e,t,n){return li(e,t,n)}function li(e,t,{immediate:n,deep:r,flush:o,onTrack:s,onTrigger:i}=he){const l=we;let a,c=!1,f=!1;if(Ce(e)?(a=()=>e.value,c=Ks(e)):jt(e)?(a=()=>e,r=!0):J(e)?(f=!0,c=e.some(jt),a=()=>e.map(v=>{if(Ce(v))return v.value;if(jt(v))return At(v);if(ee(v))return pt(v,l,2)})):ee(e)?t?a=()=>pt(e,l,2):a=()=>{if(!(l&&l.isUnmounted))return p&&p(),je(e,l,3,[d])}:a=Ke,t&&r){const v=a;a=()=>At(v())}let p,d=v=>{p=g.onStop=()=>{pt(v,l,4)}};if(Ut)return d=Ke,t?n&&je(t,l,3,[a(),f?[]:void 0,d]):a(),Ke;let _=f?[]:Mo;const b=()=>{if(!!g.active)if(t){const v=g.run();(r||c||(f?v.some((P,S)=>hn(P,_[S])):hn(v,_)))&&(p&&p(),je(t,l,3,[v,_===Mo?void 0:_,d]),_=v)}else g.run()};b.allowRecurse=!!t;let D;o==="sync"?D=b:o==="post"?D=()=>Le(b,l&&l.suspense):D=()=>{!l||l.isMounted?Ca(b):b()};const g=new Gr(a,D);return t?n?b():_=g.run():o==="post"?Le(g.run.bind(g),l&&l.suspense):g.run(),()=>{g.stop(),l&&l.scope&&Ur(l.scope.effects,g)}}function Ia(e,t,n){const r=this.proxy,o=pe(e)?e.includes(".")?ai(r,e):()=>r[e]:e.bind(r,r);let s;ee(t)?s=t:(s=t.handler,n=t);const i=we;Vt(this);const l=li(o,s.bind(r),n);return i?Vt(i):Rt(),l}function ai(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o{At(n,t)});else if(Ds(e))for(const n in e)At(e[n],t);return e}function ka(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return gt(()=>{e.isMounted=!0}),so(()=>{e.isUnmounting=!0}),e}const ze=[Function,Array],Da={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ze,onEnter:ze,onAfterEnter:ze,onEnterCancelled:ze,onBeforeLeave:ze,onLeave:ze,onAfterLeave:ze,onLeaveCancelled:ze,onBeforeAppear:ze,onAppear:ze,onAfterAppear:ze,onAppearCancelled:ze},setup(e,{slots:t}){const n=Li(),r=ka();let o;return()=>{const s=t.default&&fi(t.default(),!0);if(!s||!s.length)return;let i=s[0];if(s.length>1){for(const D of s)if(D.type!==He){i=D;break}}const l=ie(e),{mode:a}=l;if(r.isLeaving)return ur(i);const c=No(i);if(!c)return ur(i);const f=Rr(c,l,r,n);Sr(c,f);const p=n.subTree,d=p&&No(p);let _=!1;const{getTransitionKey:b}=c.type;if(b){const D=b();o===void 0?o=D:D!==o&&(o=D,_=!0)}if(d&&d.type!==He&&(!wt(c,d)||_)){const D=Rr(d,l,r,n);if(Sr(d,D),a==="out-in")return r.isLeaving=!0,D.afterLeave=()=>{r.isLeaving=!1,n.update()},ur(i);a==="in-out"&&c.type!==He&&(D.delayLeave=(g,v,P)=>{const S=ui(r,d);S[String(d.key)]=d,g._leaveCb=()=>{v(),g._leaveCb=void 0,delete f.delayedLeave},f.delayedLeave=P})}return i}}},ci=Da;function ui(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Rr(e,t,n,r){const{appear:o,mode:s,persisted:i=!1,onBeforeEnter:l,onEnter:a,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:p,onLeave:d,onAfterLeave:_,onLeaveCancelled:b,onBeforeAppear:D,onAppear:g,onAfterAppear:v,onAppearCancelled:P}=t,S=String(e.key),N=ui(n,e),V=(C,w)=>{C&&je(C,r,9,w)},H={mode:s,persisted:i,beforeEnter(C){let w=l;if(!n.isMounted)if(o)w=D||l;else return;C._leaveCb&&C._leaveCb(!0);const W=N[S];W&&wt(e,W)&&W.el._leaveCb&&W.el._leaveCb(),V(w,[C])},enter(C){let w=a,W=c,j=f;if(!n.isMounted)if(o)w=g||a,W=v||c,j=P||f;else return;let Y=!1;const y=C._enterCb=k=>{Y||(Y=!0,k?V(j,[C]):V(W,[C]),H.delayedLeave&&H.delayedLeave(),C._enterCb=void 0)};w?(w(C,y),w.length<=1&&y()):y()},leave(C,w){const W=String(e.key);if(C._enterCb&&C._enterCb(!0),n.isUnmounting)return w();V(p,[C]);let j=!1;const Y=C._leaveCb=y=>{j||(j=!0,w(),y?V(b,[C]):V(_,[C]),C._leaveCb=void 0,N[W]===e&&delete N[W])};N[W]=e,d?(d(C,Y),d.length<=1&&Y()):Y()},clone(C){return Rr(C,t,n,r)}};return H}function ur(e){if(Cn(e))return e=St(e),e.children=null,e}function No(e){return Cn(e)?e.children?e.children[0]:void 0:e}function Sr(e,t){e.shapeFlag&6&&e.component?Sr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function fi(e,t=!1,n){let r=[],o=0;for(let s=0;s1)for(let s=0;s!!e.type.__asyncLoader;function fe(e){ee(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:s,suspensible:i=!0,onError:l}=e;let a=null,c,f=0;const p=()=>(f++,a=null,d()),d=()=>{let _;return a||(_=a=t().catch(b=>{if(b=b instanceof Error?b:new Error(String(b)),l)return new Promise((D,g)=>{l(b,()=>D(p()),()=>g(b),f+1)});throw b}).then(b=>_!==a&&a?a:(b&&(b.__esModule||b[Symbol.toStringTag]==="Module")&&(b=b.default),c=b,b)))};return We({name:"AsyncComponentWrapper",__asyncLoader:d,get __asyncResolved(){return c},setup(){const _=we;if(c)return()=>fr(c,_);const b=P=>{a=null,wn(P,_,13,!r)};if(i&&_.suspense||Ut)return d().then(P=>()=>fr(P,_)).catch(P=>(b(P),()=>r?ye(r,{error:P}):null));const D=xe(!1),g=xe(),v=xe(!!o);return o&&setTimeout(()=>{v.value=!1},o),s!=null&&setTimeout(()=>{if(!D.value&&!g.value){const P=new Error(`Async component timed out after ${s}ms.`);b(P),g.value=P}},s),d().then(()=>{D.value=!0,_.parent&&Cn(_.parent.vnode)&&ro(_.parent.update)}).catch(P=>{b(P),g.value=P}),()=>{if(D.value&&c)return fr(c,_);if(g.value&&r)return ye(r,{error:g.value});if(n&&!v.value)return ye(n)}}})}function fr(e,{vnode:{ref:t,props:n,children:r}}){const o=ye(e,n,r);return o.ref=t,o}const Cn=e=>e.type.__isKeepAlive;function Ma(e,t){di(e,"a",t)}function Na(e,t){di(e,"da",t)}function di(e,t,n=we){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(tr(t,r,n),n){let o=n.parent;for(;o&&o.parent;)Cn(o.parent.vnode)&&Ha(r,t,n,o),o=o.parent}}function Ha(e,t,n,r){const o=tr(t,e,r,!0);io(()=>{Ur(r[t],o)},n)}function tr(e,t,n=we,r=!1){if(n){const o=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;Wt(),Vt(n);const l=je(t,n,e,i);return Rt(),Gt(),l});return r?o.unshift(s):o.push(s),s}}const rt=e=>(t,n=we)=>(!Ut||e==="sp")&&tr(e,t,n),hi=rt("bm"),gt=rt("m"),Fa=rt("bu"),$a=rt("u"),so=rt("bum"),io=rt("um"),za=rt("sp"),Ba=rt("rtg"),ja=rt("rtc");function Va(e,t=we){tr("ec",e,t)}let Lr=!0;function Ua(e){const t=mi(e),n=e.proxy,r=e.ctx;Lr=!1,t.beforeCreate&&Ho(t.beforeCreate,e,"bc");const{data:o,computed:s,methods:i,watch:l,provide:a,inject:c,created:f,beforeMount:p,mounted:d,beforeUpdate:_,updated:b,activated:D,deactivated:g,beforeDestroy:v,beforeUnmount:P,destroyed:S,unmounted:N,render:V,renderTracked:H,renderTriggered:C,errorCaptured:w,serverPrefetch:W,expose:j,inheritAttrs:Y,components:y,directives:k,filters:G}=t;if(c&&qa(c,r,null,e.appContext.config.unwrapInjectedRef),i)for(const X in i){const ne=i[X];ee(ne)&&(r[X]=ne.bind(n))}if(o){const X=o.call(n,n);Ee(X)&&(e.data=Yt(X))}if(Lr=!0,s)for(const X in s){const ne=s[X],be=ee(ne)?ne.bind(n,n):ee(ne.get)?ne.get.bind(n,n):Ke,Oe=!ee(ne)&&ee(ne.set)?ne.set.bind(n):Ke,ke=_e({get:be,set:Oe});Object.defineProperty(r,X,{enumerable:!0,configurable:!0,get:()=>ke.value,set:$e=>ke.value=$e})}if(l)for(const X in l)pi(l[X],r,n,X);if(a){const X=ee(a)?a.call(n):a;Reflect.ownKeys(X).forEach(ne=>{xt(ne,X[ne])})}f&&Ho(f,e,"c");function B(X,ne){J(ne)?ne.forEach(be=>X(be.bind(n))):ne&&X(ne.bind(n))}if(B(hi,p),B(gt,d),B(Fa,_),B($a,b),B(Ma,D),B(Na,g),B(Va,w),B(ja,H),B(Ba,C),B(so,P),B(io,N),B(za,W),J(j))if(j.length){const X=e.exposed||(e.exposed={});j.forEach(ne=>{Object.defineProperty(X,ne,{get:()=>n[ne],set:be=>n[ne]=be})})}else e.exposed||(e.exposed={});V&&e.render===Ke&&(e.render=V),Y!=null&&(e.inheritAttrs=Y),y&&(e.components=y),k&&(e.directives=k)}function qa(e,t,n=Ke,r=!1){J(e)&&(e=Ir(e));for(const o in e){const s=e[o];let i;Ee(s)?"default"in s?i=Ae(s.from||o,s.default,!0):i=Ae(s.from||o):i=Ae(s),Ce(i)&&r?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):t[o]=i}}function Ho(e,t,n){je(J(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function pi(e,t,n,r){const o=r.includes(".")?ai(n,r):()=>n[r];if(pe(e)){const s=t[e];ee(s)&&tt(o,s)}else if(ee(e))tt(o,e.bind(n));else if(Ee(e))if(J(e))e.forEach(s=>pi(s,t,n,r));else{const s=ee(e.handler)?e.handler.bind(n):t[e.handler];ee(s)&&tt(o,s,e)}}function mi(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:s,config:{optionMergeStrategies:i}}=e.appContext,l=s.get(t);let a;return l?a=l:!o.length&&!n&&!r?a=t:(a={},o.length&&o.forEach(c=>Bn(a,c,i,!0)),Bn(a,t,i)),s.set(t,a),a}function Bn(e,t,n,r=!1){const{mixins:o,extends:s}=t;s&&Bn(e,s,n,!0),o&&o.forEach(i=>Bn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=Ka[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Ka={data:Fo,props:yt,emits:yt,methods:yt,computed:yt,beforeCreate:Re,created:Re,beforeMount:Re,mounted:Re,beforeUpdate:Re,updated:Re,beforeDestroy:Re,beforeUnmount:Re,destroyed:Re,unmounted:Re,activated:Re,deactivated:Re,errorCaptured:Re,serverPrefetch:Re,components:yt,directives:yt,watch:Ga,provide:Fo,inject:Wa};function Fo(e,t){return t?e?function(){return Te(ee(e)?e.call(this,this):e,ee(t)?t.call(this,this):t)}:t:e}function Wa(e,t){return yt(Ir(e),Ir(t))}function Ir(e){if(J(e)){const t={};for(let n=0;n0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let p=0;p{a=!0;const[d,_]=vi(p,t,!0);Te(i,d),_&&l.push(..._)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!s&&!a)return r.set(e,zt),zt;if(J(s))for(let f=0;f-1,_[1]=D<0||b-1||re(_,"default"))&&l.push(p)}}}const c=[i,l];return r.set(e,c),c}function $o(e){return e[0]!=="$"}function zo(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function Bo(e,t){return zo(e)===zo(t)}function jo(e,t){return J(t)?t.findIndex(n=>Bo(n,e)):ee(t)&&Bo(t,e)?0:-1}const _i=e=>e[0]==="_"||e==="$stable",lo=e=>J(e)?e.map(Ue):[Ue(e)],Qa=(e,t,n)=>{const r=Pa((...o)=>lo(t(...o)),n);return r._c=!1,r},yi=(e,t,n)=>{const r=e._ctx;for(const o in e){if(_i(o))continue;const s=e[o];if(ee(s))t[o]=Qa(o,s,r);else if(s!=null){const i=lo(s);t[o]=()=>i}}},bi=(e,t)=>{const n=lo(t);e.slots.default=()=>n},Za=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=ie(t),Hn(t,"_",n)):yi(t,e.slots={})}else e.slots={},t&&bi(e,t);Hn(e.slots,rr,1)},Xa=(e,t,n)=>{const{vnode:r,slots:o}=e;let s=!0,i=he;if(r.shapeFlag&32){const l=t._;l?n&&l===1?s=!1:(Te(o,t),!n&&l===1&&delete o._):(s=!t.$stable,yi(t,o)),i=t}else t&&(bi(e,t),i={default:1});if(s)for(const l in o)!_i(l)&&!(l in i)&&delete o[l]};function nh(e,t){const n=Pe;if(n===null)return e;const r=or(n)||n.proxy,o=e.dirs||(e.dirs=[]);for(let s=0;sjn(d,t&&(J(t)?t[_]:t),n,r,o));return}if(vn(r)&&!o)return;const s=r.shapeFlag&4?or(r.component)||r.component.proxy:r.el,i=o?null:s,{i:l,r:a}=e,c=t&&t.r,f=l.refs===he?l.refs={}:l.refs,p=l.setupState;if(c!=null&&c!==a&&(pe(c)?(f[c]=null,re(p,c)&&(p[c]=null)):Ce(c)&&(c.value=null)),ee(a))pt(a,l,12,[i,f]);else{const d=pe(a),_=Ce(a);if(d||_){const b=()=>{if(e.f){const D=d?f[a]:a.value;o?J(D)&&Ur(D,s):J(D)?D.includes(s)||D.push(s):d?(f[a]=[s],re(p,a)&&(p[a]=f[a])):(a.value=[s],e.k&&(f[e.k]=a.value))}else d?(f[a]=i,re(p,a)&&(p[a]=i)):Ce(a)&&(a.value=i,e.k&&(f[e.k]=i))};i?(b.id=-1,Le(b,n)):b()}}}let st=!1;const In=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",dr=e=>e.nodeType===8;function nc(e){const{mt:t,p:n,o:{patchProp:r,nextSibling:o,parentNode:s,remove:i,insert:l,createComment:a}}=e,c=(g,v)=>{if(!v.hasChildNodes()){n(null,g,v),$n();return}st=!1,f(v.firstChild,g,null,null,null),$n(),st&&console.error("Hydration completed but contains mismatches.")},f=(g,v,P,S,N,V=!1)=>{const H=dr(g)&&g.data==="[",C=()=>b(g,v,P,S,N,H),{type:w,ref:W,shapeFlag:j}=v,Y=g.nodeType;v.el=g;let y=null;switch(w){case _n:Y!==3?y=C():(g.data!==v.children&&(st=!0,g.data=v.children),y=o(g));break;case He:Y!==8||H?y=C():y=o(g);break;case cn:if(Y!==1)y=C();else{y=g;const k=!v.children.length;for(let G=0;G{V=V||!!v.dynamicChildren;const{type:H,props:C,patchFlag:w,shapeFlag:W,dirs:j}=v,Y=H==="input"&&j||H==="option";if(Y||w!==-1){if(j&&Ye(v,null,P,"created"),C)if(Y||!V||w&48)for(const k in C)(Y&&k.endsWith("value")||En(k)&&!sn(k))&&r(g,k,null,C[k],!1,void 0,P);else C.onClick&&r(g,"onClick",null,C.onClick,!1,void 0,P);let y;if((y=C&&C.onVnodeBeforeMount)&&Be(y,P,v),j&&Ye(v,null,P,"beforeMount"),((y=C&&C.onVnodeMounted)||j)&&ii(()=>{y&&Be(y,P,v),j&&Ye(v,null,P,"mounted")},S),W&16&&!(C&&(C.innerHTML||C.textContent))){let k=d(g.firstChild,v,g,P,S,N,V);for(;k;){st=!0;const G=k;k=k.nextSibling,i(G)}}else W&8&&g.textContent!==v.children&&(st=!0,g.textContent=v.children)}return g.nextSibling},d=(g,v,P,S,N,V,H)=>{H=H||!!v.dynamicChildren;const C=v.children,w=C.length;for(let W=0;W{const{slotScopeIds:H}=v;H&&(N=N?N.concat(H):H);const C=s(g),w=d(o(g),v,C,P,S,N,V);return w&&dr(w)&&w.data==="]"?o(v.anchor=w):(st=!0,l(v.anchor=a("]"),C,w),w)},b=(g,v,P,S,N,V)=>{if(st=!0,v.el=null,V){const w=D(g);for(;;){const W=o(g);if(W&&W!==w)i(W);else break}}const H=o(g),C=s(g);return i(g),n(null,v,C,H,P,S,In(C),N),H},D=g=>{let v=0;for(;g;)if(g=o(g),g&&dr(g)&&(g.data==="["&&v++,g.data==="]")){if(v===0)return o(g);v--}return g};return[c,f]}const Le=ii;function rc(e){return oc(e,nc)}function oc(e,t){const n=Hl();n.__VUE__=!0;const{insert:r,remove:o,patchProp:s,createElement:i,createText:l,createComment:a,setText:c,setElementText:f,parentNode:p,nextSibling:d,setScopeId:_=Ke,cloneNode:b,insertStaticContent:D}=e,g=(u,h,m,T=null,A=null,O=null,M=!1,R=null,I=!!h.dynamicChildren)=>{if(u===h)return;u&&!wt(u,h)&&(T=$(u),Se(u,A,O,!0),u=null),h.patchFlag===-2&&(I=!1,h.dynamicChildren=null);const{type:x,ref:U,shapeFlag:z}=h;switch(x){case _n:v(u,h,m,T);break;case He:P(u,h,m,T);break;case cn:u==null&&S(h,m,T,M);break;case Ie:k(u,h,m,T,A,O,M,R,I);break;default:z&1?H(u,h,m,T,A,O,M,R,I):z&6?G(u,h,m,T,A,O,M,R,I):(z&64||z&128)&&x.process(u,h,m,T,A,O,M,R,I,ce)}U!=null&&A&&jn(U,u&&u.ref,O,h||u,!h)},v=(u,h,m,T)=>{if(u==null)r(h.el=l(h.children),m,T);else{const A=h.el=u.el;h.children!==u.children&&c(A,h.children)}},P=(u,h,m,T)=>{u==null?r(h.el=a(h.children||""),m,T):h.el=u.el},S=(u,h,m,T)=>{[u.el,u.anchor]=D(u.children,h,m,T,u.el,u.anchor)},N=({el:u,anchor:h},m,T)=>{let A;for(;u&&u!==h;)A=d(u),r(u,m,T),u=A;r(h,m,T)},V=({el:u,anchor:h})=>{let m;for(;u&&u!==h;)m=d(u),o(u),u=m;o(h)},H=(u,h,m,T,A,O,M,R,I)=>{M=M||h.type==="svg",u==null?C(h,m,T,A,O,M,R,I):j(u,h,A,O,M,R,I)},C=(u,h,m,T,A,O,M,R)=>{let I,x;const{type:U,props:z,shapeFlag:q,transition:Q,patchFlag:oe,dirs:ge}=u;if(u.el&&b!==void 0&&oe===-1)I=u.el=b(u.el);else{if(I=u.el=i(u.type,O,z&&z.is,z),q&8?f(I,u.children):q&16&&W(u.children,I,null,T,A,O&&U!=="foreignObject",M,R),ge&&Ye(u,null,T,"created"),z){for(const me in z)me!=="value"&&!sn(me)&&s(I,me,null,z[me],O,u.children,T,A,L);"value"in z&&s(I,"value",null,z.value),(x=z.onVnodeBeforeMount)&&Be(x,T,u)}w(I,u,u.scopeId,M,T)}ge&&Ye(u,null,T,"beforeMount");const ue=(!A||A&&!A.pendingBranch)&&Q&&!Q.persisted;ue&&Q.beforeEnter(I),r(I,h,m),((x=z&&z.onVnodeMounted)||ue||ge)&&Le(()=>{x&&Be(x,T,u),ue&&Q.enter(I),ge&&Ye(u,null,T,"mounted")},A)},w=(u,h,m,T,A)=>{if(m&&_(u,m),T)for(let O=0;O{for(let x=I;x{const R=h.el=u.el;let{patchFlag:I,dynamicChildren:x,dirs:U}=h;I|=u.patchFlag&16;const z=u.props||he,q=h.props||he;let Q;m&&vt(m,!1),(Q=q.onVnodeBeforeUpdate)&&Be(Q,m,h,u),U&&Ye(h,u,m,"beforeUpdate"),m&&vt(m,!0);const oe=A&&h.type!=="foreignObject";if(x?Y(u.dynamicChildren,x,R,m,T,oe,O):M||be(u,h,R,null,m,T,oe,O,!1),I>0){if(I&16)y(R,h,z,q,m,T,A);else if(I&2&&z.class!==q.class&&s(R,"class",null,q.class,A),I&4&&s(R,"style",z.style,q.style,A),I&8){const ge=h.dynamicProps;for(let ue=0;ue{Q&&Be(Q,m,h,u),U&&Ye(h,u,m,"updated")},T)},Y=(u,h,m,T,A,O,M)=>{for(let R=0;R{if(m!==T){for(const R in T){if(sn(R))continue;const I=T[R],x=m[R];I!==x&&R!=="value"&&s(u,R,x,I,M,h.children,A,O,L)}if(m!==he)for(const R in m)!sn(R)&&!(R in T)&&s(u,R,m[R],null,M,h.children,A,O,L);"value"in T&&s(u,"value",m.value,T.value)}},k=(u,h,m,T,A,O,M,R,I)=>{const x=h.el=u?u.el:l(""),U=h.anchor=u?u.anchor:l("");let{patchFlag:z,dynamicChildren:q,slotScopeIds:Q}=h;Q&&(R=R?R.concat(Q):Q),u==null?(r(x,m,T),r(U,m,T),W(h.children,m,U,A,O,M,R,I)):z>0&&z&64&&q&&u.dynamicChildren?(Y(u.dynamicChildren,q,m,A,O,M,R),(h.key!=null||A&&h===A.subTree)&&wi(u,h,!0)):be(u,h,m,U,A,O,M,R,I)},G=(u,h,m,T,A,O,M,R,I)=>{h.slotScopeIds=R,u==null?h.shapeFlag&512?A.ctx.activate(h,m,T,M,I):le(h,m,T,A,O,M,I):B(u,h,I)},le=(u,h,m,T,A,O,M)=>{const R=u.component=vc(u,T,A);if(Cn(u)&&(R.ctx.renderer=ce),_c(R),R.asyncDep){if(A&&A.registerDep(R,X),!u.el){const I=R.subTree=ye(He);P(null,I,h,m)}return}X(R,u,h,m,A,O,M)},B=(u,h,m)=>{const T=h.component=u.component;if(Ra(u,h,m))if(T.asyncDep&&!T.asyncResolved){ne(T,h,m);return}else T.next=h,wa(T.update),T.update();else h.component=u.component,h.el=u.el,T.vnode=h},X=(u,h,m,T,A,O,M)=>{const R=()=>{if(u.isMounted){let{next:U,bu:z,u:q,parent:Q,vnode:oe}=u,ge=U,ue;vt(u,!1),U?(U.el=oe.el,ne(u,U,M)):U=oe,z&&ar(z),(ue=U.props&&U.props.onVnodeBeforeUpdate)&&Be(ue,Q,U,oe),vt(u,!0);const me=cr(u),Ve=u.subTree;u.subTree=me,g(Ve,me,p(Ve.el),$(Ve),u,A,O),U.el=me.el,ge===null&&Sa(u,me.el),q&&Le(q,A),(ue=U.props&&U.props.onVnodeUpdated)&&Le(()=>Be(ue,Q,U,oe),A)}else{let U;const{el:z,props:q}=h,{bm:Q,m:oe,parent:ge}=u,ue=vn(h);if(vt(u,!1),Q&&ar(Q),!ue&&(U=q&&q.onVnodeBeforeMount)&&Be(U,ge,h),vt(u,!0),z&&Z){const me=()=>{u.subTree=cr(u),Z(z,u.subTree,u,A,null)};ue?h.type.__asyncLoader().then(()=>!u.isUnmounted&&me()):me()}else{const me=u.subTree=cr(u);g(null,me,m,T,u,A,O),h.el=me.el}if(oe&&Le(oe,A),!ue&&(U=q&&q.onVnodeMounted)){const me=h;Le(()=>Be(U,ge,me),A)}h.shapeFlag&256&&u.a&&Le(u.a,A),u.isMounted=!0,h=m=T=null}},I=u.effect=new Gr(R,()=>ro(u.update),u.scope),x=u.update=I.run.bind(I);x.id=u.uid,vt(u,!0),x()},ne=(u,h,m)=>{h.component=u;const T=u.vnode.props;u.vnode=h,u.next=null,Ja(u,h.props,T,m),Xa(u,h.children,m),Wt(),oo(void 0,u.update),Gt()},be=(u,h,m,T,A,O,M,R,I=!1)=>{const x=u&&u.children,U=u?u.shapeFlag:0,z=h.children,{patchFlag:q,shapeFlag:Q}=h;if(q>0){if(q&128){ke(x,z,m,T,A,O,M,R,I);return}else if(q&256){Oe(x,z,m,T,A,O,M,R,I);return}}Q&8?(U&16&&L(x,A,O),z!==x&&f(m,z)):U&16?Q&16?ke(x,z,m,T,A,O,M,R,I):L(x,A,O,!0):(U&8&&f(m,""),Q&16&&W(z,m,T,A,O,M,R,I))},Oe=(u,h,m,T,A,O,M,R,I)=>{u=u||zt,h=h||zt;const x=u.length,U=h.length,z=Math.min(x,U);let q;for(q=0;qU?L(u,A,O,!0,!1,z):W(h,m,T,A,O,M,R,I,z)},ke=(u,h,m,T,A,O,M,R,I)=>{let x=0;const U=h.length;let z=u.length-1,q=U-1;for(;x<=z&&x<=q;){const Q=u[x],oe=h[x]=I?ut(h[x]):Ue(h[x]);if(wt(Q,oe))g(Q,oe,m,null,A,O,M,R,I);else break;x++}for(;x<=z&&x<=q;){const Q=u[z],oe=h[q]=I?ut(h[q]):Ue(h[q]);if(wt(Q,oe))g(Q,oe,m,null,A,O,M,R,I);else break;z--,q--}if(x>z){if(x<=q){const Q=q+1,oe=Qq)for(;x<=z;)Se(u[x],A,O,!0),x++;else{const Q=x,oe=x,ge=new Map;for(x=oe;x<=q;x++){const De=h[x]=I?ut(h[x]):Ue(h[x]);De.key!=null&&ge.set(De.key,x)}let ue,me=0;const Ve=q-oe+1;let kt=!1,Eo=0;const Zt=new Array(Ve);for(x=0;x=Ve){Se(De,A,O,!0);continue}let Ge;if(De.key!=null)Ge=ge.get(De.key);else for(ue=oe;ue<=q;ue++)if(Zt[ue-oe]===0&&wt(De,h[ue])){Ge=ue;break}Ge===void 0?Se(De,A,O,!0):(Zt[Ge-oe]=x+1,Ge>=Eo?Eo=Ge:kt=!0,g(De,h[Ge],m,null,A,O,M,R,I),me++)}const wo=kt?sc(Zt):zt;for(ue=wo.length-1,x=Ve-1;x>=0;x--){const De=oe+x,Ge=h[De],Co=De+1{const{el:O,type:M,transition:R,children:I,shapeFlag:x}=u;if(x&6){$e(u.component.subTree,h,m,T);return}if(x&128){u.suspense.move(h,m,T);return}if(x&64){M.move(u,h,m,ce);return}if(M===Ie){r(O,h,m);for(let z=0;zR.enter(O),A);else{const{leave:z,delayLeave:q,afterLeave:Q}=R,oe=()=>r(O,h,m),ge=()=>{z(O,()=>{oe(),Q&&Q()})};q?q(O,oe,ge):ge()}else r(O,h,m)},Se=(u,h,m,T=!1,A=!1)=>{const{type:O,props:M,ref:R,children:I,dynamicChildren:x,shapeFlag:U,patchFlag:z,dirs:q}=u;if(R!=null&&jn(R,null,m,u,!0),U&256){h.ctx.deactivate(u);return}const Q=U&1&&q,oe=!vn(u);let ge;if(oe&&(ge=M&&M.onVnodeBeforeUnmount)&&Be(ge,h,u),U&6)F(u.component,m,T);else{if(U&128){u.suspense.unmount(m,T);return}Q&&Ye(u,null,h,"beforeUnmount"),U&64?u.type.remove(u,h,m,A,ce,T):x&&(O!==Ie||z>0&&z&64)?L(x,h,m,!1,!0):(O===Ie&&z&384||!A&&U&16)&&L(I,h,m),T&&Qt(u)}(oe&&(ge=M&&M.onVnodeUnmounted)||Q)&&Le(()=>{ge&&Be(ge,h,u),Q&&Ye(u,null,h,"unmounted")},m)},Qt=u=>{const{type:h,el:m,anchor:T,transition:A}=u;if(h===Ie){E(m,T);return}if(h===cn){V(u);return}const O=()=>{o(m),A&&!A.persisted&&A.afterLeave&&A.afterLeave()};if(u.shapeFlag&1&&A&&!A.persisted){const{leave:M,delayLeave:R}=A,I=()=>M(m,O);R?R(u.el,O,I):I()}else O()},E=(u,h)=>{let m;for(;u!==h;)m=d(u),o(u),u=m;o(h)},F=(u,h,m)=>{const{bum:T,scope:A,update:O,subTree:M,um:R}=u;T&&ar(T),A.stop(),O&&(O.active=!1,Se(M,u,h,m)),R&&Le(R,h),Le(()=>{u.isUnmounted=!0},h),h&&h.pendingBranch&&!h.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===h.pendingId&&(h.deps--,h.deps===0&&h.resolve())},L=(u,h,m,T=!1,A=!1,O=0)=>{for(let M=O;Mu.shapeFlag&6?$(u.component.subTree):u.shapeFlag&128?u.suspense.next():d(u.anchor||u.el),ae=(u,h,m)=>{u==null?h._vnode&&Se(h._vnode,null,null,!0):g(h._vnode||null,u,h,null,null,null,m),$n(),h._vnode=u},ce={p:g,um:Se,m:$e,r:Qt,mt:le,mc:W,pc:be,pbc:Y,n:$,o:e};let te,Z;return t&&([te,Z]=t(ce)),{render:ae,hydrate:te,createApp:tc(ae,te)}}function vt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function wi(e,t,n=!1){const r=e.children,o=t.children;if(J(r)&&J(o))for(let s=0;s>1,e[n[l]]0&&(t[r]=n[s-1]),n[s]=r)}}for(s=n.length,i=n[s-1];s-- >0;)n[s]=i,i=t[i];return n}const ic=e=>e.__isTeleport,Ci="components";function lc(e,t){return cc(Ci,e,!0,t)||e}const ac=Symbol();function cc(e,t,n=!0,r=!1){const o=Pe||we;if(o){const s=o.type;if(e===Ci){const l=wc(s);if(l&&(l===t||l===Je(t)||l===Zn(Je(t))))return s}const i=Vo(o[e]||s[e],t)||Vo(o.appContext[e],t);return!i&&r?s:i}}function Vo(e,t){return e&&(e[t]||e[Je(t)]||e[Zn(Je(t))])}const Ie=Symbol(void 0),_n=Symbol(void 0),He=Symbol(void 0),cn=Symbol(void 0),un=[];let Ot=null;function nr(e=!1){un.push(Ot=e?null:[])}function uc(){un.pop(),Ot=un[un.length-1]||null}let Vn=1;function Uo(e){Vn+=e}function Ai(e){return e.dynamicChildren=Vn>0?Ot||zt:null,uc(),Vn>0&&Ot&&Ot.push(e),e}function Ti(e,t,n,r,o,s){return Ai(Oi(e,t,n,r,o,s,!0))}function Pi(e,t,n,r,o){return Ai(ye(e,t,n,r,o,!0))}function Un(e){return e?e.__v_isVNode===!0:!1}function wt(e,t){return e.type===t.type&&e.key===t.key}const rr="__vInternal",xi=({key:e})=>e!=null?e:null,Mn=({ref:e,ref_key:t,ref_for:n})=>e!=null?pe(e)||Ce(e)||ee(e)?{i:Pe,r:e,k:t,f:!!n}:e:null;function Oi(e,t=null,n=null,r=0,o=null,s=e===Ie?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&xi(t),ref:t&&Mn(t),scopeId:si,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null};return l?(co(a,n),s&128&&e.normalize(a)):n&&(a.shapeFlag|=pe(n)?8:16),Vn>0&&!i&&Ot&&(a.patchFlag>0||s&6)&&a.patchFlag!==32&&Ot.push(a),a}const ye=fc;function fc(e,t=null,n=null,r=0,o=null,s=!1){if((!e||e===ac)&&(e=He),Un(e)){const l=St(e,t,!0);return n&&co(l,n),l}if(Cc(e)&&(e=e.__vccOpts),t){t=dc(t);let{class:l,style:a}=t;l&&!pe(l)&&(t.class=bn(l)),Ee(a)&&(Ws(a)&&!J(a)&&(a=Te({},a)),t.style=Yn(a))}const i=pe(e)?1:La(e)?128:ic(e)?64:Ee(e)?4:ee(e)?2:0;return Oi(e,t,n,r,o,i,s,!0)}function dc(e){return e?Ws(e)||rr in e?Te({},e):e:null}function St(e,t,n=!1){const{props:r,ref:o,patchFlag:s,children:i}=e,l=t?hc(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&xi(l),ref:t&&t.ref?n&&o?J(o)?o.concat(Mn(t)):[o,Mn(t)]:Mn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ie?s===-1?16:s|16:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&St(e.ssContent),ssFallback:e.ssFallback&&St(e.ssFallback),el:e.el,anchor:e.anchor}}function ao(e=" ",t=0){return ye(_n,null,e,t)}function rh(e,t){const n=ye(cn,null,e);return n.staticCount=t,n}function oh(e="",t=!1){return t?(nr(),Pi(He,null,e)):ye(He,null,e)}function Ue(e){return e==null||typeof e=="boolean"?ye(He):J(e)?ye(Ie,null,e.slice()):typeof e=="object"?ut(e):ye(_n,null,String(e))}function ut(e){return e.el===null||e.memo?e:St(e)}function co(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(J(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),co(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!(rr in t)?t._ctx=Pe:o===3&&Pe&&(Pe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ee(t)?(t={default:t,_ctx:Pe},n=32):(t=String(t),r&64?(n=16,t=[ao(t)]):n=8);e.children=t,e.shapeFlag|=n}function hc(...e){const t={};for(let n=0;nt(i,l,void 0,s&&s[l]));else{const i=Object.keys(e);o=new Array(i.length);for(let l=0,a=i.length;lUn(t)?!(t.type===He||t.type===Ie&&!Si(t.children)):!0)?e:null}const Dr=e=>e?Ii(e)?or(e)||e.proxy:Dr(e.parent):null,qn=Te(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Dr(e.parent),$root:e=>Dr(e.root),$emit:e=>e.emit,$options:e=>mi(e),$forceUpdate:e=>()=>ro(e.update),$nextTick:e=>no.bind(e.proxy),$watch:e=>Ia.bind(e)}),pc={get({_:e},t){const{ctx:n,setupState:r,data:o,props:s,accessCache:i,type:l,appContext:a}=e;let c;if(t[0]!=="$"){const _=i[t];if(_!==void 0)switch(_){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return s[t]}else{if(r!==he&&re(r,t))return i[t]=1,r[t];if(o!==he&&re(o,t))return i[t]=2,o[t];if((c=e.propsOptions[0])&&re(c,t))return i[t]=3,s[t];if(n!==he&&re(n,t))return i[t]=4,n[t];Lr&&(i[t]=0)}}const f=qn[t];let p,d;if(f)return t==="$attrs"&&Fe(e,"get",t),f(e);if((p=l.__cssModules)&&(p=p[t]))return p;if(n!==he&&re(n,t))return i[t]=4,n[t];if(d=a.config.globalProperties,re(d,t))return d[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:s}=e;return o!==he&&re(o,t)?(o[t]=n,!0):r!==he&&re(r,t)?(r[t]=n,!0):re(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(s[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:s}},i){let l;return!!n[i]||e!==he&&re(e,i)||t!==he&&re(t,i)||(l=s[0])&&re(l,i)||re(r,i)||re(qn,i)||re(o.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:re(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}},mc=Ei();let gc=0;function vc(e,t,n){const r=e.type,o=(t?t.appContext:e.appContext)||mc,s={uid:gc++,vnode:e,type:r,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,scope:new Fl(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(o.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:vi(r,o),emitsOptions:oi(r,o),emit:null,emitted:null,propsDefaults:he,inheritAttrs:r.inheritAttrs,ctx:he,data:he,props:he,attrs:he,slots:he,refs:he,setupState:he,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return s.ctx={_:s},s.root=t?t.root:s,s.emit=Ta.bind(null,s),e.ce&&e.ce(s),s}let we=null;const Li=()=>we||Pe,Vt=e=>{we=e,e.scope.on()},Rt=()=>{we&&we.scope.off(),we=null};function Ii(e){return e.vnode.shapeFlag&4}let Ut=!1;function _c(e,t=!1){Ut=t;const{props:n,children:r}=e.vnode,o=Ii(e);Ya(e,n,o,t),Za(e,r);const s=o?yc(e,t):void 0;return Ut=!1,s}function yc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Gs(new Proxy(e.ctx,pc));const{setup:r}=n;if(r){const o=e.setupContext=r.length>1?Ec(e):null;Vt(e),Wt();const s=pt(r,e,0,[e.props,o]);if(Gt(),Rt(),Is(s)){if(s.then(Rt,Rt),t)return s.then(i=>{qo(e,i,t)}).catch(i=>{wn(i,e,0)});e.asyncDep=s}else qo(e,s,t)}else ki(e,t)}function qo(e,t,n){ee(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Ee(t)&&(e.setupState=Xs(t)),ki(e,n)}let Ko;function ki(e,t,n){const r=e.type;if(!e.render){if(!t&&Ko&&!r.render){const o=r.template;if(o){const{isCustomElement:s,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:a}=r,c=Te(Te({isCustomElement:s,delimiters:l},i),a);r.render=Ko(o,c)}}e.render=r.render||Ke}Vt(e),Wt(),Ua(e),Gt(),Rt()}function bc(e){return new Proxy(e.attrs,{get(t,n){return Fe(e,"get","$attrs"),t[n]}})}function Ec(e){const t=r=>{e.exposed=r||{}};let n;return{get attrs(){return n||(n=bc(e))},slots:e.slots,emit:e.emit,expose:t}}function or(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Xs(Gs(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in qn)return qn[n](e)}}))}function wc(e){return ee(e)&&e.displayName||e.name}function Cc(e){return ee(e)&&"__vccOpts"in e}const _e=(e,t)=>ya(e,t,Ut);function ve(e,t,n){const r=arguments.length;return r===2?Ee(t)&&!J(t)?Un(t)?ye(e,null,[t]):ye(e,t):ye(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Un(n)&&(n=[n]),ye(e,t,n))}const Ac="3.2.33",Tc="http://www.w3.org/2000/svg",Ct=typeof document!="undefined"?document:null,Wo=Ct&&Ct.createElement("template"),Pc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?Ct.createElementNS(Tc,e):Ct.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>Ct.createTextNode(e),createComment:e=>Ct.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ct.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode(e){const t=e.cloneNode(!0);return"_value"in e&&(t._value=e._value),t},insertStaticContent(e,t,n,r,o,s){const i=n?n.previousSibling:t.lastChild;if(o&&(o===s||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===s||!(o=o.nextSibling)););else{Wo.innerHTML=r?`${e}`:e;const l=Wo.content;if(r){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function xc(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Oc(e,t,n){const r=e.style,o=pe(n);if(n&&!o){for(const s in n)Mr(r,s,n[s]);if(t&&!pe(t))for(const s in t)n[s]==null&&Mr(r,s,"")}else{const s=r.display;o?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=s)}}const Go=/\s*!important$/;function Mr(e,t,n){if(J(n))n.forEach(r=>Mr(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Rc(e,t);Go.test(n)?e.setProperty(Lt(r),n.replace(Go,""),"important"):e[r]=n}}const Yo=["Webkit","Moz","ms"],hr={};function Rc(e,t){const n=hr[t];if(n)return n;let r=Je(t);if(r!=="filter"&&r in e)return hr[t]=r;r=Zn(r);for(let o=0;o{let e=Date.now,t=!1;if(typeof window!="undefined"){Date.now()>document.createEvent("Event").timeStamp&&(e=()=>performance.now());const n=navigator.userAgent.match(/firefox\/(\d+)/i);t=!!(n&&Number(n[1])<=53)}return[e,t]})();let Nr=0;const kc=Promise.resolve(),Dc=()=>{Nr=0},Mc=()=>Nr||(kc.then(Dc),Nr=Di());function Nc(e,t,n,r){e.addEventListener(t,n,r)}function Hc(e,t,n,r){e.removeEventListener(t,n,r)}function Fc(e,t,n,r,o=null){const s=e._vei||(e._vei={}),i=s[t];if(r&&i)i.value=r;else{const[l,a]=$c(t);if(r){const c=s[t]=zc(r,o);Nc(e,l,c,a)}else i&&(Hc(e,l,i,a),s[t]=void 0)}}const Qo=/(?:Once|Passive|Capture)$/;function $c(e){let t;if(Qo.test(e)){t={};let n;for(;n=e.match(Qo);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[Lt(e.slice(2)),t]}function zc(e,t){const n=r=>{const o=r.timeStamp||Di();(Ic||o>=n.attached-1)&&je(Bc(r,n.value),t,5,[r])};return n.value=e,n.attached=Mc(),n}function Bc(e,t){if(J(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const Zo=/^on[a-z]/,jc=(e,t,n,r,o=!1,s,i,l,a)=>{t==="class"?xc(e,r,o):t==="style"?Oc(e,n,r):En(t)?Vr(t)||Fc(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Vc(e,t,r,o))?Lc(e,t,r,s,i,l,a):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Sc(e,t,r,o))};function Vc(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&Zo.test(t)&&ee(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Zo.test(t)&&pe(n)?!1:t in e}const it="transition",Xt="animation",uo=(e,{slots:t})=>ve(ci,Uc(e),t);uo.displayName="Transition";const Mi={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};uo.props=Te({},ci.props,Mi);const _t=(e,t=[])=>{J(e)?e.forEach(n=>n(...t)):e&&e(...t)},Xo=e=>e?J(e)?e.some(t=>t.length>1):e.length>1:!1;function Uc(e){const t={};for(const y in e)y in Mi||(t[y]=e[y]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:s=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=s,appearActiveClass:c=i,appearToClass:f=l,leaveFromClass:p=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:_=`${n}-leave-to`}=e,b=qc(o),D=b&&b[0],g=b&&b[1],{onBeforeEnter:v,onEnter:P,onEnterCancelled:S,onLeave:N,onLeaveCancelled:V,onBeforeAppear:H=v,onAppear:C=P,onAppearCancelled:w=S}=t,W=(y,k,G)=>{Dt(y,k?f:l),Dt(y,k?c:i),G&&G()},j=(y,k)=>{Dt(y,_),Dt(y,d),k&&k()},Y=y=>(k,G)=>{const le=y?C:P,B=()=>W(k,y,G);_t(le,[k,B]),es(()=>{Dt(k,y?a:s),lt(k,y?f:l),Xo(le)||ts(k,r,D,B)})};return Te(t,{onBeforeEnter(y){_t(v,[y]),lt(y,s),lt(y,i)},onBeforeAppear(y){_t(H,[y]),lt(y,a),lt(y,c)},onEnter:Y(!1),onAppear:Y(!0),onLeave(y,k){const G=()=>j(y,k);lt(y,p),Gc(),lt(y,d),es(()=>{Dt(y,p),lt(y,_),Xo(N)||ts(y,r,g,G)}),_t(N,[y,G])},onEnterCancelled(y){W(y,!1),_t(S,[y])},onAppearCancelled(y){W(y,!0),_t(w,[y])},onLeaveCancelled(y){j(y),_t(V,[y])}})}function qc(e){if(e==null)return null;if(Ee(e))return[pr(e.enter),pr(e.leave)];{const t=pr(e);return[t,t]}}function pr(e){return Ms(e)}function lt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Dt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function es(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Kc=0;function ts(e,t,n,r){const o=e._endId=++Kc,s=()=>{o===e._endId&&r()};if(n)return setTimeout(s,n);const{type:i,timeout:l,propCount:a}=Wc(e,t);if(!i)return r();const c=i+"end";let f=0;const p=()=>{e.removeEventListener(c,d),s()},d=_=>{_.target===e&&++f>=a&&p()};setTimeout(()=>{f(n[b]||"").split(", "),o=r(it+"Delay"),s=r(it+"Duration"),i=ns(o,s),l=r(Xt+"Delay"),a=r(Xt+"Duration"),c=ns(l,a);let f=null,p=0,d=0;t===it?i>0&&(f=it,p=i,d=s.length):t===Xt?c>0&&(f=Xt,p=c,d=a.length):(p=Math.max(i,c),f=p>0?i>c?it:Xt:null,d=f?f===it?s.length:a.length:0);const _=f===it&&/\b(transform|all)(,|$)/.test(n[it+"Property"]);return{type:f,timeout:p,propCount:d,hasTransform:_}}function ns(e,t){for(;e.lengthrs(n)+rs(e[r])))}function rs(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function Gc(){return document.body.offsetHeight}const Yc={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},ih=(e,t)=>n=>{if(!("key"in n))return;const r=Lt(n.key);if(t.some(o=>o===r||Yc[o]===r))return e(n)},lh={beforeMount(e,{value:t},{transition:n}){e._vod=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):en(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),en(e,!0),r.enter(e)):r.leave(e,()=>{en(e,!1)}):en(e,t))},beforeUnmount(e,{value:t}){en(e,t)}};function en(e,t){e.style.display=t?e._vod:"none"}const Jc=Te({patchProp:jc},Pc);let mr,os=!1;function Qc(){return mr=os?mr:rc(Jc),os=!0,mr}const Zc=(...e)=>{const t=Qc().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=Xc(r);if(o)return n(o,!0,o instanceof SVGElement)},t};function Xc(e){return pe(e)?document.querySelector(e):e}const eu={base:"/whispr/",lang:"en-US",title:"whispr",description:"whispr docs",head:[],locales:{}};var tu=([e,t,n])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,n]),nu=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=tu(r);t.has(o)||(t.add(o),n.push(r))}),n},ru=e=>/^(https?:)?\/\//.test(e),ah=e=>/^mailto:/.test(e),ch=e=>/^tel:/.test(e),Ni=e=>Object.prototype.toString.call(e)==="[object Object]",ou=e=>e.replace(/\/$/,""),su=e=>e.replace(/^\//,""),Hi=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const s=o.split("/").length-r.split("/").length;return s!==0?s:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"};const Fi={"v-8daa1a0e":fe(()=>K(()=>import("./index.html.36d5d764.js"),[])),"v-146e5374":fe(()=>K(()=>import("./apm.html.4bb4d3c6.js"),[])),"v-2eb76c63":fe(()=>K(()=>import("./fileupload.html.43a62890.js"),[])),"v-ecba32a0":fe(()=>K(()=>import("./indexing.html.3fffe178.js"),[])),"v-6ca815f4":fe(()=>K(()=>import("./installation.html.b0b11bde.js"),[])),"v-27b6bb40":fe(()=>K(()=>import("./security.html.4163ce3b.js"),[])),"v-53401e42":fe(()=>K(()=>import("./testing.html.1dec99be.js"),[])),"v-fe842d44":fe(()=>K(()=>import("./graphql.html.41639b3e.js"),[])),"v-0e4a26f1":fe(()=>K(()=>import("./introduction.html.ba312668.js"),[])),"v-e9130d12":fe(()=>K(()=>import("./rest.html.739f3c71.js"),[])),"v-63e82ae3":fe(()=>K(()=>import("./index.html.d4932c98.js"),[])),"v-3ea3fa0e":fe(()=>K(()=>import("./building.html.9c261dd1.js"),[])),"v-76cfe0bc":fe(()=>K(()=>import("./community.html.b4ce1cb1.js"),[])),"v-141584aa":fe(()=>K(()=>import("./credits.html.38f9982d.js"),[])),"v-7e30aeec":fe(()=>K(()=>import("./guidelines.html.5105e555.js"),[])),"v-17f9b51d":fe(()=>K(()=>import("./index.html.ee90995c.js"),[])),"v-a8a674e6":fe(()=>K(()=>import("./index.html.b7174baf.js"),[])),"v-712e14fc":fe(()=>K(()=>import("./index.html.68be8755.js"),[])),"v-66de8e88":fe(()=>K(()=>import("./tagGroup.html.e778dcd4.js"),[])),"v-581890ae":fe(()=>K(()=>import("./webhook.html.13de0cdb.js"),[])),"v-4b2698d0":fe(()=>K(()=>import("./whisp.html.14c0a404.js"),[])),"v-67d16688":fe(()=>K(()=>import("./index.html.64468620.js"),[])),"v-47ce024e":fe(()=>K(()=>import("./index.html.84eaa4c0.js"),[])),"v-43f4d00c":fe(()=>K(()=>import("./index.html.8a074641.js"),[])),"v-3706649a":fe(()=>K(()=>import("./404.html.039537b2.js"),[]))},iu={"404":fe(()=>K(()=>import("./404.c072a64b.js"),[])),Layout:fe(()=>K(()=>import("./Layout.132bc826.js"),[]))};var $i=xe(Al),zi=Zr({key:"",path:"",title:"",lang:"",frontmatter:{},excerpt:"",headers:[]}),et=xe(zi),An=()=>et;bo.webpackHot&&(__VUE_HMR_RUNTIME__.updatePageData=e=>{$i.value[e.key]=()=>Promise.resolve(e),e.key===et.value.key&&(et.value=e)});var Bi=Symbol(""),lu=()=>{const e=Ae(Bi);if(!e)throw new Error("usePageFrontmatter() is called without provider.");return e},ji=Symbol(""),au=()=>{const e=Ae(ji);if(!e)throw new Error("usePageHead() is called without provider.");return e},cu=Symbol(""),Vi=Symbol(""),uu=()=>{const e=Ae(Vi);if(!e)throw new Error("usePageLang() is called without provider.");return e},fo=Symbol(""),fu=()=>{const e=Ae(fo);if(!e)throw new Error("useRouteLocale() is called without provider.");return e},dt=xe(eu),du=()=>dt;bo.webpackHot&&(__VUE_HMR_RUNTIME__.updateSiteData=e=>{dt.value=e});var Ui=Symbol(""),uh=()=>{const e=Ae(Ui);if(!e)throw new Error("useSiteLocaleData() is called without provider.");return e},hu=Symbol(""),bt=Yt({resolvePageData:async e=>{const t=$i.value[e],n=await(t==null?void 0:t());return n!=null?n:zi},resolvePageFrontmatter:e=>e.frontmatter,resolvePageHead:(e,t,n)=>{const r=pe(t.description)?t.description:n.description,o=[...J(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return nu(o)},resolvePageHeadTitle:(e,t)=>`${e.title?`${e.title} | `:""}${t.title}`,resolvePageLang:e=>e.lang||"en",resolveRouteLocale:(e,t)=>Hi(e,t),resolveSiteLocaleData:(e,t)=>Qe(Qe({},e),e.locales[t])}),pu=We({setup(e,t){const n=xe(!1);return gt(()=>{n.value=!0}),()=>{var r,o;return n.value?(o=(r=t.slots).default)==null?void 0:o.call(r):null}}}),ho=e=>{let t;e.pageKey?t=e.pageKey:t=An().value.key;const n=Fi[t];return n?ve(n):ve("div","404 Not Found")};ho.displayName="Content";ho.props={pageKey:{type:String,required:!1}};var ss=We({name:"Vuepress",setup(){const e=An(),t=_e(()=>{let n;if(e.value.path){const r=e.value.frontmatter.layout;pe(r)?n=r:n="Layout"}else n="404";return iu[n]||lc(n,!1)});return()=>ve(t.value)}}),mu=e=>ru(e)?e:`${du().value.base}${su(e)}`,It=e=>e;function qi(e,t,n){var r,o,s;t===void 0&&(t=50),n===void 0&&(n={});var i=(r=n.isImmediate)!=null&&r,l=(o=n.callback)!=null&&o,a=n.maxWait,c=Date.now(),f=[];function p(){if(a!==void 0){var _=Date.now()-c;if(_+t>=a)return a-_}return t}var d=function(){var _=[].slice.call(arguments),b=this;return new Promise(function(D,g){var v=i&&s===void 0;if(s!==void 0&&clearTimeout(s),s=setTimeout(function(){if(s=void 0,c=Date.now(),!i){var S=e.apply(b,_);l&&l(S),f.forEach(function(N){return(0,N.resolve)(S)}),f=[]}},p()),v){var P=e.apply(b,_);return l&&l(P),D(P)}f.push({resolve:D,reject:g})})};return d.cancel=function(_){s!==void 0&&clearTimeout(s),f.forEach(function(b){return(0,b.reject)(_)}),f=[]},d}/*!
+var vl=Object.defineProperty,_l=Object.defineProperties;var yl=Object.getOwnPropertyDescriptors;var Ao=Object.getOwnPropertySymbols;var bl=Object.prototype.hasOwnProperty,El=Object.prototype.propertyIsEnumerable;var To=(e,t,n)=>t in e?vl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Qe=(e,t)=>{for(var n in t||(t={}))bl.call(t,n)&&To(e,n,t[n]);if(Ao)for(var n of Ao(t))El.call(t,n)&&To(e,n,t[n]);return e},Pn=(e,t)=>_l(e,yl(t));const bo={},wl="modulepreload",Po={},Cl="/whispr/",K=function(t,n){return!n||n.length===0?t():Promise.all(n.map(r=>{if(r=`${Cl}${r}`,r in Po)return;Po[r]=!0;const o=r.endsWith(".css"),s=o?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${r}"]${s}`))return;const i=document.createElement("link");if(i.rel=o?"stylesheet":wl,o||(i.as="script",i.crossOrigin=""),i.href=r,document.head.appendChild(i),o)return new Promise((l,a)=>{i.addEventListener("load",l),i.addEventListener("error",()=>a(new Error(`Unable to preload CSS for ${r}`)))})})).then(()=>t())},Al={"v-8daa1a0e":()=>K(()=>import("./index.html.b586816a.js"),[]).then(({data:e})=>e),"v-146e5374":()=>K(()=>import("./apm.html.3742eb1c.js"),[]).then(({data:e})=>e),"v-2eb76c63":()=>K(()=>import("./fileupload.html.dec2d67d.js"),[]).then(({data:e})=>e),"v-ecba32a0":()=>K(()=>import("./indexing.html.34ce6a43.js"),[]).then(({data:e})=>e),"v-6ca815f4":()=>K(()=>import("./installation.html.4a28379c.js"),[]).then(({data:e})=>e),"v-27b6bb40":()=>K(()=>import("./security.html.e5664eab.js"),[]).then(({data:e})=>e),"v-53401e42":()=>K(()=>import("./testing.html.4e6a8105.js"),[]).then(({data:e})=>e),"v-fe842d44":()=>K(()=>import("./graphql.html.847bbc55.js"),[]).then(({data:e})=>e),"v-0e4a26f1":()=>K(()=>import("./introduction.html.fe6f67b7.js"),[]).then(({data:e})=>e),"v-e9130d12":()=>K(()=>import("./rest.html.ad3dc88e.js"),[]).then(({data:e})=>e),"v-63e82ae3":()=>K(()=>import("./index.html.338c7f66.js"),[]).then(({data:e})=>e),"v-3ea3fa0e":()=>K(()=>import("./building.html.d8384166.js"),[]).then(({data:e})=>e),"v-76cfe0bc":()=>K(()=>import("./community.html.33c02133.js"),[]).then(({data:e})=>e),"v-141584aa":()=>K(()=>import("./credits.html.18986896.js"),[]).then(({data:e})=>e),"v-7e30aeec":()=>K(()=>import("./guidelines.html.715e0bb8.js"),[]).then(({data:e})=>e),"v-17f9b51d":()=>K(()=>import("./index.html.8ceddafa.js"),[]).then(({data:e})=>e),"v-a8a674e6":()=>K(()=>import("./index.html.bdeeaf2e.js"),[]).then(({data:e})=>e),"v-712e14fc":()=>K(()=>import("./index.html.f4d6a88a.js"),[]).then(({data:e})=>e),"v-66de8e88":()=>K(()=>import("./tagGroup.html.4d9ca480.js"),[]).then(({data:e})=>e),"v-581890ae":()=>K(()=>import("./webhook.html.2f61f3f8.js"),[]).then(({data:e})=>e),"v-4b2698d0":()=>K(()=>import("./whisp.html.0c91ea87.js"),[]).then(({data:e})=>e),"v-67d16688":()=>K(()=>import("./index.html.eb55f510.js"),[]).then(({data:e})=>e),"v-47ce024e":()=>K(()=>import("./index.html.b0458ce4.js"),[]).then(({data:e})=>e),"v-43f4d00c":()=>K(()=>import("./index.html.3170d528.js"),[]).then(({data:e})=>e),"v-3706649a":()=>K(()=>import("./404.html.0f07aaf0.js"),[]).then(({data:e})=>e)};function jr(e,t){const n=Object.create(null),r=e.split(",");for(let o=0;o!!n[o.toLowerCase()]:o=>!!n[o]}const Tl="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Pl=jr(Tl);function Rs(e){return!!e||e===""}function Yn(e){if(J(e)){const t={};for(let n=0;n{if(n){const r=n.split(Ol);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function bn(e){let t="";if(pe(e))t=e;else if(J(e))for(let n=0;npe(e)?e:e==null?"":J(e)||Ee(e)&&(e.toString===ks||!ee(e.toString))?JSON.stringify(e,Ss,2):String(e),Ss=(e,t)=>t&&t.__v_isRef?Ss(e,t.value):Bt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,o])=>(n[`${r} =>`]=o,n),{})}:Ls(t)?{[`Set(${t.size})`]:[...t.values()]}:Ee(t)&&!J(t)&&!Ds(t)?String(t):t,he={},zt=[],Ke=()=>{},Ll=()=>!1,Il=/^on[^a-z]/,En=e=>Il.test(e),Vr=e=>e.startsWith("onUpdate:"),Te=Object.assign,Ur=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},kl=Object.prototype.hasOwnProperty,re=(e,t)=>kl.call(e,t),J=Array.isArray,Bt=e=>Jn(e)==="[object Map]",Ls=e=>Jn(e)==="[object Set]",ee=e=>typeof e=="function",pe=e=>typeof e=="string",qr=e=>typeof e=="symbol",Ee=e=>e!==null&&typeof e=="object",Is=e=>Ee(e)&&ee(e.then)&&ee(e.catch),ks=Object.prototype.toString,Jn=e=>ks.call(e),Dl=e=>Jn(e).slice(8,-1),Ds=e=>Jn(e)==="[object Object]",Kr=e=>pe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,sn=jr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Qn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ml=/-(\w)/g,Je=Qn(e=>e.replace(Ml,(t,n)=>n?n.toUpperCase():"")),Nl=/\B([A-Z])/g,Lt=Qn(e=>e.replace(Nl,"-$1").toLowerCase()),Zn=Qn(e=>e.charAt(0).toUpperCase()+e.slice(1)),lr=Qn(e=>e?`on${Zn(e)}`:""),hn=(e,t)=>!Object.is(e,t),ar=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Ms=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let xo;const Hl=()=>xo||(xo=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});let Me;class Fl{constructor(t=!1){this.active=!0,this.effects=[],this.cleanups=[],!t&&Me&&(this.parent=Me,this.index=(Me.scopes||(Me.scopes=[])).push(this)-1)}run(t){if(this.active){const n=Me;try{return Me=this,t()}finally{Me=n}}}on(){Me=this}off(){Me=this.parent}stop(t){if(this.active){let n,r;for(n=0,r=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},Ns=e=>(e.w&mt)>0,Hs=e=>(e.n&mt)>0,jl=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(c==="length"||c>=r)&&l.push(a)});else switch(n!==void 0&&l.push(i.get(n)),t){case"add":J(e)?Kr(n)&&l.push(i.get("length")):(l.push(i.get(Tt)),Bt(e)&&l.push(i.get(Tr)));break;case"delete":J(e)||(l.push(i.get(Tt)),Bt(e)&&l.push(i.get(Tr)));break;case"set":Bt(e)&&l.push(i.get(Tt));break}if(l.length===1)l[0]&&Pr(l[0]);else{const a=[];for(const c of l)c&&a.push(...c);Pr(Wr(a))}}function Pr(e,t){for(const n of J(e)?e:[...e])(n!==qe||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}const Ul=jr("__proto__,__v_isRef,__isVue"),zs=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(qr)),ql=Yr(),Kl=Yr(!1,!0),Wl=Yr(!0),Ro=Gl();function Gl(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=ie(this);for(let s=0,i=this.length;s{e[t]=function(...n){Wt();const r=ie(this)[t].apply(this,n);return Gt(),r}}),e}function Yr(e=!1,t=!1){return function(r,o,s){if(o==="__v_isReactive")return!e;if(o==="__v_isReadonly")return e;if(o==="__v_isShallow")return t;if(o==="__v_raw"&&s===(e?t?ua:qs:t?Us:Vs).get(r))return r;const i=J(r);if(!e&&i&&re(Ro,o))return Reflect.get(Ro,o,s);const l=Reflect.get(r,o,s);return(qr(o)?zs.has(o):Ul(o))||(e||Fe(r,"get",o),t)?l:Ce(l)?!i||!Kr(o)?l.value:l:Ee(l)?e?Zr(l):Yt(l):l}}const Yl=Bs(),Jl=Bs(!0);function Bs(e=!1){return function(n,r,o,s){let i=n[r];if(pn(i)&&Ce(i)&&!Ce(o))return!1;if(!e&&!pn(o)&&(Ks(o)||(o=ie(o),i=ie(i)),!J(n)&&Ce(i)&&!Ce(o)))return i.value=o,!0;const l=J(n)&&Kr(r)?Number(r)e,Xn=e=>Reflect.getPrototypeOf(e);function xn(e,t,n=!1,r=!1){e=e.__v_raw;const o=ie(e),s=ie(t);t!==s&&!n&&Fe(o,"get",t),!n&&Fe(o,"get",s);const{has:i}=Xn(o),l=r?Jr:n?eo:mn;if(i.call(o,t))return l(e.get(t));if(i.call(o,s))return l(e.get(s));e!==o&&e.get(t)}function On(e,t=!1){const n=this.__v_raw,r=ie(n),o=ie(e);return e!==o&&!t&&Fe(r,"has",e),!t&&Fe(r,"has",o),e===o?n.has(e):n.has(e)||n.has(o)}function Rn(e,t=!1){return e=e.__v_raw,!t&&Fe(ie(e),"iterate",Tt),Reflect.get(e,"size",e)}function So(e){e=ie(e);const t=ie(this);return Xn(t).has.call(t,e)||(t.add(e),nt(t,"add",e,e)),this}function Lo(e,t){t=ie(t);const n=ie(this),{has:r,get:o}=Xn(n);let s=r.call(n,e);s||(e=ie(e),s=r.call(n,e));const i=o.call(n,e);return n.set(e,t),s?hn(t,i)&&nt(n,"set",e,t):nt(n,"add",e,t),this}function Io(e){const t=ie(this),{has:n,get:r}=Xn(t);let o=n.call(t,e);o||(e=ie(e),o=n.call(t,e)),r&&r.call(t,e);const s=t.delete(e);return o&&nt(t,"delete",e,void 0),s}function ko(){const e=ie(this),t=e.size!==0,n=e.clear();return t&&nt(e,"clear",void 0,void 0),n}function Sn(e,t){return function(r,o){const s=this,i=s.__v_raw,l=ie(i),a=t?Jr:e?eo:mn;return!e&&Fe(l,"iterate",Tt),i.forEach((c,f)=>r.call(o,a(c),a(f),s))}}function Ln(e,t,n){return function(...r){const o=this.__v_raw,s=ie(o),i=Bt(s),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,c=o[e](...r),f=n?Jr:t?eo:mn;return!t&&Fe(s,"iterate",a?Tr:Tt),{next(){const{value:p,done:d}=c.next();return d?{value:p,done:d}:{value:l?[f(p[0]),f(p[1])]:f(p),done:d}},[Symbol.iterator](){return this}}}}function ot(e){return function(...t){return e==="delete"?!1:this}}function na(){const e={get(s){return xn(this,s)},get size(){return Rn(this)},has:On,add:So,set:Lo,delete:Io,clear:ko,forEach:Sn(!1,!1)},t={get(s){return xn(this,s,!1,!0)},get size(){return Rn(this)},has:On,add:So,set:Lo,delete:Io,clear:ko,forEach:Sn(!1,!0)},n={get(s){return xn(this,s,!0)},get size(){return Rn(this,!0)},has(s){return On.call(this,s,!0)},add:ot("add"),set:ot("set"),delete:ot("delete"),clear:ot("clear"),forEach:Sn(!0,!1)},r={get(s){return xn(this,s,!0,!0)},get size(){return Rn(this,!0)},has(s){return On.call(this,s,!0)},add:ot("add"),set:ot("set"),delete:ot("delete"),clear:ot("clear"),forEach:Sn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(s=>{e[s]=Ln(s,!1,!1),n[s]=Ln(s,!0,!1),t[s]=Ln(s,!1,!0),r[s]=Ln(s,!0,!0)}),[e,n,t,r]}const[ra,oa,sa,ia]=na();function Qr(e,t){const n=t?e?ia:sa:e?oa:ra;return(r,o,s)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(re(n,o)&&o in r?n:r,o,s)}const la={get:Qr(!1,!1)},aa={get:Qr(!1,!0)},ca={get:Qr(!0,!1)},Vs=new WeakMap,Us=new WeakMap,qs=new WeakMap,ua=new WeakMap;function fa(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function da(e){return e.__v_skip||!Object.isExtensible(e)?0:fa(Dl(e))}function Yt(e){return pn(e)?e:Xr(e,!1,js,la,Vs)}function ha(e){return Xr(e,!1,ta,aa,Us)}function Zr(e){return Xr(e,!0,ea,ca,qs)}function Xr(e,t,n,r,o){if(!Ee(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const s=o.get(e);if(s)return s;const i=da(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return o.set(e,l),l}function jt(e){return pn(e)?jt(e.__v_raw):!!(e&&e.__v_isReactive)}function pn(e){return!!(e&&e.__v_isReadonly)}function Ks(e){return!!(e&&e.__v_isShallow)}function Ws(e){return jt(e)||pn(e)}function ie(e){const t=e&&e.__v_raw;return t?ie(t):e}function Gs(e){return Hn(e,"__v_skip",!0),e}const mn=e=>Ee(e)?Yt(e):e,eo=e=>Ee(e)?Zr(e):e;function Ys(e){ht&&qe&&(e=ie(e),$s(e.dep||(e.dep=Wr())))}function Js(e,t){e=ie(e),e.dep&&Pr(e.dep)}function Ce(e){return!!(e&&e.__v_isRef===!0)}function xe(e){return Zs(e,!1)}function Qs(e){return Zs(e,!0)}function Zs(e,t){return Ce(e)?e:new pa(e,t)}class pa{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:ie(t),this._value=n?t:mn(t)}get value(){return Ys(this),this._value}set value(t){t=this.__v_isShallow?t:ie(t),hn(t,this._rawValue)&&(this._rawValue=t,this._value=this.__v_isShallow?t:mn(t),Js(this))}}function Pt(e){return Ce(e)?e.value:e}const ma={get:(e,t,n)=>Pt(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Ce(o)&&!Ce(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Xs(e){return jt(e)?e:new Proxy(e,ma)}function th(e){const t=J(e)?new Array(e.length):{};for(const n in e)t[n]=va(e,n);return t}class ga{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}}function va(e,t,n){const r=e[t];return Ce(r)?r:new ga(e,t,n)}class _a{constructor(t,n,r,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this._dirty=!0,this.effect=new Gr(t,()=>{this._dirty||(this._dirty=!0,Js(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=r}get value(){const t=ie(this);return Ys(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function ya(e,t,n=!1){let r,o;const s=ee(e);return s?(r=e,o=Ke):(r=e.get,o=e.set),new _a(r,o,s||!o,n)}function pt(e,t,n,r){let o;try{o=r?e(...r):e()}catch(s){wn(s,t,n)}return o}function je(e,t,n,r){if(ee(e)){const s=pt(e,t,n,r);return s&&Is(s)&&s.catch(i=>{wn(i,t,n)}),s}const o=[];for(let s=0;s>>1;gn(Ne[r])Xe&&Ne.splice(t,1)}function ni(e,t,n,r){J(e)?n.push(...e):(!t||!t.includes(e,e.allowRecurse?r+1:r))&&n.push(e),ti()}function Ca(e){ni(e,on,ln,Ht)}function Aa(e){ni(e,ct,an,Ft)}function oo(e,t=null){if(ln.length){for(Or=t,on=[...new Set(ln)],ln.length=0,Ht=0;Htgn(n)-gn(r)),Ft=0;Fte.id==null?1/0:e.id;function ri(e){xr=!1,Fn=!0,oo(e),Ne.sort((n,r)=>gn(n)-gn(r));const t=Ke;try{for(Xe=0;Xe_.trim()):p&&(o=n.map(Ms))}let l,a=r[l=lr(t)]||r[l=lr(Je(t))];!a&&s&&(a=r[l=lr(Lt(t))]),a&&je(a,e,6,o);const c=r[l+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,je(c,e,6,o)}}function oi(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const s=e.emits;let i={},l=!1;if(!ee(e)){const a=c=>{const f=oi(c,t,!0);f&&(l=!0,Te(i,f))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!s&&!l?(r.set(e,null),null):(J(s)?s.forEach(a=>i[a]=null):Te(i,s),r.set(e,i),i)}function er(e,t){return!e||!En(t)?!1:(t=t.slice(2).replace(/Once$/,""),re(e,t[0].toLowerCase()+t.slice(1))||re(e,Lt(t))||re(e,t))}let Pe=null,si=null;function zn(e){const t=Pe;return Pe=e,si=e&&e.type.__scopeId||null,t}function Pa(e,t=Pe,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&Uo(-1);const s=zn(t),i=e(...o);return zn(s),r._d&&Uo(1),i};return r._n=!0,r._c=!0,r._d=!0,r}function cr(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:s,propsOptions:[i],slots:l,attrs:a,emit:c,render:f,renderCache:p,data:d,setupState:_,ctx:b,inheritAttrs:D}=e;let g,v;const P=zn(e);try{if(n.shapeFlag&4){const N=o||r;g=Ue(f.call(N,N,p,s,_,d,b)),v=a}else{const N=t;g=Ue(N.length>1?N(s,{attrs:a,slots:l,emit:c}):N(s,null)),v=t.props?a:xa(a)}}catch(N){un.length=0,wn(N,e,1),g=ye(He)}let S=g;if(v&&D!==!1){const N=Object.keys(v),{shapeFlag:V}=S;N.length&&V&7&&(i&&N.some(Vr)&&(v=Oa(v,i)),S=St(S,v))}return n.dirs&&(S.dirs=S.dirs?S.dirs.concat(n.dirs):n.dirs),n.transition&&(S.transition=n.transition),g=S,zn(P),g}const xa=e=>{let t;for(const n in e)(n==="class"||n==="style"||En(n))&&((t||(t={}))[n]=e[n]);return t},Oa=(e,t)=>{const n={};for(const r in e)(!Vr(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Ra(e,t,n){const{props:r,children:o,component:s}=e,{props:i,children:l,patchFlag:a}=t,c=s.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return r?Do(r,i,c):!!i;if(a&8){const f=t.dynamicProps;for(let p=0;pe.__isSuspense;function ii(e,t){t&&t.pendingBranch?J(e)?t.effects.push(...e):t.effects.push(e):Aa(e)}function xt(e,t){if(we){let n=we.provides;const r=we.parent&&we.parent.provides;r===n&&(n=we.provides=Object.create(r)),n[e]=t}}function Ae(e,t,n=!1){const r=we||Pe;if(r){const o=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(o&&e in o)return o[e];if(arguments.length>1)return n&&ee(t)?t.call(r.proxy):t}}const Mo={};function tt(e,t,n){return li(e,t,n)}function li(e,t,{immediate:n,deep:r,flush:o,onTrack:s,onTrigger:i}=he){const l=we;let a,c=!1,f=!1;if(Ce(e)?(a=()=>e.value,c=Ks(e)):jt(e)?(a=()=>e,r=!0):J(e)?(f=!0,c=e.some(jt),a=()=>e.map(v=>{if(Ce(v))return v.value;if(jt(v))return At(v);if(ee(v))return pt(v,l,2)})):ee(e)?t?a=()=>pt(e,l,2):a=()=>{if(!(l&&l.isUnmounted))return p&&p(),je(e,l,3,[d])}:a=Ke,t&&r){const v=a;a=()=>At(v())}let p,d=v=>{p=g.onStop=()=>{pt(v,l,4)}};if(Ut)return d=Ke,t?n&&je(t,l,3,[a(),f?[]:void 0,d]):a(),Ke;let _=f?[]:Mo;const b=()=>{if(!!g.active)if(t){const v=g.run();(r||c||(f?v.some((P,S)=>hn(P,_[S])):hn(v,_)))&&(p&&p(),je(t,l,3,[v,_===Mo?void 0:_,d]),_=v)}else g.run()};b.allowRecurse=!!t;let D;o==="sync"?D=b:o==="post"?D=()=>Le(b,l&&l.suspense):D=()=>{!l||l.isMounted?Ca(b):b()};const g=new Gr(a,D);return t?n?b():_=g.run():o==="post"?Le(g.run.bind(g),l&&l.suspense):g.run(),()=>{g.stop(),l&&l.scope&&Ur(l.scope.effects,g)}}function Ia(e,t,n){const r=this.proxy,o=pe(e)?e.includes(".")?ai(r,e):()=>r[e]:e.bind(r,r);let s;ee(t)?s=t:(s=t.handler,n=t);const i=we;Vt(this);const l=li(o,s.bind(r),n);return i?Vt(i):Rt(),l}function ai(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o{At(n,t)});else if(Ds(e))for(const n in e)At(e[n],t);return e}function ka(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return gt(()=>{e.isMounted=!0}),so(()=>{e.isUnmounting=!0}),e}const ze=[Function,Array],Da={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ze,onEnter:ze,onAfterEnter:ze,onEnterCancelled:ze,onBeforeLeave:ze,onLeave:ze,onAfterLeave:ze,onLeaveCancelled:ze,onBeforeAppear:ze,onAppear:ze,onAfterAppear:ze,onAppearCancelled:ze},setup(e,{slots:t}){const n=Li(),r=ka();let o;return()=>{const s=t.default&&fi(t.default(),!0);if(!s||!s.length)return;let i=s[0];if(s.length>1){for(const D of s)if(D.type!==He){i=D;break}}const l=ie(e),{mode:a}=l;if(r.isLeaving)return ur(i);const c=No(i);if(!c)return ur(i);const f=Rr(c,l,r,n);Sr(c,f);const p=n.subTree,d=p&&No(p);let _=!1;const{getTransitionKey:b}=c.type;if(b){const D=b();o===void 0?o=D:D!==o&&(o=D,_=!0)}if(d&&d.type!==He&&(!wt(c,d)||_)){const D=Rr(d,l,r,n);if(Sr(d,D),a==="out-in")return r.isLeaving=!0,D.afterLeave=()=>{r.isLeaving=!1,n.update()},ur(i);a==="in-out"&&c.type!==He&&(D.delayLeave=(g,v,P)=>{const S=ui(r,d);S[String(d.key)]=d,g._leaveCb=()=>{v(),g._leaveCb=void 0,delete f.delayedLeave},f.delayedLeave=P})}return i}}},ci=Da;function ui(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Rr(e,t,n,r){const{appear:o,mode:s,persisted:i=!1,onBeforeEnter:l,onEnter:a,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:p,onLeave:d,onAfterLeave:_,onLeaveCancelled:b,onBeforeAppear:D,onAppear:g,onAfterAppear:v,onAppearCancelled:P}=t,S=String(e.key),N=ui(n,e),V=(C,w)=>{C&&je(C,r,9,w)},H={mode:s,persisted:i,beforeEnter(C){let w=l;if(!n.isMounted)if(o)w=D||l;else return;C._leaveCb&&C._leaveCb(!0);const W=N[S];W&&wt(e,W)&&W.el._leaveCb&&W.el._leaveCb(),V(w,[C])},enter(C){let w=a,W=c,j=f;if(!n.isMounted)if(o)w=g||a,W=v||c,j=P||f;else return;let Y=!1;const y=C._enterCb=k=>{Y||(Y=!0,k?V(j,[C]):V(W,[C]),H.delayedLeave&&H.delayedLeave(),C._enterCb=void 0)};w?(w(C,y),w.length<=1&&y()):y()},leave(C,w){const W=String(e.key);if(C._enterCb&&C._enterCb(!0),n.isUnmounting)return w();V(p,[C]);let j=!1;const Y=C._leaveCb=y=>{j||(j=!0,w(),y?V(b,[C]):V(_,[C]),C._leaveCb=void 0,N[W]===e&&delete N[W])};N[W]=e,d?(d(C,Y),d.length<=1&&Y()):Y()},clone(C){return Rr(C,t,n,r)}};return H}function ur(e){if(Cn(e))return e=St(e),e.children=null,e}function No(e){return Cn(e)?e.children?e.children[0]:void 0:e}function Sr(e,t){e.shapeFlag&6&&e.component?Sr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function fi(e,t=!1,n){let r=[],o=0;for(let s=0;s1)for(let s=0;s!!e.type.__asyncLoader;function fe(e){ee(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:s,suspensible:i=!0,onError:l}=e;let a=null,c,f=0;const p=()=>(f++,a=null,d()),d=()=>{let _;return a||(_=a=t().catch(b=>{if(b=b instanceof Error?b:new Error(String(b)),l)return new Promise((D,g)=>{l(b,()=>D(p()),()=>g(b),f+1)});throw b}).then(b=>_!==a&&a?a:(b&&(b.__esModule||b[Symbol.toStringTag]==="Module")&&(b=b.default),c=b,b)))};return We({name:"AsyncComponentWrapper",__asyncLoader:d,get __asyncResolved(){return c},setup(){const _=we;if(c)return()=>fr(c,_);const b=P=>{a=null,wn(P,_,13,!r)};if(i&&_.suspense||Ut)return d().then(P=>()=>fr(P,_)).catch(P=>(b(P),()=>r?ye(r,{error:P}):null));const D=xe(!1),g=xe(),v=xe(!!o);return o&&setTimeout(()=>{v.value=!1},o),s!=null&&setTimeout(()=>{if(!D.value&&!g.value){const P=new Error(`Async component timed out after ${s}ms.`);b(P),g.value=P}},s),d().then(()=>{D.value=!0,_.parent&&Cn(_.parent.vnode)&&ro(_.parent.update)}).catch(P=>{b(P),g.value=P}),()=>{if(D.value&&c)return fr(c,_);if(g.value&&r)return ye(r,{error:g.value});if(n&&!v.value)return ye(n)}}})}function fr(e,{vnode:{ref:t,props:n,children:r}}){const o=ye(e,n,r);return o.ref=t,o}const Cn=e=>e.type.__isKeepAlive;function Ma(e,t){di(e,"a",t)}function Na(e,t){di(e,"da",t)}function di(e,t,n=we){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(tr(t,r,n),n){let o=n.parent;for(;o&&o.parent;)Cn(o.parent.vnode)&&Ha(r,t,n,o),o=o.parent}}function Ha(e,t,n,r){const o=tr(t,e,r,!0);io(()=>{Ur(r[t],o)},n)}function tr(e,t,n=we,r=!1){if(n){const o=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;Wt(),Vt(n);const l=je(t,n,e,i);return Rt(),Gt(),l});return r?o.unshift(s):o.push(s),s}}const rt=e=>(t,n=we)=>(!Ut||e==="sp")&&tr(e,t,n),hi=rt("bm"),gt=rt("m"),Fa=rt("bu"),$a=rt("u"),so=rt("bum"),io=rt("um"),za=rt("sp"),Ba=rt("rtg"),ja=rt("rtc");function Va(e,t=we){tr("ec",e,t)}let Lr=!0;function Ua(e){const t=mi(e),n=e.proxy,r=e.ctx;Lr=!1,t.beforeCreate&&Ho(t.beforeCreate,e,"bc");const{data:o,computed:s,methods:i,watch:l,provide:a,inject:c,created:f,beforeMount:p,mounted:d,beforeUpdate:_,updated:b,activated:D,deactivated:g,beforeDestroy:v,beforeUnmount:P,destroyed:S,unmounted:N,render:V,renderTracked:H,renderTriggered:C,errorCaptured:w,serverPrefetch:W,expose:j,inheritAttrs:Y,components:y,directives:k,filters:G}=t;if(c&&qa(c,r,null,e.appContext.config.unwrapInjectedRef),i)for(const X in i){const ne=i[X];ee(ne)&&(r[X]=ne.bind(n))}if(o){const X=o.call(n,n);Ee(X)&&(e.data=Yt(X))}if(Lr=!0,s)for(const X in s){const ne=s[X],be=ee(ne)?ne.bind(n,n):ee(ne.get)?ne.get.bind(n,n):Ke,Oe=!ee(ne)&&ee(ne.set)?ne.set.bind(n):Ke,ke=_e({get:be,set:Oe});Object.defineProperty(r,X,{enumerable:!0,configurable:!0,get:()=>ke.value,set:$e=>ke.value=$e})}if(l)for(const X in l)pi(l[X],r,n,X);if(a){const X=ee(a)?a.call(n):a;Reflect.ownKeys(X).forEach(ne=>{xt(ne,X[ne])})}f&&Ho(f,e,"c");function B(X,ne){J(ne)?ne.forEach(be=>X(be.bind(n))):ne&&X(ne.bind(n))}if(B(hi,p),B(gt,d),B(Fa,_),B($a,b),B(Ma,D),B(Na,g),B(Va,w),B(ja,H),B(Ba,C),B(so,P),B(io,N),B(za,W),J(j))if(j.length){const X=e.exposed||(e.exposed={});j.forEach(ne=>{Object.defineProperty(X,ne,{get:()=>n[ne],set:be=>n[ne]=be})})}else e.exposed||(e.exposed={});V&&e.render===Ke&&(e.render=V),Y!=null&&(e.inheritAttrs=Y),y&&(e.components=y),k&&(e.directives=k)}function qa(e,t,n=Ke,r=!1){J(e)&&(e=Ir(e));for(const o in e){const s=e[o];let i;Ee(s)?"default"in s?i=Ae(s.from||o,s.default,!0):i=Ae(s.from||o):i=Ae(s),Ce(i)&&r?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):t[o]=i}}function Ho(e,t,n){je(J(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function pi(e,t,n,r){const o=r.includes(".")?ai(n,r):()=>n[r];if(pe(e)){const s=t[e];ee(s)&&tt(o,s)}else if(ee(e))tt(o,e.bind(n));else if(Ee(e))if(J(e))e.forEach(s=>pi(s,t,n,r));else{const s=ee(e.handler)?e.handler.bind(n):t[e.handler];ee(s)&&tt(o,s,e)}}function mi(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:s,config:{optionMergeStrategies:i}}=e.appContext,l=s.get(t);let a;return l?a=l:!o.length&&!n&&!r?a=t:(a={},o.length&&o.forEach(c=>Bn(a,c,i,!0)),Bn(a,t,i)),s.set(t,a),a}function Bn(e,t,n,r=!1){const{mixins:o,extends:s}=t;s&&Bn(e,s,n,!0),o&&o.forEach(i=>Bn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=Ka[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Ka={data:Fo,props:yt,emits:yt,methods:yt,computed:yt,beforeCreate:Re,created:Re,beforeMount:Re,mounted:Re,beforeUpdate:Re,updated:Re,beforeDestroy:Re,beforeUnmount:Re,destroyed:Re,unmounted:Re,activated:Re,deactivated:Re,errorCaptured:Re,serverPrefetch:Re,components:yt,directives:yt,watch:Ga,provide:Fo,inject:Wa};function Fo(e,t){return t?e?function(){return Te(ee(e)?e.call(this,this):e,ee(t)?t.call(this,this):t)}:t:e}function Wa(e,t){return yt(Ir(e),Ir(t))}function Ir(e){if(J(e)){const t={};for(let n=0;n0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let p=0;p{a=!0;const[d,_]=vi(p,t,!0);Te(i,d),_&&l.push(..._)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!s&&!a)return r.set(e,zt),zt;if(J(s))for(let f=0;f-1,_[1]=D<0||b-1||re(_,"default"))&&l.push(p)}}}const c=[i,l];return r.set(e,c),c}function $o(e){return e[0]!=="$"}function zo(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function Bo(e,t){return zo(e)===zo(t)}function jo(e,t){return J(t)?t.findIndex(n=>Bo(n,e)):ee(t)&&Bo(t,e)?0:-1}const _i=e=>e[0]==="_"||e==="$stable",lo=e=>J(e)?e.map(Ue):[Ue(e)],Qa=(e,t,n)=>{const r=Pa((...o)=>lo(t(...o)),n);return r._c=!1,r},yi=(e,t,n)=>{const r=e._ctx;for(const o in e){if(_i(o))continue;const s=e[o];if(ee(s))t[o]=Qa(o,s,r);else if(s!=null){const i=lo(s);t[o]=()=>i}}},bi=(e,t)=>{const n=lo(t);e.slots.default=()=>n},Za=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=ie(t),Hn(t,"_",n)):yi(t,e.slots={})}else e.slots={},t&&bi(e,t);Hn(e.slots,rr,1)},Xa=(e,t,n)=>{const{vnode:r,slots:o}=e;let s=!0,i=he;if(r.shapeFlag&32){const l=t._;l?n&&l===1?s=!1:(Te(o,t),!n&&l===1&&delete o._):(s=!t.$stable,yi(t,o)),i=t}else t&&(bi(e,t),i={default:1});if(s)for(const l in o)!_i(l)&&!(l in i)&&delete o[l]};function nh(e,t){const n=Pe;if(n===null)return e;const r=or(n)||n.proxy,o=e.dirs||(e.dirs=[]);for(let s=0;sjn(d,t&&(J(t)?t[_]:t),n,r,o));return}if(vn(r)&&!o)return;const s=r.shapeFlag&4?or(r.component)||r.component.proxy:r.el,i=o?null:s,{i:l,r:a}=e,c=t&&t.r,f=l.refs===he?l.refs={}:l.refs,p=l.setupState;if(c!=null&&c!==a&&(pe(c)?(f[c]=null,re(p,c)&&(p[c]=null)):Ce(c)&&(c.value=null)),ee(a))pt(a,l,12,[i,f]);else{const d=pe(a),_=Ce(a);if(d||_){const b=()=>{if(e.f){const D=d?f[a]:a.value;o?J(D)&&Ur(D,s):J(D)?D.includes(s)||D.push(s):d?(f[a]=[s],re(p,a)&&(p[a]=f[a])):(a.value=[s],e.k&&(f[e.k]=a.value))}else d?(f[a]=i,re(p,a)&&(p[a]=i)):Ce(a)&&(a.value=i,e.k&&(f[e.k]=i))};i?(b.id=-1,Le(b,n)):b()}}}let st=!1;const In=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",dr=e=>e.nodeType===8;function nc(e){const{mt:t,p:n,o:{patchProp:r,nextSibling:o,parentNode:s,remove:i,insert:l,createComment:a}}=e,c=(g,v)=>{if(!v.hasChildNodes()){n(null,g,v),$n();return}st=!1,f(v.firstChild,g,null,null,null),$n(),st&&console.error("Hydration completed but contains mismatches.")},f=(g,v,P,S,N,V=!1)=>{const H=dr(g)&&g.data==="[",C=()=>b(g,v,P,S,N,H),{type:w,ref:W,shapeFlag:j}=v,Y=g.nodeType;v.el=g;let y=null;switch(w){case _n:Y!==3?y=C():(g.data!==v.children&&(st=!0,g.data=v.children),y=o(g));break;case He:Y!==8||H?y=C():y=o(g);break;case cn:if(Y!==1)y=C();else{y=g;const k=!v.children.length;for(let G=0;G{V=V||!!v.dynamicChildren;const{type:H,props:C,patchFlag:w,shapeFlag:W,dirs:j}=v,Y=H==="input"&&j||H==="option";if(Y||w!==-1){if(j&&Ye(v,null,P,"created"),C)if(Y||!V||w&48)for(const k in C)(Y&&k.endsWith("value")||En(k)&&!sn(k))&&r(g,k,null,C[k],!1,void 0,P);else C.onClick&&r(g,"onClick",null,C.onClick,!1,void 0,P);let y;if((y=C&&C.onVnodeBeforeMount)&&Be(y,P,v),j&&Ye(v,null,P,"beforeMount"),((y=C&&C.onVnodeMounted)||j)&&ii(()=>{y&&Be(y,P,v),j&&Ye(v,null,P,"mounted")},S),W&16&&!(C&&(C.innerHTML||C.textContent))){let k=d(g.firstChild,v,g,P,S,N,V);for(;k;){st=!0;const G=k;k=k.nextSibling,i(G)}}else W&8&&g.textContent!==v.children&&(st=!0,g.textContent=v.children)}return g.nextSibling},d=(g,v,P,S,N,V,H)=>{H=H||!!v.dynamicChildren;const C=v.children,w=C.length;for(let W=0;W{const{slotScopeIds:H}=v;H&&(N=N?N.concat(H):H);const C=s(g),w=d(o(g),v,C,P,S,N,V);return w&&dr(w)&&w.data==="]"?o(v.anchor=w):(st=!0,l(v.anchor=a("]"),C,w),w)},b=(g,v,P,S,N,V)=>{if(st=!0,v.el=null,V){const w=D(g);for(;;){const W=o(g);if(W&&W!==w)i(W);else break}}const H=o(g),C=s(g);return i(g),n(null,v,C,H,P,S,In(C),N),H},D=g=>{let v=0;for(;g;)if(g=o(g),g&&dr(g)&&(g.data==="["&&v++,g.data==="]")){if(v===0)return o(g);v--}return g};return[c,f]}const Le=ii;function rc(e){return oc(e,nc)}function oc(e,t){const n=Hl();n.__VUE__=!0;const{insert:r,remove:o,patchProp:s,createElement:i,createText:l,createComment:a,setText:c,setElementText:f,parentNode:p,nextSibling:d,setScopeId:_=Ke,cloneNode:b,insertStaticContent:D}=e,g=(u,h,m,T=null,A=null,O=null,M=!1,R=null,I=!!h.dynamicChildren)=>{if(u===h)return;u&&!wt(u,h)&&(T=$(u),Se(u,A,O,!0),u=null),h.patchFlag===-2&&(I=!1,h.dynamicChildren=null);const{type:x,ref:U,shapeFlag:z}=h;switch(x){case _n:v(u,h,m,T);break;case He:P(u,h,m,T);break;case cn:u==null&&S(h,m,T,M);break;case Ie:k(u,h,m,T,A,O,M,R,I);break;default:z&1?H(u,h,m,T,A,O,M,R,I):z&6?G(u,h,m,T,A,O,M,R,I):(z&64||z&128)&&x.process(u,h,m,T,A,O,M,R,I,ce)}U!=null&&A&&jn(U,u&&u.ref,O,h||u,!h)},v=(u,h,m,T)=>{if(u==null)r(h.el=l(h.children),m,T);else{const A=h.el=u.el;h.children!==u.children&&c(A,h.children)}},P=(u,h,m,T)=>{u==null?r(h.el=a(h.children||""),m,T):h.el=u.el},S=(u,h,m,T)=>{[u.el,u.anchor]=D(u.children,h,m,T,u.el,u.anchor)},N=({el:u,anchor:h},m,T)=>{let A;for(;u&&u!==h;)A=d(u),r(u,m,T),u=A;r(h,m,T)},V=({el:u,anchor:h})=>{let m;for(;u&&u!==h;)m=d(u),o(u),u=m;o(h)},H=(u,h,m,T,A,O,M,R,I)=>{M=M||h.type==="svg",u==null?C(h,m,T,A,O,M,R,I):j(u,h,A,O,M,R,I)},C=(u,h,m,T,A,O,M,R)=>{let I,x;const{type:U,props:z,shapeFlag:q,transition:Q,patchFlag:oe,dirs:ge}=u;if(u.el&&b!==void 0&&oe===-1)I=u.el=b(u.el);else{if(I=u.el=i(u.type,O,z&&z.is,z),q&8?f(I,u.children):q&16&&W(u.children,I,null,T,A,O&&U!=="foreignObject",M,R),ge&&Ye(u,null,T,"created"),z){for(const me in z)me!=="value"&&!sn(me)&&s(I,me,null,z[me],O,u.children,T,A,L);"value"in z&&s(I,"value",null,z.value),(x=z.onVnodeBeforeMount)&&Be(x,T,u)}w(I,u,u.scopeId,M,T)}ge&&Ye(u,null,T,"beforeMount");const ue=(!A||A&&!A.pendingBranch)&&Q&&!Q.persisted;ue&&Q.beforeEnter(I),r(I,h,m),((x=z&&z.onVnodeMounted)||ue||ge)&&Le(()=>{x&&Be(x,T,u),ue&&Q.enter(I),ge&&Ye(u,null,T,"mounted")},A)},w=(u,h,m,T,A)=>{if(m&&_(u,m),T)for(let O=0;O{for(let x=I;x{const R=h.el=u.el;let{patchFlag:I,dynamicChildren:x,dirs:U}=h;I|=u.patchFlag&16;const z=u.props||he,q=h.props||he;let Q;m&&vt(m,!1),(Q=q.onVnodeBeforeUpdate)&&Be(Q,m,h,u),U&&Ye(h,u,m,"beforeUpdate"),m&&vt(m,!0);const oe=A&&h.type!=="foreignObject";if(x?Y(u.dynamicChildren,x,R,m,T,oe,O):M||be(u,h,R,null,m,T,oe,O,!1),I>0){if(I&16)y(R,h,z,q,m,T,A);else if(I&2&&z.class!==q.class&&s(R,"class",null,q.class,A),I&4&&s(R,"style",z.style,q.style,A),I&8){const ge=h.dynamicProps;for(let ue=0;ue{Q&&Be(Q,m,h,u),U&&Ye(h,u,m,"updated")},T)},Y=(u,h,m,T,A,O,M)=>{for(let R=0;R{if(m!==T){for(const R in T){if(sn(R))continue;const I=T[R],x=m[R];I!==x&&R!=="value"&&s(u,R,x,I,M,h.children,A,O,L)}if(m!==he)for(const R in m)!sn(R)&&!(R in T)&&s(u,R,m[R],null,M,h.children,A,O,L);"value"in T&&s(u,"value",m.value,T.value)}},k=(u,h,m,T,A,O,M,R,I)=>{const x=h.el=u?u.el:l(""),U=h.anchor=u?u.anchor:l("");let{patchFlag:z,dynamicChildren:q,slotScopeIds:Q}=h;Q&&(R=R?R.concat(Q):Q),u==null?(r(x,m,T),r(U,m,T),W(h.children,m,U,A,O,M,R,I)):z>0&&z&64&&q&&u.dynamicChildren?(Y(u.dynamicChildren,q,m,A,O,M,R),(h.key!=null||A&&h===A.subTree)&&wi(u,h,!0)):be(u,h,m,U,A,O,M,R,I)},G=(u,h,m,T,A,O,M,R,I)=>{h.slotScopeIds=R,u==null?h.shapeFlag&512?A.ctx.activate(h,m,T,M,I):le(h,m,T,A,O,M,I):B(u,h,I)},le=(u,h,m,T,A,O,M)=>{const R=u.component=vc(u,T,A);if(Cn(u)&&(R.ctx.renderer=ce),_c(R),R.asyncDep){if(A&&A.registerDep(R,X),!u.el){const I=R.subTree=ye(He);P(null,I,h,m)}return}X(R,u,h,m,A,O,M)},B=(u,h,m)=>{const T=h.component=u.component;if(Ra(u,h,m))if(T.asyncDep&&!T.asyncResolved){ne(T,h,m);return}else T.next=h,wa(T.update),T.update();else h.component=u.component,h.el=u.el,T.vnode=h},X=(u,h,m,T,A,O,M)=>{const R=()=>{if(u.isMounted){let{next:U,bu:z,u:q,parent:Q,vnode:oe}=u,ge=U,ue;vt(u,!1),U?(U.el=oe.el,ne(u,U,M)):U=oe,z&&ar(z),(ue=U.props&&U.props.onVnodeBeforeUpdate)&&Be(ue,Q,U,oe),vt(u,!0);const me=cr(u),Ve=u.subTree;u.subTree=me,g(Ve,me,p(Ve.el),$(Ve),u,A,O),U.el=me.el,ge===null&&Sa(u,me.el),q&&Le(q,A),(ue=U.props&&U.props.onVnodeUpdated)&&Le(()=>Be(ue,Q,U,oe),A)}else{let U;const{el:z,props:q}=h,{bm:Q,m:oe,parent:ge}=u,ue=vn(h);if(vt(u,!1),Q&&ar(Q),!ue&&(U=q&&q.onVnodeBeforeMount)&&Be(U,ge,h),vt(u,!0),z&&Z){const me=()=>{u.subTree=cr(u),Z(z,u.subTree,u,A,null)};ue?h.type.__asyncLoader().then(()=>!u.isUnmounted&&me()):me()}else{const me=u.subTree=cr(u);g(null,me,m,T,u,A,O),h.el=me.el}if(oe&&Le(oe,A),!ue&&(U=q&&q.onVnodeMounted)){const me=h;Le(()=>Be(U,ge,me),A)}h.shapeFlag&256&&u.a&&Le(u.a,A),u.isMounted=!0,h=m=T=null}},I=u.effect=new Gr(R,()=>ro(u.update),u.scope),x=u.update=I.run.bind(I);x.id=u.uid,vt(u,!0),x()},ne=(u,h,m)=>{h.component=u;const T=u.vnode.props;u.vnode=h,u.next=null,Ja(u,h.props,T,m),Xa(u,h.children,m),Wt(),oo(void 0,u.update),Gt()},be=(u,h,m,T,A,O,M,R,I=!1)=>{const x=u&&u.children,U=u?u.shapeFlag:0,z=h.children,{patchFlag:q,shapeFlag:Q}=h;if(q>0){if(q&128){ke(x,z,m,T,A,O,M,R,I);return}else if(q&256){Oe(x,z,m,T,A,O,M,R,I);return}}Q&8?(U&16&&L(x,A,O),z!==x&&f(m,z)):U&16?Q&16?ke(x,z,m,T,A,O,M,R,I):L(x,A,O,!0):(U&8&&f(m,""),Q&16&&W(z,m,T,A,O,M,R,I))},Oe=(u,h,m,T,A,O,M,R,I)=>{u=u||zt,h=h||zt;const x=u.length,U=h.length,z=Math.min(x,U);let q;for(q=0;qU?L(u,A,O,!0,!1,z):W(h,m,T,A,O,M,R,I,z)},ke=(u,h,m,T,A,O,M,R,I)=>{let x=0;const U=h.length;let z=u.length-1,q=U-1;for(;x<=z&&x<=q;){const Q=u[x],oe=h[x]=I?ut(h[x]):Ue(h[x]);if(wt(Q,oe))g(Q,oe,m,null,A,O,M,R,I);else break;x++}for(;x<=z&&x<=q;){const Q=u[z],oe=h[q]=I?ut(h[q]):Ue(h[q]);if(wt(Q,oe))g(Q,oe,m,null,A,O,M,R,I);else break;z--,q--}if(x>z){if(x<=q){const Q=q+1,oe=Qq)for(;x<=z;)Se(u[x],A,O,!0),x++;else{const Q=x,oe=x,ge=new Map;for(x=oe;x<=q;x++){const De=h[x]=I?ut(h[x]):Ue(h[x]);De.key!=null&&ge.set(De.key,x)}let ue,me=0;const Ve=q-oe+1;let kt=!1,Eo=0;const Zt=new Array(Ve);for(x=0;x=Ve){Se(De,A,O,!0);continue}let Ge;if(De.key!=null)Ge=ge.get(De.key);else for(ue=oe;ue<=q;ue++)if(Zt[ue-oe]===0&&wt(De,h[ue])){Ge=ue;break}Ge===void 0?Se(De,A,O,!0):(Zt[Ge-oe]=x+1,Ge>=Eo?Eo=Ge:kt=!0,g(De,h[Ge],m,null,A,O,M,R,I),me++)}const wo=kt?sc(Zt):zt;for(ue=wo.length-1,x=Ve-1;x>=0;x--){const De=oe+x,Ge=h[De],Co=De+1{const{el:O,type:M,transition:R,children:I,shapeFlag:x}=u;if(x&6){$e(u.component.subTree,h,m,T);return}if(x&128){u.suspense.move(h,m,T);return}if(x&64){M.move(u,h,m,ce);return}if(M===Ie){r(O,h,m);for(let z=0;zR.enter(O),A);else{const{leave:z,delayLeave:q,afterLeave:Q}=R,oe=()=>r(O,h,m),ge=()=>{z(O,()=>{oe(),Q&&Q()})};q?q(O,oe,ge):ge()}else r(O,h,m)},Se=(u,h,m,T=!1,A=!1)=>{const{type:O,props:M,ref:R,children:I,dynamicChildren:x,shapeFlag:U,patchFlag:z,dirs:q}=u;if(R!=null&&jn(R,null,m,u,!0),U&256){h.ctx.deactivate(u);return}const Q=U&1&&q,oe=!vn(u);let ge;if(oe&&(ge=M&&M.onVnodeBeforeUnmount)&&Be(ge,h,u),U&6)F(u.component,m,T);else{if(U&128){u.suspense.unmount(m,T);return}Q&&Ye(u,null,h,"beforeUnmount"),U&64?u.type.remove(u,h,m,A,ce,T):x&&(O!==Ie||z>0&&z&64)?L(x,h,m,!1,!0):(O===Ie&&z&384||!A&&U&16)&&L(I,h,m),T&&Qt(u)}(oe&&(ge=M&&M.onVnodeUnmounted)||Q)&&Le(()=>{ge&&Be(ge,h,u),Q&&Ye(u,null,h,"unmounted")},m)},Qt=u=>{const{type:h,el:m,anchor:T,transition:A}=u;if(h===Ie){E(m,T);return}if(h===cn){V(u);return}const O=()=>{o(m),A&&!A.persisted&&A.afterLeave&&A.afterLeave()};if(u.shapeFlag&1&&A&&!A.persisted){const{leave:M,delayLeave:R}=A,I=()=>M(m,O);R?R(u.el,O,I):I()}else O()},E=(u,h)=>{let m;for(;u!==h;)m=d(u),o(u),u=m;o(h)},F=(u,h,m)=>{const{bum:T,scope:A,update:O,subTree:M,um:R}=u;T&&ar(T),A.stop(),O&&(O.active=!1,Se(M,u,h,m)),R&&Le(R,h),Le(()=>{u.isUnmounted=!0},h),h&&h.pendingBranch&&!h.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===h.pendingId&&(h.deps--,h.deps===0&&h.resolve())},L=(u,h,m,T=!1,A=!1,O=0)=>{for(let M=O;Mu.shapeFlag&6?$(u.component.subTree):u.shapeFlag&128?u.suspense.next():d(u.anchor||u.el),ae=(u,h,m)=>{u==null?h._vnode&&Se(h._vnode,null,null,!0):g(h._vnode||null,u,h,null,null,null,m),$n(),h._vnode=u},ce={p:g,um:Se,m:$e,r:Qt,mt:le,mc:W,pc:be,pbc:Y,n:$,o:e};let te,Z;return t&&([te,Z]=t(ce)),{render:ae,hydrate:te,createApp:tc(ae,te)}}function vt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function wi(e,t,n=!1){const r=e.children,o=t.children;if(J(r)&&J(o))for(let s=0;s>1,e[n[l]]0&&(t[r]=n[s-1]),n[s]=r)}}for(s=n.length,i=n[s-1];s-- >0;)n[s]=i,i=t[i];return n}const ic=e=>e.__isTeleport,Ci="components";function lc(e,t){return cc(Ci,e,!0,t)||e}const ac=Symbol();function cc(e,t,n=!0,r=!1){const o=Pe||we;if(o){const s=o.type;if(e===Ci){const l=wc(s);if(l&&(l===t||l===Je(t)||l===Zn(Je(t))))return s}const i=Vo(o[e]||s[e],t)||Vo(o.appContext[e],t);return!i&&r?s:i}}function Vo(e,t){return e&&(e[t]||e[Je(t)]||e[Zn(Je(t))])}const Ie=Symbol(void 0),_n=Symbol(void 0),He=Symbol(void 0),cn=Symbol(void 0),un=[];let Ot=null;function nr(e=!1){un.push(Ot=e?null:[])}function uc(){un.pop(),Ot=un[un.length-1]||null}let Vn=1;function Uo(e){Vn+=e}function Ai(e){return e.dynamicChildren=Vn>0?Ot||zt:null,uc(),Vn>0&&Ot&&Ot.push(e),e}function Ti(e,t,n,r,o,s){return Ai(Oi(e,t,n,r,o,s,!0))}function Pi(e,t,n,r,o){return Ai(ye(e,t,n,r,o,!0))}function Un(e){return e?e.__v_isVNode===!0:!1}function wt(e,t){return e.type===t.type&&e.key===t.key}const rr="__vInternal",xi=({key:e})=>e!=null?e:null,Mn=({ref:e,ref_key:t,ref_for:n})=>e!=null?pe(e)||Ce(e)||ee(e)?{i:Pe,r:e,k:t,f:!!n}:e:null;function Oi(e,t=null,n=null,r=0,o=null,s=e===Ie?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&xi(t),ref:t&&Mn(t),scopeId:si,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null};return l?(co(a,n),s&128&&e.normalize(a)):n&&(a.shapeFlag|=pe(n)?8:16),Vn>0&&!i&&Ot&&(a.patchFlag>0||s&6)&&a.patchFlag!==32&&Ot.push(a),a}const ye=fc;function fc(e,t=null,n=null,r=0,o=null,s=!1){if((!e||e===ac)&&(e=He),Un(e)){const l=St(e,t,!0);return n&&co(l,n),l}if(Cc(e)&&(e=e.__vccOpts),t){t=dc(t);let{class:l,style:a}=t;l&&!pe(l)&&(t.class=bn(l)),Ee(a)&&(Ws(a)&&!J(a)&&(a=Te({},a)),t.style=Yn(a))}const i=pe(e)?1:La(e)?128:ic(e)?64:Ee(e)?4:ee(e)?2:0;return Oi(e,t,n,r,o,i,s,!0)}function dc(e){return e?Ws(e)||rr in e?Te({},e):e:null}function St(e,t,n=!1){const{props:r,ref:o,patchFlag:s,children:i}=e,l=t?hc(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&xi(l),ref:t&&t.ref?n&&o?J(o)?o.concat(Mn(t)):[o,Mn(t)]:Mn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ie?s===-1?16:s|16:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&St(e.ssContent),ssFallback:e.ssFallback&&St(e.ssFallback),el:e.el,anchor:e.anchor}}function ao(e=" ",t=0){return ye(_n,null,e,t)}function rh(e,t){const n=ye(cn,null,e);return n.staticCount=t,n}function oh(e="",t=!1){return t?(nr(),Pi(He,null,e)):ye(He,null,e)}function Ue(e){return e==null||typeof e=="boolean"?ye(He):J(e)?ye(Ie,null,e.slice()):typeof e=="object"?ut(e):ye(_n,null,String(e))}function ut(e){return e.el===null||e.memo?e:St(e)}function co(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(J(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),co(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!(rr in t)?t._ctx=Pe:o===3&&Pe&&(Pe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ee(t)?(t={default:t,_ctx:Pe},n=32):(t=String(t),r&64?(n=16,t=[ao(t)]):n=8);e.children=t,e.shapeFlag|=n}function hc(...e){const t={};for(let n=0;nt(i,l,void 0,s&&s[l]));else{const i=Object.keys(e);o=new Array(i.length);for(let l=0,a=i.length;lUn(t)?!(t.type===He||t.type===Ie&&!Si(t.children)):!0)?e:null}const Dr=e=>e?Ii(e)?or(e)||e.proxy:Dr(e.parent):null,qn=Te(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Dr(e.parent),$root:e=>Dr(e.root),$emit:e=>e.emit,$options:e=>mi(e),$forceUpdate:e=>()=>ro(e.update),$nextTick:e=>no.bind(e.proxy),$watch:e=>Ia.bind(e)}),pc={get({_:e},t){const{ctx:n,setupState:r,data:o,props:s,accessCache:i,type:l,appContext:a}=e;let c;if(t[0]!=="$"){const _=i[t];if(_!==void 0)switch(_){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return s[t]}else{if(r!==he&&re(r,t))return i[t]=1,r[t];if(o!==he&&re(o,t))return i[t]=2,o[t];if((c=e.propsOptions[0])&&re(c,t))return i[t]=3,s[t];if(n!==he&&re(n,t))return i[t]=4,n[t];Lr&&(i[t]=0)}}const f=qn[t];let p,d;if(f)return t==="$attrs"&&Fe(e,"get",t),f(e);if((p=l.__cssModules)&&(p=p[t]))return p;if(n!==he&&re(n,t))return i[t]=4,n[t];if(d=a.config.globalProperties,re(d,t))return d[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:s}=e;return o!==he&&re(o,t)?(o[t]=n,!0):r!==he&&re(r,t)?(r[t]=n,!0):re(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(s[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:s}},i){let l;return!!n[i]||e!==he&&re(e,i)||t!==he&&re(t,i)||(l=s[0])&&re(l,i)||re(r,i)||re(qn,i)||re(o.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:re(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}},mc=Ei();let gc=0;function vc(e,t,n){const r=e.type,o=(t?t.appContext:e.appContext)||mc,s={uid:gc++,vnode:e,type:r,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,scope:new Fl(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(o.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:vi(r,o),emitsOptions:oi(r,o),emit:null,emitted:null,propsDefaults:he,inheritAttrs:r.inheritAttrs,ctx:he,data:he,props:he,attrs:he,slots:he,refs:he,setupState:he,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return s.ctx={_:s},s.root=t?t.root:s,s.emit=Ta.bind(null,s),e.ce&&e.ce(s),s}let we=null;const Li=()=>we||Pe,Vt=e=>{we=e,e.scope.on()},Rt=()=>{we&&we.scope.off(),we=null};function Ii(e){return e.vnode.shapeFlag&4}let Ut=!1;function _c(e,t=!1){Ut=t;const{props:n,children:r}=e.vnode,o=Ii(e);Ya(e,n,o,t),Za(e,r);const s=o?yc(e,t):void 0;return Ut=!1,s}function yc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Gs(new Proxy(e.ctx,pc));const{setup:r}=n;if(r){const o=e.setupContext=r.length>1?Ec(e):null;Vt(e),Wt();const s=pt(r,e,0,[e.props,o]);if(Gt(),Rt(),Is(s)){if(s.then(Rt,Rt),t)return s.then(i=>{qo(e,i,t)}).catch(i=>{wn(i,e,0)});e.asyncDep=s}else qo(e,s,t)}else ki(e,t)}function qo(e,t,n){ee(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Ee(t)&&(e.setupState=Xs(t)),ki(e,n)}let Ko;function ki(e,t,n){const r=e.type;if(!e.render){if(!t&&Ko&&!r.render){const o=r.template;if(o){const{isCustomElement:s,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:a}=r,c=Te(Te({isCustomElement:s,delimiters:l},i),a);r.render=Ko(o,c)}}e.render=r.render||Ke}Vt(e),Wt(),Ua(e),Gt(),Rt()}function bc(e){return new Proxy(e.attrs,{get(t,n){return Fe(e,"get","$attrs"),t[n]}})}function Ec(e){const t=r=>{e.exposed=r||{}};let n;return{get attrs(){return n||(n=bc(e))},slots:e.slots,emit:e.emit,expose:t}}function or(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Xs(Gs(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in qn)return qn[n](e)}}))}function wc(e){return ee(e)&&e.displayName||e.name}function Cc(e){return ee(e)&&"__vccOpts"in e}const _e=(e,t)=>ya(e,t,Ut);function ve(e,t,n){const r=arguments.length;return r===2?Ee(t)&&!J(t)?Un(t)?ye(e,null,[t]):ye(e,t):ye(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Un(n)&&(n=[n]),ye(e,t,n))}const Ac="3.2.33",Tc="http://www.w3.org/2000/svg",Ct=typeof document!="undefined"?document:null,Wo=Ct&&Ct.createElement("template"),Pc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?Ct.createElementNS(Tc,e):Ct.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>Ct.createTextNode(e),createComment:e=>Ct.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ct.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},cloneNode(e){const t=e.cloneNode(!0);return"_value"in e&&(t._value=e._value),t},insertStaticContent(e,t,n,r,o,s){const i=n?n.previousSibling:t.lastChild;if(o&&(o===s||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===s||!(o=o.nextSibling)););else{Wo.innerHTML=r?`${e}`:e;const l=Wo.content;if(r){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function xc(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Oc(e,t,n){const r=e.style,o=pe(n);if(n&&!o){for(const s in n)Mr(r,s,n[s]);if(t&&!pe(t))for(const s in t)n[s]==null&&Mr(r,s,"")}else{const s=r.display;o?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=s)}}const Go=/\s*!important$/;function Mr(e,t,n){if(J(n))n.forEach(r=>Mr(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Rc(e,t);Go.test(n)?e.setProperty(Lt(r),n.replace(Go,""),"important"):e[r]=n}}const Yo=["Webkit","Moz","ms"],hr={};function Rc(e,t){const n=hr[t];if(n)return n;let r=Je(t);if(r!=="filter"&&r in e)return hr[t]=r;r=Zn(r);for(let o=0;o{let e=Date.now,t=!1;if(typeof window!="undefined"){Date.now()>document.createEvent("Event").timeStamp&&(e=()=>performance.now());const n=navigator.userAgent.match(/firefox\/(\d+)/i);t=!!(n&&Number(n[1])<=53)}return[e,t]})();let Nr=0;const kc=Promise.resolve(),Dc=()=>{Nr=0},Mc=()=>Nr||(kc.then(Dc),Nr=Di());function Nc(e,t,n,r){e.addEventListener(t,n,r)}function Hc(e,t,n,r){e.removeEventListener(t,n,r)}function Fc(e,t,n,r,o=null){const s=e._vei||(e._vei={}),i=s[t];if(r&&i)i.value=r;else{const[l,a]=$c(t);if(r){const c=s[t]=zc(r,o);Nc(e,l,c,a)}else i&&(Hc(e,l,i,a),s[t]=void 0)}}const Qo=/(?:Once|Passive|Capture)$/;function $c(e){let t;if(Qo.test(e)){t={};let n;for(;n=e.match(Qo);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[Lt(e.slice(2)),t]}function zc(e,t){const n=r=>{const o=r.timeStamp||Di();(Ic||o>=n.attached-1)&&je(Bc(r,n.value),t,5,[r])};return n.value=e,n.attached=Mc(),n}function Bc(e,t){if(J(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const Zo=/^on[a-z]/,jc=(e,t,n,r,o=!1,s,i,l,a)=>{t==="class"?xc(e,r,o):t==="style"?Oc(e,n,r):En(t)?Vr(t)||Fc(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Vc(e,t,r,o))?Lc(e,t,r,s,i,l,a):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Sc(e,t,r,o))};function Vc(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&Zo.test(t)&&ee(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Zo.test(t)&&pe(n)?!1:t in e}const it="transition",Xt="animation",uo=(e,{slots:t})=>ve(ci,Uc(e),t);uo.displayName="Transition";const Mi={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};uo.props=Te({},ci.props,Mi);const _t=(e,t=[])=>{J(e)?e.forEach(n=>n(...t)):e&&e(...t)},Xo=e=>e?J(e)?e.some(t=>t.length>1):e.length>1:!1;function Uc(e){const t={};for(const y in e)y in Mi||(t[y]=e[y]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:s=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=s,appearActiveClass:c=i,appearToClass:f=l,leaveFromClass:p=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:_=`${n}-leave-to`}=e,b=qc(o),D=b&&b[0],g=b&&b[1],{onBeforeEnter:v,onEnter:P,onEnterCancelled:S,onLeave:N,onLeaveCancelled:V,onBeforeAppear:H=v,onAppear:C=P,onAppearCancelled:w=S}=t,W=(y,k,G)=>{Dt(y,k?f:l),Dt(y,k?c:i),G&&G()},j=(y,k)=>{Dt(y,_),Dt(y,d),k&&k()},Y=y=>(k,G)=>{const le=y?C:P,B=()=>W(k,y,G);_t(le,[k,B]),es(()=>{Dt(k,y?a:s),lt(k,y?f:l),Xo(le)||ts(k,r,D,B)})};return Te(t,{onBeforeEnter(y){_t(v,[y]),lt(y,s),lt(y,i)},onBeforeAppear(y){_t(H,[y]),lt(y,a),lt(y,c)},onEnter:Y(!1),onAppear:Y(!0),onLeave(y,k){const G=()=>j(y,k);lt(y,p),Gc(),lt(y,d),es(()=>{Dt(y,p),lt(y,_),Xo(N)||ts(y,r,g,G)}),_t(N,[y,G])},onEnterCancelled(y){W(y,!1),_t(S,[y])},onAppearCancelled(y){W(y,!0),_t(w,[y])},onLeaveCancelled(y){j(y),_t(V,[y])}})}function qc(e){if(e==null)return null;if(Ee(e))return[pr(e.enter),pr(e.leave)];{const t=pr(e);return[t,t]}}function pr(e){return Ms(e)}function lt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Dt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function es(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Kc=0;function ts(e,t,n,r){const o=e._endId=++Kc,s=()=>{o===e._endId&&r()};if(n)return setTimeout(s,n);const{type:i,timeout:l,propCount:a}=Wc(e,t);if(!i)return r();const c=i+"end";let f=0;const p=()=>{e.removeEventListener(c,d),s()},d=_=>{_.target===e&&++f>=a&&p()};setTimeout(()=>{f(n[b]||"").split(", "),o=r(it+"Delay"),s=r(it+"Duration"),i=ns(o,s),l=r(Xt+"Delay"),a=r(Xt+"Duration"),c=ns(l,a);let f=null,p=0,d=0;t===it?i>0&&(f=it,p=i,d=s.length):t===Xt?c>0&&(f=Xt,p=c,d=a.length):(p=Math.max(i,c),f=p>0?i>c?it:Xt:null,d=f?f===it?s.length:a.length:0);const _=f===it&&/\b(transform|all)(,|$)/.test(n[it+"Property"]);return{type:f,timeout:p,propCount:d,hasTransform:_}}function ns(e,t){for(;e.lengthrs(n)+rs(e[r])))}function rs(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function Gc(){return document.body.offsetHeight}const Yc={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},ih=(e,t)=>n=>{if(!("key"in n))return;const r=Lt(n.key);if(t.some(o=>o===r||Yc[o]===r))return e(n)},lh={beforeMount(e,{value:t},{transition:n}){e._vod=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):en(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),en(e,!0),r.enter(e)):r.leave(e,()=>{en(e,!1)}):en(e,t))},beforeUnmount(e,{value:t}){en(e,t)}};function en(e,t){e.style.display=t?e._vod:"none"}const Jc=Te({patchProp:jc},Pc);let mr,os=!1;function Qc(){return mr=os?mr:rc(Jc),os=!0,mr}const Zc=(...e)=>{const t=Qc().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=Xc(r);if(o)return n(o,!0,o instanceof SVGElement)},t};function Xc(e){return pe(e)?document.querySelector(e):e}const eu={base:"/whispr/",lang:"en-US",title:"whispr",description:"whispr docs",head:[],locales:{}};var tu=([e,t,n])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,n]),nu=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=tu(r);t.has(o)||(t.add(o),n.push(r))}),n},ru=e=>/^(https?:)?\/\//.test(e),ah=e=>/^mailto:/.test(e),ch=e=>/^tel:/.test(e),Ni=e=>Object.prototype.toString.call(e)==="[object Object]",ou=e=>e.replace(/\/$/,""),su=e=>e.replace(/^\//,""),Hi=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const s=o.split("/").length-r.split("/").length;return s!==0?s:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"};const Fi={"v-8daa1a0e":fe(()=>K(()=>import("./index.html.e76bf8fa.js"),[])),"v-146e5374":fe(()=>K(()=>import("./apm.html.f373cdbd.js"),[])),"v-2eb76c63":fe(()=>K(()=>import("./fileupload.html.bed49399.js"),[])),"v-ecba32a0":fe(()=>K(()=>import("./indexing.html.eec85503.js"),[])),"v-6ca815f4":fe(()=>K(()=>import("./installation.html.e571fb72.js"),[])),"v-27b6bb40":fe(()=>K(()=>import("./security.html.fde1aaab.js"),[])),"v-53401e42":fe(()=>K(()=>import("./testing.html.7d02923d.js"),[])),"v-fe842d44":fe(()=>K(()=>import("./graphql.html.c6dfcec7.js"),[])),"v-0e4a26f1":fe(()=>K(()=>import("./introduction.html.39dbe1e9.js"),[])),"v-e9130d12":fe(()=>K(()=>import("./rest.html.2e832547.js"),[])),"v-63e82ae3":fe(()=>K(()=>import("./index.html.bbde1380.js"),[])),"v-3ea3fa0e":fe(()=>K(()=>import("./building.html.1ab0e001.js"),[])),"v-76cfe0bc":fe(()=>K(()=>import("./community.html.eaef40e8.js"),[])),"v-141584aa":fe(()=>K(()=>import("./credits.html.7e88748d.js"),[])),"v-7e30aeec":fe(()=>K(()=>import("./guidelines.html.50f0e80c.js"),[])),"v-17f9b51d":fe(()=>K(()=>import("./index.html.b22e1e2d.js"),[])),"v-a8a674e6":fe(()=>K(()=>import("./index.html.e3f9a88d.js"),[])),"v-712e14fc":fe(()=>K(()=>import("./index.html.0f663318.js"),[])),"v-66de8e88":fe(()=>K(()=>import("./tagGroup.html.603bed20.js"),[])),"v-581890ae":fe(()=>K(()=>import("./webhook.html.94278a7f.js"),[])),"v-4b2698d0":fe(()=>K(()=>import("./whisp.html.835ac122.js"),[])),"v-67d16688":fe(()=>K(()=>import("./index.html.932e40cf.js"),[])),"v-47ce024e":fe(()=>K(()=>import("./index.html.84bc341a.js"),[])),"v-43f4d00c":fe(()=>K(()=>import("./index.html.1d201ad9.js"),[])),"v-3706649a":fe(()=>K(()=>import("./404.html.b948fe5b.js"),[]))},iu={"404":fe(()=>K(()=>import("./404.c97c6bb7.js"),[])),Layout:fe(()=>K(()=>import("./Layout.8a9a1faf.js"),[]))};var $i=xe(Al),zi=Zr({key:"",path:"",title:"",lang:"",frontmatter:{},excerpt:"",headers:[]}),et=xe(zi),An=()=>et;bo.webpackHot&&(__VUE_HMR_RUNTIME__.updatePageData=e=>{$i.value[e.key]=()=>Promise.resolve(e),e.key===et.value.key&&(et.value=e)});var Bi=Symbol(""),lu=()=>{const e=Ae(Bi);if(!e)throw new Error("usePageFrontmatter() is called without provider.");return e},ji=Symbol(""),au=()=>{const e=Ae(ji);if(!e)throw new Error("usePageHead() is called without provider.");return e},cu=Symbol(""),Vi=Symbol(""),uu=()=>{const e=Ae(Vi);if(!e)throw new Error("usePageLang() is called without provider.");return e},fo=Symbol(""),fu=()=>{const e=Ae(fo);if(!e)throw new Error("useRouteLocale() is called without provider.");return e},dt=xe(eu),du=()=>dt;bo.webpackHot&&(__VUE_HMR_RUNTIME__.updateSiteData=e=>{dt.value=e});var Ui=Symbol(""),uh=()=>{const e=Ae(Ui);if(!e)throw new Error("useSiteLocaleData() is called without provider.");return e},hu=Symbol(""),bt=Yt({resolvePageData:async e=>{const t=$i.value[e],n=await(t==null?void 0:t());return n!=null?n:zi},resolvePageFrontmatter:e=>e.frontmatter,resolvePageHead:(e,t,n)=>{const r=pe(t.description)?t.description:n.description,o=[...J(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return nu(o)},resolvePageHeadTitle:(e,t)=>`${e.title?`${e.title} | `:""}${t.title}`,resolvePageLang:e=>e.lang||"en",resolveRouteLocale:(e,t)=>Hi(e,t),resolveSiteLocaleData:(e,t)=>Qe(Qe({},e),e.locales[t])}),pu=We({setup(e,t){const n=xe(!1);return gt(()=>{n.value=!0}),()=>{var r,o;return n.value?(o=(r=t.slots).default)==null?void 0:o.call(r):null}}}),ho=e=>{let t;e.pageKey?t=e.pageKey:t=An().value.key;const n=Fi[t];return n?ve(n):ve("div","404 Not Found")};ho.displayName="Content";ho.props={pageKey:{type:String,required:!1}};var ss=We({name:"Vuepress",setup(){const e=An(),t=_e(()=>{let n;if(e.value.path){const r=e.value.frontmatter.layout;pe(r)?n=r:n="Layout"}else n="404";return iu[n]||lc(n,!1)});return()=>ve(t.value)}}),mu=e=>ru(e)?e:`${du().value.base}${su(e)}`,It=e=>e;function qi(e,t,n){var r,o,s;t===void 0&&(t=50),n===void 0&&(n={});var i=(r=n.isImmediate)!=null&&r,l=(o=n.callback)!=null&&o,a=n.maxWait,c=Date.now(),f=[];function p(){if(a!==void 0){var _=Date.now()-c;if(_+t>=a)return a-_}return t}var d=function(){var _=[].slice.call(arguments),b=this;return new Promise(function(D,g){var v=i&&s===void 0;if(s!==void 0&&clearTimeout(s),s=setTimeout(function(){if(s=void 0,c=Date.now(),!i){var S=e.apply(b,_);l&&l(S),f.forEach(function(N){return(0,N.resolve)(S)}),f=[]}},p()),v){var P=e.apply(b,_);return l&&l(P),D(P)}f.push({resolve:D,reject:g})})};return d.cancel=function(_){s!==void 0&&clearTimeout(s),f.forEach(function(b){return(0,b.reject)(_)}),f=[]},d}/*!
   * vue-router v4.0.15
   * (c) 2022 Eduardo San Martin Morote
   * @license MIT
diff --git a/assets/building.html.9c261dd1.js b/assets/building.html.1ab0e001.js
similarity index 80%
rename from assets/building.html.9c261dd1.js
rename to assets/building.html.1ab0e001.js
index 5c015ce29..d896adba3 100644
--- a/assets/building.html.9c261dd1.js
+++ b/assets/building.html.1ab0e001.js
@@ -1 +1 @@
-import{_ as e,o as t,a,b as i,e as n}from"./app.5ecbe10d.js";const o={},s={id:"building",tabindex:"-1"},_=i("a",{class:"header-anchor",href:"#building","aria-hidden":"true"},"#",-1),c=n(" Building"),d=[_,c];function r(l,h){return t(),a("h1",s,d)}var f=e(o,[["render",r],["__file","building.html.vue"]]);export{f as default};
+import{_ as e,o as t,a,b as i,e as n}from"./app.8a6a951d.js";const o={},s={id:"building",tabindex:"-1"},_=i("a",{class:"header-anchor",href:"#building","aria-hidden":"true"},"#",-1),c=n(" Building"),d=[_,c];function r(l,h){return t(),a("h1",s,d)}var f=e(o,[["render",r],["__file","building.html.vue"]]);export{f as default};
diff --git a/assets/building.html.b67ca598.js b/assets/building.html.b67ca598.js
deleted file mode 100644
index d3b1a6e7c..000000000
--- a/assets/building.html.b67ca598.js
+++ /dev/null
@@ -1 +0,0 @@
-const t={key:"v-3ea3fa0e",path:"/contributing/building.html",title:"Building",lang:"en-US",frontmatter:{},excerpt:"",headers:[],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"contributing/building.md"};export{t as data};
diff --git a/assets/building.html.d8384166.js b/assets/building.html.d8384166.js
new file mode 100644
index 000000000..f9c7d8ad9
--- /dev/null
+++ b/assets/building.html.d8384166.js
@@ -0,0 +1 @@
+const t={key:"v-3ea3fa0e",path:"/contributing/building.html",title:"Building",lang:"en-US",frontmatter:{},excerpt:"",headers:[],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"contributing/building.md"};export{t as data};
diff --git a/assets/community.html.33c02133.js b/assets/community.html.33c02133.js
new file mode 100644
index 000000000..5e46ef9be
--- /dev/null
+++ b/assets/community.html.33c02133.js
@@ -0,0 +1 @@
+const t={key:"v-76cfe0bc",path:"/contributing/community.html",title:"Community",lang:"en-US",frontmatter:{},excerpt:"",headers:[],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"contributing/community.md"};export{t as data};
diff --git a/assets/community.html.a23266a2.js b/assets/community.html.a23266a2.js
deleted file mode 100644
index 77e7bb8ed..000000000
--- a/assets/community.html.a23266a2.js
+++ /dev/null
@@ -1 +0,0 @@
-const t={key:"v-76cfe0bc",path:"/contributing/community.html",title:"Community",lang:"en-US",frontmatter:{},excerpt:"",headers:[],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"contributing/community.md"};export{t as data};
diff --git a/assets/community.html.b4ce1cb1.js b/assets/community.html.eaef40e8.js
similarity index 80%
rename from assets/community.html.b4ce1cb1.js
rename to assets/community.html.eaef40e8.js
index aa05a7c01..9eed362fa 100644
--- a/assets/community.html.b4ce1cb1.js
+++ b/assets/community.html.eaef40e8.js
@@ -1 +1 @@
-import{_ as e,o as t,a as o,b as c,e as a}from"./app.5ecbe10d.js";const n={},s={id:"community",tabindex:"-1"},_=c("a",{class:"header-anchor",href:"#community","aria-hidden":"true"},"#",-1),r=a(" Community"),i=[_,r];function m(d,h){return t(),o("h1",s,i)}var f=e(n,[["render",m],["__file","community.html.vue"]]);export{f as default};
+import{_ as e,o as t,a as o,b as c,e as a}from"./app.8a6a951d.js";const n={},s={id:"community",tabindex:"-1"},_=c("a",{class:"header-anchor",href:"#community","aria-hidden":"true"},"#",-1),r=a(" Community"),i=[_,r];function m(d,h){return t(),o("h1",s,i)}var f=e(n,[["render",m],["__file","community.html.vue"]]);export{f as default};
diff --git a/assets/credits.html.18986896.js b/assets/credits.html.18986896.js
new file mode 100644
index 000000000..237464ad0
--- /dev/null
+++ b/assets/credits.html.18986896.js
@@ -0,0 +1 @@
+const t={key:"v-141584aa",path:"/contributing/credits.html",title:"Credits",lang:"en-US",frontmatter:{},excerpt:"",headers:[],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"contributing/credits.md"};export{t as data};
diff --git a/assets/credits.html.777869f2.js b/assets/credits.html.777869f2.js
deleted file mode 100644
index a331d3c53..000000000
--- a/assets/credits.html.777869f2.js
+++ /dev/null
@@ -1 +0,0 @@
-const t={key:"v-141584aa",path:"/contributing/credits.html",title:"Credits",lang:"en-US",frontmatter:{},excerpt:"",headers:[],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"contributing/credits.md"};export{t as data};
diff --git a/assets/credits.html.38f9982d.js b/assets/credits.html.7e88748d.js
similarity index 80%
rename from assets/credits.html.38f9982d.js
rename to assets/credits.html.7e88748d.js
index 57ebefbe8..19f6f66b6 100644
--- a/assets/credits.html.38f9982d.js
+++ b/assets/credits.html.7e88748d.js
@@ -1 +1 @@
-import{_ as e,o as t,a as s,b as r,e as c}from"./app.5ecbe10d.js";const a={},o={id:"credits",tabindex:"-1"},_=r("a",{class:"header-anchor",href:"#credits","aria-hidden":"true"},"#",-1),d=c(" Credits"),i=[_,d];function n(h,f){return t(),s("h1",o,i)}var m=e(a,[["render",n],["__file","credits.html.vue"]]);export{m as default};
+import{_ as e,o as t,a as s,b as r,e as c}from"./app.8a6a951d.js";const a={},o={id:"credits",tabindex:"-1"},_=r("a",{class:"header-anchor",href:"#credits","aria-hidden":"true"},"#",-1),d=c(" Credits"),i=[_,d];function n(h,f){return t(),s("h1",o,i)}var m=e(a,[["render",n],["__file","credits.html.vue"]]);export{m as default};
diff --git a/assets/fileupload.html.43a62890.js b/assets/fileupload.html.bed49399.js
similarity index 99%
rename from assets/fileupload.html.43a62890.js
rename to assets/fileupload.html.bed49399.js
index f456a4e0f..7d8698e87 100644
--- a/assets/fileupload.html.43a62890.js
+++ b/assets/fileupload.html.bed49399.js
@@ -1,4 +1,4 @@
-import{_ as n,c as s}from"./app.5ecbe10d.js";const a={},e=s(`

File Upload

AWS Dependency

WARNING

This feature is currently only available with AWS.

WARNING

This feature is only supported by the GraphQL-API, not the REST-API.

You need to provide the following environment variable.

# Optional
+import{_ as n,c as s}from"./app.8a6a951d.js";const a={},e=s(`

File Upload

AWS Dependency

WARNING

This feature is currently only available with AWS.

WARNING

This feature is only supported by the GraphQL-API, not the REST-API.

You need to provide the following environment variable.

# Optional
 AWS_S3_ENDPOINT # To set the S3 endpoint to something else then the default
 
 # Required
diff --git a/assets/fileupload.html.c2264674.js b/assets/fileupload.html.dec2d67d.js
similarity index 61%
rename from assets/fileupload.html.c2264674.js
rename to assets/fileupload.html.dec2d67d.js
index e953e9002..73fba1f78 100644
--- a/assets/fileupload.html.c2264674.js
+++ b/assets/fileupload.html.dec2d67d.js
@@ -1 +1 @@
-const e={key:"v-2eb76c63",path:"/fileupload.html",title:"File Upload",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"AWS Dependency",slug:"aws-dependency",children:[]},{level:2,title:"Usage",slug:"usage",children:[{level:3,title:"Upload",slug:"upload",children:[]},{level:3,title:"Download",slug:"download",children:[]}]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"fileupload.md"};export{e as data};
+const e={key:"v-2eb76c63",path:"/fileupload.html",title:"File Upload",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"AWS Dependency",slug:"aws-dependency",children:[]},{level:2,title:"Usage",slug:"usage",children:[{level:3,title:"Upload",slug:"upload",children:[]},{level:3,title:"Download",slug:"download",children:[]}]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"fileupload.md"};export{e as data};
diff --git a/assets/graphql.html.78c6aca5.js b/assets/graphql.html.847bbc55.js
similarity index 90%
rename from assets/graphql.html.78c6aca5.js
rename to assets/graphql.html.847bbc55.js
index 35135f628..eb6670e8d 100644
--- a/assets/graphql.html.78c6aca5.js
+++ b/assets/graphql.html.847bbc55.js
@@ -1 +1 @@
-const e={key:"v-fe842d44",path:"/api/graphql.html",title:"GraphQL API",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Whisps: Query",slug:"whisps-query",children:[{level:3,title:"whispById",slug:"whispbyid",children:[]},{level:3,title:"whisps",slug:"whisps",children:[]},{level:3,title:"countWhisps",slug:"countwhisps",children:[]}]},{level:2,title:"Whisps: Mutation",slug:"whisps-mutation",children:[{level:3,title:"createWhisp",slug:"createwhisp",children:[]},{level:3,title:"updateWhisp",slug:"updatewhisp",children:[]},{level:3,title:"replaceWhisp",slug:"replacewhisp",children:[]},{level:3,title:"deleteWhisp",slug:"deletewhisp",children:[]}]},{level:2,title:"Whisps: Subscription",slug:"whisps-subscription",children:[{level:3,title:"whispAdded",slug:"whispadded",children:[]}]},{level:2,title:"TagGroups: Query",slug:"taggroups-query",children:[{level:3,title:"tagGroupById",slug:"taggroupbyid",children:[]},{level:3,title:"tagGroups",slug:"taggroups",children:[]}]},{level:2,title:"TagGroups: Mutation",slug:"taggroups-mutation",children:[{level:3,title:"createTagGroup",slug:"createtaggroup",children:[]},{level:3,title:"updateTagGroup",slug:"updatetaggroup",children:[]},{level:3,title:"replaceTagGroup",slug:"replacetaggroup",children:[]},{level:3,title:"deleteTagGroup",slug:"deletetaggroup",children:[]}]},{level:2,title:"Webhooks: Query",slug:"webhooks-query",children:[{level:3,title:"webhooks",slug:"webhooks",children:[]}]},{level:2,title:"Webhooks: Mutation",slug:"webhooks-mutation",children:[{level:3,title:"createWebhook",slug:"createwebhook",children:[]},{level:3,title:"deleteWebhook",slug:"deletewebhook",children:[]}]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"api/graphql.md"};export{e as data};
+const e={key:"v-fe842d44",path:"/api/graphql.html",title:"GraphQL API",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Whisps: Query",slug:"whisps-query",children:[{level:3,title:"whispById",slug:"whispbyid",children:[]},{level:3,title:"whisps",slug:"whisps",children:[]},{level:3,title:"countWhisps",slug:"countwhisps",children:[]}]},{level:2,title:"Whisps: Mutation",slug:"whisps-mutation",children:[{level:3,title:"createWhisp",slug:"createwhisp",children:[]},{level:3,title:"updateWhisp",slug:"updatewhisp",children:[]},{level:3,title:"replaceWhisp",slug:"replacewhisp",children:[]},{level:3,title:"deleteWhisp",slug:"deletewhisp",children:[]}]},{level:2,title:"Whisps: Subscription",slug:"whisps-subscription",children:[{level:3,title:"whispAdded",slug:"whispadded",children:[]}]},{level:2,title:"TagGroups: Query",slug:"taggroups-query",children:[{level:3,title:"tagGroupById",slug:"taggroupbyid",children:[]},{level:3,title:"tagGroups",slug:"taggroups",children:[]}]},{level:2,title:"TagGroups: Mutation",slug:"taggroups-mutation",children:[{level:3,title:"createTagGroup",slug:"createtaggroup",children:[]},{level:3,title:"updateTagGroup",slug:"updatetaggroup",children:[]},{level:3,title:"replaceTagGroup",slug:"replacetaggroup",children:[]},{level:3,title:"deleteTagGroup",slug:"deletetaggroup",children:[]}]},{level:2,title:"Webhooks: Query",slug:"webhooks-query",children:[{level:3,title:"webhooks",slug:"webhooks",children:[]}]},{level:2,title:"Webhooks: Mutation",slug:"webhooks-mutation",children:[{level:3,title:"createWebhook",slug:"createwebhook",children:[]},{level:3,title:"deleteWebhook",slug:"deletewebhook",children:[]}]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"api/graphql.md"};export{e as data};
diff --git a/assets/graphql.html.41639b3e.js b/assets/graphql.html.c6dfcec7.js
similarity index 99%
rename from assets/graphql.html.41639b3e.js
rename to assets/graphql.html.c6dfcec7.js
index d21930ae2..4bf84283a 100644
--- a/assets/graphql.html.41639b3e.js
+++ b/assets/graphql.html.c6dfcec7.js
@@ -1,4 +1,4 @@
-import{_ as l,r as p,o as r,a as d,b as n,d as e,w as t,F as u,e as s,c as i}from"./app.5ecbe10d.js";const c={},h=n("h1",{id:"graphql-api",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#graphql-api","aria-hidden":"true"},"#"),s(" GraphQL API")],-1),v=s("In this section we will be providing examples that you can use inside your very own playground available here "),m={href:"http://localhost:3000/graphql",target:"_blank",rel:"noopener noreferrer"},b=s("http://localhost:3000/graphql"),g=s(" (if you activated it)."),k=n("h2",{id:"whisps-query",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#whisps-query","aria-hidden":"true"},"#"),s(" Whisps: Query")],-1),_=n("h3",{id:"whispbyid",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#whispbyid","aria-hidden":"true"},"#"),s(" whispById")],-1),f=s("Retrieves the matching whisp by its "),q=n("code",null,"_id",-1),y=s("."),w=i(`
query getWhispById($whispId: String!) {
+import{_ as l,r as p,o as r,a as d,b as n,d as e,w as t,F as u,e as s,c as i}from"./app.8a6a951d.js";const c={},h=n("h1",{id:"graphql-api",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#graphql-api","aria-hidden":"true"},"#"),s(" GraphQL API")],-1),v=s("In this section we will be providing examples that you can use inside your very own playground available here "),m={href:"http://localhost:3000/graphql",target:"_blank",rel:"noopener noreferrer"},b=s("http://localhost:3000/graphql"),g=s(" (if you activated it)."),k=n("h2",{id:"whisps-query",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#whisps-query","aria-hidden":"true"},"#"),s(" Whisps: Query")],-1),_=n("h3",{id:"whispbyid",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#whispbyid","aria-hidden":"true"},"#"),s(" whispById")],-1),f=s("Retrieves the matching whisp by its "),q=n("code",null,"_id",-1),y=s("."),w=i(`
query getWhispById($whispId: String!) {
   whispById(
     id: $whispId
   ) {
diff --git a/assets/guidelines.html.5105e555.js b/assets/guidelines.html.50f0e80c.js
similarity index 81%
rename from assets/guidelines.html.5105e555.js
rename to assets/guidelines.html.50f0e80c.js
index ac7500f46..2d7d19c71 100644
--- a/assets/guidelines.html.5105e555.js
+++ b/assets/guidelines.html.50f0e80c.js
@@ -1 +1 @@
-import{_ as e,o as s,a as t,b as a,e as i}from"./app.5ecbe10d.js";const n={},o={id:"guidelines",tabindex:"-1"},_=a("a",{class:"header-anchor",href:"#guidelines","aria-hidden":"true"},"#",-1),c=i(" Guidelines"),d=[_,c];function r(l,h){return s(),t("h1",o,d)}var f=e(n,[["render",r],["__file","guidelines.html.vue"]]);export{f as default};
+import{_ as e,o as s,a as t,b as a,e as i}from"./app.8a6a951d.js";const n={},o={id:"guidelines",tabindex:"-1"},_=a("a",{class:"header-anchor",href:"#guidelines","aria-hidden":"true"},"#",-1),c=i(" Guidelines"),d=[_,c];function r(l,h){return s(),t("h1",o,d)}var f=e(n,[["render",r],["__file","guidelines.html.vue"]]);export{f as default};
diff --git a/assets/guidelines.html.715e0bb8.js b/assets/guidelines.html.715e0bb8.js
new file mode 100644
index 000000000..bc62724b8
--- /dev/null
+++ b/assets/guidelines.html.715e0bb8.js
@@ -0,0 +1 @@
+const e={key:"v-7e30aeec",path:"/contributing/guidelines.html",title:"Guidelines",lang:"en-US",frontmatter:{},excerpt:"",headers:[],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"contributing/guidelines.md"};export{e as data};
diff --git a/assets/guidelines.html.fbbd6a8c.js b/assets/guidelines.html.fbbd6a8c.js
deleted file mode 100644
index c68d0d500..000000000
--- a/assets/guidelines.html.fbbd6a8c.js
+++ /dev/null
@@ -1 +0,0 @@
-const e={key:"v-7e30aeec",path:"/contributing/guidelines.html",title:"Guidelines",lang:"en-US",frontmatter:{},excerpt:"",headers:[],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"contributing/guidelines.md"};export{e as data};
diff --git a/assets/index.html.68be8755.js b/assets/index.html.0f663318.js
similarity index 98%
rename from assets/index.html.68be8755.js
rename to assets/index.html.0f663318.js
index 7ed5ccac9..975887edb 100644
--- a/assets/index.html.68be8755.js
+++ b/assets/index.html.0f663318.js
@@ -1 +1 @@
-import{_ as e,c as i}from"./app.5ecbe10d.js";var a="/whispr/assets/whisprcommentfast.ace023f9.gif";const s={},t=i('

Introduction

Whispr is an open source event, comment and alert processing hub created by Sanofi IADC. We created it to meet our need for a centralised comment and alerting service which could be easily integrated into our tech stack.

In Whispr each event object is called a whisp. A whisp is classified with a severity level from info to critical, can have tags to further classify it, and has a generic data object which stores the detail of the whisp. As an example, a comment within an application could be a whisp of severity level info, with the comment text in the data object.

Using Whispr we\u2019ve implemented a messaging service for users to communicate between our apps, and a business process status pub/sub alerting solution - any system can send an alert to Whispr, and susbscribing applications and users are automatically notified to display the alert and take action.

Main features

  • GraphQL and REST API for whisp creation
  • Whisp classification through severity types
  • Filtering using any of the base elements of a whisp
  • Tag management system for whisp classification
  • Subscriptions through GraphQL with Websockets (more subscription types coming up very soon in our roadmap)

Example use cases for Whispr

  • Equipment status sharing (alerting) from IoT equipment
  • Lightweight comment feed (messaging) solutions
  • Machine learning on a central hub of data to identify data trends (common root causes for alerts, alert patterns)

Whispr in action

Chat application with whispr animated gif

Demonstration of using whispr as a comment system. Each comment is a whisp with severity info, and tags are also defined as a separate object type in whispr. All user interface components you see are available for use in the whispr UI library.

Key components

Whispr consists of the following main elements:

  • Whispr core: providing an whisp pub/sub system - publishing systems can register whisps in Whispr core when they need to share the status with. Whispr core can be used by any application capable of communicating with GraphQL or REST APIs
  • Whispr UI: A front end component library for fast implementation of some common use cases within your Vue.js or React based web application.

Roadmap

  • We have big plans for Whispr, here are a few of the key items Plugin system
  • Advanced filtering
  • Whisp schema registration and validation
',16);function n(r,o){return t}var c=e(s,[["render",n],["__file","index.html.vue"]]);export{c as default}; +import{_ as e,c as i}from"./app.8a6a951d.js";var a="/whispr/assets/whisprcommentfast.ace023f9.gif";const s={},t=i('

Introduction

Whispr is an open source event, comment and alert processing hub created by Sanofi IADC. We created it to meet our need for a centralised comment and alerting service which could be easily integrated into our tech stack.

In Whispr each event object is called a whisp. A whisp is classified with a severity level from info to critical, can have tags to further classify it, and has a generic data object which stores the detail of the whisp. As an example, a comment within an application could be a whisp of severity level info, with the comment text in the data object.

Using Whispr we\u2019ve implemented a messaging service for users to communicate between our apps, and a business process status pub/sub alerting solution - any system can send an alert to Whispr, and susbscribing applications and users are automatically notified to display the alert and take action.

Main features

  • GraphQL and REST API for whisp creation
  • Whisp classification through severity types
  • Filtering using any of the base elements of a whisp
  • Tag management system for whisp classification
  • Subscriptions through GraphQL with Websockets (more subscription types coming up very soon in our roadmap)

Example use cases for Whispr

  • Equipment status sharing (alerting) from IoT equipment
  • Lightweight comment feed (messaging) solutions
  • Machine learning on a central hub of data to identify data trends (common root causes for alerts, alert patterns)

Whispr in action

Chat application with whispr animated gif

Demonstration of using whispr as a comment system. Each comment is a whisp with severity info, and tags are also defined as a separate object type in whispr. All user interface components you see are available for use in the whispr UI library.

Key components

Whispr consists of the following main elements:

  • Whispr core: providing an whisp pub/sub system - publishing systems can register whisps in Whispr core when they need to share the status with. Whispr core can be used by any application capable of communicating with GraphQL or REST APIs
  • Whispr UI: A front end component library for fast implementation of some common use cases within your Vue.js or React based web application.

Roadmap

  • We have big plans for Whispr, here are a few of the key items Plugin system
  • Advanced filtering
  • Whisp schema registration and validation
',16);function n(r,o){return t}var c=e(s,[["render",n],["__file","index.html.vue"]]);export{c as default}; diff --git a/assets/index.html.8a074641.js b/assets/index.html.1d201ad9.js similarity index 98% rename from assets/index.html.8a074641.js rename to assets/index.html.1d201ad9.js index ab2d6444e..8a80e6cb0 100644 --- a/assets/index.html.8a074641.js +++ b/assets/index.html.1d201ad9.js @@ -1,4 +1,4 @@ -import{_ as t,r as i,o as p,a as l,b as a,d as n,w as s,F as r,e,c}from"./app.5ecbe10d.js";const d={},u=a("h1",{id:"webhooks",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#webhooks","aria-hidden":"true"},"#"),e(" Webhooks")],-1),h=a("p",null,[e("Whispr also provides a webhook system. Webhooks are event listeners that will make a "),a("code",null,"POST"),e(" call to a url you provided, when an event is triggered.")],-1),k=a("h2",{id:"webhook-registration",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#webhook-registration","aria-hidden":"true"},"#"),e(" Webhook registration")],-1),b=e("You can use "),v=e("GraphQL"),_=e(" or "),m=e("REST"),w=e(" to create or delete a webhook."),y=c(`

To create a webhook, you should provide:

  • the url that will be called when the event is triggered
  • the event names the webhook will be listening to
  • (optional) the filter on the event if you want to be notified only for events of a specific payload

For example, here is the payload you should provide to create a webhook that will call https://webhook.url when a whisp is created and that whisp applicationId is "application1".

{
+import{_ as t,r as i,o as p,a as l,b as a,d as n,w as s,F as r,e,c}from"./app.8a6a951d.js";const d={},u=a("h1",{id:"webhooks",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#webhooks","aria-hidden":"true"},"#"),e(" Webhooks")],-1),h=a("p",null,[e("Whispr also provides a webhook system. Webhooks are event listeners that will make a "),a("code",null,"POST"),e(" call to a url you provided, when an event is triggered.")],-1),k=a("h2",{id:"webhook-registration",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#webhook-registration","aria-hidden":"true"},"#"),e(" Webhook registration")],-1),b=e("You can use "),v=e("GraphQL"),_=e(" or "),m=e("REST"),w=e(" to create or delete a webhook."),y=c(`

To create a webhook, you should provide:

  • the url that will be called when the event is triggered
  • the event names the webhook will be listening to
  • (optional) the filter on the event if you want to be notified only for events of a specific payload

For example, here is the payload you should provide to create a webhook that will call https://webhook.url when a whisp is created and that whisp applicationId is "application1".

{
     "url": "https://webhook.url",
     "events": ["WHISP_CREATED"],
     "filter":  { "applicationId": "application1" }
diff --git a/assets/index.html.b72dac1b.js b/assets/index.html.3170d528.js
similarity index 62%
rename from assets/index.html.b72dac1b.js
rename to assets/index.html.3170d528.js
index c15557dd9..98c602ae1 100644
--- a/assets/index.html.b72dac1b.js
+++ b/assets/index.html.3170d528.js
@@ -1 +1 @@
-const e={key:"v-43f4d00c",path:"/webhooks/",title:"Webhooks",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Webhook registration",slug:"webhook-registration",children:[]},{level:2,title:"Webhook call",slug:"webhook-call",children:[{level:3,title:"Webhook proxy / CA",slug:"webhook-proxy-ca",children:[]}]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"webhooks/readme.md"};export{e as data};
+const e={key:"v-43f4d00c",path:"/webhooks/",title:"Webhooks",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Webhook registration",slug:"webhook-registration",children:[]},{level:2,title:"Webhook call",slug:"webhook-call",children:[{level:3,title:"Webhook proxy / CA",slug:"webhook-proxy-ca",children:[]}]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"webhooks/readme.md"};export{e as data};
diff --git a/assets/index.html.338c7f66.js b/assets/index.html.338c7f66.js
new file mode 100644
index 000000000..90a46e6a6
--- /dev/null
+++ b/assets/index.html.338c7f66.js
@@ -0,0 +1 @@
+const e={key:"v-63e82ae3",path:"/architecture/",title:"Architecture",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:3,title:"Whispr core",slug:"whispr-core",children:[]},{level:3,title:"Whispr UI",slug:"whispr-ui",children:[]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"architecture/readme.md"};export{e as data};
diff --git a/assets/index.html.84eaa4c0.js b/assets/index.html.84bc341a.js
similarity index 91%
rename from assets/index.html.84eaa4c0.js
rename to assets/index.html.84bc341a.js
index a6af680f2..28d7310ed 100644
--- a/assets/index.html.84eaa4c0.js
+++ b/assets/index.html.84bc341a.js
@@ -1 +1 @@
-import{_ as t,o,a as r,F as n,b as e,e as a}from"./app.5ecbe10d.js";const s={},i=e("h1",{id:"troubleshoot",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#troubleshoot","aria-hidden":"true"},"#"),a(" Troubleshoot")],-1),d=e("h2",{id:"header-logging",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#header-logging","aria-hidden":"true"},"#"),a(" Header logging")],-1),h=e("p",null,"Request http headers can be displayed in application logs. to Enable it pass DEBUG_HTTP_HEADERS=true as an environment variable to the application process",-1),l=e("p",null,'Not that "authorization" header will be hidden for security purpose.',-1);function c(_,u){return o(),r(n,null,[i,d,h,l],64)}var g=t(s,[["render",c],["__file","index.html.vue"]]);export{g as default};
+import{_ as t,o,a as r,F as n,b as e,e as a}from"./app.8a6a951d.js";const s={},i=e("h1",{id:"troubleshoot",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#troubleshoot","aria-hidden":"true"},"#"),a(" Troubleshoot")],-1),d=e("h2",{id:"header-logging",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#header-logging","aria-hidden":"true"},"#"),a(" Header logging")],-1),h=e("p",null,"Request http headers can be displayed in application logs. to Enable it pass DEBUG_HTTP_HEADERS=true as an environment variable to the application process",-1),l=e("p",null,'Not that "authorization" header will be hidden for security purpose.',-1);function c(_,u){return o(),r(n,null,[i,d,h,l],64)}var g=t(s,[["render",c],["__file","index.html.vue"]]);export{g as default};
diff --git a/assets/index.html.86913dca.js b/assets/index.html.86913dca.js
deleted file mode 100644
index 1f1ee24a0..000000000
--- a/assets/index.html.86913dca.js
+++ /dev/null
@@ -1 +0,0 @@
-const e={key:"v-63e82ae3",path:"/architecture/",title:"Architecture",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:3,title:"Whispr core",slug:"whispr-core",children:[]},{level:3,title:"Whispr UI",slug:"whispr-ui",children:[]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"architecture/readme.md"};export{e as data};
diff --git a/assets/index.html.98268d15.js b/assets/index.html.8ceddafa.js
similarity index 55%
rename from assets/index.html.98268d15.js
rename to assets/index.html.8ceddafa.js
index 95631e73b..2882adf0b 100644
--- a/assets/index.html.98268d15.js
+++ b/assets/index.html.8ceddafa.js
@@ -1 +1 @@
-const e={key:"v-17f9b51d",path:"/events/",title:"Event system",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Event",slug:"event",children:[]},{level:2,title:"Event Listeners",slug:"event-listeners",children:[]},{level:2,title:"Schema",slug:"schema",children:[]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"events/readme.md"};export{e as data};
+const e={key:"v-17f9b51d",path:"/events/",title:"Event system",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Event",slug:"event",children:[]},{level:2,title:"Event Listeners",slug:"event-listeners",children:[]},{level:2,title:"Schema",slug:"schema",children:[]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"events/readme.md"};export{e as data};
diff --git a/assets/index.html.64468620.js b/assets/index.html.932e40cf.js
similarity index 98%
rename from assets/index.html.64468620.js
rename to assets/index.html.932e40cf.js
index 28338fce1..cd86bba34 100644
--- a/assets/index.html.64468620.js
+++ b/assets/index.html.932e40cf.js
@@ -1,4 +1,4 @@
-import{_ as a,r as t,o,a as i,b as n,d as l,F as c,e,c as r}from"./app.5ecbe10d.js";const p={},d=n("h1",{id:"plugins",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#plugins","aria-hidden":"true"},"#"),e(" Plugins")],-1),u=n("h2",{id:"create-a-plugin",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#create-a-plugin","aria-hidden":"true"},"#"),e(" Create a plugin")],-1),h=n("p",null,"Create a new repository and clone it to you computer.",-1),m=e("Publish this repository to npm by following npm's documentation: "),v={href:"https://docs.npmjs.com/creating-node-js-modules",target:"_blank",rel:"noopener noreferrer"},k=e("https://docs.npmjs.com/creating-node-js-modules"),g=r(`

Add your plugin to whispr

  • Add the package of your plugin:
npm install your-plugin --save
+import{_ as a,r as t,o,a as i,b as n,d as l,F as c,e,c as r}from"./app.8a6a951d.js";const p={},d=n("h1",{id:"plugins",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#plugins","aria-hidden":"true"},"#"),e(" Plugins")],-1),u=n("h2",{id:"create-a-plugin",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#create-a-plugin","aria-hidden":"true"},"#"),e(" Create a plugin")],-1),h=n("p",null,"Create a new repository and clone it to you computer.",-1),m=e("Publish this repository to npm by following npm's documentation: "),v={href:"https://docs.npmjs.com/creating-node-js-modules",target:"_blank",rel:"noopener noreferrer"},k=e("https://docs.npmjs.com/creating-node-js-modules"),g=r(`

Add your plugin to whispr

  • Add the package of your plugin:
npm install your-plugin --save
 
  • Add the name of your plugin in the plugins enum of the src/event/event.service.ts file:
export const pluginNames = [
   'your-plugin',
 ];
diff --git a/assets/index.html.ac964044.js b/assets/index.html.ac964044.js
deleted file mode 100644
index 0e35fbe6d..000000000
--- a/assets/index.html.ac964044.js
+++ /dev/null
@@ -1 +0,0 @@
-const e={key:"v-a8a674e6",path:"/filters/",title:"Filters",lang:"en-US",frontmatter:{},excerpt:"",headers:[],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"filters/readme.md"};export{e as data};
diff --git a/assets/index.html.015bda07.js b/assets/index.html.b0458ce4.js
similarity index 51%
rename from assets/index.html.015bda07.js
rename to assets/index.html.b0458ce4.js
index d20d8d3e1..39752fcaf 100644
--- a/assets/index.html.015bda07.js
+++ b/assets/index.html.b0458ce4.js
@@ -1 +1 @@
-const e={key:"v-47ce024e",path:"/troubleshoot/",title:"Troubleshoot",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Header logging",slug:"header-logging",children:[]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"troubleshoot/readme.md"};export{e as data};
+const e={key:"v-47ce024e",path:"/troubleshoot/",title:"Troubleshoot",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Header logging",slug:"header-logging",children:[]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"troubleshoot/readme.md"};export{e as data};
diff --git a/assets/index.html.ee90995c.js b/assets/index.html.b22e1e2d.js
similarity index 96%
rename from assets/index.html.ee90995c.js
rename to assets/index.html.b22e1e2d.js
index 85748c225..a9fda6feb 100644
--- a/assets/index.html.ee90995c.js
+++ b/assets/index.html.b22e1e2d.js
@@ -1,4 +1,4 @@
-import{_ as e,c as a}from"./app.5ecbe10d.js";var n="/whispr/assets/event_system.3f338995.jpg";const s={},t=a(`

Event system

Whispr provides an internal event system that allows event listeners to execute various actions when an event is triggered.

Event

An event contains two fields: a name and a payload.

Example:

{
+import{_ as e,c as a}from"./app.8a6a951d.js";var n="/whispr/assets/event_system.3f338995.jpg";const s={},t=a(`

Event system

Whispr provides an internal event system that allows event listeners to execute various actions when an event is triggered.

Event

An event contains two fields: a name and a payload.

Example:

{
   name: "WHISP_CREATED",
   payload: WhispEntity
 }
diff --git a/assets/index.html.f9c0292e.js b/assets/index.html.b586816a.js
similarity index 79%
rename from assets/index.html.f9c0292e.js
rename to assets/index.html.b586816a.js
index ad336d7bf..57687cc8d 100644
--- a/assets/index.html.f9c0292e.js
+++ b/assets/index.html.b586816a.js
@@ -1 +1 @@
-const e={key:"v-8daa1a0e",path:"/",title:"",lang:"en-US",frontmatter:{home:!0,heroImage:"whispr_logo_charcoal_back.svg",heroText:null,tagline:"Simple, pluggable, open source event, comment and alert pub sub microservice",actions:[{text:"Get Started \u2192",link:"/introduction/",type:"primary"}],features:[{title:"Easy pub sub",details:"Easily implement whispr and integrate into your projects as a pub sub solution for event type data."},{title:"UI library",details:"Get started quickly with some simple UI components to add cool whispr integrations to your app, or build from them as samples."},{title:"Progressive",details:"An open, extendable platform built using a modern, progressive tech stack using Nest.js, GraphQL."}],footer:"MIT licensed, made by Sanofi IADC"},excerpt:"",headers:[],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"README.md"};export{e as data};
+const e={key:"v-8daa1a0e",path:"/",title:"",lang:"en-US",frontmatter:{home:!0,heroImage:"whispr_logo_charcoal_back.svg",heroText:null,tagline:"Simple, pluggable, open source event, comment and alert pub sub microservice",actions:[{text:"Get Started \u2192",link:"/introduction/",type:"primary"}],features:[{title:"Easy pub sub",details:"Easily implement whispr and integrate into your projects as a pub sub solution for event type data."},{title:"UI library",details:"Get started quickly with some simple UI components to add cool whispr integrations to your app, or build from them as samples."},{title:"Progressive",details:"An open, extendable platform built using a modern, progressive tech stack using Nest.js, GraphQL."}],footer:"MIT licensed, made by Sanofi IADC"},excerpt:"",headers:[],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"README.md"};export{e as data};
diff --git a/assets/index.html.d4932c98.js b/assets/index.html.bbde1380.js
similarity index 90%
rename from assets/index.html.d4932c98.js
rename to assets/index.html.bbde1380.js
index c12e68d0f..d04f5ff12 100644
--- a/assets/index.html.d4932c98.js
+++ b/assets/index.html.bbde1380.js
@@ -1 +1 @@
-import{_ as e,c as i}from"./app.5ecbe10d.js";const r={},a=i('

Architecture

Whispr core

  • Nest.js
  • GraphQL (out of the box with Nest.js)
  • Simple REST API

Whispr UI

  • Vue.js
  • Vuetify
',5);function h(t,c){return a}var d=e(r,[["render",h],["__file","index.html.vue"]]);export{d as default}; +import{_ as e,c as i}from"./app.8a6a951d.js";const r={},a=i('

Architecture

Whispr core

  • Nest.js
  • GraphQL (out of the box with Nest.js)
  • Simple REST API

Whispr UI

  • Vue.js
  • Vuetify
',5);function h(t,c){return a}var d=e(r,[["render",h],["__file","index.html.vue"]]);export{d as default}; diff --git a/assets/index.html.bdeeaf2e.js b/assets/index.html.bdeeaf2e.js new file mode 100644 index 000000000..c5c836d68 --- /dev/null +++ b/assets/index.html.bdeeaf2e.js @@ -0,0 +1 @@ +const e={key:"v-a8a674e6",path:"/filters/",title:"Filters",lang:"en-US",frontmatter:{},excerpt:"",headers:[],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"filters/readme.md"};export{e as data}; diff --git a/assets/index.html.b7174baf.js b/assets/index.html.e3f9a88d.js similarity index 99% rename from assets/index.html.b7174baf.js rename to assets/index.html.e3f9a88d.js index eda9788b0..4bc744574 100644 --- a/assets/index.html.b7174baf.js +++ b/assets/index.html.e3f9a88d.js @@ -1,4 +1,4 @@ -import{_ as n,c as s}from"./app.5ecbe10d.js";const a={},e=s(`

Filters

Our GraphQL and REST endpoints sometimes offer you the possibility to filter, here is how this variable works:

No filter

{
+import{_ as n,c as s}from"./app.8a6a951d.js";const a={},e=s(`

Filters

Our GraphQL and REST endpoints sometimes offer you the possibility to filter, here is how this variable works:

No filter

{
   "filter": {}
 }
 

Simple filter

{
diff --git a/assets/index.html.36d5d764.js b/assets/index.html.e76bf8fa.js
similarity index 58%
rename from assets/index.html.36d5d764.js
rename to assets/index.html.e76bf8fa.js
index 68ccaf5e7..92594a3b8 100644
--- a/assets/index.html.36d5d764.js
+++ b/assets/index.html.e76bf8fa.js
@@ -1 +1 @@
-import{_ as e}from"./app.5ecbe10d.js";const _={};function r(n,t){return null}var f=e(_,[["render",r],["__file","index.html.vue"]]);export{f as default};
+import{_ as e}from"./app.8a6a951d.js";const _={};function r(n,t){return null}var f=e(_,[["render",r],["__file","index.html.vue"]]);export{f as default};
diff --git a/assets/index.html.f96fd055.js b/assets/index.html.eb55f510.js
similarity index 68%
rename from assets/index.html.f96fd055.js
rename to assets/index.html.eb55f510.js
index 71367887a..1ef21a996 100644
--- a/assets/index.html.f96fd055.js
+++ b/assets/index.html.eb55f510.js
@@ -1 +1 @@
-const e={key:"v-67d16688",path:"/plugins/",title:"Plugins",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Create a plugin",slug:"create-a-plugin",children:[]},{level:2,title:"Add your plugin to whispr",slug:"add-your-plugin-to-whispr",children:[]},{level:2,title:"Make your plugin register listeners",slug:"make-your-plugin-register-listeners",children:[]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"plugins/readme.md"};export{e as data};
+const e={key:"v-67d16688",path:"/plugins/",title:"Plugins",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Create a plugin",slug:"create-a-plugin",children:[]},{level:2,title:"Add your plugin to whispr",slug:"add-your-plugin-to-whispr",children:[]},{level:2,title:"Make your plugin register listeners",slug:"make-your-plugin-register-listeners",children:[]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"plugins/readme.md"};export{e as data};
diff --git a/assets/index.html.8e69699d.js b/assets/index.html.f4d6a88a.js
similarity index 68%
rename from assets/index.html.8e69699d.js
rename to assets/index.html.f4d6a88a.js
index 642bd0e81..556ccd43e 100644
--- a/assets/index.html.8e69699d.js
+++ b/assets/index.html.f4d6a88a.js
@@ -1 +1 @@
-const e={key:"v-712e14fc",path:"/introduction/",title:"Introduction",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Main features",slug:"main-features",children:[]},{level:2,title:"Example use cases for Whispr",slug:"example-use-cases-for-whispr",children:[{level:3,title:"Whispr in action",slug:"whispr-in-action",children:[]}]},{level:2,title:"Key components",slug:"key-components",children:[]},{level:2,title:"Roadmap",slug:"roadmap",children:[]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"introduction/readme.md"};export{e as data};
+const e={key:"v-712e14fc",path:"/introduction/",title:"Introduction",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Main features",slug:"main-features",children:[]},{level:2,title:"Example use cases for Whispr",slug:"example-use-cases-for-whispr",children:[{level:3,title:"Whispr in action",slug:"whispr-in-action",children:[]}]},{level:2,title:"Key components",slug:"key-components",children:[]},{level:2,title:"Roadmap",slug:"roadmap",children:[]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"introduction/readme.md"};export{e as data};
diff --git a/assets/indexing.html.4d3c69dc.js b/assets/indexing.html.34ce6a43.js
similarity index 60%
rename from assets/indexing.html.4d3c69dc.js
rename to assets/indexing.html.34ce6a43.js
index 872f33693..6a3672851 100644
--- a/assets/indexing.html.4d3c69dc.js
+++ b/assets/indexing.html.34ce6a43.js
@@ -1 +1 @@
-const e={key:"v-ecba32a0",path:"/indexing.html",title:"Indexing",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Default Index",slug:"default-index",children:[]},{level:2,title:"Custom Index",slug:"custom-index",children:[]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"indexing.md"};export{e as data};
+const e={key:"v-ecba32a0",path:"/indexing.html",title:"Indexing",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Default Index",slug:"default-index",children:[]},{level:2,title:"Custom Index",slug:"custom-index",children:[]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"indexing.md"};export{e as data};
diff --git a/assets/indexing.html.3fffe178.js b/assets/indexing.html.eec85503.js
similarity index 97%
rename from assets/indexing.html.3fffe178.js
rename to assets/indexing.html.eec85503.js
index cd7e6e870..67cb99c26 100644
--- a/assets/indexing.html.3fffe178.js
+++ b/assets/indexing.html.eec85503.js
@@ -1,4 +1,4 @@
-import{_ as n,c as e}from"./app.5ecbe10d.js";const a={},s=e(`

Indexing

Default Index

By default whispr creates a compound index on the fields applicationID and closed fields to provide a general improved performance by filtering on those field.

Custom Index

In case of that you have special filtering requirements, which costs a lot of performance it's recommended to create additional indexes. You have to do the following to create a new index

# Go to the whisps db with your mongo client
+import{_ as n,c as e}from"./app.8a6a951d.js";const a={},s=e(`

Indexing

Default Index

By default whispr creates a compound index on the fields applicationID and closed fields to provide a general improved performance by filtering on those field.

Custom Index

In case of that you have special filtering requirements, which costs a lot of performance it's recommended to create additional indexes. You have to do the following to create a new index

# Go to the whisps db with your mongo client
 use whisps
 
 # for creating a new index to a specific collection use db.collection.createIndex( <key and index type specification>, <options> )
diff --git a/assets/installation.html.34138921.js b/assets/installation.html.4a28379c.js
similarity index 86%
rename from assets/installation.html.34138921.js
rename to assets/installation.html.4a28379c.js
index 57183604f..919c9ec0e 100644
--- a/assets/installation.html.34138921.js
+++ b/assets/installation.html.4a28379c.js
@@ -1 +1 @@
-const e={key:"v-6ca815f4",path:"/installation.html",title:"Installation",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Setup with Docker",slug:"setup-with-docker",children:[{level:3,title:"Configuration",slug:"configuration",children:[]},{level:3,title:"Initialize the containers",slug:"initialize-the-containers",children:[]},{level:3,title:"Running the app",slug:"running-the-app",children:[]}]},{level:2,title:"Installation without Docker",slug:"installation-without-docker",children:[{level:3,title:"Install the whispr node application",slug:"install-the-whispr-node-application",children:[]},{level:3,title:"Install Redis:",slug:"install-redis",children:[]},{level:3,title:"Initialize MongoDB as a cluster:",slug:"initialize-mongodb-as-a-cluster",children:[]},{level:3,title:"Create a file named 'local.env' in the project root folder:",slug:"create-a-file-named-local-env-in-the-project-root-folder",children:[]},{level:3,title:"Setup a local AWS instance with localstack (optional)",slug:"setup-a-local-aws-instance-with-localstack-optional",children:[]},{level:3,title:"Running the app",slug:"running-the-app-1",children:[]}]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"installation.md"};export{e as data};
+const e={key:"v-6ca815f4",path:"/installation.html",title:"Installation",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Setup with Docker",slug:"setup-with-docker",children:[{level:3,title:"Configuration",slug:"configuration",children:[]},{level:3,title:"Initialize the containers",slug:"initialize-the-containers",children:[]},{level:3,title:"Running the app",slug:"running-the-app",children:[]}]},{level:2,title:"Installation without Docker",slug:"installation-without-docker",children:[{level:3,title:"Install the whispr node application",slug:"install-the-whispr-node-application",children:[]},{level:3,title:"Install Redis:",slug:"install-redis",children:[]},{level:3,title:"Initialize MongoDB as a cluster:",slug:"initialize-mongodb-as-a-cluster",children:[]},{level:3,title:"Create a file named 'local.env' in the project root folder:",slug:"create-a-file-named-local-env-in-the-project-root-folder",children:[]},{level:3,title:"Setup a local AWS instance with localstack (optional)",slug:"setup-a-local-aws-instance-with-localstack-optional",children:[]},{level:3,title:"Running the app",slug:"running-the-app-1",children:[]}]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"installation.md"};export{e as data};
diff --git a/assets/installation.html.b0b11bde.js b/assets/installation.html.e571fb72.js
similarity index 99%
rename from assets/installation.html.b0b11bde.js
rename to assets/installation.html.e571fb72.js
index be6745c1b..2805880a1 100644
--- a/assets/installation.html.b0b11bde.js
+++ b/assets/installation.html.e571fb72.js
@@ -1,4 +1,4 @@
-import{_ as n,c as s}from"./app.5ecbe10d.js";const a={},e=s(`

Installation

Setup with Docker

Requirements:

  • Have Docker installed

Configuration

Whispr is configured thanks to environment variables in docker-compose.yml. You can leave the default values for development.

Initialize the containers

Quickstart

$ docker-compose up
+import{_ as n,c as s}from"./app.8a6a951d.js";const a={},e=s(`

Installation

Setup with Docker

Requirements:

  • Have Docker installed

Configuration

Whispr is configured thanks to environment variables in docker-compose.yml. You can leave the default values for development.

Initialize the containers

Quickstart

$ docker-compose up
 

This spins up whispr, a mongoDB, redis and a localstack environment with an s3 instance.

Nothing to configure, easy to use

Quickstart for developers

Start mongoDB, redis and localstack environment dockers with an s3 instance and ports exposed to your development machine

$ docker-compose -f docker-compose.dev.yml up
 

Install node packages then run the project in watch mode

$ npm install
 $ npm run start:dev
diff --git a/assets/introduction.html.ba312668.js b/assets/introduction.html.39dbe1e9.js
similarity index 98%
rename from assets/introduction.html.ba312668.js
rename to assets/introduction.html.39dbe1e9.js
index 163da0d9a..cddc39a6d 100644
--- a/assets/introduction.html.ba312668.js
+++ b/assets/introduction.html.39dbe1e9.js
@@ -1,4 +1,4 @@
-import{_ as a,c as n}from"./app.5ecbe10d.js";const s={},t=n(`

Introduction

Whispr offers two APIs: GraphQL and REST. You are highly encouraged to use GraphQL API but in case you can't you still have the REST API available.

Input file

The payload you have to provide for both GraphQL and REST endpoints is described in the entityName.input.ts file.

Example:

import { Field } from '@nestjs/graphql';
+import{_ as a,c as n}from"./app.8a6a951d.js";const s={},t=n(`

Introduction

Whispr offers two APIs: GraphQL and REST. You are highly encouraged to use GraphQL API but in case you can't you still have the REST API available.

Input file

The payload you have to provide for both GraphQL and REST endpoints is described in the entityName.input.ts file.

Example:

import { Field } from '@nestjs/graphql';
 import { IsOptional, IsString } from 'class-validator';
 
 export class WhispInputType  {
diff --git a/assets/introduction.html.d7afc69b.js b/assets/introduction.html.fe6f67b7.js
similarity index 51%
rename from assets/introduction.html.d7afc69b.js
rename to assets/introduction.html.fe6f67b7.js
index ae84f138d..9ab7124e7 100644
--- a/assets/introduction.html.d7afc69b.js
+++ b/assets/introduction.html.fe6f67b7.js
@@ -1 +1 @@
-const t={key:"v-0e4a26f1",path:"/api/introduction.html",title:"Introduction",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Input file",slug:"input-file",children:[]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"api/introduction.md"};export{t as data};
+const t={key:"v-0e4a26f1",path:"/api/introduction.html",title:"Introduction",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Input file",slug:"input-file",children:[]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"api/introduction.md"};export{t as data};
diff --git a/assets/rest.html.739f3c71.js b/assets/rest.html.2e832547.js
similarity index 99%
rename from assets/rest.html.739f3c71.js
rename to assets/rest.html.2e832547.js
index 3f3194b8f..e26c41e5a 100644
--- a/assets/rest.html.739f3c71.js
+++ b/assets/rest.html.2e832547.js
@@ -1 +1 @@
-import{_ as a,r as d,o as h,a as n,b as e,d as o,w as i,F as c,c as s,e as t}from"./app.5ecbe10d.js";const u={},r=s('

REST API

TIP

The whispr REST API is very limited compared to the GrahQL API. We will gradually make some improvements but we strongly recommend trying out GraphQL first. It's very simple, and more powerful than REST. You'll love it, we promise!

Get all Whisps

  • Method: GET
  • Path: '/whisp'
  • Success: 200

Returns all the whisps.

Get a Whisp

  • Method: GET
  • Path: '/whisp/:whispId'
  • Success: 200
',7),_=t("Returns a whisp identified by its "),p=e("code",null,"_id",-1),g=e("h2",{id:"create-a-whisp",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#create-a-whisp","aria-hidden":"true"},"#"),t(" Create a Whisp")],-1),f=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"POST")]),e("li",null,"Path: '/whisp'"),e("li",null,[t("Success: "),e("code",null,"201")])],-1),w=t("Creates a new whisp from the "),b=e("code",null,"body",-1),m=t(". The available fields of the whisp entity are listed "),G=t("here"),T=e("h2",{id:"update-a-whisp",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#update-a-whisp","aria-hidden":"true"},"#"),t(" Update a Whisp")],-1),y=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"PATCH")]),e("li",null,[t("Path: '/whisp/"),e("strong",null,":whispId"),t("'")]),e("li",null,[t("Success: "),e("code",null,"204")])],-1),P=t("Updates the fields given in the "),k=e("code",null,"body",-1),v=t(" of a whisp identified by its "),S=e("code",null,"_id",-1),x=t(". The available fields of the whisp entity are listed "),E=t("here"),M=e("h2",{id:"replace-a-whisp",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#replace-a-whisp","aria-hidden":"true"},"#"),t(" Replace a Whisp")],-1),R=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"PUT")]),e("li",null,[t("Path: '/whisp/"),e("strong",null,":whispId"),t("'")]),e("li",null,[t("Success: "),e("code",null,"204")])],-1),I=t("Replaces a whisp given identified by its "),C=e("code",null,"_id",-1),W=t(" by a new whisp given in the "),D=e("code",null,"body",-1),L=t(" . The available fields of the whisp entity are listed "),U=t("here"),A=e("h2",{id:"delete-a-whisp",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#delete-a-whisp","aria-hidden":"true"},"#"),t(" Delete a Whisp")],-1),N=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"DELETE")]),e("li",null,[t("Path: '/whisp/"),e("strong",null,":whispId"),t("'")]),e("li",null,[t("Success: "),e("code",null,"204")])],-1),V=t("Deletes a whisp identified by its "),B=e("code",null,"_id",-1),O=s('

Get all TagGroups

  • Method: GET
  • Path: '/TagGroup'
  • Success: 200

Returns all the tagGroups.

Get a TagGroup

  • Method: GET
  • Path: '/TagGroup/:tagGroupId'
  • Success: 200
',5),F=t("Returns a tagGroup identified by its "),H=e("code",null,"_id",-1),Q=e("h2",{id:"create-a-taggroup",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#create-a-taggroup","aria-hidden":"true"},"#"),t(" Create a TagGroup")],-1),Y=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"POST")]),e("li",null,"Path: '/TagGroup'"),e("li",null,[t("Success: "),e("code",null,"201")])],-1),j=t("Creates a new tagGroup from the "),q=e("code",null,"body",-1),z=t(". The available fields of the tagGroup entity are listed "),J=t("here"),K=e("h2",{id:"update-a-taggroup",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#update-a-taggroup","aria-hidden":"true"},"#"),t(" Update a TagGroup")],-1),X=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"PATCH")]),e("li",null,[t("Path: '/TagGroup/"),e("strong",null,":tagGroupId"),t("'")]),e("li",null,[t("Success: "),e("code",null,"204")])],-1),Z=t("Updates the fields given in the "),$=e("code",null,"body",-1),ee=t(" of a tagGroup identified by its "),te=e("code",null,"_id",-1),le=t(". The available fields of the tagGroup entity are listed "),oe=t("here"),ie=e("h2",{id:"replace-a-taggroup",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#replace-a-taggroup","aria-hidden":"true"},"#"),t(" Replace a TagGroup")],-1),se=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"PUT")]),e("li",null,[t("Path: '/TagGroup/"),e("strong",null,":tagGroupId"),t("'")]),e("li",null,[t("Success: "),e("code",null,"204")])],-1),ae=t("Replaces a tagGroup given identified by its "),de=e("code",null,"_id",-1),he=t(" by a new tagGroup given in the "),ne=e("code",null,"body",-1),ce=t(" . The available fields of the tagGroup entity are listed "),ue=t("here"),re=e("h2",{id:"delete-a-taggroup",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#delete-a-taggroup","aria-hidden":"true"},"#"),t(" Delete a TagGroup")],-1),_e=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"DELETE")]),e("li",null,[t("Path: '/TagGroup/"),e("strong",null,":tagGroupId"),t("'")]),e("li",null,[t("Success: "),e("code",null,"204")])],-1),pe=t("Deletes a tagGroup identified by its "),ge=e("code",null,"_id",-1),fe=s('

Get all Webhooks

  • Method: GET
  • Path: '/webhook'
  • Success: 200

Returns all the webhooks.

Create a Webhook

  • Method: POST
  • Path: '/webhook'
  • Success: 201
',5),we=t("Creates a new webhook from the "),be=e("code",null,"body",-1),me=t(". The available fields of the webhook entity are listed "),Ge=t("here"),Te=e("h2",{id:"delete-a-webhook",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#delete-a-webhook","aria-hidden":"true"},"#"),t(" Delete a Webhook")],-1),ye=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"DELETE")]),e("li",null,[t("Path: '/webhook/"),e("strong",null,":id"),t("'")]),e("li",null,[t("Success: "),e("code",null,"204")])],-1),Pe=t("Deletes a webhook identified by its "),ke=e("code",null,"_id",-1);function ve(Se,xe){const l=d("RouterLink");return h(),n(c,null,[r,e("p",null,[_,o(l,{to:"/models/whisp.html#_id"},{default:i(()=>[p]),_:1})]),g,f,e("p",null,[w,b,m,o(l,{to:"/models/whisp.html"},{default:i(()=>[G]),_:1})]),T,y,e("p",null,[P,k,v,o(l,{to:"/models/whisp.html#_id"},{default:i(()=>[S]),_:1}),x,o(l,{to:"/models/whisp.html"},{default:i(()=>[E]),_:1})]),M,R,e("p",null,[I,o(l,{to:"/models/whisp.html#_id"},{default:i(()=>[C]),_:1}),W,D,L,o(l,{to:"/models/whisp.html"},{default:i(()=>[U]),_:1})]),A,N,e("p",null,[V,o(l,{to:"/models/whisp.html#_id"},{default:i(()=>[B]),_:1})]),O,e("p",null,[F,o(l,{to:"/models/tagGroup.html#_id"},{default:i(()=>[H]),_:1})]),Q,Y,e("p",null,[j,q,z,o(l,{to:"/models/tagGroup.html"},{default:i(()=>[J]),_:1})]),K,X,e("p",null,[Z,$,ee,o(l,{to:"/models/tagGroup.html#_id"},{default:i(()=>[te]),_:1}),le,o(l,{to:"/models/tagGroup.html"},{default:i(()=>[oe]),_:1})]),ie,se,e("p",null,[ae,o(l,{to:"/models/tagGroup.html#_id"},{default:i(()=>[de]),_:1}),he,ne,ce,o(l,{to:"/models/tagGroup.html"},{default:i(()=>[ue]),_:1})]),re,_e,e("p",null,[pe,o(l,{to:"/models/tagGroup.html#_id"},{default:i(()=>[ge]),_:1})]),fe,e("p",null,[we,be,me,o(l,{to:"/models/webhook.html"},{default:i(()=>[Ge]),_:1})]),Te,ye,e("p",null,[Pe,o(l,{to:"/models/webhook.html#_id"},{default:i(()=>[ke]),_:1})])],64)}var Me=a(u,[["render",ve],["__file","rest.html.vue"]]);export{Me as default}; +import{_ as a,r as d,o as h,a as n,b as e,d as o,w as i,F as c,c as s,e as t}from"./app.8a6a951d.js";const u={},r=s('

REST API

TIP

The whispr REST API is very limited compared to the GrahQL API. We will gradually make some improvements but we strongly recommend trying out GraphQL first. It's very simple, and more powerful than REST. You'll love it, we promise!

Get all Whisps

  • Method: GET
  • Path: '/whisp'
  • Success: 200

Returns all the whisps.

Get a Whisp

  • Method: GET
  • Path: '/whisp/:whispId'
  • Success: 200
',7),_=t("Returns a whisp identified by its "),p=e("code",null,"_id",-1),g=e("h2",{id:"create-a-whisp",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#create-a-whisp","aria-hidden":"true"},"#"),t(" Create a Whisp")],-1),f=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"POST")]),e("li",null,"Path: '/whisp'"),e("li",null,[t("Success: "),e("code",null,"201")])],-1),w=t("Creates a new whisp from the "),b=e("code",null,"body",-1),m=t(". The available fields of the whisp entity are listed "),G=t("here"),T=e("h2",{id:"update-a-whisp",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#update-a-whisp","aria-hidden":"true"},"#"),t(" Update a Whisp")],-1),y=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"PATCH")]),e("li",null,[t("Path: '/whisp/"),e("strong",null,":whispId"),t("'")]),e("li",null,[t("Success: "),e("code",null,"204")])],-1),P=t("Updates the fields given in the "),k=e("code",null,"body",-1),v=t(" of a whisp identified by its "),S=e("code",null,"_id",-1),x=t(". The available fields of the whisp entity are listed "),E=t("here"),M=e("h2",{id:"replace-a-whisp",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#replace-a-whisp","aria-hidden":"true"},"#"),t(" Replace a Whisp")],-1),R=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"PUT")]),e("li",null,[t("Path: '/whisp/"),e("strong",null,":whispId"),t("'")]),e("li",null,[t("Success: "),e("code",null,"204")])],-1),I=t("Replaces a whisp given identified by its "),C=e("code",null,"_id",-1),W=t(" by a new whisp given in the "),D=e("code",null,"body",-1),L=t(" . The available fields of the whisp entity are listed "),U=t("here"),A=e("h2",{id:"delete-a-whisp",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#delete-a-whisp","aria-hidden":"true"},"#"),t(" Delete a Whisp")],-1),N=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"DELETE")]),e("li",null,[t("Path: '/whisp/"),e("strong",null,":whispId"),t("'")]),e("li",null,[t("Success: "),e("code",null,"204")])],-1),V=t("Deletes a whisp identified by its "),B=e("code",null,"_id",-1),O=s('

Get all TagGroups

  • Method: GET
  • Path: '/TagGroup'
  • Success: 200

Returns all the tagGroups.

Get a TagGroup

  • Method: GET
  • Path: '/TagGroup/:tagGroupId'
  • Success: 200
',5),F=t("Returns a tagGroup identified by its "),H=e("code",null,"_id",-1),Q=e("h2",{id:"create-a-taggroup",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#create-a-taggroup","aria-hidden":"true"},"#"),t(" Create a TagGroup")],-1),Y=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"POST")]),e("li",null,"Path: '/TagGroup'"),e("li",null,[t("Success: "),e("code",null,"201")])],-1),j=t("Creates a new tagGroup from the "),q=e("code",null,"body",-1),z=t(". The available fields of the tagGroup entity are listed "),J=t("here"),K=e("h2",{id:"update-a-taggroup",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#update-a-taggroup","aria-hidden":"true"},"#"),t(" Update a TagGroup")],-1),X=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"PATCH")]),e("li",null,[t("Path: '/TagGroup/"),e("strong",null,":tagGroupId"),t("'")]),e("li",null,[t("Success: "),e("code",null,"204")])],-1),Z=t("Updates the fields given in the "),$=e("code",null,"body",-1),ee=t(" of a tagGroup identified by its "),te=e("code",null,"_id",-1),le=t(". The available fields of the tagGroup entity are listed "),oe=t("here"),ie=e("h2",{id:"replace-a-taggroup",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#replace-a-taggroup","aria-hidden":"true"},"#"),t(" Replace a TagGroup")],-1),se=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"PUT")]),e("li",null,[t("Path: '/TagGroup/"),e("strong",null,":tagGroupId"),t("'")]),e("li",null,[t("Success: "),e("code",null,"204")])],-1),ae=t("Replaces a tagGroup given identified by its "),de=e("code",null,"_id",-1),he=t(" by a new tagGroup given in the "),ne=e("code",null,"body",-1),ce=t(" . The available fields of the tagGroup entity are listed "),ue=t("here"),re=e("h2",{id:"delete-a-taggroup",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#delete-a-taggroup","aria-hidden":"true"},"#"),t(" Delete a TagGroup")],-1),_e=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"DELETE")]),e("li",null,[t("Path: '/TagGroup/"),e("strong",null,":tagGroupId"),t("'")]),e("li",null,[t("Success: "),e("code",null,"204")])],-1),pe=t("Deletes a tagGroup identified by its "),ge=e("code",null,"_id",-1),fe=s('

Get all Webhooks

  • Method: GET
  • Path: '/webhook'
  • Success: 200

Returns all the webhooks.

Create a Webhook

  • Method: POST
  • Path: '/webhook'
  • Success: 201
',5),we=t("Creates a new webhook from the "),be=e("code",null,"body",-1),me=t(". The available fields of the webhook entity are listed "),Ge=t("here"),Te=e("h2",{id:"delete-a-webhook",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#delete-a-webhook","aria-hidden":"true"},"#"),t(" Delete a Webhook")],-1),ye=e("ul",null,[e("li",null,[t("Method: "),e("code",null,"DELETE")]),e("li",null,[t("Path: '/webhook/"),e("strong",null,":id"),t("'")]),e("li",null,[t("Success: "),e("code",null,"204")])],-1),Pe=t("Deletes a webhook identified by its "),ke=e("code",null,"_id",-1);function ve(Se,xe){const l=d("RouterLink");return h(),n(c,null,[r,e("p",null,[_,o(l,{to:"/models/whisp.html#_id"},{default:i(()=>[p]),_:1})]),g,f,e("p",null,[w,b,m,o(l,{to:"/models/whisp.html"},{default:i(()=>[G]),_:1})]),T,y,e("p",null,[P,k,v,o(l,{to:"/models/whisp.html#_id"},{default:i(()=>[S]),_:1}),x,o(l,{to:"/models/whisp.html"},{default:i(()=>[E]),_:1})]),M,R,e("p",null,[I,o(l,{to:"/models/whisp.html#_id"},{default:i(()=>[C]),_:1}),W,D,L,o(l,{to:"/models/whisp.html"},{default:i(()=>[U]),_:1})]),A,N,e("p",null,[V,o(l,{to:"/models/whisp.html#_id"},{default:i(()=>[B]),_:1})]),O,e("p",null,[F,o(l,{to:"/models/tagGroup.html#_id"},{default:i(()=>[H]),_:1})]),Q,Y,e("p",null,[j,q,z,o(l,{to:"/models/tagGroup.html"},{default:i(()=>[J]),_:1})]),K,X,e("p",null,[Z,$,ee,o(l,{to:"/models/tagGroup.html#_id"},{default:i(()=>[te]),_:1}),le,o(l,{to:"/models/tagGroup.html"},{default:i(()=>[oe]),_:1})]),ie,se,e("p",null,[ae,o(l,{to:"/models/tagGroup.html#_id"},{default:i(()=>[de]),_:1}),he,ne,ce,o(l,{to:"/models/tagGroup.html"},{default:i(()=>[ue]),_:1})]),re,_e,e("p",null,[pe,o(l,{to:"/models/tagGroup.html#_id"},{default:i(()=>[ge]),_:1})]),fe,e("p",null,[we,be,me,o(l,{to:"/models/webhook.html"},{default:i(()=>[Ge]),_:1})]),Te,ye,e("p",null,[Pe,o(l,{to:"/models/webhook.html#_id"},{default:i(()=>[ke]),_:1})])],64)}var Me=a(u,[["render",ve],["__file","rest.html.vue"]]);export{Me as default}; diff --git a/assets/rest.html.be236b2e.js b/assets/rest.html.ad3dc88e.js similarity index 86% rename from assets/rest.html.be236b2e.js rename to assets/rest.html.ad3dc88e.js index deb23de1c..e6d0570ee 100644 --- a/assets/rest.html.be236b2e.js +++ b/assets/rest.html.ad3dc88e.js @@ -1 +1 @@ -const e={key:"v-e9130d12",path:"/api/rest.html",title:"REST API",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Get all Whisps",slug:"get-all-whisps",children:[]},{level:2,title:"Get a Whisp",slug:"get-a-whisp",children:[]},{level:2,title:"Create a Whisp",slug:"create-a-whisp",children:[]},{level:2,title:"Update a Whisp",slug:"update-a-whisp",children:[]},{level:2,title:"Replace a Whisp",slug:"replace-a-whisp",children:[]},{level:2,title:"Delete a Whisp",slug:"delete-a-whisp",children:[]},{level:2,title:"Get all TagGroups",slug:"get-all-taggroups",children:[]},{level:2,title:"Get a TagGroup",slug:"get-a-taggroup",children:[]},{level:2,title:"Create a TagGroup",slug:"create-a-taggroup",children:[]},{level:2,title:"Update a TagGroup",slug:"update-a-taggroup",children:[]},{level:2,title:"Replace a TagGroup",slug:"replace-a-taggroup",children:[]},{level:2,title:"Delete a TagGroup",slug:"delete-a-taggroup",children:[]},{level:2,title:"Get all Webhooks",slug:"get-all-webhooks",children:[]},{level:2,title:"Create a Webhook",slug:"create-a-webhook",children:[]},{level:2,title:"Delete a Webhook",slug:"delete-a-webhook",children:[]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"api/rest.md"};export{e as data}; +const e={key:"v-e9130d12",path:"/api/rest.html",title:"REST API",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Get all Whisps",slug:"get-all-whisps",children:[]},{level:2,title:"Get a Whisp",slug:"get-a-whisp",children:[]},{level:2,title:"Create a Whisp",slug:"create-a-whisp",children:[]},{level:2,title:"Update a Whisp",slug:"update-a-whisp",children:[]},{level:2,title:"Replace a Whisp",slug:"replace-a-whisp",children:[]},{level:2,title:"Delete a Whisp",slug:"delete-a-whisp",children:[]},{level:2,title:"Get all TagGroups",slug:"get-all-taggroups",children:[]},{level:2,title:"Get a TagGroup",slug:"get-a-taggroup",children:[]},{level:2,title:"Create a TagGroup",slug:"create-a-taggroup",children:[]},{level:2,title:"Update a TagGroup",slug:"update-a-taggroup",children:[]},{level:2,title:"Replace a TagGroup",slug:"replace-a-taggroup",children:[]},{level:2,title:"Delete a TagGroup",slug:"delete-a-taggroup",children:[]},{level:2,title:"Get all Webhooks",slug:"get-all-webhooks",children:[]},{level:2,title:"Create a Webhook",slug:"create-a-webhook",children:[]},{level:2,title:"Delete a Webhook",slug:"delete-a-webhook",children:[]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"api/rest.md"};export{e as data}; diff --git a/assets/security.html.aad6b990.js b/assets/security.html.e5664eab.js similarity index 74% rename from assets/security.html.aad6b990.js rename to assets/security.html.e5664eab.js index 20d2e35b4..d8068c632 100644 --- a/assets/security.html.aad6b990.js +++ b/assets/security.html.e5664eab.js @@ -1 +1 @@ -const e={key:"v-27b6bb40",path:"/security.html",title:"Security",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Authentication",slug:"authentication",children:[{level:3,title:"Configuration",slug:"configuration",children:[]},{level:3,title:"passthrough (disable authentication)",slug:"passthrough-disable-authentication",children:[]},{level:3,title:"Examples",slug:"examples",children:[]},{level:3,title:"Secret passed through environment variable",slug:"secret-passed-through-environment-variable",children:[]}]},{level:2,title:"Authorisation",slug:"authorisation",children:[]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"security.md"};export{e as data}; +const e={key:"v-27b6bb40",path:"/security.html",title:"Security",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Authentication",slug:"authentication",children:[{level:3,title:"Configuration",slug:"configuration",children:[]},{level:3,title:"passthrough (disable authentication)",slug:"passthrough-disable-authentication",children:[]},{level:3,title:"Examples",slug:"examples",children:[]},{level:3,title:"Secret passed through environment variable",slug:"secret-passed-through-environment-variable",children:[]}]},{level:2,title:"Authorisation",slug:"authorisation",children:[]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"security.md"};export{e as data}; diff --git a/assets/security.html.4163ce3b.js b/assets/security.html.fde1aaab.js similarity index 99% rename from assets/security.html.4163ce3b.js rename to assets/security.html.fde1aaab.js index 9c4c22024..683c95490 100644 --- a/assets/security.html.4163ce3b.js +++ b/assets/security.html.fde1aaab.js @@ -1,4 +1,4 @@ -import{_ as n,c as s}from"./app.5ecbe10d.js";const a={},t=s(`

Security

Authentication

Whispr supports authentication via JWT, and can be configured to authenticate against mutliple configurations (mutliple issuers, multiple secrets).

Configuration

Security is implemented via an extended version of passport-jwt which allows an array of configurations to be passed on startup.

To configure, set the AUTH_CONFIG_SECRET

_ Note that even though the AUTH_CONFIG_SECRET is not necessarily a secret (in the case of config with JWKS providers), this environment variable is named _SECRET to ensure that it is hidden by APM tools in case it contains secret keys. _

The provided configuration is very similar to the NestJS passport-jwt example with a few modifications:

  • it must be provided as a JSON string containing a config property which is an array of valid passport-jwt configurations
  • the jwtFromRequest function which tells passport-jwt where to find the JWT in the request (usually the Authorization header) function must be deconstructed into an object containing funcName and args properties
  • passportJwtSecret function should not be written in the configuration file, only the arguments are required in the passportJwtSecret object

passthrough (disable authentication)

For debug purpose or deployability (feature flag). Authentication can be disable by providing to passport-multi-jwt a "passthrough":true to a given configuration

Examples

This is an example for multiple passport JWT configurations as they would be configured in Javascript.

[{
+import{_ as n,c as s}from"./app.8a6a951d.js";const a={},t=s(`

Security

Authentication

Whispr supports authentication via JWT, and can be configured to authenticate against mutliple configurations (mutliple issuers, multiple secrets).

Configuration

Security is implemented via an extended version of passport-jwt which allows an array of configurations to be passed on startup.

To configure, set the AUTH_CONFIG_SECRET

_ Note that even though the AUTH_CONFIG_SECRET is not necessarily a secret (in the case of config with JWKS providers), this environment variable is named _SECRET to ensure that it is hidden by APM tools in case it contains secret keys. _

The provided configuration is very similar to the NestJS passport-jwt example with a few modifications:

  • it must be provided as a JSON string containing a config property which is an array of valid passport-jwt configurations
  • the jwtFromRequest function which tells passport-jwt where to find the JWT in the request (usually the Authorization header) function must be deconstructed into an object containing funcName and args properties
  • passportJwtSecret function should not be written in the configuration file, only the arguments are required in the passportJwtSecret object

passthrough (disable authentication)

For debug purpose or deployability (feature flag). Authentication can be disable by providing to passport-multi-jwt a "passthrough":true to a given configuration

Examples

This is an example for multiple passport JWT configurations as they would be configured in Javascript.

[{
     secretOrKeyProvider: passportJwtSecret({
         cache: true,
         rateLimit: true,
diff --git a/assets/tagGroup.html.1c5de81c.js b/assets/tagGroup.html.4d9ca480.js
similarity index 67%
rename from assets/tagGroup.html.1c5de81c.js
rename to assets/tagGroup.html.4d9ca480.js
index 47333add0..753f06744 100644
--- a/assets/tagGroup.html.1c5de81c.js
+++ b/assets/tagGroup.html.4d9ca480.js
@@ -1 +1 @@
-const e={key:"v-66de8e88",path:"/models/tagGroup.html",title:"TagGroup",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"_id",slug:"id",children:[]},{level:2,title:"title",slug:"title",children:[]},{level:2,title:"metalevel",slug:"metalevel",children:[]},{level:2,title:"applicationID",slug:"applicationid",children:[]},{level:2,title:"tags",slug:"tags",children:[]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"models/tagGroup.md"};export{e as data};
+const e={key:"v-66de8e88",path:"/models/tagGroup.html",title:"TagGroup",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"_id",slug:"id",children:[]},{level:2,title:"title",slug:"title",children:[]},{level:2,title:"metalevel",slug:"metalevel",children:[]},{level:2,title:"applicationID",slug:"applicationid",children:[]},{level:2,title:"tags",slug:"tags",children:[]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"models/tagGroup.md"};export{e as data};
diff --git a/assets/tagGroup.html.e778dcd4.js b/assets/tagGroup.html.603bed20.js
similarity index 94%
rename from assets/tagGroup.html.e778dcd4.js
rename to assets/tagGroup.html.603bed20.js
index da373ee6f..5f73fd232 100644
--- a/assets/tagGroup.html.e778dcd4.js
+++ b/assets/tagGroup.html.603bed20.js
@@ -1 +1 @@
-import{_ as e,c as a}from"./app.5ecbe10d.js";const i={},r=a('

TagGroup

These are the available fields for the TagGroup entity.

_id

Type: ID!

Description: Autogenerated scalar identifier

title

Type: String

Description:

metalevel

Type: String

Description:

applicationID

Type: String

Description:

tags

Type: [String]

Description:

',17);function t(p,d){return r}var n=e(i,[["render",t],["__file","tagGroup.html.vue"]]);export{n as default}; +import{_ as e,c as a}from"./app.8a6a951d.js";const i={},r=a('

TagGroup

These are the available fields for the TagGroup entity.

_id

Type: ID!

Description: Autogenerated scalar identifier

title

Type: String

Description:

metalevel

Type: String

Description:

applicationID

Type: String

Description:

tags

Type: [String]

Description:

',17);function t(p,d){return r}var n=e(i,[["render",t],["__file","tagGroup.html.vue"]]);export{n as default}; diff --git a/assets/testing.html.a1ea7c68.js b/assets/testing.html.4e6a8105.js similarity index 73% rename from assets/testing.html.a1ea7c68.js rename to assets/testing.html.4e6a8105.js index 66aff256b..02095d6fd 100644 --- a/assets/testing.html.a1ea7c68.js +++ b/assets/testing.html.4e6a8105.js @@ -1 +1 @@ -const e={key:"v-53401e42",path:"/testing.html",title:"Testing",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Unit Tests",slug:"unit-tests",children:[]},{level:2,title:"Integration Tests",slug:"integration-tests",children:[]},{level:2,title:"End to End Tests",slug:"end-to-end-tests",children:[]},{level:2,title:"Debugging tests",slug:"debugging-tests",children:[]},{level:2,title:"Load testing",slug:"load-testing",children:[{level:3,title:"Execution in CI",slug:"execution-in-ci",children:[]}]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"testing.md"};export{e as data}; +const e={key:"v-53401e42",path:"/testing.html",title:"Testing",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Unit Tests",slug:"unit-tests",children:[]},{level:2,title:"Integration Tests",slug:"integration-tests",children:[]},{level:2,title:"End to End Tests",slug:"end-to-end-tests",children:[]},{level:2,title:"Debugging tests",slug:"debugging-tests",children:[]},{level:2,title:"Load testing",slug:"load-testing",children:[{level:3,title:"Execution in CI",slug:"execution-in-ci",children:[]}]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"testing.md"};export{e as data}; diff --git a/assets/testing.html.1dec99be.js b/assets/testing.html.7d02923d.js similarity index 98% rename from assets/testing.html.1dec99be.js rename to assets/testing.html.7d02923d.js index e50a012fc..4529c3058 100644 --- a/assets/testing.html.1dec99be.js +++ b/assets/testing.html.7d02923d.js @@ -1,4 +1,4 @@ -import{_ as e,c as t}from"./app.5ecbe10d.js";const n={},s=t(`

Testing

# unit tests
+import{_ as e,c as t}from"./app.8a6a951d.js";const n={},s=t(`

Testing

# unit tests
 $ npm run test
 
 # e2e tests
diff --git a/assets/webhook.html.c607cfa9.js b/assets/webhook.html.2f61f3f8.js
similarity index 64%
rename from assets/webhook.html.c607cfa9.js
rename to assets/webhook.html.2f61f3f8.js
index e7ab23857..ad4c2c5ba 100644
--- a/assets/webhook.html.c607cfa9.js
+++ b/assets/webhook.html.2f61f3f8.js
@@ -1 +1 @@
-const e={key:"v-581890ae",path:"/models/webhook.html",title:"Webhook",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"_id",slug:"id",children:[]},{level:2,title:"url",slug:"url",children:[]},{level:2,title:"events",slug:"events",children:[]},{level:2,title:"filter",slug:"filter",children:[]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"models/webhook.md"};export{e as data};
+const e={key:"v-581890ae",path:"/models/webhook.html",title:"Webhook",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"_id",slug:"id",children:[]},{level:2,title:"url",slug:"url",children:[]},{level:2,title:"events",slug:"events",children:[]},{level:2,title:"filter",slug:"filter",children:[]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"models/webhook.md"};export{e as data};
diff --git a/assets/webhook.html.13de0cdb.js b/assets/webhook.html.94278a7f.js
similarity index 92%
rename from assets/webhook.html.13de0cdb.js
rename to assets/webhook.html.94278a7f.js
index 0f8444469..a02d4de51 100644
--- a/assets/webhook.html.13de0cdb.js
+++ b/assets/webhook.html.94278a7f.js
@@ -1 +1 @@
-import{_ as e,c as a}from"./app.5ecbe10d.js";const r={},t=a('

Webhook

These are the available fields for the Webhook entity.

_id

Type: ID!

Description: Autogenerated scalar identifier

url

Type: String

events

Type: [String]

filter

Type: JSONObject

',11);function h(i,d){return t}var o=e(r,[["render",h],["__file","webhook.html.vue"]]);export{o as default}; +import{_ as e,c as a}from"./app.8a6a951d.js";const r={},t=a('

Webhook

These are the available fields for the Webhook entity.

_id

Type: ID!

Description: Autogenerated scalar identifier

url

Type: String

events

Type: [String]

filter

Type: JSONObject

',11);function h(i,d){return t}var o=e(r,[["render",h],["__file","webhook.html.vue"]]);export{o as default}; diff --git a/assets/whisp.html.95fe4ff9.js b/assets/whisp.html.0c91ea87.js similarity index 87% rename from assets/whisp.html.95fe4ff9.js rename to assets/whisp.html.0c91ea87.js index 182f04f60..075767a25 100644 --- a/assets/whisp.html.95fe4ff9.js +++ b/assets/whisp.html.0c91ea87.js @@ -1 +1 @@ -const e={key:"v-4b2698d0",path:"/models/whisp.html",title:"Whisp",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"_id",slug:"id",children:[]},{level:2,title:"readableID",slug:"readableid",children:[]},{level:2,title:"type",slug:"type",children:[]},{level:2,title:"severity",slug:"severity",children:[]},{level:2,title:"description",slug:"description",children:[]},{level:2,title:"closed",slug:"closed",children:[]},{level:2,title:"applicationID",slug:"applicationid",children:[]},{level:2,title:"plantID",slug:"plantid",children:[]},{level:2,title:"locationID",slug:"locationid",children:[]},{level:2,title:"manual",slug:"manual",children:[]},{level:2,title:"openedBy",slug:"openedby",children:[]},{level:2,title:"openedById",slug:"openedbyid",children:[]},{level:2,title:"closedBy",slug:"closedby",children:[]},{level:2,title:"closedById",slug:"closedbyid",children:[]},{level:2,title:"timestamp",slug:"timestamp",children:[]},{level:2,title:"updated",slug:"updated",children:[]},{level:2,title:"timeToLive / timeToLiveSec",slug:"timetolive-timetolivesec",children:[]},{level:2,title:"expirationDate",slug:"expirationdate",children:[]},{level:2,title:"data",slug:"data",children:[]}],git:{updatedTime:1668438832e3,contributors:[{name:"semantic-release-bot",email:"semantic-release-bot@martynus.net",commits:1}]},filePathRelative:"models/whisp.md"};export{e as data}; +const e={key:"v-4b2698d0",path:"/models/whisp.html",title:"Whisp",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"_id",slug:"id",children:[]},{level:2,title:"readableID",slug:"readableid",children:[]},{level:2,title:"type",slug:"type",children:[]},{level:2,title:"severity",slug:"severity",children:[]},{level:2,title:"description",slug:"description",children:[]},{level:2,title:"closed",slug:"closed",children:[]},{level:2,title:"applicationID",slug:"applicationid",children:[]},{level:2,title:"plantID",slug:"plantid",children:[]},{level:2,title:"locationID",slug:"locationid",children:[]},{level:2,title:"manual",slug:"manual",children:[]},{level:2,title:"openedBy",slug:"openedby",children:[]},{level:2,title:"openedById",slug:"openedbyid",children:[]},{level:2,title:"closedBy",slug:"closedby",children:[]},{level:2,title:"closedById",slug:"closedbyid",children:[]},{level:2,title:"timestamp",slug:"timestamp",children:[]},{level:2,title:"updated",slug:"updated",children:[]},{level:2,title:"timeToLive / timeToLiveSec",slug:"timetolive-timetolivesec",children:[]},{level:2,title:"expirationDate",slug:"expirationdate",children:[]},{level:2,title:"data",slug:"data",children:[]}],git:{updatedTime:1708701022e3,contributors:[{name:"sairam charan",email:"mohanvenkat459@gmail.com",commits:1}]},filePathRelative:"models/whisp.md"};export{e as data}; diff --git a/assets/whisp.html.14c0a404.js b/assets/whisp.html.835ac122.js similarity index 98% rename from assets/whisp.html.14c0a404.js rename to assets/whisp.html.835ac122.js index 2964c59ef..c6233a9ed 100644 --- a/assets/whisp.html.14c0a404.js +++ b/assets/whisp.html.835ac122.js @@ -1 +1 @@ -import{_ as e,c as i}from"./app.5ecbe10d.js";const a={},t=i('

Whisp

These are the available fields for the Whisp entity.

_id

Type: ID!

Description: Autogenerated scalar identifier

readableID

Type: String

Description: Auto generated (counter based) id you can use for filtering

type

Type: String

Description: To distinguiss between your whisp

severity

Type: Int

Description: Priority level lower number is higher priority

description

Type: String

Description: General decription

closed

Type: Boolean

Description: Does the action required by this whisp is done and closed

applicationID

Type: String

Description: Id of the client application that sent this whisp

plantID

Type: String

Description: Id of the Plan or factory of the subject this whisp has been created for

locationID

Type: String

Description: Locate the spacial position of the subject this whisp has been created for

manual

Type: Boolean

Description: Does this whisp has been created manually by human and not by an automated process

openedBy

Type: String

Description: Friendly name of the creator of this whisp

openedById

Type: String

Description: Id of the creator of this whisp

closedBy

Type: String

Description: Friendly name of the person who close or resolve this whisp

closedById

Type: String

Description: Id of the person who close or resolve this whisp

timestamp

Type: String

Description: Time and date when this whisp has been created in the source system. If not provided, a value is created once the whisp created in whispr server.

updated

Type: String

Description: Data and time of the last time the whisp as been changed or been created.

timeToLive / timeToLiveSec

Type: String / Number

Description: TimeToLive is the input string that is used to define the TTL. Smart format (using parse-duration library) can be used : e.g 1m, 1hour, 1h10sec, 10hour -1min . timeToLiveSec is the stored number of second after which this whisp will be delete automatically since its creation. Defining timeToLive automatically set the expirationDate field accordingly

expirationDate

Type: Date

Description: The date after which the whisp will be deleted automatically. defining expirationDate direclty clear the timeToLiveSec field

data

Type: JSONObject

Description: An object containing the details of the whisp specific to the application

',59);function r(h,d){return t}var p=e(a,[["render",r],["__file","whisp.html.vue"]]);export{p as default}; +import{_ as e,c as i}from"./app.8a6a951d.js";const a={},t=i('

Whisp

These are the available fields for the Whisp entity.

_id

Type: ID!

Description: Autogenerated scalar identifier

readableID

Type: String

Description: Auto generated (counter based) id you can use for filtering

type

Type: String

Description: To distinguiss between your whisp

severity

Type: Int

Description: Priority level lower number is higher priority

description

Type: String

Description: General decription

closed

Type: Boolean

Description: Does the action required by this whisp is done and closed

applicationID

Type: String

Description: Id of the client application that sent this whisp

plantID

Type: String

Description: Id of the Plan or factory of the subject this whisp has been created for

locationID

Type: String

Description: Locate the spacial position of the subject this whisp has been created for

manual

Type: Boolean

Description: Does this whisp has been created manually by human and not by an automated process

openedBy

Type: String

Description: Friendly name of the creator of this whisp

openedById

Type: String

Description: Id of the creator of this whisp

closedBy

Type: String

Description: Friendly name of the person who close or resolve this whisp

closedById

Type: String

Description: Id of the person who close or resolve this whisp

timestamp

Type: String

Description: Time and date when this whisp has been created in the source system. If not provided, a value is created once the whisp created in whispr server.

updated

Type: String

Description: Data and time of the last time the whisp as been changed or been created.

timeToLive / timeToLiveSec

Type: String / Number

Description: TimeToLive is the input string that is used to define the TTL. Smart format (using parse-duration library) can be used : e.g 1m, 1hour, 1h10sec, 10hour -1min . timeToLiveSec is the stored number of second after which this whisp will be delete automatically since its creation. Defining timeToLive automatically set the expirationDate field accordingly

expirationDate

Type: Date

Description: The date after which the whisp will be deleted automatically. defining expirationDate direclty clear the timeToLiveSec field

data

Type: JSONObject

Description: An object containing the details of the whisp specific to the application

',59);function r(h,d){return t}var p=e(a,[["render",r],["__file","whisp.html.vue"]]);export{p as default}; diff --git a/contributing/building.html b/contributing/building.html index 45d6abae7..8412fd879 100644 --- a/contributing/building.html +++ b/contributing/building.html @@ -23,11 +23,11 @@ } Building | whispr - + - - + + diff --git a/contributing/community.html b/contributing/community.html index d32f18d35..6ca20a1e8 100644 --- a/contributing/community.html +++ b/contributing/community.html @@ -23,11 +23,11 @@ } Community | whispr - + - - + + diff --git a/contributing/credits.html b/contributing/credits.html index 0f9e51f16..efd521d7d 100644 --- a/contributing/credits.html +++ b/contributing/credits.html @@ -23,11 +23,11 @@ } Credits | whispr - + - - + + diff --git a/contributing/guidelines.html b/contributing/guidelines.html index 3339d3ff5..6a30109ba 100644 --- a/contributing/guidelines.html +++ b/contributing/guidelines.html @@ -23,11 +23,11 @@ } Guidelines | whispr - + - - + + diff --git a/events/index.html b/events/index.html index 937cd618c..bd4f46354 100644 --- a/events/index.html +++ b/events/index.html @@ -23,7 +23,7 @@ } Event system | whispr - + @@ -31,7 +31,7 @@ name: "WHISP_CREATED", payload: WhispEntity } -

Event list: All the events are registered in the EventNames enum in the event.entity.ts file.

Event Listeners

Webhooks and plugins can register event listeners.

Schema

Event system

Last Updated:
Contributors: semantic-release-bot
- +

Event list: All the events are registered in the EventNames enum in the event.entity.ts file.

Event Listeners

Webhooks and plugins can register event listeners.

Schema

Event system

Last Updated:
Contributors: sairam charan
+ diff --git a/fileupload.html b/fileupload.html index 77099a4b8..b80a0b4fe 100644 --- a/fileupload.html +++ b/fileupload.html @@ -23,7 +23,7 @@ } File Upload | whispr - + @@ -71,7 +71,7 @@ "file": "<S3-Key>" }] } -

To get the Binary of your file, send a GET-Request to <whispr-url>/file/<S3-Key>.

Last Updated:
Contributors: semantic-release-bot
- +

To get the Binary of your file, send a GET-Request to <whispr-url>/file/<S3-Key>.

Last Updated:
Contributors: sairam charan
+ diff --git a/filters/index.html b/filters/index.html index 0b75f41ee..42007b7d8 100644 --- a/filters/index.html +++ b/filters/index.html @@ -23,7 +23,7 @@ } Filters | whispr - + @@ -56,7 +56,7 @@

Additional filtering functionality

Additionally some endpoints offer you the possibility to use all mongo filtering options. This is specified in the endpoint documentation.

For example, to match all values that are not equal to a specified value, you can do:

{
   "filter": { "att1": { "$ne": "value1" } }
 }
-
Last Updated:
Contributors: semantic-release-bot
- +
Last Updated:
Contributors: sairam charan
+ diff --git a/index.html b/index.html index d131e82b2..ebc70c26c 100644 --- a/index.html +++ b/index.html @@ -23,11 +23,11 @@ } whispr - +
hero

Simple, pluggable, open source event, comment and alert pub sub microservice

Get Started →

Easy pub sub

Easily implement whispr and integrate into your projects as a pub sub solution for event type data.

UI library

Get started quickly with some simple UI components to add cool whispr integrations to your app, or build from them as samples.

Progressive

An open, extendable platform built using a modern, progressive tech stack using Nest.js, GraphQL.

- + diff --git a/indexing.html b/indexing.html index e13e3d825..15cde31b0 100644 --- a/indexing.html +++ b/indexing.html @@ -23,7 +23,7 @@ } Indexing | whispr - + @@ -36,7 +36,7 @@ # compound index db.whisps.createIndex({"applicationID": 1, "closed": -1}) -
Last Updated:
Contributors: semantic-release-bot
- +
Last Updated:
Contributors: sairam charan
+ diff --git a/installation.html b/installation.html index cdef967a6..ffd0a9e8d 100644 --- a/installation.html +++ b/installation.html @@ -23,7 +23,7 @@ } Installation | whispr - + @@ -114,7 +114,7 @@ # production mode $ npm run start:prod -
Last Updated:
Contributors: semantic-release-bot
- +
Last Updated:
Contributors: sairam charan
+ diff --git a/introduction/index.html b/introduction/index.html index 65b9a1499..0c5702906 100644 --- a/introduction/index.html +++ b/introduction/index.html @@ -23,11 +23,11 @@ } Introduction | whispr - + -

Introduction

Whispr is an open source event, comment and alert processing hub created by Sanofi IADC. We created it to meet our need for a centralised comment and alerting service which could be easily integrated into our tech stack.

In Whispr each event object is called a whisp. A whisp is classified with a severity level from info to critical, can have tags to further classify it, and has a generic data object which stores the detail of the whisp. As an example, a comment within an application could be a whisp of severity level info, with the comment text in the data object.

Using Whispr we’ve implemented a messaging service for users to communicate between our apps, and a business process status pub/sub alerting solution - any system can send an alert to Whispr, and susbscribing applications and users are automatically notified to display the alert and take action.

Main features

  • GraphQL and REST API for whisp creation
  • Whisp classification through severity types
  • Filtering using any of the base elements of a whisp
  • Tag management system for whisp classification
  • Subscriptions through GraphQL with Websockets (more subscription types coming up very soon in our roadmap)

Example use cases for Whispr

  • Equipment status sharing (alerting) from IoT equipment
  • Lightweight comment feed (messaging) solutions
  • Machine learning on a central hub of data to identify data trends (common root causes for alerts, alert patterns)

Whispr in action

Chat application with whispr animated gif

Demonstration of using whispr as a comment system. Each comment is a whisp with severity info, and tags are also defined as a separate object type in whispr. All user interface components you see are available for use in the whispr UI library.

Key components

Whispr consists of the following main elements:

  • Whispr core: providing an whisp pub/sub system - publishing systems can register whisps in Whispr core when they need to share the status with. Whispr core can be used by any application capable of communicating with GraphQL or REST APIs
  • Whispr UI: A front end component library for fast implementation of some common use cases within your Vue.js or React based web application.

Roadmap

  • We have big plans for Whispr, here are a few of the key items Plugin system
  • Advanced filtering
  • Whisp schema registration and validation
Last Updated:
Contributors: semantic-release-bot
- +

Introduction

Whispr is an open source event, comment and alert processing hub created by Sanofi IADC. We created it to meet our need for a centralised comment and alerting service which could be easily integrated into our tech stack.

In Whispr each event object is called a whisp. A whisp is classified with a severity level from info to critical, can have tags to further classify it, and has a generic data object which stores the detail of the whisp. As an example, a comment within an application could be a whisp of severity level info, with the comment text in the data object.

Using Whispr we’ve implemented a messaging service for users to communicate between our apps, and a business process status pub/sub alerting solution - any system can send an alert to Whispr, and susbscribing applications and users are automatically notified to display the alert and take action.

Main features

  • GraphQL and REST API for whisp creation
  • Whisp classification through severity types
  • Filtering using any of the base elements of a whisp
  • Tag management system for whisp classification
  • Subscriptions through GraphQL with Websockets (more subscription types coming up very soon in our roadmap)

Example use cases for Whispr

  • Equipment status sharing (alerting) from IoT equipment
  • Lightweight comment feed (messaging) solutions
  • Machine learning on a central hub of data to identify data trends (common root causes for alerts, alert patterns)

Whispr in action

Chat application with whispr animated gif

Demonstration of using whispr as a comment system. Each comment is a whisp with severity info, and tags are also defined as a separate object type in whispr. All user interface components you see are available for use in the whispr UI library.

Key components

Whispr consists of the following main elements:

  • Whispr core: providing an whisp pub/sub system - publishing systems can register whisps in Whispr core when they need to share the status with. Whispr core can be used by any application capable of communicating with GraphQL or REST APIs
  • Whispr UI: A front end component library for fast implementation of some common use cases within your Vue.js or React based web application.

Roadmap

  • We have big plans for Whispr, here are a few of the key items Plugin system
  • Advanced filtering
  • Whisp schema registration and validation
Last Updated:
Contributors: sairam charan
+ diff --git a/models/tagGroup.html b/models/tagGroup.html index 232af204c..77744a98c 100644 --- a/models/tagGroup.html +++ b/models/tagGroup.html @@ -23,11 +23,11 @@ } TagGroup | whispr - + -

TagGroup

These are the available fields for the TagGroup entity.

_id

Type: ID!

Description: Autogenerated scalar identifier

title

Type: String

Description:

metalevel

Type: String

Description:

applicationID

Type: String

Description:

tags

Type: [String]

Description:

Last Updated:
Contributors: semantic-release-bot
- +

TagGroup

These are the available fields for the TagGroup entity.

_id

Type: ID!

Description: Autogenerated scalar identifier

title

Type: String

Description:

metalevel

Type: String

Description:

applicationID

Type: String

Description:

tags

Type: [String]

Description:

Last Updated:
Contributors: sairam charan
+ diff --git a/models/webhook.html b/models/webhook.html index dcdfd0528..70798ce8b 100644 --- a/models/webhook.html +++ b/models/webhook.html @@ -23,11 +23,11 @@ } Webhook | whispr - + -

Webhook

These are the available fields for the Webhook entity.

_id

Type: ID!

Description: Autogenerated scalar identifier

url

Type: String

events

Type: [String]

filter

Type: JSONObject

Last Updated:
Contributors: semantic-release-bot
- +

Webhook

These are the available fields for the Webhook entity.

_id

Type: ID!

Description: Autogenerated scalar identifier

url

Type: String

events

Type: [String]

filter

Type: JSONObject

Last Updated:
Contributors: sairam charan
+ diff --git a/models/whisp.html b/models/whisp.html index 102a3e8cf..3188cac53 100644 --- a/models/whisp.html +++ b/models/whisp.html @@ -23,11 +23,11 @@ } Whisp | whispr - + -

Whisp

These are the available fields for the Whisp entity.

_id

Type: ID!

Description: Autogenerated scalar identifier

readableID

Type: String

Description: Auto generated (counter based) id you can use for filtering

type

Type: String

Description: To distinguiss between your whisp

severity

Type: Int

Description: Priority level lower number is higher priority

description

Type: String

Description: General decription

closed

Type: Boolean

Description: Does the action required by this whisp is done and closed

applicationID

Type: String

Description: Id of the client application that sent this whisp

plantID

Type: String

Description: Id of the Plan or factory of the subject this whisp has been created for

locationID

Type: String

Description: Locate the spacial position of the subject this whisp has been created for

manual

Type: Boolean

Description: Does this whisp has been created manually by human and not by an automated process

openedBy

Type: String

Description: Friendly name of the creator of this whisp

openedById

Type: String

Description: Id of the creator of this whisp

closedBy

Type: String

Description: Friendly name of the person who close or resolve this whisp

closedById

Type: String

Description: Id of the person who close or resolve this whisp

timestamp

Type: String

Description: Time and date when this whisp has been created in the source system. If not provided, a value is created once the whisp created in whispr server.

updated

Type: String

Description: Data and time of the last time the whisp as been changed or been created.

timeToLive / timeToLiveSec

Type: String / Number

Description: TimeToLive is the input string that is used to define the TTL. Smart format (using parse-duration library) can be used : e.g 1m, 1hour, 1h10sec, 10hour -1min . timeToLiveSec is the stored number of second after which this whisp will be delete automatically since its creation. Defining timeToLive automatically set the expirationDate field accordingly

expirationDate

Type: Date

Description: The date after which the whisp will be deleted automatically. defining expirationDate direclty clear the timeToLiveSec field

data

Type: JSONObject

Description: An object containing the details of the whisp specific to the application

Last Updated:
Contributors: semantic-release-bot
- +

Whisp

These are the available fields for the Whisp entity.

_id

Type: ID!

Description: Autogenerated scalar identifier

readableID

Type: String

Description: Auto generated (counter based) id you can use for filtering

type

Type: String

Description: To distinguiss between your whisp

severity

Type: Int

Description: Priority level lower number is higher priority

description

Type: String

Description: General decription

closed

Type: Boolean

Description: Does the action required by this whisp is done and closed

applicationID

Type: String

Description: Id of the client application that sent this whisp

plantID

Type: String

Description: Id of the Plan or factory of the subject this whisp has been created for

locationID

Type: String

Description: Locate the spacial position of the subject this whisp has been created for

manual

Type: Boolean

Description: Does this whisp has been created manually by human and not by an automated process

openedBy

Type: String

Description: Friendly name of the creator of this whisp

openedById

Type: String

Description: Id of the creator of this whisp

closedBy

Type: String

Description: Friendly name of the person who close or resolve this whisp

closedById

Type: String

Description: Id of the person who close or resolve this whisp

timestamp

Type: String

Description: Time and date when this whisp has been created in the source system. If not provided, a value is created once the whisp created in whispr server.

updated

Type: String

Description: Data and time of the last time the whisp as been changed or been created.

timeToLive / timeToLiveSec

Type: String / Number

Description: TimeToLive is the input string that is used to define the TTL. Smart format (using parse-duration library) can be used : e.g 1m, 1hour, 1h10sec, 10hour -1min . timeToLiveSec is the stored number of second after which this whisp will be delete automatically since its creation. Defining timeToLive automatically set the expirationDate field accordingly

expirationDate

Type: Date

Description: The date after which the whisp will be deleted automatically. defining expirationDate direclty clear the timeToLiveSec field

data

Type: JSONObject

Description: An object containing the details of the whisp specific to the application

Last Updated:
Contributors: sairam charan
+ diff --git a/plugins/index.html b/plugins/index.html index 3ed08aecd..644ad6c88 100644 --- a/plugins/index.html +++ b/plugins/index.html @@ -23,7 +23,7 @@ } Plugins | whispr - + @@ -41,7 +41,7 @@ }, ... // other listeners ]; -
Last Updated:
Contributors: semantic-release-bot
- +
Last Updated:
Contributors: sairam charan
+ diff --git a/security.html b/security.html index e457ae883..64edef5c1 100644 --- a/security.html +++ b/security.html @@ -23,7 +23,7 @@ } Security | whispr - + @@ -75,7 +75,7 @@ "secretOrKey":"APPY_SECRET_KEY"} ] } -

Secret passed through environment variable

Good practice imposed to not store secret in version control managment system and retrieve it from an environment variable instead. Do so and setup the secretOrKeyFromEnv config property with the name of an environment variable of your choice and leave secretOrKey empty. secretOrKey will then be automatically filled with your environment variable's value.

Authorisation

No specific authorisation is currently implemented in Whispr - if you are authenticated it is assumed that you should have access to all data in Whispr.

Last Updated:
Contributors: semantic-release-bot
- +

Secret passed through environment variable

Good practice imposed to not store secret in version control managment system and retrieve it from an environment variable instead. Do so and setup the secretOrKeyFromEnv config property with the name of an environment variable of your choice and leave secretOrKey empty. secretOrKey will then be automatically filled with your environment variable's value.

Authorisation

No specific authorisation is currently implemented in Whispr - if you are authenticated it is assumed that you should have access to all data in Whispr.

Last Updated:
Contributors: sairam charan
+ diff --git a/testing.html b/testing.html index 6174b1a56..01401d248 100644 --- a/testing.html +++ b/testing.html @@ -23,7 +23,7 @@ } Testing | whispr - + @@ -37,7 +37,7 @@ $ npm run test:cov

Unit Tests

The unit test is a way of testing a unit , the smallest possible unit of code that can be logically isolated in a system. These units are tested to determine if there are any issues when the developer make the change in the code base. It should count for the majority of the tests we can have. Normally, only test one method each. Example : Whisp, Subscription To run the unit test locally :npm run test:unit:cov

Integration Tests

Integration tests which are tests designed to verify the integration of different parts of separate components of a software system together. To test some integration functionality with the database, we will use mongo in-memory database.

Example :Whisp service & MongoDb To run the integration test locally : npm run test:integration

End to End Tests

End-to-end tests which are tests that verify an application’s workflow of code base from beginning to end.This method basically aims to replicate real user scenarios so that the system can be validated for integration and data integrity. Example : Webhook, TagGroup, WhispSubscription To run the end to end test locally : npm run test:e2e

In order to run end to end tests you need mongo, redis and localstack to be up and running. In order to do that you up the dockers in docker-compose.dev.yml

docker-compose -f docker-compose.dev.yml up -d
 

Note : Be aware that it will create entities in the DB and in the S3 bucket. This could interfere with your local data.

Debugging tests

You can debug the tests in your IDE by running npm run test:debug or npm run test:e2e:debug and the launching Attach to Node process in the debugging tab in VSCode

Load testing

Load testing is implemented using https://k6.io/, and can be executed locally, on a remote server or directly within the CI pipeline. The current load tests are simple and can be considered experimental. PRs for more comprehensive load tests are welcome!

To run the tests, install K6: https://k6.io/docs/getting-started/installation/.

Then run the script:

k6 run tests/load/whisp-create.load.js
-

Execution in CI

Last Updated:
Contributors: semantic-release-bot
- +

Execution in CI

Last Updated:
Contributors: sairam charan
+ diff --git a/troubleshoot/index.html b/troubleshoot/index.html index 774f58062..2bfc14304 100644 --- a/troubleshoot/index.html +++ b/troubleshoot/index.html @@ -23,11 +23,11 @@ } Troubleshoot | whispr - + -

Troubleshoot

Header logging

Request http headers can be displayed in application logs. to Enable it pass DEBUG_HTTP_HEADERS=true as an environment variable to the application process

Not that "authorization" header will be hidden for security purpose.

Last Updated:
Contributors: semantic-release-bot
- +

Troubleshoot

Header logging

Request http headers can be displayed in application logs. to Enable it pass DEBUG_HTTP_HEADERS=true as an environment variable to the application process

Not that "authorization" header will be hidden for security purpose.

Last Updated:
Contributors: sairam charan
+ diff --git a/webhooks/index.html b/webhooks/index.html index 80389fa2b..83108d851 100644 --- a/webhooks/index.html +++ b/webhooks/index.html @@ -23,7 +23,7 @@ } Webhooks | whispr - + @@ -36,7 +36,7 @@ "eventName": "WHISP_CREATED", "content": whispEntity } -

Webhook proxy / CA

In order to use a proxy set the HTTP_PROXY or HTTPS_PROXY environment variables.

You can pass a custom CA_CERTIFICATE by setting the variable. It can contains the path to one or multiple certificates in the Docker File, separated by comma.

Last Updated:
Contributors: semantic-release-bot
- +

Webhook proxy / CA

In order to use a proxy set the HTTP_PROXY or HTTPS_PROXY environment variables.

You can pass a custom CA_CERTIFICATE by setting the variable. It can contains the path to one or multiple certificates in the Docker File, separated by comma.

Last Updated:
Contributors: sairam charan
+