@usebruno/converters
Version:
The converters package is responsible for converting collections from one format to a Bruno collection. It can be used as a standalone package or as a part of the Bruno framework.
1 lines • 101 kB
JavaScript
"use strict";var e=require("lodash/get"),t=require("lodash/each"),r=require("nanoid");require("lodash/cloneDeep");var s=require("@usebruno/schema"),n=require("lodash/map"),a=require("js-yaml"),o=require("lodash");const i=e=>e.hasOwnProperty("request")&&["http-request","graphql-request"].includes(e.type)&&!e.items,l=()=>r.customAlphabet("useandom26T198340PX75pxJACKVERYMINDBUSHWOLFGQZbfghjklqvwyzrict",21)(),p=(e={})=>{try{return s.collectionSchema.validateSync(e),e}catch(e){throw console.log("Error validating schema",e),new Error("The Collection has an invalid schema")}},u=r=>{const s=(r=[])=>{t(r,(r=>{if(["http","graphql"].includes(r.type)){r.type=`${r.type}-request`,r.request.query&&(r.request.params=r.request.query.map((e=>({...e,type:"query",uid:e.uid||l()})))),delete r.request.query;let s=e(r,"request.body.multipartForm");s&&t(s,(e=>{e.type||(e.type="text")}))}r.items&&r.items.length&&s(r.items)}))};return s(r.items),r},c=e=>{const r=(e=[])=>{let s=1;t(e,(e=>{i(e)&&!e.seq&&(e.seq=s,s++),e.items&&e.items.length&&r(e.items)}))};return r(e.items),e},d=r=>{t(r,(r=>{delete r.uid,["http-request","graphql-request","grpc-request"].includes(r.type)&&(t(e(r,"request.headers"),(e=>delete e.uid)),t(e(r,"request.params"),(e=>delete e.uid)),t(e(r,"request.vars.req"),(e=>delete e.uid)),t(e(r,"request.vars.res"),(e=>delete e.uid)),t(e(r,"request.vars.assertions"),(e=>delete e.uid)),t(e(r,"request.body.multipartForm"),(e=>delete e.uid)),t(e(r,"request.body.formUrlEncoded"),(e=>delete e.uid)),t(e(r,"request.body.file"),(e=>delete e.uid))),r.items&&r.items.length&&d(r.items)}))},m=(e,t)=>{const r=e.objectExpression([]);return"ArrayExpression"===t.type&&t.elements.forEach((t=>{if("ObjectExpression"===t.type){const s=t.properties.find((e=>"key"===e.key.name||"key"===e.key.value)),n=t.properties.find((e=>"value"===e.key.name||"value"===e.key.value));s&&n&&r.properties.push(e.property("init",e.literal(s.value.value),n.value))}})),r},y=(e,t,r,s)=>{let n=t.properties.find((e=>"headers"===e.key.name||"headers"===e.key.value));n?"ObjectExpression"!==n.value.type&&(n.value=e.objectExpression([])):(n=e.property("init",e.identifier("headers"),e.objectExpression([])),t.properties.push(n)),n.value.properties=n.value.properties.filter((e=>"Literal"!==e.key.type||e.key.value.toLowerCase()!==r.toLowerCase())),n.value.properties.push(e.property("init",e.literal(r),e.literal(s)))},h=(e,t)=>{"ObjectExpression"===t.type&&t.properties.forEach((t=>{"header"!==t.key.name&&"header"!==t.key.value||(t.key.name="headers",t.key.value="headers","ArrayExpression"===t.value.type&&(t.value=m(e,t.value)))}))},f=(e,t)=>{if("ObjectExpression"!==t.type)return null;t.properties.forEach((r=>{if(("body"===r.key.name||"body"===r.key.value)&&"ObjectExpression"===r.value.type){const s=r.value.properties,n=s.find((e=>"mode"===e.key.name||"mode"===e.key.value));if(n&&"Literal"===n.value.type){const a=n.value.value;if("raw"===a){const e=s.find((e=>"raw"===e.key.name||"raw"===e.key.value));e&&(r.key.name="data",r.key.value="data",r.value=e.value)}else if("urlencoded"===a){const n=s.find((e=>("urlencoded"===e.key.name||"urlencoded"===e.key.value)&&"ArrayExpression"===e.value.type));n&&(r.key.name="data",r.key.value="data",r.value=m(e,n.value),y(e,t,"Content-Type","application/x-www-form-urlencoded"))}else if("formdata"===a){const n=s.find((e=>("formdata"===e.key.name||"formdata"===e.key.value)&&"ArrayExpression"===e.value.type));n&&(r.key.name="data",r.key.value="data",r.value=m(e,n.value),y(e,t,"Content-Type","multipart/form-data"))}}}}))},b=(e,t,r,s=new Set)=>{if(s.has(r))return null;s.add(r);let n=null;return t.find(e.VariableDeclarator,{id:{name:r}}).forEach((r=>{const a=r.value.init;if(a&&"ObjectExpression"===a.type){const t=e(a).at(0).get().value;h(e,t),f(e,t),n=t}else if(a&&"Identifier"===a.type){const r=a.name;n=b(e,t,r,s)}})),n},g=require("jscodeshift"),q=require("lodash/cloneDeep");function v(e){if("Identifier"===e.type)return e.name;if("CallExpression"===e.type){return`${v(e.callee)}()`}if("MemberExpression"===e.type){const t=v(e.object);if(e.computed)return"Literal"===e.property.type&&"string"==typeof e.property.value?`${t}.${e.property.value}`:`${t}.[computed]`;if("Identifier"===e.property.type)return`${t}.${e.property.name}`}return"[unsupported]"}const x={"pm.globals.get":"bru.getGlobalEnvVar","pm.globals.set":"bru.setGlobalEnvVar","pm.environment.get":"bru.getEnvVar","pm.environment.set":"bru.setEnvVar","pm.environment.name":"bru.getEnvName()","pm.environment.unset":"bru.deleteEnvVar","pm.variables.get":"bru.getVar","pm.variables.set":"bru.setVar","pm.variables.has":"bru.hasVar","pm.variables.replaceIn":"bru.interpolate","pm.collectionVariables.get":"bru.getVar","pm.collectionVariables.set":"bru.setVar","pm.collectionVariables.has":"bru.hasVar","pm.collectionVariables.unset":"bru.deleteVar","pm.setNextRequest":"bru.setNextRequest","pm.test":"test","pm.expect":"expect","pm.expect.fail":"expect.fail","pm.info.requestName":"req.getName()","pm.request.url":"req.getUrl()","pm.request.method":"req.getMethod()","pm.request.headers":"req.getHeaders()","pm.request.body":"req.getBody()","request.url":"req.getUrl()","request.method":"req.getMethod()","request.headers":"req.getHeaders()","request.body":"req.getBody()","request.name":"req.getName()","pm.response.json":"res.getBody","pm.response.code":"res.getStatus()","pm.response.status":"res.statusText","pm.response.responseTime":"res.getResponseTime()","pm.response.statusText":"res.statusText","pm.response.headers":"res.getHeaders()","pm.response.size":"res.getSize","pm.response.responseSize":"res.getSize().body","pm.response.size().body":"res.getSize().body","pm.response.size().header":"res.getSize().header","pm.response.size().total":"res.getSize().total","pm.cookies.jar":"bru.cookies.jar","pm.cookies.jar().get":"bru.cookies.jar().getCookie","pm.cookies.jar().getAll":"bru.cookies.jar().getCookies","pm.cookies.jar().set":"bru.cookies.jar().setCookie","pm.cookies.jar().unset":"bru.cookies.jar().deleteCookie","pm.cookies.jar().clear":"bru.cookies.jar().deleteCookies","pm.execution.skipRequest":"bru.runner.skipRequest","pm.setEnvironmentVariable":"bru.setEnvVar","pm.getEnvironmentVariable":"bru.getEnvVar","pm.clearEnvironmentVariable":"bru.deleteEnvVar"},k=[{pattern:"pm.sendRequest",transform:(e,t)=>{const r=e.parent.value;if("CallExpression"!==r.type)return;const s=[...r.arguments];if(!s.length)return;const n=s[0],a=s[1],o="AwaitExpression"===e.parent.parent.value.type;if("ObjectExpression"===n.type)h(t,n),f(t,n);else if("Identifier"===n.type){const r=n.name,s=t(e).closest(t.Program);b(t,s,r)}if(a){const e=((e,t)=>{if(!t||"FunctionExpression"!==t.type&&"ArrowFunctionExpression"!==t.type)return null;const r=t.params,s=t.body;let n="response";r.length>=2&&"Identifier"===r[1].type&&(n=r[1].name);let a="error";r.length>=1&&"Identifier"===r[0].type&&(a=r[0].name);const o={json:"data",text:"data",code:"status",status:"statusText"};return e(s).find(e.MemberExpression,{object:{type:"Identifier",name:n}}).forEach((t=>{const r=t.node.property;if("Identifier"===r.type&&o[r.name]){const s=o[r.name];if(s){const r=t.parent;r&&"CallExpression"===r.node.type?e(r).replaceWith(e.memberExpression(e.identifier(n),e.identifier(s))):e(t).replaceWith(e.memberExpression(e.identifier(n),e.identifier(s)))}}})),e.functionExpression(null,[e.identifier(a),e.identifier(n)],e.blockStatement(s.body))})(t,a);!e||"FunctionExpression"!==e.type&&"ArrowFunctionExpression"!==e.type||(e.async=!0);const r=t.callExpression(t.identifier("bru.sendRequest"),e?[n,e]:[n]);return o?r:t.awaitExpression(r)}const i=t.callExpression(t.identifier("bru.sendRequest"),[n]);return o?i:t.awaitExpression(i)}},{pattern:"pm.environment.has",transform:(e,t)=>{const r=e.parent.value.arguments;return t.logicalExpression("&&",t.binaryExpression("!==",t.callExpression(t.identifier("bru.getEnvVar"),r),t.identifier("undefined")),t.binaryExpression("!==",t.callExpression(t.identifier("bru.getEnvVar"),r),t.identifier("null")))}},{pattern:"pm.response.text",transform:(e,t)=>t.callExpression(t.identifier("JSON.stringify"),[t.identifier("res.getBody()")])},{pattern:"pm.response.headers.get",transform:(e,t)=>t.callExpression(t.identifier("res.getHeader"),e.parent.value.arguments)},{pattern:"pm.response.to.have.status",transform:(e,t)=>{const r=e.parent.value.arguments;return t.callExpression(t.memberExpression(t.callExpression(t.identifier("expect"),[t.callExpression(t.identifier("res.getStatus"),[])]),t.identifier("to.equal")),r)}},{pattern:"pm.response.to.have.header",transform:(e,t)=>{const r=e.parent.value.arguments;return r.length>0&&(r[0]=t.callExpression(t.memberExpression(r[0],t.identifier("toLowerCase")),[])),t.callExpression(t.memberExpression(t.callExpression(t.identifier("expect"),[t.callExpression(t.identifier("res.getHeaders"),[])]),t.identifier("to.have.property")),r)}},{pattern:"pm.response.to.have.body",transform:(e,t)=>{const r=e.parent.value.arguments;return t.callExpression(t.memberExpression(t.callExpression(t.identifier("expect"),[t.identifier("res.getBody()")]),t.identifier("to.equal")),r)}},{pattern:"pm.execution.setNextRequest",transform:(e,t)=>{const r=e.parent.value.arguments;return"Literal"!==r[0].type||null!==r[0].value&&"null"!==r[0].value?t.callExpression(t.identifier("bru.runner.setNextRequest"),r):t.callExpression(t.identifier("bru.runner.stopExecution"),[])}}],w={};k.forEach((e=>{w[e.pattern]=e}));const E=new Set(["pm","postman","pm.request","pm.response","pm.test","pm.expect","pm.environment","pm.variables","pm.collectionVariables","pm.execution","pm.globals"]);function T(e){e=e.replace(/\bpostman\b/g,"pm");const t=g(e),r=new Set;return function(e){const t=new Map,r=5;let s,n=0;do{s=!1,A(e,t),s=U(e,t)||!1,s=j(e,t)||!1,n++}while(s&&n<r)}(t),function(e){const t={get:"getCookie",getAll:"getCookies",set:"setCookie",unset:"deleteCookie",clear:"deleteCookies"},r=new Set;e.find(g.VariableDeclarator).forEach((e=>{if(e.value.init&&"CallExpression"===e.value.init.type){const t=e.value.init;if("MemberExpression"===t.callee.type){const s=v(t.callee);"pm.cookies.jar"!==s&&"bru.cookies.jar"!==s||"Identifier"===e.value.id.type&&r.add(e.value.id.name)}}})),e.find(g.CallExpression).forEach((e=>{if("MemberExpression"===e.value.callee.type&&"Identifier"===e.value.callee.object.type&&"Identifier"===e.value.callee.property.type){const s=e.value.callee.object.name,n=e.value.callee.property.name;if(r.has(s)&&t[n]){const r=t[n];e.value.callee.property.name=r}}}))}(t),function(e,t){e.find(g.MemberExpression).forEach((e=>{if(t.has(e.node))return;const r=v(e.value);if(x.hasOwnProperty(r)){const s=x[r];return g(e).replaceWith(g.identifier(s)),void t.add(e.node)}if(w.hasOwnProperty(r)&&"CallExpression"===e.parent.value.type){const s=w[r].transform(e,g);Array.isArray(s)?s.forEach(((r,s)=>{0===s?g(e.parent).replaceWith(r):g(e.parent.parent).insertAfter(r),t.add(r.node),t.add(e.parent.node)})):(g(e.parent).replaceWith(s),t.add(e.node),t.add(e.parent.node))}}))}(t,r),function(e,t,r){const s=/responseBody|responseHeaders|responseTime/;if(!s.test(r))return;const n=new Set;e.find(g.VariableDeclarator).forEach((e=>{if("Identifier"===e.value.id.type){const t=e.value.id.name;s.test(t)&&n.add(t)}})),n.has("responseBody")||e.find(g.CallExpression).forEach((e=>{if(t.has(e.node))return;const r=e.value;if("MemberExpression"===r.callee.type&&"JSON"===r.callee.object.name&&"parse"===r.callee.property.name){const s=r.arguments;s.length>0&&"Identifier"===s[0].type&&"responseBody"===s[0].name&&(g(e).replaceWith(g.identifier("res.getBody()")),t.add(e.node))}}));[{name:"responseBody",replacement:"res.getBody()"},{name:"responseHeaders",replacement:"res.getHeaders()"},{name:"responseTime",replacement:"res.getResponseTime()"}].forEach((({name:r,replacement:s})=>{n.has(r)||e.find(g.Identifier,{name:r}).forEach((e=>{if(t.has(e.node))return;const r=e.parent.value;"VariableDeclarator"===r.type&&r.id===e.node||"AssignmentExpression"===r.type&&r.left===e.node||"FunctionDeclaration"!==r.type&&"FunctionExpression"!==r.type&&("Property"!==r.type||r.key!==e.node&&r.value!==e.node)&&(g(e).replaceWith(g.identifier(s)),t.add(e.node))}))}))}(t,r,e),function(e){e.find(g.ExpressionStatement,{expression:{type:"AssignmentExpression",left:{type:"MemberExpression",object:{name:"tests"},computed:!0,property:{}}}}).forEach((e=>{const t=e.value.expression,r=t.left;if("Identifier"===r.object.type&&"tests"===r.object.name&&!0===r.computed){const s=r.property,n=t.right;if("Literal"===s.type&&"string"==typeof s.value){const t=s.value;g(e).replaceWith(g.expressionStatement(g.callExpression(g.identifier("test"),[g.literal(t),g.functionExpression(null,[],g.blockStatement([g.expressionStatement(g.memberExpression(g.callExpression(g.identifier("expect"),[g.callExpression(g.identifier("Boolean"),[n])]),g.identifier("to.be.true")))]))])))}else if("TemplateLiteral"===s.type){const t=g.templateLiteral(s.quasis,s.expressions);g(e).replaceWith(g.expressionStatement(g.callExpression(g.identifier("test"),[t,g.functionExpression(null,[],g.blockStatement([g.expressionStatement(g.memberExpression(g.callExpression(g.identifier("expect"),[g.callExpression(g.identifier("Boolean"),[n])]),g.identifier("to.be.true")))]))])))}}}))}(t),t.toSource()}function A(e,t){e.find(g.VariableDeclarator).forEach((e=>{if(e.value.init)if("Identifier"===e.value.id.type){const r=e.value.id.name;if("Identifier"===e.value.init.type)t.set(r,{type:"identifier",value:e.value.init.name});else if("MemberExpression"===e.value.init.type){const s=v(e.value.init);t.set(r,{type:"memberExpression",value:s,node:e.value.init})}}else if("ObjectPattern"===e.value.id.type&&"Identifier"===e.value.init.type){const r=e.value.init.name;e.value.id.properties.forEach((e=>{if(e.key.name&&"Identifier"===e.value.type){const s=e.value.name;t.set(s,{type:"memberExpression",value:`${r}.${e.key.name}`,node:g.memberExpression(g.identifier(r),g.identifier(e.key.name))})}}))}}))}function U(e,t){let r=!1;return e.find(g.Identifier).forEach((e=>{const s=e.value.name;if("VariableDeclarator"===e.parent.value.type&&e.parent.value.id===e.value)return;if("MemberExpression"===e.parent.value.type&&e.parent.value.property===e.value&&!e.parent.value.computed)return;if(!t.has(s))return;const n=t.get(s);if(!E.has(n.value))return;const a=q(n.node);g(e).replaceWith(a),t.set(s,{type:"memberExpression",value:n.value,node:a}),r=!0})),r}function j(e,t){let r=!1;return e.find(g.VariableDeclarator).forEach((e=>{if("Identifier"===e.value.id.type){const s=e.value.id.name,n=t.get(s);if(!n||!E.has(n.value))return;const a=g(e).closest(g.VariableDeclaration);1===a.get().value.declarations.length?a.remove():g(e).remove(),r=!0}else if("ObjectPattern"===e.value.id.type&&e.value.init&&"Identifier"===e.value.init.type&&"pm"===e.value.init.name){const t=g(e).closest(g.VariableDeclaration);1===t.get().value.declarations.length?t.remove():g(e).remove(),r=!0}})),r}const C={"pm\\.environment\\.get\\(":"bru.getEnvVar(","pm\\.environment\\.set\\(":"bru.setEnvVar(","pm\\.variables\\.get\\(":"bru.getVar(","pm\\.variables\\.set\\(":"bru.setVar(","pm\\.variables\\.replaceIn\\(":"bru.interpolate(","pm\\.collectionVariables\\.get\\(":"bru.getVar(","pm\\.collectionVariables\\.set\\(":"bru.setVar(","pm\\.collectionVariables\\.has\\(":"bru.hasVar(","pm\\.collectionVariables\\.unset\\(":"bru.deleteVar(","pm\\.setNextRequest\\(":"bru.setNextRequest(","pm\\.test\\(":"test(","pm.response.to.have\\.status\\(":"expect(res.getStatus()).to.equal(","pm\\.response\\.to\\.have\\.status\\(":"expect(res.getStatus()).to.equal(","pm\\.response\\.json\\(":"res.getBody(","pm\\.expect\\(":"expect(","pm\\.environment\\.has\\(([^)]+)\\)":"bru.getEnvVar($1) !== undefined && bru.getEnvVar($1) !== null","pm\\.response\\.code":"res.getStatus()","pm\\.response\\.text\\(\\)":"JSON.stringify(res.getBody())","pm\\.expect\\.fail\\(":"expect.fail(","pm\\.response\\.responseTime":"res.getResponseTime()","pm\\.globals\\.set\\(":"bru.setGlobalEnvVar(","pm\\.globals\\.get\\(":"bru.getGlobalEnvVar(","pm\\.response\\.headers\\.get\\(":"res.getHeader(","pm\\.response\\.to\\.have\\.body\\(":"expect(res.getBody()).to.equal(","pm\\.response\\.to\\.have\\.header\\(":"expect(res.getHeaders()).to.have.property(","pm\\.response\\.size\\(\\)":"res.getSize()","pm\\.response\\.size\\(\\)\\.body":"res.getSize().body","pm\\.response\\.responseSize":"res.getSize().body","pm\\.response\\.size\\(\\)\\.header":"res.getSize().header","pm\\.response\\.size\\(\\)\\.total":"res.getSize().total","pm\\.environment\\.name":"bru.getEnvName()","pm\\.response\\.status":"res.statusText","pm\\.response\\.headers":"res.getHeaders()","tests\\['([^']+)'\\]\\s*=\\s*([^;]+);":'test("$1", function() { expect(Boolean($2)).to.be.true; });',"pm\\.request\\.url":"req.getUrl()","pm\\.request\\.method":"req.getMethod()","pm\\.request\\.headers":"req.getHeaders()","pm\\.request\\.body":"req.getBody()","pm\\.info\\.requestName":"req.getName()","request\\.url":"req.getUrl()","request\\.method":"req.getMethod()","request\\.headers":"req.getHeaders()","request\\.body":"req.getBody()","request\\.name":"req.getName()","postman\\.setEnvironmentVariable\\(":"bru.setEnvVar(","postman\\.getEnvironmentVariable\\(":"bru.getEnvVar(","postman\\.clearEnvironmentVariable\\(":"bru.deleteEnvVar(","pm\\.execution\\.skipRequest\\(\\)":"bru.runner.skipRequest()","pm\\.execution\\.skipRequest":"bru.runner.skipRequest","pm\\.execution\\.setNextRequest\\(null\\)":"bru.runner.stopExecution()","pm\\.execution\\.setNextRequest\\('null'\\)":"bru.runner.stopExecution()","pm\\.cookies\\.jar\\(\\)":"bru.cookies.jar()","pm\\.cookies\\.jar\\(\\)\\.get\\(":"bru.cookies.jar().getCookie(","pm\\.cookies\\.jar\\(\\)\\.set\\(":"bru.cookies.jar().setCookie(","pm\\.cookies\\.jar\\(\\)\\.unset\\(":"bru.cookies.jar().deleteCookie(","pm\\.cookies\\.jar\\(\\)\\.clear\\(":"bru.cookies.jar().deleteCookies(","pm\\.cookies\\.jar\\(\\)\\.getAll\\(":"bru.cookies.jar().getCookies("},S=Object.keys(C).reduce(((e,t)=>{const r=t.replace(/^pm\\\./,"postman\\.");return e[t]=C[t],e[r]=C[t],e}),{}),_=Object.entries(S).map((([e,t])=>({regex:new RegExp(e,"g"),replacement:t}))),R=(e,t={})=>{let r=Array.isArray(e)?e.join("\n"):e;try{let e=T(r);return(e.includes("pm.")||e.includes("postman."))&&(e=e.replace(/^(.*(pm\.|postman\.).*)$/gm,"// $1")),e}catch(e){console.warn("Error in postman translation:",e);try{return(e=>{for(const{regex:t,replacement:r}of _)t.test(e)&&(e=e.replace(t,r));return(e.includes("pm.")||e.includes("postman."))&&(e=e.replace(/^(.*(pm\.|postman\.).*)$/gm,"// $1")),e})(r)}catch(e){return console.warn("Error in postman translation:",e),r}}},I=/[^\w-.]/g,P=Object.freeze({BASIC:"basic",BEARER:"bearer",AWSV4:"awsv4",APIKEY:"apikey",DIGEST:"digest",OAUTH2:"oauth2",NOAUTH:"noauth",NONE:"none"}),O=e=>e?"string"==typeof e?e:"object"==typeof e&&e.hasOwnProperty("content")?e.content:"":"",$=e=>{if(!e)return"";if("string"==typeof e)return e;if("object"==typeof e){const{raw:t}=e;return t&&"string"==typeof t?t.includes("#")?t.split("#")[0]:t:(e=>{if(!e)return"";const{protocol:t="http",host:r,path:s,port:n,query:a,hash:o}=e||{},i=Array.isArray(r)?r.filter(Boolean).join("."):r||"",l=Array.isArray(s)?s.join("/"):s||"";return`${t}://${i}${n?`:${n}`:""}${l?`/${l}`:""}${a&&Array.isArray(a)&&a.length>0?`?${a.filter((e=>e&&e.key)).map((e=>`${e.key}=${e.value||""}`)).join("&")}`:""}`})(e)}return""},N=(e,t)=>{e.forEach((e=>{e.script&&e.script.exec&&("prerequest"===e.listen&&(t.script||(t.script={}),e.script.exec&&e.script.exec.length>0?t.script.req=R(e.script.exec):(t.script.req="",console.warn("Unexpected event.script.exec type",typeof e.script.exec))),"test"===e.listen&&(t.script||(t.script={}),e.script.exec&&e.script.exec.length>0?t.script.res=R(e.script.exec):(t.script.res="",console.warn("Unexpected event.script.exec type",typeof e.script.exec))))}))},F=(e,t,r=!1)=>{if(r&&!e)return;if(!e)return;if(e.type===P.NOAUTH)return void(t.auth.mode=P.NONE);let s=e[e.type]??[];switch(Array.isArray(s)&&(s=s.reduce(((e,t)=>(e[t.key]=t.value,e)),{})),t.auth.mode=e.type,e.type){case P.BASIC:t.auth.basic={username:s.username||"",password:s.password||""};break;case P.BEARER:t.auth.bearer={token:s.token||""};break;case P.AWSV4:t.auth.awsv4={accessKeyId:s.accessKey||"",secretAccessKey:s.secretKey||"",sessionToken:s.sessionToken||"",service:s.service||"",region:s.region||"",profileName:""};break;case P.APIKEY:t.auth.apikey={key:s.key||"",value:s.value?.toString()||"",placement:"header"};break;case P.DIGEST:t.auth.digest={username:s.username||"",password:s.password||""};break;case P.OAUTH2:const r=e=>s[e]||"",n={authorization_code_with_pkce:"authorization_code",authorization_code:"authorization_code",client_credentials:"client_credentials",password_credentials:"password"},a=r("grant_type"),o=n[a]||"client_credentials",i={grantType:o,accessTokenUrl:r("accessTokenUrl"),refreshTokenUrl:r("refreshTokenUrl"),clientId:r("clientId"),clientSecret:r("clientSecret"),scope:r("scope"),state:r("state"),tokenPlacement:"header"===r("addTokenTo")?"header":"url",credentialsPlacement:"body"===r("client_authentication")?"body":"basic_auth_header"};switch(a){case"authorization_code":t.auth.oauth2={...i,authorizationUrl:r("authUrl"),callbackUrl:r("redirect_uri"),pkce:!1};break;case"authorization_code_with_pkce":t.auth.oauth2={...i,authorizationUrl:r("authUrl"),callbackUrl:r("redirect_uri"),pkce:!0};break;case"password_credentials":t.auth.oauth2={...i,username:r("username"),password:r("password")};break;case"client_credentials":t.auth.oauth2=i;break;default:console.warn("Unexpected OAuth2 grant type after mapping:",o),t.auth.oauth2=i}break;default:t.auth.mode=P.NONE,console.warn("Unexpected auth.type:",e.type,"- Mode set, but no specific config generated.")}},V=(r,s,{useWorkers:n=!1}={},a)=>{r.items=r.items||[];const o={},i={};s.forEach(((s,p)=>{if((e=>!e.request)(s)){const e=s.name||"Untitled Folder";let t=e,i=1;for(;o[t];)t=`${e}_${i}`,i++;const u={uid:l(),name:t,type:"folder",items:[],seq:p+1,root:{docs:O(s.description),meta:{name:t},request:{auth:{mode:"inherit",basic:null,bearer:null,awsv4:null,apikey:null,oauth2:null,digest:null},headers:[],script:{},tests:"",vars:{}}}};r.items.push(u),F(s.auth,u.root.request),s.item&&s.item.length&&V(u,s.item,{useWorkers:n},a),s.event&&(n?a.set(u.uid,{events:s.event,request:u.root.request}):N(s.event,u.root.request)),o[t]=u}else if(s.request){const o=s?.request?.method?.toUpperCase();if(!o||"string"!=typeof o||!o.trim())return void console.warn("Missing or invalid request.method",o);const u=s.name||"Untitled Request";let c=u,d=1;for(;i[c];)c=`${u}_${d}`,d++;const m=$(s.request.url),y={uid:l(),name:c,type:"http-request",seq:p+1,request:{url:m,method:o,auth:{mode:"inherit",basic:null,bearer:null,awsv4:null,apikey:null,oauth2:null,digest:null},headers:[],params:[],body:{mode:"none",json:null,text:null,xml:null,formUrlEncoded:[],multipartForm:[]},docs:O(s.request.description)}},h={encodeUrl:!0!==s.protocolProfileBehavior?.disableUrlEncoding};void 0!==s.protocolProfileBehavior?.followRedirects&&(h.followRedirects=s.protocolProfileBehavior.followRedirects),void 0!==s.protocolProfileBehavior?.maxRedirects&&(h.maxRedirects=s.protocolProfileBehavior.maxRedirects),y.settings=h,r.items.push(y),s.event&&(n?a.set(y.uid,{events:s.event,request:y.request}):s.event.forEach((e=>{"prerequest"===e.listen&&e.script&&e.script.exec&&(y.request?.script||(y.request.script={}),e.script.exec&&e.script.exec.length>0?y.request.script.req=R(e.script.exec):(y.request.script.req="",console.warn("Unexpected event.script.exec type",typeof e.script.exec))),"test"===e.listen&&e.script&&e.script.exec&&(y.request?.script||(y.request.script={}),e.script.exec&&e.script.exec.length>0?y.request.script.res=R(e.script.exec):(y.request.script.res="",console.warn("Unexpected event.script.exec type",typeof e.script.exec)))})));const f=e(s,"request.body.mode");if(f&&("formdata"===f&&(y.request.body.mode="multipartForm",t(s.request.body.formdata,(e=>{let t,r;"file"===e.type?(t=Array.isArray(e.src)?e.src:"string"==typeof e.src?[e.src]:null,r="file"):(t=e.value,r="text"),y.request.body.multipartForm.push({uid:l(),type:r,name:e.key,value:t,description:O(e.description),enabled:!e.disabled})}))),"urlencoded"===f&&(y.request.body.mode="formUrlEncoded",t(s.request.body.urlencoded,(e=>{y.request.body.formUrlEncoded.push({uid:l(),name:e.key,value:e.value,description:O(e.description),enabled:!e.disabled})}))),"raw"===f)){let t=e(s,"request.body.options.raw.language");t||(t=B(s.request.header)),"json"===t?(y.request.body.mode="json",y.request.body.json=s.request.body.raw):"xml"===t?(y.request.body.mode="xml",y.request.body.xml=s.request.body.raw):(y.request.body.mode="text",y.request.body.text=s.request.body.raw)}"graphql"===f&&(y.type="graphql-request",y.request.body.mode="graphql",y.request.body.graphql=(e=>{try{let t={query:"",variables:""};return"string"==typeof e&&(e=JSON.parse(e)),e.hasOwnProperty("variables")&&""!==e.variables&&(t.variables=e.variables),e.hasOwnProperty("query")&&""!==e.query&&(t.query=e.query),t}catch(e){return{query:"",variables:""}}})(s.request.body.graphql)),t(s.request.header,(e=>{y.request.headers.push({uid:l(),name:e.key,value:e.value,description:O(e.description),enabled:!e.disabled})})),F(s.request.auth,y.request),t(e(s,"request.url.query"),(e=>{y.request.params.push({uid:l(),name:e.key,value:e.value,description:O(e.description),type:"query",enabled:!e.disabled})})),t(e(s,"request.url.variable",[]),(e=>{e.key&&y.request.params.push({uid:l(),name:e.key,value:e.value??"",description:O(e.description),type:"path",enabled:!0})})),s.response&&Array.isArray(s.response)&&(y.examples=[],s.response.forEach(((t,r)=>{const s=t.name||`Example ${r+1}`,n=t.originalRequest||{},a=$(n.url),i=n.method?.toUpperCase()||o,p={uid:l(),itemUid:y.uid,name:s,description:"",type:"http-request",request:{url:a,method:i,headers:[],params:[],body:{mode:"none",json:null,text:null,xml:null,formUrlEncoded:[],multipartForm:[]}},response:{status:t.status||"",statusText:t.code?t.code.toString():"",headers:[],body:{type:z(t.header),content:t.body||""}}};if(n.header&&Array.isArray(n.header)&&n.header.forEach((e=>{p.request.headers.push({uid:l(),name:e.key,value:e.value,description:O(e.description),enabled:!e.disabled})})),n.url&&n.url.query&&Array.isArray(n.url.query)&&n.url.query.forEach((e=>{p.request.params.push({uid:l(),name:e.key,value:e.value,description:O(e.description),type:"query",enabled:!e.disabled})})),n.url&&n.url.variable&&Array.isArray(n.url.variable)&&n.url.variable.forEach((e=>{p.request.params.push({uid:l(),name:e.key,value:e.value??"",description:O(e.description),type:"path",enabled:!0})})),n.body){const t=n.body.mode;if("formdata"===t)p.request.body.mode="multipartForm",n.body.formdata&&Array.isArray(n.body.formdata)&&n.body.formdata.forEach((e=>{let t,r;"file"===e.type?(t=Array.isArray(e.src)?e.src:"string"==typeof e.src?[e.src]:null,r="file"):(t=e.value,r="text"),p.request.body.multipartForm.push({uid:l(),type:r,name:e.key,value:t,description:O(e.description),enabled:!e.disabled})}));else if("urlencoded"===t)p.request.body.mode="formUrlEncoded",n.body.urlencoded&&Array.isArray(n.body.urlencoded)&&n.body.urlencoded.forEach((e=>{p.request.body.formUrlEncoded.push({uid:l(),name:e.key,value:e.value,description:O(e.description),enabled:!e.disabled})}));else if("raw"===t){let t=e(n,"body.options.raw.language");t||(t=B(n.header||[])),"json"===t?(p.request.body.mode="json",p.request.body.json=n.body.raw):"xml"===t?(p.request.body.mode="xml",p.request.body.xml=n.body.raw):(p.request.body.mode="text",p.request.body.text=n.body.raw)}}t.header&&Array.isArray(t.header)&&t.header.forEach((e=>{p.response.headers.push({uid:l(),name:e.key,value:e.value,description:O(e.description),enabled:!0})})),y.examples.push(p)}))),i[c]=y}}))},B=e=>{let r;return t(e,(e=>{if("content-type"===e.key.toLowerCase()&&!e.disabled)return"string"==typeof e.value&&/^[\w\-]+\/([\w\-]+\+)?json/.test(e.value)?r="json":"string"==typeof e.value&&/^[\w\-]+\/([\w\-]+\+)?xml/.test(e.value)&&(r="xml"),!1})),r},z=e=>{if(!e||!Array.isArray(e))return"text";const t=e.find((e=>"content-type"===e.key.toLowerCase()));if(t){const e=t.value?.toLowerCase();if(e?.includes("application/json"))return"json";if(e?.includes("application/xml")||e?.includes("text/xml"))return"xml";if(e?.includes("text/html"))return"html"}return"text"},M=async(e,{useWorkers:t=!1})=>{const r={name:e.info.name||"Untitled Collection",uid:l(),version:"1",items:[],environments:[],root:{docs:O(e.info.description),meta:{name:e.info.name||"Untitled Collection"},request:{auth:{mode:"none",basic:null,bearer:null,awsv4:null,apikey:null,oauth2:null,digest:null},headers:[],script:{},tests:"",vars:{}}}};e.event&&N(e.event,r.root.request),e?.variable&&((e,t)=>{const r=e.filter((e=>!(null==e.key&&null==e.value))).map((e=>({uid:l(),name:(e.key??"").replace(I,"_"),value:e.value??"",enabled:!0})));t.vars.req=r})(e.variable,r.root.request),F(e.auth,r.root.request,!0);const s=t?new Map:null;if(V(r,e.item,{useWorkers:t},s),t&&s&&s.size>0)try{const{default:e}=await Promise.resolve().then((function(){return require("./postman-translator-worker-fbff671f.js")})),t=await e(s),n=e=>{e.forEach((e=>{if("folder"===e.type){if(t.has(e.uid)){e.root.request.script||(e.root.request.script={}),e.root.request.tests||(e.root.request.tests="");const r=t.get(e.uid).request?.script?.req,s=t.get(e.uid).request?.script?.res;e.root.request.script.req=r&&r.length>0?r:"",e.root.request.script.res=s&&s.length>0?s:""}e.items&&e.items.length>0&&n(e.items)}else if(t.has(e.uid)){e.request.script||(e.request.script={}),e.request.tests||(e.request.tests="");const r=t.get(e.uid).request?.script?.req,s=t.get(e.uid).request?.script?.res;e.request.script.req=r&&r.length>0?r:"",e.request.script.res=s&&s.length>0?s:""}}))};n(r.items)}catch(e){console.error("Error in script translation worker:",e)}finally{s.clear()}return r},L=e=>{const r={uid:l(),name:e.name,variables:[]};return((e,r=[])=>{e.variables=e.variables||[],t(r.filter((e=>!(null==e.key&&null==e.value))),(t=>{const r={uid:l(),name:(t.key??"").replace(I,"_"),value:t.value??"",enabled:t.enabled,type:"text",secret:(s=t.type,"secret"===s)};var s;e.variables.push(r)}))})(r,e.values),r},D=(e,t)=>{"string"==typeof e&&e.trim()||(e="",console.error("Invalid URL input:",e));const r=/:\/\//,s=/\/(.+)/,n=/\./,a=/\//,o=/\?/,i={raw:e};try{const{protocol:t,rawHostAndPath:l}=(e=>{const t=e.split(r);if(1===t.length)return{protocol:"",rawHostAndPath:t[0]};if(2===t.length){const[e,r]=t[1].split(o);return{protocol:t[0],rawHostAndPath:e}}throw new Error(`Invalid URL format: ${e}`)})(e);i.protocol=t;const{host:p,path:u}=(e=>{const[t,r=""]=e.split(s);return{host:t,path:r}})(l);i.host=p?p.split(n):[],i.path=u?u.split(a):[]}catch(e){return console.error(e.message),{}}return i.query=t.filter((e=>"query"===e.type)).map((({name:e,value:t,description:r})=>({key:e,value:t,description:r}))),i.variable=t.filter((e=>"path"===e.type)).map((({name:e,value:t,description:r})=>({key:e,value:t,description:r}))),i},K=e=>(e=>e.replace(/(?<!:)\/{2,}/g,"/"))(e.replace(/\\/g,"//")),H={JSON:/^[\w\-.+]+\/([\w\-.+]+\+)?json$/,XML:/^[\w\-.+]+\/([\w\-.+]+\+)?xml$/,HTML:/^[\w\-.+]+\/([\w\-.+]+\+)?html$/},W=e=>({100:"Continue",101:"Switching Protocols",102:"Processing",103:"Early Hints",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choice",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"unused",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Too Early",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",510:"Not Extended",511:"Network Authentication Required"}[e]||"Unknown"),G=e=>{if(!e||"string"!=typeof e)return"text";const t=e.toLowerCase();return H.JSON.test(t)?"json":H.XML.test(t)?"xml":H.HTML.test(t)?"html":"text"},J=(e,r=new Map)=>{if(r.has(e))return{};r.set(e,!0);let s={};return t(e.properties||{},((e,t)=>{"object"===e.type||e.properties?s[t]=J(e,r):"array"===e.type?e.items&&("object"===e.items.type||e.items.properties)?s[t]=[J(e.items,r)]:s[t]=[]:"integer"===e.type||"number"===e.type?s[t]=0:"boolean"===e.type?s[t]=!1:s[t]=""})),s},Q=e=>{if(void 0!==e.example)return e.example;if("object"===e.type||e.properties&&!e.type)return J(e);if("array"===e.type){if(e.items){if("object"===e.items.type||e.items.properties)return[J(e.items)];if("integer"===e.items.type||"number"===e.items.type)return[0];if("boolean"===e.items.type)return[!1];if("string"===e.items.type)return[""]}return[]}return"integer"===e.type||"number"===e.type?0:"boolean"!==e.type&&""},Y=({brunoRequestItem:e,exampleValue:t,exampleName:r,exampleDescription:s,statusCode:n,contentType:a,requestBodyValue:o=null,requestBodyContentType:i=null})=>{const p={uid:l(),itemUid:e.uid,name:r,description:s,type:"http-request",request:{url:e.request.url,method:e.request.method,headers:[...e.request.headers],params:[...e.request.params],body:{...e.request.body}},response:{status:String(n),statusText:W(n),headers:a?[{uid:l(),name:"Content-Type",value:a,description:"",enabled:!0}]:[],body:{type:G(a),content:"object"==typeof t?JSON.stringify(t,null,2):t}}};return null!==o&&(({body:e,requestBodyValue:t,contentType:r})=>{if(!t||!r||"string"!=typeof r)return;const s=r.toLowerCase();H.JSON.test(s)?(e.mode="json",e.json="object"==typeof t?JSON.stringify(t,null,2):t):"application/x-www-form-urlencoded"===s?e.mode="formUrlEncoded":"multipart/form-data"===s?e.mode="multipartForm":"text/plain"===s?(e.mode="text",e.text="object"==typeof t?JSON.stringify(t):String(t)):H.XML.test(s)&&(e.mode="xml",e.xml="object"==typeof t?JSON.stringify(t):String(t))})({body:p.request.body,requestBodyValue:o,contentType:i}),p},X=(r,s=new Set)=>{let n=r.operationObject,a=n.summary||n.operationId||n.description;if(a||(a=`${r.method} ${r.path}`),a&&(a=a.replace(/[\r\n\s]+/g," ").trim()),s.has(a)){let e=`${a} (${r.method.toUpperCase()})`,t=1;for(;s.has(e);)e=`${a} (${t})`,t++;a=e}s.add(a);let o=r.path.replace(/{([a-zA-Z]+)}/g,`{{${n.operationId}_$1}}`);const i={uid:l(),name:a,type:"http-request",request:{url:(p=r.global.server+o,p.replace(/([^:])\/{2,}/g,"$1/")),method:r.method.toUpperCase(),auth:{mode:"inherit",basic:null,bearer:null,digest:null,apikey:null,oauth2:null},headers:[],params:[],body:{mode:"none",json:null,text:null,xml:null,formUrlEncoded:[],multipartForm:[]},script:{res:null}}};var p;if(t(n.parameters||[],(e=>{"query"===e.in?i.request.params.push({uid:l(),name:e.name,value:"",description:e.description||"",enabled:e.required,type:"query"}):"path"===e.in?i.request.params.push({uid:l(),name:e.name,value:"",description:e.description||"",enabled:e.required,type:"path"}):"header"===e.in&&i.request.headers.push({uid:l(),name:e.name,value:"",description:e.description||"",enabled:e.required})})),Array.isArray(n.security)&&0===n.security.length)return i.request.auth.mode="inherit",i;let u=null;if(n.security&&n.security.length>0){const e=Object.keys(n.security[0])[0];u=r.global.security.getScheme(e)}if(u)if("http"===u.type&&"basic"===u.scheme)i.request.auth.mode="basic",i.request.auth.basic={username:"{{username}}",password:"{{password}}"};else if("http"===u.type&&"bearer"===u.scheme)i.request.auth.mode="bearer",i.request.auth.bearer={token:"{{token}}"};else if("http"===u.type&&"digest"===u.scheme)i.request.auth.mode="digest",i.request.auth.digest={username:"{{username}}",password:"{{password}}"};else if("apiKey"===u.type){const e={key:u.name,value:"{{apiKey}}",placement:"query"===u.in?"queryparams":"header"};i.request.auth.mode="apikey",i.request.auth.apikey=e,"header"===u.in||"cookie"===u.in?i.request.headers.push({uid:l(),name:u.name,value:"{{apiKey}}",description:u.description||"",enabled:!0}):"query"===u.in&&i.request.params.push({uid:l(),name:u.name,value:"{{apiKey}}",description:u.description||"",enabled:!0,type:"query"})}else if("oauth2"===u.type){let e=u.flows||{},t="client_credentials";e.authorizationCode?t="authorization_code":e.implicit?t="implicit":e.password?t="password":e.clientCredentials&&(t="client_credentials");let r={};switch(t){case"authorization_code":r=e.authorizationCode||{};break;case"implicit":r=e.implicit||{};break;case"password":r=e.password||{};break;default:r=e.clientCredentials||{}}i.request.auth.mode="oauth2",i.request.auth.oauth2={grantType:t,authorizationUrl:r.authorizationUrl||"{{oauth_authorize_url}}",accessTokenUrl:r.tokenUrl||"{{oauth_token_url}}",refreshTokenUrl:r.refreshUrl||"{{oauth_refresh_url}}",callbackUrl:"{{oauth_callback_url}}",clientId:"{{oauth_client_id}}",clientSecret:"{{oauth_client_secret}}",scope:Array.isArray(r.scopes)?r.scopes.join(" "):Object.keys(r.scopes||{}).join(" "),state:"{{oauth_state}}",credentialsPlacement:"header",tokenPlacement:"header",tokenHeaderPrefix:"Bearer",autoFetchToken:!1,autoRefreshToken:!0}}if(n.requestBody){let r=e(n,"requestBody.content",{}),s=Object.keys(r)[0],a=(r[s]||{}).schema;const o="string"==typeof s?s.toLowerCase():"";if(H.JSON.test(o)){if(i.request.body.mode="json",a&&("object"===a.type||a.properties)){let e=J(a);i.request.body.json=JSON.stringify(e,null,2)}a&&"array"===a.type&&(i.request.body.json=JSON.stringify([J(a.items)],null,2))}else"application/x-www-form-urlencoded"===o?(i.request.body.mode="formUrlEncoded",a&&("object"===a.type||a.properties)&&t(a.properties||{},((e,t)=>{i.request.body.formUrlEncoded.push({uid:l(),name:t,value:"",description:e.description||"",enabled:!0})}))):"multipart/form-data"===o?(i.request.body.mode="multipartForm",a&&("object"===a.type||a.properties)&&t(a.properties||{},((e,t)=>{i.request.body.multipartForm.push({uid:l(),type:"text",name:t,value:"",description:e.description||"",enabled:!0})}))):"text/plain"===o?(i.request.body.mode="text",i.request.body.text=""):H.XML.test(o)&&(i.request.body.mode="xml",i.request.body.xml="")}let c=[];if(t(n.responses||[],((e,r)=>{Object.hasOwn(e,"links")&&(c.push(`if (res.status === ${r}) {`),t(e.links,(e=>{t(e.parameters||[],((t,r)=>{let s=ee(t);c.push(` bru.setVar('${e.operationId}_${r}', ${s});`)}))})),c.push("}"))})),c.length>0&&(i.request.script.res=c.join("\n")),n.responses){const e=[],t=[],r=({responseExampleValue:r,exampleName:s,exampleDescription:n,statusCode:a,responseContentType:o,responseExampleKey:l=null})=>{const p=t.filter((e=>null!==e.key)),u=t.filter((e=>null===e.key)),c=l?p.find((e=>e.key===l)):null;if(c)e.push(Y({brunoRequestItem:i,exampleValue:r,exampleName:s,exampleDescription:n,statusCode:a,contentType:o,requestBodyValue:c.value,requestBodyContentType:c.contentType}));else if(p.length>0)p.forEach((t=>{const l=`${s} (${t.summary||t.key})`,p=n||t.description||"";e.push(Y({brunoRequestItem:i,exampleValue:r,exampleName:l,exampleDescription:p,statusCode:a,contentType:o,requestBodyValue:t.value,requestBodyContentType:t.contentType}))}));else if(u.length>0){const t=u[0];e.push(Y({brunoRequestItem:i,exampleValue:r,exampleName:s,exampleDescription:n,statusCode:a,contentType:o,requestBodyValue:t.value,requestBodyContentType:t.contentType}))}else e.push(Y({brunoRequestItem:i,exampleValue:r,exampleName:s,exampleDescription:n,statusCode:a,contentType:o}))};n.requestBody&&n.requestBody.content&&Object.entries(n.requestBody.content).forEach((([e,r])=>{r.examples?Object.entries(r.examples).forEach((([r,s])=>{t.push({key:r,value:void 0!==s.value?s.value:s,summary:s.summary,description:s.description,contentType:e})})):void 0!==r.example?t.push({key:null,value:r.example,summary:null,description:null,contentType:e}):r.schema&&t.push({key:null,value:Q(r.schema),summary:null,description:null,contentType:e,isSchema:!0})})),n.responses&&Object.entries(n.responses).forEach((([e,t])=>{if(t.content)Object.entries(t.content).forEach((([s,n])=>{if(n.examples)Object.entries(n.examples).forEach((([t,n])=>{const a=n.summary||t||`${e} Response`,o=n.description||"",i=void 0!==n.value?n.value:n;r({responseExampleValue:i,exampleName:a,exampleDescription:o,statusCode:e,responseContentType:s,responseExampleKey:t})}));else if(void 0!==n.example){const a=`${e} Response`,o=t.description||"";r({responseExampleValue:n.example,exampleName:a,exampleDescription:o,statusCode:e,responseContentType:s})}else if(n.schema){const a=Q(n.schema),o=`${e} Response`,i=t.description||"";r({responseExampleValue:a,exampleName:o,exampleDescription:i,statusCode:e,responseContentType:s})}}));else{const s=`${e} Response`,n=t.description||"";r({responseExampleValue:"",exampleName:s,exampleDescription:n,statusCode:e,responseContentType:null})}})),e.length>0&&(i.examples=e)}return i},Z=(e,t=e?.components,r=new Map)=>{if(!e||"object"!=typeof e)return e;if(r.has(e))return r.get(e);if(Array.isArray(e))return e.map((e=>Z(e,t,r)));var s;if("string"==typeof(s=e.$ref)&&s.startsWith("#/components/")){const s=e.$ref;if(r.has(s))return r.get(s);if(s.startsWith("#/components/")){const n=s.replace("#/components/","").split("/");let a=t;for(const t of n){if(!a||!a[t])return e;a=a[t]}r.set(s,{});const o=Z(a,t,r);return r.set(s,o),o}return e}const n={};r.set(e,n);for(const[s,a]of Object.entries(e))n[s]=Z(a,t,r);return n},ee=e=>{if("$response.body"===e)return"res.body";if(e.startsWith("$response.body#")){return`res.body${e.substring(15).replace("/",".")}`}return e},te=(r,s={})=>{const n=new Set,a={name:"",uid:l(),version:"1",items:[],environments:[]};try{const o=Z(r);if(!o)throw new Error("Invalid OpenAPI collection. Failed to resolve refs.");if(o.openapi&&!o.openapi.startsWith("3"))throw new Error("Only OpenAPI v3 is supported currently.");a.name=o.info?.title?.trim()||"Untitled Collection",(o.servers||[]).forEach(((e,r)=>{let s=(e=>{let r=e.url;return e.variables&&t(e.variables,((e,t)=>{let s=e.default||(e.enum?e.enum[0]:`{{${t}}}`);r=r.replace(`{${t}}`,s)})),r.endsWith("/")?r.slice(0,-1):r})(e),n=e.description?e.description:`Environment ${r+1}`;a.environments.push({uid:l(),name:n,variables:[{uid:l(),name:"baseUrl",value:s,type:"text",enabled:!0,secret:!1}]})}));let i=(t=>{let r=t.security||[],s=e(t,"components.securitySchemes",{});return{supported:Object.keys(s).length>0?r.map((e=>s[Object.keys(e)[0]])).filter(Boolean):[],schemes:s,getScheme:e=>s[e]}})(o),p=Object.entries(o.paths).map((([e,t])=>Object.entries(t).filter((([e,t])=>["get","put","post","delete","options","head","patch","trace"].includes(e.toLowerCase()))).map((([t,r])=>({method:t,path:e.replace(/{([^}]+)}/g,":$1"),originalPath:e,operationObject:r,global:{server:"{{baseUrl}}",security:i}}))))).reduce(((e,t)=>e.concat(t)),[]);if("path"===(s.groupBy||"tags"))a.items=(e=>{const t={};e.forEach((e=>{const r=(e.originalPath||e.path).split("/").filter((e=>""!==e));if(0===r.length){const r="Root";return t[r]||(t[r]={name:r,requests:[],subGroups:{}}),void t[r].requests.push(e)}let s=r[0];if(t[s]||(t[s]={name:s,requests:[],subGroups:{}}),r.length<=1)t[s].requests.push(e);else{let n=t[s];for(let e=1;e<r.length;e++){let t=r[e];n.subGroups[t]||(n.subGroups[t]={name:t,requests:[],subGroups:{}}),n=n.subGroups[t]}n.requests.push(e)}}));const r=e=>{const t=new Set,s=e.requests.map((e=>X(e,t))),n=[];return Object.values(e.subGroups).forEach((e=>{const t=r(e);t.length>0&&n.push({uid:l(),name:e.name,type:"folder",items:t})})),[...s,...n]};return Object.values(t).map((e=>({uid:l(),name:e.name,type:"folder",items:r(e)})))})(p);else{let[e,r]=(e=>{let r={},s=[];return t(e,(e=>{let t=e.operationObject.tags||[];if(t.length>0){let n=t[0].trim();n?(r[n]||(r[n]=[]),r[n].push(e)):s.push(e)}else s.push(e)})),[Object.keys(r).map((e=>({name:e,requests:r[e]}))),s]})(p),s=e.map((e=>({uid:l(),name:e.name,type:"folder",root:{request:{auth:{mode:"inherit",basic:null,bearer:null,digest:null,apikey:null,oauth2:null}},meta:{name:e.name}},items:e.requests.map((e=>X(e,n)))}))),o=r.map((e=>X(e,n))),i=s.concat(o);a.items=i}let u=(e=>{const t={mode:"none",basic:null,bearer:null,digest:null,apikey:null,oauth2:null};if(!e)return t;if("http"===e.type&&"basic"===e.scheme)return{...t,mode:"basic",basic:{username:"{{username}}",password:"{{password}}"}};if("http"===e.type&&"bearer"===e.scheme)return{...t,mode:"bearer",bearer:{token:"{{token}}"}};if("http"===e.type&&"digest"===e.scheme)return{...t,mode:"digest",digest:{username:"{{username}}",password:"{{password}}"}};if("apiKey"===e.type)return{...t,mode:"apikey",apikey:{key:e.name,value:"{{apiKey}}",placement:"query"===e.in?"queryparams":"header"}};if("oauth2"===e.type){let r=e.flows||{},s="client_credentials";r.authorizationCode?s="authorization_code":r.implicit?s="implicit":r.password&&(s="password");const n="authorization_code"===s?r.authorizationCode||{}:"implicit"===s?r.implicit||{}:"password"===s?r.password||{}:r.clientCredentials||{};return{...t,mode:"oauth2",oauth2:{grantType:s,authorizationUrl:n.authorizationUrl||"{{oauth_authorize_url}}",accessTokenUrl:n.tokenUrl||"{{oauth_token_url}}",refreshTokenUrl:n.refreshUrl||"{{oauth_refresh_url}}",callbackUrl:"{{oauth_callback_url}}",clientId:"{{oauth_client_id}}",clientSecret:"{{oauth_client_secret}}",scope:Array.isArray(n.scopes)?n.scopes.join(" "):Object.keys(n.scopes||{}).join(" "),state:"{{oauth_state}}",credentialsPlacement:"header",tokenPlacement:"header",tokenHeaderPrefix:"Bearer",autoFetchToken:!1,autoRefreshToken:!0}}}return t})(i.supported[0]);return a.root={request:{auth:u},meta:{name:a.name}},a}catch(e){if(!(e instanceof Error))throw new Error("Unknown error");throw e}};function re(e,t=""){const r={};return function e(t,s){null!==t&&"object"==typeof t?Array.isArray(t)?t.forEach(((t,r)=>{e(t,s?`${s}[${r}]`:`[${r}]`)})):Object.entries(t).forEach((([t,r])=>{e(r,s?`${s}.${t}`:t)})):r[s]=t}(e,t),r}const se=(e,t=0)=>{const r=[],s=re(e?.data||{});return Object.entries(s).forEach((([e,t])=>{r.push({uid:l(),name:e,value:String(t),type:"text",enabled:!0,secret:!1})})),{uid:l(),name:e?.name&&String(e.name).trim()||`Environment ${t+1}`,variables:r}},ne=(e={},t={})=>({...e,...t}),ae=(e,t,r)=>{const s=r.reduce(((r,s,n)=>(s.name===e.name&&n<t&&r++,r)),0);return 0!==s?`${e.name}_${s}`:e.name},oe=new RegExp("{{.*?}}","g"),ie=e=>{const r=(e=e||"").match(oe)||[];return t(r,(t=>{e=e.replace(t,t.replace("_.","").replaceAll(" ",""))})),e},le=(r,s,n)=>{const a=ae(r,s,n),o={uid:l(),name:a,type:"http-request",request:{url:ie(r.url),method:r.method,auth:{mode:"none",basic:null,bearer:null,digest:null},headers:[],params:[],body:{mode:"none",json:null,text:null,xml:null,formUrlEncoded:[],multipartForm:[]}}};t(r.headers,(e=>{o.request.headers.push({uid:l(),name:e.name,value:ie(e.value),description:e.description,enabled:!e.disabled})})),t(r.parameters,(e=>{o.request.params.push({uid:l(),name:e.name,value:ie(e.value),description:e.description,type:"query",enabled:!e.disabled})})),t(r.pathParameters,(e=>{o.request.params.push({uid:l(),name:e.name,value:ie(e.value),description:"",type:"path",enabled:!0})}));const i=e(r,"authentication.type","");"basic"===i?(o.request.auth.mode="basic",o.request.auth.basic={username:ie(e(r,"authentication.username","")),password:ie(e(r,"authentication.password",""))}):"bearer"===i&&(o.request.auth.mode="bearer",o.request.auth.bearer={token:ie(e(r,"authentication.token",""))});const p=e(r,"body.mimeType","").split(";")[0];"application/json"===p?(o.request.body.mode="json",o.request.body.json=ie(r.body.text)):"application/x-www-form-urlencoded"===p?(o.request.body.mode="formUrlEncoded",t(r.body.params,(e=>{o.request.body.formUrlEncoded.push({uid:l(),name:e.name,value:ie(e.value),description:e.description,enabled:!e.disabled})}))):"multipart/form-data"===p?(o.request.body.mode="multipartForm",t(r.body.params,(e=>{o.request.body.multipartForm.push({uid:l(),type:"text",name:e.name,value:ie(e.value),description:e.description,enabled:!e.disabled})}))):"text/plain"===p?(o.request.body.mode="text",o.request.body.text=ie(r.body.text)):"text/xml"===p||"application/xml"===p?(o.request.body.mode="xml",o.request.body.xml=ie(r.body.text)):"application/graphql"===p&&(o.type="graphql-request",o.request.body.mode="graphql",o.request.body.graphql=(e=>{try{const t=JSON.parse(e);return{query:ie(t.query),variables:JSON.stringify(t.variables,null,2)}}catch(e){return{query:"",variables:""}}})(r.body.text));const u={encodeUrl:!1!==r.settings?.encodeUrl&&!1!==r.settingEncodeUrl};return o.settings=u,o},pe=e=>{const t={name:e.name||"Untitled Collection",uid:l(),version:"1",items:[],environments:[]};try{const r=(e,t=[])=>{if(!Array.isArray(e))throw new Error("Invalid items format: expected array");return e.map(((e,s)=>{if(!e)return null;if(e.method&&e.url){const r={_id:e.meta?.id||l(),name:e.name||"Untitled Request",url:e.url||"",method:e.method||"",headers:e.headers||[],parameters:e.parameters||[],pathParameters:e.pathParameters||[],authentication:e.authentication||{},body:e.body||{},settings:e.settings||{}};return le(r,s,t)}return e.children&&Array.isArray(e.children)?{uid:l(),name:e.name||"Untitled Folder",type:"folder",items:r(e.children,e.children)}:null})).filter(Boolean)};return e.collection&&Array.isArray(e.collection)&&(t.items=r(e.collection,e.collection)),e.environments&&(t.environments=(e=>{if(!e||"object"!=typeof e)return[];const t=[];t.push(se(e))