@testsmith/api-spector 0.9.0 → 0.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/out/main/chunks/{broker-client-DqDgA2G6.js → broker-client-JU-AwkVE.js} +1 -1
- package/out/main/chunks/{perf-run-Ww_weuqI.js → perf-run-BEbf2piB.js} +1 -1
- package/out/main/chunks/{request-exec-CcF1Fzve.js → request-exec-DroNv29-.js} +23 -17
- package/out/main/contract.js +2 -2
- package/out/main/flow.js +2 -2
- package/out/main/index.js +3 -3
- package/out/main/lib.js +1 -1
- package/out/main/perf-worker.js +2 -2
- package/out/main/perf.js +3 -3
- package/out/main/register-handlers.js +2 -2
- package/out/main/runner.js +2 -2
- package/out/renderer/assets/{GraphQLEditor-CmfodipY.js → GraphQLEditor-CJm8glW5.js} +1 -1
- package/out/renderer/assets/{SoapEditor-CVRCFvJy.js → SoapEditor-C2eMs7-Z.js} +1 -1
- package/out/renderer/assets/{index-BV1FsSQR.js → index-Bf9-CiTh.js} +164 -89
- package/out/renderer/assets/index-C5qn-ccU.css +627 -0
- package/out/renderer/index.html +2 -2
- package/package.json +1 -1
- package/out/renderer/assets/index-D9e_KYf1.css +0 -627
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./GraphQLEditor-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./GraphQLEditor-CJm8glW5.js","./codemirror-BKmwMUlV.js","./ajv-CJPwFjiP.js","./SoapEditor-C2eMs7-Z.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import { r as requireReact, g as getDefaultExportFromCjs, R as React, a as reactExports, b as autocompletion, h as hoverTooltip, j as jsxRuntimeExports, V as ViewPlugin, E as EditorView, k as keymap, t as toggleComment, D as Decoration, c as RangeSetBuilder, x as xml, d as json, e as ReactCodeMirror, o as oneDark, f as javascript } from "./codemirror-BKmwMUlV.js";
|
|
3
3
|
import { r as requireAjv } from "./ajv-CJPwFjiP.js";
|
|
4
4
|
var client = { exports: {} };
|
|
@@ -15985,6 +15985,7 @@ function useVarValues() {
|
|
|
15985
15985
|
}
|
|
15986
15986
|
return result;
|
|
15987
15987
|
}
|
|
15988
|
+
const Workspace = "Workspace";
|
|
15988
15989
|
const Collections$6 = "Collections";
|
|
15989
15990
|
const History$6 = "History";
|
|
15990
15991
|
const Git$6 = "Git";
|
|
@@ -16190,6 +16191,9 @@ const or$6 = "or";
|
|
|
16190
16191
|
const Disabled$6 = "Disabled";
|
|
16191
16192
|
const en = {
|
|
16192
16193
|
"Close tab": "Close tab",
|
|
16194
|
+
"Open api-spector.dev": "Open api-spector.dev",
|
|
16195
|
+
Workspace,
|
|
16196
|
+
"API Spector home": "API Spector home",
|
|
16193
16197
|
"Request body": "Request body",
|
|
16194
16198
|
"Script editor": "Script editor",
|
|
16195
16199
|
"JSON schema": "JSON schema",
|
|
@@ -29587,8 +29591,8 @@ function jsonWithComments() {
|
|
|
29587
29591
|
function xmlWithComments() {
|
|
29588
29592
|
return [xml(), commentKeymap];
|
|
29589
29593
|
}
|
|
29590
|
-
const GraphQLEditor = reactExports.lazy(() => __vitePreload(() => import("./GraphQLEditor-
|
|
29591
|
-
const SoapEditor = reactExports.lazy(() => __vitePreload(() => import("./SoapEditor-
|
|
29594
|
+
const GraphQLEditor = reactExports.lazy(() => __vitePreload(() => import("./GraphQLEditor-CJm8glW5.js"), true ? __vite__mapDeps([0,1,2]) : void 0, import.meta.url).then((m) => ({ default: m.GraphQLEditor })));
|
|
29595
|
+
const SoapEditor = reactExports.lazy(() => __vitePreload(() => import("./SoapEditor-C2eMs7-Z.js"), true ? __vite__mapDeps([3,1,2]) : void 0, import.meta.url).then((m) => ({ default: m.SoapEditor })));
|
|
29592
29596
|
function BodyTab({ request: request2, onChange }) {
|
|
29593
29597
|
const t = useT();
|
|
29594
29598
|
const editorFallback = /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-4 text-xs text-surface-500", children: t("Loading editor…") });
|
|
@@ -46348,7 +46352,7 @@ function WelcomeScreen() {
|
|
|
46348
46352
|
)
|
|
46349
46353
|
] }),
|
|
46350
46354
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-surface-400 text-sm max-w-sm", children: t("Local-first API testing with Robot Framework & Playwright code generation. Secrets stay on your machine.") }),
|
|
46351
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-[11px] mt-3", style: { color: "var(--text-muted)" }, children: t("version :version", { version: "0.9.
|
|
46355
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-[11px] mt-3", style: { color: "var(--text-muted)" }, children: t("version :version", { version: "0.9.1" }) })
|
|
46352
46356
|
] }),
|
|
46353
46357
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-3 w-64", children: [
|
|
46354
46358
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -47965,10 +47969,17 @@ function WorkspaceSettingsModal({ onClose, initialTab }) {
|
|
|
47965
47969
|
" ",
|
|
47966
47970
|
t("in an environment variable or an auth field; it is resolved at send-time and never written to the workspace. This connection config is non-secret - tokens and secret-ids come from your environment (or the Vault sign-in below).")
|
|
47967
47971
|
] }),
|
|
47972
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-surface-600 text-[11px]", children: [
|
|
47973
|
+
t("Using OpenBao? It is API-compatible, so the same settings apply. Reference secrets with"),
|
|
47974
|
+
" ",
|
|
47975
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono text-surface-400", children: "bao:secret/data/app#token" }),
|
|
47976
|
+
" ",
|
|
47977
|
+
t("and set BAO_ADDR / BAO_TOKEN (VAULT_* also works).")
|
|
47978
|
+
] }),
|
|
47968
47979
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2 border border-surface-800 rounded p-3", children: [
|
|
47969
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-[10px] uppercase tracking-wider text-surface-500 font-semibold", children: "HashiCorp Vault" }),
|
|
47980
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-[10px] uppercase tracking-wider text-surface-500 font-semibold", children: t("HashiCorp Vault / OpenBao") }),
|
|
47970
47981
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
47971
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelCls, children: t("Address (VAULT_ADDR)") }),
|
|
47982
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: labelCls, children: t("Address (VAULT_ADDR / BAO_ADDR)") }),
|
|
47972
47983
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
47973
47984
|
"input",
|
|
47974
47985
|
{
|
|
@@ -49249,6 +49260,46 @@ function collectRequestsByFolder(folder2, src) {
|
|
|
49249
49260
|
walk2(folder2);
|
|
49250
49261
|
return out;
|
|
49251
49262
|
}
|
|
49263
|
+
function Tooltip({
|
|
49264
|
+
label,
|
|
49265
|
+
align = "center",
|
|
49266
|
+
children: children2
|
|
49267
|
+
}) {
|
|
49268
|
+
const pos = align === "right" ? "right-0" : align === "left" ? "left-0" : "left-1/2 -translate-x-1/2";
|
|
49269
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "relative inline-flex group/tip", children: [
|
|
49270
|
+
children2,
|
|
49271
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
49272
|
+
"span",
|
|
49273
|
+
{
|
|
49274
|
+
"aria-hidden": "true",
|
|
49275
|
+
className: `pointer-events-none absolute top-full ${pos} mt-1.5 z-50 hidden group-hover/tip:block group-focus-within/tip:block whitespace-nowrap rounded px-2 py-1 text-[11px] bg-surface-900 text-[var(--text-primary)] border border-surface-700 shadow-lg`,
|
|
49276
|
+
children: label
|
|
49277
|
+
}
|
|
49278
|
+
)
|
|
49279
|
+
] });
|
|
49280
|
+
}
|
|
49281
|
+
function DocIcon() {
|
|
49282
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { className: "w-3 h-3", fill: "none", stroke: "currentColor", strokeWidth: 1.8, viewBox: "0 0 24 24", "aria-hidden": "true", children: [
|
|
49283
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M14 3H7a2 2 0 00-2 2v14a2 2 0 002 2h10a2 2 0 002-2V8l-5-5z" }),
|
|
49284
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M14 3v5h5M8.5 13h7M8.5 16.5h5" })
|
|
49285
|
+
] });
|
|
49286
|
+
}
|
|
49287
|
+
function ImportIcon() {
|
|
49288
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { className: "w-3 h-3", fill: "none", stroke: "currentColor", strokeWidth: 1.8, viewBox: "0 0 24 24", "aria-hidden": "true", children: [
|
|
49289
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M12 3v10m0 0l-3.5-3.5M12 13l3.5-3.5" }),
|
|
49290
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M4 16v3a2 2 0 002 2h12a2 2 0 002-2v-3" })
|
|
49291
|
+
] });
|
|
49292
|
+
}
|
|
49293
|
+
function Svg({ children: children2 }) {
|
|
49294
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-3 h-3", fill: "none", stroke: "currentColor", strokeWidth: 1.8, viewBox: "0 0 24 24", "aria-hidden": "true", children: children2 });
|
|
49295
|
+
}
|
|
49296
|
+
const OpenWsIcon = () => /* @__PURE__ */ jsxRuntimeExports.jsx(Svg, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M3.75 9.75h16.5a1.5 1.5 0 011.47 1.8l-1.2 6a1.5 1.5 0 01-1.47 1.2H4.95a1.5 1.5 0 01-1.47-1.2l-1.2-6a1.5 1.5 0 011.47-1.8zM3.75 9.75V6.75A1.5 1.5 0 015.25 5.25h3.88a1.5 1.5 0 011.06.44l1.12 1.12a1.5 1.5 0 001.06.44h4.88a1.5 1.5 0 011.5 1.5v.56" }) });
|
|
49297
|
+
const NewWsIcon = () => /* @__PURE__ */ jsxRuntimeExports.jsx(Svg, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M12 11v5m2.5-2.5h-5M3.75 7.5V18a1.5 1.5 0 001.5 1.5h13.5A1.5 1.5 0 0020.25 18V9a1.5 1.5 0 00-1.5-1.5h-5.19a1.5 1.5 0 01-1.06-.44l-1.12-1.12a1.5 1.5 0 00-1.06-.44H5.25a1.5 1.5 0 00-1.5 1.5z" }) });
|
|
49298
|
+
const CloseWsIcon = () => /* @__PURE__ */ jsxRuntimeExports.jsx(Svg, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 6l12 12M18 6L6 18" }) });
|
|
49299
|
+
const SaveIcon = () => /* @__PURE__ */ jsxRuntimeExports.jsxs(Svg, { children: [
|
|
49300
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 4h11l3 3v12a1 1 0 01-1 1H5a1 1 0 01-1-1V5a1 1 0 011-1z" }),
|
|
49301
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M8 4v4h6V4M8 13h8v6H8z" })
|
|
49302
|
+
] });
|
|
49252
49303
|
const { electron: electron$f } = window;
|
|
49253
49304
|
function Toolbar({ onOpenDocs: _onOpenDocs }) {
|
|
49254
49305
|
const t = useT();
|
|
@@ -49360,34 +49411,51 @@ function Toolbar({ onOpenDocs: _onOpenDocs }) {
|
|
|
49360
49411
|
.logo-pupil-r { animation-delay: 0.04s; }
|
|
49361
49412
|
` }),
|
|
49362
49413
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 mr-1 shrink-0 select-none", children: [
|
|
49363
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
49364
|
-
|
|
49365
|
-
|
|
49366
|
-
|
|
49367
|
-
|
|
49368
|
-
|
|
49369
|
-
|
|
49370
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("
|
|
49371
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
49372
|
-
|
|
49373
|
-
|
|
49374
|
-
|
|
49375
|
-
|
|
49376
|
-
|
|
49377
|
-
|
|
49378
|
-
|
|
49379
|
-
|
|
49380
|
-
|
|
49381
|
-
|
|
49382
|
-
|
|
49383
|
-
|
|
49384
|
-
|
|
49414
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
49415
|
+
"button",
|
|
49416
|
+
{
|
|
49417
|
+
onClick: () => window.electron.openExternal("https://api-spector.dev"),
|
|
49418
|
+
title: t("Open api-spector.dev"),
|
|
49419
|
+
"aria-label": t("API Spector home"),
|
|
49420
|
+
className: "shrink-0 focus:outline-none rounded hover:opacity-80 transition-opacity cursor-pointer",
|
|
49421
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { width: "52", height: "52", viewBox: "0 0 512 512", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
49422
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("defs", { children: [
|
|
49423
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("radialGradient", { id: "logoBody", cx: "35%", cy: "22%", r: "70%", children: [
|
|
49424
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", stopColor: "#5497c8" }),
|
|
49425
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "55%", stopColor: "#205d96" }),
|
|
49426
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", stopColor: "#123a60" })
|
|
49427
|
+
] }),
|
|
49428
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("linearGradient", { id: "logoGloss", x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
49429
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "0%", stopColor: "white", stopOpacity: "0.45" }),
|
|
49430
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("stop", { offset: "100%", stopColor: "white", stopOpacity: "0" })
|
|
49431
|
+
] }),
|
|
49432
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("clipPath", { id: "logoGhostClip", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M 130,225 C 130,95 382,95 382,225 L 382,390 Q 340,435 298,390 Q 256,435 214,390 Q 172,435 130,390 Z" }) })
|
|
49433
|
+
] }),
|
|
49434
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M 130,225 C 130,95 382,95 382,225 L 382,390 Q 340,435 298,390 Q 256,435 214,390 Q 172,435 130,390 Z", fill: "url(#logoBody)" }),
|
|
49435
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("ellipse", { cx: "198", cy: "262", rx: "29", ry: "33", fill: "white" }),
|
|
49436
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("ellipse", { cx: "314", cy: "262", rx: "29", ry: "33", fill: "white" }),
|
|
49437
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("ellipse", { cx: "204", cy: "268", rx: "16", ry: "20", fill: "#0b1624", className: "logo-pupil" }),
|
|
49438
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("ellipse", { cx: "320", cy: "268", rx: "16", ry: "20", fill: "#0b1624", className: "logo-pupil logo-pupil-r" }),
|
|
49439
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("ellipse", { cx: "194", cy: "254", rx: "6", ry: "7", fill: "white", opacity: "0.65" }),
|
|
49440
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("ellipse", { cx: "310", cy: "254", rx: "6", ry: "7", fill: "white", opacity: "0.65" }),
|
|
49441
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("ellipse", { cx: "256", cy: "100", rx: "200", ry: "180", fill: "url(#logoGloss)", clipPath: "url(#logoGhostClip)" })
|
|
49442
|
+
] })
|
|
49443
|
+
}
|
|
49444
|
+
),
|
|
49385
49445
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col leading-tight", children: [
|
|
49386
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
49387
|
-
|
|
49388
|
-
|
|
49389
|
-
|
|
49390
|
-
|
|
49446
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
49447
|
+
"button",
|
|
49448
|
+
{
|
|
49449
|
+
onClick: () => window.electron.openExternal("https://api-spector.dev"),
|
|
49450
|
+
title: t("Open api-spector.dev"),
|
|
49451
|
+
className: "text-xs font-semibold tracking-wide text-left hover:underline focus:outline-none cursor-pointer",
|
|
49452
|
+
children: [
|
|
49453
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { color: "var(--wordmark-muted)" }, children: "API" }),
|
|
49454
|
+
" ",
|
|
49455
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { color: "var(--wordmark-accent)" }, children: "Spector" })
|
|
49456
|
+
]
|
|
49457
|
+
}
|
|
49458
|
+
),
|
|
49391
49459
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
49392
49460
|
"button",
|
|
49393
49461
|
{
|
|
@@ -49399,92 +49467,98 @@ function Toolbar({ onOpenDocs: _onOpenDocs }) {
|
|
|
49399
49467
|
)
|
|
49400
49468
|
] })
|
|
49401
49469
|
] }),
|
|
49402
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
49403
|
-
"button",
|
|
49404
|
-
{
|
|
49405
|
-
onClick: () => setImportOpen(true),
|
|
49406
|
-
className: "px-2.5 py-1 text-xs bg-surface-800 hover:bg-surface-700 rounded transition-colors shrink-0",
|
|
49407
|
-
title: t("Import collection (Postman, OpenAPI, Insomnia, Bruno)"),
|
|
49408
|
-
children: t("Import")
|
|
49409
|
-
}
|
|
49410
|
-
),
|
|
49411
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-px h-4 bg-surface-800 mx-1 shrink-0" }),
|
|
49412
49470
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-surface-600 text-xs shrink-0", children: t("ENV") }),
|
|
49413
49471
|
/* @__PURE__ */ jsxRuntimeExports.jsx(EnvironmentBar, { inline: true })
|
|
49414
49472
|
] }),
|
|
49415
49473
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 px-3 py-1.5 shrink-0 border-l border-surface-800", children: [
|
|
49416
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
49474
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-surface-600 text-xs shrink-0", children: t("Workspace") }),
|
|
49475
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { label: t("Open a different workspace"), children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
49417
49476
|
"button",
|
|
49418
49477
|
{
|
|
49419
49478
|
onClick: openWs,
|
|
49420
49479
|
disabled: wsBusy,
|
|
49421
|
-
className: "
|
|
49422
|
-
|
|
49423
|
-
children:
|
|
49480
|
+
className: "p-1.5 bg-surface-800 hover:bg-surface-700 rounded transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
|
|
49481
|
+
"aria-label": t("Open a different workspace"),
|
|
49482
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(OpenWsIcon, {})
|
|
49424
49483
|
}
|
|
49425
|
-
),
|
|
49426
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
49484
|
+
) }),
|
|
49485
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { label: t("Create a new workspace"), children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
49427
49486
|
"button",
|
|
49428
49487
|
{
|
|
49429
49488
|
onClick: newWs,
|
|
49430
49489
|
disabled: wsBusy,
|
|
49431
|
-
className: "
|
|
49432
|
-
|
|
49433
|
-
children:
|
|
49490
|
+
className: "p-1.5 bg-surface-800 hover:bg-surface-700 rounded transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
|
|
49491
|
+
"aria-label": t("Create a new workspace"),
|
|
49492
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(NewWsIcon, {})
|
|
49434
49493
|
}
|
|
49435
|
-
),
|
|
49436
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
49494
|
+
) }),
|
|
49495
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { label: t("Close current workspace"), children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
49437
49496
|
"button",
|
|
49438
49497
|
{
|
|
49439
49498
|
onClick: async () => {
|
|
49440
49499
|
await electron$f.closeWorkspace();
|
|
49441
49500
|
closeWorkspace();
|
|
49442
49501
|
},
|
|
49443
|
-
className: "
|
|
49444
|
-
|
|
49445
|
-
children:
|
|
49502
|
+
className: "p-1.5 bg-surface-800 hover:bg-surface-700 rounded transition-colors",
|
|
49503
|
+
"aria-label": t("Close current workspace"),
|
|
49504
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(CloseWsIcon, {})
|
|
49446
49505
|
}
|
|
49447
|
-
),
|
|
49448
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
49506
|
+
) }),
|
|
49507
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { label: saving ? t("Saving…") : t("Save all unsaved changes"), children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
49449
49508
|
"button",
|
|
49450
49509
|
{
|
|
49451
49510
|
onClick: saveAll,
|
|
49452
49511
|
disabled: saving,
|
|
49453
|
-
className: `
|
|
49454
|
-
|
|
49512
|
+
className: `relative p-1.5 rounded transition-colors ${hasDirty ? "bg-blue-700 hover:bg-blue-600 text-white" : "bg-surface-800 hover:bg-surface-700 text-surface-500"} ${saving ? "opacity-60" : ""}`,
|
|
49513
|
+
"aria-label": t("Save all unsaved changes"),
|
|
49455
49514
|
children: [
|
|
49456
|
-
|
|
49457
|
-
|
|
49515
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(SaveIcon, {}),
|
|
49516
|
+
hasDirty && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "absolute -top-0.5 -right-0.5 w-1.5 h-1.5 rounded-full bg-amber-400" })
|
|
49458
49517
|
]
|
|
49459
49518
|
}
|
|
49460
|
-
),
|
|
49461
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
49462
|
-
|
|
49463
|
-
{
|
|
49464
|
-
onClick: () => setWorkspaceSettingsOpen(true),
|
|
49465
|
-
className: "px-2.5 py-1 text-xs bg-surface-800 hover:bg-surface-700 rounded transition-colors",
|
|
49466
|
-
title: t("Workspace settings"),
|
|
49467
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { fontSize: "16px", lineHeight: 1 }, children: "⚙" })
|
|
49468
|
-
}
|
|
49469
|
-
),
|
|
49470
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
49519
|
+
) }),
|
|
49520
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-px h-4 bg-surface-800 mx-1 shrink-0" }),
|
|
49521
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { label: t("Import collection (Postman, OpenAPI, Insomnia, Bruno)"), children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
49471
49522
|
"button",
|
|
49472
49523
|
{
|
|
49473
|
-
onClick: () =>
|
|
49474
|
-
className: "
|
|
49475
|
-
|
|
49476
|
-
children:
|
|
49524
|
+
onClick: () => setImportOpen(true),
|
|
49525
|
+
className: "p-1.5 bg-surface-800 hover:bg-surface-700 rounded transition-colors",
|
|
49526
|
+
"aria-label": t("Import collection (Postman, OpenAPI, Insomnia, Bruno)"),
|
|
49527
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(ImportIcon, {})
|
|
49477
49528
|
}
|
|
49478
|
-
),
|
|
49479
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
49529
|
+
) }),
|
|
49530
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-px h-4 bg-surface-800 mx-1 shrink-0" }),
|
|
49531
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1 shrink-0", children: [
|
|
49532
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-surface-600 text-xs", children: t("Generate") }),
|
|
49533
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { label: t("Generate API documentation"), children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
49534
|
+
"button",
|
|
49535
|
+
{
|
|
49536
|
+
onClick: () => setDocsOpen(true),
|
|
49537
|
+
className: "p-1.5 bg-surface-800 hover:bg-surface-700 rounded transition-colors",
|
|
49538
|
+
"aria-label": t("Generate API documentation"),
|
|
49539
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(DocIcon, {})
|
|
49540
|
+
}
|
|
49541
|
+
) }),
|
|
49542
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { label: t("Toggle code generator"), children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
49543
|
+
"button",
|
|
49544
|
+
{
|
|
49545
|
+
onClick: () => setShowGeneratorPanel(!showGeneratorPanel),
|
|
49546
|
+
className: `px-2 py-1 text-xs font-mono rounded transition-colors ${showGeneratorPanel ? "bg-blue-700 text-white" : "bg-surface-800 hover:bg-surface-700"}`,
|
|
49547
|
+
"aria-label": t("Toggle code generator"),
|
|
49548
|
+
children: "</>"
|
|
49549
|
+
}
|
|
49550
|
+
) })
|
|
49551
|
+
] }),
|
|
49552
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-px h-4 bg-surface-800 mx-1 shrink-0" }),
|
|
49553
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip, { label: t("Workspace settings"), align: "right", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
49480
49554
|
"button",
|
|
49481
49555
|
{
|
|
49482
|
-
onClick: () =>
|
|
49483
|
-
className:
|
|
49484
|
-
|
|
49485
|
-
children:
|
|
49556
|
+
onClick: () => setWorkspaceSettingsOpen(true),
|
|
49557
|
+
className: "p-1.5 bg-surface-800 hover:bg-surface-700 rounded transition-colors",
|
|
49558
|
+
"aria-label": t("Workspace settings"),
|
|
49559
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(GearIcon, {})
|
|
49486
49560
|
}
|
|
49487
|
-
)
|
|
49561
|
+
) })
|
|
49488
49562
|
] })
|
|
49489
49563
|
] })
|
|
49490
49564
|
] });
|
|
@@ -54084,6 +54158,7 @@ function detectPlatform(remotes) {
|
|
|
54084
54158
|
const NODE_LTS = "lts/*";
|
|
54085
54159
|
const PROVIDER_ENV = {
|
|
54086
54160
|
vault: ["VAULT_ADDR", "VAULT_ROLE_ID", "VAULT_SECRET_ID"],
|
|
54161
|
+
bao: ["BAO_ADDR", "BAO_ROLE_ID", "BAO_SECRET_ID"],
|
|
54087
54162
|
aws: ["AWS_REGION", "AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY"],
|
|
54088
54163
|
azure: ["AZURE_TENANT_ID", "AZURE_CLIENT_ID", "AZURE_CLIENT_SECRET"],
|
|
54089
54164
|
gcp: ["GCP_PROJECT", "GOOGLE_APPLICATION_CREDENTIALS_JSON"],
|
|
@@ -54092,10 +54167,10 @@ const PROVIDER_ENV = {
|
|
|
54092
54167
|
function secretManagerOf(ref) {
|
|
54093
54168
|
if (ref.startsWith("op://")) return "op";
|
|
54094
54169
|
const scheme = ref.split(":", 1)[0];
|
|
54095
|
-
if (scheme === "vault" || scheme === "aws" || scheme === "azure" || scheme === "gcp") return scheme;
|
|
54170
|
+
if (scheme === "vault" || scheme === "bao" || scheme === "aws" || scheme === "azure" || scheme === "gcp") return scheme;
|
|
54096
54171
|
return null;
|
|
54097
54172
|
}
|
|
54098
|
-
const INLINE_REF_RE = /\{\{\s*(vault:|aws:|azure:|gcp:|op:\/\/)/g;
|
|
54173
|
+
const INLINE_REF_RE = /\{\{\s*(vault:|bao:|aws:|azure:|gcp:|op:\/\/)/g;
|
|
54099
54174
|
function inlineSecretManagers(text) {
|
|
54100
54175
|
if (!text) return [];
|
|
54101
54176
|
const kinds = /* @__PURE__ */ new Set();
|
|
@@ -56599,7 +56674,7 @@ function AddBlockMenu({ onAdd: onAdd2 }) {
|
|
|
56599
56674
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute left-0 top-full mt-1 z-50 w-56 bg-surface-900 border border-surface-700 rounded-lg shadow-2xl max-h-[70vh] overflow-y-auto", children: /* @__PURE__ */ jsxRuntimeExports.jsx(BlockPickerList, { onPick: (type) => {
|
|
56600
56675
|
onAdd2(type);
|
|
56601
56676
|
setOpen(false);
|
|
56602
|
-
} }) })
|
|
56677
|
+
}, includeEnd: true }) })
|
|
56603
56678
|
] })
|
|
56604
56679
|
] });
|
|
56605
56680
|
}
|
|
@@ -58005,7 +58080,7 @@ function App() {
|
|
|
58005
58080
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { color: "var(--wordmark-accent)" }, children: "Spector" }),
|
|
58006
58081
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ml-2 text-[10px] font-normal", style: { color: "var(--text-muted)" }, children: [
|
|
58007
58082
|
"v",
|
|
58008
|
-
"0.9.
|
|
58083
|
+
"0.9.1"
|
|
58009
58084
|
] }),
|
|
58010
58085
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "mx-2 opacity-30", "aria-hidden": "true", children: "·" }),
|
|
58011
58086
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|