@webda/debug 4.0.0-beta.6 → 4.0.0-beta.8

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/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  This module is part of Webda Application Framework that allows you to quickly develop applications with all modern prerequisites: Security, Extensibility, GraphQL, REST, CloudNative [https://webda.io](https://webda.io)
4
4
 
5
- <img src="https://webda.io/images/webda.svg" width="128" />
5
+ <img src="https://webda.io/img/webda.svg" width="128" />
6
6
 
7
7
  ![CI](https://github.com/loopingz/webda.io/workflows/CI/badge.svg)
8
8
 
@@ -13,8 +13,6 @@ This module is part of Webda Application Framework that allows you to quickly de
13
13
 
14
14
  <!-- README_HEADER -->
15
15
 
16
- # @webda/debug
17
-
18
16
  > Development debug server for Webda — live request log, real-time WebSocket event feed, log buffer, and an introspection API to inspect models, routes, services, and operations while `webda debug` is running.
19
17
 
20
18
  ## When to use it
@@ -76,6 +74,7 @@ await debug.stop();
76
74
  - Related: [`@webda/otel`](../otel) for production-grade OpenTelemetry tracing; [`@webda/workout`](../workout) for the logging system whose output this service buffers.
77
75
 
78
76
  <!-- README_FOOTER -->
77
+
79
78
  ## Sponsors
80
79
 
81
80
  <!--
@@ -84,12 +83,12 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
84
83
 
85
84
  Arize AI is a machine learning observability and model monitoring platform. It helps you visualize, monitor, and explain your machine learning models. [Learn more](https://arize.com)
86
85
 
87
- [<img src="https://arize.com/hubfs/arize/brand/arize-logomark-1.png" width="200">](https://arize.com)
86
+ [<img src="https://webda.io/img/sponsors/arize.svg" width="200">](https://arize.com)
88
87
 
89
88
  Loopingz is a software development company that provides consulting and development services. [Learn more](https://loopingz.com)
90
89
 
91
- [<img src="https://loopingz.com/images/logo.png" width="200">](https://loopingz.com)
90
+ [<img src="https://webda.io/img/sponsors/loopingz.png" width="200">](https://loopingz.com)
92
91
 
93
92
  Tellae is an innovative consulting firm specialized in cities transportation issues. We provide our clients, both public and private, with solutions to support your strategic and operational decisions. [Learn more](https://tellae.fr)
94
93
 
95
- [<img src="https://tellae.fr/" width="200">](https://tellae.fr)
94
+ [<img src="https://webda.io/img/sponsors/tellae.svg" width="200">](https://tellae.fr)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webda/debug",
3
- "version": "4.0.0-beta.6",
3
+ "version": "4.0.0-beta.8",
4
4
  "description": "Development debug server for Webda applications",
5
5
  "keywords": [
6
6
  "webda",
@@ -17,7 +17,7 @@
17
17
  "dependencies": {
18
18
  "terminal-kit": "^3.1.2",
19
19
  "ws": "^8.18.0",
20
- "@webda/utils": "4.0.0-beta.6",
20
+ "@webda/utils": "4.0.0-beta.8",
21
21
  "@webda/workout": "4.0.0-beta.5"
22
22
  },
23
23
  "peerDependencies": {
@@ -33,14 +33,15 @@
33
33
  "typescript": "7.1.0-dev.20260929.1",
34
34
  "vite": "^6.0.0",
35
35
  "vitest": "^4.1.2",
36
+ "@webda/core": "^4.0.0-beta.8",
37
+ "@webda/test": "4.0.0-beta.7",
36
38
  "@webda/debug-ui": "0.0.0",
37
- "@webda/core": "^4.0.0-beta.6",
38
- "@webda/test": "4.0.0-beta.6",
39
- "@webda/compiler": "^4.0.0-beta.6"
39
+ "@webda/compiler": "^4.0.0-beta.8"
40
40
  },
41
41
  "files": [
42
42
  "lib",
43
- "webui"
43
+ "webui",
44
+ "webda.module.json"
44
45
  ],
45
46
  "homepage": "https://webda.io",
46
47
  "publishConfig": {
@@ -0,0 +1,129 @@
1
+ {
2
+ "$schema": "https://webda.io/schemas/webda.module.v4.json",
3
+ "beans": {},
4
+ "deployers": {},
5
+ "moddas": {
6
+ "Webda/DebugService": {
7
+ "Import": "lib/debugservice.service:DebugService",
8
+ "Schema": {
9
+ "$schema": "http://json-schema.org/draft-07/schema#",
10
+ "additionalProperties": false,
11
+ "description": "Configuration parameters for the {@link DebugService}.\n\nAll capture knobs default to safe values — capture is enabled with a\n64 KB inline body limit and a 4-byte hex preview for binary payloads.",
12
+ "properties": {
13
+ "captureBinaryPreview": {
14
+ "description": "Number of leading bytes to include in the hex preview for binary bodies.",
15
+ "type": "number"
16
+ },
17
+ "captureBodyLimit": {
18
+ "description": "Maximum number of bytes to keep inline for text bodies. Larger payloads\nare truncated to this size and reported as `text-truncated`.",
19
+ "type": "number"
20
+ },
21
+ "captureRequests": {
22
+ "default": true,
23
+ "description": "Whether to capture request/response headers and bodies for the debug UI.\nIf `false`, only status code and duration are recorded.",
24
+ "type": "boolean"
25
+ },
26
+ "type": {
27
+ "description": "Type of the service",
28
+ "type": "string"
29
+ },
30
+ "openapi": {
31
+ "type": "object",
32
+ "additionalProperties": true
33
+ }
34
+ },
35
+ "required": [
36
+ "type"
37
+ ],
38
+ "type": "object",
39
+ "title": "DebugService"
40
+ },
41
+ "Configuration": "lib/debugservice.service:DebugServiceParameters",
42
+ "commands": {
43
+ "debug": {
44
+ "description": "Start dev server with debug dashboard",
45
+ "method": "debug",
46
+ "args": {
47
+ "port": {
48
+ "type": "number",
49
+ "default": 18181,
50
+ "alias": "p",
51
+ "description": "Debug dashboard port"
52
+ },
53
+ "servePort": {
54
+ "type": "number",
55
+ "default": 18080,
56
+ "alias": "s",
57
+ "description": "Application server port"
58
+ },
59
+ "web": {
60
+ "type": "boolean",
61
+ "description": "Disable TUI and open the web dashboard (hosted on webda.io)"
62
+ },
63
+ "local": {
64
+ "type": "boolean",
65
+ "description": "With --web: serve the bundled dashboard from the debug port instead of webda.io"
66
+ },
67
+ "open": {
68
+ "type": "boolean",
69
+ "default": true,
70
+ "description": "With --web: open the dashboard in the browser (--no-open to only print the URL)"
71
+ },
72
+ "telemetry": {
73
+ "type": "boolean",
74
+ "default": true,
75
+ "description": "With --web: allow usage analytics on the hosted dashboard (--no-telemetry or WEBDA_TELEMETRY=0 to disable)"
76
+ }
77
+ },
78
+ "requires": [
79
+ "router",
80
+ "rest-domain",
81
+ "http-server"
82
+ ]
83
+ }
84
+ }
85
+ }
86
+ },
87
+ "models": {},
88
+ "schemas": {
89
+ "Webda/BinaryFile": {
90
+ "$schema": "http://json-schema.org/draft-07/schema#",
91
+ "WebdaSchema": true,
92
+ "additionalProperties": false,
93
+ "description": "Represent a file to store",
94
+ "properties": {
95
+ "hash": {
96
+ "description": "Will be computed by the service\n\nhash of the content",
97
+ "type": "string"
98
+ },
99
+ "metadata": {
100
+ "description": "Metadatas stored along with the binary"
101
+ },
102
+ "mimetype": {
103
+ "description": "Mimetype of the binary",
104
+ "type": "string"
105
+ },
106
+ "name": {
107
+ "description": "Current name",
108
+ "type": "string"
109
+ },
110
+ "originalname": {
111
+ "description": "Original name",
112
+ "type": "string"
113
+ },
114
+ "size": {
115
+ "description": "Size of the binary",
116
+ "type": "number"
117
+ }
118
+ },
119
+ "required": [
120
+ "mimetype",
121
+ "name",
122
+ "size"
123
+ ],
124
+ "type": "object",
125
+ "title": "BinaryFile"
126
+ }
127
+ },
128
+ "behaviors": {}
129
+ }
@@ -0,0 +1 @@
1
+ :root{--ifm-color-primary: #3578e5;--ifm-color-primary-dark: #1d68e1;--ifm-color-secondary: #ebedf0;--ifm-color-success: #00a400;--ifm-color-info: #54c7ec;--ifm-color-warning: #ffba00;--ifm-color-danger: #fa383e;--ifm-color-gray-0: #fff;--ifm-color-gray-100: #f5f6f7;--ifm-color-gray-200: #ebedf0;--ifm-color-gray-300: #dadde1;--ifm-color-gray-400: #ccd0d5;--ifm-color-gray-500: #bec3c9;--ifm-color-gray-600: #8d949e;--ifm-color-gray-700: #606770;--ifm-color-gray-800: #444950;--ifm-color-gray-900: #1c1e21;--ifm-color-gray-1000: #000;--ifm-color-emphasis-0: var(--ifm-color-gray-0);--ifm-color-emphasis-100: var(--ifm-color-gray-100);--ifm-color-emphasis-200: var(--ifm-color-gray-200);--ifm-color-emphasis-300: var(--ifm-color-gray-300);--ifm-color-emphasis-400: var(--ifm-color-gray-400);--ifm-color-emphasis-500: var(--ifm-color-gray-500);--ifm-color-emphasis-600: var(--ifm-color-gray-600);--ifm-color-emphasis-700: var(--ifm-color-gray-700);--ifm-color-emphasis-800: var(--ifm-color-gray-800);--ifm-color-emphasis-900: var(--ifm-color-gray-900);--ifm-color-emphasis-1000: var(--ifm-color-gray-1000);--ifm-color-content: var(--ifm-color-emphasis-900);--ifm-color-content-inverse: var(--ifm-color-emphasis-0);--ifm-color-content-secondary: #525860;--ifm-background-color: #fff;--ifm-background-surface-color: var(--ifm-color-content-inverse);--ifm-hover-overlay: rgba(0, 0, 0, .05);--ifm-font-color-base: var(--ifm-color-content);--ifm-font-color-secondary: var(--ifm-color-content-secondary);--ifm-font-family-base: system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, BlinkMacSystemFont, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--ifm-font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--ifm-font-size-base: 100%;--ifm-line-height-base: 1.65;--ifm-code-font-size: 90%;--ifm-global-radius: .4rem;--ifm-global-spacing: 1rem;--ifm-link-color: var(--ifm-color-primary);--ifm-navbar-height: 0px}html[data-theme=dark]{--ifm-color-emphasis-0: var(--ifm-color-gray-1000);--ifm-color-emphasis-100: var(--ifm-color-gray-900);--ifm-color-emphasis-200: var(--ifm-color-gray-800);--ifm-color-emphasis-300: var(--ifm-color-gray-700);--ifm-color-emphasis-400: var(--ifm-color-gray-600);--ifm-color-emphasis-500: var(--ifm-color-gray-500);--ifm-color-emphasis-600: var(--ifm-color-gray-400);--ifm-color-emphasis-700: var(--ifm-color-gray-300);--ifm-color-emphasis-800: var(--ifm-color-gray-200);--ifm-color-emphasis-900: var(--ifm-color-gray-100);--ifm-color-emphasis-1000: var(--ifm-color-gray-0);--ifm-background-color: #1b1b1d;--ifm-background-surface-color: #242526;--ifm-hover-overlay: rgba(255, 255, 255, .05);--ifm-color-content: #e3e3e3;--ifm-color-content-secondary: rgba(255, 255, 255, 1)}html,body{margin:0;padding:0;height:100%;background:var(--ifm-background-color);color:var(--ifm-font-color-base);font:var(--ifm-font-size-base) / var(--ifm-line-height-base) var(--ifm-font-family-base);color-scheme:light}html[data-theme=dark]{color-scheme:dark}#app{min-height:100%;display:flex;flex-direction:column}#app>.webda-debug-ui{flex:1}.webda-debug-ui{--wdbg-orange: #ff9901;--wdbg-green: #7ebf6a;--wdbg-blue: #3f51b5;--wdbg-purple: #a855f7;--wdbg-neutral: var(--ifm-color-emphasis-700);--wdbg-red: var(--ifm-color-danger);--wdbg-yellow: var(--ifm-color-warning);--wdbg-border: var(--ifm-color-emphasis-300);--wdbg-surface: var(--ifm-background-surface-color);--wdbg-surface-2: var(--ifm-color-emphasis-100);--wdbg-muted: var(--ifm-color-emphasis-600);--wdbg-radius: var(--ifm-global-radius);--wdbg-mono: var(--ifm-font-family-monospace);--wdbg-graph-inheritance: var(--ifm-color-emphasis-500);--wdbg-graph-link: var(--wdbg-blue);--wdbg-graph-query: var(--wdbg-green);--wdbg-graph-parent: var(--wdbg-purple);--wdbg-graph-binary: var(--wdbg-orange);--wdbg-graph-map: var(--ifm-color-info);--focus-color: var(--wdbg-orange);display:flex;flex-direction:column;min-height:100%;font-family:var(--ifm-font-family-base);font-size:.9375rem;line-height:1.5;color:var(--ifm-font-color-base);background:var(--ifm-background-color);box-sizing:border-box}.webda-debug-ui *,.webda-debug-ui *:before,.webda-debug-ui *:after{box-sizing:border-box}[data-theme=dark] .webda-debug-ui{--wdbg-blue: #8c9eff;--wdbg-neutral: var(--ifm-color-emphasis-800)}.wdbg-header{display:flex;align-items:center;gap:.75rem;height:48px;padding:0 var(--ifm-global-spacing);background:var(--wdbg-surface);border-bottom:2px solid var(--wdbg-border);flex-shrink:0;transition:border-color .3s,filter .3s;animation:wdbg-focus-rotate 9s ease-in-out infinite}.wdbg-disconnected .wdbg-header{border-bottom-color:var(--wdbg-red)}.wdbg-disconnected .wdbg-brand,.wdbg-disconnected .wdbg-tabs{filter:grayscale(1);opacity:.5}.wdbg-disconnected .wdbg-tab-active{color:var(--wdbg-muted)!important;border-bottom-color:var(--wdbg-muted)!important}.wdbg-brand{display:flex;align-items:center;gap:.5rem;white-space:nowrap}.wdbg-logo{width:28px;height:28px;color:var(--wdbg-blue)}.wdbg-brand-title{font-size:1rem;font-weight:600}.wdbg-brand-title span{color:var(--focus-color)}@property --focus-color{syntax: "<color>"; inherits: true; initial-value: #ff9901;}@keyframes wdbg-focus-rotate{0%,to{--focus-color: #ff9901}25%{--focus-color: #7ebf6a}50%{--focus-color: #3f51b5}75%{--focus-color: #a855f7}}@media(prefers-reduced-motion:reduce){.wdbg-header{animation:none}}.wdbg-app-info{padding-left:.75rem;border-left:1px solid var(--wdbg-border);line-height:1.2;min-width:0;flex:0 1 auto}.wdbg-app-name{font-size:.8rem}.wdbg-app-cwd{font-size:.65rem;color:var(--wdbg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:260px}.wdbg-tabs{display:flex;height:100%;overflow-x:auto;flex:1 0 auto;min-width:0;margin-left:.75rem}.wdbg-tab{padding:0 1rem;height:100%;display:flex;align-items:center;cursor:pointer;color:var(--wdbg-muted);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;font:inherit;font-size:.875rem;white-space:nowrap;transition:color .15s,border-color .15s}.wdbg-tab:hover{color:var(--ifm-font-color-base)}.wdbg-header-status{margin-left:auto;font-size:.75rem;white-space:nowrap;flex:0 1 auto;min-width:0}.wdbg-header-status .wdbg-conn-label{overflow:hidden;text-overflow:ellipsis}.wdbg-conn{display:inline-flex;align-items:center;gap:.4rem}.wdbg-conn-dot{width:8px;height:8px;border-radius:50%;background:var(--ifm-color-emphasis-400);flex-shrink:0}.wdbg-conn-ok .wdbg-conn-dot{background:var(--ifm-color-success)}.wdbg-conn-warn .wdbg-conn-dot{background:var(--ifm-color-warning);animation:wdbg-pulse 1.5s infinite}.wdbg-conn-off .wdbg-conn-dot{background:var(--ifm-color-danger);animation:wdbg-pulse 1.5s infinite}@keyframes wdbg-pulse{0%,to{opacity:1}50%{opacity:.3}}.wdbg-content{flex:1;padding:var(--ifm-global-spacing);overflow:auto;min-height:0}.wdbg-footer{display:flex;gap:1rem;align-items:center;padding:.4rem var(--ifm-global-spacing);border-top:1px solid var(--wdbg-border);font-size:.75rem;color:var(--wdbg-muted);flex-shrink:0}.wdbg-footer a{color:var(--ifm-link-color)}.wdbg-footer-close{margin-left:auto;padding:0 .35rem;border:0;border-radius:var(--ifm-global-radius);background:none;color:var(--wdbg-muted);font-size:1rem;line-height:1.2;cursor:pointer}.wdbg-footer-close:hover{background:var(--ifm-hover-overlay);color:var(--ifm-font-color-base)}.wdbg-footer-close:focus-visible{outline:2px solid var(--ifm-color-primary)}.wdbg-mono,.webda-debug-ui code,.webda-debug-ui pre{font-family:var(--wdbg-mono)}.webda-debug-ui code{font-size:.85em;background:var(--wdbg-surface-2);padding:.05rem .3rem;border-radius:3px;border:none}.wdbg-muted{color:var(--wdbg-muted)}.wdbg-strong{font-weight:600}.wdbg-accent{color:var(--ifm-color-primary)}.wdbg-small{font-size:.75rem}.wdbg-italic{font-style:italic}.wdbg-break{word-break:break-all}.wdbg-nowrap{white-space:nowrap}.wdbg-pre-wrap{white-space:pre-wrap}.wdbg-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wdbg-right{text-align:right}.wdbg-pad{padding:.5rem}.wdbg-grow{flex:1}.wdbg-link{color:var(--ifm-link-color);text-decoration:none}.wdbg-link:hover{text-decoration:underline}.wdbg-title{font-size:1.25rem;font-weight:600;color:var(--ifm-color-primary);margin:0 0 .5rem}.wdbg-subtitle{font-size:.8125rem;margin-bottom:1rem}.wdbg-count{font-size:.8125rem;margin-bottom:.75rem}.wdbg-empty{color:var(--wdbg-muted);padding:2rem;text-align:center}.wdbg-facts{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap;align-items:center}.wdbg-fact{background:var(--wdbg-surface-2);padding:.375rem .625rem;border-radius:var(--wdbg-radius);font-size:.8125rem}.wdbg-badges{display:flex;gap:.375rem;flex-wrap:wrap;margin-bottom:1rem}.wdbg-row-between{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;gap:.5rem}.wdbg-actions{margin-top:1rem;display:flex;gap:.5rem}.wdbg-preview{margin-top:.75rem}.wdbg-preview-label{color:var(--wdbg-muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.05em}.wdbg-inheritance{display:flex;align-items:center;gap:.375rem;flex-wrap:wrap;font-size:.8125rem}.wdbg-pre{background:var(--wdbg-surface-2);padding:.75rem 1rem;border-radius:var(--wdbg-radius);overflow:auto;font-size:.8125rem;line-height:1.5;margin:.25rem 0 0}.wdbg-pre-inline{margin:0;white-space:pre-wrap;font-size:.8125rem;background:none;padding:0}.wdbg-code{margin:0;background:var(--wdbg-surface-2);padding:1rem;border-radius:var(--wdbg-radius);overflow:auto;max-height:500px;font-size:.8125rem;line-height:1.6;-moz-tab-size:2;tab-size:2}.wdbg-hl-keyword{color:#d73a49}.wdbg-hl-string{color:#032f62}.wdbg-hl-number{color:#005cc5}.wdbg-hl-comment{color:var(--wdbg-muted);font-style:italic}[data-theme=dark] .wdbg-hl-keyword{color:#ff7b72}[data-theme=dark] .wdbg-hl-string{color:#a5d6ff}[data-theme=dark] .wdbg-hl-number{color:#79c0ff}.wdbg-table-container{overflow-x:auto}.wdbg-table{width:100%;border-collapse:collapse;font-size:.875rem;display:table;margin:0}.wdbg-table th{text-align:left;padding:.5rem .75rem;border:none;border-bottom:1px solid var(--wdbg-border);color:var(--wdbg-muted);font-weight:500;white-space:nowrap;background:none}.wdbg-table td{padding:.5rem .75rem;border:none;border-bottom:1px solid var(--wdbg-border);vertical-align:top}.wdbg-table tr{background:none;border:none}.wdbg-table tr:hover td{background:var(--ifm-hover-overlay)}.wdbg-row-clickable{cursor:pointer}.wdbg-row-selected td{background:var(--wdbg-surface-2)}.wdbg-url-cell{max-width:400px}.wdbg-headers{width:100%;font-size:.75rem;border-collapse:collapse;display:table}.wdbg-headers td{padding:2px 8px 2px 0;vertical-align:top;border:none;background:none}.wdbg-headers td:first-child{white-space:nowrap}.wdbg-badge{display:inline-block;padding:.125rem .5rem;border-radius:3px;font-size:.75rem;font-weight:500;font-family:var(--wdbg-mono);line-height:1.4;background:var(--wdbg-surface-2);color:var(--wdbg-muted)}.wdbg-badge-small{font-size:.5625rem;padding:.0625rem .25rem}.wdbg-badge-green,.wdbg-method-get{background:#7ebf6a2e;color:#3d7a2c}.wdbg-badge-yellow,.wdbg-method-put{background:#ffba0033;color:#8a5a00}.wdbg-badge-red,.wdbg-method-delete{background:#fa383e26;color:#c21f25}.wdbg-badge-blue,.wdbg-method-post{background:#3f51b526;color:#3f51b5}.wdbg-badge-purple{background:#a855f726;color:#7e22ce}.wdbg-badge-orange,.wdbg-method-patch{background:#ff99012e;color:#b35f00}.wdbg-badge-muted{background:var(--wdbg-surface-2);color:var(--wdbg-muted)}[data-theme=dark] .wdbg-badge-green,[data-theme=dark] .wdbg-method-get{color:#7ebf6a}[data-theme=dark] .wdbg-badge-yellow,[data-theme=dark] .wdbg-method-put{color:#ffba00}[data-theme=dark] .wdbg-badge-red,[data-theme=dark] .wdbg-method-delete{color:#ff6b6f}[data-theme=dark] .wdbg-badge-blue,[data-theme=dark] .wdbg-method-post{color:#8c9eff}[data-theme=dark] .wdbg-badge-purple{color:#c084fc}[data-theme=dark] .wdbg-badge-orange,[data-theme=dark] .wdbg-method-patch{color:#ff9901}.wdbg-level{color:#fff}.wdbg-level-error{background:#ef4444}.wdbg-level-warn{background:#d99a00}.wdbg-level-info{background:#22a35b}.wdbg-level-debug{background:#6b7280}.wdbg-level-trace{background:#4b5563}.wdbg-status-2xx{color:var(--ifm-color-success)}.wdbg-status-3xx{color:var(--ifm-color-warning)}.wdbg-status-4xx{color:var(--wdbg-orange)}.wdbg-status-5xx{color:var(--ifm-color-danger)}.wdbg-status-pending{color:var(--wdbg-muted)}.wdbg-split{display:flex;gap:var(--ifm-global-spacing);min-height:0;height:calc(100vh - var(--ifm-navbar-height, 0px) - 48px - 3rem - 2rem)}.wdbg-split-left{width:280px;flex-shrink:0;overflow-y:auto;border-right:1px solid var(--wdbg-border);padding-right:1rem}.wdbg-split-right{flex:1;overflow-y:auto;min-width:0}.wdbg-list-item{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.5rem .75rem;cursor:pointer;border-radius:var(--wdbg-radius);font-size:.875rem;color:var(--wdbg-muted);transition:background .1s,color .1s;word-break:break-all}.wdbg-list-item:hover{background:var(--ifm-hover-overlay);color:var(--ifm-font-color-base)}.wdbg-list-item:focus-visible{outline:2px solid var(--ifm-color-primary);outline-offset:-2px}.wdbg-list-item-active{background:var(--wdbg-surface-2);color:var(--ifm-color-primary)}.wdbg-list-item-pinned{border-bottom:1px solid var(--wdbg-border);border-radius:0;margin-bottom:.5rem;padding-bottom:.625rem;color:var(--ifm-font-color-base)}.wdbg-op-item{min-width:0;flex:1}.wdbg-op-io{font-size:.6875rem;color:var(--wdbg-muted)}.wdbg-op-rest{font-size:.625rem;margin-top:.125rem;display:flex;align-items:center;gap:.25rem;min-width:0}.wdbg-search,.wdbg-select{width:100%;padding:.5rem .75rem;background:var(--ifm-background-color);border:1px solid var(--wdbg-border);border-radius:var(--wdbg-radius);color:var(--ifm-font-color-base);font:inherit;font-size:.875rem;margin-bottom:.75rem;outline:none}.wdbg-search:focus,.wdbg-select:focus{border-color:var(--ifm-color-primary)}.wdbg-select{width:auto}.wdbg-toolbar{display:flex;gap:.5rem;align-items:center;margin-bottom:.25rem}.wdbg-toolbar .wdbg-search,.wdbg-toolbar .wdbg-select{margin-bottom:0}.wdbg-checkbox{display:flex;align-items:center;gap:.25rem;color:var(--wdbg-muted);font-size:.75rem;white-space:nowrap}.wdbg-logs{overflow-y:auto;max-height:calc(100vh - var(--ifm-navbar-height, 0px) - 220px)}.wdbg-btn{font:inherit;font-size:.8125rem;padding:.375rem .875rem;border-radius:var(--wdbg-radius);border:1px solid var(--wdbg-border);background:var(--wdbg-surface);color:var(--ifm-font-color-base);cursor:pointer;transition:background .1s,color .1s}.wdbg-btn:hover:not(:disabled){background:var(--ifm-hover-overlay)}.wdbg-btn:disabled{opacity:.5;cursor:not-allowed}.wdbg-btn-primary{background:var(--ifm-color-primary);border-color:var(--ifm-color-primary);color:#fff}.wdbg-btn-primary:hover:not(:disabled){background:var(--ifm-color-primary-dark, var(--ifm-color-primary))}.wdbg-btn-ghost{background:transparent}.wdbg-btn-active{border-color:var(--ifm-color-primary);color:var(--ifm-color-primary)}.wdbg-theme-toggle{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border-color:transparent;border-radius:50%;color:var(--ifm-font-color-base)}.wdbg-theme-toggle:hover{background:var(--ifm-color-emphasis-200)}.wdbg-subtabs{display:flex;margin-bottom:.75rem;border-bottom:1px solid var(--wdbg-border);overflow-x:auto}.wdbg-subtab{padding:6px 16px;background:transparent;color:var(--wdbg-muted);border:none;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;font:inherit;font-size:.875rem;white-space:nowrap}.wdbg-subtab-active{background:var(--wdbg-surface-2);color:var(--ifm-color-primary);border-bottom-color:var(--ifm-color-primary);font-weight:600}.wdbg-card{padding:1rem;border:1px solid var(--wdbg-border);border-radius:var(--wdbg-radius);margin-top:1rem;background:var(--wdbg-surface)}.wdbg-card-error{border-color:var(--ifm-color-danger)}.wdbg-alert{padding:.5rem .75rem;border-radius:var(--wdbg-radius);margin-bottom:1rem;font-size:.875rem}.wdbg-alert-danger{background:#fa383e1a;border:1px solid rgba(250,56,62,.3)}.wdbg-alert-warning{background:#ffba001f;border-bottom:1px solid rgba(255,186,0,.4);margin:0;border-radius:0}.wdbg-request-url{margin-left:.5rem}.wdbg-request-meta{display:flex;gap:1.5rem;font-size:.75rem;color:var(--wdbg-muted);margin-bottom:1rem}.wdbg-request-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.wdbg-request-grid h4{margin:1rem 0 .5rem;font-size:.8125rem}.wdbg-request-grid h4:first-child{margin-top:0}.wdbg-connection-error{max-width:640px;margin:2rem auto;padding:1.5rem;border:1px solid var(--wdbg-border);border-radius:var(--wdbg-radius);background:var(--wdbg-surface)}.wdbg-connection-error h2{margin:0 0 .75rem;font-size:1.125rem}.wdbg-connection-error p{margin:0 0 .5rem}.wdbg-port-picker{display:flex;gap:.5rem;align-items:center;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--wdbg-border)}.wdbg-port-picker label{font-size:.8125rem;color:var(--wdbg-muted)}.wdbg-port-picker .wdbg-search{width:120px;margin-bottom:0}.wdbg-detail-section{margin-bottom:1.5rem}.wdbg-detail-section h3{font-size:.8125rem;color:var(--wdbg-muted);margin:0 0 .5rem;text-transform:uppercase;letter-spacing:.05em}.wdbg-json-tree{font-family:var(--wdbg-mono);font-size:.8125rem;line-height:1.6}.wdbg-json-key{color:var(--ifm-color-primary)}.wdbg-json-string{color:#22863a}.wdbg-json-number{color:#b35f00}.wdbg-json-boolean{color:#7e22ce}.wdbg-json-null{color:var(--wdbg-muted)}[data-theme=dark] .wdbg-json-string{color:#7ebf6a}[data-theme=dark] .wdbg-json-number{color:#ff9901}[data-theme=dark] .wdbg-json-boolean{color:#c084fc}.wdbg-json-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--wdbg-muted);font-size:.6rem}.wdbg-json-indent{padding-left:1.25rem}.wdbg-graph{display:flex;flex-direction:column;height:100%}.wdbg-graph-legend{display:flex;gap:1rem;margin-bottom:.5rem;flex-wrap:wrap;align-items:center;flex-shrink:0}.wdbg-graph-legend-item{display:flex;align-items:center;gap:.3rem;font-size:.7rem;color:var(--wdbg-muted)}.wdbg-graph-legend-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.wdbg-graph-legend-line{width:16px;height:0;border-top-width:2px;display:inline-block}.wdbg-graph-canvas{flex:1;overflow:auto;border:1px solid var(--wdbg-border);border-radius:var(--wdbg-radius);background:var(--ifm-background-color);min-height:200px}.wdbg-graph-node{cursor:pointer}.wdbg-graph-node rect{fill:var(--wdbg-surface-2);stroke:var(--wdbg-blue)}.wdbg-graph-node text{fill:var(--ifm-font-color-base);font-family:var(--ifm-font-family-base)}.wdbg-graph-node:hover rect{stroke:var(--ifm-color-primary)}.wdbg-graph-node-selected rect{stroke:var(--wdbg-orange)}.wdbg-graph-node-selected text{fill:var(--wdbg-orange)}.wdbg-graph-label{font-family:var(--wdbg-mono)}.wdbg-sf-root{font-size:.875rem}.wdbg-sf-title{font-size:1rem;font-weight:600;color:var(--ifm-color-primary);margin-bottom:.25rem}.wdbg-sf-schema-desc{color:var(--wdbg-muted);font-size:.8125rem;margin-bottom:1rem;line-height:1.4}.wdbg-sf-empty{color:var(--wdbg-muted);padding:1rem 0}.wdbg-sf-fields{display:flex;flex-direction:column;gap:.75rem}.wdbg-sf-field{padding:.5rem .625rem;border-radius:var(--wdbg-radius);border:1px solid transparent;transition:border-color .15s}.wdbg-sf-field:hover{border-color:var(--wdbg-border)}.wdbg-sf-has-value{border-left:2px solid var(--ifm-color-primary)}.wdbg-sf-label-row{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.125rem}.wdbg-sf-label{font-weight:500;font-size:.8125rem}.wdbg-sf-required{color:var(--ifm-color-danger);margin-left:.125rem}.wdbg-sf-type{font-family:var(--wdbg-mono);font-size:.6875rem;color:var(--wdbg-muted);background:var(--wdbg-surface-2);padding:.0625rem .375rem;border-radius:3px}.wdbg-sf-description{color:var(--wdbg-muted);font-size:.75rem;margin-bottom:.375rem;line-height:1.4}.wdbg-sf-default{font-size:.6875rem;color:var(--wdbg-muted);margin-top:.25rem}.wdbg-sf-input{width:100%;padding:.375rem .5rem;background:var(--ifm-background-color);border:1px solid var(--wdbg-border);border-radius:var(--wdbg-radius);color:var(--ifm-font-color-base);font:inherit;font-size:.8125rem;outline:none;transition:border-color .15s}.wdbg-sf-input:focus{border-color:var(--ifm-color-primary)}.wdbg-sf-input:read-only,.wdbg-sf-input:disabled{opacity:.6;cursor:not-allowed}.wdbg-sf-textarea{font-family:var(--wdbg-mono);font-size:.75rem;resize:vertical;min-height:2.5rem}.wdbg-sf-collapsible{border:1px solid var(--wdbg-border);border-radius:var(--wdbg-radius);overflow:hidden}.wdbg-sf-collapsible-header{display:flex;align-items:center;gap:.375rem;padding:.375rem .5rem;background:var(--wdbg-surface-2);cursor:pointer;-webkit-user-select:none;user-select:none;font-size:.8125rem}.wdbg-sf-collapsible-header:hover{background:var(--ifm-hover-overlay)}.wdbg-sf-chevron{font-size:.5rem;color:var(--wdbg-muted);transition:transform .15s}.wdbg-sf-open{transform:rotate(90deg)}.wdbg-sf-collapsible-title{font-weight:500}.wdbg-sf-badge{font-family:var(--wdbg-mono);font-size:.625rem;color:var(--wdbg-muted);background:var(--ifm-background-color);padding:.0625rem .3rem;border-radius:3px;margin-left:auto}.wdbg-sf-collapsible-body{padding:.5rem;border-top:1px solid var(--wdbg-border)}.wdbg-sf-array{display:flex;flex-direction:column;gap:.375rem}.wdbg-sf-array-item{display:flex;gap:.375rem;align-items:flex-start}.wdbg-sf-array-item-content{flex:1;min-width:0}.wdbg-sf-btn{font:inherit;font-size:.75rem;padding:.25rem .5rem;border:1px solid var(--wdbg-border);border-radius:3px;background:var(--wdbg-surface-2);color:var(--wdbg-muted);cursor:pointer}.wdbg-sf-btn:hover{background:var(--ifm-hover-overlay);color:var(--ifm-font-color-base)}.wdbg-sf-btn-remove{color:var(--ifm-color-danger);font-size:.875rem;line-height:1;flex-shrink:0}.wdbg-sf-btn-add{align-self:flex-start;margin-top:.125rem}.webda-debug-ui ::-webkit-scrollbar{width:6px;height:6px}.webda-debug-ui ::-webkit-scrollbar-thumb{background:var(--wdbg-border);border-radius:3px}.wdbg-navbar{position:sticky;top:0;z-index:10;display:flex;box-sizing:border-box;align-items:center;height:3.75rem;padding:.5rem var(--ifm-global-spacing);box-shadow:0 1px 2px #0000001a;font-family:var(--ifm-font-family-base);font-size:1rem;flex-shrink:0}.wdbg-navbar:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background-color:#ffffffb8;-webkit-backdrop-filter:blur(14px) saturate(1.4);backdrop-filter:blur(14px) saturate(1.4)}html[data-theme=dark] .wdbg-navbar:before{background-color:#1b1b1d99}.wdbg-navbar-brand{display:flex;align-items:center;gap:.5rem;margin-right:1rem;color:var(--ifm-font-color-base);text-decoration:none}.wdbg-navbar-brand:hover{color:var(--ifm-color-primary)}.wdbg-navbar-brand img{width:2rem;height:2rem}.wdbg-navbar-items{display:flex;align-items:center;min-width:0}.wdbg-navbar-items-right{margin-left:auto}.wdbg-navbar-link,.wdbg-navbar-github{display:flex;align-items:center;padding:.25rem .75rem;color:var(--ifm-font-color-base);font-weight:500;text-decoration:none}.wdbg-navbar-link:hover,.wdbg-navbar-github:hover,.wdbg-navbar-link-active{color:var(--ifm-color-primary)}.wdbg-navbar .wdbg-theme-toggle{margin-left:.5rem}@media(max-width:996px){.wdbg-navbar-link{display:none}}.wdbg-boot{padding:3rem var(--ifm-global-spacing);text-align:center;color:var(--ifm-color-emphasis-700)}.wdbg-graph-toggle{margin-left:auto}@media(max-width:1440px){.wdbg-app-cwd{max-width:180px}}@media(max-width:1280px){.wdbg-header-status .wdbg-conn-label,.wdbg-app-cwd{display:none}.wdbg-tab{padding:0 .75rem}}@media(max-width:1024px){.wdbg-app-info,.wdbg-brand-title{display:none}}@media(max-width:768px){.wdbg-split{flex-direction:column;height:auto}.wdbg-split-left{width:100%;border-right:none;border-bottom:1px solid var(--wdbg-border);padding-right:0;padding-bottom:1rem;max-height:200px}.wdbg-request-grid{grid-template-columns:1fr}.wdbg-app-info,.wdbg-conn-label{display:none}}