@lensmcp/vite-plugin 1.25.6 → 1.25.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";var Re=Object.defineProperty;var c=(e,n)=>Re(e,"name",{value:n,configurable:!0});var Ae=Object.defineProperty,v=c((e,n)=>Ae(e,"name",{value:n,configurable:!0}),"u"),Ce=Object.defineProperty,f=v((e,n)=>Ce(e,"name",{value:n,configurable:!0}),"u"),Fe=Object.defineProperty,p=f((e,n)=>Fe(e,"name",{value:n,configurable:!0}),"u"),Je=Object.defineProperty,b=p((e,n)=>Je(e,"name",{value:n,configurable:!0}),"c"),Le=Object.defineProperty,s=b((e,n)=>Le(e,"name",{value:n,configurable:!0}),"c"),Ne=Object.defineProperty,d=s((e,n)=>Ne(e,"name",{value:n,configurable:!0}),"c"),qe=Object.defineProperty,m=d((e,n)=>qe(e,"name",{value:n,configurable:!0}),"u"),ze=Object.defineProperty,g=m((e,n)=>ze(e,"name",{value:n,configurable:!0}),"u"),Be=Object.defineProperty,y=g((e,n)=>Be(e,"name",{value:n,configurable:!0}),"u"),De=Object.defineProperty,j=y((e,n)=>De(e,"name",{value:n,configurable:!0}),"c"),Ge=Object.defineProperty,T=j((e,n)=>Ge(e,"name",{value:n,configurable:!0}),"c"),He=Object.defineProperty,E=T((e,n)=>He(e,"name",{value:n,configurable:!0}),"c"),Ke=Object.defineProperty,O=E((e,n)=>Ke(e,"name",{value:n,configurable:!0}),"u"),Me=Object.defineProperty,P=O((e,n)=>Me(e,"name",{value:n,configurable:!0}),"u"),Qe=Object.defineProperty,I=P((e,n)=>Qe(e,"name",{value:n,configurable:!0}),"u"),Ve=Object.defineProperty,w=I((e,n)=>Ve(e,"name",{value:n,configurable:!0}),"c"),We=Object.defineProperty,k=w((e,n)=>We(e,"name",{value:n,configurable:!0}),"c"),Xe=Object.defineProperty,$=k((e,n)=>Xe(e,"name",{value:n,configurable:!0}),"c"),Ye=Object.defineProperty,h=$((e,n)=>Ye(e,"name",{value:n,configurable:!0}),"u"),Ze=Object.defineProperty,x=h((e,n)=>Ze(e,"name",{value:n,configurable:!0}),"u"),_e=Object.defineProperty,S=x((e,n)=>_e(e,"name",{value:n,configurable:!0}),"u"),en=Object.defineProperty,U=S((e,n)=>en(e,"name",{value:n,configurable:!0}),"c"),nn=Object.defineProperty,R=U((e,n)=>nn(e,"name",{value:n,configurable:!0}),"c"),tn=Object.defineProperty,A=R((e,n)=>tn(e,"name",{value:n,configurable:!0}),"c"),rn=Object.defineProperty,C=A((e,n)=>rn(e,"name",{value:n,configurable:!0}),"u"),on=Object.defineProperty,F=C((e,n)=>on(e,"name",{value:n,configurable:!0}),"u"),an=Object.defineProperty,J=F((e,n)=>an(e,"name",{value:n,configurable:!0}),"u"),ln=Object.defineProperty,L=J((e,n)=>ln(e,"name",{value:n,configurable:!0}),"c"),un=Object.defineProperty,N=L((e,n)=>un(e,"name",{value:n,configurable:!0}),"c"),cn=Object.defineProperty,q=N((e,n)=>cn(e,"name",{value:n,configurable:!0}),"c"),vn=Object.defineProperty,z=q((e,n)=>vn(e,"name",{value:n,configurable:!0}),"u"),fn=Object.defineProperty,B=z((e,n)=>fn(e,"name",{value:n,configurable:!0}),"u"),pn=Object.defineProperty,D=B((e,n)=>pn(e,"name",{value:n,configurable:!0}),"u"),bn=Object.defineProperty,G=D((e,n)=>bn(e,"name",{value:n,configurable:!0}),"c"),sn=Object.defineProperty,H=G((e,n)=>sn(e,"name",{value:n,configurable:!0}),"c"),dn=Object.defineProperty,K=H((e,n)=>dn(e,"name",{value:n,configurable:!0}),"c"),mn=Object.defineProperty,M=K((e,n)=>mn(e,"name",{value:n,configurable:!0}),"u"),gn=Object.defineProperty,Q=M((e,n)=>gn(e,"name",{value:n,configurable:!0}),"u"),yn=Object.defineProperty,V=Q((e,n)=>yn(e,"name",{value:n,configurable:!0}),"u"),jn=Object.defineProperty,W=V((e,n)=>jn(e,"name",{value:n,configurable:!0}),"u"),Tn=Object.defineProperty,X=W((e,n)=>Tn(e,"name",{value:n,configurable:!0}),"u"),En=Object.defineProperty,Y=X((e,n)=>En(e,"name",{value:n,configurable:!0}),"u"),On=Object.defineProperty,Z=Y((e,n)=>On(e,"name",{value:n,configurable:!0}),"u"),Pn=Object.defineProperty,_=Z((e,n)=>Pn(e,"name",{value:n,configurable:!0}),"u"),In=Object.defineProperty,ee=_((e,n)=>In(e,"name",{value:n,configurable:!0}),"u"),wn=Object.defineProperty,ne=ee((e,n)=>wn(e,"name",{value:n,configurable:!0}),"s"),kn=Object.defineProperty,te=ne((e,n)=>kn(e,"name",{value:n,configurable:!0}),"s"),$n=Object.defineProperty,re=te((e,n)=>$n(e,"name",{value:n,configurable:!0}),"s"),hn=Object.defineProperty,oe=re((e,n)=>hn(e,"name",{value:n,configurable:!0}),"c"),xn=Object.defineProperty,ie=oe((e,n)=>xn(e,"name",{value:n,configurable:!0}),"c"),Sn=Object.defineProperty,ae=ie((e,n)=>Sn(e,"name",{value:n,configurable:!0}),"c"),Un=Object.defineProperty,le=ae((e,n)=>Un(e,"name",{value:n,configurable:!0}),"c"),Rn=Object.defineProperty,ue=le((e,n)=>Rn(e,"name",{value:n,configurable:!0}),"c"),An=Object.defineProperty,ce=ue((e,n)=>An(e,"name",{value:n,configurable:!0}),"c"),Cn=Object.defineProperty,ve=ce((e,n)=>Cn(e,"name",{value:n,configurable:!0}),"l"),Fn=Object.defineProperty,fe=ve((e,n)=>Fn(e,"name",{value:n,configurable:!0}),"l"),Jn=Object.defineProperty,pe=fe((e,n)=>Jn(e,"name",{value:n,configurable:!0}),"c"),Ln=Object.defineProperty,be=pe((e,n)=>Ln(e,"name",{value:n,configurable:!0}),"c"),Nn=Object.defineProperty,se=be((e,n)=>Nn(e,"name",{value:n,configurable:!0}),"c"),qn=Object.defineProperty,de=se((e,n)=>qn(e,"name",{value:n,configurable:!0}),"u"),zn=Object.defineProperty,me=de((e,n)=>zn(e,"name",{value:n,configurable:!0}),"u"),Bn=Object.defineProperty,ge=me((e,n)=>Bn(e,"name",{value:n,configurable:!0}),"u"),Dn=Object.defineProperty,ye=ge((e,n)=>Dn(e,"name",{value:n,configurable:!0}),"c"),Gn=Object.defineProperty,je=ye((e,n)=>Gn(e,"name",{value:n,configurable:!0}),"c"),Hn=Object.defineProperty,Te=je((e,n)=>Hn(e,"name",{value:n,configurable:!0}),"c"),Kn=Object.defineProperty,Ee=Te((e,n)=>Kn(e,"name",{value:n,configurable:!0}),"u"),Mn=Object.defineProperty,Oe=Ee((e,n)=>Mn(e,"name",{value:n,configurable:!0}),"u"),Qn=Object.defineProperty,Pe=Oe((e,n)=>Qn(e,"name",{value:n,configurable:!0}),"u"),Vn=Object.defineProperty,Ie=Pe((e,n)=>Vn(e,"name",{value:n,configurable:!0}),"u"),Wn=Object.defineProperty,we=Ie((e,n)=>Wn(e,"name",{value:n,configurable:!0}),"o"),Xn=Object.defineProperty,ke=we((e,n)=>Xn(e,"name",{value:n,configurable:!0}),"o"),Yn=Object.defineProperty,$e=ke((e,n)=>Yn(e,"name",{value:n,configurable:!0}),"o"),Zn=Object.defineProperty,he=$e((e,n)=>Zn(e,"name",{value:n,configurable:!0}),"o"),_n=Object.defineProperty,xe=he((e,n)=>_n(e,"name",{value:n,configurable:!0}),"o"),et=Object.defineProperty,Se=xe((e,n)=>et(e,"name",{value:n,configurable:!0}),"o");import{fingerprint as l,ulid as u}from"@lensmcp/core";const nt="pending";export function envelopeToEvent(e,n=nt){const i=e.tabId?{tabId:e.tabId}:{};switch(e.kind){case"error":return{id:u(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"runtime",severity:"error",context:{sessionId:n,...i},fingerprint:l({kind:"runtime",identity:`error:${t(e.stack)}`,file:e.source,detail:e.message}),title:e.message,message:e.stack??e.message,location:e.source?{file:e.source,line:e.lineno,column:e.colno}:void 0,raw:e};case"unhandledrejection":return{id:u(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"runtime",severity:"error",context:{sessionId:n,...i},fingerprint:l({kind:"runtime",identity:`unhandledrejection:${e.reason.slice(0,80)}`}),title:"Unhandled promise rejection",message:e.reason,raw:e};case"console":{const a=e.level==="error"?"error":e.level==="warn"?"warning":"info",Ue=e.args.map(o).join(" ");return{id:u(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"runtime",severity:a,context:{sessionId:n,...i},fingerprint:l({kind:"runtime",identity:`console:${e.level}:${Ue.slice(0,80)}`}),title:`console.${e.level}`,message:Ue,raw:e}}case"fetch":{const a=e.error!==void 0||e.status!==void 0&&e.status>=400;return{id:u(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"network",severity:a?"error":"info",context:{sessionId:n,...i},fingerprint:l({kind:"network",identity:`${e.method}:${r(e.url)}:${e.status??"err"}`}),title:`${e.method} ${e.url}${e.status!==void 0?` \u2192 ${e.status}`:""}`,message:e.error,relatedUrls:[e.url],raw:e}}case"route":return{id:u(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"runtime",severity:"info",context:{sessionId:n,url:e.url,...i},fingerprint:l({kind:"runtime",identity:`route:${e.url}`}),title:`Route \u2192 ${e.url}`,raw:e};case"ready":return{id:u(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"runtime",severity:"info",context:{sessionId:n,url:e.url,...i},fingerprint:l({kind:"runtime",identity:"client-ready"}),title:"Client runtime ready",message:e.userAgent,raw:e};case"publish":return{id:u(),sessionId:n,timestamp:e.at,source:e.source,category:e.category,severity:e.severity??"info",context:{sessionId:n,...i,...e.context??{}},fingerprint:e.fingerprint??l({kind:"publish",identity:e.title}),title:e.title,message:e.message,raw:e.raw}}}c(envelopeToEvent,"envelopeToEvent"),v(envelopeToEvent,"envelopeToEvent"),f(envelopeToEvent,"envelopeToEvent"),p(envelopeToEvent,"envelopeToEvent"),b(envelopeToEvent,"envelopeToEvent"),s(envelopeToEvent,"envelopeToEvent"),d(envelopeToEvent,"envelopeToEvent"),m(envelopeToEvent,"envelopeToEvent"),g(envelopeToEvent,"envelopeToEvent"),y(envelopeToEvent,"envelopeToEvent"),j(envelopeToEvent,"envelopeToEvent"),T(envelopeToEvent,"envelopeToEvent"),E(envelopeToEvent,"envelopeToEvent"),O(envelopeToEvent,"envelopeToEvent"),P(envelopeToEvent,"envelopeToEvent"),I(envelopeToEvent,"envelopeToEvent"),w(envelopeToEvent,"envelopeToEvent"),k(envelopeToEvent,"envelopeToEvent"),$(envelopeToEvent,"envelopeToEvent"),h(envelopeToEvent,"envelopeToEvent"),x(envelopeToEvent,"envelopeToEvent"),S(envelopeToEvent,"envelopeToEvent"),U(envelopeToEvent,"envelopeToEvent"),R(envelopeToEvent,"envelopeToEvent"),A(envelopeToEvent,"envelopeToEvent"),C(envelopeToEvent,"envelopeToEvent"),F(envelopeToEvent,"envelopeToEvent"),J(envelopeToEvent,"envelopeToEvent"),L(envelopeToEvent,"envelopeToEvent"),N(envelopeToEvent,"envelopeToEvent"),q(envelopeToEvent,"envelopeToEvent"),z(envelopeToEvent,"envelopeToEvent"),B(envelopeToEvent,"envelopeToEvent"),D(envelopeToEvent,"envelopeToEvent"),G(envelopeToEvent,"envelopeToEvent"),H(envelopeToEvent,"envelopeToEvent"),K(envelopeToEvent,"envelopeToEvent"),M(envelopeToEvent,"envelopeToEvent"),Q(envelopeToEvent,"envelopeToEvent"),V(envelopeToEvent,"envelopeToEvent"),W(envelopeToEvent,"envelopeToEvent"),X(envelopeToEvent,"envelopeToEvent"),Y(envelopeToEvent,"envelopeToEvent"),Z(envelopeToEvent,"envelopeToEvent"),_(envelopeToEvent,"envelopeToEvent"),ee(envelopeToEvent,"envelopeToEvent"),ne(envelopeToEvent,"envelopeToEvent"),te(envelopeToEvent,"envelopeToEvent"),re(envelopeToEvent,"envelopeToEvent"),oe(envelopeToEvent,"envelopeToEvent"),ie(envelopeToEvent,"envelopeToEvent"),ae(envelopeToEvent,"envelopeToEvent"),le(envelopeToEvent,"envelopeToEvent"),ue(envelopeToEvent,"envelopeToEvent"),ce(envelopeToEvent,"envelopeToEvent"),ve(envelopeToEvent,"envelopeToEvent"),fe(envelopeToEvent,"envelopeToEvent"),pe(envelopeToEvent,"envelopeToEvent"),be(envelopeToEvent,"envelopeToEvent"),se(envelopeToEvent,"envelopeToEvent"),de(envelopeToEvent,"envelopeToEvent"),me(envelopeToEvent,"envelopeToEvent"),ge(envelopeToEvent,"envelopeToEvent"),ye(envelopeToEvent,"envelopeToEvent"),je(envelopeToEvent,"envelopeToEvent"),Te(envelopeToEvent,"envelopeToEvent"),Ee(envelopeToEvent,"envelopeToEvent"),Oe(envelopeToEvent,"envelopeToEvent"),Pe(envelopeToEvent,"envelopeToEvent"),Ie(envelopeToEvent,"envelopeToEvent"),we(envelopeToEvent,"envelopeToEvent"),ke(envelopeToEvent,"envelopeToEvent"),$e(envelopeToEvent,"envelopeToEvent"),he(envelopeToEvent,"envelopeToEvent"),xe(envelopeToEvent,"envelopeToEvent"),Se(envelopeToEvent,"envelopeToEvent");function t(e){if(!e)return"unknown";const n=e.split(`
2
- `).slice(0,2);for(const i of n){const a=i.match(/at\s+(\S+)/);if(a&&a[1])return a[1]}return"unknown"}c(t,"t"),v(t,"t"),f(t,"t"),p(t,"t"),b(t,"t"),s(t,"t"),d(t,"t"),m(t,"t"),g(t,"t"),y(t,"t"),j(t,"t"),T(t,"t"),E(t,"t"),O(t,"t"),P(t,"t"),I(t,"t"),w(t,"t"),k(t,"t"),$(t,"t"),h(t,"t"),x(t,"t"),S(t,"t"),U(t,"t"),R(t,"t"),A(t,"t"),C(t,"t"),F(t,"t"),J(t,"t"),L(t,"t"),N(t,"t"),q(t,"t"),z(t,"t"),B(t,"t"),D(t,"t"),G(t,"t"),H(t,"t"),K(t,"t"),M(t,"t"),Q(t,"t"),V(t,"t"),W(t,"t"),X(t,"t"),Y(t,"t"),Z(t,"t"),_(t,"t"),ee(t,"t"),ne(t,"t"),te(t,"t"),re(t,"t"),oe(t,"t"),ie(t,"t"),ae(t,"t"),le(t,"n"),ue(t,"t"),ce(t,"n"),ve(t,"t"),fe(t,"n"),pe(t,"t"),be(t,"n"),se(t,"t"),de(t,"r"),me(t,"t"),ge(t,"r"),ye(t,"t"),je(t,"n"),Te(t,"n"),Ee(t,"r"),Oe(t,"n"),Pe(t,"o"),Ie(t,"a"),we(t,"l"),ke(t,"l"),$e(t,"c"),he(t,"c"),xe(t,"s"),Se(t,"normaliseStackTopFrame");function r(e){try{return`${new URL(e,"http://x").pathname}`}catch{return e}}c(r,"r"),v(r,"r"),f(r,"r"),p(r,"r"),b(r,"r"),s(r,"r"),d(r,"r"),m(r,"r"),g(r,"r"),y(r,"r"),j(r,"r"),T(r,"r"),E(r,"r"),O(r,"r"),P(r,"r"),I(r,"r"),w(r,"r"),k(r,"r"),$(r,"r"),h(r,"r"),x(r,"r"),S(r,"r"),U(r,"r"),R(r,"r"),A(r,"r"),C(r,"r"),F(r,"r"),J(r,"r"),L(r,"r"),N(r,"r"),q(r,"r"),z(r,"r"),B(r,"r"),D(r,"r"),G(r,"r"),H(r,"r"),K(r,"r"),M(r,"r"),Q(r,"r"),V(r,"r"),W(r,"r"),X(r,"r"),Y(r,"r"),Z(r,"r"),_(r,"r"),ee(r,"r"),ne(r,"r"),te(r,"r"),re(r,"r"),oe(r,"r"),ie(r,"r"),ae(r,"r"),le(r,"r"),ue(r,"r"),ce(r,"r"),ve(r,"r"),fe(r,"r"),pe(r,"r"),be(r,"r"),se(r,"r"),de(r,"n"),me(r,"r"),ge(r,"n"),ye(r,"r"),je(r,"r"),Te(r,"r"),Ee(r,"i"),Oe(r,"i"),Pe(r,"a"),Ie(r,"c"),we(r,"d"),ke(r,"d"),$e(r,"l"),he(r,"l"),xe(r,"m"),Se(r,"normaliseUrl");function o(e){if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}c(o,"o"),v(o,"o"),f(o,"o"),p(o,"o"),b(o,"o"),s(o,"o"),d(o,"o"),m(o,"o"),g(o,"o"),y(o,"o"),j(o,"o"),T(o,"o"),E(o,"o"),O(o,"o"),P(o,"o"),I(o,"o"),w(o,"o"),k(o,"o"),$(o,"o"),h(o,"o"),x(o,"o"),S(o,"o"),U(o,"o"),R(o,"o"),A(o,"o"),C(o,"o"),F(o,"o"),J(o,"o"),L(o,"o"),N(o,"o"),q(o,"o"),z(o,"o"),B(o,"o"),D(o,"o"),G(o,"o"),H(o,"o"),K(o,"o"),M(o,"o"),Q(o,"o"),V(o,"o"),W(o,"o"),X(o,"o"),Y(o,"i"),Z(o,"o"),_(o,"i"),ee(o,"i"),ne(o,"i"),te(o,"i"),re(o,"i"),oe(o,"i"),ie(o,"i"),ae(o,"i"),le(o,"i"),ue(o,"i"),ce(o,"i"),ve(o,"i"),fe(o,"i"),pe(o,"i"),be(o,"i"),se(o,"i"),de(o,"i"),me(o,"i"),ge(o,"i"),ye(o,"i"),je(o,"i"),Te(o,"i"),Ee(o,"o"),Oe(o,"o"),Pe(o,"c"),Ie(o,"u"),we(o,"m"),ke(o,"m"),$e(o,"d"),he(o,"d"),xe(o,"d"),Se(o,"stringify");
1
+ "use strict";var Ce=Object.defineProperty;var c=(e,n)=>Ce(e,"name",{value:n,configurable:!0});var Fe=Object.defineProperty,v=c((e,n)=>Fe(e,"name",{value:n,configurable:!0}),"c"),Je=Object.defineProperty,f=v((e,n)=>Je(e,"name",{value:n,configurable:!0}),"c"),Le=Object.defineProperty,p=f((e,n)=>Le(e,"name",{value:n,configurable:!0}),"u"),Ne=Object.defineProperty,b=p((e,n)=>Ne(e,"name",{value:n,configurable:!0}),"u"),qe=Object.defineProperty,s=b((e,n)=>qe(e,"name",{value:n,configurable:!0}),"u"),ze=Object.defineProperty,d=s((e,n)=>ze(e,"name",{value:n,configurable:!0}),"c"),Be=Object.defineProperty,m=d((e,n)=>Be(e,"name",{value:n,configurable:!0}),"c"),De=Object.defineProperty,g=m((e,n)=>De(e,"name",{value:n,configurable:!0}),"c"),Ge=Object.defineProperty,y=g((e,n)=>Ge(e,"name",{value:n,configurable:!0}),"u"),He=Object.defineProperty,j=y((e,n)=>He(e,"name",{value:n,configurable:!0}),"u"),Ke=Object.defineProperty,T=j((e,n)=>Ke(e,"name",{value:n,configurable:!0}),"u"),Me=Object.defineProperty,E=T((e,n)=>Me(e,"name",{value:n,configurable:!0}),"c"),Qe=Object.defineProperty,O=E((e,n)=>Qe(e,"name",{value:n,configurable:!0}),"c"),Ve=Object.defineProperty,P=O((e,n)=>Ve(e,"name",{value:n,configurable:!0}),"c"),We=Object.defineProperty,I=P((e,n)=>We(e,"name",{value:n,configurable:!0}),"u"),Xe=Object.defineProperty,w=I((e,n)=>Xe(e,"name",{value:n,configurable:!0}),"u"),Ye=Object.defineProperty,k=w((e,n)=>Ye(e,"name",{value:n,configurable:!0}),"u"),Ze=Object.defineProperty,$=k((e,n)=>Ze(e,"name",{value:n,configurable:!0}),"c"),_e=Object.defineProperty,h=$((e,n)=>_e(e,"name",{value:n,configurable:!0}),"c"),en=Object.defineProperty,x=h((e,n)=>en(e,"name",{value:n,configurable:!0}),"c"),nn=Object.defineProperty,S=x((e,n)=>nn(e,"name",{value:n,configurable:!0}),"u"),tn=Object.defineProperty,U=S((e,n)=>tn(e,"name",{value:n,configurable:!0}),"u"),rn=Object.defineProperty,R=U((e,n)=>rn(e,"name",{value:n,configurable:!0}),"u"),on=Object.defineProperty,A=R((e,n)=>on(e,"name",{value:n,configurable:!0}),"c"),an=Object.defineProperty,C=A((e,n)=>an(e,"name",{value:n,configurable:!0}),"c"),ln=Object.defineProperty,F=C((e,n)=>ln(e,"name",{value:n,configurable:!0}),"c"),un=Object.defineProperty,J=F((e,n)=>un(e,"name",{value:n,configurable:!0}),"u"),cn=Object.defineProperty,L=J((e,n)=>cn(e,"name",{value:n,configurable:!0}),"u"),vn=Object.defineProperty,N=L((e,n)=>vn(e,"name",{value:n,configurable:!0}),"u"),fn=Object.defineProperty,q=N((e,n)=>fn(e,"name",{value:n,configurable:!0}),"c"),pn=Object.defineProperty,z=q((e,n)=>pn(e,"name",{value:n,configurable:!0}),"c"),bn=Object.defineProperty,B=z((e,n)=>bn(e,"name",{value:n,configurable:!0}),"c"),sn=Object.defineProperty,D=B((e,n)=>sn(e,"name",{value:n,configurable:!0}),"u"),dn=Object.defineProperty,G=D((e,n)=>dn(e,"name",{value:n,configurable:!0}),"u"),mn=Object.defineProperty,H=G((e,n)=>mn(e,"name",{value:n,configurable:!0}),"u"),gn=Object.defineProperty,K=H((e,n)=>gn(e,"name",{value:n,configurable:!0}),"c"),yn=Object.defineProperty,M=K((e,n)=>yn(e,"name",{value:n,configurable:!0}),"c"),jn=Object.defineProperty,Q=M((e,n)=>jn(e,"name",{value:n,configurable:!0}),"c"),Tn=Object.defineProperty,V=Q((e,n)=>Tn(e,"name",{value:n,configurable:!0}),"u"),En=Object.defineProperty,W=V((e,n)=>En(e,"name",{value:n,configurable:!0}),"u"),On=Object.defineProperty,X=W((e,n)=>On(e,"name",{value:n,configurable:!0}),"u"),Pn=Object.defineProperty,Y=X((e,n)=>Pn(e,"name",{value:n,configurable:!0}),"u"),In=Object.defineProperty,Z=Y((e,n)=>In(e,"name",{value:n,configurable:!0}),"u"),wn=Object.defineProperty,_=Z((e,n)=>wn(e,"name",{value:n,configurable:!0}),"u"),kn=Object.defineProperty,ee=_((e,n)=>kn(e,"name",{value:n,configurable:!0}),"u"),$n=Object.defineProperty,ne=ee((e,n)=>$n(e,"name",{value:n,configurable:!0}),"u"),hn=Object.defineProperty,te=ne((e,n)=>hn(e,"name",{value:n,configurable:!0}),"u"),xn=Object.defineProperty,re=te((e,n)=>xn(e,"name",{value:n,configurable:!0}),"s"),Sn=Object.defineProperty,oe=re((e,n)=>Sn(e,"name",{value:n,configurable:!0}),"s"),Un=Object.defineProperty,ie=oe((e,n)=>Un(e,"name",{value:n,configurable:!0}),"s"),Rn=Object.defineProperty,ae=ie((e,n)=>Rn(e,"name",{value:n,configurable:!0}),"c"),An=Object.defineProperty,le=ae((e,n)=>An(e,"name",{value:n,configurable:!0}),"c"),Cn=Object.defineProperty,ue=le((e,n)=>Cn(e,"name",{value:n,configurable:!0}),"c"),Fn=Object.defineProperty,ce=ue((e,n)=>Fn(e,"name",{value:n,configurable:!0}),"c"),Jn=Object.defineProperty,ve=ce((e,n)=>Jn(e,"name",{value:n,configurable:!0}),"c"),Ln=Object.defineProperty,fe=ve((e,n)=>Ln(e,"name",{value:n,configurable:!0}),"c"),Nn=Object.defineProperty,pe=fe((e,n)=>Nn(e,"name",{value:n,configurable:!0}),"l"),qn=Object.defineProperty,be=pe((e,n)=>qn(e,"name",{value:n,configurable:!0}),"l"),zn=Object.defineProperty,se=be((e,n)=>zn(e,"name",{value:n,configurable:!0}),"c"),Bn=Object.defineProperty,de=se((e,n)=>Bn(e,"name",{value:n,configurable:!0}),"c"),Dn=Object.defineProperty,me=de((e,n)=>Dn(e,"name",{value:n,configurable:!0}),"c"),Gn=Object.defineProperty,ge=me((e,n)=>Gn(e,"name",{value:n,configurable:!0}),"u"),Hn=Object.defineProperty,ye=ge((e,n)=>Hn(e,"name",{value:n,configurable:!0}),"u"),Kn=Object.defineProperty,je=ye((e,n)=>Kn(e,"name",{value:n,configurable:!0}),"u"),Mn=Object.defineProperty,Te=je((e,n)=>Mn(e,"name",{value:n,configurable:!0}),"c"),Qn=Object.defineProperty,Ee=Te((e,n)=>Qn(e,"name",{value:n,configurable:!0}),"c"),Vn=Object.defineProperty,Oe=Ee((e,n)=>Vn(e,"name",{value:n,configurable:!0}),"c"),Wn=Object.defineProperty,Pe=Oe((e,n)=>Wn(e,"name",{value:n,configurable:!0}),"u"),Xn=Object.defineProperty,Ie=Pe((e,n)=>Xn(e,"name",{value:n,configurable:!0}),"u"),Yn=Object.defineProperty,we=Ie((e,n)=>Yn(e,"name",{value:n,configurable:!0}),"u"),Zn=Object.defineProperty,ke=we((e,n)=>Zn(e,"name",{value:n,configurable:!0}),"u"),_n=Object.defineProperty,$e=ke((e,n)=>_n(e,"name",{value:n,configurable:!0}),"o"),et=Object.defineProperty,he=$e((e,n)=>et(e,"name",{value:n,configurable:!0}),"o"),nt=Object.defineProperty,xe=he((e,n)=>nt(e,"name",{value:n,configurable:!0}),"o"),tt=Object.defineProperty,Se=xe((e,n)=>tt(e,"name",{value:n,configurable:!0}),"o"),rt=Object.defineProperty,Ue=Se((e,n)=>rt(e,"name",{value:n,configurable:!0}),"o"),ot=Object.defineProperty,Re=Ue((e,n)=>ot(e,"name",{value:n,configurable:!0}),"o");import{fingerprint as l,ulid as u}from"@lensmcp/core";const it="pending";export function envelopeToEvent(e,n=it){const i=e.tabId?{tabId:e.tabId}:{};switch(e.kind){case"error":return{id:u(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"runtime",severity:"error",context:{sessionId:n,...i},fingerprint:l({kind:"runtime",identity:`error:${t(e.stack)}`,file:e.source,detail:e.message}),title:e.message,message:e.stack??e.message,location:e.source?{file:e.source,line:e.lineno,column:e.colno}:void 0,raw:e};case"unhandledrejection":return{id:u(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"runtime",severity:"error",context:{sessionId:n,...i},fingerprint:l({kind:"runtime",identity:`unhandledrejection:${e.reason.slice(0,80)}`}),title:"Unhandled promise rejection",message:e.reason,raw:e};case"console":{const a=e.level==="error"?"error":e.level==="warn"?"warning":"info",Ae=e.args.map(o).join(" ");return{id:u(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"runtime",severity:a,context:{sessionId:n,...i},fingerprint:l({kind:"runtime",identity:`console:${e.level}:${Ae.slice(0,80)}`}),title:`console.${e.level}`,message:Ae,raw:e}}case"fetch":{const a=e.error!==void 0||e.status!==void 0&&e.status>=400;return{id:u(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"network",severity:a?"error":"info",context:{sessionId:n,...i},fingerprint:l({kind:"network",identity:`${e.method}:${r(e.url)}:${e.status??"err"}`}),title:`${e.method} ${e.url}${e.status!==void 0?` \u2192 ${e.status}`:""}`,message:e.error,relatedUrls:[e.url],raw:e}}case"route":return{id:u(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"runtime",severity:"info",context:{sessionId:n,url:e.url,...i},fingerprint:l({kind:"runtime",identity:`route:${e.url}`}),title:`Route \u2192 ${e.url}`,raw:e};case"ready":return{id:u(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"runtime",severity:"info",context:{sessionId:n,url:e.url,...i},fingerprint:l({kind:"runtime",identity:"client-ready"}),title:"Client runtime ready",message:e.userAgent,raw:e};case"publish":return{id:u(),sessionId:n,timestamp:e.at,source:e.source,category:e.category,severity:e.severity??"info",context:{sessionId:n,...i,...e.context??{}},fingerprint:e.fingerprint??l({kind:"publish",identity:e.title}),title:e.title,message:e.message,raw:e.raw}}}c(envelopeToEvent,"envelopeToEvent"),v(envelopeToEvent,"envelopeToEvent"),f(envelopeToEvent,"envelopeToEvent"),p(envelopeToEvent,"envelopeToEvent"),b(envelopeToEvent,"envelopeToEvent"),s(envelopeToEvent,"envelopeToEvent"),d(envelopeToEvent,"envelopeToEvent"),m(envelopeToEvent,"envelopeToEvent"),g(envelopeToEvent,"envelopeToEvent"),y(envelopeToEvent,"envelopeToEvent"),j(envelopeToEvent,"envelopeToEvent"),T(envelopeToEvent,"envelopeToEvent"),E(envelopeToEvent,"envelopeToEvent"),O(envelopeToEvent,"envelopeToEvent"),P(envelopeToEvent,"envelopeToEvent"),I(envelopeToEvent,"envelopeToEvent"),w(envelopeToEvent,"envelopeToEvent"),k(envelopeToEvent,"envelopeToEvent"),$(envelopeToEvent,"envelopeToEvent"),h(envelopeToEvent,"envelopeToEvent"),x(envelopeToEvent,"envelopeToEvent"),S(envelopeToEvent,"envelopeToEvent"),U(envelopeToEvent,"envelopeToEvent"),R(envelopeToEvent,"envelopeToEvent"),A(envelopeToEvent,"envelopeToEvent"),C(envelopeToEvent,"envelopeToEvent"),F(envelopeToEvent,"envelopeToEvent"),J(envelopeToEvent,"envelopeToEvent"),L(envelopeToEvent,"envelopeToEvent"),N(envelopeToEvent,"envelopeToEvent"),q(envelopeToEvent,"envelopeToEvent"),z(envelopeToEvent,"envelopeToEvent"),B(envelopeToEvent,"envelopeToEvent"),D(envelopeToEvent,"envelopeToEvent"),G(envelopeToEvent,"envelopeToEvent"),H(envelopeToEvent,"envelopeToEvent"),K(envelopeToEvent,"envelopeToEvent"),M(envelopeToEvent,"envelopeToEvent"),Q(envelopeToEvent,"envelopeToEvent"),V(envelopeToEvent,"envelopeToEvent"),W(envelopeToEvent,"envelopeToEvent"),X(envelopeToEvent,"envelopeToEvent"),Y(envelopeToEvent,"envelopeToEvent"),Z(envelopeToEvent,"envelopeToEvent"),_(envelopeToEvent,"envelopeToEvent"),ee(envelopeToEvent,"envelopeToEvent"),ne(envelopeToEvent,"envelopeToEvent"),te(envelopeToEvent,"envelopeToEvent"),re(envelopeToEvent,"envelopeToEvent"),oe(envelopeToEvent,"envelopeToEvent"),ie(envelopeToEvent,"envelopeToEvent"),ae(envelopeToEvent,"envelopeToEvent"),le(envelopeToEvent,"envelopeToEvent"),ue(envelopeToEvent,"envelopeToEvent"),ce(envelopeToEvent,"envelopeToEvent"),ve(envelopeToEvent,"envelopeToEvent"),fe(envelopeToEvent,"envelopeToEvent"),pe(envelopeToEvent,"envelopeToEvent"),be(envelopeToEvent,"envelopeToEvent"),se(envelopeToEvent,"envelopeToEvent"),de(envelopeToEvent,"envelopeToEvent"),me(envelopeToEvent,"envelopeToEvent"),ge(envelopeToEvent,"envelopeToEvent"),ye(envelopeToEvent,"envelopeToEvent"),je(envelopeToEvent,"envelopeToEvent"),Te(envelopeToEvent,"envelopeToEvent"),Ee(envelopeToEvent,"envelopeToEvent"),Oe(envelopeToEvent,"envelopeToEvent"),Pe(envelopeToEvent,"envelopeToEvent"),Ie(envelopeToEvent,"envelopeToEvent"),we(envelopeToEvent,"envelopeToEvent"),ke(envelopeToEvent,"envelopeToEvent"),$e(envelopeToEvent,"envelopeToEvent"),he(envelopeToEvent,"envelopeToEvent"),xe(envelopeToEvent,"envelopeToEvent"),Se(envelopeToEvent,"envelopeToEvent"),Ue(envelopeToEvent,"envelopeToEvent"),Re(envelopeToEvent,"envelopeToEvent");function t(e){if(!e)return"unknown";const n=e.split(`
2
+ `).slice(0,2);for(const i of n){const a=i.match(/at\s+(\S+)/);if(a&&a[1])return a[1]}return"unknown"}c(t,"t"),v(t,"t"),f(t,"t"),p(t,"t"),b(t,"t"),s(t,"t"),d(t,"t"),m(t,"t"),g(t,"t"),y(t,"t"),j(t,"t"),T(t,"t"),E(t,"t"),O(t,"t"),P(t,"t"),I(t,"t"),w(t,"t"),k(t,"t"),$(t,"t"),h(t,"t"),x(t,"t"),S(t,"t"),U(t,"t"),R(t,"t"),A(t,"t"),C(t,"t"),F(t,"t"),J(t,"t"),L(t,"t"),N(t,"t"),q(t,"t"),z(t,"t"),B(t,"t"),D(t,"t"),G(t,"t"),H(t,"t"),K(t,"t"),M(t,"t"),Q(t,"t"),V(t,"t"),W(t,"t"),X(t,"t"),Y(t,"t"),Z(t,"t"),_(t,"t"),ee(t,"t"),ne(t,"t"),te(t,"t"),re(t,"t"),oe(t,"t"),ie(t,"t"),ae(t,"t"),le(t,"t"),ue(t,"t"),ce(t,"n"),ve(t,"t"),fe(t,"n"),pe(t,"t"),be(t,"n"),se(t,"t"),de(t,"n"),me(t,"t"),ge(t,"r"),ye(t,"t"),je(t,"r"),Te(t,"t"),Ee(t,"n"),Oe(t,"n"),Pe(t,"r"),Ie(t,"n"),we(t,"o"),ke(t,"a"),$e(t,"l"),he(t,"l"),xe(t,"c"),Se(t,"c"),Ue(t,"s"),Re(t,"normaliseStackTopFrame");function r(e){try{return`${new URL(e,"http://x").pathname}`}catch{return e}}c(r,"r"),v(r,"r"),f(r,"r"),p(r,"r"),b(r,"r"),s(r,"r"),d(r,"r"),m(r,"r"),g(r,"r"),y(r,"r"),j(r,"r"),T(r,"r"),E(r,"r"),O(r,"r"),P(r,"r"),I(r,"r"),w(r,"r"),k(r,"r"),$(r,"r"),h(r,"r"),x(r,"r"),S(r,"r"),U(r,"r"),R(r,"r"),A(r,"r"),C(r,"r"),F(r,"r"),J(r,"r"),L(r,"r"),N(r,"r"),q(r,"r"),z(r,"r"),B(r,"r"),D(r,"r"),G(r,"r"),H(r,"r"),K(r,"r"),M(r,"r"),Q(r,"r"),V(r,"r"),W(r,"r"),X(r,"r"),Y(r,"r"),Z(r,"r"),_(r,"r"),ee(r,"r"),ne(r,"r"),te(r,"r"),re(r,"r"),oe(r,"r"),ie(r,"r"),ae(r,"r"),le(r,"r"),ue(r,"r"),ce(r,"r"),ve(r,"r"),fe(r,"r"),pe(r,"r"),be(r,"r"),se(r,"r"),de(r,"r"),me(r,"r"),ge(r,"n"),ye(r,"r"),je(r,"n"),Te(r,"r"),Ee(r,"r"),Oe(r,"r"),Pe(r,"i"),Ie(r,"i"),we(r,"a"),ke(r,"c"),$e(r,"d"),he(r,"d"),xe(r,"l"),Se(r,"l"),Ue(r,"m"),Re(r,"normaliseUrl");function o(e){if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}c(o,"o"),v(o,"o"),f(o,"o"),p(o,"o"),b(o,"o"),s(o,"o"),d(o,"o"),m(o,"o"),g(o,"o"),y(o,"o"),j(o,"o"),T(o,"o"),E(o,"o"),O(o,"o"),P(o,"o"),I(o,"o"),w(o,"o"),k(o,"o"),$(o,"o"),h(o,"o"),x(o,"o"),S(o,"o"),U(o,"o"),R(o,"o"),A(o,"o"),C(o,"o"),F(o,"o"),J(o,"o"),L(o,"o"),N(o,"o"),q(o,"o"),z(o,"o"),B(o,"o"),D(o,"o"),G(o,"o"),H(o,"o"),K(o,"o"),M(o,"o"),Q(o,"o"),V(o,"o"),W(o,"o"),X(o,"o"),Y(o,"o"),Z(o,"o"),_(o,"i"),ee(o,"o"),ne(o,"i"),te(o,"i"),re(o,"i"),oe(o,"i"),ie(o,"i"),ae(o,"i"),le(o,"i"),ue(o,"i"),ce(o,"i"),ve(o,"i"),fe(o,"i"),pe(o,"i"),be(o,"i"),se(o,"i"),de(o,"i"),me(o,"i"),ge(o,"i"),ye(o,"i"),je(o,"i"),Te(o,"i"),Ee(o,"i"),Oe(o,"i"),Pe(o,"o"),Ie(o,"o"),we(o,"c"),ke(o,"u"),$e(o,"m"),he(o,"m"),xe(o,"d"),Se(o,"d"),Ue(o,"d"),Re(o,"stringify");
package/lib/plugin.js CHANGED
@@ -1,8 +1,9 @@
1
- "use strict";var $=Object.defineProperty;var g=(e,t)=>$(e,"name",{value:t,configurable:!0});var G=Object.defineProperty,u=g((e,t)=>G(e,"name",{value:t,configurable:!0}),"d");import{randomBytes as J}from"node:crypto";import{existsSync as O,readdirSync as q,realpathSync as N,statSync as z}from"node:fs";import{delimiter as Z,dirname as L,join as _,relative as I,resolve as k,sep as A}from"node:path";import{fingerprint as C,ulid as F}from"@lensmcp/core";import{BRIDGE_TOKEN_PARAM as Q,createBridgeServer as ee,makePublisher as x,handleClientEnvelope as te}from"@lensmcp/bridge";import{CLIENT_VIRTUAL_ID as H,createRuntimeModuleGuard as ne,RESOLVED_CLIENT_VIRTUAL_ID as j}from"./runtime-guard.js";const se="/__lensmcp/watcher-health",V=256,oe=64,re=new Set(["node_modules",".git","dist","tmp","coverage","build","out","target",".nx",".lensmcp"]);export function checkoutViteCacheDir(e,t,r=process.cwd()){const h=k(r,e??".");let i;if(t)i=k(h,t);else{let f=h;for(;!O(_(f,"package.json"))&&L(f)!==f;)f=L(f);i=_(O(_(f,"package.json"))?f:h,"node_modules",".vite")}const p=i.split(A),c=p.indexOf("node_modules");if(c<1)return;const o=p.slice(0,c).join(A)||A;try{if(N(_(o,"node_modules"))===_(N(o),"node_modules"))return}catch{return}const l=p.slice(c+1);return _(o,".lensmcp","cache","vite",...l[0]===".vite"?l.slice(1):l)}g(checkoutViteCacheDir,"checkoutViteCacheDir"),u(checkoutViteCacheDir,"checkoutViteCacheDir");export function resolveExtraWatchRoots(e,t){if(!e)return[];const r=k(t),h=u((c,o)=>{const l=I(o,c);return l!==""&&!l.startsWith("..")&&!l.startsWith(A)&&!/^[A-Za-z]:/.test(l)},"inside"),i=[],p=u(c=>{i.length<oe&&!i.includes(c)&&i.push(c)},"push");for(const c of e.split(Z)){const o=c.trim();if(!o)continue;const l=k(o);let f;try{f=O(l)&&z(l).isDirectory()}catch{f=!1}if(f&&!(l===r||h(l,r))){if(h(r,l)){const S=I(l,r).split(A).filter(Boolean);let w=l;for(const n of S){let a;try{a=q(w,{withFileTypes:!0})}catch{a=[]}for(const s of a)!s.isDirectory()||s.name===n||s.name.startsWith(".")||re.has(s.name)||p(_(w,s.name));w=_(w,n)}continue}p(l)}}return i}g(resolveExtraWatchRoots,"resolveExtraWatchRoots"),u(resolveExtraWatchRoots,"resolveExtraWatchRoots");export function lensmcpVitePlugin(e={},t={}){const r=e.enabled??!0,h=e.wsHost??"127.0.0.1",i=e.injectClient??!0;let p,c,o;const l=x(t),f=e.aliasValtio??!0,S=e.transformSource??!0,w=e.applyOnBuild??process.env.LENSMCP_VITE_APPLY_ON_BUILD==="1";return{name:"@lensmcp/vite-plugin",apply:u((n,a)=>r&&(a.command==="serve"||w),"apply"),enforce:"pre",wsPort:u(()=>p,"wsPort"),config(n){if(!r)return;const a=checkoutViteCacheDir(n?.root,n?.cacheDir);a&&console.log(`[lensmcp] node_modules is shared with another checkout \u2014 Vite's dependency cache moves to ${a}`),process.env.LENSMCP_FREEZE==="1"&&(console.log("[lensmcp] frozen worktree instance \u2014 Vite watches no files"),n&&(n.server={...n.server,watch:null}));const s={...a?{cacheDir:a}:{}};return f?{...s,resolve:{alias:[{find:/^valtio$/,replacement:"@lensmcp/valtio-instrumentation"}]}}:Object.keys(s).length?s:void 0},async configureServer(n){if(!r)return;o=J(24).toString("base64url"),c=await ee({host:h,port:e.wsPort??0,bus:t.bus,sessionId:t.sessionId,token:o,...e.wsAllowedOrigins?{allowedOrigins:e.wsAllowedOrigins}:{}}),p=c.port,n.middlewares.use(ne(c)),n.ws.on("vite:error",d=>{l(X(d,t.sessionId))});const a=resolveExtraWatchRoots(process.env.LENSMCP_WATCH_DIRS,n.config?.root??process.cwd());if(a.length>0&&typeof n.watcher?.add=="function")try{n.watcher.add(a),console.log(`[lensmcp] watching ${a.length} extra source root(s) for set changes: ${a.map(d=>I(n.config?.root??process.cwd(),d)||d).join(", ")}`)}catch(d){console.warn(`[lensmcp] could not widen the watcher: ${d?.message??String(d)}`)}let s=0,m=0,R=0;const E=[],v=u((d,y)=>{s=Date.now(),m+=1,R+=1,E.push({sequence:R,kind:d,path:k(y),at:s}),E.length>V&&E.splice(0,E.length-V)},"stampFsSetEvent");n.watcher.on("add",d=>v("add",d)),n.watcher.on("addDir",d=>v("addDir",d)),n.watcher.on("unlink",d=>v("unlink",d)),n.watcher.on("unlinkDir",d=>v("unlinkDir",d)),n.middlewares.use(se,(d,y)=>{y.setHeader("content-type","application/json"),y.setHeader("cache-control","no-store"),y.end(JSON.stringify({schemaVersion:2,ready:!0,sequence:R,lastFsSetEventAt:s,fsSetEvents:m,recentEvents:E,extraWatchRoots:a,now:Date.now()}))})},resolveId(n){return n===H?j:null},load(n){if(n!==j)return null;const a=p??e.wsPort??0;return Y({host:h,port:a,token:o,hmrRecovery:e.hmrRecovery!==!1})},async transform(n,a){if(!r||!S)return null;const s=a.split("?")[0]??a;if(s.includes("/node_modules/")||!/\.[jt]sx$/.test(s))return null;const m=await P(n,s);return m?{code:m.code,map:m.map}:null},transformIndexHtml(){if(!(!i||!r))return[{tag:"script",attrs:{type:"module",src:H},injectTo:"head-prepend"}]},handleHotUpdate(n){if(!r)return;const a=n.modules.map(m=>m.file??m.id??null).filter(m=>!!m),s=hmrReloadCause(n.modules);l({id:F(),sessionId:t.sessionId??"pending",timestamp:Date.now(),source:"vite",category:"build",severity:s.willFullReload?"warning":"info",context:{sessionId:t.sessionId??"pending"},fingerprint:C({kind:"hmr",identity:n.file}),title:s.willFullReload?`HMR ${n.file} \u2014 FULL RELOAD (no boundary above ${s.deadEnd??"it"})`:`HMR ${n.file}`,location:{file:n.file},relatedFiles:a,raw:{kind:"hmr",file:n.file,willFullReload:s.willFullReload,deadEnd:s.deadEnd,chain:s.chain,acceptedBy:s.boundaries}})},generateBundle(n,a){if(!r)return;const s=[];let m=0;for(const E of Object.values(a)){const v=E,d=v.fileName;let y;if(v.type==="chunk")y=(v.code??"").length;else{const b=v.source;y=typeof b=="string"?b.length:b instanceof Uint8Array?b.byteLength:0}m+=y;const M=[];if(v.type==="chunk"&&v.modules){for(const[b,T]of Object.entries(v.modules)){const K=T.renderedLength??T.originalLength??0;M.push({id:b,sizeBytes:K})}M.sort((b,T)=>T.sizeBytes-b.sizeBytes)}s.push({name:d,sizeBytes:y,modules:M})}const R={timestamp:Date.now(),totalBytes:m,chunks:s};l({id:F(),sessionId:t.sessionId??"pending",timestamp:Date.now(),source:"rollup",category:"build",severity:"info",context:{sessionId:t.sessionId??"pending"},fingerprint:C({kind:"bundle",identity:"report"}),title:`Bundle report: ${s.length} chunks, ${m} bytes`,raw:{kind:"bundle-report",report:R}})},async closeBundle(){c&&(await c.close(),c=void 0,o=void 0)}}}g(lensmcpVitePlugin,"lensmcpVitePlugin"),u(lensmcpVitePlugin,"lensmcpVitePlugin");const D=12;export function hmrReloadCause(e){const t=[],r=[],h=new Set;let i=null;const p=u(o=>o.file??o.id??"(anonymous module)","nameOf"),c=u((o,l)=>{if(h.has(o))return!1;if(h.add(o),o.isSelfAccepting===!0)return r.length<D&&r.push(p(o)),!1;const f=[...o.importers??[]];if(f.length===0)return i===null&&(i=p(o),t.push(...l.slice(-D),p(o))),!0;let S=!1;for(const w of f){if(w.acceptedHmrDeps?.has(o)){r.length<D&&r.push(p(w));continue}c(w,[...l,p(o)])&&(S=!0)}return S},"walk");return{willFullReload:e.map(o=>c(o,[])).some(Boolean),deadEnd:i,chain:t,boundaries:r}}g(hmrReloadCause,"hmrReloadCause"),u(hmrReloadCause,"hmrReloadCause");async function P(e,t){try{const[{transformSync:r},{lensmcpBabelPlugin:h}]=await Promise.all([import("@babel/core"),import("@lensmcp/react-instrumentation")]),i=r(e,{filename:t,babelrc:!1,configFile:!1,sourceMaps:!0,parserOpts:{plugins:["jsx","typescript"]},plugins:[[h,{rootDir:process.cwd()}]],code:!0});return i?.code?{code:i.code,map:i.map}:null}catch(r){return U(t,r),null}}g(P,"Q"),u(P,"runLensmcpBabel");const B=new Set;function U(e,t){B.has(e)||(B.add(e),console.warn(`[lensmcp] could not instrument ${e}: ${t?.message??t}. The file still builds, but its renders, effects and hooks will be MISSING from react://renders/*, react://effects/recent and react://hooks/recent.`))}g(U,"ee"),u(U,"warnTransformFailed");export function resetTransformFailuresForTests(){B.clear()}g(resetTransformFailuresForTests,"resetTransformFailuresForTests"),u(resetTransformFailuresForTests,"resetTransformFailuresForTests");export function handleClientEnvelope(e,t){te(e,x(t),t.sessionId)}g(handleClientEnvelope,"handleClientEnvelope"),u(handleClientEnvelope,"handleClientEnvelope");function W(e){const t=e?.loc?.file??e?.id;return typeof t!="string"||t.length===0?void 0:{file:t.split("?")[0]||t,...typeof e?.loc?.line=="number"?{line:e.loc.line}:{},...typeof e?.loc?.column=="number"?{column:e.loc.column}:{}}}g(W,"te"),u(W,"errorLocation");function X(e,t){const r=e.err?.message??"Vite error",h=e.err?.stack,i=W(e.err);return{id:F(),sessionId:t??"pending",timestamp:Date.now(),source:"vite",category:"build",severity:"error",context:{sessionId:t??"pending"},fingerprint:C({kind:"vite",identity:e.type??r,...i?{file:i.file}:{}}),title:r,message:h,...i?{location:i}:{},raw:{kind:"build-diagnostic",...i?{file:i.file}:{},...e.err?.plugin?{plugin:e.err.plugin}:{}}}}g(X,"ne"),u(X,"viteErrorToEvent");function Y(e){const t=`ws://${e.host}:${e.port}${e.token?`/?${Q}=${encodeURIComponent(e.token)}`:""}`;return`// @lensmcp/client-runtime (inlined by @lensmcp/vite-plugin)
1
+ "use strict";var $=Object.defineProperty;var g=(e,t)=>$(e,"name",{value:t,configurable:!0});var G=Object.defineProperty,u=g((e,t)=>G(e,"name",{value:t,configurable:!0}),"d");import{randomBytes as J}from"node:crypto";import{existsSync as O,readdirSync as q,realpathSync as N,statSync as z}from"node:fs";import{delimiter as Z,dirname as L,join as _,relative as I,resolve as k,sep as A}from"node:path";import{fingerprint as C,ulid as F}from"@lensmcp/core";import{BRIDGE_TOKEN_PARAM as Q,createBridgeServer as ee,makePublisher as x,handleClientEnvelope as te}from"@lensmcp/bridge";import{CLIENT_VIRTUAL_ID as H,createRuntimeModuleGuard as ne,RESOLVED_CLIENT_VIRTUAL_ID as P}from"./runtime-guard.js";const se="/__lensmcp/watcher-health",j=256,oe=64,re=new Set(["node_modules",".git","dist","tmp","coverage","build","out","target",".nx",".lensmcp"]);export function checkoutViteCacheDir(e,t,r=process.cwd()){const h=k(r,e??".");let i;if(t)i=k(h,t);else{let f=h;for(;!O(_(f,"package.json"))&&L(f)!==f;)f=L(f);i=_(O(_(f,"package.json"))?f:h,"node_modules",".vite")}const p=i.split(A),c=p.indexOf("node_modules");if(c<1)return;const o=p.slice(0,c).join(A)||A;try{if(N(_(o,"node_modules"))===_(N(o),"node_modules"))return}catch{return}const l=p.slice(c+1);return _(o,".lensmcp","cache","vite",...l[0]===".vite"?l.slice(1):l)}g(checkoutViteCacheDir,"checkoutViteCacheDir"),u(checkoutViteCacheDir,"checkoutViteCacheDir");export function resolveExtraWatchRoots(e,t){if(!e)return[];const r=k(t),h=u((c,o)=>{const l=I(o,c);return l!==""&&!l.startsWith("..")&&!l.startsWith(A)&&!/^[A-Za-z]:/.test(l)},"inside"),i=[],p=u(c=>{i.length<oe&&!i.includes(c)&&i.push(c)},"push");for(const c of e.split(Z)){const o=c.trim();if(!o)continue;const l=k(o);let f;try{f=O(l)&&z(l).isDirectory()}catch{f=!1}if(f&&!(l===r||h(l,r))){if(h(r,l)){const S=I(l,r).split(A).filter(Boolean);let v=l;for(const n of S){let a;try{a=q(v,{withFileTypes:!0})}catch{a=[]}for(const s of a)!s.isDirectory()||s.name===n||s.name.startsWith(".")||re.has(s.name)||p(_(v,s.name));v=_(v,n)}continue}p(l)}}return i}g(resolveExtraWatchRoots,"resolveExtraWatchRoots"),u(resolveExtraWatchRoots,"resolveExtraWatchRoots");export function lensmcpVitePlugin(e={},t={}){const r=e.enabled??!0,h=e.wsHost??"127.0.0.1",i=e.injectClient??!0;let p,c,o;const l=x(t),f=e.aliasValtio??!0,S=e.transformSource??!0,v=e.applyOnBuild??process.env.LENSMCP_VITE_APPLY_ON_BUILD==="1";return{name:"@lensmcp/vite-plugin",apply:u((n,a)=>r&&(a.command==="serve"||v),"apply"),enforce:"pre",wsPort:u(()=>p,"wsPort"),config(n){if(!r)return;const a=checkoutViteCacheDir(n?.root,n?.cacheDir);a&&console.log(`[lensmcp] node_modules is shared with another checkout \u2014 Vite's dependency cache moves to ${a}`),process.env.LENSMCP_FREEZE==="1"&&(console.log("[lensmcp] frozen worktree instance \u2014 Vite watches no files"),n&&(n.server={...n.server,watch:null}));const s={...a?{cacheDir:a}:{}};return f?{...s,resolve:{alias:[{find:/^valtio$/,replacement:"@lensmcp/valtio-instrumentation"}]}}:Object.keys(s).length?s:void 0},async configureServer(n){if(!r)return;o=J(24).toString("base64url"),c=await ee({host:h,port:e.wsPort??0,bus:t.bus,sessionId:t.sessionId,token:o,...e.wsAllowedOrigins?{allowedOrigins:e.wsAllowedOrigins}:{}}),p=c.port,n.middlewares.use(ne(c)),n.ws.on("vite:error",d=>{l(X(d,t.sessionId))});const a=resolveExtraWatchRoots(process.env.LENSMCP_WATCH_DIRS,n.config?.root??process.cwd());if(a.length>0&&typeof n.watcher?.add=="function")try{n.watcher.add(a),console.log(`[lensmcp] watching ${a.length} extra source root(s) for set changes: ${a.map(d=>I(n.config?.root??process.cwd(),d)||d).join(", ")}`)}catch(d){console.warn(`[lensmcp] could not widen the watcher: ${d?.message??String(d)}`)}let s=0,m=0,R=0;const E=[],w=u((d,y)=>{s=Date.now(),m+=1,R+=1,E.push({sequence:R,kind:d,path:k(y),at:s}),E.length>j&&E.splice(0,E.length-j)},"stampFsSetEvent");n.watcher.on("add",d=>w("add",d)),n.watcher.on("addDir",d=>w("addDir",d)),n.watcher.on("unlink",d=>w("unlink",d)),n.watcher.on("unlinkDir",d=>w("unlinkDir",d)),n.middlewares.use(se,(d,y)=>{y.setHeader("content-type","application/json"),y.setHeader("cache-control","no-store"),y.end(JSON.stringify({schemaVersion:2,ready:!0,sequence:R,lastFsSetEventAt:s,fsSetEvents:m,recentEvents:E,extraWatchRoots:a,now:Date.now()}))})},resolveId(n){return n===H?P:null},load(n){if(n!==P)return null;const a=p??e.wsPort??0,s=process.env.NX_TASK_TARGET_PROJECT;return Y({host:h,port:a,token:o,hmrRecovery:e.hmrRecovery!==!1,...s?{app:s}:{}})},async transform(n,a){if(!r||!S)return null;const s=a.split("?")[0]??a;if(s.includes("/node_modules/")||!/\.[jt]sx$/.test(s))return null;const m=await V(n,s);return m?{code:m.code,map:m.map}:null},transformIndexHtml(){if(!(!i||!r))return[{tag:"script",attrs:{type:"module",src:H},injectTo:"head-prepend"}]},handleHotUpdate(n){if(!r)return;const a=n.modules.map(m=>m.file??m.id??null).filter(m=>!!m),s=hmrReloadCause(n.modules);l({id:F(),sessionId:t.sessionId??"pending",timestamp:Date.now(),source:"vite",category:"build",severity:s.willFullReload?"warning":"info",context:{sessionId:t.sessionId??"pending"},fingerprint:C({kind:"hmr",identity:n.file}),title:s.willFullReload?`HMR ${n.file} \u2014 FULL RELOAD (no boundary above ${s.deadEnd??"it"})`:`HMR ${n.file}`,location:{file:n.file},relatedFiles:a,raw:{kind:"hmr",file:n.file,willFullReload:s.willFullReload,deadEnd:s.deadEnd,chain:s.chain,acceptedBy:s.boundaries}})},generateBundle(n,a){if(!r)return;const s=[];let m=0;for(const E of Object.values(a)){const w=E,d=w.fileName;let y;if(w.type==="chunk")y=(w.code??"").length;else{const b=w.source;y=typeof b=="string"?b.length:b instanceof Uint8Array?b.byteLength:0}m+=y;const M=[];if(w.type==="chunk"&&w.modules){for(const[b,T]of Object.entries(w.modules)){const K=T.renderedLength??T.originalLength??0;M.push({id:b,sizeBytes:K})}M.sort((b,T)=>T.sizeBytes-b.sizeBytes)}s.push({name:d,sizeBytes:y,modules:M})}const R={timestamp:Date.now(),totalBytes:m,chunks:s};l({id:F(),sessionId:t.sessionId??"pending",timestamp:Date.now(),source:"rollup",category:"build",severity:"info",context:{sessionId:t.sessionId??"pending"},fingerprint:C({kind:"bundle",identity:"report"}),title:`Bundle report: ${s.length} chunks, ${m} bytes`,raw:{kind:"bundle-report",report:R}})},async closeBundle(){c&&(await c.close(),c=void 0,o=void 0)}}}g(lensmcpVitePlugin,"lensmcpVitePlugin"),u(lensmcpVitePlugin,"lensmcpVitePlugin");const D=12;export function hmrReloadCause(e){const t=[],r=[],h=new Set;let i=null;const p=u(o=>o.file??o.id??"(anonymous module)","nameOf"),c=u((o,l)=>{if(h.has(o))return!1;if(h.add(o),o.isSelfAccepting===!0)return r.length<D&&r.push(p(o)),!1;const f=[...o.importers??[]];if(f.length===0)return i===null&&(i=p(o),t.push(...l.slice(-D),p(o))),!0;let S=!1;for(const v of f){if(v.acceptedHmrDeps?.has(o)){r.length<D&&r.push(p(v));continue}c(v,[...l,p(o)])&&(S=!0)}return S},"walk");return{willFullReload:e.map(o=>c(o,[])).some(Boolean),deadEnd:i,chain:t,boundaries:r}}g(hmrReloadCause,"hmrReloadCause"),u(hmrReloadCause,"hmrReloadCause");async function V(e,t){try{const[{transformSync:r},{lensmcpBabelPlugin:h}]=await Promise.all([import("@babel/core"),import("@lensmcp/react-instrumentation")]),i=r(e,{filename:t,babelrc:!1,configFile:!1,sourceMaps:!0,parserOpts:{plugins:["jsx","typescript"]},plugins:[[h,{rootDir:process.cwd()}]],code:!0});return i?.code?{code:i.code,map:i.map}:null}catch(r){return U(t,r),null}}g(V,"Q"),u(V,"runLensmcpBabel");const B=new Set;function U(e,t){B.has(e)||(B.add(e),console.warn(`[lensmcp] could not instrument ${e}: ${t?.message??t}. The file still builds, but its renders, effects and hooks will be MISSING from react://renders/*, react://effects/recent and react://hooks/recent.`))}g(U,"ee"),u(U,"warnTransformFailed");export function resetTransformFailuresForTests(){B.clear()}g(resetTransformFailuresForTests,"resetTransformFailuresForTests"),u(resetTransformFailuresForTests,"resetTransformFailuresForTests");export function handleClientEnvelope(e,t){te(e,x(t),t.sessionId)}g(handleClientEnvelope,"handleClientEnvelope"),u(handleClientEnvelope,"handleClientEnvelope");function W(e){const t=e?.loc?.file??e?.id;return typeof t!="string"||t.length===0?void 0:{file:t.split("?")[0]||t,...typeof e?.loc?.line=="number"?{line:e.loc.line}:{},...typeof e?.loc?.column=="number"?{column:e.loc.column}:{}}}g(W,"te"),u(W,"errorLocation");function X(e,t){const r=e.err?.message??"Vite error",h=e.err?.stack,i=W(e.err);return{id:F(),sessionId:t??"pending",timestamp:Date.now(),source:"vite",category:"build",severity:"error",context:{sessionId:t??"pending"},fingerprint:C({kind:"vite",identity:e.type??r,...i?{file:i.file}:{}}),title:r,message:h,...i?{location:i}:{},raw:{kind:"build-diagnostic",...i?{file:i.file}:{},...e.err?.plugin?{plugin:e.err.plugin}:{}}}}g(X,"ne"),u(X,"viteErrorToEvent");function Y(e){const t=`ws://${e.host}:${e.port}${e.token?`/?${Q}=${encodeURIComponent(e.token)}`:""}`;return`// @lensmcp/client-runtime (inlined by @lensmcp/vite-plugin)
2
2
  (() => {
3
3
  if (typeof window === 'undefined') return;
4
4
  if (window.__LENSMCP_CLIENT__) return;
5
5
  window.__LENSMCP_CLIENT__ = true;
6
+ ${e.app?`window.__LENSMCP_APP__ = ${JSON.stringify(e.app)};`:""}
6
7
 
7
8
  // React DevTools hook shim/patch \u2014 this script is the FIRST module script in
8
9
  // the document, so it runs BEFORE react-dom evaluates. react-dom only calls
@@ -42,6 +43,18 @@
42
43
  } catch (e) { /* strictly passive \u2014 never break the host page */ }
43
44
  })();
44
45
 
46
+ // Back/forward, heard FIRST: this script runs before the app's modules, so its popstate listener comes before the
47
+ // router's (react-router adds its own when its module loads) \u2014 and on window, listeners run in the order added,
48
+ // capture or not (Chrome 148, measured). @lensmcp/react-instrumentation subscribes, so a page visit and a route
49
+ // flow begin before the router renders the page it went back to and that page's effects start its fetches.
50
+ (() => {
51
+ try {
52
+ const subs = new Set();
53
+ window.__LENSMCP_NAV__ = { subscribe(fn) { subs.add(fn); return () => subs.delete(fn); } };
54
+ window.addEventListener('popstate', () => { for (const fn of subs) { try { fn(); } catch (e) {} } });
55
+ } catch (e) { /* strictly passive \u2014 never break the host page */ }
56
+ })();
57
+
45
58
  const WS_URL = ${JSON.stringify(t)};
46
59
  let ws = null;
47
60
  let queue = [];
@@ -95,7 +108,8 @@
95
108
  if (!ev) return false;
96
109
  if (ev.kind === 'ready') return true;
97
110
  if (ev.kind === 'hmr') return ev.event === 'full-reload';
98
- return ev.kind === 'publish' && !!ev.raw && ev.raw.kind === 'flow-origin';
111
+ // A page visit's two events are as rare (two per page shown) and the page catalog is built from nothing else.
112
+ return ev.kind === 'publish' && !!ev.raw && (ev.raw.kind === 'flow-origin' || ev.raw.kind === 'page-visit');
99
113
  }
100
114
  // One frame out of list[from..): as many events as fit both bounds, always at least one. Returns the
101
115
  // wire payload and how far it got.
@@ -179,7 +193,7 @@
179
193
  // If Vite threw the previous document away (a full reload), say so and why \u2014 the runtime that saw
180
194
  // the 'vite:beforeFullReload' parked the cause in sessionStorage because its socket died with it.
181
195
  let reloadCause;
182
- try { const c = sessionStorage.getItem('lensmcp:reloadCause'); if (c) { sessionStorage.removeItem('lensmcp:reloadCause'); reloadCause = JSON.parse(c); } } catch (e) {}
196
+ try { const c = sessionStorage.getItem('lensmcp:reloadCause'); if (c) { sessionStorage.removeItem('lensmcp:reloadCause'); reloadCause = JSON.parse(c); window.__LENSMCP_RELOAD_CAUSE__ = reloadCause; } } catch (e) {}
183
197
  send(Object.assign({ kind: 'ready', userAgent: navigator.userAgent, url: location.href }, reloadCause ? { reloadCause } : {}));
184
198
  });
185
199
  ws.addEventListener('close', () => { if (openOnce) setTimeout(open, 1000); });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lensmcp/vite-plugin",
3
- "version": "1.25.6",
3
+ "version": "1.25.7",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "module": "./index.js",
@@ -15,11 +15,11 @@
15
15
  },
16
16
  "dependencies": {
17
17
  "@babel/core": "^7.0.0",
18
- "@lensmcp/bridge": "1.25.6",
19
- "@lensmcp/core": "1.25.6",
20
- "@lensmcp/protocol-types": "1.25.6",
21
- "@lensmcp/react-instrumentation": "1.25.6",
22
- "@lensmcp/valtio-instrumentation": "1.25.6",
18
+ "@lensmcp/bridge": "1.25.7",
19
+ "@lensmcp/core": "1.25.7",
20
+ "@lensmcp/protocol-types": "1.25.7",
21
+ "@lensmcp/react-instrumentation": "1.25.7",
22
+ "@lensmcp/valtio-instrumentation": "1.25.7",
23
23
  "tslib": "^2.3.0"
24
24
  },
25
25
  "peerDependencies": {