@serve.zone/dcrouter 18.8.5 → 18.9.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/deno.json +1 -1
- package/dist_serve/bundle.js +14 -2
- package/dist_serve/bundle.js.map +1 -1
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/dns/classes.gateway-route-dns-reconciler.d.ts +6 -0
- package/dist_ts/dns/classes.gateway-route-dns-reconciler.js +28 -11
- package/dist_ts/remoteingress/classes.remoteingress-manager.d.ts +12 -0
- package/dist_ts/remoteingress/classes.remoteingress-manager.js +42 -22
- package/dist_ts_interfaces/data/remoteingress.d.ts +4 -0
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/elements/network/ops-view-remoteingress.js +19 -5
- package/dist_ts_web/elements/overview/ops-view-config.js +2 -2
- package/package.json +2 -2
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/dns/classes.gateway-route-dns-reconciler.ts +28 -9
- package/ts/remoteingress/classes.remoteingress-manager.ts +41 -22
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/network/ops-view-remoteingress.ts +19 -4
- package/ts_web/elements/overview/ops-view-config.ts +2 -0
- package/readme.plan.md +0 -22
package/deno.json
CHANGED
package/dist_serve/bundle.js
CHANGED
|
@@ -49281,7 +49281,7 @@ Minimum version required to store current data is: `+o+`.
|
|
|
49281
49281
|
.status=${s}
|
|
49282
49282
|
.fields=${a}
|
|
49283
49283
|
></sz-config-section>
|
|
49284
|
-
`}renderRemoteIngressSection(t){let a=[{key:"Tunnel Port",value:t.tunnelPort},{key:"Hub Domain",value:t.hubDomain},{key:"TLS Mode",value:t.tlsMode,type:"badge"},{key:"Connected Edge IPs",value:t.connectedEdgeIps?.length>0?t.connectedEdgeIps:null,type:"pills"}];t.performance&&a.push({key:"Performance Profile",value:t.performance.profile||null,type:"badge"},{key:"Max Connections / Edge",value:t.performance.maxStreamsPerEdge??null},{key:"Client Write Timeout",value:t.performance.clientWriteTimeoutMs?`${t.performance.clientWriteTimeoutMs} ms`:null},{key:"First Data Timeout",value:t.performance.firstDataConnectTimeoutMs?`${t.performance.firstDataConnectTimeoutMs} ms`:null},{key:"Server-first Ports",value:t.performance.serverFirstPorts?.length?t.performance.serverFirstPorts.map(String):null,type:"pills"});let s=[{label:"View Remote Ingress",icon:"lucide:arrow-right",event:"navigate",detail:{view:"network",subview:"remoteingress"}}];return x`
|
|
49284
|
+
`}renderRemoteIngressSection(t){let a=[{key:"Tunnel Port",value:t.tunnelPort},{key:"Hub Domain",value:t.hubDomain},{key:"TLS Mode",value:t.tlsMode,type:"badge"},{key:"Connected Edge IPs",value:t.connectedEdgeIps?.length>0?t.connectedEdgeIps:null,type:"pills"}];t.performance&&a.push({key:"Performance Profile",value:t.performance.profile||null,type:"badge"},{key:"Max Connections / Edge",value:t.performance.maxStreamsPerEdge??null},{key:"Client Write Timeout",value:t.performance.clientWriteTimeoutMs?`${t.performance.clientWriteTimeoutMs} ms`:null},{key:"First Data Timeout",value:t.performance.firstDataConnectTimeoutMs?`${t.performance.firstDataConnectTimeoutMs} ms`:null},{key:"Max Retained Half-closed Streams",value:t.performance.maxHalfClosedStreams??null},{key:"Half-close Drain Timeout",value:t.performance.halfCloseDrainTimeoutMs?`${t.performance.halfCloseDrainTimeoutMs} ms`:null},{key:"Server-first Ports",value:t.performance.serverFirstPorts?.length?t.performance.serverFirstPorts.map(String):null,type:"pills"});let s=[{label:"View Remote Ingress",icon:"lucide:arrow-right",event:"navigate",detail:{view:"network",subview:"remoteingress"}}];return x`
|
|
49285
49285
|
<sz-config-section
|
|
49286
49286
|
title="Remote Ingress"
|
|
49287
49287
|
subtitle="Edge tunnel nodes"
|
|
@@ -50302,6 +50302,18 @@ Minimum version required to store current data is: `+o+`.
|
|
|
50302
50302
|
.description=${"Milliseconds to wait for initial client data before connecting upstream. Leave empty for default."}
|
|
50303
50303
|
.value=${o.firstDataConnectTimeoutMs?.toString()||""}
|
|
50304
50304
|
></dees-input-text>
|
|
50305
|
+
<dees-input-text
|
|
50306
|
+
.key=${"maxHalfClosedStreams"}
|
|
50307
|
+
.label=${"Max Retained Half-closed Streams"}
|
|
50308
|
+
.description=${"Streams kept after the backend sent FIN while the client upload is still open. 0 disables backend-initiated retention. Leave empty for the profile default."}
|
|
50309
|
+
.value=${o.maxHalfClosedStreams?.toString()||""}
|
|
50310
|
+
></dees-input-text>
|
|
50311
|
+
<dees-input-text
|
|
50312
|
+
.key=${"halfCloseDrainTimeoutMs"}
|
|
50313
|
+
.label=${"Half-close Drain Timeout"}
|
|
50314
|
+
.description=${"Milliseconds allowed for draining a half-closed stream before it is reset. Leave empty for default."}
|
|
50315
|
+
.value=${o.halfCloseDrainTimeoutMs?.toString()||""}
|
|
50316
|
+
></dees-input-text>
|
|
50305
50317
|
<dees-input-text
|
|
50306
50318
|
.key=${"serverFirstPorts"}
|
|
50307
50319
|
.label=${"Server-first Ports"}
|
|
@@ -50313,7 +50325,7 @@ Minimum version required to store current data is: `+o+`.
|
|
|
50313
50325
|
Saving applies DB-backed hub settings. Enabling or disabling the hub restarts SmartProxy so tunneled traffic and route metadata stay consistent.
|
|
50314
50326
|
Last updated: ${l} by ${s?.updatedBy||"default"}.
|
|
50315
50327
|
</p>
|
|
50316
|
-
`,menuOptions:[{name:"Cancel",iconName:"lucide:x",action:i(async c=>await c.destroy(),"action")},{name:"Save",iconName:"lucide:check",action:i(async c=>{let d=c.shadowRoot?.querySelector(".content")?.querySelector("dees-form");if(!d)return;let u=await d.collectFormData(),p,m;try{m=this.parseRequiredPort(u.tunnelPort,"Tunnel Port"),p=this.collectHubPerformanceSettings(u,o)}catch(v){a.show({message:v.message,type:"error",duration:4e3});return}let b=await ns.dispatchAction(VEt,{enabled:u.enabled!==!1,tunnelPort:m,hubDomain:`${u.hubDomain||""}`.trim()||null,performance:p});if(b.error){a.show({message:b.error,type:"error",duration:4e3});return}await c.destroy(),a.show({message:"RemoteIngress hub settings saved",type:"success",duration:3e3})},"action")}]})}collectHubPerformanceSettings(t,a){let s={...a},o=ssr(t.profile);o?s.profile=o:delete s.profile,this.assignOptionalPositiveIntegerSetting(s,"maxStreamsPerEdge",t.maxStreamsPerEdge,"Max Connections / Edge"),this.assignOptionalPositiveIntegerSetting(s,"clientWriteTimeoutMs",t.clientWriteTimeoutMs,"Client Write Timeout"),this.assignOptionalPositiveIntegerSetting(s,"firstDataConnectTimeoutMs",t.firstDataConnectTimeoutMs,"First Data Timeout");let n=`${t.serverFirstPorts||""}`.trim();if(n){let l=this.parsePortList(n,"Server-first Ports");if(l.includes(443))throw new Error("Port 443 is client-first TLS and must not be listed as server-first");s.serverFirstPorts=l}else delete s.serverFirstPorts;return Object.keys(s).length>0?s:null}assignOptionalPositiveIntegerSetting(t,a,s,o){let
|
|
50328
|
+
`,menuOptions:[{name:"Cancel",iconName:"lucide:x",action:i(async c=>await c.destroy(),"action")},{name:"Save",iconName:"lucide:check",action:i(async c=>{let d=c.shadowRoot?.querySelector(".content")?.querySelector("dees-form");if(!d)return;let u=await d.collectFormData(),p,m;try{m=this.parseRequiredPort(u.tunnelPort,"Tunnel Port"),p=this.collectHubPerformanceSettings(u,o)}catch(v){a.show({message:v.message,type:"error",duration:4e3});return}let b=await ns.dispatchAction(VEt,{enabled:u.enabled!==!1,tunnelPort:m,hubDomain:`${u.hubDomain||""}`.trim()||null,performance:p});if(b.error){a.show({message:b.error,type:"error",duration:4e3});return}await c.destroy(),a.show({message:"RemoteIngress hub settings saved",type:"success",duration:3e3})},"action")}]})}collectHubPerformanceSettings(t,a){let s={...a},o=ssr(t.profile);o?s.profile=o:delete s.profile,this.assignOptionalPositiveIntegerSetting(s,"maxStreamsPerEdge",t.maxStreamsPerEdge,"Max Connections / Edge"),this.assignOptionalPositiveIntegerSetting(s,"clientWriteTimeoutMs",t.clientWriteTimeoutMs,"Client Write Timeout"),this.assignOptionalPositiveIntegerSetting(s,"firstDataConnectTimeoutMs",t.firstDataConnectTimeoutMs,"First Data Timeout"),this.assignOptionalPositiveIntegerSetting(s,"maxHalfClosedStreams",t.maxHalfClosedStreams,"Max Retained Half-closed Streams",0),this.assignOptionalPositiveIntegerSetting(s,"halfCloseDrainTimeoutMs",t.halfCloseDrainTimeoutMs,"Half-close Drain Timeout");let n=`${t.serverFirstPorts||""}`.trim();if(n){let l=this.parsePortList(n,"Server-first Ports");if(l.includes(443))throw new Error("Port 443 is client-first TLS and must not be listed as server-first");s.serverFirstPorts=l}else delete s.serverFirstPorts;return Object.keys(s).length>0?s:null}assignOptionalPositiveIntegerSetting(t,a,s,o,n=1){let l=`${s??""}`.trim();if(!l){delete t[a];return}let c=Number.parseInt(l,10);if(!Number.isInteger(c)||c<n)throw new Error(`${o} must be a ${n===0?"non-negative":"positive"} integer`);t[a]=c}parsePortList(t,a){let s=`${t||""}`.trim();if(!s)return[];let o=s.split(",").map(n=>Number.parseInt(n.trim(),10));for(let n of o)if(!Number.isInteger(n)||n<1||n>65535)throw new Error(`${a} must contain valid port numbers`);return[...new Set(o)].sort((n,l)=>n-l)}parseRequiredPort(t,a){let s=Number.parseInt(`${t||""}`.trim(),10);if(!Number.isInteger(s)||s<1||s>65535)throw new Error(`${a} must be a valid port number`);return s}};TS=zt(hRt),CZe=new WeakMap,Ge(TS,4,"riState",pRt,vm,CZe),vm=Ge(TS,0,"OpsViewRemoteIngress",fRt,vm),i(vm,"OpsViewRemoteIngress"),ut(vm,"styles",[w.defaultStyles,Ut,X`
|
|
50317
50329
|
.remoteIngressContainer {
|
|
50318
50330
|
display: flex;
|
|
50319
50331
|
flex-direction: column;
|