@testsmith/api-spector 0.6.2 → 0.6.3

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.
@@ -184,8 +184,9 @@ function resolveInheritedAuthAndHeaders(requestId, collection) {
184
184
  }
185
185
  function buildRunPlan(collection, folderId, filterTags) {
186
186
  const collectionVars = collection.collectionVariables ?? {};
187
+ const tag = (items) => items.map((i) => ({ ...i, collection: collection.name }));
187
188
  {
188
- return buildFolderPlan(
189
+ return tag(buildFolderPlan(
189
190
  collection.rootFolder,
190
191
  collection.requests,
191
192
  collectionVars,
@@ -195,7 +196,7 @@ function buildRunPlan(collection, folderId, filterTags) {
195
196
  [],
196
197
  [],
197
198
  true
198
- );
199
+ ));
199
200
  }
200
201
  }
201
202
  function expandRunPlanWithData(items, ds) {
package/out/main/index.js CHANGED
@@ -34,7 +34,7 @@ const ipcValidate = require("./chunks/ipc-validate-sqUFqRmE.js");
34
34
  const uuid = require("uuid");
35
35
  const jsYaml = require("js-yaml");
36
36
  const undici = require("undici");
37
- const requestCollection = require("./chunks/request-collection-Hqh3I3rs.js");
37
+ const requestCollection = require("./chunks/request-collection-GzK4QgvT.js");
38
38
  const mockServer = require("./chunks/mock-server-BxiXhP1m.js");
39
39
  const http = require("http");
40
40
  const WebSocket = require("ws");
@@ -4686,6 +4686,7 @@ function registerRunnerHandler(ipc) {
4686
4686
  isHook: item.isHook,
4687
4687
  hookType: item.hookType,
4688
4688
  scopeId: item.scopeId,
4689
+ collection: item.collection,
4689
4690
  scopePath: item.scopePath,
4690
4691
  iterationLabel: item.iterationLabel
4691
4692
  };
@@ -4699,6 +4700,7 @@ function registerRunnerHandler(ipc) {
4699
4700
  isHook: item.isHook,
4700
4701
  hookType: item.hookType,
4701
4702
  scopeId: item.scopeId,
4703
+ collection: item.collection,
4702
4704
  scopePath: item.scopePath
4703
4705
  };
4704
4706
  event.sender.send(handle.IPC.runner.progress, { requestId: item.request.id, ...runningUpdate });
@@ -4730,6 +4732,7 @@ function registerRunnerHandler(ipc) {
4730
4732
  isHook: item.isHook,
4731
4733
  hookType: item.hookType,
4732
4734
  scopeId: item.scopeId,
4735
+ collection: item.collection,
4733
4736
  scopePath: item.scopePath
4734
4737
  });
4735
4738
  if (requestDelay > 0 && item !== items[items.length - 1]) {
@@ -6039,7 +6042,7 @@ function isNewer(a, b) {
6039
6042
  return a2 > b2;
6040
6043
  }
6041
6044
  async function checkForUpdate() {
6042
- const current = "0.6.2";
6045
+ const current = "0.6.3";
6043
6046
  try {
6044
6047
  const res = await fetch(REGISTRY_URL, { signal: AbortSignal.timeout(4e3) });
6045
6048
  if (!res.ok) return null;
@@ -4,7 +4,7 @@ const promises = require("fs/promises");
4
4
  const path = require("path");
5
5
  const requestExec = require("./chunks/request-exec-DAFA6Fap.js");
6
6
  const escape = require("./chunks/escape-BwPM4Tf6.js");
7
- const requestCollection = require("./chunks/request-collection-Hqh3I3rs.js");
7
+ const requestCollection = require("./chunks/request-collection-GzK4QgvT.js");
8
8
  const environments = require("./chunks/environments-iM3SUM-4.js");
9
9
  const cliCommon = require("./chunks/cli-common-vASoDfQH.js");
10
10
  require("undici");
@@ -36,6 +36,9 @@ function buildJsonReport(results, summary, meta = {}) {
36
36
  method: r.method,
37
37
  url: r.resolvedUrl,
38
38
  status: r.status,
39
+ // Tree position: which collection and folder path this request sits under.
40
+ collection: r.collection ?? meta.collection ?? null,
41
+ folderPath: r.scopePath ?? [],
39
42
  isHook: r.isHook ?? false,
40
43
  hookType: r.hookType ?? null,
41
44
  httpStatus: r.httpStatus ?? null,
@@ -76,12 +79,26 @@ function buildHtmlReport(results, summary, meta = {}) {
76
79
  after: "AFTER",
77
80
  afterAll: "AFTER ALL"
78
81
  };
79
- let lastScopeKey = null;
82
+ let lastCollection = null;
83
+ let lastPath = [];
80
84
  const cards = results.map((r, idx) => {
81
- const scopeKey = (r.scopePath ?? []).join(" / ");
82
- const groupHeading = scopeKey && scopeKey !== lastScopeKey ? ` <div class="scope-heading">${esc(scopeKey)}</div>
83
- ` : "";
84
- lastScopeKey = scopeKey;
85
+ let groupHeading = "";
86
+ const coll = r.collection ?? meta.collection ?? "";
87
+ if (coll && coll !== lastCollection) {
88
+ groupHeading += ` <div class="scope-heading lvl-0">${esc(coll)}</div>
89
+ `;
90
+ lastCollection = coll;
91
+ lastPath = [];
92
+ }
93
+ const path2 = r.scopePath ?? [];
94
+ let diverge = 0;
95
+ while (diverge < path2.length && diverge < lastPath.length && path2[diverge] === lastPath[diverge]) diverge++;
96
+ for (let d = diverge; d < path2.length; d++) {
97
+ groupHeading += ` <div class="scope-heading lvl-${Math.min(d + 1, 6)}">${esc(path2[d])}</div>
98
+ `;
99
+ }
100
+ lastPath = path2;
101
+ const cardIndent = `lvl-${Math.min(path2.length + 1, 6)}`;
85
102
  const statusCls = r.status === "passed" ? "badge-pass" : r.status === "failed" ? "badge-fail" : r.status === "skipped" ? "badge-skip" : "badge-err";
86
103
  const httpCls = r.httpStatus && r.httpStatus < 300 ? "http-ok" : r.httpStatus && r.httpStatus < 400 ? "http-redir" : "http-err";
87
104
  const dur = r.durationMs != null ? `${r.durationMs} ms` : "—";
@@ -121,7 +138,7 @@ function buildHtmlReport(results, summary, meta = {}) {
121
138
  </div>` : "";
122
139
  const hookCls = hookLabel ? r.hookType?.startsWith("before") ? "card-hook-before" : "card-hook-after" : "";
123
140
  return `${groupHeading}
124
- <div class="card ${hookCls}" id="r${idx}">
141
+ <div class="card ${hookCls} ${cardIndent}" id="r${idx}">
125
142
  <div class="card-header" onclick="toggle(${idx})">
126
143
  <span class="chevron" id="ch${idx}">▶</span>
127
144
  <span class="badge ${statusCls}">${r.status}</span>
@@ -192,8 +209,18 @@ function buildHtmlReport(results, summary, meta = {}) {
192
209
  .stat-skip .stat-val { color: var(--text-muted); }
193
210
  /* Cards */
194
211
  .card { border: 1px solid var(--border); border-radius: 8px; margin-bottom: 8px; overflow: hidden; }
195
- .scope-heading { margin: 18px 0 6px; padding: 4px 2px; font-size: 11px; font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; border-bottom: 1px solid var(--border); }
212
+ .scope-heading { margin: 14px 0 6px; padding: 4px 2px; font-size: 11px; font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; border-bottom: 1px solid var(--border); }
196
213
  .scope-heading::before { content: "\\25B8 "; color: var(--text-dim); }
214
+ /* Nested tree indentation: collection (lvl-0) → folders (lvl-1..) → request card. */
215
+ .lvl-0 { margin-left: 0; }
216
+ .lvl-1 { margin-left: 16px; }
217
+ .lvl-2 { margin-left: 32px; }
218
+ .lvl-3 { margin-left: 48px; }
219
+ .lvl-4 { margin-left: 64px; }
220
+ .lvl-5 { margin-left: 80px; }
221
+ .lvl-6 { margin-left: 96px; }
222
+ .scope-heading.lvl-0 { font-size: 13px; color: var(--text); text-transform: none; letter-spacing: 0; margin-top: 22px; }
223
+ .scope-heading.lvl-0::before { content: "\\1F5C0 "; }
197
224
  .card-header { display: flex; align-items: baseline; gap: 8px; padding: 10px 14px; cursor: pointer; user-select: none; }
198
225
  .card-header:hover { background: var(--bg-surface); }
199
226
  .chevron { font-size: 10px; color: var(--text-muted); min-width: 10px; transition: transform .15s; }
@@ -311,7 +338,7 @@ function buildJUnitReport(results, summary, meta = {}) {
311
338
  const label = r.iterationLabel ? ` #${r.iterationLabel}` : "";
312
339
  const hookPrefix = r.isHook && r.hookType ? `[${HOOK_JUNIT_LABELS[r.hookType] ?? "Hook"}] ` : "";
313
340
  const name = esc(hookPrefix + r.name + label);
314
- const classname = esc(`${r.method} ${r.resolvedUrl}`);
341
+ const classname = esc([r.collection ?? meta.collection, ...r.scopePath ?? []].filter(Boolean).map((s) => String(s).replace(/\./g, "_")).join(".") || "API Tests");
315
342
  const timeSec = ((r.durationMs ?? 0) / 1e3).toFixed(3);
316
343
  const failures = [];
317
344
  if (r.status === "error") {
@@ -469,7 +496,7 @@ async function main() {
469
496
  } else if (!envName && workspace.settings?.defaultEnvironment && !env) {
470
497
  console.warn(cliCommon.color(`Warning: default environment "${workspace.settings.defaultEnvironment}" not found. Running without environment.`, cliCommon.C.yellow));
471
498
  }
472
- const version = `v${"0.6.2"}`;
499
+ const version = `v${"0.6.3"}`;
473
500
  console.log("");
474
501
  console.log(cliCommon.color(" API Test Runner" + (version ? ` ${version}` : ""), cliCommon.C.bold, cliCommon.C.white));
475
502
  console.log(cliCommon.color(` Workspace: ${wsPath}`, cliCommon.C.gray));
@@ -569,6 +596,7 @@ async function main() {
569
596
  isHook,
570
597
  hookType,
571
598
  scopeId,
599
+ collection: item.collection,
572
600
  scopePath: item.scopePath,
573
601
  iterationLabel: item.iterationLabel
574
602
  };
@@ -594,6 +622,7 @@ async function main() {
594
622
  result.isHook = isHook;
595
623
  result.hookType = hookType;
596
624
  result.scopeId = scopeId;
625
+ result.collection = item.collection;
597
626
  result.scopePath = item.scopePath;
598
627
  result.iterationLabel = item.iterationLabel;
599
628
  skipTracker.recordResult(item, result.status);
@@ -1,5 +1,5 @@
1
1
  import { l as linter, E as EditorView, L as LanguageSupport, e as LRLanguage, s as styleTags, i as indentNodeProp, f as delimitedIndent, m as foldNodeProp, n as foldInside, S as StateField, p as LRParser, q as StateEffect, u as tags, r as reactExports, j as jsxRuntimeExports, c as ReactCodeMirror, o as oneDark, b as json } from "./codemirror-F6m3Hm1M.js";
2
- import { u as useT, a as useStore, b as useActiveEnvironment } from "./index-D6-zmXen.js";
2
+ import { u as useT, a as useStore, b as useActiveEnvironment } from "./index-ByGIqJ2H.js";
3
3
  import "./ajv-2MAg6kGF.js";
4
4
  function devAssert(condition, message) {
5
5
  const booleanCondition = Boolean(condition);
@@ -1,5 +1,5 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports, c as ReactCodeMirror, o as oneDark, x as xml } from "./codemirror-F6m3Hm1M.js";
2
- import { u as useT, c as btnPrimaryCls, d as commentKeymap } from "./index-D6-zmXen.js";
2
+ import { u as useT, c as btnPrimaryCls, d as commentKeymap } from "./index-ByGIqJ2H.js";
3
3
  import "./ajv-2MAg6kGF.js";
4
4
  const SOAP_11_CONTENT_TYPE = "text/xml; charset=utf-8";
5
5
  const SOAP_12_CONTENT_TYPE = "application/soap+xml; charset=utf-8";
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./GraphQLEditor-DtppmZJO.js","./codemirror-F6m3Hm1M.js","./ajv-2MAg6kGF.js","./SoapEditor-BwSm12wH.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./GraphQLEditor-MImdgXb4.js","./codemirror-F6m3Hm1M.js","./ajv-2MAg6kGF.js","./SoapEditor-rxb3heue.js"])))=>i.map(i=>d[i]);
2
2
  import { r as reactExports, g as getDefaultExportFromCjs, R as React$2, a as autocompletion, h as hoverTooltip, j as jsxRuntimeExports, k as keymap, t as toggleComment, x as xml, b as json, c as ReactCodeMirror, o as oneDark, d as javascript } from "./codemirror-F6m3Hm1M.js";
3
3
  import { A as Ajv } from "./ajv-2MAg6kGF.js";
4
4
  var client = { exports: {} };
@@ -25557,8 +25557,9 @@ function resolveInheritedAuthAndHeaders(requestId, collection2) {
25557
25557
  }
25558
25558
  function buildRunPlan(collection2, folderId, filterTags) {
25559
25559
  const collectionVars = collection2.collectionVariables ?? {};
25560
+ const tag = (items) => items.map((i) => ({ ...i, collection: collection2.name }));
25560
25561
  if (!folderId) {
25561
- return buildFolderPlan(
25562
+ return tag(buildFolderPlan(
25562
25563
  collection2.rootFolder,
25563
25564
  collection2.requests,
25564
25565
  collectionVars,
@@ -25568,7 +25569,7 @@ function buildRunPlan(collection2, folderId, filterTags) {
25568
25569
  [],
25569
25570
  [],
25570
25571
  true
25571
- );
25572
+ ));
25572
25573
  }
25573
25574
  const chain = folderChainTo(collection2.rootFolder, folderId);
25574
25575
  if (chain.length === 0) return [];
@@ -25615,7 +25616,7 @@ function buildRunPlan(collection2, folderId, filterTags) {
25615
25616
  result.push(makeHook(req, collectionVars, "afterAll", f.id, myAncestors, []));
25616
25617
  }
25617
25618
  }
25618
- return result;
25619
+ return tag(result);
25619
25620
  }
25620
25621
  function expandRunPlanWithData(items, ds) {
25621
25622
  if (!ds || ds.rows.length === 0) return items;
@@ -27375,8 +27376,8 @@ function jsonWithComments() {
27375
27376
  function xmlWithComments() {
27376
27377
  return [xml(), commentKeymap];
27377
27378
  }
27378
- const GraphQLEditor = reactExports.lazy(() => __vitePreload(() => import("./GraphQLEditor-DtppmZJO.js"), true ? __vite__mapDeps([0,1,2]) : void 0, import.meta.url).then((m) => ({ default: m.GraphQLEditor })));
27379
- const SoapEditor = reactExports.lazy(() => __vitePreload(() => import("./SoapEditor-BwSm12wH.js"), true ? __vite__mapDeps([3,1,2]) : void 0, import.meta.url).then((m) => ({ default: m.SoapEditor })));
27379
+ const GraphQLEditor = reactExports.lazy(() => __vitePreload(() => import("./GraphQLEditor-MImdgXb4.js"), true ? __vite__mapDeps([0,1,2]) : void 0, import.meta.url).then((m) => ({ default: m.GraphQLEditor })));
27380
+ const SoapEditor = reactExports.lazy(() => __vitePreload(() => import("./SoapEditor-rxb3heue.js"), true ? __vite__mapDeps([3,1,2]) : void 0, import.meta.url).then((m) => ({ default: m.SoapEditor })));
27380
27381
  function BodyTab({ request: request2, onChange }) {
27381
27382
  const t = useT();
27382
27383
  const editorFallback = /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-4 text-xs text-surface-500", children: t("Loading editor…") });
@@ -32536,7 +32537,7 @@ function WelcomeScreen() {
32536
32537
  )
32537
32538
  ] }),
32538
32539
  /* @__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.") }),
32539
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-[11px] mt-3", style: { color: "var(--text-muted)" }, children: t("version :version", { version: "0.6.2" }) })
32540
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-[11px] mt-3", style: { color: "var(--text-muted)" }, children: t("version :version", { version: "0.6.3" }) })
32540
32541
  ] }),
32541
32542
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-3 w-64", children: [
32542
32543
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -35440,6 +35441,9 @@ function buildJsonReport(results, summary, meta = {}) {
35440
35441
  method: r.method,
35441
35442
  url: r.resolvedUrl,
35442
35443
  status: r.status,
35444
+ // Tree position: which collection and folder path this request sits under.
35445
+ collection: r.collection ?? meta.collection ?? null,
35446
+ folderPath: r.scopePath ?? [],
35443
35447
  isHook: r.isHook ?? false,
35444
35448
  hookType: r.hookType ?? null,
35445
35449
  httpStatus: r.httpStatus ?? null,
@@ -35480,12 +35484,26 @@ function buildHtmlReport(results, summary, meta = {}) {
35480
35484
  after: "AFTER",
35481
35485
  afterAll: "AFTER ALL"
35482
35486
  };
35483
- let lastScopeKey = null;
35487
+ let lastCollection = null;
35488
+ let lastPath = [];
35484
35489
  const cards = results.map((r, idx) => {
35485
- const scopeKey = (r.scopePath ?? []).join(" / ");
35486
- const groupHeading = scopeKey && scopeKey !== lastScopeKey ? ` <div class="scope-heading">${esc2(scopeKey)}</div>
35487
- ` : "";
35488
- lastScopeKey = scopeKey;
35490
+ let groupHeading = "";
35491
+ const coll = r.collection ?? meta.collection ?? "";
35492
+ if (coll && coll !== lastCollection) {
35493
+ groupHeading += ` <div class="scope-heading lvl-0">${esc2(coll)}</div>
35494
+ `;
35495
+ lastCollection = coll;
35496
+ lastPath = [];
35497
+ }
35498
+ const path = r.scopePath ?? [];
35499
+ let diverge = 0;
35500
+ while (diverge < path.length && diverge < lastPath.length && path[diverge] === lastPath[diverge]) diverge++;
35501
+ for (let d = diverge; d < path.length; d++) {
35502
+ groupHeading += ` <div class="scope-heading lvl-${Math.min(d + 1, 6)}">${esc2(path[d])}</div>
35503
+ `;
35504
+ }
35505
+ lastPath = path;
35506
+ const cardIndent = `lvl-${Math.min(path.length + 1, 6)}`;
35489
35507
  const statusCls = r.status === "passed" ? "badge-pass" : r.status === "failed" ? "badge-fail" : r.status === "skipped" ? "badge-skip" : "badge-err";
35490
35508
  const httpCls = r.httpStatus && r.httpStatus < 300 ? "http-ok" : r.httpStatus && r.httpStatus < 400 ? "http-redir" : "http-err";
35491
35509
  const dur = r.durationMs != null ? `${r.durationMs} ms` : "—";
@@ -35525,7 +35543,7 @@ function buildHtmlReport(results, summary, meta = {}) {
35525
35543
  </div>` : "";
35526
35544
  const hookCls = hookLabel ? r.hookType?.startsWith("before") ? "card-hook-before" : "card-hook-after" : "";
35527
35545
  return `${groupHeading}
35528
- <div class="card ${hookCls}" id="r${idx}">
35546
+ <div class="card ${hookCls} ${cardIndent}" id="r${idx}">
35529
35547
  <div class="card-header" onclick="toggle(${idx})">
35530
35548
  <span class="chevron" id="ch${idx}">▶</span>
35531
35549
  <span class="badge ${statusCls}">${r.status}</span>
@@ -35596,8 +35614,18 @@ function buildHtmlReport(results, summary, meta = {}) {
35596
35614
  .stat-skip .stat-val { color: var(--text-muted); }
35597
35615
  /* Cards */
35598
35616
  .card { border: 1px solid var(--border); border-radius: 8px; margin-bottom: 8px; overflow: hidden; }
35599
- .scope-heading { margin: 18px 0 6px; padding: 4px 2px; font-size: 11px; font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; border-bottom: 1px solid var(--border); }
35617
+ .scope-heading { margin: 14px 0 6px; padding: 4px 2px; font-size: 11px; font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; border-bottom: 1px solid var(--border); }
35600
35618
  .scope-heading::before { content: "\\25B8 "; color: var(--text-dim); }
35619
+ /* Nested tree indentation: collection (lvl-0) → folders (lvl-1..) → request card. */
35620
+ .lvl-0 { margin-left: 0; }
35621
+ .lvl-1 { margin-left: 16px; }
35622
+ .lvl-2 { margin-left: 32px; }
35623
+ .lvl-3 { margin-left: 48px; }
35624
+ .lvl-4 { margin-left: 64px; }
35625
+ .lvl-5 { margin-left: 80px; }
35626
+ .lvl-6 { margin-left: 96px; }
35627
+ .scope-heading.lvl-0 { font-size: 13px; color: var(--text); text-transform: none; letter-spacing: 0; margin-top: 22px; }
35628
+ .scope-heading.lvl-0::before { content: "\\1F5C0 "; }
35601
35629
  .card-header { display: flex; align-items: baseline; gap: 8px; padding: 10px 14px; cursor: pointer; user-select: none; }
35602
35630
  .card-header:hover { background: var(--bg-surface); }
35603
35631
  .chevron { font-size: 10px; color: var(--text-muted); min-width: 10px; transition: transform .15s; }
@@ -35715,7 +35743,7 @@ function buildJUnitReport(results, summary, meta = {}) {
35715
35743
  const label = r.iterationLabel ? ` #${r.iterationLabel}` : "";
35716
35744
  const hookPrefix = r.isHook && r.hookType ? `[${HOOK_JUNIT_LABELS[r.hookType] ?? "Hook"}] ` : "";
35717
35745
  const name = esc2(hookPrefix + r.name + label);
35718
- const classname = esc2(`${r.method} ${r.resolvedUrl}`);
35746
+ const classname = esc2([r.collection ?? meta.collection, ...r.scopePath ?? []].filter(Boolean).map((s) => String(s).replace(/\./g, "_")).join(".") || "API Tests");
35719
35747
  const timeSec = ((r.durationMs ?? 0) / 1e3).toFixed(3);
35720
35748
  const failures = [];
35721
35749
  if (r.status === "error") {
@@ -41485,7 +41513,7 @@ function App() {
41485
41513
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { color: "#6aa3c8" }, children: "Spector" }),
41486
41514
  /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ml-2 text-[10px] font-normal opacity-50", children: [
41487
41515
  "v",
41488
- "0.6.2"
41516
+ "0.6.3"
41489
41517
  ] }),
41490
41518
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "mx-2 opacity-30", children: "·" }),
41491
41519
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -5,7 +5,7 @@
5
5
  <meta charset="UTF-8" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>API Spector</title>
8
- <script type="module" crossorigin src="./assets/index-D6-zmXen.js"></script>
8
+ <script type="module" crossorigin src="./assets/index-ByGIqJ2H.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="./assets/codemirror-F6m3Hm1M.js">
10
10
  <link rel="modulepreload" crossorigin href="./assets/ajv-2MAg6kGF.js">
11
11
  <link rel="stylesheet" crossorigin href="./assets/index-B3mtLdU3.css">
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@testsmith/api-spector",
3
3
  "productName": "API Spector",
4
- "version": "0.6.2",
4
+ "version": "0.6.3",
5
5
  "description": "Local-first API testing tool to inspect, test and mock APIs",
6
6
  "repository": {
7
7
  "type": "git",