@testsmith/api-spector 0.6.0 → 0.6.2
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/docs/ai/api-spector-scripting-reference.md +149 -0
- package/docs/ai/collection-file-format.md +110 -0
- package/docs/ai/functional-testing-guide.md +145 -0
- package/docs/ai/security-testing-guide.md +253 -0
- package/out/main/agents.js +2 -1
- package/out/main/chunks/{snapshots-Y33M1SEy.js → broker-client-WEymdqAK.js} +119 -10
- package/out/main/chunks/{cli-common-BKYgsbGB.js → cli-common-vASoDfQH.js} +3 -2
- package/out/main/chunks/data-files-Br2h3Dt2.js +85 -0
- package/out/main/chunks/escape-BwPM4Tf6.js +9 -0
- package/out/main/chunks/{handle-BFaeFA0A.js → handle-CL-nWtYA.js} +11 -2
- package/out/main/chunks/{import-D9LH0isB.js → import-DdXhO56X.js} +2 -2
- package/out/main/chunks/{request-collection-BQIo1765.js → request-collection-Hqh3I3rs.js} +75 -15
- package/out/main/chunks/{request-exec-5_3279w1.js → request-exec-DAFA6Fap.js} +19 -1
- package/out/main/chunks/{soap-handler-CWn3o6Py.js → soap-handler-BAPCALkN.js} +2 -2
- package/out/main/compare.js +2 -1
- package/out/main/contract.js +50 -147
- package/out/main/coverage.js +2 -1
- package/out/main/generate-tests.js +2 -1
- package/out/main/index.js +131 -36
- package/out/main/lib.js +2 -2
- package/out/main/mock.js +2 -1
- package/out/main/record.js +2 -1
- package/out/main/runner.js +95 -13
- package/out/main/wsdl.js +5 -4
- package/out/preload/index.js +21 -3
- package/out/renderer/assets/{GraphQLEditor-DITvPhtG.js → GraphQLEditor-DtppmZJO.js} +3 -1
- package/out/renderer/assets/{SoapEditor-Bf-oE-rS.js → SoapEditor-BwSm12wH.js} +4 -2
- package/out/renderer/assets/ajv-2MAg6kGF.js +6153 -0
- package/out/renderer/assets/codemirror-F6m3Hm1M.js +26552 -0
- package/out/renderer/assets/index-B3mtLdU3.css +2 -0
- package/out/renderer/assets/{index-MMIHKSKx.js → index-D6-zmXen.js} +17493 -49301
- package/out/renderer/index.html +4 -2
- package/package.json +4 -2
- package/src/cli/agent-templates/aider/conventions.md +10 -0
- package/src/cli/agent-templates/claude/skills/api-spector-api-audit.md +135 -0
- package/src/cli/agent-templates/claude/skills/api-spector-functional-tests.md +73 -0
- package/src/cli/agent-templates/claude/skills/api-spector-generate-mocks.md +182 -0
- package/src/cli/agent-templates/claude/skills/api-spector-security-tests.md +73 -0
- package/src/cli/agent-templates/copilot/copilot-instructions.md +38 -0
- package/src/cli/agent-templates/cursor/rules/api-spector.mdc +21 -0
- package/src/cli/agent-templates/windsurf/windsurfrules +19 -0
- package/out/renderer/assets/index-CkHujZU3.css +0 -2
package/out/preload/index.js
CHANGED
|
@@ -40,7 +40,13 @@ const IPC = {
|
|
|
40
40
|
secret: {
|
|
41
41
|
checkMasterKey: "secret:checkMasterKey",
|
|
42
42
|
setMasterKey: "secret:setMasterKey",
|
|
43
|
-
set: "secret:set"
|
|
43
|
+
set: "secret:set",
|
|
44
|
+
has: "secret:has",
|
|
45
|
+
delete: "secret:delete"
|
|
46
|
+
},
|
|
47
|
+
// ─── AI (optional; key lives only in the OS keychain) ────────────────────────
|
|
48
|
+
ai: {
|
|
49
|
+
generateDocs: "ai:generateDocs"
|
|
44
50
|
},
|
|
45
51
|
// ─── Global variables ──────────────────────────────────────────────────────
|
|
46
52
|
globals: {
|
|
@@ -164,6 +170,7 @@ const IPC = {
|
|
|
164
170
|
branches: "git:branches",
|
|
165
171
|
checkout: "git:checkout",
|
|
166
172
|
deleteBranch: "git:deleteBranch",
|
|
173
|
+
fetch: "git:fetch",
|
|
167
174
|
pull: "git:pull",
|
|
168
175
|
push: "git:push",
|
|
169
176
|
remotes: "git:remotes",
|
|
@@ -173,7 +180,9 @@ const IPC = {
|
|
|
173
180
|
writeCiFile: "git:writeCiFile",
|
|
174
181
|
resolveOurs: "git:resolveOurs",
|
|
175
182
|
resolveTheirs: "git:resolveTheirs",
|
|
176
|
-
markResolved: "git:markResolved"
|
|
183
|
+
markResolved: "git:markResolved",
|
|
184
|
+
readConflict: "git:readConflict",
|
|
185
|
+
writeResolved: "git:writeResolved"
|
|
177
186
|
},
|
|
178
187
|
// ─── Recorder ──────────────────────────────────────────────────────────────
|
|
179
188
|
record: {
|
|
@@ -246,6 +255,12 @@ const api = {
|
|
|
246
255
|
setMasterKey: (value) => electron.ipcRenderer.invoke(IPC.secret.setMasterKey, value),
|
|
247
256
|
/** Save a named secret to the OS keychain (safeStorage). */
|
|
248
257
|
setSecret: (ref, value) => electron.ipcRenderer.invoke(IPC.secret.set, ref, value),
|
|
258
|
+
/** Whether a secret exists (never returns the value itself). */
|
|
259
|
+
hasSecret: (ref) => electron.ipcRenderer.invoke(IPC.secret.has, ref),
|
|
260
|
+
/** Remove a secret from the OS keychain. */
|
|
261
|
+
deleteSecret: (ref) => electron.ipcRenderer.invoke(IPC.secret.delete, ref),
|
|
262
|
+
/** Optional: generate markdown docs for an item via the configured LLM. */
|
|
263
|
+
generateDocs: (input) => electron.ipcRenderer.invoke(IPC.ai.generateDocs, input),
|
|
249
264
|
// ─── Globals ──────────────────────────────────────────────────────────────
|
|
250
265
|
getGlobals: () => electron.ipcRenderer.invoke(IPC.globals.get),
|
|
251
266
|
setGlobals: (globals) => electron.ipcRenderer.invoke(IPC.globals.set, globals),
|
|
@@ -376,7 +391,8 @@ const api = {
|
|
|
376
391
|
gitBranches: () => electron.ipcRenderer.invoke(IPC.git.branches),
|
|
377
392
|
gitCheckout: (branch, create) => electron.ipcRenderer.invoke(IPC.git.checkout, branch, create),
|
|
378
393
|
gitDeleteBranch: (name, force = false) => electron.ipcRenderer.invoke(IPC.git.deleteBranch, name, force),
|
|
379
|
-
|
|
394
|
+
gitFetch: () => electron.ipcRenderer.invoke(IPC.git.fetch),
|
|
395
|
+
gitPull: (rebase = false) => electron.ipcRenderer.invoke(IPC.git.pull, rebase),
|
|
380
396
|
gitPush: (setUpstream) => electron.ipcRenderer.invoke(IPC.git.push, setUpstream),
|
|
381
397
|
gitRemotes: () => electron.ipcRenderer.invoke(IPC.git.remotes),
|
|
382
398
|
gitAddRemote: (name, url) => electron.ipcRenderer.invoke(IPC.git.addRemote, name, url),
|
|
@@ -386,6 +402,8 @@ const api = {
|
|
|
386
402
|
gitResolveOurs: (filePath) => electron.ipcRenderer.invoke(IPC.git.resolveOurs, filePath),
|
|
387
403
|
gitResolveTheirs: (filePath) => electron.ipcRenderer.invoke(IPC.git.resolveTheirs, filePath),
|
|
388
404
|
gitMarkResolved: (filePath) => electron.ipcRenderer.invoke(IPC.git.markResolved, filePath),
|
|
405
|
+
gitReadConflict: (filePath) => electron.ipcRenderer.invoke(IPC.git.readConflict, filePath),
|
|
406
|
+
gitWriteResolved: (filePath, content) => electron.ipcRenderer.invoke(IPC.git.writeResolved, filePath, content),
|
|
389
407
|
// ─── Recorder ─────────────────────────────────────────────────────────────
|
|
390
408
|
recordStart: (config) => electron.ipcRenderer.invoke(IPC.record.start, config),
|
|
391
409
|
recordStop: () => electron.ipcRenderer.invoke(IPC.record.stop),
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { l as linter, E as EditorView, L as LanguageSupport,
|
|
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";
|
|
3
|
+
import "./ajv-2MAg6kGF.js";
|
|
2
4
|
function devAssert(condition, message) {
|
|
3
5
|
const booleanCondition = Boolean(condition);
|
|
4
6
|
if (!booleanCondition) {
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
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";
|
|
3
|
+
import "./ajv-2MAg6kGF.js";
|
|
2
4
|
const SOAP_11_CONTENT_TYPE = "text/xml; charset=utf-8";
|
|
3
5
|
const SOAP_12_CONTENT_TYPE = "application/soap+xml; charset=utf-8";
|
|
4
6
|
function contentTypeForSoap(version) {
|
|
@@ -120,7 +122,7 @@ function SoapEditor({ request, onChange }) {
|
|
|
120
122
|
{
|
|
121
123
|
onClick: fetchWsdl,
|
|
122
124
|
disabled: fetching || !soap.wsdlUrl.trim(),
|
|
123
|
-
className:
|
|
125
|
+
className: `${btnPrimaryCls} whitespace-nowrap`,
|
|
124
126
|
children: fetching ? t("Fetching…") : operations.length > 0 ? t("Refresh") : t("Fetch WSDL")
|
|
125
127
|
}
|
|
126
128
|
)
|