@lensmcp/bridge 1.24.0 → 1.24.2
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.
- package/lib/envelope-contract.js +1 -1
- package/lib/event-mappers.js +2 -2
- package/lib/types.d.ts +6 -2
- package/package.json +3 -3
package/lib/envelope-contract.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var d=Object.defineProperty;var a=(t,e)=>d(t,"name",{value:e,configurable:!0});var g=Object.defineProperty,s=a((t,e)=>g(t,"name",{value:e,configurable:!0}),"r");import{BaseEventSchema as f,TraceContextSchema as l}from"@lensmcp/protocol-types";const r=s(t=>e=>t.safeParse(e).success,"conforms"),n=s(t=>typeof t=="string","isString"),p=s((...t)=>e=>typeof e=="string"&&t.includes(e),"oneOf"),o=f.shape,m={at:r(o.timestamp),tabId:r(l.shape.tabId)},v={error:{},"resource-error":{tagName:n},unhandledrejection:{reason:n},console:{level:p("log","info","warn","error","debug"),args:Array.isArray},fetch:{method:n,url:n},route:{url:n},ready:{userAgent:n,url:n},hmr:{event:p("full-reload","update","invalidate","ws-disconnect","ws-connect","ws-failed")},gone:{},publish:{source:r(o.source),category:r(o.category),severity:r(o.severity.optional()),title:r(o.title),message:r(o.message),fingerprint:r(o.fingerprint.optional()),context:r(l.partial().optional())}},y=new Map(Object.entries(v));export function conformsToEnvelopeContract(t){const e=t,i=e.kind,c=typeof i=="string"?y.get(i):void 0;return c?u(e,m)&&u(e,c):!1}a(conformsToEnvelopeContract,"conformsToEnvelopeContract"),s(conformsToEnvelopeContract,"conformsToEnvelopeContract");export function asBaseEvent(t){const e=f.safeParse(t);return e.success?e.data:void 0}a(asBaseEvent,"asBaseEvent"),s(asBaseEvent,"asBaseEvent");function u(t,e){for(const[i,c]of Object.entries(e))if(!c(t[i]))return!1;return!0}a(u,"l"),s(u,"satisfies");
|
package/lib/event-mappers.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";var I=Object.defineProperty;var c=(e,n)=>I(e,"name",{value:n,configurable:!0});var x=Object.defineProperty,d=c((e,n)=>x(e,"name",{value:n,configurable:!0}),"
|
|
2
|
-
`)[0]??e.reason;return{id:
|
|
1
|
+
"use strict";var I=Object.defineProperty;var c=(e,n)=>I(e,"name",{value:n,configurable:!0});var x=Object.defineProperty,d=c((e,n)=>x(e,"name",{value:n,configurable:!0}),"u");import{fingerprint as o,ulid as a}from"@lensmcp/core";import{redactDeep as y,redactText as m,redactUrl as g,safeText as u,safeTitle as l}from"./redact.js";const b="pending";export function envelopeToEvent(e,n=b){const s=e.tabId?{tabId:e.tabId}:{};switch(e.kind){case"error":{const r=!e.stack&&!e.source&&(!e.message||e.message==="Script error."),i=e.name&&e.name!=="Error"?`${e.name}: `:"",t=r?"Uncaught cross-origin script error (no detail available \u2014 add crossorigin to the script tag)":e.message?`${i}${e.message}`:`Uncaught ${e.name??"error"}`;return{id:a(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"runtime",severity:"error",context:{sessionId:n,...s},fingerprint:o({kind:"runtime",identity:`error:${h(e.stack)}`,file:e.source,detail:e.message??e.name}),title:l(t),message:u(e.stack??e.message),location:e.source?{file:g(e.source),line:e.lineno,column:e.colno}:void 0,raw:{...e,...e.message?{message:m(e.message)}:{},...e.stack?{stack:u(e.stack)}:{},...e.source?{source:g(e.source)}:{}}}}case"resource-error":{const r=e.url?g(e.url):void 0;return{id:a(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"runtime",severity:"error",context:{sessionId:n,...s},fingerprint:o({kind:"runtime",identity:`resource-error:${e.tagName}:${v(e.url??"")}`}),title:l(`Failed to load <${e.tagName}>${r?` ${r}`:""}`),...r?{relatedUrls:[r]}:{},raw:{...e,...r?{url:r}:{}}}}case"unhandledrejection":{const r=e.name&&e.name!=="Error"?`${e.name}: `:"",i=e.reason.split(`
|
|
2
|
+
`)[0]??e.reason;return{id:a(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"runtime",severity:"error",context:{sessionId:n,...s},fingerprint:o({kind:"runtime",identity:`unhandledrejection:${e.reason.slice(0,80)}`}),title:l(`Unhandled promise rejection: ${r}${i}`),message:u(e.stack??e.reason),raw:{...e,reason:m(e.reason),...e.stack?{stack:u(e.stack)}:{}}}}case"console":{const r=e.level==="error"?"error":e.level==="warn"?"warning":"info",i=y(e.args),t=i.map(k).join(" ");return{id:a(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"runtime",severity:r,context:{sessionId:n,...s},fingerprint:o({kind:"runtime",identity:`console:${e.level}:${t.slice(0,80)}`}),title:`console.${e.level}`,message:u(t),raw:{...e,args:i}}}case"fetch":{const r=e.error!==void 0||e.status!==void 0&&e.status>=400,i=g(e.url),t=e.status!==void 0?` \u2192 ${e.status}${e.statusText?` ${e.statusText}`:""}`:"";return{id:a(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"network",severity:r?"error":"info",context:{sessionId:n,...s},fingerprint:o({kind:"network",identity:`${e.method}:${v(e.url)}:${e.status??"err"}`}),title:l(`${e.method} ${i}${t}`),message:u(e.error),relatedUrls:[i],raw:{...e,url:i}}}case"route":return{id:a(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"runtime",severity:"info",context:{sessionId:n,url:e.url,...s},fingerprint:o({kind:"runtime",identity:`route:${e.url}`}),title:`Route \u2192 ${e.url}`,raw:e};case"ready":return{id:a(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"runtime",severity:"info",context:{sessionId:n,url:e.url,...s},fingerprint:o({kind:"runtime",identity:"client-ready"}),title:"Client runtime ready",message:e.reloadCause?`${e.userAgent} \u2014 after a Vite full reload${e.reloadCause.triggeredBy?` triggered by ${u(m(e.reloadCause.triggeredBy))}`:""}`:e.userAgent,raw:e};case"hmr":{const r=e.triggeredBy?m(e.triggeredBy):void 0,i=e.path?m(e.path):void 0,t=e.event==="full-reload"?`full-reload:${r??i??"?"}`:e.event==="invalidate"?`invalidate:${i??"?"}`:e.event,p=e.event==="full-reload"?`Vite full reload${r?` \u2014 ${l(r)} could not hot-update`:i?` \u2014 ${l(i)}`:""}`:e.event==="update"?`Vite HMR update (${e.count??e.updates?.length??0} module${(e.count??e.updates?.length??0)===1?"":"s"})`:e.event==="invalidate"?`Vite HMR invalidate \u2014 ${l(i??"?")}`:e.event==="ws-disconnect"?"Vite HMR socket lost \u2014 the page will poll and reload":e.event==="ws-failed"?e.recovering?"Vite HMR socket failed to connect \u2014 the page reloads once to get one":"Vite HMR socket failed to connect \u2014 this page gets no hot updates until it is reloaded":"Vite HMR socket connected";return{id:a(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"build",severity:e.event==="full-reload"||e.event==="ws-disconnect"||e.event==="ws-failed"?"warning":"info",context:{sessionId:n,...s},fingerprint:o({kind:"hmr",identity:t}),title:p,...e.message?{message:u(m(e.message))}:{},...r||i?{location:{file:r??i??""}}:{},...e.updates?.length?{relatedFiles:e.updates.map(f=>m(f))}:{},raw:{...e,...r?{triggeredBy:r}:{},...i?{path:i}:{}}}}case"gone":return{id:a(),sessionId:n,timestamp:e.at,source:"client-runtime",category:"runtime",severity:"info",context:{sessionId:n,...s},fingerprint:o({kind:"runtime",identity:"client-gone"}),title:"Client runtime gone",raw:e};case"publish":{if(!w(e.source))return;const r=$(e.category,e.raw),i=r&&r.status!==void 0&&r.status>=400?"error":e.severity??"info",t=d(f=>r&&r.url!==r.redactedUrl?f.split(r.url).join(r.redactedUrl):f,"scrub"),p=t(e.title);return{id:a(),sessionId:n,timestamp:e.at,source:e.source,category:e.category,severity:i,context:{...s,...e.context??{},sessionId:n},fingerprint:e.fingerprint?t(e.fingerprint):o({kind:"publish",identity:p}),title:l(p),message:u(e.message),...r?{relatedUrls:[r.redactedUrl]}:{},raw:r?{...y(e.raw),url:r.redactedUrl}:y(e.raw)}}}}c(envelopeToEvent,"envelopeToEvent"),d(envelopeToEvent,"envelopeToEvent");function $(e,n){if(e!=="network"||!n||typeof n!="object")return;const s=n;if(!(typeof s.url!="string"||s.url.length===0))return{url:s.url,redactedUrl:g(s.url),...typeof s.status=="number"?{status:s.status}:{}}}c($,"k"),d($,"networkDetails");function h(e){if(!e)return"unknown";const n=e.split(`
|
|
3
3
|
`).slice(0,2);for(const s of n){const r=s.match(/at\s+(\S+)/);if(r&&r[1])return r[1]}return"unknown"}c(h,"w"),d(h,"normaliseStackTopFrame");function v(e){try{return`${new URL(e,"http://x").pathname}`}catch{return e}}c(v,"y"),d(v,"normaliseUrl");function k(e){if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}c(k,"x"),d(k,"stringify");const U=new Set(["react","valtio","memory","client-runtime"]);function w(e){return typeof e=="string"&&U.has(e)}c(w,"b"),d(w,"isBrowserPublishableSource");
|
package/lib/types.d.ts
CHANGED
|
@@ -102,7 +102,9 @@ export type ClientEnvelope = (
|
|
|
102
102
|
| {
|
|
103
103
|
kind: 'hmr';
|
|
104
104
|
at: number;
|
|
105
|
-
|
|
105
|
+
/** `ws-failed`: Vite gave up opening its HMR socket at page load — the page loaded, but gets no hot
|
|
106
|
+
* update and no reload notice until it is reloaded (issues/closed/foodguard-49). */
|
|
107
|
+
event: 'full-reload' | 'update' | 'invalidate' | 'ws-disconnect' | 'ws-connect' | 'ws-failed';
|
|
106
108
|
/** `full-reload`: the reload path; `invalidate`: the invalidated module. */
|
|
107
109
|
path?: string;
|
|
108
110
|
/** `full-reload`: the changed file Vite could not hot-update (Vite ≥ 5.1). */
|
|
@@ -111,8 +113,10 @@ export type ClientEnvelope = (
|
|
|
111
113
|
updates?: string[];
|
|
112
114
|
/** `update`: how many updates the payload carried (before bounding). */
|
|
113
115
|
count?: number;
|
|
114
|
-
/** `invalidate`: Vite's reason. */
|
|
116
|
+
/** `invalidate`: Vite's reason. `ws-failed`: what Vite printed. */
|
|
115
117
|
message?: string;
|
|
118
|
+
/** `ws-failed`: the page reloads itself once to get a socket (it had one earlier in this tab). */
|
|
119
|
+
recovering?: boolean;
|
|
116
120
|
}
|
|
117
121
|
/**
|
|
118
122
|
* The tab's transport closed — its document is GONE.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lensmcp/bridge",
|
|
3
|
-
"version": "1.24.
|
|
3
|
+
"version": "1.24.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"module": "./index.js",
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
}
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@lensmcp/core": "1.24.
|
|
23
|
-
"@lensmcp/protocol-types": "1.24.
|
|
22
|
+
"@lensmcp/core": "1.24.2",
|
|
23
|
+
"@lensmcp/protocol-types": "1.24.2",
|
|
24
24
|
"tslib": "^2.3.0",
|
|
25
25
|
"ws": "^8.21.0"
|
|
26
26
|
},
|