(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))l(n);new MutationObserver(n=>{for(const r of n)if(r.type==="childList")for(const i of r.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&l(i)}).observe(document,{childList:!0,subtree:!0});function s(n){const r={};return n.integrity&&(r.integrity=n.integrity),n.referrerPolicy&&(r.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?r.credentials="include":n.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function l(n){if(n.ep)return;n.ep=!0;const r=s(n);fetch(n.href,r)}})();const ne=!1,le=(e,t)=>e===t,E={equals:le};let re=K;const m=1,k=2,D={owned:null,cleanups:null,context:null,owner:null};var h=null;let j=null,oe=null,u=null,a=null,b=null,O=0;function ie(e,t){const s=u,l=h,n=e.length===0,r=t===void 0?l:t,i=n?D:{owned:null,cleanups:null,context:r?r.context:null,owner:r},o=n?e:()=>e(()=>I(()=>S(i)));h=i,u=null;try{return $(o,!0)}finally{u=s,h=l}}function ce(e,t){t=t?Object.assign({},E,t):E;const s={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},l=n=>(typeof n=="function"&&(n=n(s.value)),q(s,n));return[H.bind(s),l]}function v(e,t,s){const l=G(e,t,!1,m);L(l)}function P(e,t,s){s=s?Object.assign({},E,s):E;const l=G(e,t,!0,0);return l.observers=null,l.observerSlots=null,l.comparator=s.equals||void 0,L(l),H.bind(l)}function I(e){if(u===null)return e();const t=u;u=null;try{return e()}finally{u=t}}function H(){if(this.sources&&this.state)if(this.state===m)L(this);else{const e=a;a=null,$(()=>z(this),!1),a=e}if(u){const e=this.observers?this.observers.length:0;u.sources?(u.sources.push(this),u.sourceSlots.push(e)):(u.sources=[this],u.sourceSlots=[e]),this.observers?(this.observers.push(u),this.observerSlots.push(u.sources.length-1)):(this.observers=[u],this.observerSlots=[u.sources.length-1])}return this.value}function q(e,t,s){let l=e.value;return(!e.comparator||!e.comparator(l,t))&&(e.value=t,e.observers&&e.observers.length&&$(()=>{for(let n=0;n1e6)throw a=[],new Error},!1)),t}function L(e){if(!e.fn)return;S(e);const t=O;ue(e,e.value,t)}function ue(e,t,s){let l;const n=h,r=u;u=h=e;try{l=e.fn(t)}catch(i){return e.pure&&(e.state=m,e.owned&&e.owned.forEach(S),e.owned=null),e.updatedAt=s+1,Z(i)}finally{u=r,h=n}(!e.updatedAt||e.updatedAt<=s)&&(e.updatedAt!=null&&"observers"in e?q(e,l):e.value=l,e.updatedAt=s)}function G(e,t,s,l=m,n){const r={fn:e,state:l,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:h,context:h?h.context:null,pure:s};return h===null||h!==D&&(h.owned?h.owned.push(r):h.owned=[r]),r}function F(e){if(e.state===0)return;if(e.state===k)return z(e);if(e.suspense&&I(e.suspense.inFallback))return e.suspense.effects.push(e);const t=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt=0;s--)if(e=t[s],e.state===m)L(e);else if(e.state===k){const l=a;a=null,$(()=>z(e,t[0]),!1),a=l}}function $(e,t){if(a)return e();let s=!1;t||(a=[]),b?s=!0:b=[],O++;try{const l=e();return fe(s),l}catch(l){s||(b=null),a=null,Z(l)}}function fe(e){if(a&&(K(a),a=null),e)return;const t=b;b=null,t.length&&$(()=>re(t),!1)}function K(e){for(let t=0;t=0;t--)S(e.tOwned[t]);delete e.tOwned}if(e.owned){for(t=e.owned.length-1;t>=0;t--)S(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}e.state=0}function ae(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown error",{cause:e})}function Z(e,t=h){throw ae(e)}function A(e,t){return I(()=>e(t||{}))}function de(e,t,s){let l=s.length,n=t.length,r=l,i=0,o=0,c=t[n-1].nextSibling,f=null;for(;id-o){const g=t[i];for(;o{n=r,t===document?e():_(t,e(),t.firstChild?null:void 0,s)},l.owner),()=>{n(),t.textContent=""}}function w(e,t,s,l){let n;const r=()=>{const o=document.createElement("template");return o.innerHTML=e,o.content.firstChild},i=()=>(n||(n=r())).cloneNode(!0);return i.cloneNode=i,i}function pe(e,t=window.document){const s=t[R]||(t[R]=new Set);for(let l=0,n=e.length;lT(e,t(),n,s),l)}function be(e){let t=e.target;const s=`$$${e.type}`,l=e.target,n=e.currentTarget,r=c=>Object.defineProperty(e,"target",{configurable:!0,value:c}),i=()=>{const c=t[s];if(c&&!t.disabled){const f=t[`${s}Data`];if(f!==void 0?c.call(t,f,e):c.call(t,e),e.cancelBubble)return}return t.host&&typeof t.host!="string"&&!t.host._$host&&t.contains(e.target)&&r(t.host),!0},o=()=>{for(;i()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t||document}}),e.composedPath){const c=e.composedPath();r(c[0]);for(let f=0;f{let o=t();for(;typeof o=="function";)o=o();s=T(e,o,s,l)}),()=>s;if(Array.isArray(t)){const o=[],c=s&&Array.isArray(s);if(B(o,t,s,n))return v(()=>s=T(e,o,s,l,!0)),()=>s;if(o.length===0){if(s=x(e,s,l),i)return s}else c?s.length===0?U(e,o,l):de(e,s,o):(s&&x(e),U(e,o));s=o}else if(t.nodeType){if(Array.isArray(s)){if(i)return s=x(e,s,l,t);x(e,s,null,t)}else s==null||s===""||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);s=t}}return s}function B(e,t,s,l){let n=!1;for(let r=0,i=t.length;r=0;i--){const o=t[i];if(n!==o){const c=o.parentNode===e;!r&&!i?c?e.replaceChild(n,o):e.insertBefore(n,s):c&&o.remove()}else r=!0}}else e.insertBefore(n,s);return[n]}var me=w(''),ge=w(''),xe=w('');const ve=e=>(()=>{var t=me();return v(()=>M(t,"class",e.class)),t})(),we=e=>(()=>{var t=ge();return v(()=>M(t,"class",e.class)),t})(),ye=e=>(()=>{var t=xe();return v(()=>M(t,"class",e.class)),t})();var Se=w('

TROK

EXPOSE. SHARE. ACCESS.

Accessing your
local service should
be simple

It's like ngrok but simpler. Just log in, run the command, and get a shareable URL to access your local service from anywhere. No complex setup—just instant, secure tunneling to the internet.

Install

Install trok to your machine using shell:

This will download the trok binary to the path you ran the script from.
Run it with ./trok on any system

USING TROK:

> $ trok client -a :3000

started Trok client on trok.cloud

[CMD] EHLO [ARG] trok.cloud

1. Expose

provide the local port you want to share, and it'll generate a URL.

hey here take a look at my project...

2. Share

share the URL with your friends.

https://awesome-project.trok.cloud
🎉 your awesome project 🎉

3. Access

access your local service from anywhere.

'),$e=w('copied!'),Ce=w('');function Ae(){const e="curl -fsSL https://trok.cloud/install.sh | sh",[t,s]=ce(!1),l=()=>{navigator.clipboard.writeText(e),s(!0),setTimeout(()=>{s(!1)},1300)};return(()=>{var n=Se(),r=n.firstChild,i=r.firstChild,o=i.nextSibling,c=o.nextSibling,f=c.firstChild,d=f.firstChild,p=d.nextSibling,y=p.firstChild,C=y.nextSibling,g=C.nextSibling;g.firstChild;var J=c.nextSibling,Q=J.nextSibling,W=Q.firstChild,Y=W.nextSibling,ee=Y.firstChild,te=ee.nextSibling,V=te.firstChild,se=V.firstChild;return g.$$click=l,_(g,(()=>{var N=P(()=>!!t());return()=>N()?$e():Ce()})(),null),_(g,(()=>{var N=P(()=>!!t());return()=>N()?A(ye,{class:"h-5 w-5 text-zinc-500"}):A(we,{class:"h-5 w-5 text-zinc-500"})})(),null),_(V,A(ve,{class:"w-6 h-6 mr-2"}),se),n})()}pe(["click"]);const _e=document.getElementById("root");he(()=>A(Ae,{}),_e);