@spotpatch/vite 1.16.0 → 1.16.1
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/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime-client.js +39 -39
- package/dist/runtime-data-flow-panel.js +2 -2
- package/package.json +5 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var M="data-spotpatch-ui",re=Object.freeze({highlight:2147483646,controls:2147483647}),se=Object.freeze({compactInset:8,compactViewportWidth:520,desktopInset:24,dragActivationDistance:6,edgeSnapDistance:20,workbenchMaxHeight:620,workbenchMaxWidth:460});function u(e,t){let n=e.createElement(t);return n.setAttribute(M,""),n}function F(e,t,n=""){let o=u(e,"button");return o.type="button",o.className=n,o.textContent=t,o}var j=Object.freeze({"zh-CN":Object.freeze({server:"服务端(静态证据)",client:"浏览器",bindings:"数据去向",changes:"修改说明",componentEmpty:"当前组件没有找到可证明的接口。未找到不等于没有请求。",componentTab:"数据链路",componentTitle:"组件数据链路",consumed:"读取字段",declared:"代码声明,尚未在本次页面会话中观测",diagnostics:"诊断",disabled:"数据链路能力未启用,请在插件配置中设置 dataFlow: {}。",error:"数据链路报告加载失败",evidence:"证据",loading:"正在分析源码并合并运行时证据…",logicalObserved:"本次会话已进入 tRPC 调用链",noParameters:"未提取到可证明的参数键",observed:"本次会话已实际请求",pageEmpty:"当前已选页面范围内没有静态接口或运行时网络记录。",pageTab:"页面接口",pageTitle:"页面接口",parameters:"请求参数",refresh:"刷新证据",unknown:"未知"}),"en-US":Object.freeze({server:"Server (static evidence)",client:"Browser",bindings:"Data destinations",changes:"Changes",componentEmpty:"No proven interface was found for this component. This does not prove that no request exists.",componentTab:"Data flow",componentTitle:"Component data flow",consumed:"Consumed fields",declared:"Declared in code, not observed in this page session",diagnostics:"Diagnostics",disabled:"Data flow is disabled. Set dataFlow: {} in the plugin options.",error:"Failed to load the data-flow report",evidence:"Evidence",loading:"Analyzing source and merging runtime evidence…",logicalObserved:"Dispatched through the tRPC link in this session",noParameters:"No proven parameter keys were extracted",observed:"Actually requested in this session",pageEmpty:"No static interface or runtime traffic is available for the selected page scope.",pageTab:"Page APIs",pageTitle:"Page interfaces",parameters:"Request parameters",refresh:"Refresh evidence",unknown:"Unknown"})});function v(e,t,n){let o=u(e,"span");return o.className="spotpatch-data-flow-badge",o.dataset.tone=n,o.textContent=t,o}function O(e,t,n){let o=u(e,"div");o.className="spotpatch-data-flow-detail";let a=u(e,"span");a.textContent=t;let s=u(e,"code");return s.textContent=n,o.append(a,s),o}function W(e,t,n){let o=u(e,"article");o.className="spotpatch-data-flow-card";let a=u(e,"div");a.className="spotpatch-data-flow-card-head";let s=u(e,"div");s.className="spotpatch-data-flow-endpoint";let r=u(e,"strong");r.textContent=t.method??n.unknown;let f=u(e,"code");f.textContent=t.url===void 0?t.operation??n.unknown:`${t.url.origin??""}${t.url.pathname}`,s.append(r,f);let l=u(e,"div");l.className="spotpatch-data-flow-badges",l.append(v(e,t.execution==="observed"?t.kind==="rpc"?n.logicalObserved:n.observed:n.declared,t.execution==="observed"?"success":"neutral"),v(e,t.proof,t.proof==="proven"?"proof":"warning"),v(e,t.association,"neutral")),a.append(s,l),t.environment!==void 0&&l.append(v(e,n[t.environment],"neutral"));let m=t.parameters.length===0?n.noParameters:t.parameters.map(g=>`${g.position}.${g.path}${g.type===void 0?"":`: ${g.type}`}${g.sensitive?" [sensitive]":""}${g.condition===void 0?"":` [when ${g.condition}]`}`).join(`
|
|
2
|
-
`),
|
|
2
|
+
`),E=t.response.consumedFields.length===0?n.unknown:t.response.consumedFields.join(", "),b=t.suppliedBindings.length===0?n.unknown:t.suppliedBindings.join(", "),y=u(e,"div");y.className="spotpatch-data-flow-card-body";let A=new Set(t.observationIds),S=t.evidenceIds.filter(g=>!A.has(g)).length;return y.append(O(e,n.parameters,m),O(e,n.consumed,E),O(e,n.bindings,b),O(e,n.evidence,`${String(S)} static · ${String(t.observationIds.length)} runtime`)),o.append(a,y),o}function z(e,t){let n=u(e,"section");n.className="spotpatch-data-flow-panel";let o=u(e,"h3");o.textContent=t;let a=u(e,"p");a.className="spotpatch-data-flow-status";let s=u(e,"div");return s.className="spotpatch-data-flow-list",n.append(o,a,s),Object.freeze({root:n,status:a,list:s})}function q(e,t,n,o,a,s){let r=j[n()],f=z(e,r.componentTitle),l=z(e,r.pageTitle),m=F(e,r.refresh),E=e.createElement("style");E.textContent=K,m.classList.add("spotpatch-data-flow-refresh"),f.root.prepend(m);let b=u(e,"div"),y=u(e,"nav");y.className="spotpatch-view-tabs",y.setAttribute("aria-label","SpotPatch views"),y.setAttribute("role","tablist");let A=new Map([["changes",o],["component-data",f.root],["page-data",l.root],["diagnostics",a]]),S=new Map,g="changes";for(let i of A.keys()){let c=F(e,"");c.dataset.viewId=i,c.id=`spotpatch-view-${i}-tab`,c.setAttribute("role","tab"),c.setAttribute("aria-selected",String(i===g));let p=A.get(i);p?.setAttribute("aria-labelledby",c.id),p?.setAttribute("role","tabpanel"),!t&&(i==="component-data"||i==="page-data")&&(c.hidden=!0),S.set(i,c),y.append(c)}b.append(y,...A.values());function w(i){if(A.has(i)){g=i;for(let[c,p]of A){p.hidden=c!==i;let h=S.get(c);h?.setAttribute("aria-selected",String(c===i)),h!==void 0&&(h.tabIndex=c===i?0:-1)}s()}}function D(i){if(!(i.target instanceof HTMLButtonElement))return;let c=i.target.dataset.viewId;c!==void 0&&w(c)}y.addEventListener("click",D),w(g);function T(i,c,p){if(i.list.replaceChildren(),i.status.dataset.state=c.status,!t||c.status==="disabled"){i.status.textContent=r.disabled;return}if(c.status==="loading"){i.status.textContent=r.loading;return}if(c.status==="error"){i.status.textContent=c.message??r.error;return}let h=c.report,L=h===void 0?"":[...new Set(h.diagnostics.map(({code:C})=>C))].join(", "),P=L.length===0?"":` · ${r.diagnostics}: ${L}`;if(h===void 0||h.dependencies.length===0){i.status.textContent=`${p}${P}`;return}i.status.textContent=`${String(h.dependencies.length)} · ${h.completeness.complete?"complete":"partial"}${P}`,i.list.append(...h.dependencies.map(C=>W(e,C,r)))}return Object.freeze({root:b,refreshButton:m,styles:E,dispose(){y.removeEventListener("click",D)},render(i){r=j[n()];let c=[r.changes,r.componentTab,r.pageTab,r.diagnostics];[...S.values()].forEach((p,h)=>{p.textContent=c[h]??""}),m.textContent=`${r.refresh} · ${String(i.observationCount)}`,m.disabled=!t||i.component.status==="loading",T(f,i.component,r.componentEmpty),T(l,i.page,r.pageEmpty)},resetView(){w("changes")}})}var K=`
|
|
3
3
|
.spotpatch-view-tabs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 2px; margin-bottom: 14px; padding: 3px; border: 1px solid var(--spotpatch-border-subtle); border-radius: var(--spotpatch-radius-md); background: var(--spotpatch-bg-input); }
|
|
4
4
|
.spotpatch-view-tabs button { min-width: 0; border: 0; border-radius: var(--spotpatch-radius-sm); padding: 7px 5px; color: var(--spotpatch-text-muted); background: transparent; cursor: pointer; font-size: 11.5px; font-weight: 550; transition: color var(--spotpatch-duration-fast) ease, background var(--spotpatch-duration-base) var(--spotpatch-ease-out); }
|
|
5
5
|
.spotpatch-view-tabs button:hover { color: var(--spotpatch-text); }
|
|
@@ -24,4 +24,4 @@ var M="data-spotpatch-ui",re=Object.freeze({highlight:2147483646,controls:214748
|
|
|
24
24
|
.spotpatch-data-flow-detail { display: grid; grid-template-columns: 86px minmax(0, 1fr); gap: 8px; align-items: start; }
|
|
25
25
|
.spotpatch-data-flow-detail > span { color: var(--spotpatch-text-muted); font-size: 11px; }
|
|
26
26
|
.spotpatch-data-flow-detail > code { overflow-wrap: anywhere; color: var(--spotpatch-text-secondary); font: 11px/1.5 var(--spotpatch-font-mono); white-space: pre-wrap; }
|
|
27
|
-
`;var V=Symbol.for("spotpatch.data-flow.extension.v1");function
|
|
27
|
+
`;var V=Symbol.for("spotpatch.data-flow.extension.v1");function U(e,t=globalThis){t[V]=e}var d=Object.freeze({observationMaxEntries:100,observationMaxBytes:262144,observationTtlMs:3e5,protocolRequestMaxBytes:32768,reportMaxBytes:131072,reportMaxEvidence:200,reportMaxDiagnostics:256,capabilityMaxReasons:64,graphMaxDepth:5,graphMaxModules:50,graphMaxCallsites:100,analysisTimeoutMs:2e3,reportMaxFields:100,sourceMaxComponents:256}),fe=d.reportMaxFields,me=Object.freeze({observationMaxEntries:d.observationMaxEntries,observationMaxBytes:d.observationMaxBytes,observationTtlMs:d.observationTtlMs,reportMaxBytes:d.reportMaxBytes});var G=Symbol.for("spotpatch.data-flow.runtime.v1");function _(e=globalThis){return e[G]}var $=new Set(["authorization","cookie","defaultvalue","password","setcookie","value"]);function J(e){return e.toLowerCase().replaceAll(/[-_:]/gu,"")}function I(e){let t=J(e);return $.has(t)||t.includes("apikey")||t.includes("authorization")||t.includes("secret")||t.includes("token")}function R(e,t){return Object.freeze(e.slice(0,Math.max(0,t)))}function Y(e){let t=e.url===void 0?void 0:R(e.url.queryKeys,d.reportMaxFields),n=R(e.parameters,d.reportMaxFields).map(m=>Object.freeze({...m,evidenceIds:R(m.evidenceIds,d.reportMaxEvidence)})),o=R(e.response.consumedFields,d.reportMaxFields),a=R(e.suppliedBindings,d.graphMaxCallsites),s=R(e.locationIds,d.graphMaxCallsites),r=R(e.evidenceIds,d.reportMaxEvidence),f=R(e.observationIds,d.observationMaxEntries);return t?.length!==e.url?.queryKeys.length||n.length!==e.parameters.length||n.some((m,E)=>m.evidenceIds.length!==e.parameters[E]?.evidenceIds.length)||o.length!==e.response.consumedFields.length||a.length!==e.suppliedBindings.length||s.length!==e.locationIds.length||r.length!==e.evidenceIds.length||f.length!==e.observationIds.length?Object.freeze({dependency:Object.freeze({...e,...e.url===void 0?{}:{url:Object.freeze({...e.url,queryKeys:t??Object.freeze([])})},parameters:Object.freeze(n),response:Object.freeze({consumedFields:o}),suppliedBindings:a,locationIds:s,evidenceIds:r,observationIds:f}),trimmed:!0}):Object.freeze({dependency:e,trimmed:!1})}function Q(e,t){return Object.freeze([...new Set([...e.flatMap(n=>[...n.evidenceIds,...n.parameters.flatMap(o=>o.evidenceIds)]),...t.flatMap(n=>n.evidenceIds)])])}function Z(e,t,n){let o=new Map(e.map(r=>[r.id,r])),a=[],s=new Set;for(let r of t){let f=o.get(r);f!==void 0&&!s.has(r)&&(a.push(f),s.add(r))}if(n)for(let r of e)s.has(r.id)||a.push(r);return R(a,d.reportMaxEvidence)}function ee(e,t){return Object.freeze({...e,parameters:Object.freeze(e.parameters.map(n=>Object.freeze({...n,evidenceIds:Object.freeze(n.evidenceIds.filter(o=>t.has(o)))}))),evidenceIds:Object.freeze(e.evidenceIds.filter(n=>t.has(n)))})}function te(e){return e==="analysis"?"DATA_FLOW_ANALYSIS_TRUNCATED":"DATA_FLOW_OBSERVATION_DROPPED"}function x(e,t={}){let n=Math.min(Math.max(0,t.maximumDependencies??d.graphMaxCallsites),d.graphMaxCallsites),o=R(e.dependencies,n).map(Y),a=o.map(({dependency:p})=>p),s=R(e.baseline.analyzedSourceVersions,d.graphMaxModules),r=e.dependencies.length>a.length||o.some(({trimmed:p})=>p)||e.baseline.analyzedSourceVersions.length>s.length||e.capability.reasons.length>d.capabilityMaxReasons||e.evidence.length>d.reportMaxEvidence||e.diagnostics.length>d.reportMaxDiagnostics;if(!(t.forceTruncation===!0||r))return e;let l=t.mode??"analysis",m=te(l),E=`${e.reportId}_collection_${l}`,b=Object.freeze([...e.capability.reasons.filter(p=>p.code!==m).slice(0,d.capabilityMaxReasons-1),Object.freeze({code:m,retryable:!1})]),y=Object.freeze([...e.diagnostics.filter(p=>p.id!==E).slice(0,d.reportMaxDiagnostics-1),Object.freeze({id:E,code:m,severity:"warning",retryable:!1,evidenceIds:Object.freeze([])})]),A=Q(a,y),S=Z(e.evidence,A,e.dependencies.length===a.length),g=new Set(S.map(({id:p})=>p)),w=Object.freeze(a.map(p=>ee(p,g))),D=Object.freeze(y.map(p=>Object.freeze({...p,evidenceIds:Object.freeze(p.evidenceIds.filter(h=>g.has(h)))}))),T=e.dependencies.length-a.length,i=e.baseline.analyzedSourceVersions.length-s.length,c=i>0&&T===0?"modules":"callsites";return Object.freeze({...e,baseline:Object.freeze({...e.baseline,analyzedSourceVersions:s}),capability:Object.freeze({...e.capability,...l==="analysis"&&e.capability.staticAnalysis==="available"?{staticAnalysis:"partial"}:{},reasons:b}),dependencies:w,evidence:S,diagnostics:D,...l==="analysis"?{completeness:Object.freeze({...e.completeness,complete:!1,frontierCount:e.completeness.frontierCount+T+i+(r&&T===0&&i===0?1:0),truncatedBy:t.truncatedBy??e.completeness.truncatedBy??c})}:{}})}function ne(e,t){let n=t.origin,o=t.kind==="rpc"?e.transport==="trpc"&&t.operation!==void 0&&e.operation===t.operation:t.kind==="http"?e.transport==="fetch"||e.transport==="xhr":!1;return t.environment==="server"||!o||e.freshness!=="current"||n===void 0||e.requestCallsiteId!==n.requestCallsiteId||e.sourceVersion!==n.sourceVersion||t.method!==void 0&&e.method.toUpperCase()!==t.method.toUpperCase()||t.url!==void 0&&e.url.pathname!==t.url.pathname||t.url?.origin!==void 0&&e.url.origin!==t.url.origin||n.componentSourceId!==void 0&&e.componentSourceId!==void 0&&e.componentSourceId!==n.componentSourceId||n.triggerCallsiteId!==void 0&&e.triggerCallsiteId!==void 0&&e.triggerCallsiteId!==n.triggerCallsiteId?!1:t.association!=="transitive"||e.componentSourceId===n.componentSourceId&&e.triggerCallsiteId===n.triggerCallsiteId}function oe(e){return Object.freeze({id:e.id,kind:"runtime-observation",summaryKey:"dataFlow.evidence.runtimeDispatch"})}function H(e,t){let n=new Set,o=e.map(a=>{let s=t.filter(l=>ne(l,a));for(let l of s)n.add(l.id);if(s.length===0)return a;let r=[...new Set(s.flatMap(({url:l})=>l.origin===void 0?[]:[l.origin]))],f=r.length===1?r[0]:void 0;return Object.freeze({...a,...a.url===void 0||a.url.origin!==void 0||f===void 0?{}:{url:Object.freeze({...a.url,origin:f})},execution:"observed",observationIds:Object.freeze([...new Set([...a.observationIds,...s.map(({id:l})=>l)])]),evidenceIds:Object.freeze([...new Set([...a.evidenceIds,...s.map(({id:l})=>l)])])})});return Object.freeze({dependencies:Object.freeze(o),matchedObservationIds:n})}function B(e,t,n){let o=new Set(e.map(({id:a})=>a));return Object.freeze([...e,...t.flatMap(a=>n.has(a.id)&&!o.has(a.id)?[oe(a)]:[])])}function N(e,t){let n=new Set([e.component.componentSourceId,...e.dependencies.filter(s=>s.environment!=="server").map(s=>s.origin?.componentSourceId)]),o=t.filter(s=>s.componentSourceId===void 0||n.has(s.componentSourceId)),a=H(e.dependencies,o);return x(Object.freeze({...e,dependencies:a.dependencies,evidence:B(e.evidence,o,a.matchedObservationIds)}),{mode:"observation"})}function ae(e){let t=e.transport==="trpc";return Object.freeze({id:e.id,kind:t?"rpc":"http",direction:e.method==="GET"||e.method==="HEAD"||e.method==="QUERY"||e.method==="SUBSCRIPTION"?"read":"write",execution:"observed",proof:"unavailable",association:"unassigned",method:e.method,...t?e.operation===void 0?{}:{operation:e.operation}:{url:e.url},parameters:Object.freeze((t?[]:e.url.queryKeys).map(n=>Object.freeze({path:n,position:"query",sensitive:I(n),valueState:"not-collected",evidenceIds:Object.freeze([e.id])}))),response:Object.freeze({consumedFields:Object.freeze([])}),suppliedBindings:Object.freeze([]),locationIds:Object.freeze([]),evidenceIds:Object.freeze([e.id]),observationIds:Object.freeze([e.id])})}function k(e,t){let n=t.filter(({freshness:r})=>r==="current"),o=H(e.dependencies,n),a=n.filter(({id:r})=>!o.matchedObservationIds.has(r)).map(ae),s=new Set(n.map(({id:r})=>r));return x(Object.freeze({...e,dependencies:Object.freeze([...o.dependencies,...a]),evidence:B(e.evidence,n,s)}),{mode:"observation"})}function X(){U(Object.freeze({createPanel:q,getComponentRegistration(e){return _()?.getComponentRegistration(e)},observations(e){let t=_();return t?.updateRoute(e),t?.observations()??Object.freeze([])},mergeComponentReport:N,mergePageReport:k}))}X();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spotpatch/vite",
|
|
3
|
-
"version": "1.16.
|
|
3
|
+
"version": "1.16.1",
|
|
4
4
|
"description": "Vite development plugin for SpotPatch.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -48,12 +48,12 @@
|
|
|
48
48
|
"dependencies": {
|
|
49
49
|
"magic-string": "1.1.0",
|
|
50
50
|
"oxc-parser": "0.143.0",
|
|
51
|
-
"@spotpatch/bridge": "^0.5.
|
|
51
|
+
"@spotpatch/bridge": "^0.5.1",
|
|
52
52
|
"@spotpatch/compiler": "^0.4.2",
|
|
53
|
-
"@spotpatch/dev-server": "^0.11.
|
|
53
|
+
"@spotpatch/dev-server": "^0.11.1",
|
|
54
54
|
"@spotpatch/react-adapter": "^1.2.0",
|
|
55
|
-
"@spotpatch/runtime": "^1.15.
|
|
56
|
-
"@spotpatch/shared": "^1.
|
|
55
|
+
"@spotpatch/runtime": "^1.15.6",
|
|
56
|
+
"@spotpatch/shared": "^1.16.0"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
59
|
"vite": "^5.0.0 || ^6.0.0 || ^7.0.0"
|