@websublime/vite-plugin-open-api-devtools 0.8.5 → 0.9.0-next.0
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/{ModelsPage-DxcKgz3y.js → ModelsPage-DoqfBilK.js} +5 -5
- package/dist/{ModelsPage-DxcKgz3y.js.map → ModelsPage-DoqfBilK.js.map} +1 -1
- package/dist/{RoutesPage-BCKS0kdj.js → RoutesPage-DmXBJ4J5.js} +4 -4
- package/dist/{RoutesPage-BCKS0kdj.js.map → RoutesPage-DmXBJ4J5.js.map} +1 -1
- package/dist/{SimulatorPage-BlbxLDdf.js → SimulatorPage-BmM-ExQg.js} +4 -4
- package/dist/{SimulatorPage-BlbxLDdf.js.map → SimulatorPage-BmM-ExQg.js.map} +1 -1
- package/dist/{TimelinePage-BhtcWy3o.js → TimelinePage-Dnh_47wz.js} +7 -7
- package/dist/{TimelinePage-BhtcWy3o.js.map → TimelinePage-Dnh_47wz.js.map} +1 -1
- package/dist/{check-BZ_jBwd4.js → check-BdvaZxRt.js} +2 -2
- package/dist/{check-BZ_jBwd4.js.map → check-BdvaZxRt.js.map} +1 -1
- package/dist/devtools.js +1 -1
- package/dist/devtools.umd.cjs +3 -3
- package/dist/devtools.umd.cjs.map +1 -1
- package/dist/{format-Dq-zmlAN.js → format-Cj8p3HJO.js} +2 -2
- package/dist/{format-Dq-zmlAN.js.map → format-Cj8p3HJO.js.map} +1 -1
- package/dist/main-HjHdsAps.js +619 -0
- package/dist/main-HjHdsAps.js.map +1 -0
- package/dist/spa/assets/{ModelsPage-Bd7YM0_p.js → ModelsPage-_etl-kz9.js} +2 -2
- package/dist/spa/assets/{ModelsPage-Bd7YM0_p.js.map → ModelsPage-_etl-kz9.js.map} +1 -1
- package/dist/spa/assets/{RoutesPage-YQcTov5t.js → RoutesPage-BN_Lo8uo.js} +2 -2
- package/dist/spa/assets/{RoutesPage-YQcTov5t.js.map → RoutesPage-BN_Lo8uo.js.map} +1 -1
- package/dist/spa/assets/{SimulatorPage-DPxecZGS.js → SimulatorPage-BF4VLn5k.js} +2 -2
- package/dist/spa/assets/{SimulatorPage-DPxecZGS.js.map → SimulatorPage-BF4VLn5k.js.map} +1 -1
- package/dist/spa/assets/TimelinePage-7OqKgItP.js +2 -0
- package/dist/spa/assets/{TimelinePage-CbWvtFc_.js.map → TimelinePage-7OqKgItP.js.map} +1 -1
- package/dist/spa/assets/check-9axZ93X-.js +2 -0
- package/dist/spa/assets/{check-DaD3RpI4.js.map → check-9axZ93X-.js.map} +1 -1
- package/dist/spa/assets/{format-er1_KlP8.js → format-CB-GiJ6N.js} +2 -2
- package/dist/spa/assets/{format-er1_KlP8.js.map → format-CB-GiJ6N.js.map} +1 -1
- package/dist/spa/assets/index-BQr16DJ3.js +3 -0
- package/dist/spa/assets/index-BQr16DJ3.js.map +1 -0
- package/dist/spa/assets/{registry-DjJcdO1T.js → registry-DAv66ZPp.js} +2 -2
- package/dist/spa/assets/{registry-DjJcdO1T.js.map → registry-DAv66ZPp.js.map} +1 -1
- package/dist/spa/assets/{trash-2-BhRxw6RN.js → trash-2-Cj6nHRK8.js} +2 -2
- package/dist/spa/assets/{trash-2-BhRxw6RN.js.map → trash-2-Cj6nHRK8.js.map} +1 -1
- package/dist/spa/assets/{triangle-alert-QXcMwGDR.js → triangle-alert-BXnev_tx.js} +2 -2
- package/dist/spa/assets/{triangle-alert-QXcMwGDR.js.map → triangle-alert-BXnev_tx.js.map} +1 -1
- package/dist/spa/assets/{vue-vendor-Bkktf9yg.js → vue-vendor-D62nux6V.js} +2 -2
- package/dist/spa/assets/{vue-vendor-Bkktf9yg.js.map → vue-vendor-D62nux6V.js.map} +1 -1
- package/dist/spa/assets/x-9zeMJ8Mo.js +2 -0
- package/dist/spa/assets/{x-DGt4DUCk.js.map → x-9zeMJ8Mo.js.map} +1 -1
- package/dist/spa/index.html +2 -2
- package/dist/{trash-2-D9Av3Lfp.js → trash-2-unSVE8Jc.js} +2 -2
- package/dist/{trash-2-D9Av3Lfp.js.map → trash-2-unSVE8Jc.js.map} +1 -1
- package/dist/{triangle-alert-6Spra6HA.js → triangle-alert-B1V6ucAg.js} +2 -2
- package/dist/{triangle-alert-6Spra6HA.js.map → triangle-alert-B1V6ucAg.js.map} +1 -1
- package/dist/{x-DI-fqJ3g.js → x-DWlhu3h-.js} +2 -2
- package/dist/{x-DI-fqJ3g.js.map → x-DWlhu3h-.js.map} +1 -1
- package/package.json +13 -12
- package/dist/main-DmyM_bX3.js +0 -537
- package/dist/main-DmyM_bX3.js.map +0 -1
- package/dist/spa/assets/TimelinePage-CbWvtFc_.js +0 -2
- package/dist/spa/assets/check-DaD3RpI4.js +0 -2
- package/dist/spa/assets/index-x38XzU3c.js +0 -3
- package/dist/spa/assets/index-x38XzU3c.js.map +0 -1
- package/dist/spa/assets/x-DGt4DUCk.js +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as e } from "./main-
|
|
1
|
+
import { c as e } from "./main-HjHdsAps.js";
|
|
2
2
|
const t = e("chevron-down", [
|
|
3
3
|
["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]
|
|
4
4
|
]);
|
|
@@ -32,4 +32,4 @@ export {
|
|
|
32
32
|
o as b,
|
|
33
33
|
s as g
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=format-
|
|
35
|
+
//# sourceMappingURL=format-Cj8p3HJO.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-
|
|
1
|
+
{"version":3,"file":"format-Cj8p3HJO.js","sources":["../../../node_modules/.pnpm/lucide-vue-next@0.513.0_vue@3.5.27_typescript@5.9.3_/node_modules/lucide-vue-next/dist/esm/icons/chevron-down.js","../../../node_modules/.pnpm/lucide-vue-next@0.513.0_vue@3.5.27_typescript@5.9.3_/node_modules/lucide-vue-next/dist/esm/icons/chevron-right.js","../../../node_modules/.pnpm/lucide-vue-next@0.513.0_vue@3.5.27_typescript@5.9.3_/node_modules/lucide-vue-next/dist/esm/icons/chevron-up.js","../../../node_modules/.pnpm/lucide-vue-next@0.513.0_vue@3.5.27_typescript@5.9.3_/node_modules/lucide-vue-next/dist/esm/icons/funnel.js","../../../node_modules/.pnpm/lucide-vue-next@0.513.0_vue@3.5.27_typescript@5.9.3_/node_modules/lucide-vue-next/dist/esm/icons/search.js","../src/utils/format.ts"],"sourcesContent":["/**\n * @license lucide-vue-next v0.513.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronDown = createLucideIcon(\"chevron-down\", [\n [\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]\n]);\n\nexport { ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-vue-next v0.513.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronRight = createLucideIcon(\"chevron-right\", [\n [\"path\", { d: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]\n]);\n\nexport { ChevronRight as default };\n//# sourceMappingURL=chevron-right.js.map\n","/**\n * @license lucide-vue-next v0.513.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronUp = createLucideIcon(\"chevron-up\", [\n [\"path\", { d: \"m18 15-6-6-6 6\", key: \"153udz\" }]\n]);\n\nexport { ChevronUp as default };\n//# sourceMappingURL=chevron-up.js.map\n","/**\n * @license lucide-vue-next v0.513.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Funnel = createLucideIcon(\"funnel\", [\n [\n \"path\",\n {\n d: \"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z\",\n key: \"sc7q7i\"\n }\n ]\n]);\n\nexport { Funnel as default };\n//# sourceMappingURL=funnel.js.map\n","/**\n * @license lucide-vue-next v0.513.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Search = createLucideIcon(\"search\", [\n [\"path\", { d: \"m21 21-4.34-4.34\", key: \"14j7rj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }]\n]);\n\nexport { Search as default };\n//# sourceMappingURL=search.js.map\n","/**\n * Format Utilities\n *\n * What: Shared formatting functions for display purposes\n * How: Provides consistent formatting across components\n * Why: Centralizes common formatting logic to avoid duplication (DRY)\n *\n * @module utils/format\n */\n\n/**\n * Get display label for HTTP method\n *\n * Converts an HTTP method to its uppercase display format.\n *\n * @param method - The HTTP method string (e.g., 'get', 'post')\n * @returns The uppercase method label (e.g., 'GET', 'POST')\n *\n * @example\n * getMethodLabel('get') // Returns 'GET'\n * getMethodLabel('post') // Returns 'POST'\n */\nexport function getMethodLabel(method: string): string {\n return method.toUpperCase();\n}\n"],"names":["ChevronDown","createLucideIcon","ChevronRight","ChevronUp","Funnel","Search","getMethodLabel","method"],"mappings":";AASK,MAACA,IAAcC,EAAiB,gBAAgB;AAAA,EACnD,CAAC,QAAQ,EAAE,GAAG,gBAAgB,KAAK,SAAQ,CAAE;AAC/C,CAAC;ACFI,MAACC,IAAeD,EAAiB,iBAAiB;AAAA,EACrD,CAAC,QAAQ,EAAE,GAAG,iBAAiB,KAAK,SAAQ,CAAE;AAChD,CAAC;ACFI,MAACE,IAAYF,EAAiB,cAAc;AAAA,EAC/C,CAAC,QAAQ,EAAE,GAAG,kBAAkB,KAAK,SAAQ,CAAE;AACjD,CAAC;ACFI,MAACG,IAASH,EAAiB,UAAU;AAAA,EACxC;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,KAAK;AAAA,IACX;AAAA,EACA;AACA,CAAC;ACRI,MAACI,IAASJ,EAAiB,UAAU;AAAA,EACxC,CAAC,QAAQ,EAAE,GAAG,oBAAoB,KAAK,SAAQ,CAAE;AAAA,EACjD,CAAC,UAAU,EAAE,IAAI,MAAM,IAAI,MAAM,GAAG,KAAK,KAAK,SAAQ,CAAE;AAC1D,CAAC;ACUM,SAASK,EAAeC,GAAwB;AACrD,SAAOA,EAAO,YAAA;AAChB;","x_google_ignoreList":[0,1,2,3,4]}
|
|
@@ -0,0 +1,619 @@
|
|
|
1
|
+
import { defineStore as se, createPinia as re } from "pinia";
|
|
2
|
+
import { h as $, ref as S, computed as i, onMounted as X, getCurrentInstance as ee, defineComponent as ie, resolveComponent as le, createElementBlock as x, openBlock as w, createElementVNode as h, createVNode as W, unref as b, Fragment as ue, renderList as de, normalizeClass as U, createBlock as N, resolveDynamicComponent as z, toDisplayString as j, withCtx as Z, Transition as pe, watch as fe, onUnmounted as me, createApp as he } from "vue";
|
|
3
|
+
import { createRouter as ve, createWebHashHistory as ye, useRoute as ke, useRouter as ge } from "vue-router";
|
|
4
|
+
const q = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), _e = (e) => e.replace(
|
|
5
|
+
/^([A-Z])|[\s-_]+(\w)/g,
|
|
6
|
+
(t, n, o) => o ? o.toUpperCase() : n.toLowerCase()
|
|
7
|
+
), Se = (e) => {
|
|
8
|
+
const t = _e(e);
|
|
9
|
+
return t.charAt(0).toUpperCase() + t.slice(1);
|
|
10
|
+
}, we = (...e) => e.filter((t, n, o) => !!t && t.trim() !== "" && o.indexOf(t) === n).join(" ").trim();
|
|
11
|
+
var D = {
|
|
12
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
13
|
+
width: 24,
|
|
14
|
+
height: 24,
|
|
15
|
+
viewBox: "0 0 24 24",
|
|
16
|
+
fill: "none",
|
|
17
|
+
stroke: "currentColor",
|
|
18
|
+
"stroke-width": 2,
|
|
19
|
+
"stroke-linecap": "round",
|
|
20
|
+
"stroke-linejoin": "round"
|
|
21
|
+
};
|
|
22
|
+
const be = ({ size: e, strokeWidth: t = 2, absoluteStrokeWidth: n, color: o, iconNode: r, name: l, class: g, ...y }, { slots: p }) => $(
|
|
23
|
+
"svg",
|
|
24
|
+
{
|
|
25
|
+
...D,
|
|
26
|
+
width: e || D.width,
|
|
27
|
+
height: e || D.height,
|
|
28
|
+
stroke: o || D.stroke,
|
|
29
|
+
"stroke-width": n ? Number(t) * 24 / Number(e) : t,
|
|
30
|
+
class: we(
|
|
31
|
+
"lucide",
|
|
32
|
+
...l ? [`lucide-${q(Se(l))}-icon`, `lucide-${q(l)}`] : ["lucide-icon"]
|
|
33
|
+
),
|
|
34
|
+
...y
|
|
35
|
+
},
|
|
36
|
+
[...r.map((a) => $(...a)), ...p.default ? [p.default()] : []]
|
|
37
|
+
);
|
|
38
|
+
const T = (e, t) => (n, { slots: o }) => $(
|
|
39
|
+
be,
|
|
40
|
+
{
|
|
41
|
+
...n,
|
|
42
|
+
iconNode: t,
|
|
43
|
+
name: e
|
|
44
|
+
},
|
|
45
|
+
o
|
|
46
|
+
);
|
|
47
|
+
const Ce = T("clock", [
|
|
48
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
49
|
+
["polyline", { points: "12 6 12 12 16 14", key: "68esgv" }]
|
|
50
|
+
]);
|
|
51
|
+
const Te = T("database", [
|
|
52
|
+
["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
|
|
53
|
+
["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
|
|
54
|
+
["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
|
|
55
|
+
]);
|
|
56
|
+
const G = T("route", [
|
|
57
|
+
["circle", { cx: "6", cy: "19", r: "3", key: "1kj8tv" }],
|
|
58
|
+
["path", { d: "M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15", key: "1d8sl" }],
|
|
59
|
+
["circle", { cx: "18", cy: "5", r: "3", key: "gq8acd" }]
|
|
60
|
+
]);
|
|
61
|
+
const Me = T("wifi-off", [
|
|
62
|
+
["path", { d: "M12 20h.01", key: "zekei9" }],
|
|
63
|
+
["path", { d: "M8.5 16.429a5 5 0 0 1 7 0", key: "1bycff" }],
|
|
64
|
+
["path", { d: "M5 12.859a10 10 0 0 1 5.17-2.69", key: "1dl1wf" }],
|
|
65
|
+
["path", { d: "M19 12.859a10 10 0 0 0-2.007-1.523", key: "4k23kn" }],
|
|
66
|
+
["path", { d: "M2 8.82a15 15 0 0 1 4.177-2.643", key: "1grhjp" }],
|
|
67
|
+
["path", { d: "M22 8.82a15 15 0 0 0-11.288-3.764", key: "z3jwby" }],
|
|
68
|
+
["path", { d: "m2 2 20 20", key: "1ooewy" }]
|
|
69
|
+
]);
|
|
70
|
+
const De = T("wifi", [
|
|
71
|
+
["path", { d: "M12 20h.01", key: "zekei9" }],
|
|
72
|
+
["path", { d: "M2 8.82a15 15 0 0 1 20 0", key: "dnpr2z" }],
|
|
73
|
+
["path", { d: "M5 12.859a10 10 0 0 1 14 0", key: "1x1e6c" }],
|
|
74
|
+
["path", { d: "M8.5 16.429a5 5 0 0 1 7 0", key: "1bycff" }]
|
|
75
|
+
]);
|
|
76
|
+
const Q = T("zap", [
|
|
77
|
+
[
|
|
78
|
+
"path",
|
|
79
|
+
{
|
|
80
|
+
d: "M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",
|
|
81
|
+
key: "1xq2db"
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
]), Ee = "#94a3b8", Ae = se("specs", () => {
|
|
85
|
+
const e = S([]), t = S(null), n = i(() => new Map(e.value.map((c) => [c.id, c]))), o = i(() => e.value.map((c) => c.id)), r = i(
|
|
86
|
+
() => t.value ? n.value.get(t.value) ?? null : null
|
|
87
|
+
), l = i(() => t.value !== null);
|
|
88
|
+
function g(c) {
|
|
89
|
+
e.value = c, t.value && !c.some((f) => f.id === t.value) && (t.value = null);
|
|
90
|
+
}
|
|
91
|
+
function y(c) {
|
|
92
|
+
t.value = c !== null && !e.value.some((f) => f.id === c) ? null : c;
|
|
93
|
+
}
|
|
94
|
+
function p(c) {
|
|
95
|
+
t.value === c ? t.value = null : y(c);
|
|
96
|
+
}
|
|
97
|
+
function a(c) {
|
|
98
|
+
return n.value.get(c)?.color ?? Ee;
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
// State
|
|
102
|
+
specs: e,
|
|
103
|
+
activeSpecFilter: t,
|
|
104
|
+
// Getters
|
|
105
|
+
specMap: n,
|
|
106
|
+
specIds: o,
|
|
107
|
+
activeSpec: r,
|
|
108
|
+
isFiltered: l,
|
|
109
|
+
// Actions
|
|
110
|
+
setSpecs: g,
|
|
111
|
+
setFilter: y,
|
|
112
|
+
toggleFilter: p,
|
|
113
|
+
getColor: a
|
|
114
|
+
};
|
|
115
|
+
}), P = {
|
|
116
|
+
path: "/_ws",
|
|
117
|
+
reconnectDelay: 2e3,
|
|
118
|
+
maxReconnectAttempts: Number.POSITIVE_INFINITY,
|
|
119
|
+
autoConnect: !0
|
|
120
|
+
}, u = S("disconnected"), H = S(null), M = S(0);
|
|
121
|
+
let s = null, O = null, C = { ...P }, R = !1;
|
|
122
|
+
const v = /* @__PURE__ */ new Map();
|
|
123
|
+
function te() {
|
|
124
|
+
return typeof window < "u" && typeof WebSocket < "u";
|
|
125
|
+
}
|
|
126
|
+
function Ie() {
|
|
127
|
+
return ee() !== null;
|
|
128
|
+
}
|
|
129
|
+
function Oe(e) {
|
|
130
|
+
return te() ? `${window.location.protocol === "https:" ? "wss:" : "ws:"}//${window.location.host}${e}` : `ws://localhost${e}`;
|
|
131
|
+
}
|
|
132
|
+
function ne() {
|
|
133
|
+
O !== null && (clearTimeout(O), O = null);
|
|
134
|
+
}
|
|
135
|
+
function xe(e, t) {
|
|
136
|
+
const n = v.get(e);
|
|
137
|
+
if (n)
|
|
138
|
+
for (const r of n)
|
|
139
|
+
try {
|
|
140
|
+
r(t);
|
|
141
|
+
} catch (l) {
|
|
142
|
+
console.error(`[DevTools WebSocket] Error in event handler for '${e}':`, l);
|
|
143
|
+
}
|
|
144
|
+
const o = v.get("*");
|
|
145
|
+
if (o)
|
|
146
|
+
for (const r of o)
|
|
147
|
+
try {
|
|
148
|
+
r({ type: e, data: t });
|
|
149
|
+
} catch (l) {
|
|
150
|
+
console.error("[DevTools WebSocket] Error in wildcard event handler:", l);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function We() {
|
|
154
|
+
u.value = "connected", M.value = 0, ne();
|
|
155
|
+
}
|
|
156
|
+
function Ne(e) {
|
|
157
|
+
for (const t of e)
|
|
158
|
+
d({ type: "get:registry", data: { specId: t.id } }), d({ type: "get:timeline", data: { specId: t.id } });
|
|
159
|
+
}
|
|
160
|
+
function ze(e) {
|
|
161
|
+
try {
|
|
162
|
+
const t = JSON.parse(e.data);
|
|
163
|
+
if (t.type === "connected") {
|
|
164
|
+
const n = t.data;
|
|
165
|
+
H.value = n.serverVersion, n.specs && Array.isArray(n.specs) && (Ae().setSpecs(n.specs), Ne(n.specs));
|
|
166
|
+
}
|
|
167
|
+
xe(t.type, t.data);
|
|
168
|
+
} catch (t) {
|
|
169
|
+
console.error("[DevTools WebSocket] Failed to parse message:", t);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
function Le() {
|
|
173
|
+
u.value, u.value = "disconnected", s = null, M.value < C.maxReconnectAttempts && (u.value = "reconnecting", M.value++, O = setTimeout(() => {
|
|
174
|
+
F();
|
|
175
|
+
}, C.reconnectDelay));
|
|
176
|
+
}
|
|
177
|
+
function $e(e) {
|
|
178
|
+
console.error("[DevTools WebSocket] Error:", e);
|
|
179
|
+
}
|
|
180
|
+
function F() {
|
|
181
|
+
if (!te() || u.value === "connecting" || u.value === "connected" || s && (s.readyState === WebSocket.CONNECTING || s.readyState === WebSocket.OPEN))
|
|
182
|
+
return;
|
|
183
|
+
oe(), u.value = "connecting";
|
|
184
|
+
const e = Oe(C.path);
|
|
185
|
+
try {
|
|
186
|
+
s = new WebSocket(e), s.onopen = We, s.onmessage = ze, s.onclose = Le, s.onerror = $e;
|
|
187
|
+
} catch (t) {
|
|
188
|
+
console.error("[DevTools WebSocket] Failed to create WebSocket:", t), u.value = "disconnected";
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
function oe() {
|
|
192
|
+
s && (s.onopen = null, s.onmessage = null, s.onclose = null, s.onerror = null, (s.readyState === WebSocket.OPEN || s.readyState === WebSocket.CONNECTING) && s.close(), s = null);
|
|
193
|
+
}
|
|
194
|
+
function ae() {
|
|
195
|
+
ne(), oe(), u.value = "disconnected", M.value = 0;
|
|
196
|
+
}
|
|
197
|
+
function d(e) {
|
|
198
|
+
if (!s || s.readyState !== WebSocket.OPEN)
|
|
199
|
+
return !1;
|
|
200
|
+
try {
|
|
201
|
+
return s.send(JSON.stringify(e)), !0;
|
|
202
|
+
} catch (t) {
|
|
203
|
+
return console.error("[DevTools WebSocket] Failed to send command:", t), !1;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
function Re() {
|
|
207
|
+
return d({ type: "get:specs" });
|
|
208
|
+
}
|
|
209
|
+
function Fe(e) {
|
|
210
|
+
return d({ type: "get:registry", data: e ? { specId: e } : void 0 });
|
|
211
|
+
}
|
|
212
|
+
function Pe(e, t) {
|
|
213
|
+
const n = {};
|
|
214
|
+
return e && (n.specId = e), t !== void 0 && (n.limit = t), d({
|
|
215
|
+
type: "get:timeline",
|
|
216
|
+
data: Object.keys(n).length > 0 ? n : void 0
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
function He(e) {
|
|
220
|
+
return d({ type: "clear:timeline", data: e ? { specId: e } : void 0 });
|
|
221
|
+
}
|
|
222
|
+
function Be(e, t) {
|
|
223
|
+
return d({ type: "get:store", data: { specId: e, schema: t } });
|
|
224
|
+
}
|
|
225
|
+
function Ve(e, t, n) {
|
|
226
|
+
return d({ type: "set:store", data: { specId: e, schema: t, items: n } });
|
|
227
|
+
}
|
|
228
|
+
function Ue(e, t) {
|
|
229
|
+
return d({ type: "clear:store", data: { specId: e, schema: t } });
|
|
230
|
+
}
|
|
231
|
+
function je(e, t) {
|
|
232
|
+
return d({ type: "set:simulation", data: { specId: e, ...t } });
|
|
233
|
+
}
|
|
234
|
+
function Ze(e, t) {
|
|
235
|
+
return d({ type: "clear:simulation", data: { specId: e, path: t } });
|
|
236
|
+
}
|
|
237
|
+
function qe(e) {
|
|
238
|
+
return d({ type: "reseed", data: { specId: e } });
|
|
239
|
+
}
|
|
240
|
+
function B(e, t) {
|
|
241
|
+
v.has(e) || v.set(e, /* @__PURE__ */ new Set());
|
|
242
|
+
const n = v.get(e);
|
|
243
|
+
return n && n.add(t), () => {
|
|
244
|
+
const o = v.get(e);
|
|
245
|
+
o && (o.delete(t), o.size === 0 && v.delete(e));
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
function V(e, t) {
|
|
249
|
+
const n = v.get(e);
|
|
250
|
+
n && (n.delete(t), n.size === 0 && v.delete(e));
|
|
251
|
+
}
|
|
252
|
+
function Ge(e, t) {
|
|
253
|
+
const n = (o) => {
|
|
254
|
+
V(e, n), t(o);
|
|
255
|
+
};
|
|
256
|
+
return B(e, n);
|
|
257
|
+
}
|
|
258
|
+
function Qe(e, t) {
|
|
259
|
+
const n = (o) => {
|
|
260
|
+
t(o) === !0 && V(e, n);
|
|
261
|
+
};
|
|
262
|
+
return B(e, n);
|
|
263
|
+
}
|
|
264
|
+
function Je() {
|
|
265
|
+
ae(), H.value = null, v.clear(), C = { ...P }, R = !1;
|
|
266
|
+
}
|
|
267
|
+
function Ke(e = {}) {
|
|
268
|
+
(!R || u.value === "disconnected") && (C = { ...P, ...e }, R = !0);
|
|
269
|
+
const t = i(() => u.value === "connected"), n = i(() => u.value === "reconnecting");
|
|
270
|
+
return Ie() && X(() => {
|
|
271
|
+
C.autoConnect && F();
|
|
272
|
+
}), {
|
|
273
|
+
/**
|
|
274
|
+
* Current connection state
|
|
275
|
+
*/
|
|
276
|
+
connectionState: i(() => u.value),
|
|
277
|
+
/**
|
|
278
|
+
* Whether the WebSocket is connected
|
|
279
|
+
*/
|
|
280
|
+
connected: t,
|
|
281
|
+
/**
|
|
282
|
+
* Whether the WebSocket is attempting to reconnect
|
|
283
|
+
*/
|
|
284
|
+
isReconnecting: n,
|
|
285
|
+
/**
|
|
286
|
+
* Server version received on connection
|
|
287
|
+
*/
|
|
288
|
+
serverVersion: i(() => H.value),
|
|
289
|
+
/**
|
|
290
|
+
* Number of reconnection attempts made
|
|
291
|
+
*/
|
|
292
|
+
reconnectAttempts: i(() => M.value),
|
|
293
|
+
/**
|
|
294
|
+
* Connect to the WebSocket server
|
|
295
|
+
*/
|
|
296
|
+
connect: F,
|
|
297
|
+
/**
|
|
298
|
+
* Disconnect from the WebSocket server
|
|
299
|
+
*/
|
|
300
|
+
disconnect: ae,
|
|
301
|
+
/**
|
|
302
|
+
* Send a command to the server
|
|
303
|
+
*/
|
|
304
|
+
send: d,
|
|
305
|
+
/**
|
|
306
|
+
* Subscribe to a server event
|
|
307
|
+
*/
|
|
308
|
+
on: B,
|
|
309
|
+
/**
|
|
310
|
+
* Unsubscribe from a server event
|
|
311
|
+
*/
|
|
312
|
+
off: V,
|
|
313
|
+
/**
|
|
314
|
+
* Subscribe to an event once (one-shot, auto-unsubscribes after first call)
|
|
315
|
+
*/
|
|
316
|
+
once: Ge,
|
|
317
|
+
/**
|
|
318
|
+
* Subscribe to an event until handler returns true
|
|
319
|
+
*/
|
|
320
|
+
onUntil: Qe,
|
|
321
|
+
/**
|
|
322
|
+
* Reset the composable state (useful for testing)
|
|
323
|
+
*/
|
|
324
|
+
resetState: Je,
|
|
325
|
+
// =========================================================================
|
|
326
|
+
// Multi-spec command wrappers
|
|
327
|
+
// =========================================================================
|
|
328
|
+
getSpecs: Re,
|
|
329
|
+
getRegistry: Fe,
|
|
330
|
+
getTimeline: Pe,
|
|
331
|
+
clearTimeline: He,
|
|
332
|
+
getStore: Be,
|
|
333
|
+
setStore: Ve,
|
|
334
|
+
clearStore: Ue,
|
|
335
|
+
setSimulation: je,
|
|
336
|
+
clearSimulation: Ze,
|
|
337
|
+
reseed: qe
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
const ce = [
|
|
341
|
+
{
|
|
342
|
+
path: "/",
|
|
343
|
+
redirect: "/routes"
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
path: "/routes",
|
|
347
|
+
name: "routes",
|
|
348
|
+
component: () => import("./RoutesPage-DmXBJ4J5.js"),
|
|
349
|
+
meta: {
|
|
350
|
+
title: "Routes",
|
|
351
|
+
icon: "route"
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
path: "/timeline",
|
|
356
|
+
name: "timeline",
|
|
357
|
+
component: () => import("./TimelinePage-Dnh_47wz.js"),
|
|
358
|
+
meta: {
|
|
359
|
+
title: "Timeline",
|
|
360
|
+
icon: "clock"
|
|
361
|
+
}
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
path: "/models",
|
|
365
|
+
name: "models",
|
|
366
|
+
component: () => import("./ModelsPage-DoqfBilK.js"),
|
|
367
|
+
meta: {
|
|
368
|
+
title: "Models",
|
|
369
|
+
icon: "database"
|
|
370
|
+
}
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
path: "/simulator",
|
|
374
|
+
name: "simulator",
|
|
375
|
+
component: () => import("./SimulatorPage-BmM-ExQg.js"),
|
|
376
|
+
meta: {
|
|
377
|
+
title: "Simulator",
|
|
378
|
+
icon: "zap"
|
|
379
|
+
}
|
|
380
|
+
},
|
|
381
|
+
// Catch-all route for undefined paths - redirects to routes page
|
|
382
|
+
{
|
|
383
|
+
path: "/:pathMatch(.*)*",
|
|
384
|
+
name: "not-found",
|
|
385
|
+
redirect: "/routes"
|
|
386
|
+
}
|
|
387
|
+
], Ye = ve({
|
|
388
|
+
history: ye(),
|
|
389
|
+
routes: ce
|
|
390
|
+
}), Xe = { class: "app" }, et = { class: "app-header" }, tt = { class: "app-header__brand" }, nt = {
|
|
391
|
+
class: "app-nav",
|
|
392
|
+
role: "tablist",
|
|
393
|
+
"aria-label": "DevTools navigation"
|
|
394
|
+
}, ot = ["aria-selected", "aria-current", "aria-controls", "onClick"], at = { class: "app-nav__label" }, ct = { class: "app-header__status" }, st = { class: "connection-status" }, rt = { class: "connection-status__text" }, it = { class: "app-main" }, lt = /* @__PURE__ */ ie({
|
|
395
|
+
__name: "App",
|
|
396
|
+
setup(e) {
|
|
397
|
+
const t = ke(), n = ge(), o = i(
|
|
398
|
+
() => ce.filter((a) => a.name && a.meta?.title).map((a) => ({
|
|
399
|
+
name: a.name,
|
|
400
|
+
path: a.path,
|
|
401
|
+
title: a.meta?.title,
|
|
402
|
+
icon: a.meta?.icon
|
|
403
|
+
}))
|
|
404
|
+
), r = i(() => t.name);
|
|
405
|
+
function l(a) {
|
|
406
|
+
n.push(a);
|
|
407
|
+
}
|
|
408
|
+
const g = {
|
|
409
|
+
route: G,
|
|
410
|
+
clock: Ce,
|
|
411
|
+
database: Te,
|
|
412
|
+
zap: Q
|
|
413
|
+
};
|
|
414
|
+
function y(a) {
|
|
415
|
+
return g[a] ?? G;
|
|
416
|
+
}
|
|
417
|
+
const { connected: p } = Ke();
|
|
418
|
+
return (a, c) => {
|
|
419
|
+
const f = le("router-view");
|
|
420
|
+
return w(), x("div", Xe, [
|
|
421
|
+
h("header", et, [
|
|
422
|
+
h("div", tt, [
|
|
423
|
+
W(b(Q), {
|
|
424
|
+
class: "app-header__logo",
|
|
425
|
+
size: 20
|
|
426
|
+
}),
|
|
427
|
+
c[0] || (c[0] = h("span", { class: "app-header__title" }, "OpenAPI DevTools", -1))
|
|
428
|
+
]),
|
|
429
|
+
h("nav", nt, [
|
|
430
|
+
(w(!0), x(ue, null, de(o.value, (m) => (w(), x("button", {
|
|
431
|
+
key: m.name,
|
|
432
|
+
role: "tab",
|
|
433
|
+
"aria-selected": r.value === m.name,
|
|
434
|
+
"aria-current": r.value === m.name ? "true" : void 0,
|
|
435
|
+
"aria-controls": `panel-${m.name}`,
|
|
436
|
+
tabindex: 0,
|
|
437
|
+
class: U([
|
|
438
|
+
"app-nav__tab",
|
|
439
|
+
{ "app-nav__tab--active": r.value === m.name }
|
|
440
|
+
]),
|
|
441
|
+
onClick: (ht) => l(m.path)
|
|
442
|
+
}, [
|
|
443
|
+
(w(), N(z(y(m.icon)), {
|
|
444
|
+
size: 16,
|
|
445
|
+
class: "app-nav__icon"
|
|
446
|
+
})),
|
|
447
|
+
h("span", at, j(m.title), 1)
|
|
448
|
+
], 10, ot))), 128))
|
|
449
|
+
]),
|
|
450
|
+
h("div", ct, [
|
|
451
|
+
h("div", st, [
|
|
452
|
+
h("span", {
|
|
453
|
+
class: U([
|
|
454
|
+
"connection-status__dot",
|
|
455
|
+
b(p) ? "connection-status__dot--connected" : "connection-status__dot--disconnected"
|
|
456
|
+
])
|
|
457
|
+
}, null, 2),
|
|
458
|
+
h("span", rt, j(b(p) ? "Connected" : "Disconnected"), 1),
|
|
459
|
+
(w(), N(z(b(p) ? b(De) : b(Me)), {
|
|
460
|
+
size: 14,
|
|
461
|
+
class: "connection-status__icon"
|
|
462
|
+
}))
|
|
463
|
+
])
|
|
464
|
+
])
|
|
465
|
+
]),
|
|
466
|
+
h("main", it, [
|
|
467
|
+
W(f, null, {
|
|
468
|
+
default: Z(({ Component: m }) => [
|
|
469
|
+
W(pe, {
|
|
470
|
+
name: "fade",
|
|
471
|
+
mode: "out-in"
|
|
472
|
+
}, {
|
|
473
|
+
default: Z(() => [
|
|
474
|
+
(w(), N(z(m)))
|
|
475
|
+
]),
|
|
476
|
+
_: 2
|
|
477
|
+
}, 1024)
|
|
478
|
+
]),
|
|
479
|
+
_: 1
|
|
480
|
+
})
|
|
481
|
+
])
|
|
482
|
+
]);
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
}), ut = (e, t) => {
|
|
486
|
+
const n = e.__vccOpts || e;
|
|
487
|
+
for (const [o, r] of t)
|
|
488
|
+
n[o] = r;
|
|
489
|
+
return n;
|
|
490
|
+
}, dt = /* @__PURE__ */ ut(lt, [["__scopeId", "data-v-0a83e2b9"]]), pt = ["light", "dark", "system"];
|
|
491
|
+
function J(e) {
|
|
492
|
+
return typeof e == "string" && pt.includes(e);
|
|
493
|
+
}
|
|
494
|
+
const L = "openapi-devtools-theme", k = S("system"), _ = S(!1);
|
|
495
|
+
let E = null, A = null;
|
|
496
|
+
function I() {
|
|
497
|
+
return typeof window < "u" && typeof document < "u";
|
|
498
|
+
}
|
|
499
|
+
function ft() {
|
|
500
|
+
return ee() !== null;
|
|
501
|
+
}
|
|
502
|
+
function gt() {
|
|
503
|
+
const e = i(() => k.value === "system" ? _.value ? "dark" : "light" : k.value), t = i(() => e.value === "dark");
|
|
504
|
+
function n() {
|
|
505
|
+
if (!I()) return;
|
|
506
|
+
const a = document.documentElement;
|
|
507
|
+
e.value === "dark" ? (a.classList.add("dark"), a.classList.remove("light")) : (a.classList.add("light"), a.classList.remove("dark"));
|
|
508
|
+
}
|
|
509
|
+
function o(a) {
|
|
510
|
+
if (!J(a)) {
|
|
511
|
+
console.warn(`[DevTools] Invalid theme mode: ${a}`);
|
|
512
|
+
return;
|
|
513
|
+
}
|
|
514
|
+
if (k.value = a, I())
|
|
515
|
+
try {
|
|
516
|
+
localStorage.setItem(L, a);
|
|
517
|
+
} catch {
|
|
518
|
+
console.warn("[DevTools] Unable to persist theme preference");
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
function r() {
|
|
522
|
+
k.value === "system" ? o(_.value ? "light" : "dark") : o(k.value === "dark" ? "light" : "dark");
|
|
523
|
+
}
|
|
524
|
+
function l() {
|
|
525
|
+
o("system");
|
|
526
|
+
}
|
|
527
|
+
function g() {
|
|
528
|
+
E && A && (E.removeEventListener("change", A), E = null, A = null);
|
|
529
|
+
}
|
|
530
|
+
function y() {
|
|
531
|
+
if (!I()) return;
|
|
532
|
+
g();
|
|
533
|
+
const a = window.matchMedia("(prefers-color-scheme: dark)");
|
|
534
|
+
_.value = a.matches;
|
|
535
|
+
const c = (f) => {
|
|
536
|
+
_.value = f.matches;
|
|
537
|
+
};
|
|
538
|
+
a.addEventListener("change", c), E = a, A = c;
|
|
539
|
+
try {
|
|
540
|
+
const f = localStorage.getItem(L);
|
|
541
|
+
J(f) && (k.value = f);
|
|
542
|
+
} catch {
|
|
543
|
+
}
|
|
544
|
+
n();
|
|
545
|
+
}
|
|
546
|
+
function p() {
|
|
547
|
+
if (g(), k.value = "system", _.value = !1, I()) {
|
|
548
|
+
document.documentElement.classList.remove("dark", "light");
|
|
549
|
+
try {
|
|
550
|
+
localStorage.removeItem(L);
|
|
551
|
+
} catch {
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
return fe([k, _], () => {
|
|
556
|
+
n();
|
|
557
|
+
}), ft() && (X(() => {
|
|
558
|
+
y();
|
|
559
|
+
}), me(() => {
|
|
560
|
+
g();
|
|
561
|
+
})), {
|
|
562
|
+
/**
|
|
563
|
+
* Current theme mode setting ('light', 'dark', or 'system')
|
|
564
|
+
*/
|
|
565
|
+
themeMode: i(() => k.value),
|
|
566
|
+
/**
|
|
567
|
+
* The effective theme after resolving 'system' mode
|
|
568
|
+
*/
|
|
569
|
+
effectiveTheme: e,
|
|
570
|
+
/**
|
|
571
|
+
* Whether dark mode is currently active
|
|
572
|
+
*/
|
|
573
|
+
isDark: t,
|
|
574
|
+
/**
|
|
575
|
+
* Whether the system prefers dark mode
|
|
576
|
+
*/
|
|
577
|
+
systemPrefersDark: i(() => _.value),
|
|
578
|
+
/**
|
|
579
|
+
* Set the theme mode
|
|
580
|
+
*/
|
|
581
|
+
setTheme: o,
|
|
582
|
+
/**
|
|
583
|
+
* Toggle between light and dark mode
|
|
584
|
+
*/
|
|
585
|
+
toggleTheme: r,
|
|
586
|
+
/**
|
|
587
|
+
* Reset to system preference
|
|
588
|
+
*/
|
|
589
|
+
resetToSystem: l,
|
|
590
|
+
/**
|
|
591
|
+
* Manually initialize theme (useful for SSR hydration)
|
|
592
|
+
*/
|
|
593
|
+
initialize: y,
|
|
594
|
+
/**
|
|
595
|
+
* Reset theme state to defaults (useful for testing)
|
|
596
|
+
*/
|
|
597
|
+
resetState: p
|
|
598
|
+
};
|
|
599
|
+
}
|
|
600
|
+
let K = !1, Y = null;
|
|
601
|
+
function mt() {
|
|
602
|
+
if (K)
|
|
603
|
+
return Y;
|
|
604
|
+
const e = he(dt), t = re();
|
|
605
|
+
return e.use(t), e.use(Ye), e.mount("#app"), K = !0, Y = e, e;
|
|
606
|
+
}
|
|
607
|
+
typeof window < "u" && document.getElementById("app") && mt();
|
|
608
|
+
export {
|
|
609
|
+
Ce as C,
|
|
610
|
+
Te as D,
|
|
611
|
+
G as R,
|
|
612
|
+
Q as Z,
|
|
613
|
+
ut as _,
|
|
614
|
+
gt as a,
|
|
615
|
+
mt as b,
|
|
616
|
+
T as c,
|
|
617
|
+
Ke as u
|
|
618
|
+
};
|
|
619
|
+
//# sourceMappingURL=main-HjHdsAps.js.map
|