1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPAlgoliaSearchBox.CR4y2Zr3.js","assets/chunks/framework._qMUHcxA.js"])))=>i.map(i=>d[i]); 2import{d as g,o as s,c as m,r as u,n as D,a as R,t as M,b as A,w as h,e as f,T as ge,_ as C,u as ye,i as Ke,f as Qe,g as be,h as T,j as r,k as c,l as G,m as de,p as P,q,s as Q,v as B,x as ae,y as ve,z as Ze,A as en,B as z,F as O,C as x,D as ke,E as se,G as k,H as F,I as $e,J as ie,K as W,L as re,M as nn,N as ce,O as on,P as we,Q as qe,R as le,S as tn,U as an,V as sn,W as Fe,X as Ae,Y as rn,Z as cn,$ as ln,a0 as pn,a1 as mn,a2 as dn,a3 as K,a4 as oe,a5 as Ee,a6 as un,a7 as hn,a8 as fn,a9 as Se,aa as gn}from"./framework._qMUHcxA.js";const yn=g({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(a){return(e,n)=>(s(),m("span",{class:D(["VPBadge",e.type])},[u(e.$slots,"default",{},()=>[R(M(e.text),1)])],2))}}),bn={key:0,class:"VPBackdrop"},vn=g({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(a){return(e,n)=>(s(),A(ge,{name:"fade"},{default:h(()=>[e.show?(s(),m("div",bn)):f("",!0)]),_:1}))}}),kn=C(vn,[["__scopeId","data-v-54a304ca"]]),j=ye;function wn(a,e){let n,o=!1;return()=>{n&&clearTimeout(n),o?n=setTimeout(a,e):(a(),(o=!0)&&setTimeout(()=>o=!1,e))}}function ue(a){return a.startsWith("/")?a:`/${a}`}function Ce(a){const{pathname:e,search:n,hash:o,protocol:t}=new URL(a,"http://a.com");if(Ke(a)||a.startsWith("#")||!t.startsWith("http")||!Qe(e))return a;const{site:l}=j(),i=e.endsWith("/")||e.endsWith(".html")?a:a.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,l.value.cleanUrls?"":".html")}${n}${o}`);return be(i)}function Z({correspondingLink:a=!1}={}){const{site:e,localeIndex:n,page:o,theme:t,hash:l}=j(),i=T(()=>{var d,v;return{label:(d=e.value.locales[n.value])==null?void 0:d.label,link:((v=e.value.locales[n.value])==null?void 0:v.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:T(()=>Object.entries(e.value.locales).flatMap(([d,v])=>i.value.label===v.label?[]:{text:v.label,link:An(v.link||(d==="root"?"/":`/${d}/`),t.value.i18nRouting!==!1&&a,o.value.relativePath.slice(i.value.link.length-1),!e.value.cleanUrls)+l.value})),currentLang:i}}function An(a,e,n,o){return e?a.replace(/\/$/,"")+ue(n.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,o?".html":"")):a}const Sn={class:"NotFound"},Cn={class:"code"},_n={class:"title"},Mn={class:"quote"},Tn={class:"action"},Pn=["href","aria-label"],jn=g({__name:"NotFound",setup(a){const{theme:e}=j(),{currentLang:n}=Z();return(o,t)=>{var l,i,p,d,v;return s(),m("div",Sn,[r("p",Cn,M(((l=c(e).notFound)==null?void 0:l.code)??"404"),1),r("h1",_n,M(((i=c(e).notFound)==null?void 0:i.title)??"PAGE NOT FOUND"),1),t[0]||(t[0]=r("div",{class:"divider"},null,-1)),r("blockquote",Mn,M(((p=c(e).notFound)==null?void 0:p.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),r("div",Tn,[r("a",{class:"link",href:c(be)(c(n).link),"aria-label":((d=c(e).notFound)==null?void 0:d.linkLabel)??"go to home"},M(((v=c(e).notFound)==null?void 0:v.linkText)??"Take me home"),9,Pn)])])}}}),On=C(jn,[["__scopeId","data-v-6ff51ddd"]]);function Be(a,e){if(Array.isArray(a))return ne(a);if(a==null)return[];e=ue(e);const n=Object.keys(a).sort((t,l)=>l.split("/").length-t.split("/").length).find(t=>e.startsWith(ue(t))),o=n?a[n]:[];return Array.isArray(o)?ne(o):ne(o.items,o.base)}function En(a){const e=[];let n=0;for(const o in a){const t=a[o];if(t.items){n=e.push(t);continue}e[n]||e.push({items:[]}),e[n].items.push(t)}return e}function In(a){const e=[];function n(o){for(const t of o)t.text&&t.link&&e.push({text:t.text,link:t.link,docFooterText:t.docFooterText}),t.items&&n(t.items)}return n(a),e}function he(a,e){return Array.isArray(e)?e.some(n=>he(a,n)):G(a,e.link)?!0:e.items?he(a,e.items):!1}function ne(a,e){return[...a].map(n=>{const o={...n},t=o.base||e;return t&&o.link&&(o.link=t+o.link),o.items&&(o.items=ne(o.items,t)),o})}function U(){const{frontmatter:a,page:e,theme:n}=j(),o=de("(min-width: 960px)"),t=P(!1),l=T(()=>{const E=n.value.sidebar,I=e.value.relativePath;return E?Be(E,I):[]}),i=P(l.value);q(l,(E,I)=>{JSON.stringify(E)!==JSON.stringify(I)&&(i.value=l.value)});const p=T(()=>a.value.sidebar!==!1&&i.value.length>0&&a.value.layout!=="home"),d=T(()=>v?a.value.aside==null?n.value.aside==="left":a.value.aside==="left":!1),v=T(()=>a.value.layout==="home"?!1:a.value.aside!=null?!!a.value.aside:n.value.aside!==!1),y=T(()=>p.value&&o.value),S=T(()=>p.value?En(i.value):[]);function b(){t.value=!0}function _(){t.value=!1}function w(){t.value?_():b()}return{isOpen:t,sidebar:i,sidebarGroups:S,hasSidebar:p,hasAside:v,leftAside:d,isSidebarEnabled:y,open:b,close:_,toggle:w}}function Rn(a,e){let n;Q(()=>{n=a.value?document.activeElement:void 0}),B(()=>{window.addEventListener("keyup",o)}),ae(()=>{window.removeEventListener("keyup",o)});function o(t){t.key==="Escape"&&a.value&&(e(),n==null||n.focus())}}function Dn(a){const{page:e,hash:n}=j(),o=P(!1),t=T(()=>a.value.collapsed!=null),l=T(()=>!!a.value.link),i=P(!1),p=()=>{i.value=G(e.value.relativePath,a.value.link)};q([e,a,n],p),B(p);const d=T(()=>i.value?!0:a.value.items?he(e.value.relativePath,a.value.items):!1),v=T(()=>!!(a.value.items&&a.value.items.length));Q(()=>{o.value=!!(t.value&&a.value.collapsed)}),ve(()=>{(i.value||d.value)&&(o.value=!1)});function y(){t.value&&(o.value=!o.value)}return{collapsed:o,collapsible:t,isLink:l,isActiveLink:i,hasActiveLink:d,hasChildren:v,toggle:y}}function xn(){const{hasSidebar:a}=U(),e=de("(min-width: 960px)"),n=de("(min-width: 1280px)");return{isAsideEnabled:T(()=>!n.value&&!e.value?!1:a.value?n.value:e.value)}}const Ln=/\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/,fe=[];function Ve(a){return typeof a.outline=="object"&&!Array.isArray(a.outline)&&a.outline.label||a.outlineTitle||"On this page"}function _e(a){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(n=>n.id&&n.hasChildNodes()).map(n=>{const o=Number(n.tagName[1]);return{element:n,title:Nn(n),link:"#"+n.id,level:o}});return $n(e,a)}function Nn(a){let e="";for(const n of a.childNodes)if(n.nodeType===1){if(Ln.test(n.className))continue;e+=n.textContent}else n.nodeType===3&&(e+=n.textContent);return e.trim()}function $n(a,e){if(e===!1)return[];const n=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[o,t]=typeof n=="number"?[n,n]:n==="deep"?[2,6]:n;return Bn(a,o,t)}function qn(a,e){const{isAsideEnabled:n}=xn(),o=wn(l,100);let t=null;B(()=>{requestAnimationFrame(l),window.addEventListener("scroll",o)}),Ze(()=>{i(location.hash)}),ae(()=>{window.removeEventListener("scroll",o)});function l(){if(!n.value)return;const p=window.scrollY,d=window.innerHeight,v=document.body.offsetHeight,y=Math.abs(p+d-v)<1,S=fe.map(({element:_,link:w})=>({link:w,top:Fn(_)})).filter(({top:_})=>!Number.isNaN(_)).sort((_,w)=>_.top-w.top);if(!S.length){i(null);return}if(p<1){i(null);return}if(y){i(S[S.length-1].link);return}let b=null;for(const{link:_,top:w}
2of S){if(w>p+en()+4)break;b=_}i(b)}function i(p){t&&t.classList.remove("active"),p==null?t=null:t=a.value.querySelector(`a[href="${decodeURIComponent(p)}"]`);const d=t;d?(d.classList.add("active"),e.value.style.top=d.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Fn(a){let e=0;for(;a!==document.body;){if(a===null)return NaN;e+=a.offsetTop,a=a.offsetParent}return e}function Bn(a,e,n){fe.length=0;const o=[],t=[];return a.forEach(l=>{const i={...l,children:[]};let p=t[t.length-1];for(;p&&p.level>=i.level;)t.pop(),p=t[t.length-1];if(i.element.classList.contains("ignore-header")||p&&"shouldIgnore"in p){t.push({level:i.level,shouldIgnore:!0});return}i.level>n||i.level<e||(fe.push({element:i.element,link:i.link}),p?p.children.push(i):o.push(i),t.push(i))}),o}const Vn=["href","title"],Hn=g({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(a){function e({target:n}){const o=n.href.split("#")[1],t=document.getElementById(decodeURIComponent(o));t==null||t.focus({preventScroll:!0})}return(n,o)=>{const t=z("VPDocOutlineItem",!0);return s(),m("ul",{class:D(["VPDocOutlineItem",n.root?"root":"nested"])},[(s(!0),m(O,null,x(n.headers,({children:l,link:i,title:p})=>(s(),m("li",null,[r("a",{class:"outline-link",href:i,onClick:e,title:p},M(p),9,Vn),l!=null&&l.length?(s(),A(t,{key:0,headers:l},null,8,["headers"])):f("",!0)]))),256))],2)}}}),He=C(Hn,[["__scopeId","data-v-53c99d69"]]),Un={class:"content"},Jn={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Wn=g({__name:"VPDocAsideOutline",setup(a){const{frontmatter:e,theme:n}=j(),o=ke([]);se(()=>{o.value=_e(e.value.outline??n.value.outline)});const t=P(),l=P();return qn(t,l),(i,p)=>(s(),m("nav",{"aria-labelledby":"doc-outline-aria-label",class:D(["VPDocAsideOutline",{"has-outline":o.value.length>0}]),ref_key:"container",ref:t},[r("div",Un,[r("div",{class:"outline-marker",ref_key:"marker",ref:l},null,512),r("div",Jn,M(c(Ve)(c(n))),1),k(He,{headers:o.value,root:!0},null,8,["headers"])])],2))}}),Gn=C(Wn,[["__scopeId","data-v-f610f197"]]),zn={class:"VPDocAsideCarbonAds"},Yn=g({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(a){const e=()=>null;return(n,o)=>(s(),m("div",zn,[k(c(e),{"carbon-ads":n.carbonAds},null,8,["carbon-ads"])]))}}),Xn={class:"VPDocAside"},Kn=g({__name:"VPDocAside",setup(a){const{theme:e}=j();return(n,o)=>(s(),m("div",Xn,[u(n.$slots,"aside-top",{},void 0,!0),u(n.$slots,"aside-outline-before",{},void 0,!0),k(Gn),u(n.$slots,"aside-outline-after",{},void 0,!0),o[0]||(o[0]=r("div",{class:"spacer"},null,-1)),u(n.$slots,"aside-ads-before",{},void 0,!0),c(e).carbonAds?(s(),A(Yn,{key:0,"carbon-ads":c(e).carbonAds},null,8,["carbon-ads"])):f("",!0),u(n.$slots,"aside-ads-after",{},void 0,!0),u(n.$slots,"aside-bottom",{},void 0,!0)]))}}),Qn=C(Kn,[["__scopeId","data-v-cb998dce"]]);function Zn(){const{theme:a,page:e}=j();return T(()=>{const{text:n="Edit this page",pattern:o=""}=a.value.editLink||{};let t;return typeof o=="function"?t=o(e.value):t=o.replace(/:path/g,e.value.filePath),{url:t,text:n}})}function eo(){const{page:a,theme:e,frontmatter:n}=j();return T(()=>{var v,y,S,b,_,w,E,I;const o=Be(e.value.sidebar,a.value.relativePath),t=In(o),l=no(t,N=>N.link.replace(/[?#].*$/,"")),i=l.findIndex(N=>G(a.value.relativePath,N.link)),p=((v=e.value.docFooter)==null?void 0:v.prev)===!1&&!n.value.prev||n.value.prev===!1,d=((y=e.value.docFooter)==null?void 0:y.next)===!1&&!n.value.next||n.value.next===!1;return{prev:p?void 0:{text:(typeof n.value.prev=="string"?n.value.prev:typeof n.value.prev=="object"?n.value.prev.text:void 0)??((S=l[i-1])==null?void 0:S.docFooterText)??((b=l[i-1])==null?void 0:b.text),link:(typeof n.value.prev=="object"?n.value.prev.link:void 0)??((_=l[i-1])==null?void 0:_.link)},next:d?void 0:{text:(typeof n.value.next=="string"?n.value.next:typeof n.value.next=="object"?n.value.next.text:void 0)??((w=l[i+1])==null?void 0:w.docFooterText)??((E=l[i+1])==null?void 0:E.text),link:(typeof n.value.next=="object"?n.value.next.link:void 0)??((I=l[i+1])==null?void 0:I.link)}}})}function no(a,e){const n=new Set;return a.filter(o=>{const t=e(o);return n.has(t)?!1:n.add(t)})}const H=g({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(a){const e=a,n=T(()=>e.tag??(e.href?"a":"span")),o=T(()=>e.href&&$e.test(e.href)||e.target==="_blank");return(t,l)=>(s(),A(F(n.value),{class:D(["VPLink",{link:t.href,"vp-external-link-icon":o.value,"no-icon":t.noIcon}]),href:t.href?c(Ce)(t.href):void 0,target:t.target??(o.value?"_blank":void 0),rel:t.rel??(o.value?"noreferrer":void 0)},{default:h(()=>[u(t.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),oo={class:"VPLastUpdated"},to=["datetime"],ao=g({__name:"VPDocFooterLastUpdated",setup(a){const{theme:e,page:n,lang:o}=j(),t=T(()=>new Date(n.value.lastUpdated)),l=T(()=>t.value.toISOString()),i=P("");return B(()=>{Q(()=>{var p,d,v;i.value=new Intl.DateTimeFormat((d=(p=e.value.lastUpdated)==null?void 0:p.formatOptions)!=null&&d.forceLocale?o.value:void 0,((v=e.value.lastUpdated)==null?void 0:v.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(t.value)})}),(p,d)=>{var v;return s(),m("p",oo,[R(M(((v=c(e).lastUpdated)==null?void 0:v.text)||c(e).lastUpdatedText||"Last updated")+": ",1),r("time",{datetime:l.value},M(i.value),9,to)])}}}),so=C(ao,[["__scopeId","data-v-1bb0c8a8"]]),io={key:0,class:"VPDocFooter"},ro={key:0,class:"edit-info"},co={key:0,class:"edit-link"},lo={key:1,class:"last-updated"},po={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},mo={class:"pager"},uo=["innerHTML"],ho=["innerHTML"],fo={class:"pager"},go=["innerHTML"],yo=["innerHTML"],bo=g({__name:"VPDocFooter",setup(a){const{theme:e,page:n,frontmatter:o}=j(),t=Zn(),l=eo(),i=T(()=>e.value.editLink&&o.value.editLink!==!1),p=T(()=>n.value.lastUpdated),d=T(()=>i.value||p.value||l.value.prev||l.value.next);return(v,y)=>{var S,b,_,w;return d.value?(s(),m("footer",io,[u(v.$slots,"doc-footer-before",{},void 0,!0),i.value||p.value?(s(),m("div",ro,[i.value?(s(),m("div",co,[k(H,{class:"edit-link-button",href:c(t).url,"no-icon":!0},{default:h(()=>[y[0]||(y[0]=r("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),R(" "+M(c(t).text),1)]),_:1},8,["href"])])):f("",!0),p.value?(s(),m("div",lo,[k(so)])):f("",!0)])):f("",!0),(S=c(l).prev)!=null&&S.link||(b=c(l).next)!=null&&b.link?(s(),m("nav",po,[y[1]||(y[1]=r("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),r("div",mo,[(_=c(l).prev)!=null&&_.link?(s(),A(H,{key:0,class:"pager-link prev",href:c(l).prev.link},{default:h(()=>{var E;return[r("span",{class:"desc",innerHTML:((E=c(e).docFooter)==null?void 0:E.prev)||"Previous page"},null,8,uo),r("span",{class:"title",innerHTML:c(l).prev.text},null,8,ho)]}),_:1},8,["href"])):f("",!0)]),r("div",fo,[(w=c(l).next)!=null&&w.link?(s(),A(H,{key:0,class:"pager-link next",href:c(l).next.link},{default:h(()=>{var E;return[r("span",{class:"desc",innerHTML:((E=c(e).docFooter)==null?void 0:E.next)||"Next page"},null,8,go),r("span",{class:"title",innerHTML:c(l).next.text},null,8,yo)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),vo=C(bo,[["__scopeId","data-v-1bcd8184"]]),ko={class:"container"},wo={class:"aside-container"},Ao={class:"aside-content"},So={class:"content"},Co={class:"content-container"},_o={class:"main"},Mo=g({__name:"VPDoc",setup(a){const{theme:e}=j(),n=ie(),{hasSidebar:o,hasAside:t,leftAside:l}=U(),i=T(()=>n.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(p,d)=>{const v=z("Content");return s(),m("div",{class:D(["VPDoc",{"has-sidebar":c(o),"has-aside":c(t)}])},[u(p.$slots,"doc-top",{},void 0,!0),r("div",ko,[c(t)?(s(),m("div",{key:0,class:D(["aside",{"left-aside":c(l)}])},[d[0]||(d[0]=r("div",{class:"aside-curtain"}
2,null,-1)),r("div",wo,[r("div",Ao,[k(Qn,null,{"aside-top":h(()=>[u(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[u(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[u(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[u(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[u(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[u(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),r("div",So,[r("div",Co,[u(p.$slots,"doc-before",{},void 0,!0),r("main",_o,[k(v,{class:D(["vp-doc",[i.value,c(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(vo,null,{"doc-footer-before":h(()=>[u(p.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),u(p.$slots,"doc-after",{},void 0,!0)])])]),u(p.$slots,"doc-bottom",{},void 0,!0)],2)}}}),To=C(Mo,[["__scopeId","data-v-e6f2a212"]]),Po=g({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(a){const e=a,n=T(()=>e.href&&$e.test(e.href)),o=T(()=>e.tag||(e.href?"a":"button"));return(t,l)=>(s(),A(F(o.value),{class:D(["VPButton",[t.size,t.theme]]),href:t.href?c(Ce)(t.href):void 0,target:e.target??(n.value?"_blank":void 0),rel:e.rel??(n.value?"noreferrer":void 0)},{default:h(()=>[R(M(t.text),1)]),_:1},8,["class","href","target","rel"]))}}),jo=C(Po,[["__scopeId","data-v-93dc4167"]]),Oo=["src","alt"],Eo=g({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(a){return(e,n)=>{const o=z("VPImage",!0);return e.image?(s(),m(O,{key:0},[typeof e.image=="string"||"src"in e.image?(s(),m("img",W({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:c(be)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Oo)):(s(),m(O,{key:1},[k(o,W({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(o,W({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),te=C(Eo,[["__scopeId","data-v-ab19afbb"]]),Io={class:"container"},Ro={class:"main"},Do={class:"heading"},xo=["innerHTML"],Lo=["innerHTML"],No=["innerHTML"],$o={key:0,class:"actions"},qo={key:0,class:"image"},Fo={class:"image-container"},Bo=g({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(a){const e=re("hero-image-slot-exists");return(n,o)=>(s(),m("div",{class:D(["VPHero",{"has-image":n.image||c(e)}])},[r("div",Io,[r("div",Ro,[u(n.$slots,"home-hero-info-before",{},void 0,!0),u(n.$slots,"home-hero-info",{},()=>[r("h1",Do,[n.name?(s(),m("span",{key:0,innerHTML:n.name,class:"name clip"},null,8,xo)):f("",!0),n.text?(s(),m("span",{key:1,innerHTML:n.text,class:"text"},null,8,Lo)):f("",!0)]),n.tagline?(s(),m("p",{key:0,innerHTML:n.tagline,class:"tagline"},null,8,No)):f("",!0)],!0),u(n.$slots,"home-hero-info-after",{},void 0,!0),n.actions?(s(),m("div",$o,[(s(!0),m(O,null,x(n.actions,t=>(s(),m("div",{key:t.link,class:"action"},[k(jo,{tag:"a",size:"medium",theme:t.theme,text:t.text,href:t.link,target:t.target,rel:t.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),u(n.$slots,"home-hero-actions-after",{},void 0,!0)]),n.image||c(e)?(s(),m("div",qo,[r("div",Fo,[o[0]||(o[0]=r("div",{class:"image-bg"},null,-1)),u(n.$slots,"home-hero-image",{},()=>[n.image?(s(),A(te,{key:0,class:"image-src",image:n.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Vo=C(Bo,[["__scopeId","data-v-dd8814ff"]]),Ho=g({__name:"VPHomeHero",setup(a){const{frontmatter:e}=j();return(n,o)=>c(e).hero?(s(),A(Vo,{key:0,class:"VPHomeHero",name:c(e).hero.name,text:c(e).hero.text,tagline:c(e).hero.tagline,image:c(e).hero.image,actions:c(e).hero.actions},{"home-hero-info-before":h(()=>[u(n.$slots,"home-hero-info-before")]),"home-hero-info":h(()=>[u(n.$slots,"home-hero-info")]),"home-hero-info-after":h(()=>[u(n.$slots,"home-hero-info-after")]),"home-hero-actions-after":h(()=>[u(n.$slots,"home-hero-actions-after")]),"home-hero-image":h(()=>[u(n.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Uo={class:"box"},Jo={key:0,class:"icon"},Wo=["innerHTML"],Go=["innerHTML"],zo=["innerHTML"],Yo={key:4,class:"link-text"},Xo={class:"link-text-value"},Ko=g({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(a){return(e,n)=>(s(),A(H,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:h(()=>[r("article",Uo,[typeof e.icon=="object"&&e.icon.wrap?(s(),m("div",Jo,[k(te,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(s(),A(te,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(s(),m("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Wo)):f("",!0),r("h2",{class:"title",innerHTML:e.title},null,8,Go),e.details?(s(),m("p",{key:3,class:"details",innerHTML:e.details},null,8,zo)):f("",!0),e.linkText?(s(),m("div",Yo,[r("p",Xo,[R(M(e.linkText)+" ",1),n[0]||(n[0]=r("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Qo=C(Ko,[["__scopeId","data-v-bd37d1a2"]]),Zo={key:0,class:"VPFeatures"},et={class:"container"},nt={class:"items"},ot=g({__name:"VPFeatures",props:{features:{}},setup(a){const e=a,n=T(()=>{const o=e.features.length;if(o){if(o===2)return"grid-2";if(o===3)return"grid-3";if(o%3===0)return"grid-6";if(o>3)return"grid-4"}else return});return(o,t)=>o.features?(s(),m("div",Zo,[r("div",et,[r("div",nt,[(s(!0),m(O,null,x(o.features,l=>(s(),m("div",{key:l.title,class:D(["item",[n.value]])},[k(Qo,{icon:l.icon,title:l.title,details:l.details,link:l.link,"link-text":l.linkText,rel:l.rel,target:l.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),tt=C(ot,[["__scopeId","data-v-b1eea84a"]]),at=g({__name:"VPHomeFeatures",setup(a){const{frontmatter:e}=j();return(n,o)=>c(e).features?(s(),A(tt,{key:0,class:"VPHomeFeatures",features:c(e).features},null,8,["features"])):f("",!0)}}),st=g({__name:"VPHomeContent",setup(a){const{width:e}=nn({initialWidth:0,includeScrollbar:!1});return(n,o)=>(s(),m("div",{class:"vp-doc container",style:ce(c(e)?{"--vp-offset":`calc(50% - ${c(e)/2}px)`}:{})},[u(n.$slots,"default",{},void 0,!0)],4))}}),it=C(st,[["__scopeId","data-v-c141a4bd"]]),rt=g({__name:"VPHome",setup(a){const{frontmatter:e,theme:n}=j();return(o,t)=>{const l=z("Content");return s(),m("div",{class:D(["VPHome",{"external-link-icon-enabled":c(n).externalLinkIcon}])},[u(o.$slots,"home-hero-before",{},void 0,!0),k(Ho,null,{"home-hero-info-before":h(()=>[u(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[u(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[u(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[u(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[u(o.$slots,"home-hero-image",{},void 0,!0)]),_:3}),u(o.$slots,"home-hero-after",{},void 0,!0),u(o.$slots,"home-features-before",{}
2,void 0,!0),k(at),u(o.$slots,"home-features-after",{},void 0,!0),c(e).markdownStyles!==!1?(s(),A(it,{key:0},{default:h(()=>[k(l)]),_:1})):(s(),A(l,{key:1}))],2)}}}),ct=C(rt,[["__scopeId","data-v-e07eaea7"]]),lt={},pt={class:"VPPage"};function mt(a,e){const n=z("Content");return s(),m("div",pt,[u(a.$slots,"page-top"),k(n),u(a.$slots,"page-bottom")])}const dt=C(lt,[["render",mt]]),ut=g({__name:"VPContent",setup(a){const{page:e,frontmatter:n}=j(),{hasSidebar:o}=U();return(t,l)=>(s(),m("div",{class:D(["VPContent",{"has-sidebar":c(o),"is-home":c(n).layout==="home"}]),id:"VPContent"},[c(e).isNotFound?u(t.$slots,"not-found",{key:0},()=>[k(On)],!0):c(n).layout==="page"?(s(),A(dt,{key:1},{"page-top":h(()=>[u(t.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[u(t.$slots,"page-bottom",{},void 0,!0)]),_:3})):c(n).layout==="home"?(s(),A(ct,{key:2},{"home-hero-before":h(()=>[u(t.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[u(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[u(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[u(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[u(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[u(t.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[u(t.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[u(t.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[u(t.$slots,"home-features-after",{},void 0,!0)]),_:3})):c(n).layout&&c(n).layout!=="doc"?(s(),A(F(c(n).layout),{key:3})):(s(),A(To,{key:4},{"doc-top":h(()=>[u(t.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[u(t.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":h(()=>[u(t.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[u(t.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[u(t.$slots,"doc-after",{},void 0,!0)]),"aside-top":h(()=>[u(t.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":h(()=>[u(t.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[u(t.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[u(t.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[u(t.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":h(()=>[u(t.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),ht=C(ut,[["__scopeId","data-v-9a6c75ad"]]),ft={class:"container"},gt=["innerHTML"],yt=["innerHTML"],bt=g({__name:"VPFooter",setup(a){const{theme:e,frontmatter:n}=j(),{hasSidebar:o}=U();return(t,l)=>c(e).footer&&c(n).footer!==!1?(s(),m("footer",{key:0,class:D(["VPFooter",{"has-sidebar":c(o)}])},[r("div",ft,[c(e).footer.message?(s(),m("p",{key:0,class:"message",innerHTML:c(e).footer.message},null,8,gt)):f("",!0),c(e).footer.copyright?(s(),m("p",{key:1,class:"copyright",innerHTML:c(e).footer.copyright},null,8,yt)):f("",!0)])],2)):f("",!0)}}),vt=C(bt,[["__scopeId","data-v-566314d4"]]);function kt(){const{theme:a,frontmatter:e}=j(),n=ke([]),o=T(()=>n.value.length>0);return se(()=>{n.value=_e(e.value.outline??a.value.outline)}),{headers:n,hasLocalNav:o}}const wt={class:"menu-text"},At={class:"header"},St={class:"outline"},Ct=g({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(a){const e=a,{theme:n}=j(),o=P(!1),t=P(0),l=P(),i=P();function p(S){var b;(b=l.value)!=null&&b.contains(S.target)||(o.value=!1)}q(o,S=>{if(S){document.addEventListener("click",p);return}document.removeEventListener("click",p)}),on("Escape",()=>{o.value=!1}),se(()=>{o.value=!1});function d(){o.value=!o.value,t.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function v(S){S.target.classList.contains("outline-link")&&(i.value&&(i.value.style.transition="none"),we(()=>{o.value=!1}))}function y(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(S,b)=>(s(),m("div",{class:"VPLocalNavOutlineDropdown",style:ce({"--vp-vh":t.value+"px"}),ref_key:"main",ref:l},[S.headers.length>0?(s(),m("button",{key:0,onClick:d,class:D({open:o.value})},[r("span",wt,M(c(Ve)(c(n))),1),b[0]||(b[0]=r("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(s(),m("button",{key:1,onClick:y},M(c(n).returnToTopLabel||"Return to top"),1)),k(ge,{name:"flyout"},{default:h(()=>[o.value?(s(),m("div",{key:0,ref_key:"items",ref:i,class:"items",onClick:v},[r("div",At,[r("a",{class:"top-link",href:"#",onClick:y}
2,M(c(n).returnToTopLabel||"Return to top"),1)]),r("div",St,[k(He,{headers:S.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),_t=C(Ct,[["__scopeId","data-v-6b867909"]]),Mt={class:"container"},Tt=["aria-expanded"],Pt={class:"menu-text"},jt=g({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(a){const{theme:e,frontmatter:n}=j(),{hasSidebar:o}=U(),{headers:t}=kt(),{y:l}=qe(),i=P(0);B(()=>{i.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),se(()=>{t.value=_e(n.value.outline??e.value.outline)});const p=T(()=>t.value.length===0),d=T(()=>p.value&&!o.value),v=T(()=>({VPLocalNav:!0,"has-sidebar":o.value,empty:p.value,fixed:d.value}));return(y,S)=>c(n).layout!=="home"&&(!d.value||c(l)>=i.value)?(s(),m("div",{key:0,class:D(v.value)},[r("div",Mt,[c(o)?(s(),m("button",{key:0,class:"menu","aria-expanded":y.open,"aria-controls":"VPSidebarNav",onClick:S[0]||(S[0]=b=>y.$emit("open-menu"))},[S[1]||(S[1]=r("span",{class:"vpi-align-left menu-icon"},null,-1)),r("span",Pt,M(c(e).sidebarMenuLabel||"Menu"),1)],8,Tt)):f("",!0),k(_t,{headers:c(t),navHeight:i.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Ot=C(jt,[["__scopeId","data-v-2488c25a"]]);function Et(){const a=P(!1);function e(){a.value=!0,window.addEventListener("resize",t)}function n(){a.value=!1,window.removeEventListener("resize",t)}function o(){a.value?n():e()}function t(){window.outerWidth>=768&&n()}const l=ie();return q(()=>l.path,n),{isScreenOpen:a,openScreen:e,closeScreen:n,toggleScreen:o}}const It={},Rt={class:"VPSwitch",type:"button",role:"switch"},Dt={class:"check"},xt={key:0,class:"icon"};function Lt(a,e){return s(),m("button",Rt,[r("span",Dt,[a.$slots.default?(s(),m("span",xt,[u(a.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Nt=C(It,[["render",Lt],["__scopeId","data-v-b4ccac88"]]),$t=g({__name:"VPSwitchAppearance",setup(a){const{isDark:e,theme:n}=j(),o=re("toggle-appearance",()=>{e.value=!e.value}),t=P("");return ve(()=>{t.value=e.value?n.value.lightModeSwitchTitle||"Switch to light theme":n.value.darkModeSwitchTitle||"Switch to dark theme"}),(l,i)=>(s(),A(Nt,{title:t.value,class:"VPSwitchAppearance","aria-checked":c(e),onClick:c(o)},{default:h(()=>i[0]||(i[0]=[r("span",{class:"vpi-sun sun"},null,-1),r("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),Me=C($t,[["__scopeId","data-v-be9742d9"]]),qt={key:0,class:"VPNavBarAppearance"},Ft=g({__name:"VPNavBarAppearance",setup(a){const{site:e}=j();return(n,o)=>c(e).appearance&&c(e).appearance!=="force-dark"&&c(e).appearance!=="force-auto"?(s(),m("div",qt,[k(Me)])):f("",!0)}}),Bt=C(Ft,[["__scopeId","data-v-3f90c1a5"]]),Te=P();let Ue=!1,me=0;function Vt(a){const e=P(!1);if(le){!Ue&&Ht(),me++;const n=q(Te,o=>{var t,l,i;o===a.el.value||(t=a.el.value)!=null&&t.contains(o)?(e.value=!0,(l=a.onFocus)==null||l.call(a)):(e.value=!1,(i=a.onBlur)==null||i.call(a))});ae(()=>{n(),me--,me||Ut()})}return tn(e)}function Ht(){document.addEventListener("focusin",Je),Ue=!0,Te.value=document.activeElement}function Ut(){document.removeEventListener("focusin",Je)}function Je(){Te.value=document.activeElement}const Jt={class:"VPMenuLink"},Wt=["innerHTML"],Gt=g({__name:"VPMenuLink",props:{item:{}},setup(a){const{page:e}=j();return(n,o)=>(s(),m("div",Jt,[k(H,{class:D({active:c(G)(c(e).relativePath,n.item.activeMatch||n.item.link,!!n.item.activeMatch)}),href:n.item.link,target:n.item.target,rel:n.item.rel,"no-icon":n.item.noIcon},{default:h(()=>[r("span",{innerHTML:n.item.text},null,8,Wt)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),pe=C(Gt,[["__scopeId","data-v-7eeeb2dc"]]),zt={class:"VPMenuGroup"},Yt={key:0,class:"title"},Xt=g({__name:"VPMenuGroup",props:{text:{},items:{}},setup(a){return(e,n)=>(s(),m("div",zt,[e.text?(s(),m("p",Yt,M(e.text),1)):f("",!0),(s(!0),m(O,null,x(e.items,o=>(s(),m(O,null,["link"in o?(s(),A(pe,{key:0,item:o},null,8,["item"])):f("",!0)],64))),256))]))}}),Kt=C(Xt,[["__scopeId","data-v-a6b0397c"]]),Qt={class:"VPMenu"},Zt={key:0,class:"items"},ea=g({__name:"VPMenu",props:{items:{}},setup(a){return(e,n)=>(s(),m("div",Qt,[e.items?(s(),m("div",Zt,[(s(!0),m(O,null,x(e.items,o=>(s(),m(O,{key:JSON.stringify(o)},["link"in o?(s(),A(pe,{key:0,item:o},null,8,["item"])):"component"in o?(s(),A(F(o.component),W({key:1,ref_for:!0},o.props),null,16)):(s(),A(Kt,{key:2,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):f("",!0),u(e.$slots,"default",{},void 0,!0)]))}}),na=C(ea,[["__scopeId","data-v-20ed86d6"]]),oa=["aria-expanded","aria-label"],ta={key:0,class:"text"},aa=["innerHTML"],sa={key:1,class:"vpi-more-horizontal icon"},ia={class:"menu"},ra=g({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(a){const e=P(!1),n=P();Vt({el:n,onBlur:o});function o(){e.value=!1}return(t,l)=>(s(),m("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:l[1]||(l[1]=i=>e.value=!0),onMouseleave:l[2]||(l[2]=i=>e.value=!1)},[r("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":t.label,onClick:l[0]||(l[0]=i=>e.value=!e.value)},[t.button||t.icon?(s(),m("span",ta,[t.icon?(s(),m("span",{key:0,class:D([t.icon,"option-icon"])},null,2)):f("",!0),t.button?(s(),m("span",{key:1,innerHTML:t.button},null,8,aa)):f("",!0),l[3]||(l[3]=r("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(s(),m("span",sa))],8,oa),r("div",ia,[k(na,{items:t.items},{default:h(()=>[u(t.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),Pe=C(ra,[["__scopeId","data-v-bfe7971f"]]),ca=["href","aria-label","innerHTML"],la=g({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(a){const e=a,n=P();B(async()=>{var l;await we();const t=(l=n.value)==null?void 0:l.children[0];t instanceof HTMLElement&&t.className.startsWith("vpi-social-")&&(getComputedStyle(t).maskImage||getComputedStyle(t).webkitMaskImage)==="none"&&t.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const o=T(()=>typeof e.icon=="object"?e.icon.svg:`<span class="vpi-social-${e.icon}"></span>`);return(t,l)=>(s(),m("a",{ref_key:"el",ref:n,class:"VPSocialLink no-icon",href:t.link,"aria-label":t.ariaLabel??(typeof t.icon=="str
2ing"?t.icon:""),target:"_blank",rel:"noopener",innerHTML:o.value},null,8,ca))}}),pa=C(la,[["__scopeId","data-v-60a9a2d3"]]),ma={class:"VPSocialLinks"},da=g({__name:"VPSocialLinks",props:{links:{}},setup(a){return(e,n)=>(s(),m("div",ma,[(s(!0),m(O,null,x(e.links,({link:o,icon:t,ariaLabel:l})=>(s(),A(pa,{key:o,icon:t,link:o,ariaLabel:l},null,8,["icon","link","ariaLabel"]))),128))]))}}),je=C(da,[["__scopeId","data-v-e71e869c"]]),ua={key:0,class:"group translations"},ha={class:"trans-title"},fa={key:1,class:"group"},ga={class:"item appearance"},ya={class:"label"},ba={class:"appearance-action"},va={key:2,class:"group"},ka={class:"item social-links"},wa=g({__name:"VPNavBarExtra",setup(a){const{site:e,theme:n}=j(),{localeLinks:o,currentLang:t}=Z({correspondingLink:!0}),l=T(()=>o.value.length&&t.value.label||e.value.appearance||n.value.socialLinks);return(i,p)=>l.value?(s(),A(Pe,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:h(()=>[c(o).length&&c(t).label?(s(),m("div",ua,[r("p",ha,M(c(t).label),1),(s(!0),m(O,null,x(c(o),d=>(s(),A(pe,{key:d.link,item:d},null,8,["item"]))),128))])):f("",!0),c(e).appearance&&c(e).appearance!=="force-dark"&&c(e).appearance!=="force-auto"?(s(),m("div",fa,[r("div",ga,[r("p",ya,M(c(n).darkModeSwitchLabel||"Appearance"),1),r("div",ba,[k(Me)])])])):f("",!0),c(n).socialLinks?(s(),m("div",va,[r("div",ka,[k(je,{class:"social-links-list",links:c(n).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),Aa=C(wa,[["__scopeId","data-v-f953d92f"]]),Sa=["aria-expanded"],Ca=g({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(a){return(e,n)=>(s(),m("button",{type:"button",class:D(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:n[0]||(n[0]=o=>e.$emit("click"))},n[1]||(n[1]=[r("span",{class:"container"},[r("span",{class:"top"}),r("span",{class:"middle"}),r("span",{class:"bottom"})],-1)]),10,Sa))}}),_a=C(Ca,[["__scopeId","data-v-6bee1efd"]]),Ma=["innerHTML"],Ta=g({__name:"VPNavBarMenuLink",props:{item:{}},setup(a){const{page:e}=j();return(n,o)=>(s(),A(H,{class:D({VPNavBarMenuLink:!0,active:c(G)(c(e).relativePath,n.item.activeMatch||n.item.link,!!n.item.activeMatch)}),href:n.item.link,target:n.item.target,rel:n.item.rel,"no-icon":n.item.noIcon,tabindex:"0"},{default:h(()=>[r("span",{innerHTML:n.item.text},null,8,Ma)]),_:1},8,["class","href","target","rel","no-icon"]))}}),Pa=C(Ta,[["__scopeId","data-v-815115f5"]]),ja=g({__name:"VPNavBarMenuGroup",props:{item:{}},setup(a){const e=a,{page:n}=j(),o=l=>"component"in l?!1:"link"in l?G(n.value.relativePath,l.link,!!e.item.activeMatch):l.items.some(o),t=T(()=>o(e.item));return(l,i)=>(s(),A(Pe,{class:D({VPNavBarMenuGroup:!0,active:c(G)(c(n).relativePath,l.item.activeMatch,!!l.item.activeMatch)||t.value}),button:l.item.text,items:l.item.items},null,8,["class","button","items"]))}}),Oa={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Ea=g({__name:"VPNavBarMenu",setup(a){const{theme:e}=j();return(n,o)=>c(e).nav?(s(),m("nav",Oa,[o[0]||(o[0]=r("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(s(!0),m(O,null,x(c(e).nav,t=>(s(),m(O,{key:JSON.stringify(t)},["link"in t?(s(),A(Pa,{key:0,item:t},null,8,["item"])):"component"in t?(s(),A(F(t.component),W({key:1,ref_for:!0},t.props),null,16)):(s(),A(ja,{key:2,item:t},null,8,["item"]))],64))),128))])):f("",!0)}}),Ia=C(Ea,[["__scopeId","data-v-afb2845e"]]);function Ra(a){const{localeIndex:e,theme:n}=j();function o(t){var w,E,I;const l=t.split("."),i=(w=n.value.search)==null?void 0:w.options,p=i&&typeof i=="object",d=p&&((I=(E=i.locales)==null?void 0:E[e.value])==null?void 0:I.translations)||null,v=p&&i.translations||null;let y=d,S=v,b=a;const _=l.pop();for(const N of l){let $=null;const V=b==null?void 0:b[N];V&&($=b=V);const Y=S==null?void 0:S[N];Y&&($=S=Y);const X=y==null?void 0:y[N];X&&($=y=X),V||(b=$),Y||(S=$),X||(y=$)}return(y==null?void 0:y[_])??(S==null?void 0:S[_])??(b==null?void 0:b[_])??""}return o}const Da=["aria-label"],xa={class:"DocSearch-Button-Container"},La={class:"DocSearch-Button-Placeholder"},Ie=g({__name:"VPNavBarSearchButton",setup(a){const n=Ra({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(o,t)=>(s(),m("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":c(n)("button.buttonAriaLabel")},[r("span",xa,[t[0]||(t[0]=r("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),r("span",La,M(c(n)("button.buttonText")),1)]),t[1]||(t[1]=r("span",{class:"DocSearch-Button-Keys"},[r("kbd",{class:"DocSearch-Button-Key"}),r("kbd",{class:"DocSearch-Button-Key"}
2,"K")],-1))],8,Da))}}),Na={class:"VPNavBarSearch"},$a={id:"local-search"},qa={key:1,id:"docsearch"},Fa=g({__name:"VPNavBarSearch",setup(a){const e=()=>null,n=an(()=>sn(()=>import("./VPAlgoliaSearchBox.CR4y2Zr3.js"),__vite__mapDeps([0,1]))),{theme:o}=j(),t=P(!1),l=P(!1),i=()=>{const b="VPAlgoliaPreconnect";(window.requestIdleCallback||setTimeout)(()=>{var E;const w=document.createElement("link");w.id=b,w.rel="preconnect",w.href=`https://${(((E=o.value.search)==null?void 0:E.options)??o.value.algolia).appId}-dsn.algolia.net`,w.crossOrigin="",document.head.appendChild(w)})};B(()=>{i();const b=w=>{(w.key.toLowerCase()==="k"&&(w.metaKey||w.ctrlKey)||!v(w)&&w.key==="/")&&(w.preventDefault(),p(),_())},_=()=>{window.removeEventListener("keydown",b)};window.addEventListener("keydown",b),ae(_)});function p(){t.value||(t.value=!0,setTimeout(d,16))}function d(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function v(b){const _=b.target,w=_.tagName;return _.isContentEditable||w==="INPUT"||w==="SELECT"||w==="TEXTAREA"}const y=P(!1),S="algolia";return(b,_)=>{var w;return s(),m("div",Na,[c(S)==="local"?(s(),m(O,{key:0},[y.value?(s(),A(c(e),{key:0,onClose:_[0]||(_[0]=E=>y.value=!1)})):f("",!0),r("div",$a,[k(Ie,{onClick:_[1]||(_[1]=E=>y.value=!0)})])],64)):c(S)==="algolia"?(s(),m(O,{key:1},[t.value?(s(),A(c(n),{key:0,algolia:((w=c(o).search)==null?void 0:w.options)??c(o).algolia,onVnodeBeforeMount:_[2]||(_[2]=E=>l.value=!0)},null,8,["algolia"])):f("",!0),l.value?f("",!0):(s(),m("div",qa,[k(Ie,{onClick:p})]))],64)):f("",!0)])}}}),Ba=g({__name:"VPNavBarSocialLinks",setup(a){const{theme:e}=j();return(n,o)=>c(e).socialLinks?(s(),A(je,{key:0,class:"VPNavBarSocialLinks",links:c(e).socialLinks},null,8,["links"])):f("",!0)}}),Va=C(Ba,[["__scopeId","data-v-ef6192dc"]]),Ha=["href","rel","target"],Ua=["innerHTML"],Ja={key:2},Wa=g({__name:"VPNavBarTitle",setup(a){const{site:e,theme:n}=j(),{hasSidebar:o}=U(),{currentLang:t}=Z(),l=T(()=>{var d;return typeof n.value.logoLink=="string"?n.value.logoLink:(d=n.value.logoLink)==null?void 0:d.link}),i=T(()=>{var d;return typeof n.value.logoLink=="string"||(d=n.value.logoLink)==null?void 0:d.rel}),p=T(()=>{var d;return typeof n.value.logoLink=="string"||(d=n.value.logoLink)==null?void 0:d.target});return(d,v)=>(s(),m("div",{class:D(["VPNavBarTitle",{"has-sidebar":c(o)}])},[r("a",{class:"title",href:l.value??c(Ce)(c(t).link),rel:i.value,target:p.value},[u(d.$slots,"nav-bar-title-before",{},void 0,!0),c(n).logo?(s(),A(te,{key:0,class:"logo",image:c(n).logo},null,8,["image"])):f("",!0),c(n).siteTitle?(s(),m("span",{key:1,innerHTML:c(n).siteTitle},null,8,Ua)):c(n).siteTitle===void 0?(s(),m("span",Ja,M(c(e).title),1)):f("",!0),u(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ha)],2))}}),Ga=C(Wa,[["__scopeId","data-v-9f43907a"]]),za={class:"items"},Ya={class:"title"},Xa=g({__name:"VPNavBarTranslations",setup(a){const{theme:e}=j(),{localeLinks:n,currentLang:o}=Z({correspondingLink:!0});return(t,l)=>c(n).length&&c(o).label?(s(),A(Pe,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:c(e).langMenuLabel||"Change language"},{default:h(()=>[r("div",za,[r("p",Ya,M(c(o).label),1),(s(!0),m(O,null,x(c(n),i=>(s(),A(pe,{key:i.link,item:i},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),Ka=C(Xa,[["__scopeId","data-v-acee064b"]]),Qa={class:"wrapper"},Za={class:"container"},es={class:"title"},ns={class:"content"},os={class:"content-body"},ts=g({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(a){const e=a,{y:n}=qe(),{hasSidebar:o}=U(),{frontmatter:t}=j(),l=P({});return ve(()=>{l.value={"has-sidebar":o.value,home:t.value.layout==="home",top:n.value===0,"screen-open":e.isScreenOpen}}),(i,p)=>(s(),m("div",{class:D(["VPNavBar",l.value])},[r("div",Qa,[r("div",Za,[r("div",es,[k(Ga,null,{"nav-bar-title-before":h(()=>[u(i.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[u(i.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),r("div",ns,[r("div",os,[u(i.$slots,"nav-bar-content-before",{},void 0,!0),k(Fa,{class:"search"}),k(Ia,{class:"menu"}),k(Ka,{class:"translations"}),k(Bt,{class:"appearance"}),k(Va,{class:"social-links"}),k(Aa,{class:"extra"}),u(i.$slots,"nav-bar-content-after",{},void 0,!0),k(_a,{class:"hamburger",active:i.isScreenOpen,onClick:p[
20]||(p[0]=d=>i.$emit("toggle-screen"))},null,8,["active"])])])])]),p[1]||(p[1]=r("div",{class:"divider"},[r("div",{class:"divider-line"})],-1))],2))}}),as=C(ts,[["__scopeId","data-v-9fd4d1dd"]]),ss={key:0,class:"VPNavScreenAppearance"},is={class:"text"},rs=g({__name:"VPNavScreenAppearance",setup(a){const{site:e,theme:n}=j();return(o,t)=>c(e).appearance&&c(e).appearance!=="force-dark"&&c(e).appearance!=="force-auto"?(s(),m("div",ss,[r("p",is,M(c(n).darkModeSwitchLabel||"Appearance"),1),k(Me)])):f("",!0)}}),cs=C(rs,[["__scopeId","data-v-a3e2920d"]]),ls=["innerHTML"],ps=g({__name:"VPNavScreenMenuLink",props:{item:{}},setup(a){const e=re("close-screen");return(n,o)=>(s(),A(H,{class:"VPNavScreenMenuLink",href:n.item.link,target:n.item.target,rel:n.item.rel,"no-icon":n.item.noIcon,onClick:c(e)},{default:h(()=>[r("span",{innerHTML:n.item.text},null,8,ls)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),ms=C(ps,[["__scopeId","data-v-fa963d97"]]),ds=["innerHTML"],us=g({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(a){const e=re("close-screen");return(n,o)=>(s(),A(H,{class:"VPNavScreenMenuGroupLink",href:n.item.link,target:n.item.target,rel:n.item.rel,"no-icon":n.item.noIcon,onClick:c(e)},{default:h(()=>[r("span",{innerHTML:n.item.text},null,8,ds)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),We=C(us,[["__scopeId","data-v-e04f3e85"]]),hs={class:"VPNavScreenMenuGroupSection"},fs={key:0,class:"title"},gs=g({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(a){return(e,n)=>(s(),m("div",hs,[e.text?(s(),m("p",fs,M(e.text),1)):f("",!0),(s(!0),m(O,null,x(e.items,o=>(s(),A(We,{key:o.text,item:o},null,8,["item"]))),128))]))}}),ys=C(gs,[["__scopeId","data-v-f60dbfa7"]]),bs=["aria-controls","aria-expanded"],vs=["innerHTML"],ks=["id"],ws={key:0,class:"item"},As={key:1,class:"item"},Ss={key:2,class:"group"},Cs=g({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(a){const e=a,n=P(!1),o=T(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function t(){n.value=!n.value}return(l,i)=>(s(),m("div",{class:D(["VPNavScreenMenuGroup",{open:n.value}])},[r("button",{class:"button","aria-controls":o.value,"aria-expanded":n.value,onClick:t},[r("span",{class:"button-text",innerHTML:l.text},null,8,vs),i[0]||(i[0]=r("span",{class:"vpi-plus button-icon"},null,-1))],8,bs),r("div",{id:o.value,class:"items"},[(s(!0),m(O,null,x(l.items,p=>(s(),m(O,{key:JSON.stringify(p)},["link"in p?(s(),m("div",ws,[k(We,{item:p},null,8,["item"])])):"component"in p?(s(),m("div",As,[(s(),A(F(p.component),W({ref_for:!0},p.props,{"screen-menu":""}),null,16))])):(s(),m("div",Ss,[k(ys,{text:p.text,items:p.items},null,8,["text","items"])]))],64))),128))],8,ks)],2))}}),_s=C(Cs,[["__scopeId","data-v-d99bfeec"]]),Ms={key:0,class:"VPNavScreenMenu"},Ts=g({__name:"VPNavScreenMenu",setup(a){const{theme:e}=j();return(n,o)=>c(e).nav?(s(),m("nav",Ms,[(s(!0),m(O,null,x(c(e).nav,t=>(s(),m(O,{key:JSON.stringify(t)},["link"in t?(s(),A(ms,{key:0,item:t},null,8,["item"])):"component"in t?(s(),A(F(t.component),W({key:1,ref_for:!0},t.props,{"screen-menu":""}),null,16)):(s(),A(_s,{key:2,text:t.text||"",items:t.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Ps=g({__name:"VPNavScreenSocialLinks",setup(a){const{theme:e}=j();return(n,o)=>c(e).socialLinks?(s(),A(je,{key:0,class:"VPNavScreenSocialLinks",links:c(e).socialLinks},null,8,["links"])):f("",!0)}}),js={class:"list"},Os=g({__name:"VPNavScreenTranslations",setup(a){const{localeLinks:e,currentLang:n}=Z({correspondingLink:!0}),o=P(!1);function t(){o.value=!o.value}return(l,i)=>c(e).length&&c(n).label?(s(),m("div",{key:0,class:D(["VPNavScreenTranslations",{open:o.value}])},[r("button",{class:"title",onClick:t},[i[0]||(i[0]=r("span",{class:"vpi-languages icon lang"},null,-1)),R(" "+M(c(n).label)+" ",1),i[1]||(i[1]=r("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),r("ul",js,[(s(!0),m(O,null,x(c(e),p=>(s(),m("li",{key:p.link,class:"item"},[k(H,{class:"link",href:p.link},{default:h(()=>[R(M(p.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),Es=C(Os,[["__scopeId","data-v-516e4bc3"]]),Is={class:"container"},Rs=g({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(a){const e=P(null),n=Fe(le?document.body:null);return(o,t)=>(s(),A(ge,{name:"fade",onEnter:t[0]||(t[0]=l=>n.value=!0),onAfterLeave:t[1]||(t[1]=l=>n.value=!1)},{default:h(()=>[o.open?(s(),m("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[r("div",Is,[u(o.$slots,"nav-screen-content-before",{},void 0,!0),k(Ts,{class:"menu"}),k(Es,{class:"translations"}),k(cs,{class:"appearance"}),k(Ps,{class:"social-links"}),u(o.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),Ds=C(Rs,[["__scopeId","data-v-2dd6d0c7"]]),xs={key:0,class:"VPNav"},Ls=g({__name:"VPNav",setup(a){const{isScreenOpen:e,closeScreen:n,toggleScreen:o}=Et(),{frontmatter:t}=j(),l=T(()=>t.value.navbar!==!1);return Ae("close-screen",n),Q(()=>{le&&document.documentElement.classList.toggle("hide-nav",!l.value)}),(i,p)=>l.value?(s(),m("header",xs,[k(as,{"is-screen-open":c(e),onToggleScreen:c(o)}
2,{"nav-bar-title-before":h(()=>[u(i.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[u(i.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[u(i.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[u(i.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(Ds,{open:c(e)},{"nav-screen-content-before":h(()=>[u(i.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[u(i.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),Ns=C(Ls,[["__scopeId","data-v-7ad780c2"]]),$s=["role","tabindex"],qs={key:1,class:"items"},Fs=g({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(a){const e=a,{collapsed:n,collapsible:o,isLink:t,isActiveLink:l,hasActiveLink:i,hasChildren:p,toggle:d}=Dn(T(()=>e.item)),v=T(()=>p.value?"section":"div"),y=T(()=>t.value?"a":"div"),S=T(()=>p.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),b=T(()=>t.value?void 0:"button"),_=T(()=>[[`level-${e.depth}`],{collapsible:o.value},{collapsed:n.value},{"is-link":t.value},{"is-active":l.value},{"has-active":i.value}]);function w(I){"key"in I&&I.key!=="Enter"||!e.item.link&&d()}function E(){e.item.link&&d()}return(I,N)=>{const $=z("VPSidebarItem",!0);return s(),A(F(v.value),{class:D(["VPSidebarItem",_.value])},{default:h(()=>[I.item.text?(s(),m("div",W({key:0,class:"item",role:b.value},rn(I.item.items?{click:w,keydown:w}:{},!0),{tabindex:I.item.items&&0}),[N[1]||(N[1]=r("div",{class:"indicator"},null,-1)),I.item.link?(s(),A(H,{key:0,tag:y.value,class:"link",href:I.item.link,rel:I.item.rel,target:I.item.target},{default:h(()=>[(s(),A(F(S.value),{class:"text",innerHTML:I.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(s(),A(F(S.value),{key:1,class:"text",innerHTML:I.item.text},null,8,["innerHTML"])),I.item.collapsed!=null&&I.item.items&&I.item.items.length?(s(),m("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:E,onKeydown:cn(E,["enter"]),tabindex:"0"},N[0]||(N[0]=[r("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):f("",!0)],16,$s)):f("",!0),I.item.items&&I.item.items.length?(s(),m("div",qs,[I.depth<5?(s(!0),m(O,{key:0},x(I.item.items,V=>(s(),A($,{key:V.text,item:V,depth:I.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),Bs=C(Fs,[["__scopeId","data-v-0009425e"]]),Vs=g({__name:"VPSidebarGroup",props:{items:{}},setup(a){const e=P(!0);let n=null;return B(()=>{n=setTimeout(()=>{n=null,e.value=!1},300)}),ln(()=>{n!=null&&(clearTimeout(n),n=null)}),(o,t)=>(s(!0),m(O,null,x(o.items,l=>(s(),m("div",{key:l.text,class:D(["group",{"no-transition":e.value}])},[k(Bs,{item:l,depth:0},null,8,["item"])],2))),128))}}),Hs=C(Vs,[["__scopeId","data-v-51288d80"]]),Us={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Js=g({__name:"VPSidebar",props:{open:{type:Boolean}},setup(a){const{sidebarGroups:e,hasSidebar:n}=U(),o=a,t=P(null),l=Fe(le?document.body:null);q([o,t],()=>{var p;o.open?(l.value=!0,(p=t.value)==null||p.focus()):l.value=!1},{immediate:!0,flush:"post"});const i=P(0);return q(e,()=>{i.value+=1},{deep:!0}),(p,d)=>c(n)?(s(),m("aside",{key:0,class:D(["VPSidebar",{open:p.open}]),ref_key:"navEl",ref:t,onClick:d[0]||(d[0]=pn(()=>{},["stop"]))},[d[2]||(d[2]=r("div",{class:"curtain"},null,-1)),r("nav",Us,[d[1]||(d[1]=r("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),u(p.$slots,"sidebar-nav-before",{},void 0,!0),(s(),A(Hs,{items:c(e),key:i.value},null,8,["items"])),u(p.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),Ws=C(Js,[["__scopeId","data-v-42c4c606"]]),Gs=g({__name:"VPSkipLink",setup(a){const{theme:e}=j(),n=ie(),o=P();q(()=>n.path,()=>o.value.focus());function t({target:l}){const i=document.getElementById(decodeURIComponent(l.hash).slice(1));if(i){const p=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",p)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",p),i.focus(),window.scrollTo(0,0)}}return(l,i)=>(s(),m(O,null,[r("span",{ref_key:"backToTop",ref:o,tabindex:"-1"},null,512),r("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:t},M(c(e).skipToContentLabel||"Skip to content"),1)],64))}}),zs=C(Gs,[["__scopeId","data-v-fcbfc0e0"]]),Ys=g({__name:"Layout",setup(a){const{isOpen:e,open:n,close:o}=U(),t=ie();q(()=>t.path,o),Rn(e,o);const{frontmatter:l}=j(),i=mn(),p=T(()=>!!i["home-hero-image"]);return Ae("hero-image-slot-exists",p),(d,v)=>{const y=z("Content");return c(l).layout!==!1?(s(),m("div",{key:0,class:D(["Layout",c(l).pageClass])},[u(d.$slots,"layout-top",{},void 0,!0),k(zs),k(kn,{class:"backdrop",show:c(e),onClick:c(o)},null,8,["show","onClick"]),k(Ns,null,{"nav-bar-title-before":h(()=>[u(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[u(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[u(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[u(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":h(()=>[u(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[u(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(Ot,{open:c(e),onOpenMenu:c(n)},null,8,["open","onOpenMenu"]),k(Ws,{open:c(e)},{"sidebar-nav-before":h(()=>[u(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":h(()=>[u(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(ht,null,{"page-top":h(()=>[u(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[u(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":h(()=>[u(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":h(()=>[u(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":h(()=>[u(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":h(()=>[u(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":h(()=>[u(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":h(()=>[u(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":h(()=>[u(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[u(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[u(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[u(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":h(()=>[u(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[u(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[u(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":h(()=>[u(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[u(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":h(()=>[u(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[u(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[u(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[u(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[u(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[u(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(vt),u(d.$slots,"layout-bottom",{},void 0,!0)],2)):(s(),A(y,{key:1}))}}}),Xs=C(Ys,[["__scopeId","data-v-d8b57b2d"]]),Ge={Layout:Xs,enhanceApp:({app:a})=>{a.component("Badge",yn)}},Ks={key:0,class:"line"},Qs={style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},Zs={style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},Oe=g({__name:"Import",props:{scope:{},what:{},from:{},isDefaultImport:{type:Boolean}},setup(a){const e=a,n=o=>e.isDefaultImport?` ${o} `:` { ${o} } `;return(o,t)=>e.scope!=="instance"&&e.from?(s(),m("span",Ks,[t[0]||(t[0]=r("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}
2,"import",-1)),r("span",Qs,M(n(o.what)),1),t[1]||(t[1]=r("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"from",-1)),r("span",Zs,' "meteor/'+M(e.from)+'"',1),t[2]||(t[2]=r("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},";",-1))])):f("",!0)}}),ei={class:"language-js vp-adaptive-theme"},ni={class:"shiki shiki-themes github-light github-dark vp-code"},oi={class:"line"},ti={style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},ai=g({__name:"Booleans",props:{from:{},isDefaultImport:{type:Boolean},longname:{},memberof:{}},setup(a){const e=a;return(n,o)=>(s(),m("div",ei,[o[6]||(o[6]=r("button",{title:"Copy Code",class:"copy"},null,-1)),o[7]||(o[7]=r("span",{class:"lang"},"js",-1)),r("pre",ni,[r("code",null,[k(Oe,{what:e.memberof,"is-default-import":e.isDefaultImport,from:e.from,scope:"static"},null,8,["what","is-default-import","from"]),o[1]||(o[1]=dn(` 3<span class="line"></span> 4<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/** </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">@type</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> {Boolean}</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> */</span></span> 5`,5)),r("span",oi,[o[0]||(o[0]=r("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"if",-1)),r("span",ti," ("+M(e.longname)+") {",1)]),o[2]||(o[2]=R(` 6`)),o[3]||(o[3]=r("span",{class:"line"},[r("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}}," // do something")],-1)),o[4]||(o[4]=R(` 7`)),o[5]||(o[5]=r("span",{class:"line"},[r("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"}")],-1))])])]))}}),J={function:()=>'<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {}',string:a=>`<span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "${a}"`,number:()=>'<span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 42',boolean:()=>'<span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> false',object:a=>`<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ${a}`,array:()=>'<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> []',"array.<string>":()=>'<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"string"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]',"array.<object>":()=>'<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}]',"array.<ejsonable>":()=>`<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ${J.ejsonable({pre:"[",post:"]"})}`,ejsonable(a){let e,n;return typeof a=="string"&&(e=""),typeof a=="object"&&(e=a.pre,n=a.post),e.length>1&&(e=""),`<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ${e??""}{ num:${J.number()}</span> , someProp:${J.string("foo")} </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}${n??""}`},ejson(a,e){return J.ejsonable(a,e)},jsoncompatible(a,e){return J.ejsonable(a,e)},promise:()=>'<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Promise {</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}',any:()=>'<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> any',error:a=>`<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Error(${a})`,mongoselector:()=>'<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> MongoSelector',mongomodifier:()=>'<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> MongoModifier',iterationcallback:()=>'<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> IterationCallback',expresshandlerscallback:()=>'<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ExpressHandlersCallback',addruntimeconfighookcallback:()=>'<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> addRuntimeConfigHookCallback',addupdatednotifyhookcallback:()=>'<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> addUpdatedNotifyHookCallback',"tracker.computationfunction":()=>'<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Tracker.ComputationFunction',computation:()=>'<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Computation',func:()=>J.function(),"tracker.computation":()=>J.computation()},si='<span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span>',ii="<br/>",ri=a=>a.replace(/</g,"<").replace(/>/g,">"),ci=a=>`<span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">/** </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">@returns</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ${ri(a)}</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> */</span>`,ze=(a=" // this param is optional ")=>`<span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">${a}</span>`,li=({html:a,pre:e,post:n}={pre:"",post:"",html:""})=>`${e}<span class="line">${a}</span>${n}`,Ye=({primitive:a,arr:e,index:n,isOptional:o,name:t})=>{let l=a[0],i=l.toLowerCase(),p;try{p=J[i](t)}catch(d){throw console.error("primitive that we got:",a),new Error(`primitive ${i} is not registred in the map, here is the error: ${d}`)}return e.length>1?li({html:p+`${si}</span>`,pre:n===0?"":ii,post:o?ze():""}):p+"</span>"},pi={class:"language-js vp-adaptive-theme"}
7,mi={class:"shiki shiki-themes github-light github-dark vp-code"},di={class:"line"},ui={style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},hi={style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},fi={style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},gi=["innerHTML"],yi=g({__name:"Classes",props:{from:{},isDefaultImport:{type:Boolean},longname:{},params:{}},setup(a){var t;const e=a,n=l=>(l.includes(".")&&(l=l.split(".")[1]),l.replace(/(?:^\w|[A-Z]|\b\w)/g,function(i,p){return p===0?i.toLowerCase():i.toUpperCase()}).replace(/\s+/g,"")),o=((t=e==null?void 0:e.params)==null?void 0:t.length)===0;return(l,i)=>(s(),m("div",pi,[i[11]||(i[11]=r("button",{title:"Copy Code",class:"copy"},null,-1)),i[12]||(i[12]=r("span",{class:"lang"},"js",-1)),i[13]||(i[13]=R()),r("pre",mi,[r("code",null,[k(Oe,{what:e.longname.split(".")[0],"is-default-import":e.isDefaultImport,from:e.from,scope:"static"},null,8,["what","is-default-import","from"]),i[7]||(i[7]=R(` 8`)),i[8]||(i[8]=r("span",{class:"line"},null,-1)),i[9]||(i[9]=R(` 9`)),r("span",di,[i[1]||(i[1]=r("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"const",-1)),r("span",ui," "+M(n(e.longname)),1),i[2]||(i[2]=r("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," =",-1)),i[3]||(i[3]=r("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," new",-1)),r("span",hi," "+M(e.longname),1),r("span",fi,[i[0]||(i[0]=R("(")),K(r("span",null,");",512),[[oe,o]])]),i[4]||(i[4]=R(` 10`)),(s(!0),m(O,null,x(e.params,(p,d)=>(s(),m("span",{class:"line",key:p.name},[r("span",{innerHTML:c(Ye)({primitive:[p.type.names[0]],arr:e.params,index:d,isOptional:p.optional,name:p.name})},null,8,gi)]))),128)),i[5]||(i[5]=R(` 11`)),i[6]||(i[6]=r("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},");",-1))]),i[10]||(i[10]=R(` 12`))])])]))}}),bi={class:"language-js vp-adaptive-theme"},vi={class:"shiki shiki-themes github-light github-dark vp-code"},ki=["innerHTML"],wi=["innerHTML"],Ai={class:"line"},Si={style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},Ci={style:{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"}},_i={style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},Mi=["innerHTML"],Ti={class:"line"},Pi=g({__name:"Functions",props:{from:{},isDefaultImport:{type:Boolean},longname:{},memberof:{},fnName:{},params:{},scope:{},returns:{}},setup(a){const e=a,n=e.params.length===0;function o(i){return i.startsWith(".")?i.slice(1):i}function t(i){return i.split("#")[0]}function l(i){var d,v;const p=(v=(d=i==null?void 0:i[0])==null?void 0:d.type)==null?void 0:v.names[0];return p?p.replace(".<","<"):!1}return(i,p)=>(s(),m("div",bi,[p[8]||(p[8]=r("button",{title:"Copy Code",class:"copy"},null,-1)),p[9]||(p[9]=r("span",{class:"lang"},"js",-1)),r("pre",vi,[r("code",null,[k(Oe,{what:e.memberof.split(".")[0],"is-default-import":e.isDefaultImport,from:e.from,scope:e.scope},null,8,["what","is-default-import","from","scope"]),p[3]||(p[3]=R(` 13`)),e.scope==="instance"?(s(),m("span",{key:0,class:"line",innerHTML:c(ze)(`// ${e.memberof} is an instance of ${t(e.longname)}`)},null,8,ki)):f("",!0),p[4]||(p[4]=R(` 14`)),e.returns!==void 0?(s(),m("span",{key:1,class:"line",innerHTML:c(ci)(l(e.returns))},null,8,wi)):f("",!0),p[5]||(p[5]=R(` 15`)),r("span",Ai,[r("span",Si,[r("span",{style:ce({display:e.returns===void 0?"none":""})},p[0]||(p[0]=[r("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"const ",-1),R("result = ")]),4),R(M(e.memberof)+".",1)]),r("span",Ci,M(o(e.fnName)),1),r("span",_i,[p[1]||(p[1]=R("(")),K(r("span",null,");",512),[[oe,n]])])]),p[6]||(p[6]=R(` 16`)),(s(!0),m(O,null,x(e.params,(d,v)=>(s(),m("span",{class:"line",key:d.name},[r("span",{innerHTML:c(Ye)({primitive:[d.type.names[0]],arr:e.params,index:v,isOptional:d.optional,name:d.name})},null,8,Mi)]))),128)),p[7]||(p[7]=R(` 17`)),K(r("span",Ti,p[2]||(p[2]=[r("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},");",-1)]),512),[[oe,!n]])])])]))}}),ji={class:"warning custom-block"},Oi=g({__name:"Locus",props:{locus:{}},setup(a){const e=a;return(n,o)=>(s(),m("div",ji,[r("p",null,M(e.locus)+" only",1)]))}}),Ei=C(Oi,[["__scopeId","data-v-4fb07365"]]),Xe="--vc-auto-duration",Ii=`height var(${Xe}) cubic-bezier(0.33, 1, 0.68, 1)`,ee={padding:0},Ri=300,Di={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:"0"};function Re(a){return a.value?parseFloat(getComputedStyle(a.value).height):0}
17function De(a){if(!a.value)return{};const{transition:e}=getComputedStyle(a.value);return e==="all 0s ease 0s"||e==="all"?{transition:Ii}:{transition:e}}function xe(a){if(!a.value)return!0;const{transition:e}=getComputedStyle(a.value);return typeof window.requestAnimationFrame>"u"||window.matchMedia("(prefers-reduced-motion: reduce)").matches||e.includes("none")||e.includes("height 0s")}function xi(a=0){if(a===0)return 0;const e=a/36,n=Math.round((4+15*e**.25+e/5)*10);return Number.isFinite(n)?n:0}const Li=g({inheritAttrs:!0,__name:"Collapse",props:{when:{type:Boolean},baseHeight:{default:0},as:{default:"div"}},emits:["collapse","expand","collapsed","expanded"],setup(a,{emit:e}){const n=a,o=e,t=Ee(n,"when"),l=Ee(n,"baseHeight"),i=T(()=>({overflow:"hidden",height:`${l.value}px`})),p=T(()=>({...ee,...l.value===0?{display:"none"}:i.value})),d=P(null),v=P(t.value?"expanded":"collapsed"),y=L=>v.value=L;function S(){return t.value?ee:l.value===0?Di:p.value}const b=ke(S()),_=L=>b.value=L,w=L=>_({...b.value,...L}),E=P(Ri),I=L=>E.value=L,N=T(()=>({[Xe]:`${E.value}ms`}));let $=NaN;function V(){_(ee),y("expanded"),o("expanded")}function Y(){_(p.value),y("collapsed"),o("collapsed")}B(()=>{if(!d.value)return;const L=xi(d.value.scrollHeight-l.value);L>0&&I(L),!t.value&&l.value===0&&_(p.value)}),q(t,L=>
17{if(d.value)if($=NaN,L){if(xe(d))return V();y("expanding"),o("expand"),_({...ee,...i.value,...N.value}),requestAnimationFrame(()=>{if(d.value.scrollHeight===0)return V();$=d.value.scrollHeight,w({...De(d),height:`${$}px`,willChange:"height"})})}else{if(xe(d)||(y("collapsing"),o("collapse"),w({...N.value,height:`${d.value.scrollHeight}px`}),d.value.scrollHeight===0))return Y();requestAnimationFrame(()=>{w({...i.value,...De(d),willChange:"height"})})}}),q(l,L=>{t.value||(L>0?w({display:void 0,height:`${L}px`}):w({display:"none"}))});function X(L){L.target&&L.target===d.value&&L.propertyName==="height"&&(t.value?Math.abs(d.value.scrollHeight-Re(d))<1?V():$<d.value.scrollHeight&&w({height:`${d.value.scrollHeight}px`}):Math.abs(l.value-Re(d))<1&&Y())}return(L,Er)=>(s(),A(F(n.as),{ref_key:"collapseRef",ref:d,style:ce(b.value),onTransitionend:X,"data-collapse":v.value},{default:h(()=>[u(L.$slots,"default",un(hn({state:v.value})))]),_:3},40,["style","data-collapse"]))}}),Ni=g({__name:"Caret",props:{isOpen:{type:Boolean}},setup(a){const e=a;return(n,o)=>(s(),m("div",{class:D([e.isOpen?"caret-btn-open ":"caret-btn-closed","caret-btn"]),role:"button","aria-label":"toggle section",tabindex:"0"},o[0]||(o[0]=[r("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24",class:""},[r("path",{d:"M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"})],-1)]),2))}}),$i=C(Ni,[["__scopeId","data-v-7e7825d4"]]),qi={key:0},Fi={key:0},Bi=["innerHTML"],Vi=["innerHTML"],Hi=["innerHTML"],Ui=g({__name:"ParamTable",props:{params:{},from:{},options:{}},setup(a){const e=v=>{const y=[];for(const S of v)y.push(S);return y},n=a,o=e(n.params),t=({params:v})=>{for(const y of v)if(y.name==="options")return!0},l=P(!0);function i(){l.value=!l.value}const p=v=>{const y=e(v);if(y.length===1)return y[0];const S=y.pop();return y.join(", ")+" or "+S},d=`https://github.com/meteor/meteor/blob/devel/packages/${n.from.filePath}#L${n.from.lineNumber}`;return(v,y)=>{var S;return c(o).length>0?(s(),m("div",qi,[r("header",null,[y[0]||(y[0]=r("h4",null,"Arguments:",-1)),r("a",{href:d}," Source code ")]),r("table",null,[y[1]||(y[1]=r("thead",null,[r("tr",null,[r("th",null,"Name"),r("th",null,"Type"),r("th",null,"Description"),r("th",null,"Required")])],-1)),r("tbody",null,[(s(!0),m(O,null,x(c(o),b=>{var _;return s(),m("tr",{key:b.name},[r("td",null,M(b.name),1),r("td",null,M(p(b.type.names)),1),b.name==="options"?(s(),m("td",Fi,[b.description?(s(),m("span",{key:0,innerHTML:b.description},null,8,Bi)):f("",!0),(((_=n.options)==null?void 0:_.length)||-1)>0?(s(),m("button",{key:1,type:"button",onClick:i},[R(M(l.value?"Close":"Open")+" options table ",1),k($i,{"is-open":l.value},null,8,["is-open"])])):f("",!0)])):(s(),m("td",{key:1,innerHTML:b.description??"----"},null,8,Vi)),r("td",null,M(b.optional?"No":"Yes"),1)])}),128))])]),K(k(c(Li),{when:l.value,class:"options-table"},{default:h(()=>[y[4]||(y[4]=r("h4",null,"Options:",-1)),r("table",null,[y[3]||(y[3]=r("thead",null,[r("tr",null,[r("th",null,"Name"),r("th",null,"Type"),r("th",null,"Description"),r("th",null,"Required")])],-1)),r("tbody",null,[(s(!0),m(O,null,x(n.options,b=>(s(),m("tr",{key:b.name},[r("td",null,M(b.name),1),r("td",null,M(b.type.names[0]),1),r("td",{innerHTML:b.description??""},null,8,Hi),y[2]||(y[2]=r("td",null,"No",-1))]))),128))])])]),_:1},8,["when"]),[[oe,t(n)&&n.options&&((S=n.options)==null?void 0:S.length)>0]])])):f("",!0)}}}),Ji=C(Ui,[["__scopeId","data-v-a68c829a"]]),Le={Accounts:{filepath:"accounts-base/server_main.js",kind:"namespace",lineno:3,longname:"Accounts",module:"accounts-base",name:"Accounts",scope:"global",summary:"<p>The namespace for all server-side accounts-related methods.</p>"},"Accounts.addEmailAsync":{filepath:"accounts-password/password_server.js",importfrompackage:"accounts-base",kind:"function",lineno:1047,locus:"Server",longname:"Accounts.addEmailAsync",memberof:"Accounts",module:"accounts-base",name:"addEmailAsync",options:[],params:[{description:"<p>The ID of the user to update.</p>",name:"userId",type:{names:["String"]}},{description:"<p>A new email address for the user.</p>",name:"newEmail",type:{names:["String"]}},{description:`<p>Optional - whether the new email address should 18be marked as verified. Defaults to false.</p>`,name:"verified",optional:!0,type:{names:["Boolean"]}}],scope:"static",summary:`<p>Asynchronously add an email address for a user. Use this instead of directly 19updating the database. The operation will fail if there is a different user 20with an email only differing in case. If the specified user has an existing 21email only differing in case however, we replace it.</p>`},"Accounts.buildEmailUrl":{filepath:"accounts-base/accounts_server.js",kind:"member",lineno:115,locus:"Server",longname:"Accounts.buildEmailUrl",memberof:"Accounts",module:"accounts-base",name:"buildEmailUrl",params:[{description:"<p>The path to append to the root URL (e.g., <code>#/reset-password/TOKEN</code>).</p>",name:"path",type:{names:["String"]}},{defaultvalue:"{}",description:"<p>Additional query parameters to include in the URL.</p>",name:"extraParams",optional:!0,type:{names:["Object"]}}],returns:[{description:"<p>The complete URL.</p>",type:{names:["String"]}}],scope:"static",summary:`<p>Builds a URL for account-related emails by combining the app's 22root URL with a path and optional extra parameters.</p>`},"Accounts.changePassword":{filepath:"accounts-password/password_client.js",importfrompackage:"accounts-base",kind:"function",lineno:176,locus:"Client",longname:"Accounts.changePassword",memberof:"Accounts",module:"accounts-base",name:"changePassword",options:[],params:[{description:"<p>The user's current password. This is <strong>not</strong> sent in plain text over the wire.</p>",name:"oldPassword",type:{names:["String"]}},{description:"<p>A new password for the user. This is <strong>not</strong> sent in plain text over the wire.</p>",name:"newPassword",type:{names:["String"]}},{description:"<p>Optional callback. Called with no arguments on success, or with a single <code>Error</code> argument on failure.</p>",name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Change the current user's password. Must be logged in.</p>"},"Accounts.createUser":{filepath:"accounts-password/password_client.js",importfrompackage:"accounts-base",kind:"function",lineno:118,locus:"Anywhere",longname:"Accounts.createUser",memberof:"Accounts",module:"accounts-base",name:"createUser",options:[{description:"<p>A unique name for this user.</p>",name:"username",type:{names:["String"]}},{description:"<p>The user's email address.</p>",name:"email",type:{names:["String"]}},{description:"<p>The user's password. This is <strong>not</strong> sent in plain text over the wire.</p>",name:"password",type:{names:["String"]}},{description:"<p>The user's profile, typically including the <code>name</code> field.</p>",name:"profile",type:{names:["Object"]}}],params:[{name:"options",type:{names:["Object"]}},{description:"<p>Client only, optional callback. Called with no arguments on success, or with a single <code>Error</code> argument on failure.</p>",name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Create a new user.</p>"},"Accounts.createUserAsync":{filepath:"accounts-password/password_client.js",importfrompackage:"accounts-base",kind:"function",lineno:148,locus:"Anywhere",longname:"Accounts.createUserAsync",memberof:"Accounts",module:"accounts-base",name:"createUserAsync",options:[{description:"<p>A unique name for this user.</p>",name:"username",type:{names:["String"]}},{description:"<p>The user's email address.</p>",name:"email",type:{names:["String"]}},{description:"<p>The user's password. This is <strong>not</strong> sent in plain text over the wire.</p>",name:"password",type:{names:["String"]}},{description:"<p>The user's profile, typically including the <code>name</code> field.</p>",name:"profile",type:{names:["Object"]}}],params:[{name:"options",type:{names:["Object"]}}],scope:"static",summary:"<p>Create a new user and returns a promise of its result.</p>"},"Accounts.createUserVerifyingEmail":{filepath:"accounts-password/password_server.js",importfrompackage:"accounts-base",kind:"function",lineno:1249,locus:"Server",longname:"Accounts.createUserVerifyingEmail",memberof:"Accounts",module:"accounts-base",name:"createUserVerifyingEmail",options:[{description:"<p>A unique name for this user.</p>",name:"username",type:{names:["String"]}},{description:"<p>The user's email address.</p>",name:"email",type:{names:["String"]}},{description:"<p>The user's password. This is <strong>not</strong> sent in plain text over the wire.</p>",name:"password",type:{names:["String"]}},{description:"<p>The user's profile, typically including the <code>name</code> field.</p>",name:"profile",type:{names:["Object"]}}],params:[{description:`<p>The options object to be passed down when creating 23the user</p>`,name:"options",type:{names:["Object"]}}],scope:"static",summary:`<p>Creates an user asynchronously and sends an email if <code>options.email</code> is informed. 24Then if the <code>sendVerificationEmail</code> option from the <code>Accounts</code> package is 25enabled, you'll send a verification email if <code>options.password</code> is informed, 26otherwise you'll send an enrollment email.</p>`},"Accounts.disableUser2fa":{filepath:"accounts-2fa/2fa-client.js",kind:"function",lineno:74,locus:"Client",longname:"Accounts.disableUser2fa",memberof:"Accounts",module:"accounts-2fa",name:"disableUser2fa",options:[],params:[{description:`<p>Optional callback. 27Called with no arguments on success, or with a single <code>Error</code> argument 28on failure.</p>`,name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Disable user 2FA</p>"},"Accounts.emailTemplates":{filepath:"accounts-passwordless/email_templates.js",importfrompackage:"accounts-base",kind:"member",lineno:6,locus:"Server",longname:"Accounts.emailTemplates",memberof:"Accounts",module:"accounts-base",name:"emailTemplates",scope:"static",summary:"<p>Options to customize emails sent from the Accounts system.</p>"},"Accounts.enableUser2fa":{filepath:"accounts-2fa/2fa-client.js",kind:"function",lineno:57,locus:"Client",longname:"Accounts.enableUser2fa",memberof:"Accounts",module:"accounts-2fa",name:"enableUser2fa",options:[],params:[{description:"<p>Code received from the authenticator app.</p>",name:"code",type:{names:["String"]}},{description:`<p>Optional callback. 29Called with no arguments on success, or with a single <code>Error</code> argument 30on failure.</p>`,name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Enable the user 2FA</p>"},"Accounts.findUserByEmail":{filepath:"accounts-base/accounts_server.js",importfrompackage:"accounts-base",kind:"member",lineno:384,locus:"Server",longname:"Accounts.findUserByEmail",memberof:"Accounts",module:"accounts-base",name:"findUserByEmail",params:[{description:"<p>The email address to look for</p>",name:"email",type:{names:["String"]}},{name:"options",optional:!0,type:{names:["Object"]}},{description:"<p>Limit the fields to return from the user document</p>",name:"options.fields",type:{names:["Object"]}}],returns:[{description:"<p>A user if found, else null</p>",type:{names:["Promise.<Object>"]}}],scope:"static",summary:"<p>Find a user by one of their email addresses.</p>"}
30,"Accounts.findUserByUsername":{filepath:"accounts-base/accounts_server.js",importfrompackage:"accounts-base",kind:"member",lineno:397,locus:"Server",longname:"Accounts.findUserByUsername",memberof:"Accounts",module:"accounts-base",name:"findUserByUsername",params:[{description:"<p>The username to look for</p>",name:"username",type:{names:["String"]}},{name:"options",optional:!0,type:{names:["Object"]}},{description:"<p>Limit the fields to return from the user document</p>",name:"options.fields",type:{names:["Object"]}}],returns:[{description:"<p>A user if found, else null</p>",type:{names:["Promise.<Object>"]}}],scope:"static",summary:"<p>Find a user by their username.</p>"},"Accounts.forgotPassword":{filepath:"accounts-password/password_client.js",importfrompackage:"accounts-base",kind:"function",lineno:220,locus:"Client",longname:"Accounts.forgotPassword",memberof:"Accounts",module:"accounts-base",name:"forgotPassword",options:[{description:"<p>The email address to send a password reset link.</p>",name:"email",type:{names:["String"]}}],params:[{name:"options",type:{names:["Object"]}},{description:"<p>Optional callback. Called with no arguments on success, or with a single <code>Error</code> argument on failure.</p>",name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Request a forgot password email.</p>"},"Accounts.generate2faActivationQrCode":{filepath:"accounts-2fa/2fa-client.js",kind:"function",lineno:31,locus:"Client",longname:"Accounts.generate2faActivationQrCode",memberof:"Accounts",module:"accounts-2fa",name:"generate2faActivationQrCode",options:[],params:[{description:"<p>It's the name of your app that will show up when the user scans the QR code.</p>",name:"appName",type:{names:["String"]}},{description:`<p>Called with a single <code>Error</code> argument on failure.
31Or, on success, called with an object containing the QR code in SVG format (svg), 32the QR secret (secret), and the URI so the user can manually activate the 2FA without reading the QR code (uri).</p>`,name:"callback",type:{names:["function"]}}],scope:"static",summary:"<p>Generates a svg QR code and save secret on user</p>"},"Accounts.generateResetToken":{filepath:"accounts-password/password_server.js",importfrompackage:"accounts-base",kind:"function",lineno:532,locus:"Server",longname:"Accounts.generateResetToken",memberof:"Accounts",module:"accounts-base",name:"generateResetToken",options:[],params:[{description:"<p>The id of the user to generate the reset token for.</p>",name:"userId",type:{names:["String"]}},{description:"<p>Which address of the user to generate the reset token for. This address must be in the user's <code>emails</code> list. If <code>null</code>, defaults to the first email in the list.</p>",name:"email",type:{names:["String"]}},{description:"<p><code>resetPassword</code> or <code>enrollAccount</code>.</p>",name:"reason",type:{names:["String"]}},{description:"<p>Optional additional data to be added into the token record.</p>",name:"extraTokenData",optional:!0,type:{names:["Object"]}}],returns:[{description:"<p>Promise of an object with {email, user, token} values.</p>",type:{names:["Promise.<Object>"]}}],scope:"static",summary:"<p>Asynchronously generates a reset token and saves it into the database.</p>"},"Accounts.generateVerificationToken":{filepath:"accounts-password/password_server.js",importfrompackage:"accounts-base",kind:"function",lineno:612,locus:"Server",longname:"Accounts.generateVerificationToken",memberof:"Accounts",module:"accounts-base",name:"generateVerificationToken",options:[],params:[{description:"<p>The id of the user to generate the e-mail verification token for.</p>",name:"userId",type:{names:["String"]}},{description:"<p>Which address of the user to generate the e-mail verification token for. This address must be in the user's <code>emails</code> list. If <code>null</code>, defaults to the first unverified email in the list.</p>",name:"email",type:{names:["String"]}},{description:"<p>Optional additional data to be added into the token record.</p>",name:"extraTokenData",optional:!0,type:{names:["Object"]}}],returns:[{description:"<p>Promise of an object with {email, user, token} values.</p>",type:{names:["Promise.<Object>"]}}],scope:"static",summary:"<p>Generates asynchronously an e-mail verification token and saves it into the database.</p>"},"Accounts.has2faEnabled":{filepath:"accounts-2fa/2fa-client.js",kind:"function",lineno:18,locus:"Client",longname:"Accounts.has2faEnabled",memberof:"Accounts",module:"accounts-2fa",name:"has2faEnabled",options:[],params:[{description:`<p>Called with a boolean on success that indicates whether the user has 33or not 2FA enabled, or with a single <code>Error</code> argument on failure.</p>`,name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Verify if the logged user has 2FA enabled</p>"},"Accounts.onEmailVerificationLink":{filepath:"accounts-base/accounts_client.js",forceMemberof:!0,kind:"member",lineno:867,locus:"Client",longname:"Accounts.onEmailVerificationLink",memberof:"Accounts",module:"accounts-base",name:".onEmailVerificationLink",params:[{description:`<p>The function to call. It is given two arguments:</p> 34<ol> 35<li><code>token</code>: An email verification token that can be passed to 36<a href="#Accounts-verifyEmail"><code>Accounts.verifyEmail</code></a>.</li> 37<li><code>done</code>: A function to call when the email verification UI flow is complete. 38The normal login process is suspended until this function is called, so 39that the user can be notified that they are verifying their email before 40being logged in.</li> 41</ol>`,name:"callback",type:{names:["function"]}}],scope:"static",summary:`<p>Register a function to call when an email verification link is 42clicked in an email sent by 43<a href="#Accounts-sendVerificationEmail"><code>Accounts.sendVerificationEmail</code></a>. 44This function should be called in top-level code, not inside 45<code>Meteor.startup()</code>.</p>`},"Accounts.onEnrollmentLink":{filepath:"accounts-base/accounts_client.js",forceMemberof:!0,kind:"member",lineno:889,locus:"Client",longname:"Accounts.onEnrollmentLink",memberof:"Accounts",module:"accounts-base",name:".onEnrollmentLink",params:[{description:`<p>The function to call. It is given two arguments:</p> 46<ol> 47<li><code>token</code>: A password reset token that can be passed to 48<a href="#Accounts-resetPassword"><code>Accounts.resetPassword</code></a> to give the newly 49enrolled account a password.</li> 50<li><code>done</code>: A function to call when the enrollment UI flow is complete. 51The normal login process is suspended until this function is called, so that 52user A can be enrolled even if user B was logged in.</li> 53</ol>`,name:"callback",type:{names:["function"]}}],scope:"static",summary:`<p>Register a function to call when an account enrollment link is 54clicked in an email sent by 55<a href="#Accounts-sendEnrollmentEmail"><code>Accounts.sendEnrollmentEmail</code></a>. 56This function should be called in top-level code, not inside 57<code>Meteor.startup()</code>.</p>`},"Accounts.onResetPasswordLink":{filepath:"accounts-base/accounts_client.js",forceMemberof:!0,kind:"member",lineno:846,locus:"Client",longname:"Accounts.onResetPasswordLink",memberof:"Accounts",module:"accounts-base",name:".onResetPasswordLink",params:[{description:`<p>The function to call. It is given two arguments:</p> 58<ol> 59<li><code>token</code>: A password reset token that can be passed to 60<a href="#Accounts-resetPassword"><code>Accounts.resetPassword</code></a>.</li> 61<li><code>done</code>: A function to call when the password reset UI flow is complete. The normal 62login process is suspended until this function is called, so that the 63password for user A can be reset even if user B was logged in.</li> 64</ol>`,name:"callback",type:{names:["function"]}}],scope:"static",summary:`<p>Register a function to call when a reset password link is clicked 65in an email sent by 66<a href="#Accounts-sendResetPasswordEmail"><code>Accounts.sendResetPasswordEmail</code></a>. 67This function should be called in top-level code, not inside 68<code>Meteor.startup()</code>.</p>`}
68,"Accounts.removeEmail":{filepath:"accounts-password/password_server.js",importfrompackage:"accounts-base",kind:"function",lineno:1157,locus:"Server",longname:"Accounts.removeEmail",memberof:"Accounts",module:"accounts-base",name:"removeEmail",options:[],params:[{description:"<p>The ID of the user to update.</p>",name:"userId",type:{names:["String"]}},{description:"<p>The email address to remove.</p>",name:"email",type:{names:["String"]}}],scope:"static",summary:`<p>Remove an email address asynchronously for a user. Use this instead of updating 69the database directly.</p>`},"Accounts.replaceEmailAsync":{filepath:"accounts-password/password_server.js",importfrompackage:"accounts-base",kind:"function",lineno:1003,locus:"Server",longname:"Accounts.replaceEmailAsync",memberof:"Accounts",module:"accounts-base",name:"replaceEmailAsync",options:[],params:[{description:"<p>The ID of the user to update.</p>",name:"userId",type:{names:["String"]}},{description:"<p>The email address to replace.</p>",name:"oldEmail",type:{names:["String"]}},{description:"<p>The new email address to use.</p>",name:"newEmail",type:{names:["String"]}},{description:`<p>Optional - whether the new email address should 70be marked as verified. Defaults to false.</p>`,name:"verified",optional:!0,type:{names:["Boolean"]}}],scope:"static",summary:`<p>Asynchronously replace an email address for a user. Use this instead of directly 71updating the database. The operation will fail if there is a different user 72with an email only differing in case. If the specified user has an existing 73email only differing in case however, we replace it.</p>`},"Accounts.requestLoginTokenForUser":{filepath:"accounts-passwordless/passwordless_client.js",kind:"function",lineno:98,locus:"Client",longname:"Accounts.requestLoginTokenForUser",memberof:"Accounts",module:"accounts-passwordless",name:"requestLoginTokenForUser",options:[{description:"<p>The email address to get a token for or username or a mongo selector.</p>",name:"selector",type:{names:["String"]}},{description:"<p>When creating a user use this data if selector produces no result.</p>",name:"userData",type:{names:["String"]}},{description:"<p>For example userCreationDisabled.</p>",name:"options",type:{names:["Object"]}}],params:[{name:"options",type:{names:["Object"]}},{description:"<p>Optional callback. Called with no arguments on success, or with a single <code>Error</code> argument on failure.</p>",name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Request a login token.</p>"},"Accounts.resetPassword":{filepath:"accounts-password/password_client.js",importfrompackage:"accounts-base",kind:"function",lineno:247,locus:"Client",longname:"Accounts.resetPassword",memberof:"Accounts",module:"accounts-base",name:"resetPassword",options:[],params:[{description:"<p>The token retrieved from the reset password URL.</p>",name:"token",type:{names:["String"]}},{description:"<p>A new password for the user. This is <strong>not</strong> sent in plain text over the wire.</p>",name:"newPassword",type:{names:["String"]}},{description:"<p>Optional callback. Called with no arguments on success, or with a single <code>Error</code> argument on failure.</p>",name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Reset the password for a user using a token received in email. Logs the user in afterwards if the user doesn't have 2FA enabled.</p>"},"Accounts.sendEnrollmentEmail":{filepath:"accounts-password/password_server.js",importfrompackage:"accounts-base",kind:"function",lineno:710,locus:"Server",longname:"Accounts.sendEnrollmentEmail",memberof:"Accounts",module:"accounts-base",name:"sendEnrollmentEmail",options:[],params:[{description:"<p>The id of the user to send email to.</p>",name:"userId",type:{names:["String"]}},{description:"<p>Optional. Which address of the user's to send the email to. This address must be in the user's <code>emails</code> list. Defaults to the first email in the list.</p>",name:"email",optional:!0,type:{names:["String"]}},{description:"<p>Optional additional data to be added into the token record.</p>",name:"extraTokenData",optional:!0,type:{names:["Object"]}},{description:"<p>Optional additional params to be added to the enrollment url.</p>",name:"extraParams",optional:!0,type:{names:["Object"]}}],returns:[{description:"<p>Promise of an object {email, user, token, url, options} values.</p>",type:{names:["Promise.<Object>"]}}],scope:"static",summary:"<p>
73Send an email asynchronously with a link the user can use to set their initial password.</p>"},"Accounts.sendLoginTokenEmail":{filepath:"accounts-passwordless/passwordless_server.js",kind:"function",lineno:221,locus:"Server",longname:"Accounts.sendLoginTokenEmail",memberof:"Accounts",module:"accounts-passwordless",name:"sendLoginTokenEmail",options:[{description:"<p>The id of the user to send email to.</p>",name:"userId",type:{names:["String"]}},{description:"<p>The token to be provided</p>",name:"sequence",type:{names:["String"]}},{description:"<p>Which address of the user's to send the email to.</p>",name:"email",type:{names:["String"]}},{description:"<p>Optional. Extra properties</p>",name:"extra",type:{names:["Object"]}}],params:[{name:"options",type:{names:["Object"]}}],returns:[{description:"<p>Object with {email, user, token, url, options} values.</p>",type:{names:["Object"]}}],scope:"static",summary:"<p>Send an email with a link the user can use to login with token.</p>"},"Accounts.sendResetPasswordEmail":{filepath:"accounts-password/password_server.js",importfrompackage:"accounts-base",kind:"function",lineno:678,locus:"Server",longname:"Accounts.sendResetPasswordEmail",memberof:"Accounts",module:"accounts-base",name:"sendResetPasswordEmail",options:[],params:[{description:"<p>The id of the user to send email to.</p>",name:"userId",type:{names:["String"]}},{description:"<p>Optional. Which address of the user's to send the email to. This address must be in the user's <code>emails</code> list. Defaults to the first email in the list.</p>",name:"email",optional:!0,type:{names:["String"]}},{description:"<p>Optional additional data to be added into the token record.</p>",name:"extraTokenData",optional:!0,type:{names:["Object"]}},{description:"<p>Optional additional params to be added to the reset url.</p>",name:"extraParams",optional:!0,type:{names:["Object"]}}],returns:[{description:"<p>Promise of an object with {email, user, token, url, options} values.</p>",type:{names:["Promise.<Object>"]}}],scope:"static",summary:"<p>Send an email asynchronously with a link the user can use to reset their password.</p>"},"Accounts.sendVerificationEmail":{filepath:"accounts-password/password_server.js",importfrompackage:"accounts-base",kind:"function",lineno:897,locus:"Server",longname:"Accounts.sendVerificationEmail",memberof:"Accounts",module:"accounts-base",name:"sendVerificationEmail",options:[],params:[{description:"<p>The id of the user to send email to.</p>",name:"userId",type:{names:["String"]}},{description:"<p>Optional. Which address of the user's to send the email to. This address must be in the user's <code>emails</code> list. Defaults to the first unverified email in the list.</p>",name:"email",optional:!0,type:{names:["String"]}},{description:"<p>Optional additional data to be added into the token record.</p>",name:"extraTokenData",optional:!0,type:{names:["Object"]}},{description:"<p>Optional additional params to be added to the verification url.</p>",name:"extraParams",optional:!0,type:{names:["Object"]}}],returns:[{description:"<p>Promise of an object with {email, user, token, url, options} values.</p>",type:{names:["Promise.<Object>"]}}],scope:"static",summary:"<p>Send an email asynchronously with a link the user can use verify their email address.</p>"},"Accounts.setPasswordAsync":{filepath:"accounts-password/password_server.js",importfrompackage:"accounts-base",kind:"function",lineno:472,locus:"Server",longname:"Accounts.setPasswordAsync",memberof:"Accounts",module:"accounts-base",name:"setPasswordAsync",options:[{description:"<p>Logout all current connections with this userId (default: true)</p>",name:"logout",type:{names:["Object"]}}],params:[{description:"<p>The id of the user to update.</p>",name:"userId",type:{names:["String"]}},{description:"<p>A new password for the user.</p>",name:"newPlaintextPassword",type:{names:["String"]}},{name:"options",optional:!0,type:{names:["Object"]}}],scope:"static",summary:"<p>Forcibly change the password for a user.</p>"},"Accounts.setUsername":{filepath:"accounts-password/password_server.js",importfrompackage:"accounts-base",kind:"function",lineno:372,locus:"Server",longname:"Accounts.setUsername",memberof:"Accounts",module:"accounts-base",name:"setUsername",options:[],params:[{description:"<p>The ID of the user to update.</p>",name:"userId",type:{names:["String"]}},{description:"<p>A new username for the user.</p>",name:"newUsername",type:{names:["String"]}}],scope:"static",summary:`<p>Change a user's username asynchronously. Use this instead of updating the 74database directly. The operation will fail if there is an existing user 75with a username only differing in case.</p>`},"Accounts.ui":{filepath:"accounts-ui-unstyled/accounts_ui.js",importfrompackage:"accounts-base",kind:"namespace",lineno:7,longname:"Accounts.ui",memberof:"Accounts",module:"accounts-base",name:"ui",scope:"static",summary:"<p>Accounts UI</p>"},"Accounts.ui.config":{filepath:"accounts-ui-unstyled/accounts_ui.js",importfrompackage:"accounts-base",kind:"function",lineno:51,locus:"Client",longname:"Accounts.ui.config",memberof:"Accounts.ui",module:"accounts-base",name:"config",options:[{description:'<p>Which <a href="#requestpermissions">permissions</a> to request from the user for each external service.</p>',name:"requestPermissions",type:{names:["Object"]}},{description:'<p>To ask the user for permission to act on their behalf when offline, map the relevant external service to <code>true</code>. Currently only supported with Google. See <a href="#meteor_loginwithexternalservice">Meteor.loginWithExternalService</a> for more details.</p>',name:"requestOfflineToken",type:{names:["Object"]}},{description:"<p>If true, forces the user to approve the app's permissions, even if previously approved. Currently only supported with Google.</p>",name:"forceApprovalPrompt",type:{names:["Object"]}},{description:"<p>Which fields to display in the user creation form. One of '<code>USERNAME_AND_EMAIL</code>', '<code>USERNAME_AND_OPTIONAL_EMAIL</code>', '<code>USERNAME_ONLY</code>', or '<code>EMAIL_ONLY</code>' (default).</p>",name:"passwordSignupFields",type:{names:["String"]}},{description:"<p>Which fields to display in the user creation form. One of '<code>USERNAME_AND_EMAIL</code>', '<code>EMAIL_ONLY</code>' (default).</p>",name:"passwordlessSignupFields",type:{names:["String"]}}],params:[{name:"options",type:{names:["Object"]}}],scope:"static",summary:'<p>Configure the behavior of <a href="#accountsui"><code>{{> loginButtons}}</code></a>.</p>'},"Accounts.urls":{filepath:"accounts-base/accounts_server.js",kind:"member",lineno:86,locus:"Server",longname:"Accounts.urls",memberof:"Accounts",module:"accounts-base",name:"urls",properties:[{description:"<p><code>(token, extraParams) => string</code> - Generates password reset URL.</p>",name:"resetPassword",type:{names:["function"]}},{description:"<p><code>(token, extraParams) => string</code> - Generates email verification URL.</p>",name:"verifyEmail",type:{names:["function"]}},{description:"<p><code>(token, extraParams) => string</code> - Generates account enrollment URL.</p>",name:"enrollAccount",type:{names:["function"]}},{description:"<p><code>(selector, token, extraParams) => string</code> - Generates login token URL.</p>",name:"loginToken",type:{names:["function"]}}],scope:"static",summary:`<p>Object containing functions that generate URLs for account-related emails. 76Override these to customize URLs in emails sent by 77<a href="#Accounts-sendResetPasswordEmail"><code>Accounts.sendResetPasswordEmail</code></a>, 78<a href="#Accounts-sendEnrollmentEmail"><code>Accounts.sendEnrollmentEmail</code></a>, and 79<a href="#Accounts-sendVerificationEmail"><code>Accounts.sendVerificationEmail</code></a>.</p> 80<p>By default, URLs use hash fragments (e.g., <code>#/reset-password/:token</code>) for security: 81hash fragments are not sent to the server in HTTP requests, preventing tokens from 82appearing in server logs or referrer headers.</p>`,type:{names:["Object"]}},"Accounts.verifyEmail":{filepath:"accounts-password/password_client.js",importfrompackage:"accounts-base",kind:"function",lineno:279,locus:"Client",longname:"Accounts.verifyEmail",memberof:"Accounts",module:"accounts-base",name:"verifyEmail",options:[],params:[{description:"<p>The token retrieved from the verification URL.</p>",name:"token",type:{names:["String"]}},{description:"<p>Optional callback. Called with no arguments on success, or with a single <code>Error</code> argument on failure.</p>",name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Marks the user's email address as verified. Logs the user in afterwards if the user doesn't have 2FA enabled.</p>"},AccountsClient:{augments:["AccountsCommon"],filepath:"accounts-base/accounts_client.js",instancename:"accountsClient",kind:"class",lineno:3,locus:"Client",longname:"AccountsClient",module:"accounts-base",name:"AccountsClient",options:[{description:"<p>Optional DDP connection to reuse.</p>",name:"connection",type:{names:["Object"]}},{description:"<p>Optional URL for creating a new DDP connection.</p>",name:"ddpUrl",type:{names:["String"]}},{description:"<p>Optional Define what kind of storage you want for credentials on the client. Default is 'local' to use <code>localStorage</code>
82. Set to 'session' to use session storage. Use 'none' to avoid persisting tokens.</p>",name:"clientStorage",type:{names:["'session'","'local'","'none'"]}},{description:"<p>Optional Enable HttpOnly cookie flow for auth resume. When enabled, the client will try to refresh a login token from a server HttpOnly cookie during startup, and will sync the cookie after logins/logouts.</p>",name:"useHttpOnlyCookies",type:{names:["Boolean"]}}],params:[{description:"<p>an object with fields:</p>",name:"options",type:{names:["Object"]}}],scope:"global",summary:"<p>Constructor for the <code>Accounts</code> object on the client.</p>"},"AccountsClient#_registerLinkCallback":{filepath:"accounts-base/accounts_client.js",kind:"function",lineno:836,locus:"Client",longname:"AccountsClient#_registerLinkCallback",memberof:"AccountsClient",module:"accounts-base",name:"_registerLinkCallback",options:[],params:[{description:"<p>The callback type (e.g. 'reset-password', 'verify-email', 'enroll-account').</p>",name:"type",type:{names:["String"]}},{description:"<p>The function to call when the link is clicked.</p>",name:"callback",type:{names:["function"]}}],scope:"instance",summary:"<p>Shared implementation for registering account link callbacks.</p>"},"AccountsClient#applyLoginFunction":{filepath:"accounts-base/accounts_client.js",kind:"function",lineno:145,locus:"Client",longname:"AccountsClient#applyLoginFunction",memberof:"AccountsClient",module:"accounts-base",name:"applyLoginFunction",options:[],params:[{description:"<p>The name of the login function you wanted to call.</p>",name:"funcName",type:{names:["String"]}},{description:"<p>The <code>arguments</code> for the login function.</p>",name:"funcArgs",type:{names:["Array"]}}],scope:"instance",summary:"<p>Same as ``callLoginFunction<code>but accept an</code>arguments` which contains all arguments for the login\nfunction.</p>"},"AccountsClient#callLoginFunction":{filepath:"accounts-base/accounts_client.js",kind:"function",lineno:131,locus:"Client",longname:"AccountsClient#callLoginFunction",memberof:"AccountsClient",module:"accounts-base",name:"callLoginFunction",options:[],params:[{description:"<p>The name of the login function you wanted to call.</p>",name:"funcName",type:{names:["String"]}}],scope:"instance",summary:`<p>Call a login function defined using <code>Accounts.registerClientLoginFunction</code>. Excluding the first argument, all remaining 83arguments are passed to the login function accordingly. Use <code>applyLoginFunction</code> if you want to pass in an arguments array that contains 84all arguments for the login function.</p>`},"AccountsClient#config":{examples:[`// For UI-related options like forbidClientAccountCreation, call Accounts.config on both client and server 85// Create a shared configuration file (e.g., lib/accounts-config.js): 86import { Accounts } from 'meteor/accounts-base'; 87 88Accounts.config({ 89 forbidClientAccountCreation: true, 90 sendVerificationEmail: true, 91}); 92 93// Then import this file in both client/main.js and server/main.js: 94// import '../lib/accounts-config.js';`],filepath:"accounts-base/accounts_common.js",inherited:!0,inherits:"AccountsCommon#config",kind:"function",lineno:244,locus:"Anywhere",longname:"AccountsClient#config",memberof:"AccountsClient",module:"accounts-base",name:"config",options:[{description:"<p>New users with an email address will receive an address verification email.</p>",name:"sendVerificationEmail",type:{names:["Boolean"]}},{description:'<p>Calls to <a href="#accounts_createuser"><code>createUser</code></a> from the client will be rejected. In addition, if you are using <a href="#accountsui">accounts-ui</a>, the "Create account" link will not be available. <strong>Important</strong>: This option must be set on both the client and server to take full effect. If only set on the server, account creation will be blocked but the UI will still show the "Create account" link.</p>',name:"forbidClientAccountCreation",type:{names:["Boolean"]}},{description:"<p>If set to a string, only allows new users if the domain part of their email address matches the string. If set to a function, only allows new users if the function returns true. The function is passed the full email address of the proposed new user. Works with password-based sign-in and external services that expose email addresses (Google, Facebook, GitHub). All existing users still can log in after enabling this option. Example: <code>Accounts.config({ restrictCreationByEmailDomain: 'school.edu' })</code>.</p>",name:"restrictCreationByEmailDomain",type:{names:["String","function"]}},{description:"<p>The number of milliseconds from when a user logs in until their token expires and they are logged out, for a more granular control. If <code>loginExpirationInDays</code> is set, it takes precedent.</p>",name:"loginExpiration",type:{names:["Number"]}},{description:"<p>The number of days from when a user logs in until their token expires and they are logged out. Defaults to 90. Set to <code>null</code> to disable login expiration.</p>",name:"loginExpirationInDays",type:{names:["Number"]}},{description:"<p>When using the <code>oauth-encryption</code> package, the 16 byte key using to encrypt sensitive account credentials in the database, encoded in base64. This option may only be specified on the server. See packages/oauth-encryption/README.md for details.</p>",name:"oauthSecretKey",type:{names:["String"]}},{description:"<p>The number of days from when a link to reset password is sent until token expires and user can't reset password with the link anymore. Defaults to 3.</p>",name:"passwordResetTokenExpirationInDays",type:{names:["Number"]}},{description:"<p>The number of milliseconds from when a link to reset password is sent until token expires and user can't reset password with the link anymore. If <code>passwordResetTokenExpirationInDays</code> is set, it takes precedent.</p>",name:"passwordResetTokenExpiration",type:{names:["Number"]}},{description:"<p>The number of days from when a link to set initial password is sent until token expires and user can't set password with the link anymore. Defaults to 30.</p>",name:"passwordEnrollTokenExpirationInDays",type:{names:["Number"]}},{description:"<p>The number of milliseconds from when a link to set initial password is sent until token expires and user can't set password with the link anymore. If <code>passwordEnrollTokenExpirationInDays</code> is set, it takes precedent.</p>",name:"passwordEnrollTokenExpiration",type:{names:["Number"]}},{description:"<p>Return ambiguous error messages from login failures to prevent user enumeration. Defaults to <code>true</code>.</p>",name:"ambiguousErrorMessages",type:{names:["Boolean"]}},{description:"<p>
94Allows override of number of bcrypt rounds (aka work factor) used to store passwords. The default is 10.</p>",name:"bcryptRounds",type:{names:["Number"]}},{description:"<p>Enable argon2 algorithm usage in replacement for bcrypt. The default is <code>false</code>.</p>",name:"argon2Enabled",type:{names:["Boolean"]}},{description:"<p>Allows override of the argon2 algorithm type. The default is <code>argon2id</code>.</p>",name:"argon2Type",type:{names:["'argon2id'","'argon2i'","'argon2d'"]}},{description:"<p>Allows override of number of argon2 iterations (aka time cost) used to store passwords. The default is 2.</p>",name:"argon2TimeCost",type:{names:["Number"]}},{description:"<p>Allows override of the amount of memory (in KiB) used by the argon2 algorithm. The default is 19456 (19MB).</p>",name:"argon2MemoryCost",type:{names:["Number"]}},{description:"<p>Allows override of the number of threads used by the argon2 algorithm. The default is 1.</p>",name:"argon2Parallelism",type:{names:["Number"]}},{description:"<p>To exclude by default large custom fields from <code>Meteor.user()</code> and <code>Meteor.findUserBy...()</code> functions when called without a field selector, and all <code>onLogin</code>, <code>onLoginFailure</code> and <code>onLogout</code> callbacks. Example: <code>Accounts.config({ defaultFieldSelector: { myBigArray: 0 }})</code>. Beware when using this. If, for instance, you do not include <code>email</code> when excluding the fields, you can have problems with functions like <code>forgotPassword</code> that will break because they won't have the required data available. It's recommend that you always keep the fields <code>_id</code>, <code>username</code>, and <code>email</code>.</p>",name:"defaultFieldSelector",type:{names:["MongoFieldSpecifier"]}},{description:"<p>A collection name or a Mongo.Collection object to hold the users.</p>",name:"collection",type:{names:["String","Mongo.Collection"]}},{description:"<p>When using the package <code>accounts-2fa</code>, use this to set the amount of time a token sent is valid. As it's just a number, you can use, for example, 0.5 to make the token valid for just half hour. The default is 1 hour.</p>",name:"loginTokenExpirationHours",type:{names:["Number"]}},{description:"<p>When using the package <code>accounts-2fa</code>, use this to the size of the token sequence generated. The default is 6.</p>",name:"tokenSequenceLength",type:{names:["Number"]}},{description:"<p>By default login credentials are stored in local storage, setting this to true will switch to using session storage.</p>",name:"clientStorage",type:{names:["'session'","'local'"]}}],overrides:"AccountsCommon#config",params:[{name:"options",type:{names:["Object"]}}],scope:"instance",summary:"<p>Set global accounts options. You can also set these in <code>Meteor.settings.packages.accounts</code> without the need to call this function.</p>"},"AccountsClient#loggingIn":{filepath:"accounts-base/accounts_client.js",kind:"function",lineno:97,locus:"Client",longname:"AccountsClient#loggingIn",memberof:"AccountsClient",module:"accounts-base",name:"loggingIn",options:[],params:[],scope:"instance",summary:"<p>True if a login method (such as <code>Meteor.loginWithPassword</code>, <code>Meteor.loginWithFacebook</code>, or <code>Accounts.createUser</code>) is currently in progress. A reactive data source.</p>"},"AccountsClient#loggingOut":{filepath:"accounts-base/accounts_client.js",kind:"function",lineno:105,locus:"Client",longname:"AccountsClient#loggingOut",memberof:"AccountsClient",module:"accounts-base",name:"loggingOut",options:[],params:[],scope:"instance",summary:"<p>True if a logout method (such as <code>Meteor.logout</code>) is currently in progress. A reactive data source.</p>"},"AccountsClient#logout":{filepath:"accounts-base/accounts_client.js",kind:"function",lineno:157,locus:"Client",longname:"AccountsClient#logout",memberof:"AccountsClient",module:"accounts-base",name:"logout",options:[],params:[{description:"<p>Optional callback. Called with no arguments on success, or with a single <code>Error</code> argument on failure.</p>",name:"callback",optional:!0,type:{names:["function"]}}],scope:"instance",summary:"<p>Log the user out.</p>"},"AccountsClient#logoutAllClients":{filepath:"accounts-base/accounts_client.js",kind:"function",lineno:185,locus:"Client",longname:"AccountsClient#logoutAllClients",memberof:"AccountsClient",module:"accounts-base",name:"logoutAllClients",options:[],params:[{description:"<p>Optional callback. Called with no arguments on success, or with a single <code>Error</code> argument on failure.</p>",name:"callback",optional:!0,type:{names:["function"]}}],scope:"instance",summary:"<p>Log out all clients logged in as the current user and logs the current user out as well.</p>"},"AccountsClient#logoutOtherClients":{filepath:"accounts-base/accounts_client.js",kind:"function",lineno:213,locus:"Client",longname:"AccountsClient#logoutOtherClients",memberof:"AccountsClient",module:"accounts-base",name:"logoutOtherClients",options:[],params:[{description:"<p>Optional callback. Called with no arguments on success, or with a single <code>Error</code> argument on failure.</p>",name:"callback",optional:!0,type:{names:["function"]}}],scope:"instance",summary:"<p>Log out other clients logged in as the current user, but does not log out the client that calls this function.</p>"},"AccountsClient#onLogin":{filepath:"accounts-base/accounts_common.js",inherited:!0,inherits:"AccountsCommon#onLogin",kind:"function",lineno:317,locus:"Anywhere",longname:"AccountsClient#onLogin",memberof:"AccountsClient",module:"accounts-base",name:"onLogin",options:[],params:[{description:`<p>The callback to be called when login is successful. 95The callback receives a single object that
96holds login details. This object contains the login 97result type (password, resume, etc.) on both the 98client and server. <code>onLogin</code> callbacks registered 99on the server also receive extra data, such 100as user details, connection information, etc.</p>`,name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Register a callback to be called after a login attempt succeeds.</p>"},"AccountsClient#onLoginFailure":{filepath:"accounts-base/accounts_common.js",inherited:!0,inherits:"AccountsCommon#onLoginFailure",kind:"function",lineno:329,locus:"Anywhere",longname:"AccountsClient#onLoginFailure",memberof:"AccountsClient",module:"accounts-base",name:"onLoginFailure",options:[],params:[{description:"<p>The callback to be called after the login has failed.</p>",name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Register a callback to be called after a login attempt fails.</p>"},"AccountsClient#onLogout":{filepath:"accounts-base/accounts_common.js",inherited:!0,inherits:"AccountsCommon#onLogout",kind:"function",lineno:338,locus:"Anywhere",longname:"AccountsClient#onLogout",memberof:"AccountsClient",module:"accounts-base",name:"onLogout",options:[],params:[{description:"<p>The callback to be called when logout is successful.</p>",name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Register a callback to be called after a logout attempt succeeds.</p>"},"AccountsClient#registerClientLoginFunction":{filepath:"accounts-base/accounts_client.js",kind:"function",lineno:117,locus:"Client",longname:"AccountsClient#registerClientLoginFunction",memberof:"AccountsClient",module:"accounts-base",name:"registerClientLoginFunction",options:[],params:[{description:`<p>The name of your login function. Used by <code>Accounts.callLoginFunction</code> and <code>Accounts.applyLoginFunction</code>. 101Should be the OAuth provider name accordingly.</p>`,name:"funcName",type:{names:["String"]}},{description:"<p>The actual function you want to call. Just write it in the manner of <code>loginWithFoo</code>.</p>",name:"func",type:{names:["function"]}}],scope:"instance",summary:`<p>Register a new login function on the client. Intended for OAuth package authors. You can call the login function by using 102<code>Accounts.callLoginFunction</code> or <code>Accounts.callLoginFunction</code>.</p>`},"AccountsClient#user":{filepath:"accounts-base/accounts_common.js",inherited:!0,inherits:"AccountsCommon#user",kind:"function",lineno:172,locus:"Anywhere",longname:"AccountsClient#user",memberof:"AccountsClient",module:"accounts-base",name:"user",options:[{description:"<p>Dictionary of fields to return or exclude.</p>",name:"fields",type:{names:["MongoFieldSpecifier"]}}],params:[{name:"options",optional:!0,type:{names:["Object"]}}],scope:"instance",summary:"<p>Get the current user record, or <code>null</code> if no user is logged in. On the client this can also be <code>undefined</code> while a user id is set but the user document is not yet in Minimongo. A reactive data source. In the server this fuction returns a promise.</p>"},"AccountsClient#userAsync":{async:!0,filepath:"accounts-base/accounts_common.js",inherited:!0,inherits:"AccountsCommon#userAsync",kind:"function",lineno:197,locus:"Anywhere",longname:"AccountsClient#userAsync",memberof:"AccountsClient",module:"accounts-base",name:"userAsync",options:[{description:"<p>Dictionary of fields to return or exclude.</p>",name:"fields",type:{names:["MongoFieldSpecifier"]}}],params:[{name:"options",optional:!0,type:{names:["Object"]}}],scope:"instance",summary:"<p>Get the current user record, or <code>null</code> if no user is logged in. May also be <code>undefined</code> when a user id is set but the user document cannot be found yet.</p>"},"AccountsClient#userId":{filepath:"accounts-base/accounts_common.js",inherited:!0,inherits:"AccountsCommon#userId",kind:"function",lineno:128,locus:"Anywhere",longname:"AccountsClient#userId",memberof:"AccountsClient",module:"accounts-base",name:"userId",options:[],overrides:"AccountsCommon#userId",params:[],scope:"instance",summary:"<p>Get the current user id, or <code>null</code> if no user is logged in. A reactive data source.</p>"},AccountsCommon:{filepath:"accounts-base/accounts_common.js",instancename:"accountsClientOrServer",kind:"class",lineno:32,locus:"Anywhere",longname:"AccountsCommon",module:"accounts-base",name:"AccountsCommon",options:[],params:[{description:`<p>an object with fields:</p> 103<ul> 104<li>connection {Object} Optional DDP connection to reuse.</li> 105<li>
105ddpUrl {String} Optional URL for creating a new DDP connection.</li> 106<li>collection {String|Mongo.Collection} The name of the Mongo.Collection 107or the Mongo.Collection object to hold the users.</li> 108</ul>`,name:"options",type:{names:["Object"]}}],scope:"global",summary:"<p>Super-constructor for AccountsClient and AccountsServer.</p>"},"AccountsCommon#config":{examples:[`// For UI-related options like forbidClientAccountCreation, call Accounts.config on both client and server 109// Create a shared configuration file (e.g., lib/accounts-config.js): 110import { Accounts } from 'meteor/accounts-base'; 111 112Accounts.config({ 113 forbidClientAccountCreation: true, 114 sendVerificationEmail: true, 115}); 116 117// Then import this file in both client/main.js and server/main.js: 118// import '../lib/accounts-config.js';`],filepath:"accounts-base/accounts_common.js",kind:"function",lineno:244,locus:"Anywhere",longname:"AccountsCommon#config",memberof:"AccountsCommon",module:"accounts-base",name:"config",options:[{description:"<p>New users with an email address will receive an address verification email.</p>",name:"sendVerificationEmail",type:{names:["Boolean"]}},{description:'<p>Calls to <a href="#accounts_createuser"><code>createUser</code></a> from the client will be rejected. In addition, if you are using <a href="#accountsui">accounts-ui</a>, the "Create account" link will not be available. <strong>Important</strong>: This option must be set on both the client and server to take full effect. If only set on the server, account creation will be blocked but the UI will still show the "Create account" link.</p>',name:"forbidClientAccountCreation",type:{names:["Boolean"]}},{description:"<p>If set to a string, only allows new users if the domain part of their email address matches the string. If set to a function, only allows new users if the function returns true. The function is passed the full email address of the proposed new user. Works with password-based sign-in and external services that expose email addresses (Google, Facebook, GitHub). All existing users still can log in after enabling this option. Example: <code>Accounts.config({ restrictCreationByEmailDomain: 'school.edu' })</code>.</p>",name:"restrictCreationByEmailDomain",type:{names:["String","function"]}},{description:"<p>The number of milliseconds from when a user logs in until their token expires and they are logged out, for a more granular control. If <code>loginExpirationInDays</code> is set, it takes precedent.</p>",name:"loginExpiration",type:{names:["Number"]}},{description:"<p>The number of days from when a user logs in until their token expires and they are logged out. Defaults to 90. Set to <code>null</code> to disable login expiration.</p>",name:"loginExpirationInDays",type:{names:["Number"]}},{description:"<p>When using the <code>oauth-encryption</code> package, the 16 byte key using to encrypt sensitive account credentials in the database, encoded in base64. This option may only be specified on the server. See packages/oauth-encryption/README.md for details.</p>",name:"oauthSecretKey",type:{names:["String"]}},{description:"<p>The number of days from when a link to reset password is sent until token expires and user can't reset password with the link anymore. Defaults to 3.</p>",name:"passwordResetTokenExpirationInDays",type:{names:["Number"]}},{description:"<p>The number of milliseconds from when a link to reset password is sent until token expires and user can't reset password with the link anymore. If <code>passwordResetTokenExpirationInDays</code> is set, it takes precedent.</p>",name:"passwordResetTokenExpiration",type:{names:["Number"]}},{description:"<p>The number of days from when a link to set initial password is sent until token expires and user can't set password with the link anymore. Defaults to 30.</p>",name:"passwordEnrollTokenExpirationInDays",type:{names:["Number"]}},{description:"<p>The number of milliseconds from when a link to set initial password is sent until token expires and user can't set password with the link anymore. If <code>passwordEnrollTokenExpirationInDays</code> is set, it takes precedent.</p>",name:"passwordEnrollTokenExpiration",type:{names:["Number"]}},{description:"<p>Return ambiguous error messages from login failures to prevent user enumeration. Defaults to <code>true</code>.</p>",name:"ambiguousErrorMessages",type:{names:["Boolean"]}},{description:"<p>
118Allows override of number of bcrypt rounds (aka work factor) used to store passwords. The default is 10.</p>",name:"bcryptRounds",type:{names:["Number"]}},{description:"<p>Enable argon2 algorithm usage in replacement for bcrypt. The default is <code>false</code>.</p>",name:"argon2Enabled",type:{names:["Boolean"]}},{description:"<p>Allows override of the argon2 algorithm type. The default is <code>argon2id</code>.</p>",name:"argon2Type",type:{names:["'argon2id'","'argon2i'","'argon2d'"]}},{description:"<p>Allows override of number of argon2 iterations (aka time cost) used to store passwords. The default is 2.</p>",name:"argon2TimeCost",type:{names:["Number"]}},{description:"<p>Allows override of the amount of memory (in KiB) used by the argon2 algorithm. The default is 19456 (19MB).</p>",name:"argon2MemoryCost",type:{names:["Number"]}},{description:"<p>Allows override of the number of threads used by the argon2 algorithm. The default is 1.</p>",name:"argon2Parallelism",type:{names:["Number"]}},{description:"<p>To exclude by default large custom fields from <code>Meteor.user()</code> and <code>Meteor.findUserBy...()</code> functions when called without a field selector, and all <code>onLogin</code>, <code>onLoginFailure</code> and <code>onLogout</code> callbacks. Example: <code>Accounts.config({ defaultFieldSelector: { myBigArray: 0 }})</code>. Beware when using this. If, for instance, you do not include <code>email</code> when excluding the fields, you can have problems with functions like <code>forgotPassword</code> that will break because they won't have the required data available. It's recommend that you always keep the fields <code>_id</code>, <code>username</code>, and <code>email</code>.</p>",name:"defaultFieldSelector",type:{names:["MongoFieldSpecifier"]}},{description:"<p>A collection name or a Mongo.Collection object to hold the users.</p>",name:"collection",type:{names:["String","Mongo.Collection"]}},{description:"<p>When using the package <code>accounts-2fa</code>, use this to set the amount of time a token sent is valid. As it's just a number, you can use, for example, 0.5 to make the token valid for just half hour. The default is 1 hour.</p>",name:"loginTokenExpirationHours",type:{names:["Number"]}},{description:"<p>When using the package <code>accounts-2fa</code>, use this to the size of the token sequence generated. The default is 6.</p>",name:"tokenSequenceLength",type:{names:["Number"]}},{description:"<p>By default login credentials are stored in local storage, setting this to true will switch to using session storage.</p>",name:"clientStorage",type:{names:["'session'","'local'"]}}],params:[{name:"options",type:{names:["Object"]}}],scope:"instance",summary:"<p>Set global accounts options. You can also set these in <code>Meteor.settings.packages.accounts</code> without the need to call this function.</p>"},"AccountsCommon#onLogin":{filepath:"accounts-base/accounts_common.js",kind:"function",lineno:317,locus:"Anywhere",longname:"AccountsCommon#onLogin",memberof:"AccountsCommon",module:"accounts-base",name:"onLogin",options:[],params:[{description:`<p>The callback to be called when login is successful. 119The callback receives a single object that
120holds login details. This object contains the login 121result type (password, resume, etc.) on both the 122client and server. <code>onLogin</code> callbacks registered 123on the server also receive extra data, such 124as user details, connection information, etc.</p>`,name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Register a callback to be called after a login attempt succeeds.</p>"},"AccountsCommon#onLoginFailure":{filepath:"accounts-base/accounts_common.js",kind:"function",lineno:329,locus:"Anywhere",longname:"AccountsCommon#onLoginFailure",memberof:"AccountsCommon",module:"accounts-base",name:"onLoginFailure",options:[],params:[{description:"<p>The callback to be called after the login has failed.</p>",name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Register a callback to be called after a login attempt fails.</p>"},"AccountsCommon#onLogout":{filepath:"accounts-base/accounts_common.js",kind:"function",lineno:338,locus:"Anywhere",longname:"AccountsCommon#onLogout",memberof:"AccountsCommon",module:"accounts-base",name:"onLogout",options:[],params:[{description:"<p>The callback to be called when logout is successful.</p>",name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Register a callback to be called after a logout attempt succeeds.</p>"},"AccountsCommon#user":{filepath:"accounts-base/accounts_common.js",kind:"function",lineno:172,locus:"Anywhere",longname:"AccountsCommon#user",memberof:"AccountsCommon",module:"accounts-base",name:"user",options:[{description:"<p>Dictionary of fields to return or exclude.</p>",name:"fields",type:{names:["MongoFieldSpecifier"]}}],params:[{name:"options",optional:!0,type:{names:["Object"]}}],scope:"instance",summary:"<p>Get the current user record, or <code>null</code> if no user is logged in. On the client this can also be <code>undefined</code> while a user id is set but the user document is not yet in Minimongo. A reactive data source. In the server this fuction returns a promise.</p>"},"AccountsCommon#userAsync":{async:!0,filepath:"accounts-base/accounts_common.js",kind:"function",lineno:197,locus:"Anywhere",longname:"AccountsCommon#userAsync",memberof:"AccountsCommon",module:"accounts-base",name:"userAsync",options:[{description:"<p>Dictionary of fields to return or exclude.</p>",name:"fields",type:{names:["MongoFieldSpecifier"]}}],params:[{name:"options",optional:!0,type:{names:["Object"]}}],scope:"instance",summary:"<p>Get the current user record, or <code>null</code> if no user is logged in. May also be <code>undefined</code> when a user id is set but the user document cannot be found yet.</p>"},"AccountsCommon#userId":{filepath:"accounts-base/accounts_common.js",kind:"function",lineno:128,locus:"Anywhere",longname:"AccountsCommon#userId",memberof:"AccountsCommon",module:"accounts-base",name:"userId",options:[],params:[],scope:"instance",summary:"<p>Get the current user id, or <code>null</code> if no user is logged in. A reactive data source.</p>"},AccountsServer:{augments:["AccountsCommon"],filepath:"accounts-base/accounts_server.js",instancename:"accountsServer",kind:"class",lineno:12,locus:"Server",longname:"AccountsServer",module:"accounts-base",name:"AccountsServer",options:[],params:[{description:"<p>A server object such as <code>Meteor.server</code>.</p>",name:"server",type:{names:["Object"]}}],scope:"global",summary:"<p>Constructor for the <code>Accounts</code> namespace on the server.</p>"},"AccountsServer#addDefaultRateLimit":{filepath:"accounts-base/accounts_server.js",importfrompackage:"accounts-base",kind:"function",lineno:1482,locus:"Server",longname:"AccountsServer#addDefaultRateLimit",memberof:"AccountsServer",module:"accounts-base",name:"addDefaultRateLimit",options:[],params:[],scope:"instance",summary:`<p>Add a default rule of limiting logins, creating new users and password reset 125to 5 times every 10 seconds per connection.</p>`},"AccountsServer#beforeExternalLogin":{filepath:"accounts-base/accounts_server.js",kind:"function",lineno:198,locus:"Server",longname:"AccountsServer#beforeExternalLogin",memberof:"AccountsServer",module:"accounts-base",name:"beforeE
125xternalLogin",options:[],params:[{description:"<p>Called whenever login/user creation from external service is attempted. Login or user creation based on this login can be aborted by passing a falsy value or throwing an exception.</p>",name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Validate login from external service</p>"},"AccountsServer#config":{examples:[`// For UI-related options like forbidClientAccountCreation, call Accounts.config on both client and server 126// Create a shared configuration file (e.g., lib/accounts-config.js): 127import { Accounts } from 'meteor/accounts-base'; 128 129Accounts.config({ 130 forbidClientAccountCreation: true, 131 sendVerificationEmail: true, 132}); 133 134// Then import this file in both client/main.js and server/main.js: 135// import '../lib/accounts-config.js';`],filepath:"accounts-base/accounts_common.js",inherited:!0,inherits:"AccountsCommon#config",kind:"function",lineno:244,locus:"Anywhere",longname:"AccountsServer#config",memberof:"AccountsServer",module:"accounts-base",name:"config",options:[{description:"<p>New users with an email address will receive an address verification email.</p>",name:"sendVerificationEmail",type:{names:["Boolean"]}},{description:'<p>Calls to <a href="#accounts_createuser"><code>createUser</code></a> from the client will be rejected. In addition, if you are using <a href="#accountsui">accounts-ui</a>, the "Create account" link will not be available. <strong>Important</strong>: This option must be set on both the client and server to take full effect. If only set on the server, account creation will be blocked but the UI will still show the "Create account" link.</p>',name:"forbidClientAccountCreation",type:{names:["Boolean"]}},{description:"<p>If set to a string, only allows new users if the domain part of their email address matches the string. If set to a function, only allows new users if the function returns true. The function is passed the full email address of the proposed new user. Works with password-based sign-in and external services that expose email addresses (Google, Facebook, GitHub). All existing users still can log in after enabling this option. Example: <code>Accounts.config({ restrictCreationByEmailDomain: 'school.edu' })</code>.</p>",name:"restrictCreationByEmailDomain",type:{names:["String","function"]}},{description:"<p>The number of milliseconds from when a user logs in until their token expires and they are logged out, for a more granular control. If <code>loginExpirationInDays</code> is set, it takes precedent.</p>",name:"loginExpiration",type:{names:["Number"]}},{description:"<p>The number of days from when a user logs in until their token expires and they are logged out. Defaults to 90. Set to <code>null</code> to disable login expiration.</p>",name:"loginExpirationInDays",type:{names:["Number"]}},{description:"<p>When using the <code>oauth-encryption</code> package, the 16 byte key using to encrypt sensitive account credentials in the database, encoded in base64. This option may only be specified on the server. See packages/oauth-encryption/README.md for details.</p>",name:"oauthSecretKey",type:{names:["String"]}},{description:"<p>The number of days from when a link to reset password is sent until token expires and user can't reset password with the link anymore. Defaults to 3.</p>",name:"passwordResetTokenExpirationInDays",type:{names:["Number"]}},{description:"<p>The number of milliseconds from when a link to reset password is sent until token expires and user can't reset password with the link anymore. If <code>passwordResetTokenExpirationInDays</code> is set, it takes precedent.</p>",name:"passwordResetTokenExpiration",type:{names:["Number"]}},{description:"<p>The number of days from when a link to set initial password is sent until token expires and user can't set password with the link anymore. Defaults to 30.</p>",name:"passwordEnrollTokenExpirationInDays",type:{names:["Number"]}},{description:"<p>The number of milliseconds from when a link to set initial password is sent until token expires and user can't set password with the link anymore. If <code>passwordEnrollTokenExpirationInDays</code> is set, it takes precedent.</p>",name:"passwordEnrollTokenExpiration",type:{names:["Number"]}},{description:"<p>Return ambiguous error messages from login failures to prevent user enumeration. Defaults to <code>true</code>.</p>",name:"ambiguousErrorMessages",type:{names:["Boolean"]}},{description:"<p>
135Allows override of number of bcrypt rounds (aka work factor) used to store passwords. The default is 10.</p>",name:"bcryptRounds",type:{names:["Number"]}},{description:"<p>Enable argon2 algorithm usage in replacement for bcrypt. The default is <code>false</code>.</p>",name:"argon2Enabled",type:{names:["Boolean"]}},{description:"<p>Allows override of the argon2 algorithm type. The default is <code>argon2id</code>.</p>",name:"argon2Type",type:{names:["'argon2id'","'argon2i'","'argon2d'"]}},{description:"<p>Allows override of number of argon2 iterations (aka time cost) used to store passwords. The default is 2.</p>",name:"argon2TimeCost",type:{names:["Number"]}},{description:"<p>Allows override of the amount of memory (in KiB) used by the argon2 algorithm. The default is 19456 (19MB).</p>",name:"argon2MemoryCost",type:{names:["Number"]}},{description:"<p>Allows override of the number of threads used by the argon2 algorithm. The default is 1.</p>",name:"argon2Parallelism",type:{names:["Number"]}},{description:"<p>To exclude by default large custom fields from <code>Meteor.user()</code> and <code>Meteor.findUserBy...()</code> functions when called without a field selector, and all <code>onLogin</code>, <code>onLoginFailure</code> and <code>onLogout</code> callbacks. Example: <code>Accounts.config({ defaultFieldSelector: { myBigArray: 0 }})</code>. Beware when using this. If, for instance, you do not include <code>email</code> when excluding the fields, you can have problems with functions like <code>forgotPassword</code> that will break because they won't have the required data available. It's recommend that you always keep the fields <code>_id</code>, <code>username</code>, and <code>email</code>.</p>",name:"defaultFieldSelector",type:{names:["MongoFieldSpecifier"]}},{description:"<p>A collection name or a Mongo.Collection object to hold the users.</p>",name:"collection",type:{names:["String","Mongo.Collection"]}},{description:"<p>When using the package <code>accounts-2fa</code>, use this to set the amount of time a token sent is valid. As it's just a number, you can use, for example, 0.5 to make the token valid for just half hour. The default is 1 hour.</p>",name:"loginTokenExpirationHours",type:{names:["Number"]}},{description:"<p>When using the package <code>accounts-2fa</code>, use this to the size of the token sequence generated. The default is 6.</p>",name:"tokenSequenceLength",type:{names:["Number"]}},{description:"<p>By default login credentials are stored in local storage, setting this to true will switch to using session storage.</p>",name:"clientStorage",type:{names:["'session'","'local'"]}}],overrides:"AccountsCommon#config",params:[{name:"options",type:{names:["Object"]}}],scope:"instance",summary:"<p>Set global accounts options. You can also set these in <code>Meteor.settings.packages.accounts</code> without the need to call this function.</p>"},"AccountsServer#generateOptionsForEmail":{async:!0,filepath:"accounts-base/accounts_server.js",importfrompackage:"accounts-base",kind:"function",lineno:1506,locus:"Server",longname:"AccountsServer#generateOptionsForEmail",memberof:"AccountsServer",module:"accounts-base",name:"generateOptionsForEmail",options:[],params:[{description:"<p>Which address of the user's to send the email to.</p>",name:"email",type:{names:["Object"]}},{description:"<p>The user object to generate options for.</p>",name:"user",type:{names:["Object"]}},{description:"<p>URL to which user is directed to confirm the email.</p>",name:"url",type:{names:["String"]}},{description:"<p><code>resetPassword</code> or <code>enrollAccount</code>.</p>",name:"reason",type:{names:["String"]}}],returns:[{description:"<p>Options which can be passed to <code>Email.send</code>.</p>",type:{names:["Object"]}}],scope:"instance",summary:`<p>Creates options for email sending for reset password and enroll account emails. 136You can use this function when customizing a reset password or enroll account email sending.</p>`},"AccountsServer#onCreateLoginToken":{filepath:"accounts-base/accounts_server.js",kind:"member",lineno:216,locus:"Server",longname:"AccountsServer#onCreateLoginToken",memberof:"AccountsServer",module:"accounts-base",name:"onCreateLoginToken",params:[{description:`<p>Called whenever a new token is created. 137Return the sequence and the user object. Return true to keep sending the default email, or false to override the behavior.</p>`,name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Customize login token creation.</p>"},"AccountsServer#onCreateUser":{filepath:"accounts-base/accounts_server.js",kind:"function",lineno:229,locus:"Server",longname:"AccountsServer#onCreateUser",memberof:"AccountsServer",module:"accounts-base",name:"onCreateUser",options:[],params:[{description:"<p>Called whenever a new user is created. Return the new user object, or throw an <code>Error</code> to abort the creation.</p>",name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Customize new user creation.</p>"},"AccountsServer#onExternalLogin":{filepath:"accounts-base/accounts_server.js",kind:"function",lineno:242,locus:"Server",longname:"AccountsServer#onExternalLogin",memberof:"AccountsServer",module:"accounts-base",name:"onExternalLogin",options:[],params:[{description:"<p>Called whenever a user is logged in via oauth. Return the profile object to be merged, or throw an <code>Error</code> to abort the creation.</p>",name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Customize oauth user profile updates</p>"},"AccountsServer#onLogin":{filepath:"accounts-base/accounts_common.js",inherited:!0,inherits:"AccountsCommon#onLogin",kind:"function",lineno:317,locus:"Anywhere",longname:"AccountsServer#onLogin",memberof:"AccountsServer",module:"accounts-base",name:"onLogin",options:[],params:[{description:`<p>The callback to be called when login is successful. 138The callback receives a single object that
139holds login details. This object contains the login 140result type (password, resume, etc.) on both the 141client and server. <code>onLogin</code> callbacks registered 142on the server also receive extra data, such 143as user details, connection information, etc.</p>`,name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Register a callback to be called after a login attempt succeeds.</p>"},"AccountsServer#onLoginFailure":{filepath:"accounts-base/accounts_common.js",inherited:!0,inherits:"AccountsCommon#onLoginFailure",kind:"function",lineno:329,locus:"Anywhere",longname:"AccountsServer#onLoginFailure",memberof:"AccountsServer",module:"accounts-base",name:"onLoginFailure",options:[],params:[{description:"<p>The callback to be called after the login has failed.</p>",name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Register a callback to be called after a login attempt fails.</p>"},"AccountsServer#onLogout":{filepath:"accounts-base/accounts_common.js",inherited:!0,inherits:"AccountsCommon#onLogout",kind:"function",lineno:338,locus:"Anywhere",longname:"AccountsServer#onLogout",memberof:"AccountsServer",module:"accounts-base",name:"onLogout",options:[],params:[{description:"<p>The callback to be called when logout is successful.</p>",name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Register a callback to be called after a logout attempt succeeds.</p>"},"AccountsServer#registerLoginHandler":{filepath:"accounts-base/accounts_server.js",kind:"function",lineno:627,locus:"Server",longname:"AccountsServer#registerLoginHandler",memberof:"AccountsServer",module:"accounts-base",name:"registerLoginHandler",options:[],params:[{description:"<p>The type of login method like oauth, password, etc.</p>",name:"name",optional:!0,type:{names:["String"]}},{description:`<p>A function that receives an options object 144(as passed as an argument to the <code>login</code> method) and returns one of 145<code>undefined</code>, meaning don't handle or a login method result object.</p>`,name:"handler",type:{names:["function"]}}],scope:"instance",summary:"<p>Registers a new login handler.</p>"},"AccountsServer#removeDefaultRateLimit":{filepath:"accounts-base/accounts_server.js",importfrompackage:"accounts-base",kind:"function",lineno:1470,locus:"Server",longname:"AccountsServer#removeDefaultRateLimit",memberof:"AccountsServer",module:"accounts-base",name:"removeDefaultRateLimit",options:[],params:[],scope:"instance",summary:"<p>Removes default rate limiting rule</p>"},"AccountsServer#setAdditionalFindUserOnExternalLogin":{filepath:"accounts-base/accounts_server.js",kind:"function",lineno:256,locus:"Server",longname:"AccountsServer#setAdditionalFindUserOnExternalLogin",memberof:"AccountsServer",module:"accounts-base",name:"setAdditionalFindUserOnExternalLogin",options:[],params:[{description:`<p>Called whenever a user is logged in via oauth and a 146user is not found with the service id. Return the user or undefined.</p>`,name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Customize user selection on external logins</p>"},"AccountsServer#user":{filepath:"accounts-base/accounts_common.js",inherited:!0,inherits:"AccountsCommon#user",kind:"function",lineno:172,locus:"Anywhere",longname:"AccountsServer#user",memberof:"AccountsServer",module:"accounts-base",name:"user",options:[{description:"<p>Dictionary of fields to return or exclude.</p>",name:"fields",type:{names:["MongoFieldSpecifier"]}}],params:[{name:"options",optional:!0,type:{names:["Object"]}}],scope:"instance",summary:"<p>Get the current user record, or <code>null</code> if no user is logged in. On the client this can also be <code>undefined</code> while a user id is set but the user document is not yet in Minimongo. A reactive data source. In the server this fuction returns a promise.</p>"},"AccountsServer#userAsync":{async:!0,filepath:"accounts-base/accounts_common.js",inherited:!0,inherits:"AccountsCommon#userAsync",kind:"function",lineno:197,locus:"Anywhere",longname:"AccountsServer#userAsync",memberof:"AccountsServer",module:"accounts-base",name:"userAsync",options:[{description:"<p>Dictionary of fields to return or exclude.</p>",name:"fields",type:{names:["MongoFieldSpecifier"]}}],params:[{name:"options",optional:!0,type:{names:["Object"]}}],scope:"instance",summary:"<p>Get the current user record, or <code>null</code> if no user is logged in. May also be <code>undefined</code> when a user id is set but the user document cannot be found yet.</p>"},"AccountsServer#userId":{filepath:"accounts-base/accounts_common.js",inherited:!0,inherits:"AccountsCommon#userId",kind:"function",lineno:128,locus:"Anywhere",longname:"AccountsServer#userId",memberof:"AccountsServer",module:"accounts-base",name:"userId",options:[],overrides:"AccountsCommon#userId",params:[],scope:"instance",summary:"<p>Get the current user id, or <code>null</code> if no user is logged in. A reactive data source.</p>"},"AccountsServer#validateLoginAttempt":{filepath:"accounts-base/accounts_server.js",kind:"function",lineno:179,locus:"Server",longname:"AccountsServer#validateLoginAttempt",memberof:"AccountsServer",module:"accounts-base",name:"validateLoginAttempt",options:[],params:[{description:"<p>Called whenever a login is attempted (either successful or unsuccessful). A login can be aborted by returning a falsy value or throwing an exception.</p>",name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Validate login attempts.</p>"},"AccountsServer#validateNewUser":{filepath:"accounts-base/accounts_server.js",kind:"function",lineno:189,locus:"Server",longname:"AccountsServer#validateNewUser",memberof:"AccountsServer",module:"accounts-base",name:"validateNewUser",options:[],params:[{description:"<p>Called whenever a new user is created. Takes the new user object, and returns true to allow the creation or false to abort.</p>",name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>
146Set restrictions on new user creation.</p>"},App:{kind:"namespace",longname:"App",name:"App",scope:"global",summary:"<p>The App configuration object in mobile-config.js</p>"},"App.accessRule":{kind:"function",longname:"App.accessRule",memberof:"App",name:"accessRule",options:[{description:`<p>Possible values:</p> 147<ul> 148<li><strong><code>'intent'</code></strong>: Controls which URLs the app is allowed to ask the system to open. 149(e.g. in the phone app or an email client).</li> 150<li><strong><code>'navigation'</code></strong>: Controls which URLs the WebView itself can be navigated to 151(can also needed for iframes).</li> 152<li><strong><code>'network'</code> or undefined</strong>: Controls which network requests (images, XHRs, etc) are allowed to be made.</li> 153</ul>`,name:"type",type:{names:["String"]}},{description:"<p>(Deprecated, use <code>type: 'intent'</code> instead.)</p>",name:"launchExternal",type:{names:["Boolean"]}}],params:[{description:"<p>The pattern defining affected domains or URLs.</p>",name:"pattern",type:{names:["String"]}},{name:"options",optional:!0,type:{names:["Object"]}}],scope:"static",summary:`<p>Set a new access rule based on origin domain for your app. 154By default your application has a limited list of servers it can contact. 155Use this method to extend this list.</p> 156<p>Default access rules:</p> 157<ul> 158<li><code>tel:*</code>, <code>geo:*</code>, <code>mailto:*</code>, <code>sms:*</code>, <code>market:*</code> are allowed and 159are handled by the system (e.g. opened in the phone app or an email client)</li> 160<li><code>http://localhost:*</code> is used to serve the app's assets from.</li> 161<li>The domain or address of the Meteor server to connect to for DDP and 162hot code push of new versions.</li> 163</ul> 164<p>Read more about domain patterns in <a href="http://cordova.apache.org/docs/en/6.0.0/guide_appdev_whitelist_index.md.html">Cordova 165docs</a>.</p> 166<p>Starting with Meteor 1.0.4 access rule for all domains and protocols 167(<code><access origin="*"/></code>) is no longer set by default due to 168<a href="http://cordova.apache.org/announcements/2014/08/04/android-351.html">certain kind of possible 169attacks</a>.</p>`},"App.addResourceFile":{kind:"function",longname:"App.addResourceFile",memberof:"App",name:"addResourceFile",options:[],params:[{description:"<p>The project resource path.</p>",name:"src",type:{names:["String"]}},{description:"<p>Resource destination in build.</p>",name:"target",type:{names:["String"]}},{description:"<p>Optional. A platform name (either <code>ios</code> or <code>android</code>, both if omitted) to add a resource-file entry.</p>",name:"platform",optional:!0,type:{names:["String"]}}],scope:"static",summary:`<p>Add a resource file for your build as described in the 170<a href="http://cordova.apache.org/docs/en/7.x/config_ref/index.html#resource-file">Cordova documentation</a>.</p>`},"App.appendToConfig":{kind:"function",longname:"App.appendToConfig",memberof:"App",name:"appendToConfig",options:[],params:[{description:"<p>The XML you want to include</p>",name:"element",type:{names:["String"]}}],scope:"static",summary:`<p>Append custom tags into config's widget element.</p> 171<p><code>App.appendToConfig('<any-xml-content/>');</code></p>`},"App.configurePlugin":{kind:"function",longname:"App.configurePlugin",memberof:"App",name:"configurePlugin",options:[],params:[{description:`<p>The identifier of the plugin you want to 172configure.</p>`,name:"id",type:{names:["String"]}},{description:`<p>A set of key-value pairs which will be passed 173at build-time to configure the specified plugin.</p>`,name:"config",type:{names:["Object"]}}],scope:"static",summary:"<p>Set the build-time configuration for a Cordova plugin.</p>"},"App.icons":{kind:"function",longname:"App.icons",memberof:"App",name:"icons",options:[],params:[{description:`<p>An Object where the keys are different 174devices and screen sizes, and values are image paths 175relative to the project root directory.</p> 176<p>Valid key values:</p> 177<ul> 178<li><code>app_store</code> (1024x1024) // Apple App Store</li> 179<li><code>iphone_2x</code> (120x120) // iPhone 5, SE, 6, 6s, 7, 8</li> 180<li><code>iphone_3x</code> (180x180) // iPhone 6 Plus, 6s Plus, 7 Plus, 8 Plus, X</li> 181<li><code>ipad_2x</code> (152x152) // iPad, iPad mini</li> 182<li><code>ipad_pro</code> (167x167) // iPad Pro</li> 183<li><code>ios_settings_2x</code> (58x58) // iPhone 5, SE, 6, 6s, 7, 8, iPad, mini, Pro</li> 184<li><code>ios_settings_3x</code> (87x87) // iPhone 6 Plus, 6s Plus, 7 Plus, 8 Plus, X</li> 185<li><code>ios_spotlight_2x</code> (80x80) // iPhone 5, SE, 6, 6s, 7, 8, iPad, mini, Pro</li> 186<li><code>ios_spotlight_3x</code> (120x120) // iPhone 6 Plus, 6s Plus, 7 Plus, 8 Plus, X</li> 187<li><code>ios_notification_2x</code> (40x40) // iPhone 5, SE, 6, 6s, 7, 8, iPad, mini, Pro</li> 188<li><code>ios_notification_3x</code> (60x60 // iPhone 6 Plus, 6s Plus, 7 Plus, 8 Plus, X</li> 189<li><code>ipad</code> (76x76) // Legacy</li> 190<li><code>ios_settings</code> (29x29) // Legacy</li> 191<li><code>ios_spotlight</code> (40x40) // Legacy</li> 192<li><code>ios_notification</code> (20x20) // Legacy</li> 193<li><code>iphone_legacy</code> (57x57) // Legacy</li> 194<li><code>iphone_legacy_2x</code> (114x114) // Legacy</li> 195<li><code>ipad_spotlight_legacy</code> (50x50) // Legacy</li> 196<li><code>ipad_spotlight_legacy_2x</code> (100x100) // Legacy</li> 197<li><code>ipad_app_legacy</code> (72x72) // Legacy</li> 198<li><code>ipad_app_legacy_2x</code> (144x144) // Legacy</li> 199<li><code>android_mdpi</code> (48x48)</li> 200<li><code>android_hdpi</code> (72x72)</li> 201<li><code>android_xhdpi</code> (96x96)</li> 202<li><code>android_xxhdpi</code> (144x144)</li> 203<li><code>android_xxxhdpi</code> (192x192)</li> 204</ul>`,name:"icons",type:{names:["Object"]}}],scope:"static",summary:"<p>Set the icons for your mobile app.</p>"},"App.info":{kind:"function",longname:"App.info",memberof:"App",name:"info",options:[{description:`<p>Each of the options correspond to a key in the app's core configuration
205as described in the <a href="http://cordova.apache.org/docs/en/5.1.1/config_ref_index.md.html#The%20config.xml%20File_core_configuration_elements">Cordova documentation</a>.</p>`,name:"id, version, name, description, author, email, website",optional:!0,type:{names:["String"]}}],params:[{name:"options",type:{names:["Object"]}}],scope:"static",summary:"<p>Set your mobile app's core configuration information.</p>"},"App.launchScreens":{kind:"function",longname:"App.launchScreens",memberof:"App",name:"launchScreens",options:[],params:[{description:`<p>A dictionary where keys are different 206devices, screen sizes, and orientations, and the values are image paths 207relative to the project root directory or an object containing a dark mode image path too <code>{ src, srcDarkMode }</code> (iOS only). 208Note: If you want to have a dark theme splash screen on Android, please follow the instructions described <a href="https://developer.android.com/develop/ui/views/theming/darktheme">here</a>.</p> 209<p>For Android specific information, check the <a href="https://cordova.apache.org/docs/en/latest/core/features/splashscreen/index.html#android-specific-information">Cordova docs</a> and <a href="https://developer.android.com/develop/ui/views/launch/splash-screen#splash_screen_dimensions">Android docs</a>. 210Also note that for android the asset can either be an XML Vector Drawable or PNG.</p> 211<p>For best practices when developing a splash image, see the <a href="https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/launch-screen/">Apple Guidelines</a>. 212To learn more about size classes for iOS, check out the <a href="https://cordova.apache.org/docs/en/10.x/reference/cordova-plugin-splashscreen/#size-classes">documentation</a> from Cordova.</p> 213<p>Valid key values:</p> 214<p>iOS:</p> 215<ul> 216<li><code>ios_universal</code> ([email protected] - 2732x2732 px) - All @2x devices, if device/mode specific is not declared</li> 217<li><code>ios_universal_3x</code> ([email protected] - 2208x2208 px) - All @3x devices, if device/mode specific is not declared</li> 218<li><code>Default@2x~universal~comany</code> (1278x2732 px) - All @2x devices in portrait mode</li> 219<li><code>Default@2x~universal~comcom</code> (1334x750 px) - All @2x devices in landscape (narrow) mode</li> 220<li><code>Default@3x~universal~anycom</code> (2208x1242 px) - All @3x devices in landscape (wide) mode</li> 221<li><code>Default@3x~universal~comany</code> (1242x2208 px) - All @3x devices in portrait mode</li> 222<li><code>Default@2x~iphone~anyany</code> (1334x1334 px) - iPhone SE/6s/7/8/XR</li> 223<li><code>Default@2x~iphone~comany</code> (750x1334 px) - iPhone SE/6s/7/8/XR - portrait mode</li> 224<li><code>Default@2x~iphone~comcom</code> (1334x750 px) - iPhone SE/6s/7/8/XR - landscape (narrow) mode</li> 225<li><code>Default@3x~iphone~anyany</code> (2208x2208 px) - iPhone 6s Plus/7 Plus/8 Plus/X/XS/XS Max</li> 226<li><code>Default@3x~iphone~anycom</code> (2208x1242 px) - iPhone 6s Plus/7 Plus/8 Plus/X/XS/XS Max - landscape (wide) mode</li> 227<li><code>Default@3x~iphone~comany</code> (1242x2208 px) - iPhone 6s Plus/7 Plus/8 Plus/X/XS/XS Max - portrait mode</li> 228<li><code>Default@2x~ipad~anyany</code> (2732x2732 px) - iPad Pro 12.9"/11"/10.5"/9.7"/7.9"</li> 229<li><code>Default@2x~ipad~comany</code> (1278x2732 px) - iPad Pro 12.9"/11"/10.5"/9.7"/7.9" - portrait mode</li> 230</ul> 231<p>Android:</p> 232<ul> 233<li><code>android_universal</code> (288x288 dp)</li> 234</ul>`,name:"launchScreens",type:{names:["Object"]}}],scope:"static",summary:"<p>Set the launch screen images for your mobile app.</p>"},"App.setPreference":{kind:"function",longname:"App.setPreference",memberof:"App",name:"setPreference",options:[],params:[{description:`<p>A preference name supported by Cordova's 235<code>config.xml</code>.</p>`,name:"name",type:{names:["String"]}},{description:"<p>The value for that preference.</p>",name:"value",type:{names:["String"]}},{description:"<p>Optional. A platform name (either <code>ios</code> or <code>android</code>) to add a platform-specific preference.</p>",name:"platform",optional:!0,type:{names:["String"]}}],scope:"static",summary:`<p>
235Add a preference for your build as described in the 236<a href="http://cordova.apache.org/docs/en/5.1.1/config_ref_index.md.html#The%20config.xml%20File_global_preferences">Cordova documentation</a>.</p>`},"App.settings":{kind:"member",longname:"App.settings",memberof:"App",name:"settings",scope:"static",summary:`<p>Like <code>Meteor.settings</code>, contains data read from a JSON 237file provided via the <code>--settings</code> command-line option at 238build time, or null if no settings were provided.</p>`,type:{names:["Object"]}},Assets:{kind:"namespace",longname:"Assets",name:"Assets",scope:"global",summary:"<p>The namespace for Assets functions, lives in the bundler.</p>"},"Assets.absoluteFilePath":{kind:"function",locus:"Server [Not in build plugins]",longname:"Assets.absoluteFilePath",memberof:"Assets",name:"absoluteFilePath",options:[],params:[{description:"<p>The path of the asset, relative to the application's <code>private</code> subdirectory.</p>",name:"assetPath",type:{names:["String"]}}],scope:"static",summary:"<p>Get the absolute path to the static server asset. Note that assets are read-only.</p>"},"Assets.getBinaryAsync":{kind:"function",locus:"Server",longname:"Assets.getBinaryAsync",memberof:"Assets",name:"getBinaryAsync",options:[],params:[{description:"<p>The path of the asset, relative to the application's <code>private</code> subdirectory.</p>",name:"assetPath",type:{names:["String"]}},{description:"<p>Optional callback, which is called asynchronously with the error or result after the function is complete. If not provided, the function runs synchronously.</p>",name:"asyncCallback",optional:!0,type:{names:["function"]}}],scope:"static",summary:'<p>Retrieve the contents of the static server asset as an <a href="#ejson_new_binary">EJSON Binary</a>.</p>'},"Assets.getTextAsync":{kind:"function",locus:"Server",longname:"Assets.getTextAsync",memberof:"Assets",name:"getTextAsync",options:[],params:[{description:"<p>The path of the asset, relative to the application's <code>private</code> subdirectory.</p>",name:"assetPath",type:{names:["String"]}},{description:"<p>Optional callback, which is called asynchronously with the error or result after the function is complete. If not provided, the function runs synchronously.</p>",name:"asyncCallback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Retrieve the contents of the static server asset as a UTF8-encoded string.</p>"},CompileStep:{description:`<p>The comments for this class aren't used to generate docs right now. 239The docs live in the GitHub Wiki at: https://github.com/meteor/meteor/wiki/CompileStep-API-for-Build-Plugin-Source-Handlers</p>`,kind:"class",longname:"CompileStep",name:"CompileStep",options:[],params:[],scope:"global",summary:"<p>The object passed into Plugin.registerSourceHandler</p>"},"CompileStep#addAsset":{kind:"function",longname:"CompileStep#addAsset",memberof:"CompileStep",name:"addAsset",options:[],params:[{name:"options",type:{names:["Object"]}},{description:"<p>The path at which to serve the asset.</p>",name:"path",type:{names:["String"]}},{description:`<p>The data that should be placed in 240the file.</p>`,name:"data",type:{names:["Buffer","String"]}}],scope:"instance",summary:`<p>Add a file to serve as-is to the browser or to include on 241the browser, depending on the target. On the web, it will be served 242at the exact path requested. For server targets, it can be retrieved 243using <code>Assets.getText</code> or <code>Assets.getBinary</code>.</p>`},"CompileStep#addHtml":{kind:"function",longname:"CompileStep#addHtml",memberof:"CompileStep",name:"addHtml",options:[{description:`<p>Which section of the document should 244be appended to. Can only be "head" or "body".</p>`,name:"section",type:{names:["String"]}},{description:"<p>The content to append.</p>",name:"data",type:{names:["String"]}}],params:[{name:"options",type:{names:["Object"]}}],scope:"instance",summary:`<p>Works in web targets only. Add markup to the <code>head</code> or <code>body</code> 245section of the document.</p>`},"CompileStep#addJavaScript":{kind:"function",longname:"CompileStep#addJavaScript",memberof:"CompileStep",name:"addJavaScript",options:[{description:`<p>The path at which the JavaScript file 246should be inserted, may not be honored in case of path conflicts.</p>`,name:"path",type:{names:["String"]}},{description:"<p>The code to be added.</p>",name:"data",type:{names:["String"]}},{description:`<p>The path that will be used in 247any error messages generated by this file, e.g. <code>foo.js:4:1: error</code>.</p>`,name:"sourcePath",type:{names:["String"]}}],params:[{name:"options",type:{names:["Object"]}}],scope:"instance",summary:`<p>Add JavaScript code. The code added will only see the 248namespaces imported by this package as runtime dependencies using 249<a href="#PackageAPI-use">'api.use'</a>. If the file being compiled was added 250with the bare flag, the resulting JavaScript won't be wrapped in a 251closure.</p>`},"CompileStep#addStylesheet":{kind:"function",longname:"CompileStep#addStylesheet",memberof:"CompileStep",name:"addStylesheet",options:[],params:[{name:"options",type:{names:["Object"]}},{description:`<p>The requested path for the added CSS, may not be 252satisfied if there are path conflicts.</p>`,name:"path",type:{names:["String"]}},{description:`<p>The content of the stylesheet that should be
253added.</p>`,name:"data",type:{names:["String"]}},{description:`<p>A stringified JSON sourcemap, in case the 254stylesheet was generated from a different file.</p>`,name:"sourceMap",type:{names:["String"]}}],scope:"instance",summary:"<p>Web targets only. Add a stylesheet to the document.</p>"},"CompileStep#arch":{kind:"member",longname:"CompileStep#arch",memberof:"CompileStep",name:"arch",scope:"instance",summary:`<p>The architecture for which we are building. Can be "os", 255"web.browser", or "web.cordova".</p>`,type:{names:["String"]}},"CompileStep#declaredExports":{kind:"member",longname:"CompileStep#declaredExports",memberof:"CompileStep",name:"declaredExports",scope:"instance",summary:`<p>The list of exports that the current package has defined. 256Can be used to treat those symbols differently during compilation.</p>`,type:{names:["Object"]}},"CompileStep#error":{kind:"function",longname:"CompileStep#error",memberof:"CompileStep",name:"error",options:[],params:[{name:"options",type:{names:["Object"]}},{description:"<p>The error message to display.</p>",name:"message",type:{names:["String"]}},{description:"<p>The path to display in the error message.</p>",name:"sourcePath",optional:!0,type:{names:["String"]}},{description:"<p>The line number to display in the error message.</p>",name:"line",type:{names:["Integer"]}},{description:"<p>The function name to display in the error message.</p>",name:"func",type:{names:["String"]}}],scope:"instance",summary:"<p>Display a build error.</p>"},"CompileStep#fileOptions":{kind:"member",longname:"CompileStep#fileOptions",memberof:"CompileStep",name:"fileOptions",scope:"instance",summary:"<p>Any options passed to "api.addFiles".</p>",type:{names:["Object"]}},"CompileStep#fullInputPath":{kind:"member",longname:"CompileStep#fullInputPath",memberof:"CompileStep",name:"fullInputPath",scope:"instance",summary:`<p>The filename and absolute path of the input file. 257Please don't use this filename to read the file from disk, instead
258use <a href="CompileStep-read">compileStep.read</a>.</p>`,type:{names:["String"]}},"CompileStep#inputPath":{kind:"member",longname:"CompileStep#inputPath",memberof:"CompileStep",name:"inputPath",scope:"instance",summary:`<p>The filename and relative path of the input file. 259Please don't use this filename to read the file from disk, instead 260use <a href="CompileStep-read">compileStep.read</a>.</p>`,type:{names:["String"]}},"CompileStep#inputSize":{kind:"member",longname:"CompileStep#inputSize",memberof:"CompileStep",name:"inputSize",scope:"instance",summary:"<p>The total number of bytes in the input file.</p>",type:{names:["Integer"]}},"CompileStep#packageName":{kind:"member",longname:"CompileStep#packageName",memberof:"CompileStep",name:"packageName",scope:"instance",summary:"<p>The name of the package in which the file being built exists.</p>",type:{names:["String"]}},"CompileStep#pathForSourceMap":{kind:"member",longname:"CompileStep#pathForSourceMap",memberof:"CompileStep",name:"pathForSourceMap",scope:"instance",summary:`<p>If you are generating a sourcemap for the compiled file, use 261this path for the original file in the sourcemap.</p>`,type:{names:["String"]}},"CompileStep#read":{kind:"function",longname:"CompileStep#read",memberof:"CompileStep",name:"read",options:[],params:[{description:"<p>The number of bytes to return.</p>",name:"n",optional:!0,type:{names:["Integer"]}}],returns:[{type:{names:["Buffer"]}}],scope:"instance",summary:`<p>Read from the input file. If <code>n</code> is specified, returns the 262next <code>n</code> bytes of the file as a Buffer. XXX not sure if this actually 263returns a String sometimes...</p>`},"CompileStep#rootOutputPath":{kind:"member",longname:"CompileStep#rootOutputPath",memberof:"CompileStep",name:"rootOutputPath",scope:"instance",summary:`<p>On web targets, this will be the root URL prepended 264to the paths you pick for your output files. For example, 265it could be "/packages/my-package".</p>`,type:{names:["String"]}},Cordova:{kind:"namespace",longname:"Cordova",name:"Cordova",scope:"global",summary:"<p>The Cordova object in package.js.</p>"},DDP:{filepath:"ddp-client/common/namespace.js",kind:"namespace",lineno:11,longname:"DDP",module:"ddp-client",name:"DDP",scope:"global",summary:"<p>Namespace for DDP-related methods/classes.</p>"},"DDP.connect":{filepath:"ddp-client/common/namespace.js",kind:"function",lineno:69,locus:"Anywhere",longname:"DDP.connect",memberof:"DDP",module:"ddp-client",name:"connect",options:[{description:"<p>is it OK to reload if there are outstanding methods?</p>",name:"reloadWithOutstanding",type:{names:["Boolean"]}},{description:"<p>extra headers to send on the websockets connection, for server-to-server DDP only</p>",name:"headers",type:{names:["Object"]}},{description:"<p>Specifies options to pass through to the sockjs client</p>",name:"_sockjsOptions",type:{names:["Object"]}},{description:"<p>callback when version negotiation fails.</p>",name:"onDDPNegotiationVersionFailure",type:{names:["function"]}}],params:[{description:"<p>The URL of another Meteor application.</p>",name:"url",type:{names:["String"]}},{name:"options",optional:!0,type:{names:["Object"]}}],scope:"static",summary:"<p>Connect to the server of a different Meteor application to subscribe to its document sets and invoke its remote methods.</p>"},"DDP.onReconnect":{filepath:"ddp-client/common/namespace.js",kind:"function",lineno:96,locus:"Anywhere",longname:"DDP.onReconnect",memberof:"DDP",module:"ddp-client",name:"onReconnect",options:[],params:[{description:`<p>The function to call. It will be called with a 266single argument, the <a href="#ddp_connect">connection object</a> that is reconnecting.</p>`,name:"callback",type:{names:["function"]}}],scope:"static",summary:`<p>Register a function to call as the first step of 267reconnecting. This function can call methods which will be executed before 268any other outstanding methods. For example, this can be used to re-establish 269the appropriate authentication context on the connection.</p>`},DDPCommon:{filepath:"ddp-common/namespace.js",kind:"namespace",lineno:1,longname:"DDPCommon",module:"ddp-common",name:"DDPCommon",scope:"global",summary:`<p>Namespace for DDPCommon-related methods/classes. Shared between 270<code>ddp-client</code> and <code>ddp-server</code>, where the ddp-client is the implementation 271of a ddp client for both client AND server; and the ddp server is the 272implementation of the livedata server and stream server. Common 273functionality shared between both can be shared under this namespace</p>`},"DDPCommon.MethodInvocation":{filepath:"ddp-common/method_invocation.js",instancename:"this",kind:"class",lineno:10,longname:"DDPCommon.MethodInvocation",memberof:"DDPCommon",module:"ddp-common",name:"MethodInvocation",options:[],params:[{name:"options",type:{names:["Object"]}}],scope:"static",showinstancename:"true",summary:`<p>The state for a single invocation of a method, referenced by this 274inside a method definition.</p>`},"DDPCommon.MethodInvocation#connection":{filepath:"ddp-common/method_invocation.js",kind:"member",lineno:66,locus:"Server",longname:"DDPCommon.MethodInvocation#connection",memberof:"DDPCommon.MethodInvocation",module:"ddp-common",name:"connection",scope:"instance",summary:'<p>Access inside a method invocation. The <a href="#meteor_onconnection">connection</a> that this method was received on. <code>null</code> if the method is not associated with a connection, eg. a server initiated method call. Calls to methods made from a server method which was in turn initiated from the client share the same <code>connection</code>.</p>'},"DDPCommon.MethodInvocation#isSimulation":{filepath:"ddp-common/method_invocation.js",kind:"member",lineno:30,locus:"Anywhere",longname:"DDPCommon.MethodInvocation#isSimulation",memberof:"DDPCommon.MethodInvocation",module:"ddp-common",name:"isSimulation",scope:"instance",summary:"<p>Access inside a method invocation. Boolean value, true if this invocation is a stub.</p>",type:{names:["Boolean"]}},"DDPCommon.MethodInvocation#name":{filepath:"ddp-common/method_invocation.js",kind:"member",lineno:20,locus:"Anywhere",longname:"DDPCommon.MethodInvocation#name",memberof:"DDPCommon.MethodInvocation",module:"ddp-common",name:"name",scope:"instance",summary:"<p>The name given to the method.</p>",type:{names:["String"]}},"DDPCommon.MethodInvocation#setUserId":{async:!0,filepath:"ddp-common/method_invocation.js",kind:"function",lineno:102,locus:"Server",longname:"DDPCommon.MethodInvocation#setUserId",memberof:"DDPCommon.MethodInvocation",module:"ddp-common",name:"setUserId",options:[],params:[{description:"<p>The value that should be returned by <code>userId</code> on this connection.</p>",name:"userId",type:{names:["String","null"]}}],scope:"instance",summary:"<p>Set the logged in user.</p>"},"DDPCommon.MethodInvocation#unblock":{filepath:"ddp-common/method_invocation.js",kind:"function",lineno:90,locus:"Server",longname:"DDPCommon.MethodInvocation#unblock",memberof:"DDPCommon.MethodInvocation",module:"ddp-common",name:"unblock",options:[],params:[],scope:"instance",summary:"<p>Call inside a method invocation. Allow subsequent method from this client to begin running in a new fiber.</p>"},"DDPCommon.MethodInvocation#userId":{filepath:"ddp-common/method_invocation.js",kind:"member",lineno:51,locus:"Anywhere",longname:"DDPCommon.MethodInvocation#userId",memberof:"DDPCommon.MethodInvocation",module:"ddp-common",name:"userId",scope:"instance",summary:"<p>The id of the user that made this method call, or <code>null</code> if no user was logged in.</p>"},"DDPRateLimiter.addRule":{filepath:"ddp-rate-limiter/ddp-rate-limiter.js",kind:"function",lineno:103,locus:"Server",longname:"DDPRateLimiter.addRule",memberof:"DDPRateLimiter",module:"ddp-rate-limiter",n
274ame:"addRule",options:[],params:[{description:`<p>Matchers specify which events are counted towards a rate limit. A matcher 275is an object that has a subset of the same properties as the event objects 276described above. Each value in a matcher object is one of the following:</p> 277<ul> 278<li> 279<p>a string: for the event to satisfy the matcher, this value must be equal 280to the value of the same property in the event object</p> 281</li> 282<li> 283<p>a function: for the event to satisfy the matcher, the function must 284evaluate to true when passed the value of the same property 285in the event object</p> 286</li> 287</ul> 288<p>Here's how events are counted: Each event that satisfies the matcher's 289filter is mapped to a bucket. Buckets are uniquely determined by the 290event object's values for all properties present in both the matcher and 291event objects.</p>`,name:"matcher",type:{names:["Object"]}},{description:`<p>number of requests allowed per time interval. 292Default = 10.</p>`,name:"numRequests",type:{names:["number"]}},{description:`<p>time interval in milliseconds after which 293rule's counters are reset. Default = 1000.</p>`,name:"timeInterval",type:{names:["number"]}},{description:"<p>function to be called after a rule is executed.</p>",name:"callback",type:{names:["function"]}}],scope:"static",summary:`<p>Add a rule that matches against a stream of events describing method or 294subscription attempts. Each event is an object with the following 295properties:</p> 296<ul> 297<li><code>type</code>: Either "method" or "subscription"</li> 298<li><code>name</code>: The name of the method or subscription being called</li> 299<li><code>userId</code>: The user ID attempting the method or subscription</li> 300<li><code>connectionId</code>: A string representing the user's DDP connection</li> 301<li><code>clientAddress</code>: The IP address of the user</li> 302</ul> 303<p>Returns unique <code>ruleId</code> that can be passed to <code>removeRule</code> and <code>setErrorMessageOnRule</code></p>`},"DDPRateLimiter.removeRule":{filepath:"ddp-rate-limiter/ddp-rate-limiter.js",kind:"function",lineno:115,locus:"Server",longname:"DDPRateLimiter.removeRule",memberof:"DDPRateLimiter",module:"ddp-rate-limiter",name:"removeRule",options:[],params:[{description:"<p>'ruleId' returned from <code>addRule</code></p>",name:"id",type:{names:["string"]}}],returns:[{description:"<p>True if a rule was removed.</p>",type:{names:["boolean"]}}],scope:"static",summary:`<p>Removes the specified rule from the rate limiter. If rule had 304hit a rate limit, that limit is removed as well.</p>`},"DDPRateLimiter.setErrorMessage":{filepath:"ddp-rate-limiter/ddp-rate-limiter.js",kind:"function",lineno:47,locus:"Server",longname:"DDPRateLimiter.setErrorMessage",memberof:"DDPRateLimiter",module:"ddp-rate-limiter",name:"setErrorMessage",options:[],params:[{description:`<p>Functions are passed in an object with a 305<code>timeToReset</code> field that specifies the number of milliseconds until the next 306method or subscription is allowed to run. The function must return a string 307of the error message.</p>`,name:"message",type:{names:["string","function"]}}],scope:"static",summary:`<p>Set error message text when method or subscription rate limit 308exceeded.</p>`},"DDPRateLimiter.setErrorMessageOnRule":{filepath:"ddp-rate-limiter/ddp-rate-limiter.js",kind:"function",lineno:61,locus:"Server",longname:"DDPRateLimiter.setErrorMessageOnRule",memberof:"DDPRateLimiter",module:"ddp-rate-limiter",name:"setErrorMessageOnRule",options:[],params:[{description:"<p>The ruleId returned from <code>addRule</code></p>",name:"ruleId",type:{names:["string"]}},{description:`<p>Functions are passed in an object with a 309<code>timeToReset</code> field that specifies the number of milliseconds until the next 310method or subscription is allowed to run. The function must return a string 311of the error message.</p>`,name:"message",type:{names:["string","function"]}}],scope:"static",summary:`<p>Set error message text when method or subscription rate limit 312exceeded for a specific rule.</p>`},"DocumentProcessors#_process_added":{async:!0,filepath:"ddp-client/common/document_processors.js",kind:"function",lineno:16,longname:"DocumentProcessors#_process_added",memberof:"DocumentProcessors",module:"ddp-client",name:"_process_added",options:[],params:[{description:"<p>The added message</p>",name:"msg",type:{names:["Object"]}},{description:"<p>The updates accumulator</p>",name:"updates",type:{names:["Object"]}}],scope:"instance",summary:"<p>Process an 'added' message from the server</p>"},"DocumentProcessors#_process_changed":{filepath:"ddp-client/common/document_processors.js",kind:"function",lineno:50,longname:"DocumentProcessors#_process_changed",memberof:"DocumentProcessors",module:"ddp-client",name:"_process_changed",options:[],params:[{description:"<p>The changed message</p>",name:"msg",type:{names:["Object"]}},{description:"<p>The updates accumulator</p>",name:"updates",type:{names:["Object"]}}],scope:"instance",summary:"<p>Process a 'changed' message from the server</p>"},"DocumentProcessors#_process_ready":{filepath:"ddp-client/common/document_processors.js",kind:"function",lineno:93,longname:"DocumentProcessors#_process_ready",memberof:"DocumentProcessors",module:"ddp-client",name:"_process_ready",options:[],params:[{description:"<p>The ready message</p>",name:"msg",type:{names:["Object"]}},{description:"<p>The updates accumulator</p>",name:"updates",type:{names:["Object"]}}],scope:"instance",summary:"<p>Process a 'ready' message from the server</p>"},"DocumentProcessors#_process_removed":{filepath:"ddp-client/common/document_processors.js",kind:"function",lineno:69,longname:"DocumentProcessors#_process_removed",memberof:"DocumentProcessors",module:"ddp-client",name:"_process_removed",options:[],params:[{description:"<p>The removed message</p>",name:"msg",type:{names:["Object"]}},{description:"<p>The updates accumulator</p>",name:"updates",type:{names:["Object"]}}],scope:"instance",summary:"<p>Process a 'removed' message from the server</p>"},"DocumentProcessors#_process_updated":{filepath:"ddp-client/common/document_processors.js",kind:"function",lineno:118,longname:"DocumentProcessors#_process_updated",memberof:"DocumentProcessors",module:"ddp-client",name:"_process_updated",options:[],params:[{description:"<p>The updated message</p>",name:"msg",type:{names:["Object"]}},{description:"<p>The updates accumulator</p>",name:"updates",type:{names:["Object"]}}],scope:"instance",summary:"<p>Process an 'updated' message from the server</p>"},EJSON:{filepath:"ejson/ejson.js",kind:"namespace",lineno:18,longname:"EJSON",module:"ejson",name:"EJSON",params:[],scope:"global",summary:"<p>Namespace for EJSON functions</p>"},"EJSON.CustomType":{filepath:"ejson/ejson.js",instancename:"customType",kind:"class",lineno:21,longname:"EJSON.CustomType",memberof:"EJSON",module:"ejson",name:"CustomType",options:[],params:[],scope:"static",summary:`<p>The interface that a class must satisfy to be able to become an 313EJSON custom type via EJSON.addType.</p>`}
313,"EJSON.CustomType#clone":{filepath:"ejson/ejson.js",kind:"function",lineno:47,locus:"Anywhere",longname:"EJSON.CustomType#clone",memberof:"EJSON.CustomType",module:"ejson",name:"clone",options:[],params:[],scope:"instance",summary:`<p>Return a value <code>r</code> such that <code>this.equals(r)</code> is true, and 314modifications to <code>r</code> do not affect <code>this</code> and vice versa.</p>`},"EJSON.CustomType#equals":{filepath:"ejson/ejson.js",kind:"function",lineno:56,locus:"Anywhere",longname:"EJSON.CustomType#equals",memberof:"EJSON.CustomType",module:"ejson",name:"equals",options:[],params:[{description:"<p>Another object to compare this to.</p>",name:"other",type:{names:["Object"]}}],scope:"instance",summary:`<p>Return <code>true</code> if <code>other</code> has a value equal to <code>this</code>; <code>false</code> 315otherwise.</p>`},"EJSON.CustomType#toJSONValue":{filepath:"ejson/ejson.js",kind:"function",lineno:39,locus:"Anywhere",longname:"EJSON.CustomType#toJSONValue",memberof:"EJSON.CustomType",module:"ejson",name:"toJSONValue",options:[],params:[],scope:"instance",summary:"<p>Serialize this instance into a JSON-compatible value.</p>"},"EJSON.CustomType#typeName":{filepath:"ejson/ejson.js",kind:"function",lineno:29,locus:"Anywhere",longname:"EJSON.CustomType#typeName",memberof:"EJSON.CustomType",module:"ejson",name:"typeName",options:[],params:[],scope:"instance",summary:`<p>Return the tag used to identify this type. This must match the 316tag used to register this type with 317<a href="#ejson_add_type"><code>EJSON.addType</code></a>.</p>`},"EJSON.addType":{filepath:"ejson/ejson.js",kind:"function",lineno:91,locus:"Anywhere",longname:"EJSON.addType",memberof:"EJSON",module:"ejson",name:"addType",options:[],params:[{description:`<p>A tag for your custom type; must be unique among 318custom data types defined in your project, and must 319match the result of your type's <code>typeName</code> method.</p>`,name:"name",type:{names:["String"]}},{description:`<p>A function that deserializes a JSON-compatible 320value into an instance of your type. This should 321match the serialization performed by your 322type's <code>toJSONValue</code> method.</p>`,name:"factory",type:{names:["function"]}}],scope:"static",summary:"<p>Add a custom datatype to EJSON.</p>"},"EJSON.clone":{filepath:"ejson/ejson.js",kind:"function",lineno:659,locus:"Anywhere",longname:"EJSON.clone",memberof:"EJSON",module:"ejson",name:"clone",options:[],params:[{description:"<p>A value to copy.</p>",name:"val",type:{names:["EJSON"]}}],scope:"static",summary:"<p>Return a deep copy of <code>val</code>.</p>"},"EJSON.equals":{filepath:"ejson/ejson.js",kind:"function",lineno:537,locus:"Anywhere",longname:"EJSON.equals",memberof:"EJSON",module:"ejson",name:"equals",options:[{description:`<p>Compare in key sensitive order, 323if supported by the JavaScript implementation. For example, <code>{a: 1, b: 2}</code> 324is equal to <code>{b: 2, a: 1}</code> only when <code>keyOrderSensitive</code> is <code>false</code>. The 325default is <code>false</code>.</p>`,name:"keyOrderSensitive",type:{names:["Boolean"]}}],params:[{name:"a",type:{names:["EJSON"]}},{name:"b",type:{names:["EJSON"]}},{name:"options",optional:!0,type:{names:["Object"]}}],scope:"static",summary:`<p>Return true if <code>a</code> and <code>b</code> are equal to each other. Return false 326otherwise. Uses the <code>equals</code> method on <code>a</code> if present, otherwise 327performs a deep comparison.</p>`},"EJSON.fromJSONValue":{filepath:"ejson/ejson.js",kind:"function",lineno:471,locus:"Anywhere",longname:"EJSON.fromJSONValue",memberof:"EJSON",module:"ejson",name:"fromJSONValue",options:[],params:[{description:"<p>A value to deserialize into EJSON.</p>",name:"val",type:{names:["JSONCompatible"]}}],scope:"static",summary:"<p>Deserialize an EJSON value from its plain JSON representation.</p>"},"EJSON.isBinary":{filepath:"ejson/ejson.js",kind:"function",lineno:517,locus:"Anywhere",longname:"EJSON.isBinary",memberof:"EJSON",module:"ejson",name:"isBinary",options:[],params:[{description:"<p>The variable to check.</p>",name:"x",type:{names:["Object"]}}],scope:"static",summary:`<p>Returns true if <code>x</code> is a buffer of binary data, as returned from 328<a href="#ejson_new_binary"><code>EJSON.newBinary</code></a>.</p>`},"EJSON.newBinary":{filepath:"ejson/ejson.js",kind:"member",lineno:723,locus:"Anywhere",longname:"EJSON.newBinary",memberof:"EJSON",module:"ejson",name:"newBinary",params:[{description:"<p>The number of bytes of binary data to allocate.</p>",name:"size",type:{names:["Number"]}}],scope:"static",summary:"<p>Allocate a new buffer of binary data that EJSON can serialize.</p>"},"EJSON.parse":{filepath:"ejson/ejson.js",kind:"function",lineno:504,locus:"Anywhere",longname:"EJSON.parse",memberof:"EJSON",module:"ejson",name:"parse",options:[],params:[{description:"<p>A string to parse into an EJSON value.</p>",name:"str",type:{names:["String"]}}],scope:"static",summary:`<p>Parse a string into an EJSON value. Throws an error if the string
329is not valid EJSON.</p>`},"EJSON.stringify":{filepath:"ejson/ejson.js",kind:"member",lineno:487,locus:"Anywhere",longname:"EJSON.stringify",memberof:"EJSON",module:"ejson",name:"stringify",params:[{description:"<p>A value to stringify.</p>",name:"val",type:{names:["EJSON"]}},{name:"options",optional:!0,type:{names:["Object"]}},{description:`<p>Indents objects and 330arrays for easy readability. When <code>true</code>, indents by 2 spaces; when an 331integer, indents by that number of spaces; and when a string, uses the 332string as the indentation pattern.</p>`,name:"options.indent",optional:!0,type:{names:["Boolean","Integer","String"]}},{description:`<p>When <code>true</code>, stringifies keys in an 333object in sorted order.</p>`,name:"options.canonical",optional:!0,type:{names:["Boolean"]}}],scope:"static",summary:`<p>Serialize a value to a string. For EJSON values, the serialization 334fully represents the value. For non-EJSON values, serializes the 335same way as <code>JSON.stringify</code>.</p>`},"EJSON.toJSONValue":{filepath:"ejson/ejson.js",kind:"function",lineno:358,locus:"Anywhere",longname:"EJSON.toJSONValue",memberof:"EJSON",module:"ejson",name:"toJSONValue",options:[],params:[{description:"<p>A value to serialize to plain JSON.</p>",name:"val",type:{names:["EJSON"]}}],scope:"static",summary:`<p>Serialize an EJSON-compatible value into its plain JSON 336representation.</p>`},"Email.customTransport":{filepath:"email/email.js",kind:"member",lineno:199,locus:"Server",longname:"Email.customTransport",memberof:"Email",module:"email",name:"customTransport",params:[{description:`<p>function that will receive options from the send function and under <code>packageSettings</code> will 337include the package settings from Meteor.settings.packages.email for your custom transport to access.</p>`,name:"f",type:{names:["function"]}}],scope:"static",since:"2.2",summary:"<p>Overrides sending function with your own.</p>"},"Email.hookSend":{filepath:"email/email.js",kind:"function",lineno:188,locus:"Server",longname:"Email.hookSend",memberof:"Email",module:"email",name:"hookSend",options:[],params:[{description:`<p>receives the arguments to Email.send and should return true to go 338ahead and send the email (or at least, try subsequent hooks), or 339false to skip sending.</p>`,name:"f",type:{names:["function"]}}],returns:[{type:{names:["Object"]}}],scope:"static",summary:"<p>Hook that runs before email is sent.</p>"},"Email.send":{deprecated:!0,filepath:"email/email.js",kind:"function",lineno:319,locus:"Server",longname:"Email.send",memberof:"Email",module:"email",name:"send",options:[{description:"<p>"From:" address (required)</p>",name:"from",type:{names:["String"]}},{description:"<p>"To:", "Cc:", "Bcc:", and "Reply-To:" addresses</p>",name:"to, cc, bcc, replyTo",type:{names:["String","Array.<String>"]}},{description:"<p>Message-ID this message is replying to</p>",name:"inReplyTo",optional:!0,type:{names:["String"]}},{description:"<p>Array (or space-separated string) of Message-IDs to refer to</p>",name:"references",optional:!0,type:{names:["String","Array.<String>"]}},{description:"<p>Message-ID for this message; otherwise, will be set to a random value</p>",name:"messageId",optional:!0,type:{names:["String"]}},{description:"<p>"Subject:" line</p>",name:"subject",optional:!0,type:{names:["String"]}},{description:"<p>Mail body (in plain text and/or HTML)</p>",name:"text, html",optional:!0,type:{names:["String"]}},{description:"<p>Mail body in HTML specific for Apple Watch</p>",name:"watchHtml",optional:!0,type:{names:["String"]}},{description:"<p>iCalendar event attachment</p>",name:"icalEvent",optional:!0,type:{names:["String"]}},{description:"<p>Dictionary of custom headers - e.g. <code>{ "header name": "header value" }</code>. To set an object under a header name, use <code>JSON.stringify</code> - e.g. <code>{ "header name": JSON.stringify({ tracking: { level: 'full' } }) }</code>.</p>",name:"headers",optional:!0,type:{names:["Object"]}},{description:`<p>Array of attachment objects, as
340described in the <a href="https://nodemailer.com/message/attachments/">nodemailer documentation</a>.</p>`,name:"attachments",optional:!0,type:{names:["Array.<Object>"]}},{description:`<p>A <a href="https://nodemailer.com/extras/mailcomposer/#e-mail-message-fields">MailComposer</a> 341object representing the message to be sent. Overrides all other options. 342You can create a <code>MailComposer</code> object via 343<code>new EmailInternals.NpmModules.mailcomposer.module</code>.</p>`,name:"mailComposer",optional:!0,type:{names:["MailComposer"]}},{description:"<p>An array that holds the public keys used to encrypt.</p>",name:"encryptionKeys",optional:!0,type:{names:["String"]}},{description:"<p>Enables you to allow or disallow email signing.</p>",name:"shouldSign",optional:!0,type:{names:["String"]}}],params:[{name:"options",type:{names:["Object"]}}],returns:[{type:{names:["Promise"]}}],scope:"static",summary:`<p>Send an email with asyncronous method. Capture Throws an <code>Error</code> on failure to contact mail server 344or if mail server returns an error. All fields should match 345<a href="http://tools.ietf.org/html/rfc5322">RFC5322</a> specification.</p> 346<p>If the <code>MAIL_URL</code> environment variable is set, actually sends the email. 347Otherwise, prints the contents of the email to standard out.</p> 348<p>Note that this package is based on <strong>nodemailer</strong>, so make sure to refer to 349<a href="http://nodemailer.com/">the documentation</a> 350when using the <code>attachments</code> or <code>mailComposer</code> options.</p>`},"Email.sendAsync":{filepath:"email/email.js",kind:"function",lineno:234,locus:"Server",longname:"Email.sendAsync",memberof:"Email",module:"email",name:"sendAsync",options:[{description:"<p>"From:" address (required)</p>",name:"from",type:{names:["String"]}},{description:"<p>"To:", "Cc:", "Bcc:", and "Reply-To:" addresses</p>",name:"to, cc, bcc, replyTo",type:{names:["String","Array.<String>"]}},{description:"<p>Message-ID this message is replying to</p>",name:"inReplyTo",optional:!0,type:{names:["String"]}},{description:"<p>Array (or space-separated string) of Message-IDs to refer to</p>",name:"references",optional:!0,type:{names:["String","Array.<String>"]}},{description:"<p>Message-ID for this message; otherwise, will be set to a random value</p>",name:"messageId",optional:!0,type:{names:["String"]}},{description:"<p>"Subject:" line</p>",name:"subject",optional:!0,type:{names:["String"]}},{description:"<p>Mail body (in plain text and/or HTML)</p>",name:"text, html",optional:!0,type:{names:["String"]}},{description:"<p>Mail body in HTML specific for Apple Watch</p>",name:"watchHtml",optional:!0,type:{names:["String"]}},{description:"<p>iCalendar event attachment</p>",name:"icalEvent",optional:!0,type:{names:["String"]}},{description:"<p>Dictionary of custom headers - e.g. <code>{ "header name": "header value" }</code>. To set an object under a header name, use <code>JSON.stringify</code> - e.g. <code>{ "header name": JSON.stringify({ tracking: { level: 'full' } }) }</code>.</p>",name:"headers",optional:!0,type:{names:["Object"]}},{description:`<p>Array of attachment objects, as 351described in the <a href="https://nodemailer.com/message/attachments/">nodemailer documentation</a>.</p>`,name:"attachments",optional:!0,type:{names:["Array.<Object>"]}},{description:`<p>A <a href="https://nodemailer.com/extras/mailcomposer/#e-mail-message-fields">MailComposer</a> 352object representing the message to be sent. Overrides all other options. 353You can create a <code>MailComposer</code> object via 354<code>new EmailInternals.NpmModules.mailcomposer.module</code>.</p>`,name:"mailComposer",optional:!0,type:{names:["MailComposer"]}}],params:[{name:"options",type:{names:["Object"]}}],returns:[{type:{names:["Promise"]}}],scope:"static",summary:`<p>Send an email with asyncronous method. Capture Throws an <code>Error</code> on failure to contact mail server 355or if mail server returns an error. All fields should match 356<a href="http://tools.ietf.org/html/rfc5322">RFC5322</a> specification.</p> 357<p>If the <code>MAIL_URL</code> environment variable is set, actually sends the email. 358Otherwise, prints the contents of the email to standard out.</p> 359<p>Note that this package is based on <strong>nodemailer</strong>, so make sure to refer to 360<a href="http://nodemailer.com/">the documentation</a> 361when using the <code>attachments</code> or <code>mailComposer</code>
361 options.</p>`},"HTTP.call":{deprecated:!0,filepath:"deprecated/http/httpcall_client.js",kind:"function",lineno:24,locus:"Anywhere",longname:"HTTP.call",memberof:"HTTP",module:"deprecated",name:"call",options:[{description:"<p>String to use as the HTTP request body.</p>",name:"content",type:{names:["String"]}},{description:"<p>JSON-able object to stringify and use as the HTTP request body. Overwrites <code>content</code>.</p>",name:"data",type:{names:["Object"]}},{description:"<p>Query string to go in the URL. Overwrites any query string in <code>url</code>.</p>",name:"query",type:{names:["String"]}},{description:"<p>Dictionary of request parameters to be encoded and placed in the URL (for GETs) or request body (for POSTs). If <code>content</code> or <code>data</code> is specified, <code>params</code> will always be placed in the URL.</p>",name:"params",type:{names:["Object"]}},{description:"<p>HTTP basic authentication string of the form <code>"username:password"</code></p>",name:"auth",type:{names:["String"]}},{description:"<p>Dictionary of strings, headers to add to the HTTP request.</p>",name:"headers",type:{names:["Object"]}},{description:"<p>Maximum time in milliseconds to wait for the request before failing. There is no timeout by default.</p>",name:"timeout",type:{names:["Number"]}},{description:"<p>If <code>true</code>, transparently follow HTTP redirects. Cannot be set to <code>false</code> on the client. Default <code>true</code>.</p>",name:"followRedirects",type:{names:["Boolean"]}},{description:"<p>On the client, this will be called before the request is sent to allow for more direct manipulation of the underlying XMLHttpRequest object, which will be passed as the first argument. If the callback returns <code>false</code>, the request will be not be sent.</p>",name:"beforeSend",type:{names:["function"]}}],params:[{description:'<p>The <a href="http://en.wikipedia.org/wiki/HTTP_method">HTTP method</a> to use, such as "<code>GET</code>", "<code>POST</code>", or "<code>HEAD</code>".</p>',name:"method",type:{names:["String"]}},{description:"<p>The URL to retrieve.</p>",name:"url",type:{names:["String"]}},{name:"options",optional:!0,type:{names:["Object"]}},{description:"<p>Optional callback. If passed, the method runs asynchronously, instead of synchronously, and calls asyncCallback. On the client, this callback is required.</p>",name:"asyncCallback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Perform an outbound HTTP request.</p>"},"HTTP.del":{deprecated:!0,filepath:"deprecated/http/httpcall_common.js",kind:"function",lineno:90,locus:"Anywhere",longname:"HTTP.del",memberof:"HTTP",module:"deprecated",name:"del",options:[],params:[{description:"<p>The URL to which the request should be sent.</p>",name:"url",type:{names:["String"]}},{description:'<p>Options passed on to <a href="#http_call"><code>HTTP.call</code></a>.</p>',name:"callOptions",optional:!0,type:{names:["Object"]}},{description:"<p>Callback that is called when the request is completed. Required on the client.</p>",name:"asyncCallback",optional:!0,type:{names:["function"]}}],scope:"static",summary:'<p>Send an HTTP <code>DELETE</code> request. Equivalent to calling <a href="#http_call"><code>HTTP.call</code></a> with "DELETE" as the first argument. (Named <code>del</code> to avoid conflict with the Javascript keyword <code>delete</code>)</p>'},"HTTP.get":{deprecated:!0,filepath:"deprecated/http/httpcall_common.js",kind:"function",lineno:54,locus:"Anywhere",longname:"HTTP.get",memberof:"HTTP",module:"deprecated",name:"get",options:[],params:[{description:"<p>The URL to which the request should be sent.</p>",name:"url",type:{names:["String"]}},{description:'<p>Options passed on to <a href="#http_call"><code>HTTP.call</code></a>.</p>',name:"callOptions",optional:!0,type:{names:["Object"]}},{description:"<p>Callback that is called when the request is completed. Required on the client.</p>",name:"asyncCallback",optional:!0,type:{names:["function"]}}],scope:"static",summary:'<p>Send an HTTP <code>GET</code> request. Equivalent to calling <a href="#http_call"><code>
361HTTP.call</code></a> with "GET" as the first argument.</p>'},"HTTP.patch":{deprecated:!0,filepath:"deprecated/http/httpcall_common.js",kind:"function",lineno:102,locus:"Anywhere",longname:"HTTP.patch",memberof:"HTTP",module:"deprecated",name:"patch",options:[],params:[{description:"<p>The URL to which the request should be sent.</p>",name:"url",type:{names:["String"]}},{description:'<p>Options passed on to <a href="#http_call"><code>HTTP.call</code></a>.</p>',name:"callOptions",optional:!0,type:{names:["Object"]}},{description:"<p>Callback that is called when the request is completed. Required on the client.</p>",name:"asyncCallback",optional:!0,type:{names:["function"]}}],scope:"static",summary:'<p>Send an HTTP <code>PATCH</code> request. Equivalent to calling <a href="#http_call"><code>HTTP.call</code></a> with "PATCH" as the first argument.</p>'},"HTTP.post":{deprecated:!0,filepath:"deprecated/http/httpcall_common.js",kind:"function",lineno:66,locus:"Anywhere",longname:"HTTP.post",memberof:"HTTP",module:"deprecated",name:"post",options:[],params:[{description:"<p>The URL to which the request should be sent.</p>",name:"url",type:{names:["String"]}},{description:'<p>Options passed on to <a href="#http_call"><code>HTTP.call</code></a>.</p>',name:"callOptions",optional:!0,type:{names:["Object"]}},{description:"<p>Callback that is called when the request is completed. Required on the client.</p>",name:"asyncCallback",optional:!0,type:{names:["function"]}}],scope:"static",summary:'<p>Send an HTTP <code>POST</code> request. Equivalent to calling <a href="#http_call"><code>HTTP.call</code></a> with "POST" as the first argument.</p>'},"HTTP.put":{deprecated:!0,filepath:"deprecated/http/httpcall_common.js",kind:"function",lineno:78,locus:"Anywhere",longname:"HTTP.put",memberof:"HTTP",module:"deprecated",name:"put",options:[],params:[{description:"<p>The URL to which the request should be sent.</p>",name:"url",type:{names:["String"]}},{description:'<p>Options passed on to <a href="#http_call"><code>HTTP.call</code></a>.</p>',name:"callOptions",optional:!0,type:{names:["Object"]}},{description:"<p>Callback that is called when the request is completed. Required on the client.</p>",name:"asyncCallback",optional:!0,type:{names:["function"]}}],scope:"static",summary:'<p>Send an HTTP <code>PUT</code> request. Equivalent to calling <a href="#http_call"><code>HTTP.call</code></a> with "PUT" as the first argument.</p>'},"InputFile#addAsset":{kind:"function",longname:"InputFile#addAsset",memberof:"InputFile",name:"addAsset",options:[{description:"<p>The path at which to serve the asset.</p>",name:"path",type:{names:["String"]}},{description:`<p>The data that should be placed in the 362file.</p>`,name:"data",type:{names:["Buffer","String"]}},{description:`<p>Optionally, supply a hash for the output 363file.</p>`,name:"hash",optional:!0,type:{names:["String"]}}],params:[{name:"options",type:{names:["Object"]}},{description:`<p>Optional function that can be called 364to obtain any remaining options that may be 365expensive to compute, and thus should only be 366computed if/when we are sure this asset will be 367used by the application.</p>`,name:"lazyFinalizer",type:{names:["function"]}}],scope:"instance",summary:`<p>Add a file to serve as-is to the browser or to include on 368the browser, depending on the target. On the web, it will be served 369at the exact path requested. For server targets, it can be retrieved 370using <code>Assets.getText</code> or <code>Assets.getBinary</code>.</p>`},"InputFile#addHtml":{async:!0,kind:"function",longname:"InputFile#addHtml",memberof:"InputFile",name:"addHtml",options:[{description:`<p>Which section of the document should 371be appended to. Can only be "head" or "body".</p>`,name:"section",type:{names:["String"]}},{description:"<p>The content to append.</p>",name:"data",type:{names:["String"]}}],params:[{name:"options",type:{names:["Object"]}},{description:`<p>Optional function that can be called 372to obtain any remaining options that may be 373expensive to compute, and thus should only be 374computed if/when we are sure this HTML will be used 375by the application.</p>`,name:"lazyFinalizer",type:{names:["function"]}}],scope:"instance",summary:`<p>Works in web targets only. Add markup to the <code>head</code> or <code>body</code> 376section of the document.</p>`},"InputFile#addJavaScript":{kind:"function",longname:"InputFile#addJavaScript",memberof:"InputFile",name:"addJavaScript",options:[{description:`<p>The path at which the JavaScript file 377should be inserted, may not be honored in case of path conflicts.</p>`,name:"path",type:{names:["String"]}},{description:"<p>The code to be added.</p>",name:"data",type:{names:["String"]}},{description:`<p>A stringified JSON 378sourcemap, in case the JavaScript file was generated from a 379different file.</p>`,name:"sourceMap",type:{names:["String","Object"]}}],params:[{name:"options",type:{names:["Object"]}},{description:`<p>Optional function that can be called 380to obtain any remaining options that may be 381expensive to compute, and thus should only be 382computed if/when we are sure this JavaScript will 383be used by the application.</p>`,name:"lazyFinalizer",type:{names:["function"]}}],scope:"instance",summary:`<p>Add JavaScript code. The code added will only see the 384namespaces imported by this package as runtime dependencies using 385<a href="#PackageAPI-use">'api.use'</a>. If the file being compiled was added 386with the bare flag, the resulting JavaScript won't be wrapped in a 387closure.</p>`},"InputFile#addStylesheet":{kind:"function",longname:"InputFile#addStylesheet",memberof:"InputFile",name:"addStylesheet",options:[{description:`<p>The requested path for the added CSS, may not
388be satisfied if there are path conflicts.</p>`,name:"path",type:{names:["String"]}},{description:`<p>The content of the stylesheet that should be 389added.</p>`,name:"data",type:{names:["String"]}},{description:`<p>A stringified JSON 390sourcemap, in case the stylesheet was generated from a different 391file.</p>`,name:"sourceMap",type:{names:["String","Object"]}}],params:[{name:"options",type:{names:["Object"]}},{description:`<p>Optional function that can be called 392to obtain any remaining options that may be 393expensive to compute, and thus should only be 394computed if/when we are sure this CSS will be used 395by the application.</p>`,name:"lazyFinalizer",type:{names:["function"]}}],scope:"instance",summary:`<p>Web targets only. Add a stylesheet to the document. Not available 396for linter build plugins.</p>`},"InputFile#error":{kind:"function",longname:"InputFile#error",memberof:"InputFile",name:"error",options:[{description:"<p>The error message to display.</p>",name:"message",type:{names:["String"]}},{description:"<p>The path to display in the error message.</p>",name:"sourcePath",optional:!0,type:{names:["String"]}},{description:"<p>The line number to display in the error message.</p>",name:"line",type:{names:["Integer"]}},{description:"<p>The function name to display in the error message.</p>",name:"func",type:{names:["String"]}}],params:[{name:"options",type:{names:["Object"]}}],scope:"instance",summary:`<p>Call this method to raise a compilation or linting error for the 397file.</p>`},"InputFile#getArch":{kind:"function",longname:"InputFile#getArch",memberof:"InputFile",name:"getArch",options:[],params:[],returns:[{type:{names:["String"]}}],scope:"instance",summary:`<p>Returns the architecture that is targeted while processing this 398file.</p>`},"InputFile#getBasename":{kind:"function",longname:"InputFile#getBasename",memberof:"InputFile",name:"getBasename",options:[],params:[],returns:[{type:{names:["String"]}}],scope:"instance",summary:"<p>Returns the filename of the file.</p>"},"InputFile#getContentsAsBuffer":{kind:"function",longname:"InputFile#getContentsAsBuffer",memberof:"InputFile",name:"getContentsAsBuffer",options:[],params:[],returns:[{type:{names:["Buffer"]}}],scope:"instance",summary:"<p>Returns the full contents of the file as a buffer.</p>"},"InputFile#getContentsAsString":{kind:"function",longname:"InputFile#getContentsAsString",memberof:"InputFile",name:"getContentsAsString",options:[],params:[],returns:[{type:{names:["String"]}}],scope:"instance",summary:"<p>Returns the full contents of the file as a string.</p>"},"InputFile#getDeclaredExports":{kind:"function",longname:"InputFile#getDeclaredExports",memberof:"InputFile",name:"getDeclaredExports",options:[],params:[],returns:[{type:{names:["Array.<String>"]}}],scope:"instance",summary:`<p>Returns a list of symbols declared as exports in this target. The 399result of <code>api.export('symbol')</code> calls in target's control file such as 400package.js.</p>`},"InputFile#getDirname":{kind:"function",longname:"InputFile#getDirname",memberof:"InputFile",name:"getDirname",options:[],params:[],returns:[{type:{names:["String"]}}],scope:"instance",summary:`<p>Returns the directory path relative to the package or app root. 401The returned path always uses forward slashes.</p>`},"InputFile#getDisplayPath":{kind:"function",longname:"InputFile#getDisplayPath",memberof:"InputFile",name:"getDisplayPath",options:[],params:[],returns:[{type:{names:["String"]}}],scope:"instance",summary:`<p>Returns a relative path that can be used to form error messages or 402other display properties. Can be used as an input to a source map.</p>`},"InputFile#getExtension":{kind:"function",longname:"InputFile#getExtension",memberof:"InputFile",name:"getExtension",options:[],params:[],returns:[{type:{names:["String"]}}],scope:"instance",summary:`<p>Returns the extension that matched the compiler plugin. 403The longest prefix is preferred.</p>`},"InputFile#getFileOptions":{kind:"function",longname:"InputFile#getFileOptions",memberof:"InputFile",name:"getFileOptions",options:[],params:[],returns:[{type:{names:["Object"]}}],scope:"instance",summary:`<p>Returns an object of file options such as those passed as the 404third argument to api.addFiles.</p>`},"InputFile#getPackageName":{kind:"function",longname:"InputFile#getPackageName",memberof:"InputFile",name:"getPackageName",options:[],params:[],returns:[{type:{names:["String"]}}],scope:"instance",summary:`<p>Returns the name of the package or <code>null</code> if the file is not in a 405package.</p>`},"InputFile#getPathInBundle":{kind:"function",longname:"InputFile#getPathInBundle",memberof:"InputFile",name:"getPathInBundle",options:[],params:[],returns:[{type:{names:["String"]}}],scope:"instance",summary:"<p>Returns the path of the compiled file in the bundle.</p>"},"InputFile#getPathInPackage":{kind:"function",longname:"InputFile#getPathInPackage",memberof:"InputFile",name:"getPathInPackage",options:[],params:[],returns:[{type:{names:["String"]}}],scope:"instance",summary:`<p>Returns the relative path of file to the package or app root 406directory. The returned path always uses forward slashes.</p>`},"InputFile#getSourceHash":{kind:"function",longname:"InputFile#getSourceHash",memberof:"InputFile",name:"getSourceHash",options:[],params:[],returns:[{type:{names:["String"]}}],scope:"instance",summary:`<p>Returns a hash string for the file that can be used to implement 407caching.</p>`},"InputFile#getSourceMap":{kind:"function",longname:"InputFile#getSourceMap",memberof:"InputFile",name:"getSourceMap",options:[],params:[],returns:[{type:{names:["String"]}}],scope:"instance",summary:"<p>Returns the source-map associated with the file.</p>"},IterationCallback:{filepath:"minimongo/cursor.js",kind:"typedef",lineno:123,longname:"IterationCallback",module:"minimongo",name:"IterationCallback",params:[{name:"doc",type:{names:["Object"]}},{name:"index",type:{names:["Number"]}}],scope:"global",type:{names:["function"]}},Match:{filepath:"check/match.js",kind:"namespace",lineno:63,longname:"Match",module:"check",name:"Match",scope:"global",summary:"<p>The namespace for all Match types and methods.</p>"},"Match.test":{filepath:"check/match.js",kind:"function",lineno:126,locus:"Anywhere",longname:"Match.test",memberof:"Match",module:"check",name:"test",options:[],params:[{description:"<p>The value to check</p>",name:"value",type:{names:["Any"]}},{description:"<p>The pattern to match <code>value</code> against</p>",name:"pattern",type:{names:["MatchPattern"]}}],scope:"static",summary:"<p>Returns true if the value matches the pattern.</p>"},"MessageProcessors#_livedata_connected":{async:!0,filepath:"ddp-client/common/message_processors.js",kind:"function",lineno:16,longname:"MessageProcessors#_livedata_connected",memberof:"MessageProcessors",module:"ddp-client",name:"_livedata_connected",options:[],params:[{description:"<p>The connection message</p>",name:"msg",type:{names:["Object"]}}],scope:"instance",summary:"<p>Process the connection message and set up the session</p>"},"MessageProcessors#_livedata_data":{async:!0,filepath:"ddp-client/common/message_processors.js",kind:"function",lineno:133,longname:"MessageProcessors#_livedata_data",memberof:"MessageProcessors",module:"ddp-client",name:"_livedata_data",options:[],params:[{description:"<p>The data message</p>",name:"msg",type:{names:["Object"]}}],scope:"instance",summary:"<p>Process various data messages from the server</p>"},"MessageProcessors#_livedata_error":{filepath:"ddp-client/common/message_processors.js",kind:"function",lineno:335,longname:"MessageProcessors#_livedata_error",memberof:"MessageProcessors",module:"ddp-client",name:"_livedata_error",options:[],params:[{description:"<p>The error message</p>",name:"msg",type:{names:["Object"]}}],scope:"instance",summary:"<p>Handle errors from the server</p>"},"MessageProcessors#_livedata_nosub":{async:!0,filepath:"ddp-client/common/message_processors.js",kind:"function",lineno:288,longname:"MessageProcessors#_livedata_nosub",memberof:"MessageProcessors",module:"ddp-client",name:"_livedata_nosub",options:[],params:[{description:"<p>The nosub message</p>",name:"msg",type:{names:["Object"]}}],scope:"instance",summary:"<p>Handle "nosub" messages arriving from the server</p>"},"MessageProcessors#_livedata_result":{async:!0,filepath:"ddp-client/common/message_processors.js",kind:"function",lineno:243,longname:"MessageProcessors#_livedata_result",memberof:"MessageProcessors",module:"ddp-client",name:"_livedata_result",options:[],params:[{description:"<p>The method result message</p>",name:"msg",type:{names:["Object"]}}],scope:"instance",summary:"<p>Handle method results arriving from the server</p>"},Meteor:{filepath:"meteor/client_environment.js",kind:"namespace",lineno:4,longname:"Meteor",module:"meteor",name:"Meteor",scope:"global",summary:"<p>The Meteor namespace</p>"},"Meteor.EnvironmentVariable":{filepath:"meteor/dynamics_nodejs.js",kind:"class",lineno:89,locus:"Anywhere",longname:"Meteor.EnvironmentVariable",memberof:"Meteor",module:"meteor",name:"EnvironmentVariable",options:[],params:[],scope:"static",summary:"<p>Constructor for EnvironmentVariable</p>"},"Meteor.EnvironmentVariable.get":{filepath:"meteor/dynamics_nodejs.js",kind:"function",lineno:16,locus:"Anywhere",longname:"Meteor.EnvironmentVariable.get",memberof:"Meteor.EnvironmentVariable",module:"meteor",name:"get",options:[],params:[],returns:[{description:"<p>The current value of the variable, or <code>undefined</code> if no</p>",type:{names:["any"]}}],scope:"static",summary:`<p>Getter for the current value of the variable, or <code>undefined</code> if 408called from outside a <code>withValue</code> callback.</p>`},"Meteor.EnvironmentVariable.withValue":{filepath:"meteor/dynamics_nodejs.js",kind:"function",lineno:36,longname:"Meteor.EnvironmentVariable.withValue",memberof:"Meteor.EnvironmentVariable",module:"meteor",name:"withValue",options:[],params:[{description:"<p>The value to set for the duration of the function call</p>",name:"value",type:{names:["any"]}},{description:"<p>The function to call with the new value of the</p>",name:"func",type:{names:["function"]}},{description:'<p>Optional additional properties for adding in <a href="https://nodejs.org/api/async_context.html#class-asynclocalstorage">asl</a></p>',name:"options",optional:!0,type:{names:["Object"]}}],returns:[{description:"<p>The return value of the function</p>",type:{names:["Promise.<any>"]}}],scope:"static",summary:"<p>takes a value and a function, calls the function with the value set for the duration of the call</p>"},"Meteor.EnvironmentVariableAsync":{filepath:"meteor/dynamics_nodejs.js",kind:"class",lineno:11,locus:"Anywhere",longname:"Meteor.EnvironmentVariableAsync",memberof:"Meteor",module:"meteor",name:"EnvironmentVariableAsync",options:[],params:[],scope:"static",summary:"<p>Constructor for EnvironmentVariable</p>"},"Meteor.Error":{filepath:"meteor/errors.js",kind:"class",lineno:55,locus:"Anywhere",longname:"Meteor.Error",memberof:"Meteor",module:"meteor",name:"Error",options:[],params:[{description:`<p>A string code uniquely identifying this kind of error. 409This string should be used by callers of the method to determine the 410appropriate action to take, instead of attempting to parse the reason 411or details fields.</p> 412<p>For legacy reasons, some built-in Meteor functions such as <code>check</code> throw 413errors with a number in this field.</p>`,name:"error",type:{names:["String"]}},{description:`<p>Optional. A short human-readable summary of the 414error, like 'Not Found'.</p>`,name:"reason",optional:!0,type:{names:["String"]}},{description:`<p>Optional. Additional information about the error, 415like a textual stack trace.</p>`,name:"details",optional:!0,type:{names:["String"]}}],scope:"static",summary:"<p>This class represents a symbolic error thrown by a method.</p>"},"Meteor.absoluteUrl":{filepath:"meteor/url_common.js",kind:"function",lineno:10,locus:"Anywhere",longname:"Meteor.absoluteUrl",memberof:"Meteor",module:"meteor",name:"absoluteUrl",options:[{description:"<p>Create an HTTPS URL.</p>",name:"secure",type:{names:["Boolean"]}},{description:"<p>Replace localhost with 127.0.0.1. Useful for services that don't recognize localhost as a domain name.</p>",name:"replaceLocalhost",type:{names:["Boolean"]}},{description:"<p>Override the default ROOT_URL from the server environment. For example: "<code>http://foo.example.com</code>"</p>",name:"rootUrl",type:{names:["String"]}}],params:[{description:"<p>A path to append to the root URL. Do not include a leading "<code>/</code>".</p>",name:"path",optional:!0,type:{names:["String"]}},{name:"options",optional:!0,type:{names:["Object"]}}],scope:"static",summary:"<p>Generate an absolute URL pointing to the application. The server reads from the <code>ROOT_URL</code> environment variable to determine where it is running. This is taken care of automatically for apps deployed to Galaxy, but must be provided when using <code>meteor build</code>.</p>"},"Meteor.apply":{alias:"Meteor.apply",filepath:"ddp-client/common/livedata_connection.js",importfrompackage:"meteor",kind:"function",lineno:635,locus:"Anywhere",longname:"Meteor.apply",memberof:"Meteor",module:"meteor",name:"apply",options:[{description:"<p>(Client only) If true, don't send this method until all previous method calls have completed, and don't send any subsequent method calls until this one is completed.</p>",name:"wait",type:{names:["Boolean"]}},{description:"<p>(Client only) This callback is invoked with the error or result of the method (just like <code>asyncCallback</code>) as soon as the error or result is available. The local cache may not yet reflect the writes performed by the method.</p>",name:"onResultReceived",type:{names:["function"]}},{description:"<p>(Client only) if true, don't send this method again on reload, simply call the callback an error with the error code 'invocation-failed'.</p>",name:"noRetry",type:{names:["Boolean"]}},{description:"<p>(Client only) If true, exceptions thrown by method stubs will be thrown instead of logged, and the method will not be invoked on the server.</p>",name:"throwStubExceptions",type:{names:["Boolean"]}},{description:"<p>(Client only) If true then in cases where we would have otherwise discarded the stub's return value and returned undefined, instead we go ahead and return it. Specifically, this is any time other than when (a) we are already inside a stub or (b) we are in Node and n
415o callback was provided. Currently we require this flag to be explicitly passed to reduce the likelihood that stub return values will be confused with server return values; we may improve this in future.</p>",name:"returnStubValue",type:{names:["Boolean"]}}],params:[{description:"<p>Name of method to invoke</p>",name:"name",type:{names:["String"]}},{description:"<p>Method arguments</p>",name:"args",type:{names:["Array.<EJSONable>"]}},{name:"options",optional:!0,type:{names:["Object"]}},{description:'<p>Optional callback; same semantics as in <a href="#meteor_call"><code>Meteor.call</code></a>.</p>',name:"asyncCallback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Invoke a method passing an array of arguments.</p>"},"Meteor.applyAsync":{alias:"Meteor.applyAsync",filepath:"ddp-client/common/livedata_connection.js",importfrompackage:"meteor",kind:"function",lineno:678,locus:"Anywhere",longname:"Meteor.applyAsync",memberof:"Meteor",module:"meteor",name:"applyAsync",options:[{description:"<p>(Client only) If true, don't send this method until all previous method calls have completed, and don't send any subsequent method calls until this one is completed.</p>",name:"wait",type:{names:["Boolean"]}},{description:"<p>(Client only) This callback is invoked with the error or result of the method (just like <code>asyncCallback</code>) as soon as the error or result is available. The local cache may not yet reflect the writes performed by the method.</p>",name:"onResultReceived",type:{names:["function"]}},{description:"<p>(Client only) if true, don't send this method again on reload, simply call the callback an error with the error code 'invocation-failed'.</p>",name:"noRetry",type:{names:["Boolean"]}},{description:"<p>(Client only) If true, exceptions thrown by method stubs will be thrown instead of logged, and the method will not be invoked on the server.</p>",name:"throwStubExceptions",type:{names:["Boolean"]}},{description:"<p>(Client only) If true then in cases where we would have otherwise discarded the stub's return value and returned undefined, instead we go ahead and return it. Specifically, this is any time other than when (a) we are already inside a stub or (b) we are in Node and no callback was provided. Currently we require this flag to be explicitly passed to reduce the likelihood that stub return values will be confused with server return values; we may improve this in future.</p>",name:"returnStubValue",type:{names:["Boolean"]}},{description:"<p>(Client only) If true, the promise returned by applyAsync will resolve to the server's return value, rather than the stub's return value. This is useful when you want to ensure that the server's return value is used, even if the stub returns a promise. The same behavior as <code>callAsync</code>.</p>",name:"returnServerResultPromise",type:{names:["Boolean"]}}],params:[{description:"<p>Name of method to invoke</p>",name:"name",type:{names:["String"]}},{description:"<p>Method arguments</p>",name:"args",type:{names:["Array.<EJSONable>"]}},{name:"options",optional:!0,type:{names:["Object"]}}],scope:"static",summary:"<p>Invoke a method passing an array of arguments.</p>"},"Meteor.bindEnvironment":{filepath:"meteor/dynamics_nodejs.js",kind:"function",lineno:125,locus:"Anywhere",longname:"Meteor.bindEnvironment",memberof:"Meteor",module:"meteor",name:"bindEnvironment",options:[],params:[{description:"<p>Function that is wrapped</p>",name:"func",type:{names:["function"]}},{name:"onException",type:{names:["function"]}},{description:"<p>Optional <code>this</code> object against which the original function will be invoked</p>",name:"_this",type:{names:["Object"]}}],returns:[{description:"<p>The wrapped function</p>",type:{names:["function"]}}],scope:"static",summary:`<p>Stores the current Meteor environment variables, and wraps the 416function to run with the environment variables restored. On the server, the 417function is wrapped within Async Local Storage.</p> 418<p>This function has two reasons:</p> 419<ol> 420<li>Return the function to be executed on the MeteorJS context, having it assigned in Async Local Storage.</li> 421<li>Better error handling, the error message will be more clear.</li> 422</ol>`},"Meteor.call":{alias:"Meteor.call",filepath:"ddp-client/common/livedata_connection.js",importfrompackage:"meteor",kind:"function",lineno:588,locus:"Anywhere",longname:"Meteor.call",memberof:"Meteor",module:"meteor",name:"call",options:[],params:[{description:"<p>Name of method to invoke</p>",name:"name",type:{names:["String"]}},{description:"<p>Optional method arguments</p>",name:"arg1, arg2...",optional:!0,type:{names:["EJSONable"]}},{description:"<p>Optional callback, which is called asynchronously with the error or result after the method is complete. If not provided, the method runs synchronously if possible (see below).</p>",name:"asyncCallback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Invokes a method with a sync stub, passing any number of arguments.</p>"},"Meteor.callAsync":{alias:"Meteor.callAsync",filepath:"ddp-client/common/livedata_connection.js",importfrompackage:"meteor",kind:"function",lineno:608,locus:"Anywhere",longname:"Meteor.callAsync",memberof:"Meteor",module:"meteor",name:"callAsync",options:[],params:[{description:"<p>Name of method to invoke</p>",name:"name",type:{names:["String"]}},{description:"<p>Optional method arguments</p>",name:"arg1, arg2...",optional:!0,type:{names:["EJSONable"]}}],returns:[{type:{names:["Promise"]}}],scope:"static",summary:"<p>Invokes a method with an async stub, passing any number of arguments.</p>"},"Meteor.clearInterval":{filepath:"meteor/timers.js",kind:"function",lineno:58,locus:"Anywhere",longname:"Meteor.clearInterval",memberof:"Meteor",module:"meteor",name:"clearInterval",options:[],params:[{description:"<p>The handle returned by <code>Meteor.setInterval</code></p>",name:"id",type:{names:["Object"]}}],scope:"static",summary:"<p>Cancel a repeating function call scheduled by <code>Meteor.setInterval</code>.</p>"},"Meteor.clearTimeout":{filepath:"meteor/timers.js",kind:"function",lineno:68,locus:"Anywhere",longname:"Meteor.clearTimeout",memberof:"Meteor",module:"meteor",name:"clearTimeout",options:[],params:[{description:"<p>The handle returned by <code>Meteor.setTimeout</code></p>",name:"id",type:{names:["Object"]}}],scope:"static",summary:"<p>Cancel a function call scheduled by <code>Meteor.setTimeout</code>.</p>"},"Meteor.defer":{filepath:"meteor/timers.js",kind:"function",lineno:83,locus:"Anywhere",longname:"Meteor.defer",memberof:"Meteor",module:"meteor",name:"defer",options:[],params:[{description:"<p>The function to run</p>",name:"func",type:{names:["function"]}}],scope:"static",summary:"<p>Defer execution of a function to run asynchronously in the background (similar to <code>Meteor.setTimeout(func, 0)</code>.</p>"},"Meteor.deferDev":{filepath:"meteor/timers.js",kind:"function",lineno:123,locus:"Anywhere",longname:"Meteor.deferDev",memberof:"Meteor",module:"meteor",name:"deferDev",options:[],params:[{description:"<p>The function to run</p>",name:"func",type:{names:["function"]}},{description:"<p>The options object</p>",name:"options",type:{names:["Object"]}}],scope:"static",summary:"<p>Wrap a function to run in the background in development (similar to Meteor.isDevelopment ? Meteor.defer(fn) : Meteor.startup(fn)).</p>"},"Meteor.deferProd":{filepath:"meteor/timers.js",kind:"function",lineno:134,locus:"Anywhere",longname:"Meteor.deferProd",memberof:"Meteor",module:"meteor",name:"deferProd",options:[],params:[{description:"<p>The function to run</p>",name:"func",type:{names:["function"]}},{description:"<p>The options object</p>",name:"options",type:{names:["Object"]}}],scope:"static",summary:"<p>Wrap a function to run in the background in production (similar to Meteor.isProduction ? Meteor.defer(fn) : Meteor.startup(fn)).</p>"},"Meteor.deferrable":{filepath:"meteor/timers.js",kind:"function",lineno:95,locus:"Anywhere",longname:"Meteor.deferrable",memberof:"Meteor",module:"meteor",name:"deferrable",options:[{description:"<p>Condition to determine whether to defer the function, you can pass an array of environments ['development', 'production', 'test']</p>",name:"on",type:{names:["Array.<String>"]}}],params:[{description:"<p>The function to run</p>",name:"func",type:{names:["function"]}},{description:"<p>The options object</p>",name:"options",type:{names:["Object"]}}],scope:"static",summary:"<p>Wrap a function so that it only runs in background in specified environments..</p>"},"Meteor.disconnect":{alias:"Meteor.disconnect",filepath:"ddp-client/common/livedata_connection.js",importfrompackage:"meteor",kind:"function",lineno:1110,locus:"Client",longname:"Meteor.disconnect",memberof:"Meteor",module:"meteor",name:"disconnect",options:[],params:[],scope:"static",summary:"<p>Disconnect the client from the server.</p>"},"Meteor.fetch":{filepath:"meteor/fetch.js",kind:"function",lineno:12,locus:"Anywhere",longname:"Meteor.fetch",memberof:"Meteor",module:"meteor",name:"fetch",options:[],params:[{description:"<p>The URL to fetch or a Request object</p>",name:"url",type:{names:["string","Request"]}},{description:"<p>Standard fetch options</p>",name:"options",optional:!0,type:{names:["Object"]}}],returns:[{description:`<ul> 423<li>The fetch response</li> 424</ul>`,type:{names:["Promise.<Response>"]}}],scope:"static",summary:`<p>Wrapper around the standard <code>fetch</code> API. Packages can extend 425this function to add middleware-like behavior (e.g. authentication). 426On environments without a native <code>fetch</code> (e.g. the <code>web.browser.legacy</code> 427arch), the call rejects with a clear error unless the <code>fetch</code> package 428is installed to provide the polyfill.</p>`},"Meteor.gitCommitHash":{filepath:"meteor/client_environment.js",kind:"member",lineno:67,locus:"Anywhere",longname:"Meteor.gitCommitHash",memberof:"Meteor",module:"meteor",name:"gitCommitHash",scope:"static",summary:`<p>Hexadecimal Git commit hash, if the application is using Git 429for version control. Undefined otherwise.</p>`,type:{names:["String"]}},"Meteor.isAppTest":{filepath:"meteor/test_environment.js",kind:"member",lineno:32,locus:"Anywhere",longname:"Meteor.isAppTest",memberof:"Meteor",module:"meteor",name:"isAppTest",scope:"static",summary:"<p>Boolean variable. True if running tests against your application i.e <code>meteor test --full-app</code>.</p>",type:{names:["Boolean"]}},"Meteor.isAsyncCall":{filepath:"ddp-server/livedata_server.js",importfrompackage:"meteor",kind:"function",lineno:1697,locus:"Anywhere",longname:"Meteor.isAsyncCall",memberof:"Meteor",module:"meteor",name:"isAsyncCall",options:[],params:[],returns:[{description:"<p>boolean</p>"}],scope:"static",summary:"<p>Tells if the method call came from a call or a callAsync.</p>"},"Meteor.isClient":{filepath:"meteor/client_environment.js",kind:"member",lineno:31,locus:"Anywhere",longname:"Meteor.isClient",memberof:"Meteor",module:"meteor",name:"isClient",scope:"static",summary:"<p>Boolean variable. True if running in client environment.</p>",type:{names:["Boolean"]}},"Meteor.isCordova":{filepath:"meteor/cordova_environment.js",kind:"member",lineno:7,locus:"Anywhere",longname:"Meteor.isCordova",memberof:"Meteor",module:"meteor",name:"isCordova",scope:"static",summary:"<p>Boolean variable. True if running in a Cordova mobile environment.</p>",type:{names:["Boolean"]}},"Meteor.isDevelopment":{filepath:"meteor/client_environment.js",kind:"member",lineno:23,locus:"Anywhere",longname:"Meteor.isDevelopment",memberof:"Meteor",module:"meteor",name:"isDevelopment",scope:"static",summary:"<p>Boolean variable. True if running in development environment.</p>",type:{names:["Boolean"]}},"Meteor.isFibersDisabled":{filepath:"meteor/asl-helpers-client.js",kind:"member",lineno:9,locus:"Anywhere",longname:"Meteor.isFibersDisabled",memberof:"Meteor",module:"meteor",name:"isFibersDisabled",scope:"static",summary:`<p>Boolean variable. True when running in Meteor 3.0. Useful to packages 430in order to maintain compatibility with Meteor 2.x.</p>`,type:{names:["Boolean"]}},"Meteor.isModern":{filepath:"meteor/client_environment.js",kind:"member",lineno:56,locus:"Anywhere",longname:"Meteor.isModern",memberof:"Meteor",module:"meteor",name:"isModern",scope:"static",summary:`<p>Boolean variable. True if running in a "modern" JS 431environment, as determined by the <code>modern</code> package.</p>`,type:{names:["Boolean"]}},"Meteor.isPackageTest":{filepath:"meteor/test_environment.js",kind:"member",lineno:41,locus:"Anywhere",longname:"Meteor.isPackageTest",memberof:"Meteor",module:"meteor",name:"isPackageTest",scope:"static",summary:"<p>Boolean variable. True if running tests against a Meteor package.</p>",type:{names:["Boolean"]}},"Meteor.isProduction":{filepath:"meteor/client_environment.js",kind:"member",lineno:15,locus:"Anywhere",longname:"Meteor.isProduction",memberof:"Meteor",module:"meteor",name:"isProduction",scope:"static",summary:"<p>Boolean variable. True if running in production environment.</p>",type:{names:["Boolean"]}},"Meteor.isServer":{filepath:"meteor/client_environment.js",kind:"member",lineno:39,locus:"Anywhere",longname:"Meteor.isServer",memberof:"Meteor",module:"meteor",name:"isServer",scope:"static",summary:"<p>Boolean variable. True if running in server environment.</p>",type:{names:["Boolean"]}},"Meteor.isTest":{filepath:"meteor/test_environment.js",kind:"member",lineno:23,locus:"Anywhere",longname:"Meteor.isTest",memberof:"Meteor",module:"meteor",name:"isTest",scope:"static",summary:`<p>Boolean variable. True when running unit tests (false if running 432tests in full app mode).</p>`,type:{names:["Boolean"]}},"Meteor.loggingIn":{filepath:"accounts-base/accounts_client.js",importfrompackage:"meteor",kind:"function",lineno:920,locus:"Client",longname:"Meteor.loggingIn",memberof:"Meteor",module:"meteor",name:"loggingIn",options:[],params:[],scope:"static",summary:`<p>True if a login method (such as <code>Meteor.loginWithPassword</code>, 433<code>Meteor.loginWithFacebook</code>, or <code>Accounts.createUser</code>) is currently in 434progress. A reactive data source.</p>`},"Meteor.loggingOut":{filepath:"accounts-base/accounts_client.js",importfrompackage:"meteor",kind:"function",lineno:928,locus:"Client",longname:"Meteor.loggingOut",memberof:"Meteor",module:"meteor",name:"loggingOut",options:[],params:[],scope:"static",summary:`<p>True if a logout method (such as <code>Meteor.logout</code>) is currently in 435progress. A reactive data source.</p>`},"Meteor.loginWith<ExternalService>":{filepath:"accounts-oauth/oauth_client.js",importfrompackage:"meteor",kind:"function",lineno:3,locus:"Client",longname:"Meteor.loginWith<ExternalService>",memberof:"Meteor",module:"meteor",name:"loginWith<ExternalService>",options:[{description:"<p>A list of permissions to request from the user.</p>",name:"requestPermissions",type:{names:["Array.<String>"]}},{description:"<p>If true, asks the user for permission to act on their behalf when offline. This stores an additional offline token in the <code>services</code> field of the user document. Currently only supported with Google.</p>",name:"requestOfflineToken",type:{names:["Boolean"]}},{description:'<p>
435Provide additional parameters to the authentication URI. Currently only supported with Google. See <a href="https://developers.google.com/identity/protocols/OpenIDConnect#authenticationuriparameters">Google Identity Platform documentation</a>.</p>',name:"loginUrlParameters",type:{names:["Object"]}},{description:"<p>An email address that the external service will use to pre-fill the login prompt. Currently only supported with Meteor developer accounts and Google accounts. If used with Google, the Google User ID can also be passed.</p>",name:"loginHint",type:{names:["String"]}},{description:"<p>Login style ("popup" or "redirect", defaults to the login service configuration). The "popup" style opens the login page in a separate popup window, which is generally preferred because the Meteor application doesn't need to be reloaded. The "redirect" style redirects the Meteor application's window to the login page, and the login service provider redirects back to the Meteor application which is then reloaded. The "redirect" style can be used in situations where a popup window can't be opened, such as in a mobile UIWebView. The "redirect" style however relies on session storage which isn't available in Safari private mode, so the "popup" style will be forced if session storage can't be used.</p>",name:"loginStyle",type:{names:["String"]}},{description:"<p>If using "redirect" login style, the user will be returned to this URL after authorisation has been completed.</p>",name:"redirectUrl",type:{names:["String"]}},{description:"<p>If true, forces the user to approve the app's permissions, even if previously approved. Currently only supported with Google.</p>",name:"forceApprovalPrompt",type:{names:["Boolean"]}}],params:[{name:"options",optional:!0,type:{names:["Object"]}},{description:'<p>Optional callback. Called with no arguments on success, or with a single <code>Error</code> argument on failure. The callback cannot be called if you are using the "redirect" <code>loginStyle</code>, because the app will have reloaded in the meantime; try using <a href="#accounts_onlogin">client-side login hooks</a> instead.</p>',name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Log the user in using an external service.</p>"},"Meteor.loginWithPassword":{filepath:"accounts-password/password_client.js",importfrompackage:"meteor",kind:"function",lineno:56,locus:"Client",longname:"Meteor.loginWithPassword",memberof:"Meteor",module:"meteor",name:"loginWithPassword",options:[],params:[{description:`<p>Either a string interpreted as a username or an email; or an object with a 436single key: <code>email</code>, <code>username</code> or <code>id</code>. Username or email match in a case 437insensitive manner.</p>`,name:"selector",type:{names:["Object","String"]}},{description:"<p>The user's password.</p>",name:"password",type:{names:["String"]}},{description:`<p>Optional callback. 438Called with no arguments on success, or with a single <code>Error</code> argument 439on failure.</p>`,name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Log the user in with a password.</p>"},"Meteor.loginWithPasswordAnd2faCode":{filepath:"accounts-password/password_client.js",importfrompackage:"meteor",kind:"function",lineno:94,locus:"Client",longname:"Meteor.loginWithPasswordAnd2faCode",memberof:"Meteor",module:"meteor",name:"loginWithPasswordAnd2faCode",options:[],params:[{description:`<p>Either a string interpreted as a username or an email; or an object with a 440single key: <code>email</code>, <code>username</code> or <code>id</code>. Username or email match in a case 441insensitive manner.</p>`,name:"selector",type:{names:["Object","String"]}},{description:"<p>The user's password.</p>",name:"password",type:{names:["String"]}},{description:"<p>Token provide by the user's authenticator app.</p>",name:"token",type:{names:["String"]}},{description:`<p>Optional callback. 442Called with no arguments on success, or with a single <code>Error</code> argument 443on failure.</p>`,name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Log the user in with a password and token.</p>"},"Meteor.loginWithPasswordAsync":{filepath:"accounts-password/password_client.js",importfrompackage:"meteor",kind:"member",lineno:71,locus:"Client",longname:"Meteor.loginWithPasswordAsync",memberof:"Meteor",module:"meteor",name:"loginWithPasswordAsync",params:[{description:`<p>Either a string interpreted as a username or an email; or an object with a 444single key: <code>email</code>, <code>username</code> or <code>id</code>. Username or email match in a case 445insensitive manner.</p>`,name:"selector",type:{names:["Object","String"]}},{description:"<p>The user's password.</p>",name:"password",type:{names:["String"]}}],returns:[{description:"<p>Resolves with login details on success, rejects with error on failure.</p>",type:{names:["Promise.<Object>"]}}],scope:"static",summary:"<p>Log the user in with a password. Returns a Promise.</p>"},"Meteor.loginWithToken":{filepath:"accounts-base/accounts_client.js",importfrompackage:"meteor",kind:"function",lineno:987,locus:"Client",longname:"Meteor.loginWithToken",memberof:"Meteor",module:"meteor",name:"loginWithToken",options:[],params:[{description:`<p>Local storage token for use with login across 446multiple tabs in the same browser.</p>`,name:"token",type:{names:["String"]}},{description:`<p>Optional callback. Called with no arguments on 447success, or with a single <code>Error</code> argument on failure.</p>`,name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Login with a Meteor access token.</p>"},"Meteor.loginWithTokenAsync":{filepath:"accounts-base/accounts_client.js",importfrompackage:"meteor",kind:"function",lineno:998,locus:"Client",longname:"Meteor.loginWithTokenAsync",memberof:"Meteor",module:"meteor",name:"loginWithTokenAsync",options:[],params:[{description:`<p>Local storage token for use with login across 448multiple tabs in the same browser.</p>`,name:"token",type:{names:["String"]}}],returns:[{description:"<p>Resolves with login details on success, rejects with error on failure.</p>",type:{names:["Promise.<Object>"]}}],scope:"static",summary:"<p>Login with a Meteor access token. Returns a Promise.</p>"},"Meteor.logout":{filepath:"accounts-base/accounts_client.js",importfrompackage:"meteor",kind:"function",lineno:936,locus:"Client",longname:"Meteor.logout",memberof:"Meteor",module:"meteor",name:"logout",options:[],params:[{description:"<p>Optional callback. Called with no arguments on success, or with a single <code>Error</code> argument on failure.</p>",name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Log the user out.</p>"},"Meteor.logoutAllClients":{filepath:"accounts-base/accounts_client.js",importfrompackage:"meteor",kind:"function",lineno:952,locus:"Client",longname:"Meteor.logoutAllClients",memberof:"Meteor",module:"meteor",name:"logoutAllClients",options:[],params:[{description:"<p>Optional callback. Called with no arguments on success, or with a single <code>Error</code> argument on failure.</p>",name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Log out all clients logged in as the current user and logs the current user out as well.</p>"},"Meteor.logoutAllClientsAsync":{filepath:"accounts-base/accounts_client.js",importfrompackage:"meteor",kind:"function",lineno:960,locus:"Client",longname:"Meteor.logoutAllClientsAsync",memberof:"Meteor",module:"meteor",name:"logoutAllClientsAsync",options:[],params:[],returns:[{description:"<p>Resolves on success, rejects with error on failure.</p>",type:{names:["Promise.<void>"]}}],scope:"static",summary:"<p>Log out all clients logged in as the current user and logs the current user out as well. Returns a Promise.</p>"},"Meteor.logoutAsync":{filepath:"accounts-base/accounts_client.js",importfrompackage:"meteor",kind:"function",lineno:944,locus:"Client",longname:"Meteor.logoutAsync",memberof:"Meteor",module:"meteor",name:"logoutAsync",options:[],params:[],returns:[{description:"<p>Resolves on success, rejects with error on failure.</p>",type:{names:["Promise.<void>"]}}],scope:"static",summary:"<p>Log the user out. Returns a Promise.</p>"},"Meteor.logoutOtherClients":{filepath:"accounts-base/accounts_client.js",importfrompackage:"meteor",kind:"function",lineno:968,locus:"Client",longname:"Meteor.logoutOtherClients",memberof:"Meteor",module:"meteor",name:"logoutOtherClients",options:[],params:[{description:"<p>Optional callback. Called with no arguments on success, or with a single <code>Error</code> argument on failure.</p>",name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Log out other clients logged in as the current user, but does not log out the client that calls this function.</p>"},"Meteor.logoutOtherClientsAsync":{filepath:"accounts-base/accounts_client.js",importfrompackage:"meteor",kind:"function",lineno:976,locus:"Client",longname:"Meteor.logoutOtherClientsAsync",memberof:"Meteor",module:"meteor",name:"logoutOtherClientsAsync",options:[],params:[],returns:[{description:"<p>Resolves on success, rejects with error on failure.</p>",type:{names:["Promise.<void>"]}}],scope:"static",summary:"<p>Log out other clients logged in as the current user, but does not log out the client that calls this function. Returns a Promise.</p>"},"Meteor.methods":{filepath:"ddp-server/livedata_server.js",importfrompackage:"meteor",kind:"function",lineno:1708,locus:"Anywhere",longname:"Meteor.methods",memberof:"Meteor",module:"meteor",name:"methods",options:[],params:[{description:"<p>
448Dictionary whose keys are method names and values are functions.</p>",name:"methods",type:{names:["Object"]}}],scope:"static",summary:"<p>Defines functions that can be invoked over the network by clients.</p>"},"Meteor.onConnection":{filepath:"ddp-server/livedata_server.js",importfrompackage:"meteor",kind:"function",lineno:1429,locus:"Server",longname:"Meteor.onConnection",memberof:"Meteor",module:"meteor",name:"onConnection",options:[],params:[{description:"<p>The function to call when a new DDP connection is established.</p>",name:"callback",type:{names:["function"]}}],scope:"static",summary:"<p>Register a callback to be called when a new DDP connection is made to the server.</p>"},"Meteor.onMessage":{filepath:"ddp-server/livedata_server.js",importfrompackage:"meteor",kind:"function",lineno:1472,locus:"Server",longname:"Meteor.onMessage",memberof:"Meteor",module:"meteor",name:"onMessage",options:[],params:[{description:"<p>The function to call when a new DDP message is received.</p>",name:"callback",type:{names:["function"]}}],scope:"static",summary:"<p>Register a callback to be called when a new DDP message is received.</p>"},"Meteor.passwordlessLoginWithToken":{filepath:"accounts-passwordless/passwordless_client.js",importfrompackage:"meteor",kind:"function",lineno:70,locus:"Client",longname:"Meteor.passwordlessLoginWithToken",memberof:"Meteor",module:"meteor",name:"passwordlessLoginWithToken",options:[],params:[{description:"<p>Username, email or custom selector to identify the user.</p>",name:"selector",type:{names:["Object","String"]}},{description:"<p>one time token generated by the server</p>",name:"token",type:{names:["String"]}},{description:`<p>Optional callback. 449Called with no arguments on success, or with a single <code>Error</code> argument 450on failure.</p>`,name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Log the user in with a one time token.</p>"},"Meteor.passwordlessLoginWithTokenAnd2faCode":{filepath:"accounts-passwordless/passwordless_client.js",importfrompackage:"meteor",kind:"function",lineno:85,locus:"Client",longname:"Meteor.passwordlessLoginWithTokenAnd2faCode",memberof:"Meteor",module:"meteor",name:"passwordlessLoginWithTokenAnd2faCode",options:[],params:[{description:"<p>Username, email or custom selector to identify the user.</p>",name:"selector",type:{names:["Object","String"]}},{description:"<p>one time token generated by the server</p>",name:"token",type:{names:["String"]}},{description:"<p>generated by the user's authenticator app</p>",name:"code",type:{names:["String"]}},{description:`<p>Optional callback. 451Called with no arguments on success, or with a single <code>Error</code> argument 452on failure.</p>`,name:"callback",optional:!0,type:{names:["function"]}}],scope:"static",summary:"<p>Log the user in with a one time token.</p>"},"Meteor.promisify":{filepath:"meteor/helpers.js",kind:"function",lineno:82,locus:"Anywhere",longname:"Meteor.promisify",memberof:"Meteor",module:"meteor",name:"promisify",options:[],params:[{name:"fn",type:{names:["function"]}},{name:"context",optional:!0,type:{names:["Object"]}},{description:"<p>If the callback follows the errorFirst style, default to true</p>",name:"errorFirst",optional:!0,type:{names:["Boolean"]}}],returns:[{type:{names:["function"]}}],scope:"static",summary:`<p>Takes a function that has a callback argument as the last one and promissify it. 453One option would be to use node utils.promisify, but it won't work on the browser.</p>`},"Meteor.publish":{filepath:"ddp-server/livedata_server.js",importfrompackage:"meteor",kind:"function",lineno:1601,locus:"Server",longname:"Meteor.publish",memberof:"Meteor",module:"meteor",name:"publish",options:[],params:[{description:"<p>If String, name of the record set. If Object, publications Dictionary of publish functions by name. If <code>null</code>, the set has no name, and the record set is automatically sent to all connected clients.</p>",name:"name",type:{names:["String","Object"]}},{description:"<p>Function called on the server each time a client subscribes. Inside the function, <code>this</code> is the publish handler object, described below. If the client passed arguments to <code>subscribe</code>, the function is called with the same arguments.</p>",name:"func",type:{names:["function"]}}],scope:"static",summary:"<p>
453Publish a record set.</p>"},"Meteor.reconnect":{alias:"Meteor.reconnect",filepath:"ddp-client/common/livedata_connection.js",importfrompackage:"meteor",kind:"function",lineno:1099,locus:"Client",longname:"Meteor.reconnect",memberof:"Meteor",module:"meteor",name:"reconnect",options:[],params:[],scope:"static",summary:`<p>Force an immediate reconnection attempt if the client is not connected to the server.</p> 454<p>This method does nothing if the client is already connected.</p>`},"Meteor.release":{filepath:"meteor/helpers.js",kind:"member",lineno:8,locus:"Anywhere",longname:"Meteor.release",memberof:"Meteor",module:"meteor",name:"release",scope:"static",summary:'<p><code>Meteor.release</code> is a string containing the name of the <a href="#meteorupdate">release</a> with which the project was built (for example, <code>"1.2.3"</code>). It is <code>undefined</code> if the project was built using a git checkout of Meteor.</p>',type:{names:["String"]}},"Meteor.setInterval":{filepath:"meteor/timers.js",kind:"function",lineno:48,locus:"Anywhere",longname:"Meteor.setInterval",memberof:"Meteor",module:"meteor",name:"setInterval",options:[],params:[{description:"<p>The function to run</p>",name:"func",type:{names:["function"]}},{description:"<p>Number of milliseconds to wait between each function call.</p>",name:"delay",type:{names:["Number"]}}],scope:"static",summary:"<p>Call a function repeatedly, with a time delay between calls.</p>"},"Meteor.setTimeout":{filepath:"meteor/timers.js",kind:"function",lineno:37,locus:"Anywhere",longname:"Meteor.setTimeout",memberof:"Meteor",module:"meteor",name:"setTimeout",options:[],params:[{description:"<p>The function to run</p>",name:"func",type:{names:["function"]}},{description:"<p>Number of milliseconds to wait before calling function</p>",name:"delay",type:{names:["Number"]}}],scope:"static",summary:"<p>Call a function in the future after waiting for a specified delay.</p>"},"Meteor.settings":{filepath:"meteor/client_environment.js",kind:"member",lineno:76,locus:"Anywhere",longname:"Meteor.settings",memberof:"Meteor",module:"meteor",name:"settings",scope:"static",summary:"<p><code>Meteor.settings</code> contains deployment-specific configuration options. You can initialize settings by passing the <code>--settings</code> option (which takes the name of a file containing JSON data) to <code>meteor run</code> or <code>meteor deploy</code>. When running your server directly (e.g. from a bundle), you instead specify settings by putting the JSON directly into the <code>METEOR_SETTINGS</code> environment variable. If the settings object contains a key named <code>public</code>, then <code>Meteor.settings.public</code> will be available on the client as well as the server. All other properties of <code>Meteor.settings</code> are only defined on the server. You can rely on <code>Meteor.settings</code> and <code>Meteor.settings.public</code> being defined objects (not undefined) on both client and server even if there are no settings specified. Changes to <code>Meteor.settings.public</code> at runtime will be picked up by new client connections.</p>",type:{names:["Object"]}},"Meteor.startup":{filepath:"meteor/startup_client.js",kind:"function",lineno:90,locus:"Anywhere",longname:"Meteor.startup",memberof:"Meteor",module:"meteor",name:"startup",options:[],params:[{description:"<p>A function to run on startup.</p>",name:"func",type:{names:["function"]}}],scope:"static",summary:"<p>Run code when a client or a server starts.</p>"},"Meteor.status":{alias:"Meteor.status",filepath:"ddp-client/common/livedata_connection.js",importfrompackage:"meteor",kind:"function",lineno:1086,locus:"Client",longname:"Meteor.status",memberof:"Meteor",module:"meteor",name:"status",options:[],params:[],scope:"static",summary:"<p>Get the current connection status. A reactive data source.</p>"},"Meteor.subscribe":{alias:"Meteor.subscribe",filepath:"ddp-client/common/livedata_connection.js",importfrompackage:"meteor",kind:"function",lineno:395,locus:"Client",longname:"Meteor.subscribe",memberof:"Meteor",module:"meteor",name:"subscribe",options:[],params:[{description:`<p>Name of the subscription. Matches the name of the 455server's <code>publish()</code> call.</p>`,name:"name",type:{names:["String"]}},{description:`<p>Optional arguments passed to publisher 456function on server.</p>`,name:"arg1, arg2...",optional:!0,type:{names:["EJSONable"]}},{description:`<p>Optional. May include <code>onStop</code> 457and <code>onReady</code> callbacks. If there is an error, it is passed as an 458argument to <code>onStop</code>. If a function is passed instead of an object, it 459is interpreted as an <code>onReady</code> callback.</p>`,name:"callbacks",optional:!0,type:{names:["function","Object"]}}],scope:"static",summary:`<p>Subscribe to a record set. Returns a handle that provides 460<code>stop()</code> and <code>ready()</code> methods.</p>`},"Meteor.user":{filepath:"accounts-base/accounts_common.js",importfrompackage:"meteor",kind:"function",lineno:443,locus:"Anywhere",longname:"Meteor.user",memberof:"Meteor",module:"meteor",name:"user",options:[{description:"<p>Dictionary of fields to return or exclude.</p>",name:"fields",type:{names:["MongoFieldSpecifier"]}}],params:[{name:"options",optional:!0,type:{names:["Object"]}}],scope:"static",summary:"<p>Get the current user record, or <code>null</code> if no user is logged in. On the client this can also be <code>undefined</code> while a user id is set but the user document is not yet in Minimongo. A reactive data source.</p>"},"Meteor.userAsync":{filepath:"accounts-base/accounts_common.js",importfrompackage:"meteor",kind:"function",lineno:452,locus:"Anywhere",longname:"Meteor.userAsync",memberof:"Meteor",module:"meteor",name:"userAsync",options:[{description:"<p>Dictionary of fields to return or exclude.</p>",name:"fields",type:{names:["MongoFieldSpecifier"]}}],params:[{name:"options",optional:!0,type:{names:["Object"]}}],scope:"static",summary:"<p>Get the current user record, or <code>null</code> if no user is logged in. May also be <code>undefined</code> when a user id is set but the user document cannot be found yet. A reactive data source.</p>"},"Meteor.userId":{filepath:"accounts-base/accounts_common.js",importfrompackage:"meteor",kind:"function",lineno:434,locus:"Anywhere",longname:"Meteor.userId",memberof:"Meteor",module:"meteor",name:"userId",options:[],params:[],scope:"static",summary:"<p>Get the current user id, or <code>null</code> if no user is logged in. A reactive data source.</p>"},"Meteor.users":{filepath:"accounts-base/server_main.js",importfrompackage:"meteor",kind:"member",lineno:24,locus:"Anywhere",longname:"Meteor.users",memberof:"Meteor",module:"meteor",name:"users",scope:"static",summary:'<p>A <a href="#collections">Mongo.Collection</a> containing user documents.</p>',type:{names:["Mongo.Collection"]}},"Meteor.wrapAsync":{filepath:"meteor/helpers.js",kind:"function",lineno:134,locus:"Anywhere",longname:"Meteor.wrapAsync",memberof:"Meteor",module:"meteor",name:"wrapAsync",options:[],params:[{description:"<p>A function that takes a callback as its final parameter</p>",name:"func",type:{names:["function"]}},{description:"<p>Optional <code>this</code> object against which the original function will be invoked</p>",name:"context",optional:!0,type:{names:["Object"]}}],scope:"static",summary:`<p>Wrap a function that takes a callback function as its final parameter. 461The signature of the callback of the wrapped function should be <code>function(error, result){}</code>. 462On the server, the wrapped function can be used either synchronously (without passing a callback) or asynchronously
463(when a callback is passed). On the client, a callback is always required; errors will be logged if there is no callback. 464If a callback is provided, the environment captured when the original function was called will be restored in the callback. 465The parameters of the wrapped function must not contain any optional parameters or be undefined, as the callback function is expected to be the final, non-undefined parameter.</p>`},"ModernBrowsers.calculateHashOfMinimumVersions":{filepath:"modern-browsers/modern.js",kind:"member",lineno:183,longname:"ModernBrowsers.calculateHashOfMinimumVersions",memberof:"ModernBrowsers",module:"modern-browsers",name:"calculateHashOfMinimumVersions",returns:[{type:{names:["string"]}}],scope:"static",summary:"<p>Creates a hash of the object of minimum browser versions.</p>"},"ModernBrowsers.getMinimumBrowserVersions":{filepath:"modern-browsers/modern.js",kind:"member",lineno:169,locus:"server",longname:"ModernBrowsers.getMinimumBrowserVersions",memberof:"ModernBrowsers",module:"modern-browsers",name:"getMinimumBrowserVersions",returns:[{type:{names:["object"]}}],scope:"static",summary:"<p>Returns an object that lists supported browser engines and their minimum versions to be considered modern for Meteor.</p>"},"ModernBrowsers.isModern":{filepath:"modern-browsers/modern.js",kind:"member",lineno:78,locus:"server",longname:"ModernBrowsers.isModern",memberof:"ModernBrowsers",module:"modern-browsers",name:"isModern",params:[{description:"<p>{ name: string, major: number, minor?: number, patch?: number }</p>",name:"browser",optional:!0,type:{names:["object"]}}],returns:[{type:{names:["boolean"]}}],scope:"static",summary:`<p>Given a { name, major, minor, patch } object like the one provided by 466webapp via request.browser, return true if that browser qualifies as 467"modern" according to all requested version constraints.</p>`},"ModernBrowsers.setMinimumBrowserVersions":{filepath:"modern-browsers/modern.js",kind:"member",lineno:115,locus:"server",longname:"ModernBrowsers.setMinimumBrowserVersions",memberof:"ModernBrowsers",module:"modern-browsers",name:"setMinimumBrowserVersions",params:[{description:`<p>Name of the browser engine and minimum version for at which it is considered modern. For example: { 468chrome: 49, 469edge: 12, 470ie: 12, 471firefox: 45, 472mobileSafari: 10, 473opera: 38, 474safari: 10, 475electron: [1, 6], 476}</p>`,name:"versions",type:{names:["object"]}},{description:"<p>Name of the capability that requires these minimums.</p>",name:"source",type:{names:["function"]}}],scope:"static",summary:`<p>Any package that depends on the modern-browsers package can call this 477function to communicate its expectations for the minimum browser 478versions that qualify as "modern." The final decision between 479web.browser.legacy and web.browser builds will be based on the maximum of all 480requested minimum versions for each browser.</p>`},Mongo:{filepath:"mongo/collection/collection.js",kind:"namespace",lineno:20,longname:"Mongo",module:"mongo",name:"Mongo",scope:"global",summary:"<p>Namespace for MongoDB-related items</p>"},"Mongo.Collection":{filepath:"mongo/collection/collection.js",instancename:"collection",kind:"class",lineno:40,locus:"Anywhere",longname:"Mongo.Collection",memberof:"Mongo",module:"mongo",name:"Collection",options:[{description:'<p>The server connection that will manage this collection. Uses the default connection if not specified. Pass the return value of calling <a href="#DDP-connect"><code>DDP.connect</code></a> to specify a different server. Pass <code>null</code> to specify no connection. Unmanaged (<code>name</code> is null) collections cannot specify a connection.</p>',name:"connection",type:{names:["Object"]}},{description:`<p>The method of generating the <code>_id</code> fields of new documents in this collection. Possible values:</p> 481<ul> 482<li><strong><code>'STRING'</code></strong>: random strings</li> 483<li><strong><code>'MONGO'</code></strong>: random <a href="#mongo_object_id"><code>Mongo.ObjectID</code></a> values</li> 484</ul> 485<p>The default id generation technique is <code>'STRING'</code>.</p>`,name:"idGeneration",type:{names:["String"]}},{description:"<p>An optional transformation function. Documents will be passed through this function before being returned from <code>fetch</code> or <code>findOneAsync</code>, and before being passed to callbacks of <code>observe</code>, <code>map</code>, <code>forEach</code>, <code>allow</code>, and <code>deny</code>. Transforms are <em>not</em> applied for the callbacks of <code>observeChanges</code> or to cursors returned from publish functions.</p>",name:"transform",type:{names:["function"]}},{description:"<p>Set to <code>false</code> to skip setting up the mutation methods that enable insert/update/remove from client code. Default <code>true</code>.</p>",name:"defineMutationMethods",type:{names:["Boolean"]}}],params:[{description:"<p>The name of the collection. If null, creates an unmanaged (unsynchronized) local collection.</p>",name:"name",type:{names:["String"]}},{name:"options",optional:!0,type:{names:["Object"]}}],scope:"static",summary:"<p>Constructor for a Collection</p>"},"Mongo.Collection#allow":{filepath:"allow-deny/allow-deny.js",kind:"function",lineno:45,locus:"Server",longname:"Mongo.Collection#allow",memberof:"Mongo.Collection",module:"allow-deny",name:"allow",options:[{description:"<p>Functions that look at a proposed modification to the database and return true if it should be allowed.</p>",name:"insert, update, remove",type:{names:["function"]}},{description:"<p>Optional performance enhancement. Limits the fields that will be fetched from the database for inspection by your <code>update</code> and <code>remove</code> functions.</p>",name:"fetch",type:{names:["Array.<String>"]}},{description:'<p>Overrides <code>transform</code> on the <a href="#collections"><code>Collection</code></a>. Pass <code>null</code> to disable transformation.</p>',name:"transform",type:{names:["function"]}}],params:[{name:"options",type:{names:["Object"]}}],scope:"instance",summary:"<p>Allow users to write directly to this collection from client code, subject to limitations you define.</p>"},"Mongo.Collection#countDocuments":{filepath:"mongo/collection/methods_async.js",kind:"function",lineno:211,locus:"Anywhere",longname:"Mongo.Collection#countDocuments",memberof:"Mongo.Collection",module:"mongo",name:"countDocuments",options:[],params:[{description:"<p>A query describing the documents to count</p>",name:"selector",optional:!0,type:{names:["MongoSelector"]}},{description:'<p>All options are listed in <a href="https://mongodb.github.io/node-mongodb-native/4.11/interfaces/CountDocumentsOptions.html">MongoDB documentation</a>. Please note that not all of them are available on the client.</p>',name:"options",optional:!0,type:{names:["Object"]}}],returns:[{type:{names:["Promise.<number>"]}}],scope:"instance",summary:"<p>Gets the number of documents matching the filter. For a fast count of the total documents in a collection see <code>estimatedDocumentCount</code>.</p>"},"Mongo.Collection#createIndex":{filepath:"mongo/collection/methods_index.js",kind:"function",lineno:67,locus:"server",longname:"Mongo.Collection#createIndex",memberof:"Mongo.Collection",module:"mongo",name:"createIndex",options:[{description:"<p>Name of the index</p>",name:"name",type:{names:["String"]}},{description:'<p>Define that the index values must be unique, more at <a href="https://docs.mongodb.com/manual/core/index-unique/">MongoDB documentation</a></p>',name:"unique",type:{names:["Boolean"]}},{description:'<p>Define that the index is sparse, more at <a href="https://docs.mongodb.com/manual/core/index-sparse/">MongoDB documentation</a></p>',name:"sparse",type:{names:["Boolean"]}}],params:[{description:"<p>A document that contains the field and value pairs where the field is the index key and the value describes the type of index for that field. For an ascending index on a field, specify a value of <code>1</code>; for descending index, specify a value of <code>-1</code>. Use <code>text</code> for text indexes.</p>",name:"index",type:{names:["Object"]}},{description:'<p>All options are listed in <a href="https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/#options">MongoDB documentation</a></p>',name:"options",optional:!0,type:{names:["Object"]}}],scope:"instance",summary:"<p>Asynchronously creates the specified index on the collection.</p>"},"Mongo.Collection#createIndexAsync":{filepath:"mongo/collection/methods_index.js",kind:"function",lineno:31,locus:"server",longname:"Mongo.Collection#createIndexAsync",memberof:"Mongo.Collection",module:"mongo",name:"createIndexAsync",options:[{description:"<p>Name of the index</p>",name:"name",type:{names:["String"]}},{description:'<p>Define that the index values must be unique, more at <a href="https://docs.mongodb.com/manual/core/index-unique/">MongoDB documentation</a></p>',name:"unique",type:{names:["Boolean"]}},{description:'<p>Define that the index is sparse, more at <a href="https://docs.mongodb.com/manual/core/index-sparse/">MongoDB documentation</a></p>',name:"sparse",type:{names:["Boolean"]}}],params:[{description:"<p>A document that contains the field and value pairs where the field is the index key and the value describes the type of index for that field. For an ascending index on a field, specify a value of <code>1</code>; for descending index, specify a value of <code>-1</code>. Use <code>text</code> for text indexes.</p>",name:"index",type:{names:["Object"]}},{description:'<p>All options are listed in <a href="https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/#options">MongoDB documentation</a></p>',name:"options",optional:!0,type:{names:["Object"]}}],scope:"instance",summary:"<p>Asynchronously creates the specified index on the collection.</p>"},"Mongo.Collection#deny":{filepath:"allow-deny/allow-deny.js",kind:"function",lineno:60,locus:"Server",longname:"Mongo.Collection#deny",memberof:"Mongo.Collection",module:"allow-deny",name:"deny",options:[{description:'<p>Functions that look at a proposed modification to the database and return true if it should be denied, even if an <a href="#allow">allow</a> rule says otherwise.</p>',name:"insert, update, remove",type:{names:["function"]}},{description:"<p>Optional performance enhancement. Limits the fields that will be fetched from the database for inspection by your <code>update</code> and <code>remove</code> functions.</p>",name:"fetch",type:{names:["Array.<String>"]}},{description:'<p>Overrides <code>transform</code> on the <a href="#collections"><code>Collection</code></a>. Pass <code>null</code> to disable transformation.</p>',name:"transform",type:{names:["function"]}}],params:[{name:"options",type:{names:["Object"]}}],scope:"instance",summary:"<p>Override <code>allow</code> rules.</p>"},"Mongo.Collection#ensureIndexAsync":{deprecated:"in 3.0",filepath:"mongo/collection/methods_index.js",kind:"function",lineno:6,locus:"server",longname:"Mongo.Collection#ensureIndexAsync",memberof:"Mongo.Collection",module:"mongo",name:"ensureIndexAsync",options:[{description:"<p>Name of the index</p>",name:"name",type:{names:["String"]}},{description:'<p>Define that the index values must be unique, more at <a href="https://docs.mongodb.com/manual/core/index-unique/">MongoDB documentation</a></p>',name:"unique",type:{names:["Boolean"]}},{description:'<p>Define that the index is sparse, more at <a href="https://docs.mongodb.com/manual/core/index-sparse/">MongoDB documentation</a></p>',name:"sparse",type:{names:["Boolean"]}}],params:[{description:"<p>A document that contains the field and value pairs where the field is the index key and the value describes the type of index for that field. For an ascending index on a field, specify a value of <code>1</code>; for descending index, specify a value of <code>-1</code>. Use <code>text</code> for text indexes.</p>",name:"index",type:{names:["Object"]}},{description:'<p>All options are listed in <a href="https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/#options">MongoDB documentation</a></p>',name:"options",optional:!0,type:{names:["Object"]}}],scope:"instance",summary:"<p>Asynchronously creates the specified index on the collection.</p>"},"Mongo.Collection#estimatedDocumentCount":{filepath:"mongo/collection/methods_async.js",kind:"function",lineno:225,locus:"Anywhere",longname:"Mongo.Collection#estimatedDocumentCount",memberof:"Mongo.Collection",module:"mongo",name:"estimatedDocumentCount",options:[],params:[{description:'<p>All options are listed in <a href="https://mongodb.github.io/node-mongodb-native/4.11/interfaces/EstimatedDocumentCountOptions.html">MongoDB documentation</a>. Please note that not all of them are available on the client.</p>',name:"options",optional:!0,type:{names:["Object"]}}],returns:[{type:{names:["Promise.<number>"]}}],scope:"instance",summary:"<p>Gets an estimate of the count of documents in a collection using collection metadata. For an exact count of the documents in a collection see <code>countDocuments</code>.</p>"},"Mongo.Collection#find":{filepath:"mongo/collection/methods_sync.js",kind:"function",lineno:2,locus:"Anywhere",longname:"Mongo.Collection#find",memberof:"Mongo.Collection",module:"mongo",name:"find",options:[{description:"<p>
485Sort order (default: natural order)</p>",name:"sort",type:{names:["MongoSortSpecifier"]}},{description:"<p>Number of results to skip at the beginning</p>",name:"skip",type:{names:["Number"]}},{description:"<p>Maximum number of results to return</p>",name:"limit",type:{names:["Number"]}},{description:"<p>Dictionary of fields to return or exclude.</p>",name:"fields",type:{names:["MongoFieldSpecifier"]}},{description:"<p>(Client only) Default <code>true</code>; pass <code>false</code> to disable reactivity</p>",name:"reactive",type:{names:["Boolean"]}},{description:'<p>Overrides <code>transform</code> on the <a href="#collections"><code>Collection</code></a> for this cursor. Pass <code>null</code> to disable transformation.</p>',name:"transform",type:{names:["function"]}},{description:"<p>(Server only) Pass true to disable oplog-tailing on this query. This affects the way server processes calls to <code>observe</code> on this query. Disabling the oplog can be useful when working with data that updates in large batches.</p>",name:"disableOplog",type:{names:["Boolean"]}},{description:"<p>(Server only) When oplog is disabled (through the use of <code>disableOplog</code> or when otherwise not available), the frequency (in milliseconds) of how often to poll this query when observing on the server. Defaults to 10000ms (10 seconds).</p>",name:"pollingIntervalMs",type:{names:["Number"]}},{description:"<p>(Server only) When oplog is disabled (through the use of <code>disableOplog</code> or when otherwise not available), the minimum time (in milliseconds) to allow between re-polling when observing on the server. Increasing this will save CPU and mongo load at the expense of slower updates to users. Decreasing this is not recommended. Defaults to 50ms.</p>",name:"pollingThrottleMs",type:{names:["Number"]}},{description:"<p>(Server only) If set, instructs MongoDB to set a time limit for this cursor's operations. If the operation reaches the specified time limit (in milliseconds) without the having been completed, an exception will be thrown. Useful to prevent an (accidental or malicious) unoptimized query from causing a full collection scan that would disrupt other database users, at the expense of needing to handle the resulting error.</p>",name:"maxTimeMs",type:{names:["Number"]}},{description:"<p>(Server only) Overrides MongoDB's default index selection and query optimization process. Specify an index to force its use, either by its name or index specification. You can also specify <code>{ $natural : 1 }</code> to force a forwards collection scan, or <code>{ $natural : -1 }</code> for a reverse collection scan. Setting this is only recommended for advanced users.</p>",name:"hint",type:{names:["String","Object"]}},{description:'<p>(Server only) Specifies a custom MongoDB <a href="https://docs.mongodb.com/manual/core/read-preference"><code>readPreference</code></a> for this particular cursor. Possible values are <code>primary</code>, <code>primaryPreferred</code>, <code>secondary</code>, <code>secondaryPreferred</code> and <code>nearest</code>.</p>',name:"readPreference",type:{names:["String"]}},{description:`<p>Specifies a <a href="https://docs.mongodb.com/manual/reference/collation/">collation</a> for string comparison. Supported on both client (Minimongo) and server. Client-supported options: <code>locale</code> (required, e.g. <code>'en'</code>), <code>strength</code> (<code>1</code> for base, <code>2</code> for case-insensitive, <code>3</code> for default), <code>caseLevel</code>, <code>numericOrdering</code> (<code>true</code> to sort <code>'2'</code> before <code>'10'</code>), <code>caseFirst</code> (<code>'upper'</code> or <code>'lower'</code>). Server-only options (ignored by Minimongo): <code>alternate</code>, <code>maxVariable</code>, <code>backwards</code>, <code>strength</code> 4â5. Compatible with oplog-tailing.</p>`,name:"collation",type:{names:["Object"]}}],params:[{description:"<p>A query describing the documents to find</p>",name:"selector",optional:!0,type:{names:["MongoSelector"]}},{name:"options",optional:!0,type:{names:["Object"]}}],returns:[{type:{names:["Mongo.Cursor"]}}],scope:"instance",summary:"<p>Find the documents in a collection that match the selector.</p>"},"Mongo.Collection#findOne":{filepath:"mongo/collection/methods_sync.js",kind:"function",lineno:35,locus:"Anywhere",longname:"Mongo.Collection#findOne",memberof:"Mongo.Collection",module:"mongo",name:"findOne",options:[{description:"<p>
485Sort order (default: natural order)</p>",name:"sort",type:{names:["MongoSortSpecifier"]}},{description:"<p>Number of results to skip at the beginning</p>",name:"skip",type:{names:["Number"]}},{description:"<p>Dictionary of fields to return or exclude.</p>",name:"fields",type:{names:["MongoFieldSpecifier"]}},{description:"<p>(Client only) Default true; pass false to disable reactivity</p>",name:"reactive",type:{names:["Boolean"]}},{description:'<p>Overrides <code>transform</code> on the <a href="#collections"><code>Collection</code></a> for this cursor. Pass <code>null</code> to disable transformation.</p>',name:"transform",type:{names:["function"]}},{description:'<p>(Server only) Specifies a custom MongoDB <a href="https://docs.mongodb.com/manual/core/read-preference"><code>readPreference</code></a> for fetching the document. Possible values are <code>primary</code>, <code>primaryPreferred</code>, <code>secondary</code>, <code>secondaryPreferred</code> and <code>nearest</code>.</p>',name:"readPreference",type:{names:["String"]}},{description:'<p>Specifies a <a href="https://docs.mongodb.com/manual/reference/collation/">collation</a> for string comparison. See <a href="#find"><code>find</code></a> for details.</p>',name:"collation",type:{names:["Object"]}}],params:[{description:"<p>A query describing the documents to find</p>",name:"selector",optional:!0,type:{names:["MongoSelector"]}},{name:"options",optional:!0,type:{names:["Object"]}}],returns:[{type:{names:["Object"]}}],scope:"instance",summary:"<p>Finds the first document that matches the selector, as ordered by sort and skip options. Returns <code>undefined</code> if no matching document is found.</p>"},"Mongo.Collection#findOneAsync":{filepath:"mongo/collection/methods_async.js",kind:"function",lineno:2,locus:"Anywhere",longname:"Mongo.Collection#findOneAsync",memberof:"Mongo.Collection",module:"mongo",name:"findOneAsync",options:[{description:"<p>Sort order (default: natural order)</p>",name:"sort",type:{names:["MongoSortSpecifier"]}},{description:"<p>Number of results to skip at the beginning</p>",name:"skip",type:{names:["Number"]}},{description:"<p>Dictionary of fields to return or exclude.</p>",name:"fields",type:{names:["MongoFieldSpecifier"]}},{description:"<p>(Client only) Default true; pass false to disable reactivity</p>",name:"reactive",type:{names:["Boolean"]}},{description:'<p>Overrides <code>transform</code> on the <a href="#collections"><code>Collection</code></a> for this cursor. Pass <code>null</code> to disable transformation.</p>',name:"transform",type:{names:["function"]}},{description:'<p>(Server only) Specifies a custom MongoDB <a href="https://docs.mongodb.com/manual/core/read-preference"><code>readPreference</code></a> for fetching the document. Possible values are <code>primary</code>, <code>primaryPreferred</code>, <code>secondary</code>, <code>secondaryPreferred</code> and <code>nearest</code>.</p>',name:"readPreference",type:{names:["String"]}},{description:'<p>Specifies a <a href="https://docs.mongodb.com/manual/reference/collation/">collation</a> for string comparison. See <a href="#find"><code>find</code></a> for details.</p>',name:"collation",type:{names:["Object"]}}],params:[{description:"<p>A query describing the documents to find</p>",name:"selector",optional:!0,type:{names:["MongoSelector"]}},{name:"options",optional:!0,type:{names:["Object"]}}],returns:[{type:{names:["Object"]}}],scope:"instance",summary:"<p>Finds the first document that matches the selector, as ordered by sort and skip options. Returns <code>undefined</code> if no matching document is found.</p>"},"Mongo.Collection#insert":{filepath:"mongo/collection/methods_sync.js",kind:"function",lineno:183,locus:"Anywhere",longname:"Mongo.Collection#insert",memberof:"Mongo.Collection",module:"mongo",name:"insert",options:[],params:[{description:"<p>The document to insert. May not yet have an _id attribute, in which case Meteor will generate one for you.</p>",name:"doc",type:{names:["Object"]}},{description:"<p>Optional. If present, called with an error object as the first argument and, if no error, the _id as the second.</p>",name:"callback",optional:!0,type:{names:["function"]}}],scope:"instance",summary:"<p>Insert a document in the collection. Returns its unique _id.</p>"},"Mongo.Collection#insertAsync":{filepath:"minimongo/constants.js",kind:"function",lineno:43,locus:"Anywhere",longname:"Mongo.Collection#insertAsync",memberof:"Mongo.Collection",module:"minimongo",name:"insertAsync",options:[],params:[{description:"<p>The document to insert. May not yet have an _id attribute, in which case Meteor will generate one for you.</p>",name:"doc",type:{names:["Object"]}}],returns:[{type:{names:["Promise"]}}],scope:"instance",summary:"<p>Insert a document in the collection. Returns its unique _id.</p>"},"Mongo.Collection#rawCollection":{filepath:"mongo/collection/collection.js",kind:"function",lineno:309,locus:"Server",longname:"Mongo.Collection#rawCollection",memberof:"Mongo.Collection",module:"mongo",name:"rawCollection",options:[],params:[],scope:"instance",summary:'<p>Returns the <a href="http://mongodb.github.io/node-mongodb-native/3.0/api/Collection.html"><code>Collection</code></a>
485 object corresponding to this collection from the <a href="https://www.npmjs.com/package/mongodb">npm <code>mongodb</code> driver module</a> which is wrapped by <code>Mongo.Collection</code>.</p>'},"Mongo.Collection#rawDatabase":{filepath:"mongo/collection/collection.js",kind:"function",lineno:323,locus:"Server",longname:"Mongo.Collection#rawDatabase",memberof:"Mongo.Collection",module:"mongo",name:"rawDatabase",options:[],params:[],scope:"instance",summary:`<p>Returns the <a href="http://mongodb.github.io/node-mongodb-native/3.0/api/Db.html"><code>Db</code></a> object corresponding to this collection's database connection from the <a href="https://www.npmjs.com/package/mongodb">npm <code>mongodb</code> driver module</a> which is wrapped by <code>Mongo.Collection</code>.</p>`},"Mongo.Collection#remove":{filepath:"mongo/collection/methods_sync.js",kind:"function",lineno:271,locus:"Anywhere",longname:"Mongo.Collection#remove",memberof:"Mongo.Collection",module:"mongo",name:"remove",options:[],params:[{description:"<p>Specifies which documents to remove</p>",name:"selector",type:{names:["MongoSelector"]}},{description:"<p>Optional. If present, called with an error object as the first argument and, if no error, the number of affected documents as the second.</p>",name:"callback",optional:!0,type:{names:["function"]}}],scope:"instance",summary:"<p>Remove documents from the collection</p>"},"Mongo.Collection#removeAsync":{filepath:"minimongo/constants.js",kind:"function",lineno:53,locus:"Anywhere",longname:"Mongo.Collection#removeAsync",memberof:"Mongo.Collection",module:"minimongo",name:"removeAsync",options:[],params:[{description:"<p>Specifies which documents to remove</p>",name:"selector",type:{names:["MongoSelector"]}}],returns:[{type:{names:["Promise"]}}],scope:"instance",summary:"<p>Remove documents from the collection</p>"},"Mongo.Collection#update":{filepath:"mongo/collection/methods_sync.js",kind:"function",lineno:196,locus:"Anywhere",longname:"Mongo.Collection#update",memberof:"Mongo.Collection",module:"mongo",name:"update",options:[{description:"<p>True to modify all matching documents; false to only modify one of the matching documents (the default).</p>",name:"multi",type:{names:["Boolean"]}},{description:"<p>True to insert a document if no matching documents are found.</p>",name:"upsert",type:{names:["Boolean"]}},{description:'<p>Optional. Used in combination with MongoDB <a href="https://docs.mongodb.com/manual/reference/operator/update/positional-filtered/">filtered positional operator</a> to specify which elements to modify in an array field.</p>',name:"arrayFilters",type:{names:["Array"]}}],params:[{description:"<p>Specifies which documents to modify</p>",name:"selector",type:{names:["MongoSelector"]}},{description:"<p>Specifies how to modify the documents</p>",name:"modifier",type:{names:["MongoModifier"]}},{name:"options",optional:!0,type:{names:["Object"]}},{description:"<p>Optional. If present, called with an error object as the first argument and, if no error, the number of affected documents as the second.</p>",name:"callback",optional:!0,type:{names:["function"]}}],scope:"instance",summary:"<p>Asynchronously modifies one or more documents in the collection. Returns the number of matched documents.</p>"},"Mongo.Collection#updateAsync":{filepath:"minimongo/constants.js",kind:"function",lineno:63,locus:"Anywhere",longname:"Mongo.Collection#updateAsync",memberof:"Mongo.Collection",module:"minimongo",name:"updateAsync",options:[{description:"<p>True to modify all matching documents; false to only modify one of the matching documents (the default).</p>",name:"multi",type:{names:["Boolean"]}},{description:"<p>True to insert a document if no matching documents are found.</p>",name:"upsert",type:{names:["Boolean"]}},{description:'<p>Optional. Used in combination with MongoDB <a href="https://docs.mongodb.com/manual/reference/operator/update/positional-filtered/">filtered positional operator</a> to specify which elements to modify in an array field.</p>',name:"arrayFilters",type:{names:["Array"]}}],params:[{description:"<p>Specifies which documents to modify</p>",name:"selector",type:{names:["MongoSelector"]}},{description:"<p>Specifies how to modify the documents</p>",name:"modifier",type:{names:["MongoModifier"]}},{name:"options",optional:!0,type:{names:["Object"]}}],returns:[{type:{names:["Promise"]}}],scope:"instance",summary:"<p>Modify one or more documents in the collection. Returns the number of matched documents.</p>"},"Mongo.Collection#upsert":{filepath:"mongo/collection/methods_sync.js",kind:"function",lineno:293,locus:"Anywhere",longname:"Mongo.Collection#upsert",memberof:"Mongo.Collection",module:"mongo",name:"upsert",options:[{description:"<p>True to modify all matching documents; false to only modify one of the matching documents (the default).</p>",name:"multi",type:{names:["Boolean"]}}],params:[{description:"<p>Specifies which documents to modify</p>",name:"selector",type:{names:["MongoSelector"]}},{description:"<p>Specifies how to modify the documents</p>",name:"modifier",type:{names:["MongoModifier"]}},{name:"options",optional:!0,type:{names:["Object"]}},{description:"<p>Optional. If present, called with an error object as the first argument and, if no error, the number of affected documents as the second.</p>",name:"callback",optional:!0,type:{names:["function"]}}],scope:"instance",summary:"<p>Asynchronously modifies one or more documents in the collection, or insert one if no matching documents were found. Returns an object with keys <code>numberAffected</code> (the number of documents modified) and <code>insertedId</code> (the unique _id of the document that was inserted, if any).</p>"},"Mongo.Collection#upsertAsync":{filepath:"minimongo/constants.js",kind:"function",lineno:78,locus:"Anywhere",longname:"Mongo.Collection#upsertAsync",memberof:"Mongo.Collection",module:"minimongo",name:"upsertAsync",options:[{description:"<p>True to modify all matching documents; false to only modify one of the matching documents (the default).</p>",name:"multi",type:{names:["Boolean"]}}],params:[{description:"<p>Specifies which documents to modify</p>",name:"selector",type:{names:["MongoSelector"]}},{description:"<p>Specifies how to modify the documents</p>",name:"modifier",type:{names:["MongoModifier"]}},{name:"options",optional:!0,type:{names:["Object"]}}],returns:[{type:{names:["Promise"]}}],scope:"instance",summary:"<p>Modify one or more documents in the collection, or insert one if no matching documents were found. Returns an object with keys <code>numberAffected</code> (the number of documents modified) and <code>insertedId</code> (the unique _id of the document that was inserted, if any).</p>"},"Mongo.Collection.addExtension":{filepath:"mongo/collection/collection.js",kind:"function",lineno:172,locus:"Anywhere",longname:"Mongo.Collection.addExtension",memberof:"Mongo.Collection",module:"mongo",name:"addExtension",options:[],params:[{description:"<p>Extension function called with (name, options) and 'this' bound to collection instance</p>",name:"extension",type:{names:["function"]}}],scope:"static",summary:"<p>Add a constructor extension function that runs when collections are created.</p>"},"Mongo.Collection.addPrototypeMethod":{filepath:"mongo/collection/collection.js",kind:"function",lineno:184,locus:"Anywhere",longname:"Mongo.Collection.addPrototypeMethod",memberof:"Mongo.Collection",module:"mongo",name:"addPrototypeMethod",o
485ptions:[],params:[{description:"<p>The name of the method to add</p>",name:"name",type:{names:["String"]}},{description:"<p>The method function, bound to the collection instance</p>",name:"method",type:{names:["function"]}}],scope:"static",summary:"<p>Add a prototype method to all collection instances.</p>"},"Mongo.Collection.addStaticMethod":{filepath:"mongo/collection/collection.js",kind:"function",lineno:196,locus:"Anywhere",longname:"Mongo.Collection.addStaticMethod",memberof:"Mongo.Collection",module:"mongo",name:"addStaticMethod",options:[],params:[{description:"<p>The name of the static method to add</p>",name:"name",type:{names:["String"]}},{description:"<p>The static method function</p>",name:"method",type:{names:["function"]}}],scope:"static",summary:"<p>Add a static method to the Mongo.Collection constructor.</p>"},"Mongo.Collection.clearExtensions":{filepath:"mongo/collection/collection.js",kind:"function",lineno:239,locus:"Anywhere",longname:"Mongo.Collection.clearExtensions",memberof:"Mongo.Collection",module:"mongo",name:"clearExtensions",options:[],params:[],scope:"static",summary:"<p>Clear all extensions, prototype methods, and static methods (useful for testing).</p>"},"Mongo.Collection.getExtensions":{filepath:"mongo/collection/collection.js",kind:"function",lineno:250,locus:"Anywhere",longname:"Mongo.Collection.getExtensions",memberof:"Mongo.Collection",module:"mongo",name:"getExtensions",options:[],params:[],returns:[{description:"<p>Array of registered extension functions</p>",type:{names:["Array.<function()>"]}}],scope:"static",summary:"<p>Get all registered constructor extensions (useful for debugging).</p>"},"Mongo.Collection.getPrototypeMethods":{filepath:"mongo/collection/collection.js",kind:"function",lineno:261,locus:"Anywhere",longname:"Mongo.Collection.getPrototypeMethods",memberof:"Mongo.Collection",module:"mongo",name:"getPrototypeMethods",options:[],params:[],returns:[{description:"<p>Map of method names to functions</p>",type:{names:["Map.<String, function()>"]}}],scope:"static",summary:"<p>Get all registered prototype methods (useful for debugging).</p>"},"Mongo.Collection.getStaticMethods":{filepath:"mongo/collection/collection.js",kind:"function",lineno:272,locus:"Anywhere",longname:"Mongo.Collection.getStaticMethods",memberof:"Mongo.Collection",module:"mongo",name:"getStaticMethods",options:[],params:[],returns:[{description:"<p>Map of method names to functions</p>",type:{names:["Map.<String, function()>"]}}],scope:"static",summary:"<p>Get all registered static methods (useful for debugging).</p>"},"Mongo.Collection.removeExtension":{filepath:"mongo/collection/collection.js",kind:"function",lineno:207,locus:"Anywhere",longname:"Mongo.Collection.removeExtension",memberof:"Mongo.Collection",module:"mongo",name:"removeExtension",options:[],params:[{description:"<p>The extension function to remove</p>",name:"extension",type:{names:["function"]}}],scope:"static",summary:"<p>Remove a constructor extension (useful for testing).</p>"},"Mongo.Collection.removePrototypeMethod":{filepath:"mongo/collection/collection.js",kind:"function",lineno:218,locus:"Anywhere",longname:"Mongo.Collection.removePrototypeMethod",memberof:"Mongo.Collection",module:"mongo",name:"removePrototypeMethod",options:[],params:[{description:"<p>The name of the method to remove</p>",name:"name",type:{names:["String"]}}],scope:"static",summary:"<p>Remove a prototype method from all collection instances.</p>"},"Mongo.Collection.removeStaticMethod":{filepath:"mongo/collection/collection.js",kind:"function",lineno:229,locus:"Anywhere",longname:"Mongo.Collection.removeStaticMethod",memberof:"Mongo.Collection",module:"mongo",name:"removeStaticMethod",options:[],params:[{description:"<p>The name of the static method to remove</p>",name:"name",type:{names:["String"]}}],scope:"static",summary:"<p>Remove a static method from the Mongo.Collection constructor.</p>"},"Mongo.CollectionExtensions":{filepath:"mongo/collection/collection.js",kind:"member",lineno:358,longname:"Mongo.CollectionExtensions",memberof:"Mongo",module:"mongo",name:"CollectionExtensions",scope:"static",summary:"<p>Collection Extensions API</p>"},"Mongo.Cursor":{filepath:"mongo/collection/collection.js",instancename:"cursor",kind:"class",lineno:376,longname:"Mongo.Cursor",memberof:"Mongo",module:"mongo",name:"Cursor",options:[],params:[],scope:"static",summary:"<p>To create a cursor, use find. To access the documents in a cursor, use forEach, map, or fetch.</p>"}
485,"Mongo.Cursor#count":{deprecated:"in 2.9",filepath:"minimongo/cursor.js",kind:"function",lineno:44,locus:"Anywhere",longname:"Mongo.Cursor#count",memberof:"Mongo.Cursor",module:"minimongo",name:"count",options:[],params:[],returns:[{type:{names:["Number"]}}],scope:"instance",summary:`<p>Returns the number of documents that match a query. This method is 486<a href="https://www.mongodb.com/docs/v4.4/reference/command/count/">deprecated since MongoDB 4.0</a>; 487see <code>Collection.countDocuments</code> and 488<code>Collection.estimatedDocumentCount</code> for a replacement.</p>`},"Mongo.Cursor#countAsync":{deprecated:"in 2.9",filepath:"minimongo/constants.js",kind:"function",lineno:94,locus:"Anywhere",longname:"Mongo.Cursor#countAsync",memberof:"Mongo.Cursor",module:"minimongo",name:"countAsync",options:[],params:[],returns:[{type:{names:["Promise"]}}],scope:"instance",summary:`<p>Returns the number of documents that match a query. This method is 489<a href="https://www.mongodb.com/docs/v4.4/reference/command/count/">deprecated since MongoDB 4.0</a>; 490see <code>Collection.countDocuments</code> and 491<code>Collection.estimatedDocumentCount</code> for a replacement.</p>`},"Mongo.Cursor#fetch":{filepath:"minimongo/cursor.js",kind:"function",lineno:67,locus:"Anywhere",longname:"Mongo.Cursor#fetch",memberof:"Mongo.Cursor",module:"minimongo",name:"fetch",options:[],params:[],returns:[{type:{names:["Array.<Object>"]}}],scope:"instance",summary:"<p>Return all matching documents as an Array.</p>"},"Mongo.Cursor#fetchAsync":{filepath:"minimongo/constants.js",kind:"function",lineno:107,locus:"Anywhere",longname:"Mongo.Cursor#fetchAsync",memberof:"Mongo.Cursor",module:"minimongo",name:"fetchAsync",options:[],params:[],returns:[{type:{names:["Promise"]}}],scope:"instance",summary:"<p>Return all matching documents as an Array.</p>"},"Mongo.Cursor#forEach":{filepath:"minimongo/cursor.js",kind:"function",lineno:128,locus:"Anywhere",longname:"Mongo.Cursor#forEach",memberof:"Mongo.Cursor",module:"minimongo",name:"forEach",options:[],params:[{description:`<p>Function to call. It will be called 492with three arguments: the document, a 4930-based index, and <em>cursor</em> 494itself.</p>`,name:"callback",type:{names:["IterationCallback"]}},{description:`<p>An object which will be the value of <code>this</code> inside 495<code>callback</code>.</p>`,name:"thisArg",optional:!0,type:{names:["Any"]}}],scope:"instance",summary:`<p>Call <code>callback</code> once for each matching document, sequentially and 496synchronously.</p>`},"Mongo.Cursor#forEachAsync":{filepath:"minimongo/cursor.js",kind:"function",lineno:150,locus:"Anywhere",longname:"Mongo.Cursor#forEachAsync",memberof:"Mongo.Cursor",module:"minimongo",name:"forEachAsync",options:[],params:[{description:`<p>Function to call. It will be called 497with three arguments: the document, a 4980-based index, and <em>cursor</em> 499itself.</p>`,name:"callback",type:{names:["IterationCallback"]}},{description:`<p>An object which will be the value of <code>this</code> inside 500<code>callback</code>.</p>`,name:"thisArg",optional:!0,type:{names:["Any"]}}],returns:[{type:{names:["Promise"]}}],scope:"instance",summary:`<p>Call <code>callback</code> once for each matching document, sequentially and 501synchronously.</p>`},"Mongo.Cursor#map":{filepath:"minimongo/cursor.js",kind:"function",lineno:177,locus:"Anywhere",longname:"Mongo.Cursor#map",memberof:"Mongo.Cursor",module:"minimongo",name:"map",options:[],params:[{description:`<p>Function to call. It will be called 502with three arguments: the document, a 5030-based index, and <em>cursor</em> 504itself.</p>`,name:"callback",type:{names:["IterationCallback"]}},{description:`<p>An object which will be the value of <code>this</code> inside 505<code>callback</code>.</p>`,name:"thisArg",optional:!0,type:{names:["Any"]}}],scope:"instance",summary:"<p>Map callback over all matching documents. Returns an Array.</p>"},"Mongo.Cursor#mapAsync":{filepath:"minimongo/cursor.js",kind:"function",lineno:200,locus:"Anywhere",longname:"Mongo.Cursor#mapAsync",memberof:"Mongo.Cursor",module:"minimongo",name:"mapAsync",options:[],params:[{description:`<p>Function to call. It will be called 506with three arguments: the document, a 5070-based index, and <em>cursor</em> 508itself.</p>`,name:"callback",type:{names:["IterationCallback"]}},{description:`<p>An object which will be the value of <code>this</code> inside 509<code>callback</code>.</p>`,name:"thisArg",optional:!0,type:{names:["Any"]}}],returns:[{type:{names:["Promise.<Array>"]}}],scope:"instance",summary:"<p>Map callback over all matching documents. Returns a Promise<Array>.</p>"},"Mongo.Cursor#observe":{filepath:"minimongo/cursor.js",kind:"function",lineno:253,locus:"Anywhere",longname:"Mongo.Cursor#observe",memberof:"Mongo.Cursor",module:"minimongo",name:"observe",options:[],params:[{description:`<p>Functions to call to deliver the result set as it 510changes</p>`,name:"callbacks",type:{names:["Object"]}}],scope:"instance",summary:"<p>Watch a query. Receive callbacks as the result set changes.</p>"},"Mongo.Cursor#observeAsync":{filepath:"minimongo/cursor.js",kind:"function",lineno:263,locus:"Anywhere",longname:"Mongo.Cursor#observeAsync",memberof:"Mongo.Cursor",module:"minimongo",name:"observeAsync",options:[],params:[],scope:"instance",summary:"<p>Watch a query. Receive callbacks as the result set changes.</p>"},"Mongo.Cursor#observeChanges":{filepath:"minimongo/cursor.js",kind:"function",lineno:27
5107,locus:"Anywhere",longname:"Mongo.Cursor#observeChanges",memberof:"Mongo.Cursor",module:"minimongo",name:"observeChanges",options:[],params:[{description:`<p>Functions to call to deliver the result set as it 511changes</p>`,name:"callbacks",type:{names:["Object"]}}],scope:"instance",summary:`<p>Watch a query. Receive callbacks as the result set changes. Only 512the differences between the old and new documents are passed to 513the callbacks.</p>`},"Mongo.Cursor#observeChangesAsync":{filepath:"minimongo/cursor.js",kind:"function",lineno:434,locus:"Anywhere",longname:"Mongo.Cursor#observeChangesAsync",memberof:"Mongo.Cursor",module:"minimongo",name:"observeChangesAsync",options:[],params:[{description:`<p>Functions to call to deliver the result set as it 514changes</p>`,name:"callbacks",type:{names:["Object"]}}],scope:"instance",summary:`<p>Watch a query. Receive callbacks as the result set changes. Only 515the differences between the old and new documents are passed to 516the callbacks.</p>`},"Mongo.ObjectID":{filepath:"mongo/collection/collection.js",kind:"class",lineno:369,locus:"Anywhere",longname:"Mongo.ObjectID",memberof:"Mongo",module:"mongo",name:"ObjectID",options:[],params:[{description:"<p>Optional. The 24-character hexadecimal contents of the ObjectID to create</p>",name:"hexString",optional:!0,type:{names:["String"]}}],scope:"static",summary:"<p>Create a Mongo-style <code>ObjectID</code>. If you don't specify a <code>hexString</code>, the <code>ObjectID</code> will be generated randomly (not using MongoDB's ID construction rules).</p>"},"Mongo._collections":{access:"protected",filepath:"mongo/collection/collection.js",kind:"member",lineno:351,longname:"Mongo._collections",memberof:"Mongo",module:"mongo",name:"_collections",scope:"static",summary:"<p>A record of all defined Mongo.Collection instances, indexed by collection name.</p>",type:{names:["Map.<string, Mongo.Collection>"]}},"Mongo.getCollection":{filepath:"mongo/collection/collection.js",kind:"function",lineno:341,locus:"Anywhere",longname:"Mongo.getCollection",memberof:"Mongo",module:"mongo",name:"getCollection",options:[],params:[{description:"<p>Name of your collection as it was defined with <code>new Mongo.Collection()</code>.</p>",name:"name",type:{names:["string"]}}],returns:[{type:{names:["Mongo.Collection","undefined"]}}],scope:"static",summary:`<p>Retrieve a Meteor collection instance by name. Only collections defined with <a href="#collections"><code>new Mongo.Collection(...)</code></a> are available with this method. For plain MongoDB collections, you'll want to look at <a href="#Mongo-Collection-rawDatabase"><code>rawDatabase()</code></a>.</p>`},Npm:{kind:"namespace",longname:"Npm",name:"Npm",scope:"global",summary:"<p>The Npm object in package.js and package source files.</p>"},"Npm.require":{kind:"member",locus:"Server",longname:"Npm.require",memberof:"Npm",name:"require",params:[{description:"<p>The name of the package to require.</p>",name:"name",type:{names:["String"]}}],scope:"static",summary:`<p>Require a package that was specified using 517<code>Npm.depends()</code>.</p>`},Package:{kind:"namespace",locus:"package.js",longname:"Package",name:"Package",scope:"global",summary:"<p>The Package object in package.js</p>"},PackageAPI:{instancename:"api",kind:"class",longname:"PackageAPI",name:"PackageAPI",options:[],params:[],scope:"global",showinstancename:"true",summary:"<p>Type of the API object passed into the <code>Package.onUse</code> function.</p>"},"PackageAPI#addAssets":{kind:"function",locus:"package.js",longname:"PackageAPI#addAssets",memberof:"PackageAPI",name:"addAssets",options:[],params:[{description:"<p>Paths to the asset files.</p>",name:"filenames",type:{names:["String","Array.<String>"]}},{description:`<p>Specify where this asset should be 518available (e.g., 'server', 'client', 'web.browser', 'web.cordova'). You can 519specify multiple architectures by passing in an array, for example 520<code>['web.cordova', 'os.linux']</code>.</p>`,name:"architecture",type:{names:["String","Array.<String>"]}}],scope:"instance",summary:`<p>Specify asset files for your package. They can be accessed via 521the <a href="#assets">Assets API</a> from the server, or at the URL 522<code>
522/packages/username_package-name/file-name</code> from the client, depending on the 523architecture passed.</p>`},"PackageAPI#addFiles":{kind:"function",locus:"package.js",longname:"PackageAPI#addFiles",memberof:"PackageAPI",name:"addFiles",options:[{description:`<p>If this file is JavaScript code or will 524be compiled into JavaScript code by a build plugin, don't wrap the 525resulting file in a closure. Has the same effect as putting a file into the 526<code>client/compatibility</code> directory in an app.</p>`,name:"bare",optional:!0,type:{names:["Boolean"]}}],params:[{description:"<p>Paths to the source files.</p>",name:"filenames",type:{names:["String","Array.<String>"]}},{description:`<p>If you only want to use the file 527on the server (or the client), you can pass this argument 528(e.g., 'server', 'legacy', 'client', 'web.browser', 'web.cordova') to specify 529what architecture the file is used with. You can call api.addFiles(files, "legacy") 530in your package.js configuration file to add extra files to the legacy bundle, 531or api.addFiles(files, "client") to add files to all client bundles, 532or api.addFiles(files, "web.browser") to add files only to the modern bundle. 533You can specify multiple 534architectures by passing in an array, for example 535<code>['web.cordova', 'os.linux']</code>. By default, the file will be loaded on both 536server and client.</p>`,name:"architecture",optional:!0,type:{names:["String","Array.<String>"]}},{description:`<p>Options that will be passed to build 537plugins.</p>`,name:"options",optional:!0,type:{names:["Object"]}}],scope:"instance",summary:"<p>Specify source code files for your package.</p>"},"PackageAPI#export":{kind:"function",locus:"package.js",longname:"PackageAPI#export",memberof:"PackageAPI",name:"export",options:[],params:[{description:`<p>Name of the object to export, or 538an array of object names.</p>`,name:"exportedObjects",type:{names:["String","Array.<String>"]}},{description:`<p>If you only want to export the 539object on the server (or the client), you can pass in the second argument 540(e.g., 'server', 'client', 'web.browser', 'web.cordova') to specify what 541architecture the export is used with. You can specify multiple 542architectures by passing in an array, for example <code>['web.cordova', 'os.linux']</code>.</p>`,name:"architecture",optional:!0,type:{names:["String","Array.<String>"]}},{name:"exportOptions",optional:!0,type:{names:["Object"]}},{description:`<p>If true, this symbol will only be 543exported when running tests for this package.</p>`,name:"exportOptions.testOnly",type:{names:["Boolean"]}}],scope:"instance",summary:`<p>Export package-level variables in your package. The specified 544variables (declared without <code>var</code> in the source code) will be available 545to packages that use your package. If your package sets the <code>debugOnly</code>, 546<code>prodOnly</code> or <code>testOnly</code> options to <code>true</code> when it calls 547<code>Package.describe()</code>, then packages that use your package will need to use 548<code>Package["package-name"].ExportedVariableName</code> to access the value of an 549exported variable.</p>`},"PackageAPI#imply":{kind:"function",locus:"package.js",longname:"PackageAPI#imply",memberof:"PackageAPI",name:"imply",options:[],params:[{description:`<p>Name of a package, or array of 550package names, with an optional @version component for each.</p>`,name:"packageNames",type:{names:["String","Array.<String>"]}},{description:`<p>If you only use the package on 551the server (or the client), you can pass in the second argument (e.g., 552<code>'server'</code>, <code>'client'</code>, <code>'web.browser'</code>, <code>'web.cordova'</code>) to specify what 553architecture the package is used with. You can specify multiple 554architectures by passing in an array, for example <code>['web.cordova', 'os.linux']</code>.</p>`,name:"architecture",optional:!0,type:{names:["String","Array.<String>"]}}],scope:"instance",summary:`<p>Give users of this package access to another package (by passing 555in the string <code>packagename</code>) or a collection of packages (by passing in
556an array of strings [<code>packagename1</code>, <code>packagename2</code>]</p>`},"PackageAPI#use":{kind:"function",locus:"package.js",longname:"PackageAPI#use",memberof:"PackageAPI",name:"use",options:[{description:`<p>Establish a weak dependency on a 557package. If package A has a weak dependency on package B, it means 558that including A in an app does not force B to be included too â but, 559if B is included or by another package, then B will load before A. 560You can use this to make packages that optionally integrate with or 561enhance other packages if those packages are present. 562When you weakly depend on a package you don't see its exports. 563You can detect if the possibly-present weakly-depended-on package 564is there by seeing if <code>Package.foo</code> exists, and get its exports 565from the same place.</p>`,name:"weak",type:{names:["Boolean"]}},{description:`<p>It's okay to load this dependency 566after your package. (In general, dependencies specified by <code>api.use</code> 567are loaded before your package.) You can use this option to break 568circular dependencies.</p>`,name:"unordered",type:{names:["Boolean"]}}],params:[{description:`<p>Packages being depended on. 569Package names may be suffixed with an @version tag.</p> 570<p>In general, you must specify a package's version (e.g., 571<code>'[email protected]'</code> to use version 1.0.0 or a higher 572compatible version (ex: 1.0.1, 1.5.0, etc.) of the 573<code>accounts</code> package). If you are sourcing core 574packages from a Meteor release with <code>versionsFrom</code>, you may leave 575off version names for core packages. You may also specify constraints, 576such as <code>my:forms@=1.0.0</code> (this package demands <code>my:forms</code> at <code>1.0.0</code> exactly), 577or <code>my:[email protected] || =2.0.1</code> (<code>my:forms</code> at <code>1.x.y</code>, or exactly <code>2.0.1</code>).</p>`,name:"packageNames",type:{names:["String","Array.<String>"]}},{description:`<p>If you only use the package on the 578server (or the client), you can pass in the second argument (e.g., 579<code>'server'</code>, <code>'client'</code>, <code>'web.browser'</code>, <code>'web.cordova'</code>) to specify 580what architecture the package is used with. You can specify multiple 581architectures by passing in an array, for example <code>['web.cordova', 'os.linux']</code>.</p>`,name:"architecture",optional:!0,type:{names:["String","Array.<String>"]}},{name:"options",optional:!0,type:{names:["Object"]}}],scope:"instance",summary:"<p>Depend on package <code>packagename</code>.</p>"},"PackageAPI#versionsFrom":{kind:"function",locus:"package.js",longname:"PackageAPI#versionsFrom",memberof:"PackageAPI",name:"versionsFrom",options:[],params:[{description:`<p>Specification of a release: 582track@version. Just 'version' (e.g. <code>"0.9.0"</code>) is sufficient if using the 583default release track <code>METEOR</code>. Can be an array of specifications.</p>`,name:"meteorRelease",type:{names:["String","Array.<String>"]}}],scope:"instance",summary:`<p>Use versions of core packages from a release. Unless provided, 584all packages will default to the versions released along with 585<code>meteorRelease</code>. This will save you from having to figure out the exact 586versions of the core packages you want to use. For example, if the newest 587release of meteor is <code>[email protected]</code> and it includes <code>[email protected]</code>, you 588can write <code>api.versionsFrom('[email protected]')</code> in your package, and when you 589later write <code>api.use('jquery')</code>, it will be equivalent to 590<code>api.use('[email protected]')</code>. You may specify an array of multiple releases, 591in which case the default value for constraints will be the "or" of the 592versions from each release: <code>api.versionsFrom(['[email protected]', '[email protected]'])</code> may cause <code>api.use('jquery')</code> to be interpreted as 593<code>api.use('[email protected] || 2.0.0')</code>.</p>`},PackageCordova:{instancename:"Cordova",kind:"class",locus:"package.js",longname:"PackageCordova",memberof:"PackageCordova",name:"PackageCordova",options:[],params:[],scope:"global",showinstancename:"true",summary:"<p>Class of the 'Cordova' object visible in package.js</p>"},"PackageCordova#depends":{kind:"function",locus:"package.js",longname:"PackageCordova#depends",memberof:"PackageCordova",name:"depends",options:[],params:[{description:`<p>An object where the keys are plugin 594names and the values are version numbers or GitHub tarball URLs 595in string form. 596Example:</p> 597<pre class="prettyprint source lang-js"><code>Cordova.depends({ 598 "org.apache.cordova.camera": "0.3.0" 599}); 600</code></pre> 601<p>Alternatively, with a GitHub URL:</p> 602<pre class="prettyprint source lang-js"><code>Cordova.depends({ 603 "org.apache.cordova.camera": 604 "https://github.com/apache/cordova-plugin-camera/tarball/d84b875c449d68937520a1b352e09f6d39044fbf" 605}); 606</code></pre>`,name:"dependencies",type:{names:["Object"]}}],scope:"instance",summary:`<p>Specify which <a href="http://cordova.apache.org/">Cordova / PhoneGap</a> 607plugins your Meteor package depends on.</p> 608<p>Plugins are installed from 609<a href="http://plugins.cordova.io/">plugins.cordova.io</a>, so the plugins and 610versions specified must exist there. Alternatively, the version
611can be replaced with a GitHub tarball URL as described in the 612<a href="https://guide.meteor.com/cordova.html#cordova-plugins">Cordova</a> 613page of the Meteor wiki on GitHub.</p>`},PackageNamespace:{instancename:"Package",kind:"class",locus:"package.js",longname:"PackageNamespace",memberof:"PackageNamespace",name:"PackageNamespace",options:[],params:[],scope:"global",showinstancename:"true",summary:"<p>Class of the 'Package' object visible in package.js</p>"},"PackageNamespace#describe":{kind:"function",locus:"package.js",longname:"PackageNamespace#describe",memberof:"PackageNamespace",name:"describe",options:[{description:`<p>A concise 1-2 sentence description of 614the package, required for publication.</p>`,name:"summary",type:{names:["String"]}},{description:`<p>The (extended) 615<a href="http://www.semver.org">semver</a> version for your package. Additionally, 616Meteor allows a wrap number: a positive integer that follows the 617version number. If you are porting another package that uses semver 618versioning, you may want to use the original version, postfixed with 619<code>_wrapnumber</code>. For example, <code>1.2.3_1</code> or <code>2.4.5-rc1_4</code>. Wrap numbers 620sort after the original numbers: <code>1.2.3</code> < <code>1.2.3_1</code> < <code>1.2.3_2</code> < 621<code>1.2.4-rc.0</code>. If no version is specified, this field defaults to 622<code>0.0.0</code>. If you want to publish your package to the package server, you 623must specify a version.</p>`,name:"version",type:{names:["String"]}},{description:`<p>Optional name override. By default, the 624package name comes from the name of its directory.</p>`,name:"name",type:{names:["String"]}},{description:"<p>Optional Git URL to the source repository.</p>",name:"git",type:{names:["String"]}},{description:`<p>Optional Filepath to 625documentation. Set to 'README.md' by default. Set this to null to submit 626no documentation.</p>`,name:"documentation",type:{names:["String"]}},{description:`<p>A package with this flag set to true 627will ONLY be bundled as part of <code>meteor run</code>, and completely excluded 628from production builds with <code>meteor build</code>.</p>`,name:"devOnly",type:{names:["Boolean"]}},{description:`<p>A package with this flag set to true 629will not be bundled into production builds. This is useful for packages 630meant to be used in development only.</p>`,name:"debugOnly",type:{names:["Boolean"]}},{description:`<p>A package with this flag set to true 631will ONLY be bundled into production builds.</p>`,name:"prodOnly",type:{names:["Boolean"]}},{description:`<p>A package with this flag set to true 632will ONLY be bundled as part of <code>meteor test</code>.</p>`,name:"testOnly",type:{names:["Boolean"]}},{description:`<p>A flag that will mark the 633package as deprecated. Provide string to override the default message.</p>`,name:"deprecated",type:{names:["Boolean","String"]}}],params:[{name:"options",type:{names:["Object"]}}],scope:"instance",summary:"<p>
633Provide basic package information.</p>"},"PackageNamespace#onTest":{kind:"function",locus:"package.js",longname:"PackageNamespace#onTest",memberof:"PackageNamespace",name:"onTest",options:[],params:[{description:"<p>A function that takes in the package control 'api' object, which keeps track of dependencies and exports.</p>",name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Define dependencies and expose package methods for unit tests.</p>"},"PackageNamespace#onUse":{kind:"function",locus:"package.js",longname:"PackageNamespace#onUse",memberof:"PackageNamespace",name:"onUse",options:[],params:[{description:"<p>A function that takes in the package control <code>api</code> object, which keeps track of dependencies and exports.</p>",name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Define package dependencies and expose package methods.</p>"},"PackageNamespace#registerBuildPlugin":{kind:"function",locus:"package.js",longname:"PackageNamespace#registerBuildPlugin",memberof:"PackageNamespace",name:"registerBuildPlugin",options:[{description:`<p>A cosmetic name, must be unique in the 634package.</p>`,name:"name",type:{names:["String"]}},{description:`<p>Meteor packages that this 635plugin uses, independent of the packages specified in 636<a href="#pack_onUse">api.onUse</a>.</p>`,name:"use",type:{names:["String","Array.<String>"]}},{description:`<p>The source files that make up the 637build plugin, independent from <a href="#pack_addFiles">api.addFiles</a>.</p>`,name:"sources",type:{names:["Array.<String>"]}},{description:`<p>An object where the keys 638are NPM package names, and the values are the version numbers of 639required NPM packages, just like in <a href="#Npm-depends">Npm.depends</a>.</p>`,name:"npmDependencies",type:{names:["Object"]}}],params:[{name:"options",optional:!0,type:{names:["Object"]}}],scope:"instance",summary:`<p>Define a build plugin. A build plugin extends the build 640process for apps and packages that use this package. For example, 641the <code>coffeescript</code> package uses a build plugin to compile CoffeeScript 642source files into JavaScript.</p>`},PackageNpm:{instancename:"Npm",kind:"class",locus:"package.js",longname:"PackageNpm",memberof:"PackageNpm",name:"PackageNpm",options:[],params:[],scope:"global",showinstancename:"true",summary:"<p>Class of the 'Npm' object visible in package.js</p>"},"PackageNpm#depends":{kind:"function",locus:"package.js",longname:"PackageNpm#depends",memberof:"PackageNpm",name:"depends",options:[],params:[{description:`<p>An object where the keys are package 643names and the values are one of:</p> 644<ol> 645<li>Version numbers in string form</li> 646<li>http(s) URLs of npm packages</li> 647<li>Git URLs in the format described <a href="https://docs.npmjs.com/files/package.json#git-urls-as-dependencies">here</a></li> 648</ol> 649<p>Https URL example:</p> 650<pre class="prettyprint source lang-js"><code>Npm.depends({ 651 moment: "2.8.3", 652 async: "https://github.com/caolan/async/archive/71fa2638973dafd8761fa5457c472a312cc820fe.tar.gz" 653}); 654</code></pre> 655<p>Git URL example:</p> 656<pre class="prettyprint source lang-js"><code>Npm.depends({ 657 moment: "2.8.3", 658 async: "git+https://github.com/caolan/async#master" 659}); 660</code></pre>`,name:"dependencies",type:{names:["Object"]}}],scope:"instance",summary:`<p>Specify which <a href="https://www.npmjs.org/">NPM</a> packages 661your Meteor package depends on.</p>`},"PackageNpm#devDepends":{kind:"function",locus:"package.js",longname:"PackageNpm#devDepends",memberof:"PackageNpm",name:"devDepends",options:[],params:[{description:`<p>An object where the keys are package 662names and the values are version numbers in string form.</p> 663<p>These dependencies will only be included during development and testing, 664but will be excluded when using "meteor build" or "meteor deploy" commands, 665reducing the size of the production bundle.</p> 666<pre class="prettyprint source lang-js"><code>Npm.devDepends({ 667 "jest": "29.5.0", 668 "eslint": "8.36.0" 669}); 670</code></pre>`,name:"dependencies",type:{names:["Object"]}}],scope:"instance",summary:`<p>Specify which <a href="https://www.npmjs.org/">NPM</a> packages 671your Meteor package depends on for development only.</p>`},Plugin:{kind:"namespace",longname:"Plugin",name:"Plugin",scope:"global",summary:"<p>The namespace that is exposed inside build plugin files.</p>"},"Plugin.registerCompiler":{kind:"function",locus:"Build Plugin",longname:"Plugin.registerCompiler",memberof:"Plugin",name:"registerCompiler",options:[{description:`<p>The file extensions that this 672plugin should handle, without the first dot. 673Examples: <code>["coffee", "coffee.md"]</code>.</p>`,name:"extensions",type:{names:["Array.<String>"]}},{description:`<p>The list of filenames 674that this plugin should handle. Examples: <code>["config.json"]</code>.</p>`,name:"filenames",type:{names:["Array.<String>"]}}],params:[{name:"options",type:{names:["Object"]}},{description:`<p>A function that returns an instance 675of a compiler class.</p> 676<p>More detailed documentation for build plugins is available <a href="https://docs.meteor.com/api/packagejs.html#build-plugin-api">on the GitHub Wiki</a>.</p>`,name:"factory",type:{names:["function"]}}],scope:"static",summary:`<p>Inside a build plugin source file specified in 677<a href="#Package-registerBuildPlugin">Package.registerBuildPlugin</a>, 678add a compiler that will handle files with certain extensions or 679filenames.</p>`},"Plugin.registerLinter":{kind:"function",locus:"Build Plugin",longname:"Plugin.registerLinter",memberof:"Plugin",name:"registerLinter",options:[{description:`<p>The file extensions that this 680plugin should handle, without the first dot. 681Examples: <code>["js", "es6", "jsx"]</code>.</p>`,name:"extensions",type:{names:["Array.<String>"]}}],params:[{name:"options",type:{names:["Object"]}},{description:`<p>A function that returns an instance 682of a linter class.</p> 683<p>More detailed documentation for build plugins is available <a href="https://docs.meteor.com/api/packagejs.html#build-plugin-api">on the GitHub Wiki</a>.</p>`,name:"factory",type:{names:["function"]}}],scope:"static",summary:`<p>Inside a build plugin source file specified in 684<a href="#Package-registerBuildPlugin">Package.registerBuildPlugin</a>, 685add a linter that will handle files with certain extensions or 686filenames.</p>`},"Plugin.registerMinifier":{kind:"function",locus:"Build Plugin",longname:"Plugin.registerMinifier",memberof:"Plugin",name:"registerMinifier",options:[{description:`<p>The file extensions that this 687plugin should handle, without the first dot. Can only be "js" or "css". 688Examples: <code>["js", "css"]</code>.</p>`,name:"extensions",type:{names:["Array.<String>"]}},{description:`<p>The list of filenames 689that this plugin should handle. Examples: <code>["config.json"]</code>.</p>`,name:"filenames",type:{names:["Array.<String>"]}}],params:[{name:"options",type:{names:["Object"]}},{description:`<p>A function that returns an instance 690of a minifier class.</p> 691<p>More detailed documentation for build plugins is available <a href="https://docs.meteor.com/api/packagejs.html#build-plugin-api">on the GitHub Wiki</a>.</p>`,name:"factory",type:{names:["function"]}}],scope:"static",summary:`<p>Inside a build plugin source file specified in 692<a href="#Package-registerBuildPlugin">Package.registerBuildPlugin</a>, 693add a linter that will handle files with certain extensions or 694filenames.</p>`},"Plugin.registerSourceHandler":{deprecated:`since 1.2 695XXX COMPAT WITH 1.1`,kind:"function",locus:"Build Plugin",longname:"Plugin.registerSourceHandler",memberof:"Plugin",name:"registerSourceHandler",options:[],params:[{description:`<p>The file extension that this plugin 696should handle, without the first dot. 697Examples: <code>"coffee"</code>, <code>"coffee.md"</code>.</p>`,name:"fileExtension",type:{names:["String"]}},{description:`<p>A function that takes one argument, 698a CompileStep object.</p> 699<p>Documentation for CompileStep is available <a href="https://github.com/meteor/meteor/wiki/CompileStep-API-for-Build-Plugin-Source-Handlers">on the GitHub Wiki</a>.</p>`,name:"handler",type:{names:["function"]}}],scope:"static",summary:`<p>Inside a build plugin source file specified in 700<a href="#Package-registerBuildPlugin">Package.registerBuildPlugin</a>, 701add a handler to compile files with a certain file extension.</p>`},"Random.choice":{filepath:"random/AbstractRandomGenerator.js",kind:"member",lineno:88,locus:"Anywhere",longname:"Random.choice",memberof:"Random",module:"random",name:"choice",params:[{description:"<p>Array or string to choose from</p>",name:"arrayOrString",type:{names:["Array","String"]}}],scope:"static",summary:"<p>Return a random element of the given array or string.</p>"},"Random.fraction":{filepath:"random/NodeRandomGenerator.js",kind:"member",lineno:5,locus:"Anywhere",longname:"Random.fraction",memberof:"Random",module:"random",name:"fraction",scope:"static",summary:"<p>Return a number between 0 and 1, like <code>Math.random</code>.</p>"},"Random.hexString":{filepath:"random/NodeRandomGenerator.js",kind:"member",lineno:15,locus:"Anywhere",longname:"Random.hexString",memberof:"Random",module:"random",name:"hexString",params:[{description:"<p>Length of the string</p>",name:"n",type:{names:["Number"]}}],scope:"static",summary:"<p>Return a random string of <code>n</code> hexadecimal digits.</p>"},"Random.id":{filepath:"random/AbstractRandomGenerator.js",kind:"member",lineno:51,locus:"Anywhere",longname:"Random.id",memberof:"Random",module:"random",name:"id",params:[{description:`<p>Optional length of the identifier in characters 702(defaults to 17)</p>`,name:"n",optional:!0,type:{names:["Number"]}}],scope:"static",summary:`<p>Return a unique identifier, such as <code>"Jjwjg6gouWLXhMGKW"</code>, that is 703likely to be unique in the whole world.</p>`},"Random.secret":{filepath:"random/AbstractRandomGenerator.js",kind:"member",lineno:69,locus:"Anywhere",longname:"Random.secret",memberof:"Random",module:"random",name:"secret",params:[{description:`<p>Optional length of the secret string (defaults to 43 704characters, or 256 bits of entropy)</p>`,name:"n",optional:!0,type:{names:["Number"]}}],scope:"static",summary:`<p>Return a random string of printable characters with 6 bits of 705entropy per character. Use <code>Random.secret</code> for security-critical secrets 706that are intended for machine, rather than human, consumption.</p>`},ReactiveDict:{filepath:"reactive-dict/reactive-dict.js",instancename:"ReactiveDict",kind:"class",lineno:32,locus:"Client",longname:"ReactiveDict",memberof:"ReactiveDict",module:"reactive-dict",name:"ReactiveDict",options:[],params:[{description:"<p>Optional. When a name is passed, preserves contents across Hot Code Pushes</p>",name:"name",optional:!0,type:{names:["String"]}},{description:"<p>Optional. The default values for the dictionary</p>",name:"initialValue",optional:!0,type:{names:["Object"]}}],scope:"global",summary:"<p>Constructor for a ReactiveDict, which represents a reactive dictionary of key/value pairs.</p>"},"ReactiveDict#all":{filepath:"reactive-dict/reactive-dict.js",kind:"function",lineno:229,locus:"Client",longname:"ReactiveDict#all",memberof:"ReactiveDict",module:"reactive-dict",name:"all",options:[],params:[],scope:"instance",summary:`<p>Get all key-value pairs as a plain object. If inside a <a href="#reactivity">reactive 707computation</a>, invalidate the computation the next time the 708value associated with any key is changed by 709<a href="#ReactiveDict-set"><code>ReactiveDict.set</code></a>. 710This returns a clone of each value, so if it's an object or an array, 711mutating the returned value has no effect on the value stored in the 712ReactiveDict.</p>`},"ReactiveDict#clear":{filepath:"reactive-dict/reactive-dict.js",kind:"function",lineno:245,locus:"Client",longname:"ReactiveDict#clear",memberof:"ReactiveDict",module:"reactive-dict",name:"clear",options:[],params:[],scope:"instance",summary:`<p>remove all key-value pairs from the ReactiveDict. Notify any 713listeners that the value has changed (eg: redraw templates, and rerun any 714<a href="#tracker_autorun"><code>Tracker.autorun</code></a> computations, that called 715<a href="#ReactiveDict_get"><code>ReactiveDict.get</code></a> on this <code>key</code>.)</p>`},"ReactiveDict#delete":{filepath:"reactive-dict/reactive-dict.js",kind:"function",lineno:268,locus:"Client",longname:"ReactiveDict#delete",memberof:"ReactiveDict",module:"reactive-dict",name:"delete",options:[],params:[{description:"<p>The key to delete, eg, <code>selectedItem</code></p>",name:"key",type:{names:["String"]}}],scope:"instance",summary:`<p>remove a key-value pair from the ReactiveDict. Notify any listeners 716that the value has changed (eg: redraw templates, and rerun any 717<a href="#tracker_autorun"><code>Tracker.autorun</code></a> computations, that called 718<a href="#ReactiveDict_get"><code>ReactiveDict.get</code></a> on this <code>key</code>.)</p>`},"ReactiveDict#destroy":{filepath:"reactive-dict/reactive-dict.js",kind:"function",lineno:293,locus:"Client",longname:"ReactiveDict#destroy",memberof:"ReactiveDict",module:"reactive-dict",name:"destroy",options:[],params:[],scope:"instance",summary:`<p>Clear all values from the reactiveDict and prevent it from being 719migrated on a Hot Code Pushes. Notify any listeners 720that the value has changed (eg: redraw templates, and rerun any 721<a href="#tracker_autorun"><code>Tracker.autorun</code></a> computations, that called 722<a href="#ReactiveDict_get"><code>ReactiveDict.get</code></a> on this <code>key</code>.)</p>`},"ReactiveDict#equals":{filepath:"reactive-dict/reactive-dict.js",kind:"function",lineno:167,locus:"Client",longname:"ReactiveDict#equals",memberof:"ReactiveDict",module:"reactive-dict",name:"equals",options:[],params:[{description:"<p>The name of the session variable to test</p>",name:"key",type:{names:["String"]}},{description:`<p>The value to 723test against</p>`,name:"value",type:{names:["String","Number","Boolean","null","undefined"]}}],scope:"instance",summary:`<p>Test if the stored entry for a key is equal to a value. If inside a 724<a href="#reactivity">reactive computation</a>, invalidate the computation the next 725time the variable changes to or from the value.</p>`},"ReactiveDict#get":{filepath:"reactive-dict/reactive-dict.js",kind:"function",lineno:152,locus:"Client",longname:"ReactiveDict#get",memberof:"ReactiveDict",module:"reactive-dict",name:"get",options:[],params:[{description:"<p>The key of the element to return</p>",name:"key",type:{names:["String"]}}],scope:"instance",summary:`<p>Get the value assiciated with a key. If inside a <a href="#reactivity">reactive 726computation</a>, invalidate the computation the next time the 727value associated with this key is changed by 728<a href="#ReactiveDict-set"><code>ReactiveDict.set</code></a>. 729This returns a clone of the value, so if it's an object or an array, 730mutating the returned value has no effect on the value stored in the 731ReactiveDict.</p>`},"ReactiveDict#set":{filepath:"reactive-dict/reactive-dict.js",kind:"function",lineno:84,locus:"Client",longname:"ReactiveDict#set",memberof:"ReactiveDict",module:"reactive-dict",name:"set",options:[],params:[{description:"<p>
731The key to set, eg, <code>selectedItem</code></p>",name:"key",type:{names:["String"]}},{description:"<p>The new value for <code>key</code></p>",name:"value",type:{names:["EJSONable","undefined"]}}],scope:"instance",summary:`<p>Set a value for a key in the ReactiveDict. Notify any listeners 732that the value has changed (eg: redraw templates, and rerun any 733<a href="#tracker_autorun"><code>Tracker.autorun</code></a> computations, that called 734<a href="#ReactiveDict_get"><code>ReactiveDict.get</code></a> on this <code>key</code>.)</p>`},"ReactiveDict#setDefault":{filepath:"reactive-dict/reactive-dict.js",kind:"function",lineno:126,locus:"Client",longname:"ReactiveDict#setDefault",memberof:"ReactiveDict",module:"reactive-dict",name:"setDefault",options:[],params:[{description:"<p>The key to set, eg, <code>selectedItem</code></p>",name:"key",type:{names:["String"]}},{description:"<p>The new value for <code>key</code></p>",name:"value",type:{names:["EJSONable","undefined"]}}],scope:"instance",summary:`<p>Set a value for a key if it hasn't been set before. 735Otherwise works exactly the same as <a href="#ReactiveDict-set"><code>ReactiveDict.set</code></a>.</p>`},ReactiveVar:{filepath:"reactive-var/reactive-var.js",instancename:"reactiveVar",kind:"class",lineno:37,locus:"Client",longname:"ReactiveVar",module:"reactive-var",name:"ReactiveVar",options:[],params:[{description:"<p>The initial value to set. <code>equalsFunc</code> is ignored when setting the initial value.</p>",name:"initialValue",type:{names:["Any"]}},{description:"<p>Optional. A function of two arguments, called on the old value and the new value whenever the ReactiveVar is set. If it returns true, no set is performed. If omitted, the default <code>equalsFunc</code> returns true if its arguments are <code>===</code> and are of type number, boolean, string, undefined, or null.</p>",name:"equalsFunc",optional:!0,type:{names:["function"]}}],scope:"global",summary:"<p>Constructor for a ReactiveVar, which represents a single reactive variable.</p>"},"ReactiveVar#get":{filepath:"reactive-var/reactive-var.js",kind:"function",lineno:62,locus:"Client",longname:"ReactiveVar#get",memberof:"ReactiveVar",module:"reactive-var",name:"get",options:[],params:[],scope:"instance",summary:"<p>Returns the current value of the ReactiveVar, establishing a reactive dependency.</p>"},"ReactiveVar#set":{filepath:"reactive-var/reactive-var.js",kind:"function",lineno:74,locus:"Client",longname:"ReactiveVar#set",memberof:"ReactiveVar",module:"reactive-var",name:"set",options:[],params:[{name:"newValue",type:{names:["Any"]}}],scope:"instance",summary:"<p>Sets the current value of the ReactiveVar, invalidating the Computations that called <code>get</code> if <code>newValue</code> is different from the old value.</p>"},Roles:{filepath:"roles/roles_common_async.js",kind:"namespace",lineno:62,longname:"Roles",module:"roles",name:"Roles",scope:"global",summary:"<p>The namespace for all Roles types and methods.</p>"},"Roles.addRolesToParentAsync":{filepath:"roles/roles_common_async.js",kind:"function",lineno:263,locus:"Anywhere",longname:"Roles.addRolesToParentAsync",memberof:"Roles",module:"roles",name:"addRolesToParentAsync",options:[],params:[{description:"<p>Name(s) of role(s).</p>",name:"rolesNames",type:{names:["Array","String"]}},{description:"<p>Name of parent role.</p>",name:"parentName",type:{names:["String"]}}],returns:[{type:{names:["Promise"]}}],scope:"static",summary:"<p>Add role parent to roles.</p>"},"Roles.addUsersToRolesAsync":{filepath:"roles/roles_common_async.js",kind:"function",lineno:438,locus:"Anywhere",longname:"Roles.addUsersToRolesAsync",memberof:"Roles",module:"roles",name:"addUsersToRolesAsync",options:[],params:[{description:"<p>User ID(s) or object(s) with an <code>_id</code> field.</p>",name:"users",type:{names:["Array","String"]}},{description:"<p>Name(s) of roles to add users to. Roles have to exist.</p>",name:"roles",type:{names:["Array","String"]}},{description:`<p>Options:</p> 736<ul> 737<li><code>scope</code>: name of the scope, or <code>null</code> for the global role</li> 738<li><code>ifExists</code>: if <code>true</code>, do not throw an exception if the role does not exist</li> 739</ul>`,name:"options",optional:!0,type:{names:["Object","String"]}}],returns:[{type:{names:["Promise"]}}],scope:"static",summary:`<p>Add users to roles. 740Adds roles to existing roles for each user.</p>`},"Roles.createRoleAsync":{filepath:"roles/roles_common_async.js",kind:"function",lineno:85,locus:"Anywhere",longname:"Roles.createRoleAsync",memberof:"Roles",module:"roles",name:"createRoleAsync",options:[],params:[{description:"<p>Name of role.</p>",name:"roleName",type:{names:["String"]}},{description:`<p>Options:</p> 741<ul> 742<li><code>unlessExists</code>: if <code>true</code>, exception will not be thrown in the role already exists</li> 743</ul>`,name:"options",optional:!0,type:{names:["Object"]}}],returns:[{description:"<p>ID of the new role or null</p>",type:{names:["Promise.<String>"]}}],scope:"static",summary:"<p>Create a new role.</p>"},"Roles.deleteRoleAsync":{filepath:"roles/roles_common_async.js",kind:"function",lineno:128,locus:"Anywhere",longname:"Roles.deleteRoleAsync",memberof:"Roles",module:"roles",name:"deleteRoleAsync",options:[],params:[{description:"<p>Name of role.</p>",name:"roleName",type:{names:["String"]}}],returns:[{type:{names:["Promise"]}}],scope:"static",summary:`<p>Delete an existing role.
744If the role is set for any user, it is automatically unset.</p>`},"Roles.getAllRoles":{filepath:"roles/roles_common_async.js",kind:"function",lineno:1036,locus:"Anywhere",longname:"Roles.getAllRoles",memberof:"Roles",module:"roles",name:"getAllRoles",options:[],params:[{description:"<p>Options which are passed directly through to <code>Meteor.roles.find(query, options)</code>.</p>",name:"queryOptions",optional:!0,type:{names:["Object"]}}],returns:[{description:"<p>Cursor of existing roles.</p>",type:{names:["Cursor"]}}],scope:"static",summary:"<p>Retrieve cursor of all existing roles.</p>"},"Roles.getRolesForUserAsync":{filepath:"roles/roles_common_async.js",kind:"function",lineno:840,locus:"Anywhere",longname:"Roles.getRolesForUserAsync",memberof:"Roles",module:"roles",name:"getRolesForUserAsync",options:[],params:[{description:"<p>User ID or an actual user object.</p>",name:"user",type:{names:["String","Object"]}},{description:`<p>Options:</p> 745<ul> 746<li><code>scope</code>: name of scope to provide roles for; if not specified, global roles are returned</li> 747<li><code>anyScope</code>: if set, role can be in any scope (<code>scope</code> and <code>onlyAssigned</code> options are ignored)</li> 748<li><code>onlyScoped</code>: if set, only roles in the specified scope are returned</li> 749<li><code>onlyAssigned</code>: return only assigned roles and not automatically inferred (like subroles)</li> 750<li><code>fullObjects</code>: return full roles objects (<code>true</code>) or just names (<code>false</code>) (<code>onlyAssigned</code> option is ignored) (default <code>false</code>) 751If you have a use-case for this option, please file a feature-request. You shouldn't need to use it as it's 752result strongly dependent on the internal data structure of this plugin.</li> 753</ul> 754<p>Alternatively, it can be a scope name string.</p>`,name:"options",optional:!0,type:{names:["Object","String"]}}],returns:[{description:"<p>Array of user's roles, unsorted.</p>",type:{names:["Promise.<Array>"]}}],scope:"static",summary:"<p>Retrieve user's roles.</p>"},"Roles.getScopesForUserAsync":{filepath:"roles/roles_common_async.js",kind:"function",lineno:915,locus:"Anywhere",longname:"Roles.getScopesForUserAsync",memberof:"Roles",module:"roles",name:"getScopesForUserAsync",options:[],params:[{description:"<p>User ID or an actual user object.</p>",name:"user",type:{names:["String","Object"]}},{description:"<p>Name of roles to restrict scopes to.</p>",name:"roles",optional:!0,type:{names:["Array","String"]}}],returns:[{description:"<p>Array of user's scopes, unsorted.</p>",type:{names:["Promise.<Array>"]}}],scope:"static",summary:"<p>Retrieve users scopes, if any.</p>"},"Roles.getUserAssignmentsForRole":{filepath:"roles/roles_common_async.js",kind:"function",lineno:1103,locus:"Anywhere",longname:"Roles.getUserAssignmentsForRole",memberof:"Roles",module:"roles",name:"getUserAssignmentsForRole",options:[],params:[{description:"<p>Name of role or an array of roles.</p>",name:"roles",type:{names:["Array","String"]}},{description:`<p>Options:</p> 755<ul> 756<li><code>scope</code>: name of the scope to restrict roles to</li> 757<li><code>anyScope</code>: if set, role can be in any scope</li> 758<li><code>queryOptions</code>: options which are passed directly through to <code>RoleAssignmentCollection.find(query, options)</code></li> 759</ul>`,name:"options",optional:!0,type:{names:["Object","String"]}}],returns:[{description:"<p>Cursor of user assignments for roles.</p>",type:{names:["Cursor"]}}],scope:"static",summary:"<p>Retrieve all assignments of a user which are for the target role.</p>"},"Roles.getUserIdsInRoleAsync":{filepath:"roles/roles_common_async.js",kind:"function",lineno:1070,locus:"Anywhere",longname:"Roles.getUserIdsInRoleAsync",memberof:"Roles",module:"roles",name:"getUserIdsInRoleAsync",options:[],params:[{description:`<p>Name of role or an array of roles. If array, users 760returned will have at least one of the roles 761specified but need not have <em>all</em> roles. 762Roles do not have to exist.</p>`,name:"roles",type:{names:["Array","String"]}},{description:`<p>Options:</p> 763<ul> 764<li><code>scope</code>: name of the scope to restrict roles to; user's global 765roles will also be checked</li> 766<li><code>anyScope</code>: if set, role can be in any scope (<code>scope</code> option is ignored)</li> 767</ul>`,name:"options",optional:!0,type:{names:["Object","String"]}}],returns:[{description:"<p>Array of user IDs in roles.</p>",type:{names:["Promise.<Array>"]}}],scope:"static",summary:"<p>
767Retrieve all userIds who are in target role.</p>"},"Roles.getUsersInRoleAsync":{filepath:"roles/roles_common_async.js",kind:"function",lineno:1054,locus:"Anywhere",longname:"Roles.getUsersInRoleAsync",memberof:"Roles",module:"roles",name:"getUsersInRoleAsync",options:[],params:[{description:"<p>Name of role or an array of roles.</p>",name:"roles",type:{names:["Array","String"]}},{description:`<p>Options:</p> 768<ul> 769<li><code>scope</code>: name of the scope to restrict roles to</li> 770<li><code>anyScope</code>: if set, role can be in any scope</li> 771<li><code>onlyScoped</code>: if set, only roles in the specified scope are returned</li> 772<li><code>queryOptions</code>: options which are passed directly through to <code>Meteor.users.find(query, options)</code></li> 773</ul>`,name:"options",optional:!0,type:{names:["Object","String"]}}],returns:[{description:"<p>Cursor of users in roles.</p>",type:{names:["Promise.<Cursor>"]}}],scope:"static",summary:"<p>Retrieve a cursor of all users who are in the target role.</p>"},"Roles.isParentOfAsync":{filepath:"roles/roles_common_async.js",kind:"function",lineno:998,locus:"Anywhere",longname:"Roles.isParentOfAsync",memberof:"Roles",module:"roles",name:"isParentOfAsync",options:[],params:[{description:"<p>The role you want to research.</p>",name:"parentRoleName",type:{names:["String"]}},{description:"<p>The role you expect to be among the children of parentRoleName.</p>",name:"childRoleName",type:{names:["String"]}}],returns:[{description:"<p>True if parent role is ancestor of child role</p>",type:{names:["Promise.<Boolean>"]}}],scope:"static",summary:"<p>Find out if a role is an ancestor of another role.</p>"},"Roles.removeRolesFromParentAsync":{filepath:"roles/roles_common_async.js",kind:"function",lineno:346,locus:"Anywhere",longname:"Roles.removeRolesFromParentAsync",memberof:"Roles",module:"roles",name:"removeRolesFromParentAsync",options:[],params:[{description:"<p>Name(s) of role(s).</p>",name:"rolesNames",type:{names:["Array","String"]}},{description:"<p>Name of parent role.</p>",name:"parentName",type:{names:["String"]}}],returns:[{type:{names:["Promise"]}}],scope:"static",summary:`<p>Remove role parent from roles. 774Other parents are kept (role can have multiple parents). For users which have the 775parent role set, removed subrole is removed automatically.</p>`},"Roles.removeScopeAsync":{filepath:"roles/roles_common_async.js",kind:"function",lineno:984,locus:"Anywhere",longname:"Roles.removeScopeAsync",memberof:"Roles",module:"roles",name:"removeScopeAsync",options:[],params:[{description:"<p>The name of a scope.</p>",name:"name",type:{names:["String"]}}],returns:[{type:{names:["Promise"]}}],scope:"static",summary:"<p>Remove a scope and all its role assignments.</p>"},"Roles.removeUsersFromRolesAsync":{filepath:"roles/roles_common_async.js",kind:"function",lineno:700,locus:"Anywhere",longname:"Roles.removeUsersFromRolesAsync",memberof:"Roles",module:"roles",name:"removeUsersFromRolesAsync",options:[],params:[{description:"<p>User ID(s) or object(s) with an <code>_id</code> field.</p>",name:"users",type:{names:["Array","String"]}},{description:"<p>Name(s) of roles to remove users from. Roles have to exist.</p>",name:"roles",type:{names:["Array","String"]}},{description:`<p>Options:</p> 776<ul> 777<li><code>scope</code>: name of the scope, or <code>null</code> for the global role</li> 778<li><code>anyScope</code>: if set, role can be in any scope (<code>scope</code> option is ignored)</li> 779</ul>`,name:"options",optional:!0,type:{names:["Object","String"]}}],returns:[{type:{names:["Promise"]}}],scope:"static",summary:"<p>Remove users from assigned roles.</p>"},"Roles.renameRoleAsync":{filepath:"roles/roles_common_async.js",kind:"function",lineno:192,locus:"Anywhere",longname:"Roles.renameRoleAsync",memberof:"Roles",module:"roles",name:"renameRoleAsync",options:[],params:[{description:"<p>Old name of a role.</p>",name:"oldName",type:{names:["String"]}},{description:"<p>New name of a role.</p>",name:"newName",type:{names:["String"]}}],returns:[{type:{names:["Promise"]}}],scope:"static",summary:"<p>Rename an existing role.</p>"},"Roles.renameScopeAsync":{filepath:"roles/roles_common_async.js",kind:"function",lineno:954,locus:"Anywhere",longname:"Roles.renameScopeAsync",memberof:"Roles",module:"roles",name:"renameScopeAsync",options:[],params:[{description:"<p>Old name of a scope.</p>",name:"oldName",type:{names:["String"]}},{description:"<p>New name of a scope.</p>",name:"newName",type:{names:["String"]}}],returns:[{type:{names:["Promise"]}}],scope:"static",summary:"<p>Rename a scope.</p>"},"Roles.setUserRolesAsync":{filepath:"roles/roles_common_async.js",kind:"function",lineno:485,locus:"Anywhere",longname:"Roles.setUserRolesAsync",memberof:"Roles",module:"roles",name:"setUserRolesAsync",options:[],params:[{description:"<p>User ID(s) or object(s) with an <code>_id</code> field.</p>",name:"users",type:{names:["Array","String"]}},{description:"<p>Name(s) of roles to add users to. Roles have to exist.</p>",name:"roles",type:{names:["Array","String"]}},{description:`<p>Options:</p> 780<ul> 781<li><code>scope</code>: name of the scope, or <code>null</code> for the global role</li> 782<li><code>anyScope</code>: if <code>true</code>, remove all roles the user has, of any scope, if <code>false</code>, only the one in the same scope</li> 783<li><code>ifExists</code>: if <code>true</code>, do not throw an exception if the role does not exist</li> 784</ul>`,name:"options",optional:!0,type:{names:["Object","String"]}}],returns:[{type:{names:["Promise"]}}],scope:"static",summary:`<p>Set users' roles. 785Replaces all existing roles with a new set of roles.</p>`},"Roles.userIsInRoleAsync":{filepath:"roles/roles_common_async.js",kind:"function",lineno:775,locus:"Anywhere",longname:"Roles.userIsInRoleAsync",memberof:"Roles",module:"roles",name:"userIsInRoleAsync",options:[],params:[{description:"<p>User ID or an actual user object.</p>",name:"user",type:{names:["String","Object"]}},{description:`<p>Name of role or an array of roles to check against. If array, 786will return <code>true</code> if user is in <em>any</em> role. 787Roles do not have to exist.</p>`,name:"roles",type:{names:["Array","String"]}},{description:`<p>Options:</p> 788<ul> 789<li><code>scope</code>: name of the scope; if supplied, limits check to just that scope 790the user's global roles will always be checked whether scope is specified or not</li> 791<li><code>anyScope</code>: if set, role can be in any scope (<code>scope</code> option is ignored)</li> 792</ul> 793<p>Alternatively, it can be a scope name string.</p>`,name:"options",optional:!0,type:{names:["Object","String"]}}],returns:[{description:"<p><code>true</code> if user is in <em>any</em> of the target roles</p>",type:{names:["Promise.<Boolean>"]}}],scope:"static",summary:"<p>Check if user has specified roles.</p>"},"Server~self.options.disconnectGracePeriod":{filepath:"ddp-server/livedata_server.js",kind:"member",lineno:1335,locus:"Server",longname:"Server~self.options.disconnectGracePeriod",memberof:"Server~self.options",module:"ddp-server",n
793ame:"disconnectGracePeriod",scope:"static",summary:`<p>How long we should maintain a session for after a non-graceful disconnect before killing it 794sessions that reconnect within this time will be resumed with minimal performance impact.</p>`,type:{names:["Number"]}},"Server~self.options.maxMessageQueueLength":{filepath:"ddp-server/livedata_server.js",kind:"member",lineno:1328,locus:"Server",longname:"Server~self.options.maxMessageQueueLength",memberof:"Server~self.options",module:"ddp-server",name:"maxMessageQueueLength",scope:"static",summary:"<p>How many messages should we queue during a non-graceful disconnect before we destroy the session, to help prevent memory leaks.</p>",type:{names:["Number"]}},"Session.equals":{filepath:"session/session.js",kind:"function",lineno:43,locus:"Client",longname:"Session.equals",memberof:"Session",module:"session",name:"equals",options:[],params:[{description:"<p>The name of the session variable to test</p>",name:"key",type:{names:["String"]}},{description:`<p>The value to 795test against</p>`,name:"value",type:{names:["String","Number","Boolean","null","undefined"]}}],scope:"static",summary:`<p>Test if a session variable is equal to a value. If inside a 796<a href="#reactivity">reactive computation</a>, invalidate the computation the next 797time the variable changes to or from the value.</p>`},"Session.get":{filepath:"session/session.js",kind:"function",lineno:30,locus:"Client",longname:"Session.get",memberof:"Session",module:"session",name:"get",options:[],params:[{description:"<p>The name of the session variable to return</p>",name:"key",type:{names:["String"]}}],scope:"static",summary:`<p>Get the value of a session variable. If inside a <a href="#reactivity">reactive 798computation</a>, invalidate the computation the next time the 799value of the variable is changed by <a href="#session_set"><code>Session.set</code></a>. This 800returns a clone of the session value, so if it's an object or an array, 801mutating the returned value has no effect on the value stored in the 802session.</p>`},"Session.set":{filepath:"session/session.js",kind:"function",lineno:8,locus:"Client",longname:"Session.set",memberof:"Session",module:"session",name:"set",options:[],params:[{description:"<p>The key to set, eg, <code>selectedItem</code></p>",name:"key",type:{names:["String"]}},{description:"<p>The new value for <code>key</code></p>",name:"value",type:{names:["EJSONable","undefined"]}}],scope:"static",summary:`<p>Set a variable in the session. Notify any listeners that the value 803has changed (eg: redraw templates, and rerun any 804<a href="#tracker_autorun"><code>Tracker.autorun</code></a> computations, that called 805<a href="#session_get"><code>Session.get</code></a> on this <code>key</code>.)</p>`},"Session.setDefault":{filepath:"session/session.js",kind:"function",lineno:20,locus:"Client",longname:"Session.setDefault",memberof:"Session",module:"session",name:"setDefault",options:[],params:[{description:"<p>The key to set, eg, <code>selectedItem</code></p>",name:"key",type:{names:["String"]}},{description:"<p>The new value for <code>key</code></p>",name:"value",type:{names:["EJSONable","undefined"]}}],scope:"static",summary:`<p>Set a variable in the session if it hasn't been set before. 806Otherwise works exactly the same as <a href="#session_set"><code>Session.set</code></a>.</p>`},Subscription:{filepath:"ddp-server/livedata_server.js",instancename:"this",kind:"class",lineno:896,longname:"Subscription",module:"ddp-server",name:"Subscription",options:[],params:[],scope:"global",showinstancename:"true",summary:"<p>The server's side of a subscription</p>"},"Subscription#added":{filepath:"ddp-server/livedata_server.js",kind:"function",lineno:1223,locus:"Server",longname:"Subscription#added",memberof:"Subscription",module:"ddp-server",name:"added",options:[],params:[{description:"<p>The name of the collection that contains the new document.</p>",name:"collection",type:{names:["String"]}},{description:"<p>The new document's ID.</p>",name:"id",type:{names:["String"]}},{description:"<p>The fields in the new document. If <code>_id</code> is present it is ignored.</p>",name:"fields",type:{names:["Object"]}}],scope:"instance",summary:"<p>Call inside the publish function. Informs the subscriber that a document has been added to the record set.</p>"},"Subscription#changed":{filepath:"ddp-server/livedata_server.js",kind:"function",lineno:1249,locus:"Server",longname:"Subscription#changed",memberof:"Subscription",module:"ddp-server",n
806ame:"changed",options:[],params:[{description:"<p>The name of the collection that contains the changed document.</p>",name:"collection",type:{names:["String"]}},{description:"<p>The changed document's ID.</p>",name:"id",type:{names:["String"]}},{description:"<p>The fields in the document that have changed, together with their new values. If a field is not present in <code>fields</code> it was left unchanged; if it is present in <code>fields</code> and has a value of <code>undefined</code> it was removed from the document. If <code>_id</code> is present it is ignored.</p>",name:"fields",type:{names:["Object"]}}],scope:"instance",summary:"<p>Call inside the publish function. Informs the subscriber that a document in the record set has been modified.</p>"},"Subscription#connection":{filepath:"ddp-server/livedata_server.js",kind:"member",lineno:907,locus:"Server",longname:"Subscription#connection",memberof:"Subscription",module:"ddp-server",name:"connection",scope:"instance",summary:'<p>Access inside the publish function. The incoming <a href="#meteor_onconnection">connection</a> for this subscription.</p>'},"Subscription#error":{filepath:"ddp-server/livedata_server.js",kind:"function",lineno:1166,locus:"Server",longname:"Subscription#error",memberof:"Subscription",module:"ddp-server",name:"error",options:[],params:[{description:"<p>The error to pass to the client.</p>",name:"error",type:{names:["Error"]}}],scope:"instance",summary:`<p>Call inside the publish function. Stops this client's subscription, triggering a call on the client to the <code>onStop</code> callback passed to <a href="#meteor_subscribe"><code>Meteor.subscribe</code></a>, if any. If <code>error</code> is not a <a href="#meteor_error"><code>Meteor.Error</code></a>, it will be <a href="#meteor_error">sanitized</a>.</p>`},"Subscription#onStop":{filepath:"ddp-server/livedata_server.js",kind:"function",lineno:1198,locus:"Server",longname:"Subscription#onStop",memberof:"Subscription",module:"ddp-server",name:"onStop",options:[],params:[{description:"<p>The callback function</p>",name:"func",type:{names:["function"]}}],scope:"instance",summary:"<p>Call inside the publish function. Registers a callback function to run when the subscription is stopped.</p>"},"Subscription#ready":{filepath:"ddp-server/livedata_server.js",kind:"function",lineno:1290,locus:"Server",longname:"Subscription#ready",memberof:"Subscription",module:"ddp-server",name:"ready",options:[],params:[],scope:"instance",summary:'<p>Call inside the publish function. Informs the subscriber that an initial, complete snapshot of the record set has been sent. This will trigger a call on the client to the <code>onReady</code> callback passed to <a href="#meteor_subscribe"><code>Meteor.subscribe</code></a>, if any.</p>'},"Subscription#removed":{filepath:"ddp-server/livedata_server.js",kind:"function",lineno:1264,locus:"Server",longname:"Subscription#removed",memberof:"Subscription",module:"ddp-server",name:"removed",options:[],params:[{description:"<p>The name of the collection that the document has been removed from.</p>",name:"collection",type:{names:["String"]}},{description:"<p>The ID of the document that has been removed.</p>",name:"id",type:{names:["String"]}}],scope:"instance",summary:"<p>Call inside the publish function. Informs the subscriber that a document has been removed from the record set.</p>"},"Subscription#stop":{filepath:"ddp-server/livedata_server.js",kind:"function",lineno:1184,locus:"Server",longname:"Subscription#stop",memberof:"Subscription",module:"ddp-server",name:"stop",options:[],params:[],scope:"instance",summary:"<p>Call inside the publish function. Stops this client's subscription and invokes the client's <code>onStop</code> callback with no error.</p>"},"Subscription#userId":{filepath:"ddp-server/livedata_server.js",kind:"member",lineno:949,locus:"Server",longname:"Subscription#userId",memberof:"Subscription",module:"ddp-server",name:"userId",scope:"instance",summary:"<p>Access inside the publish function. The id of the logged-in user, or <code>null</code> if no user is logged in.</p>"},Tracker:{filepath:"tracker/tracker.js",kind:"namespace",lineno:5,longname:"Tracker",module:"tracker",name:"Tracker",scope:"global",summary:"<p>The namespace for Tracker-related methods.</p>"},"Tracker.Computation":{filepath:"tracker/tracker.js",instancename:"computation",kind:"class",lineno:147,longname:"Tracker.Computation",memberof:"Tracker",module:"tracker",name:"Computation",options:[],params:[],scope:"static",summary:`<p>A Computation object represents code that is repeatedly rerun 807in response to 808reactive data changes. Computations don't have return values; they just 809perform actions, such as rerendering a template on the screen. Computations 810are created using Tracker.autorun. Use stop to prevent further rerunning of a 811computation.</p>`},"Tracker.Computation#firstRun":{filepath:"tracker/tracker.js",kind:"member",lineno:179,locus:"Client",longname:"Tracker.Computation#firstRun",memberof:"Tracker.Computation",module:"tracker",name:"firstRun",scope:"instance",summary:"<p>True during the initial run of the computation at the time <code>Tracker.autorun</code> is called, and false on subsequent reruns and at other times.</p>",type:{names:["Boolean"]}},"Tracker.Computation#firstRunPromise":{filepath:"tracker/tracker.js",kind:"member",lineno:199,locus:"Client",longname:"Tracker.Computation#firstRunPromise",memberof:"Tracker.Computation",module:"tracker",name:"firstRunPromise",returns:[{type:{names:["Promise.<unknown>"]}}],scope:"instance",summary:"<p>Forces autorun blocks to be executed in synchronous-looking order by storing the value autorun promise thus making it awaitable.</p>"},"Tracker.Computation#flush":{filepath:"tracker/tracker.js",kind:"function",lineno:372,locus:"Client",longname:"Tracker.Computation#flush",memberof:"Tracker.Computation",module:"tracker",name:"flush",options:[],params:[],scope:"instance",summary:`<p>Process the reactive updates for this computation immediately 812and ensure that the computation is rerun. The computation is rerun only
813if it is invalidated.</p>`},"Tracker.Computation#invalidate":{filepath:"tracker/tracker.js",kind:"function",lineno:280,locus:"Client",longname:"Tracker.Computation#invalidate",memberof:"Tracker.Computation",module:"tracker",name:"invalidate",options:[],params:[],scope:"instance",summary:"<p>Invalidates this computation so that it will be rerun.</p>"},"Tracker.Computation#invalidated":{filepath:"tracker/tracker.js",kind:"member",lineno:167,locus:"Client",longname:"Tracker.Computation#invalidated",memberof:"Tracker.Computation",module:"tracker",name:"invalidated",scope:"instance",summary:"<p>True if this computation has been invalidated (and not yet rerun), or if it has been stopped.</p>",type:{names:["Boolean"]}},"Tracker.Computation#onInvalidate":{filepath:"tracker/tracker.js",kind:"function",lineno:243,locus:"Client",longname:"Tracker.Computation#onInvalidate",memberof:"Tracker.Computation",module:"tracker",name:"onInvalidate",options:[],params:[{description:"<p>Function to be called on invalidation. Receives one argument, the computation that was invali
813dated.</p>",name:"callback",type:{names:["function"]}}],scope:"instance",summary:"<p>Registers <code>callback</code> to run when this computation is next invalidated, or runs it immediately if the computation is already invalidated. The callback is run exactly once and not upon future invalidations unless <code>onInvalidate</code> is called again after the computation becomes valid again.</p>"},"Tracker.Computation#onStop":{filepath:"tracker/tracker.js",kind:"function",lineno:261,locus:"Client",longname:"Tracker.Computation#onStop",memberof:"Tracker.Computation",module:"tracker",name:"onStop",options:[],params:[{description:"<p>Function to be called on stop. Receives one argument, the computation that was stopped.</p>",name:"callback",type:{names:["function"]}}],scope:"instance",summary:"<p>Registers <code>callback</code> to run when this computation is stopped, or runs it immediately if the computation is already stopped. The callback is run after any <code>onInvalidate</code> callbacks.</p>"},"Tracker.Computation#run":{filepath:"tracker/tracker.js",kind:"function",lineno:384,locus:"Client",longname:"Tracker.Computation#run",memberof:"Tracker.Computation",module:"tracker",name:"run",options:[],params:[],scope:"instance",summary:`<p>Causes the function inside this computation to run and 814synchronously process all reactive updtes.</p>`},"Tracker.Computation#stop":{filepath:"tracker/tracker.js",kind:"function",lineno:308,locus:"Client",longname:"Tracker.Computation#stop",memberof:"Tracker.Computation",module:"tracker",name:"stop",options:[],params:[],scope:"instance",summary:"<p>Prevents this computation from rerunning.</p>"},"Tracker.Computation#stopped":{filepath:"tracker/tracker.js",kind:"member",lineno:156,locus:"Client",longname:"Tracker.Computation#stopped",memberof:"Tracker.Computation",module:"tracker",name:"stopped",scope:"instance",summary:"<p>True if this computation has been stopped.</p>"},"Tracker.ComputationFunction":{filepath:"tracker/tracker.js",kind:"typedef",lineno:580,longname:"Tracker.ComputationFunction",memberof:"Tracker",module:"tracker",name:"ComputationFunction",params:[{type:{names:["Tracker.Computation"]}}],scope:"static",type:{names:["function"]}},"Tracker.Dependency":{filepath:"tracker/tracker.js",instancename:"dependency",kind:"class",lineno:402,longname:"Tracker.Dependency",memberof:"Tracker",module:"tracker",name:"Dependency",options:[],params:[],scope:"static",summary:`<p>A Dependency represents an atomic unit of reactive data that a 815computation might depend on. Reactive data sources such as Session or 816Minimongo internally create different Dependency objects for different 817pieces of data, each of which may be depended on by multiple computations. 818When the data changes, the computations are invalidated.</p>`},"Tracker.Dependency#changed":{filepath:"tracker/tracker.js",kind:"function",lineno:448,locus:"Client",longname:"Tracker.Dependency#changed",memberof:"Tracker.Dependency",module:"tracker",name:"changed",options:[],params:[],scope:"instance",summary:"<p>Invalidate all dependent computations immediately and remove them as dependents.</p>"},"Tracker.Dependency#depend":{filepath:"tracker/tracker.js",kind:"function",lineno:424,locus:"Client",longname:"Tracker.Dependency#depend",memberof:"Tracker.Dependency",module:"tracker",name:"depend",options:[],params:[{description:"<p>An optional computation declared to depend on <code>dependency</code> instead of the current computation.</p>",name:"fromComputation",optional:!0,type:{names:["Tracker.Computation"]}}],returns:[{type:{names:["Boolean"]}}],scope:"instance",summary:`<p>Declares that the current computation (or <code>fromComputation</code> if given) depends on <code>dependency</code>. The computation will be invalidated the next time <code>dependency</code> changes.</p> 819<p>If there is no current computation and <code>depend()</code> is called with no arguments, it does nothing and returns false.</p> 820<p>Returns true if the computation is a new dependent of <code>dependency</code> rather than an existing one.</p>`},"Tracker.Dependency#hasDependents":{filepath:"tracker/tracker.js",kind:"function",lineno:460,locus:"Client",longname:"Tracker.Dependency#hasDependents",memberof:"Tracker.Dependency",module:"tracker",name:"hasDependents",options:[],params:[],returns:[{type:{names:["Boolean"]}}],scope:"instance",summary:"<p>True if this Dependency has one or more dependent Computations, which would be invalidated if this Dependency were to change.</p>"},"Tracker.active":{filepath:"tracker/tracker.js",kind:"member",lineno:24,locus:"Client",longname:"Tracker.active",memberof:"Tracker",module:"tracker",name:"active",scope:"static",summary:"<p>True if there is a current computation, meaning that dependencies on reactive data sources will be tracked and potentially cause the current computation to be rerun.</p>",type:{names:["Boolean"]}},"Tracker.afterFlush":{filepath:"tracker/tracker.js",kind:"function",lineno:668,locus:"Client",longname:"Tracker.afterFlush",memberof:"Tracker",module:"tracker",name:"afterFlush",options:[],params:[{description:"<p>A function to call at flush time.</p>",name:"callback",type:{names:["function"]}}],scope:"static",summary:"<p>Schedules a function to be called during the next flush, or later in the current flush if one is in progress, after all invalidated computations have been rerun. The function will be run once and not on subsequent flushes unless <code>afterFlush</code> is called again.</p>"},"Tracker.autorun":{filepath:"tracker/tracker.js",kind:"function",lineno:597,locus:"Client",longname:"Tracker.autorun",memberof:"Tracker",module:"tracker",name:"autorun",options:[{description:`<p>Optional. The function to run when an error 821happens in the Computation. The only argument it receives is the Error 822thrown. Defaults to the error being logged to the console.</p>`,name:"onError",type:{names:["function"]}}],params:[{description:`<p>The function to run. It receives 823one argument: the Computation object that will be returned.</p>`,name:"runFunc",type:{names:["Tracker.ComputationFunction"]}},{name:"options",optional:!0,type:{names:["Object"]}}],returns:[{type:{names:["Tracker.Computation"]}}],scope:"static",summary:`<p>Run a function now and rerun it later whenever its dependencies 824change. Returns a Computation object that can be used to stop or observe the 825rerunning.</p>`},"Tracker.currentComputation":{filepath:"tracker/tracker.js",kind:"member",lineno:33,locus:"Client",longname:"Tracker.currentComputation",memberof:"Tracker",module:"tracker",name:"currentComputation",scope:"static",summary:`<p>The current computation, or <code>null</code> if there isn't one. The current computation is the <a href="#tracker_computation"><code>Tracker.Computation</code></a> object created by the innermost active call to <code>Tracker.autorun</code>, and it's the computation that gains dependencies when reactive data sources are accessed.</p>`,type:{names:["Tracker.Computation"]}},"Tracker.flush":{filepath:"tracker/tracker.js",kind:"function",lineno:473,locus:"Client",longname:"Tracker.flush",memberof:"Tracker",module:"tracker",name:"flush",options:[],params:[],scope:"static",summary:"<p>Process all reactive updates immediately and ensure that all invalidated computations are rerun.</p>"},"Tracker.inFlush":{filepath:"tracker/tracker.js",kind:"function",lineno:483,locus:"Client",longname:"Tracker.inFlush",memberof:"Tracker",module:"tracker",name:"inFlush",options:[],params:[],returns:[{type:{names:["Boolean"]}}],scope:"static",summary:"<p>True if we are computing a computation now, either first time or recompute. This matches Tracker.active unless we are inside Tracker.nonreactive, which nullfies currentComputation even though an enclosing computation may still be running.</p>"},"Tracker.nonreactive":{filepath:"tracker/tracker.js",kind:"function",lineno:624,locus:"Client",longname:"Tracker.nonreactive",memberof:"Tracker",module:"tracker",name:"nonreactive",options:[],params:[{description:"<p>A function to call immediately.</p>",name:"func",type:{names:["function"]}}],scope:"static",summary:"<p>Run a function without tracking dependencies.</p>"},"Tracker.onInvalidate":{filepath:"tracker/tracker.js",kind:"function",lineno:654,locus:"Client",longname:"Tracker.onInvalidate",memberof:"Tracker",module:"tracker",name:"onInvalidate",options:[],params:[{description:"<p>A callback function that will be invoked as <code>func(c)</code>, where <code>c</code> is the computation on which the callback is registered.</p>",name:"callback",type:{names:["function"]}}],scope:"static",summary:'<p>Registers a new <a href="#computation_oninvalidate"><code>onInvalidate</code></a> callback on the current computation (which must exist), to be called immediately when the current computation is invali
825dated or stopped.</p>'},"Tracker.withComputation":{filepath:"tracker/tracker.js",kind:"function",lineno:633,longname:"Tracker.withComputation",memberof:"Tracker",module:"tracker",name:"withComputation",options:[],params:[{description:"<p>Computation that tracked</p>",name:"computation"},{description:"<p>async function that needs to be called and be reactive</p>",name:"func"}],scope:"static",summary:"<p>Helper function to make the tracker work with promises.</p>"},"WebApp.addHtmlAttributeHook":{filepath:"webapp/webapp_server.js",kind:"function",lineno:240,locus:"Server",longname:"WebApp.addHtmlAttributeHook",memberof:"WebApp",module:"webapp",name:"addHtmlAttributeHook",options:[],params:[{description:`<p>A callback that receives information about the request 826for app HTML and returns an object of HTML attribute names and values, or 827<code>null</code> to add no attributes for that request.</p>`,name:"hook",type:{names:["function"]}}],scope:"static",summary:`<p>Registers a callback that runs whenever Meteor generates app HTML. 828Attributes returned by all registered callbacks are merged onto the 829<code><html></code> element. If callbacks return the same attribute, the callback 830registered last takes precedence.</p>`},"WebApp.addRuntimeConfigHook":{filepath:"webapp/webapp_server.js",kind:"function",lineno:453,locus:"Server",longname:"WebApp.addRuntimeConfigHook",memberof:"WebApp",module:"webapp",name:"addRuntimeConfigHook",options:[],params:[{description:"<p>See <code>addRuntimeConfigHookCallback</code> description.</p>",name:"callback",type:{names:["addRuntimeConfigHookCallback"]}}],returns:[{description:`<p>{{ stop: function, callback: function }} 831Call the returned <code>stop()</code> to stop getting callbacks. 832The passed in <code>callback</code> is returned also.</p>`,type:{names:["Object"]}}],scope:"static",summary:`<p>Hook that calls back when the meteor runtime configuration, 833<code>__meteor_runtime_config__</code> is being sent to any client.</p> 834<p><strong>returns</strong>: <small><em>Object</em></small> <code>{ stop: function, callback: function }</code></p> 835<ul> 836<li><code>stop</code> <small><em>Function</em></small> Call <code>stop()</code> to stop getting callbacks.</li> 837<li><code>callback</code> <small><em>Function</em></small> The passed in <code>callback</code>.</li> 838</ul>`},"WebApp.addUpdatedNotifyHook":{filepath:"webapp/webapp_server.js",kind:"function",lineno:609,locus:"Server",longname:"WebApp.addUpdatedNotifyHook",memberof:"WebApp",module:"webapp",name:"addUpdatedNotifyHook",options:[],params:[{description:`<p>The <code>handler</code> is called on every change to an <code>arch</code> runtime configuration. 839See <code>addUpdatedNotifyHookCallback</code>.</p>`,name:"handler",type:{names:["addUpdatedNotifyHookCallback"]}}],returns:[{description:"<p>{{ stop: function, callback: function }}</p>",type:{names:["Object"]}}],scope:"static",summary:`<p>Hook that runs when the meteor runtime configuration 840is updated. Typically the configuration only changes during development mode.</p>`},"WebApp.decodeRuntimeConfig":{filepath:"webapp/webapp_server.js",kind:"function",lineno:384,locus:"Server",longname:"WebApp.decodeRuntimeConfig",memberof:"WebApp",module:"webapp",name:"decodeRuntimeConfig",options:[],params:[{name:"rtimeConfigStr
840ing",type:{names:["String"]}}],returns:[{type:{names:["Object"]}}],scope:"static",summary:`<p>Takes an encoded runtime string and returns 841a runtime configuration object.</p>`},"WebApp.encodeRuntimeConfig":{filepath:"webapp/webapp_server.js",kind:"function",lineno:373,locus:"Server",longname:"WebApp.encodeRuntimeConfig",memberof:"WebApp",module:"webapp",name:"encodeRuntimeConfig",options:[],params:[{name:"rtimeConfig",type:{names:["Object"]}}],returns:[{type:{names:["String"]}}],scope:"static",summary:`<p>Takes a runtime configuration object and 842returns an encoded runtime string.</p>`},"WebApp.handlers":{filepath:"webapp/webapp_server.js",kind:"function",lineno:1268,locus:"Server",longname:"WebApp.handlers",memberof:"WebApp",module:"webapp",name:"handlers",options:[],params:[{description:`<p>This handler will only be called on paths that match 843this string. The match has to border on a <code>/</code> or a <code>.</code>.</p> 844<p>For example, <code>/hello</code> will match <code>/hello/world</code> and 845<code>/hello.world</code>, but not <code>/hello_world</code>.</p>`,name:"path",optional:!0,type:{names:["String"]}},{description:`<p>A handler function that will be called on HTTP requests. 846See <code>expressHandlersCallback</code></p>`,name:"handler",type:{names:["expressHandlersCallback"]}}],scope:"static",summary:"<p>Register a handler for all HTTP requests.</p>"},"addRuntimeConfigHookCallback(options)":{isprototype:"true",kind:"member",locus:"Server",longname:"addRuntimeConfigHookCallback(options)",name:"addRuntimeConfigHookCallback",params:[{name:"options",type:{names:["Object"]}},{description:`<p>The architecture of the client 847requesting a new runtime configuration. This can be one of 848<code>web.browser</code>, <code>web.browser.legacy</code> or <code>web.cordova</code>.</p>`,name:"options.arch",type:{names:["String"]}},{description:`<p>A NodeJs <a href="https://nodejs.org/api/http.html#http_class_http_incomingmessage">IncomingMessage</a> 849https://nodejs.org/api/http.html#http_class_http_incomingmessage 850<code>Object</code> that can be used to get information about the incoming request.</p>`,name:"options.request",type:{names:["Object"]}},{description:`<p>The current configuration object 851encoded as a string for inclusion in the root html.</p>`,name:"options.encodedCurrentConfig",type:{names:["String"]}},{description:`<p><code>true</code> if the config for this architecture 852has been updated since last called, otherwise <code>false</code>. This flag can be used 853to cache the decoding/encoding for each architecture.</p>`,name:"options.updated",type:{names:["Boolean"]}}],scope:"global",summary:`<p>Callback for <code>addRuntimeConfigHook</code>.</p> 854<p>If the handler returns a <em>falsy</em> value the hook will not 855modify the runtime configuration.</p> 856<p>If the handler returns a <em>String</em> the hook will substitute 857the string for the encoded configuration string.</p> 858<p><strong>Warning:</strong> the hook does not check the return value at all it is 859the responsibility of the caller to get the formatting correct using 860the helper functions.</p> 861<p><code>addRuntimeConfigHookCallback</code> takes only one <code>Object</code> argument 862with the following fields:</p>`,variation:"options"},"addUpdatedNotifyHookCallback(options)":{isprototype:"true",kind:"member",locus:"Server",longname:"addUpdatedNotifyHookCallback(options)",name:"addUpdatedNotifyHookCallback",params:[{name:"options",type:{names:["Object"]}},{description:`<p>The architecture that is being updated. 863This can be one of <code>web.browser</code>, <code>web.browser.legacy</code> or <code>web.cordova</code>.</p>`,name:"options.arch",type:{names:["String"]}},{description:`<p>The new updated manifest object for 864this <code>arch</code>.</p>`,name:"options.manifest",type:{names:["Object"]}},{description:`<p>The new updated configuration 865object for this <code>arch</code>.</p>`,name:"options.runtimeConfig",type:{names:["Object"]}}],scope:"global",summary:"<p>callback handler for <code>addupdatedNotifyHook</code></p>",variation:"options"},check:{filepath:"check/match.js",kind:"function",lineno:38,locus:"Anywhere",longname:"check",module:"check",name:"check",options:[{defaultvalue:!1,description:"<p>If true, throw all errors</p>",name:"throwAllErrors",optional:!0,type:{names:["Boolean"]}}],params:[{description:"<p>The value to check</p>",name:"value",type:{names:["Any"]}},{description:"<p>The pattern to match <code>value</code> against</p>",name:"pattern",type:{names:["MatchPattern"]}},{defaultvalue:"{}",description:"<p>Additional options for check</p>",name:"options",optional:!0,type:{names:["Object"]}}],scope:"global",summary:`<p>Check that a value matches a <a href="#matchpatterns">pattern</a>. 866If the value does not match the pattern, throw a <code>Match.Error</code>. 867By default, it will throw immediately at the first error encountered. Pass in { throwAllErrors: true } to throw all errors.</p> 868<p>Particularly useful to assert that arguments to a function have the right 869types and structure.</p>`},createAuthFetch:{filepath:"accounts-express/fetch_server.js",kind:"function",lineno:25,locus:"Server",longname:"createAuthFetch",module:"accounts-express",name:"createAuthFetch",options:[],params:[{description:"<p>The base Meteor.fetch to wrap</p>",name:"originalFetch",type:{names:["function"]}}],returns:[{description:"<p>Enhanced fetch function with auth support</p>",type:{names:["function"]}}],scope:"global",summary:`<p>Wraps Meteor.fetch with opt-in authentication. Auth is off by 870default; pass <code>auth: true</code> to attach the login token from the current 871endpoint invocation context (same-origin only), or <code>token: '...'</code> to 872supply an explicit token. Passing <code>token</code> is itself an opt-in: it
873implies <code>auth: true</code> unless <code>auth: false</code> is also set. For an 874auth-on-by-default ergonomic, import <code>fetch</code> from <code>meteor/accounts-express</code>.</p>`},createAuthMiddleware:{filepath:"accounts-express/server_main.js",kind:"function",lineno:18,locus:"Server",longname:"createAuthMiddleware",module:"accounts-express",name:"createAuthMiddleware",options:[{defaultvalue:!1,description:`<p>Whether authentication is 875required (returns 401 for unauthenticated) or optional (sets userId 876to null).</p>`,name:"required",optional:!0,type:{names:["boolean"]}}],params:[{name:"options",optional:!0,type:{names:["Object"]}}],returns:[{description:"<p>Express middleware function</p>",type:{names:["function"]}}],scope:"global",summary:`<p>Create Express middleware that authenticates requests using 877Meteor login tokens. Tokens can be provided via the Authorization 878Bearer header or the meteor_login_token cookie.</p>`},currentUser:{filepath:"accounts-base/accounts_client.js",ishelper:"true",kind:"member",lineno:1010,longname:"currentUser",module:"accounts-base",name:"currentUser",scope:"global",summary:'<p>Calls <a href="#meteor_user">Meteor.user()</a>. Use <code>{{#if currentUser}}</code> to check whether the user is logged in.</p>'},"expressHandlersCallback(req, res, next)":{isprototype:"true",kind:"member",locus:"Server",longname:"expressHandlersCallback(req, res, next)",memberof:"expressHandlersCallback(req, res",name:" next)",params:[{description:`<p>a Node.js 879<a href="https://nodejs.org/api/http.html#class-httpincomingmessage">IncomingMessage</a> 880object with some extra properties. This argument can be used 881to get information about the incoming request.</p>`,name:"req",type:{names:["Object"]}},{description:`<p>a Node.js 882<a href="https://nodejs.org/api/http.html#class-httpserverresponse">ServerResponse</a> 883object. Use this to write data that should be sent in response to the 884request, and call <code>res.end()</code> when you are done.</p>`,name:"res",type:{names:["Object"]}},{description:`<p>Calling this function will pass on the handling of 885this request to the next relevant handler.</p>`,name:"next",type:{names:["function"]}}],scope:"global",summary:"<p>callback handler for <code>WebApp.expressHandlers</code></p>"},fetch:{filepath:"accounts-express/fetch_authed.js",kind:"function",lineno:12,locus:"Anywhere",longname:"fetch",module:"accounts-express",name:"fetch",options:[],params:[{name:"url",type:{names:["string","Request"]}},{name:"options",optional:!0,type:{names:["Object"]}}],returns:[{type:{names:["Promise.<Response>"]}}],scope:"global",summary:`<p>Auth-on-by-default fetch. Thin wrapper around Meteor.fetch that 886sets <code>auth: true</code> unless overridden. Pass <code>auth: false</code> to opt out, or 887<code>token: '...'</code> (server only) to use an explicit token.</p>`},getPublicationStrategy:{alias:"getPublicationStrategy",filepath:"ddp-server/livedata_server.js",importfrompackage:"meteor",kind:"function",lineno:1460,locus:"Server",longname:"getPublicationStrategy",memberof:"Meteor.server",module:"meteor",name:"getPublicationStrategy",options:[],params:[{name:"collectionName",type:{names:["String"]}}],returns:[{type:{names:["Object"]}}],summary:"<p>Gets the publication strategy for the requested collection. You call this method from <code>Meteor.server</code>, like <code>Meteor.server.getPublicationStrategy()</code></p>"},handleFetch:{filepath:"accounts-express/server_main.js",kind:"function",lineno:43,locus:"Server",longname:"handleFetch",module:"accounts-express",name:"handleFetch",options:[],params:[{name:"url",type:{names:["string","Request"]}},{name:"options",optional:!0,type:{names:["Object"]}},{description:"<p>The underlying fetch implementation</p>",name:"rawFetch",type:{names:["function"]}}],returns:[{description:"<p>Response if handled, null to fall through</p>",type:{names:["Promise.<Response>","null"]}}],scope:"global",summary:`<p>Handle fetch calls from the meteor/fetch package when auth 888options are present. Falls back to rawFetch when no auth is needed. 889The auth path intentionally dispatches through Meteor.fetch (which 890has its own bound rawFetch) and ignores the passed rawFetch.</p>`},loggingIn:{filepath:"accounts-base/accounts_client.js",ishelper:"true",kind:"member",lineno:1023,longname:"loggingIn",module:"accounts-base",name:"loggingIn",scope:"global",summary:'<p>Calls <a href="#meteor_loggingin">Meteor.loggingIn()</a>.</p>'},loggingInOrOut:{filepath:"accounts-base/accounts_client.js",ishelper:"true",kind:"member",lineno:1039,longname:"loggingInOrOut",module:"accounts-base",name:"loggingInOrOut",scope:"global",summary:'<p>Calls <a href="#meteor_loggingin">Meteor.loggingIn()</a> or <a href="#meteor_loggingout">Meteor.loggingOut()</a>.</p>'},loggingOut:{filepath:"accounts-base/accounts_client.js",ishelper:"true",kind:"member",lineno:1031,longname:"loggingOut",module:"accounts-base",name:"loggingOut",scope:"global",summary:'<p>Calls <a href="#meteor_loggingout">Meteor.loggingOut()</a>.</p>'},main:{filepath:"webapp/webapp_server.js",kind:"member",lineno:1488,locus:"Server",longname:"main",module:"webapp",name:"main",scope:"global",summary:`<p>Starts the HTTP server. 891If <code>UNIX_SOCKET_PATH</code> is present Meteor's HTTP server will use that socket file for inter-process communication, instead of TCP.
892If you choose to not include webapp package in your application this method still must be defined for your Meteor application to work.</p>`},"module.hot":{filepath:"hot-module-replacement/hot-api.js",kind:"member",lineno:3,longname:"module.hot",memberof:"module",module:"hot-module-replacement",name:"hot",scope:"static",summary:"<p>The Hot API used to configure HMR</p>"},"module.hot#accept":{filepath:"hot-module-replacement/hot-api.js",kind:"member",lineno:24,locus:"Client",longname:"module.hot#accept",memberof:"module.hot",module:"hot-module-replacement",name:"accept",scope:"instance",summary:`<p>Accept updates to this module. Also applies to its dependencies, 893as long as the other modules that import the dependencies also accept 894updates.</p>`},"module.hot#data":{filepath:"hot-module-replacement/hot-api.js",kind:"member",lineno:86,locus:"Client",longname:"module.hot#data",memberof:"module.hot",module:"hot-module-replacement",name:"data",scope:"instance",summary:`<p>Defaults to null. When the module is replaced, 895this is set to the object passed to dispose handlers.</p>`},"module.hot#decline":{filepath:"hot-module-replacement/hot-api.js",kind:"member",lineno:44,locus:"Client",longname:"module.hot#decline",memberof:"module.hot",module:"hot-module-replacement",name:"decline",scope:"instance",summary:`<p>Disable updating this module or its dependencies with HMR. 896Hot code push will be used instead. Can not be overridden by calling 897module.hot.accept later.</p>`},"module.hot#dispose":{filepath:"hot-module-replacement/hot-api.js",kind:"member",lineno:60,locus:"Client",longname:"module.hot#dispose",memberof:"module.hot",module:"hot-module-replacement",name:"dispose",params:[{description:"<p>Called before replacing the old module.</p>",name:"callback",type:{names:["module.hot.DisposeFunction"]}}],scope:"instance",summary:"<p>Add a call back to clean up the module before replacing it</p>"},"module.hot#onRequire":{filepath:"hot-module-replacement/hot-api.js",kind:"member",lineno:71,locus:"Client",longname:"module.hot#onRequire",memberof:"module.hot",module:"hot-module-replacement",name:"onRequire",params:[{description:`<p>Can have before and after methods, called before a module is required, 898and after it finished being evaluated</p>`,name:"callbacks",type:{names:["Object"]}}],scope:"instance",summary:"<p>Add callbacks to run before and after a module is required</p>"},setPublicationStrategy:{alias:"setPublicationStrategy",filepath:"ddp-server/livedata_server.js",importfrompackage:"meteor",kind:"function",lineno:1443,locus:"Server",longname:"setPublicationStrategy",memberof:"Meteor.server",module:"meteor",name:"setPublicationStrategy",options:[],params:[{name:"collectionName",type:{names:["String"]}},{name:"strategy",type:{names:["Object"]}}],summary:"<p>Set publication strategy for the given collection. Publications strategies are available from <code>DDPServer.publicationStrategies</code>. You call this method from <code>Meteor.server</code>, like <code>Meteor.server.setPublicationStrategy()</code></p>"}},Wi=["id"],Gi=["href","aria-label"],zi=["innerHTML"],Yi=g({__name:"ApiBox",props:{name:{type:String,required:!0},hasCustomExample:{type:Boolean,default:!1},instanceName:{type:String,default:"this"},from:{type:String,default:""},isDefaultImport:{type:Boolean,default:!1}},setup(a){var S,b,_;const e=a;function n(w){if(!Le[w]){const{page:E}=ye();throw new Error(` 899 jsdoc key: "${w}" not found. 900 Refer to data/data.js for available keys. 901 Error come from ${E.value.filePath} 902 `)}return Le[w]}const o=n(e.name);e.from&&(o.module=e.from);const t=o.longname.replace(".","-").replace("#","-"),l=((b=(S=o.type)==null?void 0:S.names)==null?void 0:b.at(0))==="Boolean";let i=o.kind==="function"||((_=o==null?void 0:o.params)==null?void 0:_.length)>0;const p=o.kind==="class"?(i=!1,!0):!1,d=o.scope==="instance",v=w=>d?w.replace(/.*#/,`${e.instanceName}.`):o.ishelper?`{{ ${w} }}`:w;if(i)for(const w of o.params)w.type||(w.type={names:[w.name]});const y={lineNumber:o.lineno,filePath:o.filepath};return(w,E)=>(s(),m("div",null,[r("h2",{id:c(t)},[r("a",{class:"header-anchor",href:"#"+c(t),"aria-label":'Permalink to "'+c(o).longname+'"'},"â",8,Gi),R(" "+M(v(c(o).longname))+" ",1),c(o).locus&&c(o).locus!=="Anywhere"?(s(),A(Ei,{key:0,locus:c(o).locus},null,8,["locus"])):f("",!0)],8,Wi),E[0]||(E[0]=r("h4",null," Summary: ",-1)),r("div",{innerHTML:c(o).summary},null,8,zi),u(w.$slots,"default",{},void 0,!0),c(i)||c(p)?(s(),A(Ji,{key:0,params:c(o).params,options:c(o).options,from:y},null,8,["params","options"])):f("",!0),a.hasCustomExample?f("",!0):(s(),m(O,{key:1},[l?(s(),A(ai,{key:0,memberof:c(o).memberof,from:c(o).module,"is-default-import":a.isDefaultImport,longname:c(o).longname},null,8,["memberof","from","is-default-import","longname"])):f("",!0),c(i)?(s(),A(Pi,{key:1,from:c(o).module,"is-default-import":a.isDefaultImport,longname:c(o).longname,params:c(o).params,fnName:c(o).name,memberof:d?a.instanceName:c(o).memberof,scope:c(o).scope,returns:c(o).returns},null,8,["from","is-default-import","longname","params","fnName","memberof","scope","returns"])):f("",!0),c(p)?(s(),A(yi,{key:2,params:c(o).params,from:c(o).module,"is-default-import":a.isDefaultImport,longname:c(o).longname},null,8,["params","from","is-default-import","longname"])):f("",!0)],64))]))}}),Xi=C(Yi,[["__scopeId","data-v-cea510a3"]]),Ki=["Accounts","Accounts","Accounts.addEmailAsync","Accounts.buildEmailUrl","Accounts.changePassword","Accounts.createUser","Accounts.createUserAsync","Accounts.createUserVerifyingEmail","Accounts.disableUser2fa","Accounts.emailTemplates","Accounts.emailTemplates","Accounts.enableUser2fa","Accounts.findUserByEmail","Accounts.findUserByUsern
902ame","Accounts.forgotPassword","Accounts.generate2faActivationQrCode","Accounts.generateResetToken","Accounts.generateVerificationToken","Accounts.has2faEnabled","Accounts.onEmailVerificationLink","Accounts.onEnrollmentLink","Accounts.onResetPasswordLink","Accounts.removeEmail","Accounts.replaceEmailAsync","Accounts.requestLoginTokenForUser","Accounts.resetPassword","Accounts.sendEnrollmentEmail","Accounts.sendLoginTokenEmail","Accounts.sendResetPasswordEmail","Accounts.sendVerificationEmail","Accounts.setPasswordAsync","Accounts.setUsername","Accounts.ui","Accounts.ui.config","Accounts.urls","Accounts.verifyEmail","AccountsClient","AccountsClient#_registerLinkCallback","AccountsClient#applyLoginFunction","AccountsClient#callLoginFunction","AccountsClient#config","AccountsClient#loggingIn","AccountsClient#loggingOut","AccountsClient#logout","AccountsClient#logoutAllClients","AccountsClient#logoutOtherClients","AccountsClient#onLogin","AccountsClient#onLoginFailure","AccountsClient#onLogout","AccountsClient#registerClientLoginFunction","AccountsClient#user","AccountsClient#userAsync","AccountsClient#userId","AccountsCommon","AccountsCommon#config","AccountsCommon#onLogin","AccountsCommon#onLoginFailure","AccountsCommon#onLogout","AccountsCommon#user","AccountsCommon#userAsync","AccountsCommon#userId","AccountsServer","AccountsServer#addDefaultRateLimit","AccountsServer#beforeExternalLogin","AccountsServer#config","AccountsServer#generateOptionsForEmail","AccountsServer#onCreateLoginToken","AccountsServer#onCreateUser","AccountsServer#onExternalLogin","AccountsServer#onLogin","AccountsServer#onLoginFailure","AccountsServer#onLogout","AccountsServer#registerLoginHandler","AccountsServer#removeDefaultRateLimit","AccountsServer#setAdditionalFindUserOnExternalLogin","AccountsServer#user","AccountsServer#userAsync","AccountsServer#userId","AccountsServer#validateLoginAttempt","AccountsServer#validateNewUser","App","App.accessRule","App.addResourceFile","App.appendToConfig","App.configurePlugin","App.icons","App.info","App.launchScreens","App.setPreference","App.settings","Assets","Assets.absoluteFilePath","Assets.getBinaryAsync","Assets.getTextAsync","CompileStep","CompileStep#addAsset","CompileStep#addHtml","CompileStep#addJavaScript","CompileStep#addStylesheet","CompileStep#arch","CompileStep#declaredExports","CompileStep#error","CompileStep#fileOptions","CompileStep#fullInputPath","CompileStep#inputPath","CompileStep#inputSize","CompileStep#packageName","CompileStep#pathForSourceMap","CompileStep#read","CompileStep#rootOutputPath","Cordova","DDP","DDP.connect","DDP.onReconnect","DDPCommon","DDPCommon.MethodInvocation","DDPCommon.MethodInvocation#connection","DDPCommon.MethodInvocation#isSimulation","DDPCommon.MethodInvocation#name","DDPCommon.MethodInvocation#setUserId","DDPCommon.MethodInvocation#unblock","DDPCommon.MethodInvocation#userId","DDPRateLimiter.addRule","DDPRateLimiter.removeRule","DDPRateLimiter.setErrorMessage","DDPRateLimiter.setErrorMessageOnRule","DocumentProcessors#_process_added","DocumentProcessors#_process_changed","DocumentProcessors#_process_ready","DocumentProcessors#_process_removed","DocumentProcessors#_process_updated","EJSON","EJSON.CustomType","EJSON.CustomType#clone","EJSON.CustomType#equals","EJSON.CustomType#toJSONValue","EJSON.CustomType#typeName","EJSON.addType","EJSON.clone","EJSON.equals","EJSON.fromJSONValue","EJSON.isBinary","EJSON.newBinary","EJSON.parse","EJSON.stringify","EJSON.toJSONValue","Email.customTransport","Email.hookSend","Email.send","Email.sendAsync","HTTP.call","HTTP.del","HTTP.get","HTTP.patch","HTTP.post","HTTP.put","InputFile#addAsset","InputFile#addHtml","InputFile#addJavaScript","InputFile#addStylesheet","InputFile#error","InputFile#getArch","InputFile#getBasename","InputFile#getContentsAsBuffer","InputFile#getContentsAsString","InputFile#getDeclaredExports","InputFile#getDirname","InputFile#getDisplayPath","InputFile#getExtension","InputFile#getFileOptions","InputFile#getPackageName","InputFile#getPathInBundle","InputFile#getPathInPackage","InputFile#getSourceHash","InputFile#getSourceMap","IterationCallback","Match","Match.test","MessageProcessors#_livedata_connected","MessageProcessors#_livedata_data","MessageProcessors#_livedata_error","MessageProcessors#_livedata_nosub","MessageProcessors#_livedata_result","Meteor","Meteor.EnvironmentVariable","Meteor.EnvironmentVariable.get","Meteor.EnvironmentVariable.withValue","Meteor.EnvironmentVariableAsync","Meteor.Error","Meteor.absoluteUrl","Meteor.apply","Meteor.applyAsync","Meteor.bindEnvironment","Meteor.call","Meteor.callAsync","Meteor.clearInterval","Meteor.clearTimeout","Meteor.defer","Meteor.deferDev","Meteor.deferProd","Meteor.deferrable","Meteor.disconnect","Meteor.fetch","Meteor.gitCommitHash","Meteor.isAppTest","Meteor.isAsyncCall","Meteor.isAsyncCall","Meteor.isClient","Meteor.isCordova","Meteor.isCordova","Meteor.isDevelopment","Meteor.isFibersDisabled","Meteor.isModern","Meteor.isPackageTest","Meteor.isProduction","Meteor.isServer","Meteor.isTest","Meteor.loggingIn","Meteor.loggingOut","Meteor.loginWith<ExternalService>","Meteor.loginWithPassword","Meteor.loginWithPasswordAnd2faCode","Meteor.loginWithPasswordAsync","Meteor.loginWithToken","Meteor.loginWithTokenAsync","Meteor.logout","Meteor.logoutAllClients","Meteor.logoutAllClientsAsync","Meteor.logoutAsync","Meteor.logoutOtherClients","Meteor.logoutOtherClientsAsync","Meteor.methods","Meteor.onConnection","Meteor.onMessage","Meteor.passwordlessLoginWithToken","Meteor.passwordlessLoginWithTokenAnd2faCode","Meteor.promisify","Meteor.publish","Meteor.re
902connect","Meteor.release","Meteor.setInterval","Meteor.setTimeout","Meteor.settings","Meteor.startup","Meteor.status","Meteor.subscribe","Meteor.user","Meteor.userAsync","Meteor.userId","Meteor.users","Meteor.users","Meteor.wrapAsync","ModernBrowsers.calculateHashOfMinimumVersions","ModernBrowsers.getMinimumBrowserVersions","ModernBrowsers.isModern","ModernBrowsers.setMinimumBrowserVersions","Mongo","Mongo.Collection","Mongo.Collection#allow","Mongo.Collection#countDocuments","Mongo.Collection#createIndex","Mongo.Collection#createIndexAsync","Mongo.Collection#createIndexAsync","Mongo.Collection#deny","Mongo.Collection#ensureIndexAsync","Mongo.Collection#estimatedDocumentCount","Mongo.Collection#find","Mongo.Collection#findOne","Mongo.Collection#findOneAsync","Mongo.Collection#findOneAsync","Mongo.Collection#insert","Mongo.Collection#insert","Mongo.Collection#insertAsync","Mongo.Collection#rawCollection","Mongo.Collection#rawDatabase","Mongo.Collection#remove","Mongo.Collection#remove","Mongo.Collection#removeAsync","Mongo.Collection#update","Mongo.Collection#update","Mongo.Collection#updateAsync","Mongo.Collection#upsert","Mongo.Collection#upsert","Mongo.Collection#upsertAsync","Mongo.Collection.addExtension","Mongo.Collection.addPrototypeMethod","Mongo.Collection.addStaticMethod","Mongo.Collection.clearExtensions","Mongo.Collection.getExtensions","Mongo.Collection.getPrototypeMethods","Mongo.Collection.getStaticMethods","Mongo.Collection.removeExtension","Mongo.Collection.removePrototypeMethod","Mongo.Collection.removeStaticMethod","Mongo.CollectionExtensions","Mongo.Cursor","Mongo.Cursor#count","Mongo.Cursor#countAsync","Mongo.Cursor#fetch","Mongo.Cursor#fetchAsync","Mongo.Cursor#forEach","Mongo.Cursor#forEachAsync","Mongo.Cursor#forEachAsync","Mongo.Cursor#map","Mongo.Cursor#mapAsync","Mongo.Cursor#mapAsync","Mongo.Cursor#observe","Mongo.Cursor#observeAsync","Mongo.Cursor#observeChanges","Mongo.Cursor#observeChangesAsync","Mongo.ObjectID","Mongo._collections","Mongo.getCollection","Npm","Npm.require","Package","PackageAPI","PackageAPI#addAssets","PackageAPI#addFiles","PackageAPI#export","PackageAPI#imply","PackageAPI#use","PackageAPI#versionsFrom","PackageCordova","PackageCordova#depends","PackageNamespace","PackageNamespace#describe","PackageNamespace#onTest","PackageNamespace#onUse","PackageNamespace#registerBuildPlugin","PackageNpm","PackageNpm#depends","PackageNpm#devDepends","Plugin","Plugin.registerCompiler","Plugin.registerLinter","Plugin.registerMinifier","Plugin.registerSourceHandler","Random.choice","Random.fraction","Random.fraction","Random.fraction","Random.fraction","Random.hexString","Random.hexString","Random.id","Random.secret","ReactiveDict","ReactiveDict#all","ReactiveDict#clear","ReactiveDict#delete","ReactiveDict#destroy","ReactiveDict#equals","ReactiveDict#get","ReactiveDict#set","ReactiveDict#setDefault","ReactiveVar","ReactiveVar#get","ReactiveVar#set","Roles","Roles.addRolesToParentAsync","Roles.addUsersToRolesAsync","Roles.createRoleAsync","Roles.deleteRoleAsync","Roles.getAllRoles","Roles.getRolesForUserAsync","Roles.getScopesForUserAsync","Roles.getUserAssignmentsForRole","Roles.getUserIdsInRoleAsync","Roles.getUsersInRoleAsync","Roles.isParentOfAsync","Roles.removeRolesFromParentAsync","Roles.removeScopeAsync","Roles.removeUsersFromRolesAsync","Roles.renameRoleAsync","Roles.renameScopeAsync","Roles.setUserRolesAsync","Roles.userIsInRoleAsync","Server~self.options.disconnectGracePeriod","Server~self.options.maxMessageQueueLength","Session.equals","Session.get","Session.set","Session.setDefault","Subscription","Subscription#added","Subscription#changed","Subscription#connection","Subscription#error","Subscription#onStop","Subscription#ready","Subscription#removed","Subscription#stop","Subscription#userId","Tracker","Tracker.Computation","Tracker.Computation#firstRun","Tracker.Computation#firstRunPromise","Tracker.Computation#flush","Tracker.Computation#invalidate","Tracker.Computation#invalidated","Tracker.Computation#onInvalidate","Tracker.Computation#onStop","Tracker.Computation#run","Tracker.Computation#stop","Tracker.Computation#stopped","Tracker.ComputationFunction","Tracker.Dependency","Tracker.Dependency#changed","Tracker.Dependency#depend","Tracker.Dependency#hasDependents","Tracker.active","Tracker.afterFlush","Tracker.autorun","Tracker.currentComputation","Tracker.flush","Tracker.inFlush","Tracker.nonreactive","Tracker.onInvalidate","Tracker.withComputation","WebApp.addHtmlAttributeHook","WebApp.addRuntimeConfigHook","WebApp.addUpdatedNotifyHook","WebApp.decodeRuntimeConfig","WebApp.encodeRuntimeConfig","WebApp.handlers","addRuntimeConfigHookCallback(options)","addUpdatedNotifyHookCallback(options)","check","createAuthFetch","createAuthFetch","createAuthMiddleware","currentUser","expressHandlersCallback(req, res, next)","fetch","getPublicationStrategy","handleFetch","handleFetch","loggingIn","loggingInOrOut","loggingOut","main","module.hot","module.hot#accept","module.hot#data","module.hot#decline","module.hot#dispose","module.hot#onRequire","setPublicationStrategy"],Qi=a=>
902[...new Set(a)],Zi=a=>{const e=[];for(const n of a)n.includes("#")||n.includes(".")||e.push(n);return e},er=a=>{let e=a[0];const n={};for(const o of a){if(n[e]||(n[e]={[e]:[]}),o.includes(e)){n[e][o]=[];continue}e=o}return n};function nr(a){const e=Zi(a),n=er(e);Object.assign(n,{module:{module:[]},Session:{Session:[]},Random:{Random:[]},Email:{Email:[]},DDPRateLimiter:{DDPRateLimiter:[]}});for(const p of Object.keys(n)){const d=n[p];for(const v of Object.keys(d)){const y=a.filter(S=>S.includes(v+".")||S.includes(v+"#"));n[p][v]=Qi(y)}}const t=n.App.App.filter(p=>p.includes("WebApp")),l=n.App.App.filter(p=>!p.includes("WebApp"));n.App.App=l,n.WebApp={WebApp:t};const i=["addRuntimeConfigHookCallback(options)","addUpdatedNotifyHookCallback(options)","currentUser","expressHandlersCallback(req, res, next)","getPublicationStrategy","loggingIn","main","loggingOut","IterationCallback","CompileStep","Cordova","Plugin"];for(const p of Object.keys(n))i.includes(p)&&delete n[p];return n.DDP.shouldGoTo="/api/meteor",n.check.shouldGoTo="/api/check",n.Mongo.shouldGoTo="/api/collections",n.Npm.shouldGoTo="/api/package",n.Subscription.shouldGoTo="/api/meteor",n.module.shouldGoTo="/packages/hot-module-replacement",n.Random.shouldGoTo="/packages/random",n.WebApp.shouldGoTo="/packages/webapp",n}function or(a,e){if(a==="")return e;const n={};for(const o in e){const t={};for(const l in e[o]){const i=e[o][l];if(!Array.isArray(i)){t[l]=i;continue}const p=i.filter(d=>d.toLowerCase().includes(a.toLowerCase()));p.length>0&&(t[l]=p)}Object.keys(t).length>0&&(n[o]=t)}return n}const tr={style:{"text-transform":"capitalize"}},ar=["href"],sr={key:0},ir=["href"],rr={__name:"ApiMap",setup(a){const e=nr(Ki),n=P(e),o=P("");Q(()=>{n.value=or(o.value,e)});const t=(l,i)=>l!=null&&l.shouldGoTo?`${l.shouldGoTo}`:i;return(l,i)=>(s(),m("main",null,[i[1]||(i[1]=r("label",{for:"search"},"Search",-1)),i[2]||(i[2]=r("br",null,null,-1)),K(r("input",{class:"search",type:"text","onUpdate:modelValue":i[0]||(i[0]=p=>o.value=p)},null,512),[[fn,o.value]]),(s(!0),m(O,null,x(n.value,(p,d,v)=>(s(),m("div",{key:v},[r("h2",tr,[r("a",{href:t(p,d),style:{"text-decoration":"none"}},M(d),9,ar)]),(s(!0),m(O,null,x(p,(y,S)=>(s(),m("div",{key:S},[S!=="shouldGoTo"?(s(),m("div",sr,[(s(!0),m(O,null,x(y,b=>(s(),m("h5",{key:b},[r("a",{href:t(p,d)+"#"+b.replace("#","-").replace(".","-")},M(b),9,ir)]))),128))])):f("",!0)]))),128))]))),128))]))}},cr=C(rr,[["__scopeId","data-v-20e58f0d"]]),lr={key:0,class:"contributors-grid"},pr=["href"],mr=["src","alt"],dr={class:"contributor-info"},ur={class:"contributor-name"},hr={key:0,class:"contributor-commits"},fr={key:1,class:"contributors-empty"},gr=g({__name:"Contributors",props:{contributors:{},showContributions:{type:Boolean,default:!0}},setup(a){function e(n){return n.includes("?")?`${n}&s=80`:`${n}?s=80`}return(n,o)=>n.contributors.length?(s(),m("div",lr,[(s(!0),m(O,null,x(n.contributors,t=>(s(),m("a",{key:t.login,href:t.html_url,target:"_blank",rel:"noopener noreferrer",class:"contributor-card"},[r("img",{src:e(t.avatar_url),alt:t.login,class:"contributor-avatar",loading:"lazy",width:"64",height:"64"},null,8,mr),r("div",dr,[r("span",ur,M(t.login),1),n.showContributions?(s(),m("span",hr,M(t.contributions.toLocaleString())+" "+M(t.contributions===1?"commit":"commits"),1)):f("",!0)])],8,pr))),128))])):(s(),m("p",fr,o[0]||(o[0]=[R(" Could not load contributors. Check the "),r("a",{href:"https://github.com/meteor/meteor/graphs/contributors",target:"_blank",rel:"noopener noreferrer"}," GitHub contributors page ",-1),R(". ")])))}}),yr=C(gr,[["__scopeId","data-v-cb80e269"]]),br={class:"custom-404-container"},vr={class:"custom-404-message"},kr=["href"],wr={__name:"NotFound",setup(a){const e=Se(),n=P("");return B(()=>{n.value=`https://v2-docs.meteor.com${e.route.path}`}),(o,t)=>(s(),m("div",br,[t[2]||(t[2]=r("h1",{class:"custom-404-title"},"404",-1)),t[3]||(t[3]=r("p",{class:"custom-404-subtitle"},"Page Not Found",-1)),t[4]||(t[4]=r("hr",{class:"custom-404-divider"},null,-1)),r("p",vr,[t[0]||(t[0]=R(" It looks like you're trying to access a page that doesn't exist. If you were looking for something from the older version of our documentation, you might find it here: ")),r("a",{href:n.value,target:"_blank",class:"custom-404-link"},M(n.value),9,kr),t[1]||(t[1]=R(". "))]),t[5]||(t[5]=r("a",{href:"/",class:"custom-404-button"},"Take me home",-1))]))}},Ar=C(wr,[["__scopeId","data-v-f366631a"]]),Sr={class:"warning custom-block"}
902,Cr=["href"],_r=g({__name:"GoToLatest",setup(a){const e=Se();let n=P(`https://docs.meteor.com${e.route.path}`);return typeof window<"u"&&q(()=>e.route.path,o=>n.value=`https://docs.meteor.com${o}`,{immediate:!0}),(o,t)=>(s(),m(O,null,[r("div",Sr,[t[2]||(t[2]=r("p",{class:"custom-block-title"},"Warning",-1)),r("p",null,[t[0]||(t[0]=R("You are viewing an old version of the Meteor documentation. Click ")),r("a",{href:c(n)},"here",8,Cr),t[1]||(t[1]=R(" to go to the latest version."))])]),t[3]||(t[3]=r("br",null,null,-1))],64))}}),Mr="meteor-call",Tr="DDP-connect",Pr="history",Ne={meteor_call:Mr,ddp_connect:Tr,changelog:Pr},jr=a=>{const e=a.split("/").pop().split(".")[0];return Ne[e]?{path:a.replace(e,Ne[e]),shouldRedirect:!0}:a.includes("_")?{path:a.replace("_","-"),shouldRedirect:!0}:{path:a,shouldRedirect:!1}},Or=g({__name:"Layout",setup(a){const{isDark:e}=ye(),n=Se(),o=typeof window<"u";if(o){const{path:i,shouldRedirect:p}=jr(window.location.href);p&&n.go(i)}const t=()=>o&&"startViewTransition"in document&&window.matchMedia("(prefers-reduced-motion: no-preference)").matches;Ae("toggle-appearance",async({clientX:i,clientY:p})=>{if(!t()){e.value=!e.value;return}const d=[`circle(0px at ${i}px ${p}px)`,`circle(${Math.hypot(Math.max(i,innerWidth-i),Math.max(p,innerHeight-p))}px at ${i}px ${p}px)`];await document.startViewTransition(async()=>{e.value=!e.value,await we()}).ready,document.documentElement.animate({clipPath:e.value?d.reverse():d},{duration:300,easing:"ease-in",pseudoElement:`::view-transition-${e.value?"old":"new"}(root)`})});const l=P(!0);return B(()=>{l.value=o&&window.location.href.startsWith("https://docs.meteor.com/")}),(i,p)=>(s(),A(c(Ge).Layout,null,gn({"not-found":h(()=>[k(Ar)]),_:2},[l.value?void 0:{name:"doc-before",fn:h(()=>[k(_r)]),key:"0"}]),1024))}}),Rr={extends:Ge,enhanceApp({app:a}){a.component("ApiBox",Xi),a.component("ApiMap",cr),a.component("Contributors",yr)},Layout:Or};export{Rr as R,j as u};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.