@voiden/runner 0.1.0-beta.6 → 2.1.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/CHANGELOG.md +20 -0
- package/bundled-runners/package.json +3 -0
- package/bundled-runners/simple-assertions-runner.js +1 -0
- package/bundled-runners/versions.json +9 -0
- package/bundled-runners/voiden-advanced-auth-runner.js +1 -0
- package/bundled-runners/voiden-faker-runner.js +16 -0
- package/bundled-runners/voiden-graphql-runner.js +1 -0
- package/bundled-runners/voiden-rest-api-runner.js +1 -0
- package/bundled-runners/voiden-scripting-runner.js +397 -0
- package/bundled-runners/voiden-sockets-grpcs-runner.js +1 -0
- package/dist/cliElectron.d.ts +1 -1
- package/dist/index.js +267 -26
- package/dist/index.js.map +1 -1
- package/dist/plugins/community.d.ts +4 -3
- package/dist/plugins/community.d.ts.map +1 -1
- package/dist/plugins/community.js +32 -21
- package/dist/plugins/community.js.map +1 -1
- package/dist/plugins/loader.d.ts +9 -0
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +93 -8
- package/dist/plugins/loader.js.map +1 -1
- package/dist/plugins/registry.d.ts +30 -21
- package/dist/plugins/registry.d.ts.map +1 -1
- package/dist/plugins/registry.js +111 -46
- package/dist/plugins/registry.js.map +1 -1
- package/dist/plugins/registryCache.d.ts +30 -0
- package/dist/plugins/registryCache.d.ts.map +1 -0
- package/dist/plugins/registryCache.js +95 -0
- package/dist/plugins/registryCache.js.map +1 -0
- package/dist/plugins/store.d.ts +6 -1
- package/dist/plugins/store.d.ts.map +1 -1
- package/dist/plugins/store.js +21 -1
- package/dist/plugins/store.js.map +1 -1
- package/dist/plugins/updateCheck.d.ts +19 -0
- package/dist/plugins/updateCheck.d.ts.map +1 -0
- package/dist/plugins/updateCheck.js +60 -0
- package/dist/plugins/updateCheck.js.map +1 -0
- package/dist/runner.d.ts +1 -1
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +19 -2
- package/dist/runner.js.map +1 -1
- package/dist/runtimeVars.d.ts +5 -0
- package/dist/runtimeVars.d.ts.map +1 -1
- package/dist/runtimeVars.js +36 -2
- package/dist/runtimeVars.js.map +1 -1
- package/package.json +13 -6
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `@voiden/runner` are documented here. This package is
|
|
4
|
+
versioned and released independently of the Voiden desktop app.
|
|
5
|
+
|
|
6
|
+
## v2.1.1 - 2026-06-25
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
- A 0-byte file left behind by a failed or interrupted plugin runner download is no longer treated as an installed runner — `hasCoreRunner`/`hasCommunityRunner` now check file size, so the loader falls back to the bundled copy (or re-downloads) instead of importing an empty module
|
|
10
|
+
- Bundled runner assets (`bundled-runners/**`) are now included in the published npm package — `plugin install`/`plugin update` for bundled core plugins no longer requires a network download on a fresh install
|
|
11
|
+
|
|
12
|
+
## v2.1.0 - 2026-06-24
|
|
13
|
+
|
|
14
|
+
First release published under the `@voiden/runner` name and versioned in lockstep with the desktop app (previously `0.1.0-beta.x`).
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
- Set-cookie capture in runtime variables no longer lags one request behind — `byPath` can now navigate `set-cookie.<name>.value`, duplicate `set-cookie` headers are preserved instead of being collapsed, and variable capture now runs before post-request hooks so scripts see the current response's values
|
|
18
|
+
- Restored plugin registry modules (`registryCache.ts`, `updateCheck.ts`) that had gone missing from the package, breaking `plugin list`/`plugin update`
|
|
19
|
+
- Dropped a stale `@voiden/core-extensions` build dependency that no longer exists in the reworked plugin architecture
|
|
20
|
+
- Fixed `npm publish` metadata so the package publishes correctly under the `@voiden` npm scope
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var y=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var A=(r,e)=>()=>(r&&(e=r(r=0)),e);var w=(r,e)=>{for(var t in e)y(r,t,{get:e[t],enumerable:!0})},D=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of R(e))!T.call(r,s)&&s!==t&&y(r,s,{get:()=>e[s],enumerable:!(n=C(e,s))||n.enumerable});return r};var E=r=>D(y({},"__esModule",{value:!0}),r);function F(r,e){let t=r.trim();if(t==="status"||t==="statusCode")return e.response.status;if(t==="statusText")return e.response.statusText;if(t==="responseTime"||t==="duration")return e.response.timing?.duration||0;if(t.startsWith("header.")||t.startsWith("headers.")){let n=t.split("."),s=n[1];if(s.toLowerCase()==="set-cookie"){let i=(0,x.parseCookies)(e.response.headers);if(n.length===2)return i;let c=n.slice(2).join(".");return l(i,c)}return e.response.headers.find(i=>i.key.toLowerCase()===s.toLowerCase())?.value}if(t==="body"||t==="response.body")return e.response.body;if(t.startsWith("body.")||t.startsWith("response.body.")){let n=t.replace(/^(response\.)?body\./,"");return l(e.response.body,n)}if(t.startsWith("response.")){let n=t.replace(/^response\./,"");return l(e.response,n)}return l(e.response.body,t)}function l(r,e){if(!r)return;let t=e.split(/\.|\[/).map(s=>s.replace(/\]$/,"")),n=r;for(let s of t){if(n==null)return;/^\d+$/.test(s)?n=n[parseInt(s,10)]:n=n[s]}return n}function O(r,e){try{if(r.enabled===!1)return{assertion:r,passed:!0,actualValue:null,error:"Skipped (disabled)"};let t=j(r.field),n=t.field,s=t.operator||r.operator||"equals",o=r.expectedValue,i=F(n,e),c=W(s,i,o);return{assertion:r,passed:c,actualValue:i}}catch(t){return{assertion:r,passed:!1,actualValue:null,error:t.message||String(t)}}}function j(r){let e=["equals","eq","==","===","not-equals","ne","!=","!==","contains","includes","not-contains","not-includes","starts-with","startswith","ends-with","endswith","matches","regex","exists","is-defined","not-exists","is-null","is-undefined","greater-than","gt",">","less-than","lt","<","greater-equal","gte",">=","less-equal","lte","<=","is-empty","empty","not-empty","is-truthy","truthy","is-falsy","falsy","type-is","typeof"],t=r.trim().split(/\s+/);if(t.length>=2){let n=t[t.length-1].toLowerCase();if(e.includes(n))return{field:t.slice(0,-1).join(" "),operator:n}}return{field:r.trim(),operator:null}}function W(r,e,t){switch(r.toLowerCase().trim()){case"equals":case"eq":case"==":case"===":return e==null?!1:String(e)===t;case"not-equals":case"ne":case"!=":case"!==":return e==null?!1:String(e)!==t;case"contains":case"includes":return e==null?!1:String(e).includes(t);case"not-contains":case"not-includes":return e==null?!1:!String(e).includes(t);case"starts-with":case"startswith":return e==null?!1:String(e).startsWith(t);case"ends-with":case"endswith":return e==null?!1:String(e).endsWith(t);case"matches":case"regex":if(e==null)return!1;try{return new RegExp(t).test(String(e))}catch{return!1}case"exists":case"is-defined":return e!=null;case"not-exists":case"is-null":case"is-undefined":return e==null;case"greater-than":case"gt":case">":{let s=Number(e),o=Number(t);return!isNaN(s)&&!isNaN(o)&&s>o}case"less-than":case"lt":case"<":{let s=Number(e),o=Number(t);return!isNaN(s)&&!isNaN(o)&&s<o}case"greater-equal":case"gte":case">=":{let s=Number(e),o=Number(t);return!isNaN(s)&&!isNaN(o)&&s>=o}case"less-equal":case"lte":case"<=":{let s=Number(e),o=Number(t);return!isNaN(s)&&!isNaN(o)&&s<=o}case"is-empty":case"empty":return e==null?!1:Array.isArray(e)?e.length===0:typeof e=="string"?e==="":typeof e=="object"?Object.keys(e).length===0:!1;case"not-empty":return e==null?!1:Array.isArray(e)?e.length>0:typeof e=="string"?e!=="":typeof e=="object"?Object.keys(e).length>0:!0;case"is-truthy":case"truthy":return!!e;case"is-falsy":case"falsy":return!e;case"type-is":case"typeof":return typeof e===t.toLowerCase();default:throw new Error(`Unknown operator: ${r}`)}}function S(r,e){return r.map(t=>O(t,e))}var x,N=A(()=>{"use strict";x=require("@voiden/sdk/shared")});var q={};w(q,{postProcessAssertionsHook:()=>$});function v(r){let e=[];if(!r||!r.content)return e;function t(n){if(n.type==="assertions-table"){let s=L(n);e.push(...s)}n.content&&Array.isArray(n.content)&&n.content.forEach(s=>t(s))}return t(r),e}function L(r){let e=[];try{if(r.attrs&&Array.isArray(r.attrs.rows)){let s=r.attrs.rows;for(let o of s)!o.description&&!o.field&&!o.operator&&!o.expectedValue||o.enabled!==!1&&e.push({description:o.description||"",field:o.field||"",operator:o.operator||"equals",expectedValue:o.expectedValue||"",enabled:!0});return e}let t=Array.isArray(r.content)?r.content.find(s=>s.type==="table"||s.type==="assertions-table"):null;if(!t)return e;let n=t.rows||t.content||[];for(let s=0;s<n.length;s++){let o=n[s];if(Array.isArray(o.row)){if(o.attrs?.disabled===!0)continue;let[a,g,h,b]=o.row;if(!a&&!g&&!h&&!b)continue;e.push({description:String(a||"").trim(),field:String(g||"").trim(),operator:String(h||"equals").trim()||"equals",expectedValue:String(b||"").trim(),enabled:!0});continue}if(o.type!=="tableRow"||o.attrs&&o.attrs.disabled===!0)continue;let i=o.content||[];if(i.length<4)continue;let c=d(i[0]).trim(),p=d(i[1]).trim(),f=d(i[2]).trim(),u=d(i[3]).trim();!c&&!p&&!f&&!u||!(!(i.length>=5)||P(i[4]))||e.push({description:c,field:p,operator:f||"equals",expectedValue:u,enabled:!0})}}catch(t){console.error("Error extracting assertions from table:",t)}return e}function d(r){return r?r.type==="text"?r.text||"":r.content&&Array.isArray(r.content)?r.content.map(e=>d(e)).join(""):"":""}function P(r){if(!r||!r.content)return!0;let e=r.content.find(t=>t.type==="checkbox");return e&&e.attrs?e.attrs.checked!==!1:!0}async function $(r){let{requestState:e,responseState:t,metadata:n}=r;try{let s=e?.metadata?.editorDocument||n?.requestDocument||n?.editorDocument;if(!s)return;let o=v(s);if(o.length===0)return;let i=(typeof window<"u"?window:void 0)?.electron?.env?.replaceVariables;if(i)for(let a of o)a.expectedValue&&a.expectedValue.includes("{{")&&(a.expectedValue=await i(a.expectedValue)),a.field&&a.field.includes("{{")&&(a.field=await i(a.field));let c=t.body;if(typeof c=="string"&&c.trim())try{c=JSON.parse(c)}catch{}let p={response:{status:t.status,statusText:t.statusText,headers:t.headers||[],body:c,contentType:t.contentType,timing:t.timing}},f=S(o,p),u=f.filter(a=>a.passed).length,m=f.filter(a=>!a.passed).length;t.metadata||(t.metadata={}),t.metadata.assertionResults={results:f,totalAssertions:o.length,passedAssertions:u,failedAssertions:m}}catch(s){console.error("[Simple Assertions] Error in post-process assertions hook:",s)}}var k=A(()=>{"use strict";N()});var J={};w(J,{default:()=>z});module.exports=E(J);var H=r=>({onload(){r.pipeline.registerHook("pre-processing",async e=>{e.editor&&(e.requestState.metadata||(e.requestState.metadata={}),e.requestState.metadata.editorDocument=e.editor.getJSON())},5),r.pipeline.registerHook("post-processing",async e=>{let{postProcessAssertionsHook:t}=await Promise.resolve().then(()=>(k(),q));await t(e)},15),r.pipeline.registerHook("post-processing",async e=>{let t=e.responseState?.metadata?.assertionResults;if(t?.results?.length){e.responseState.metadata||(e.responseState.metadata={}),Array.isArray(e.responseState.metadata.reportEntries)||(e.responseState.metadata.reportEntries=[]);for(let n of t.results){let s=n.assertion?.description?.trim()||`${n.assertion?.field??""} ${n.assertion?.operator??""} ${n.assertion?.expectedValue??""}`.trim();e.responseState.metadata.reportEntries.push({type:"assertion",message:s||"Assertion",passed:n.passed,actual:n.actualValue,expected:n.assertion?.expectedValue,operator:n.assertion?.operator})}}},50)}}),z=H;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var o=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var R=(e,n)=>{for(var r in n)o(e,r,{get:n[r],enumerable:!0})},x=(e,n,r,u)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of c(n))!d.call(e,t)&&t!==r&&o(e,t,{get:()=>n[t],enumerable:!(u=a(n,t))||u.enumerable});return e};var p=e=>x(o({},"__esModule",{value:!0}),e);var i={};R(i,{default:()=>f});module.exports=p(i);var y=e=>({onload(){}}),f=y;
|