@usebruno/filestore 0.12.0 → 0.13.0
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/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/workers/worker-script.js +1 -1
- package/dist/cjs/workers/worker-script.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/workers/worker-script.js +1 -1
- package/dist/esm/workers/worker-script.js.map +1 -1
- package/dist/formats/bru/utils/redact-large-text-blocks.d.ts.map +1 -1
- package/dist/formats/yml/common/omit-headers.d.ts +3 -0
- package/dist/formats/yml/common/omit-headers.d.ts.map +1 -0
- package/dist/formats/yml/common/scripts.d.ts +3 -5
- package/dist/formats/yml/common/scripts.d.ts.map +1 -1
- package/dist/formats/yml/items/parseGrpcRequest.d.ts.map +1 -1
- package/dist/formats/yml/items/parseHttpRequest.d.ts.map +1 -1
- package/dist/formats/yml/items/stringifyGraphQLRequest.d.ts.map +1 -1
- package/dist/formats/yml/items/stringifyGrpcRequest.d.ts.map +1 -1
- package/dist/formats/yml/items/stringifyHttpRequest.d.ts.map +1 -1
- package/dist/formats/yml/items/stringifyWebsocketRequest.d.ts.map +1 -1
- package/dist/formats/yml/parseCollection.d.ts.map +1 -1
- package/dist/formats/yml/parseEnvironment.d.ts.map +1 -1
- package/dist/formats/yml/stringifyCollection.d.ts.map +1 -1
- package/dist/formats/yml/stringifyEnvironment.d.ts.map +1 -1
- package/dist/formats/yml/stringifyFolder.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/formats/bru/tests/redact-large-text-blocks.spec.js +60 -0
- package/src/formats/bru/utils/redact-large-text-blocks.ts +4 -0
- package/src/formats/yml/common/omit-headers.spec.ts +16 -0
- package/src/formats/yml/common/omit-headers.ts +12 -0
- package/src/formats/yml/common/scripts.spec.ts +155 -0
- package/src/formats/yml/common/scripts.ts +55 -29
- package/src/formats/yml/grpc-round-trip.spec.ts +110 -0
- package/src/formats/yml/items/parseGraphQLRequest.ts +2 -2
- package/src/formats/yml/items/parseGrpcRequest.ts +14 -6
- package/src/formats/yml/items/parseHttpRequest.ts +8 -2
- package/src/formats/yml/items/stringifyGraphQLRequest.ts +5 -9
- package/src/formats/yml/items/stringifyGrpcRequest.ts +2 -1
- package/src/formats/yml/items/stringifyHttpRequest.ts +11 -9
- package/src/formats/yml/items/stringifyWebsocketRequest.ts +3 -1
- package/src/formats/yml/parseCollection.ts +5 -9
- package/src/formats/yml/parseEnvironment.spec.ts +49 -0
- package/src/formats/yml/parseEnvironment.ts +6 -0
- package/src/formats/yml/script.spec.ts +159 -0
- package/src/formats/yml/stringifyCollection.ts +7 -10
- package/src/formats/yml/stringifyEnvironment.spec.ts +58 -0
- package/src/formats/yml/stringifyEnvironment.ts +6 -0
- package/src/formats/yml/stringifyFolder.ts +3 -1
- package/src/maxRedirects.spec.ts +144 -0
package/dist/esm/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as e from"lodash";import{bruToJsonV2 as t,jsonToBruV2 as r,collectionBruToJson as s,jsonToCollectionBru as n,bruToEnvJsonV2 as o,envJsonToBruV2 as a,outdentString as i,dotenvToJson as c}from"@usebruno/lang";import*as l from"yaml";import{valueToString as u,isBrunoVariableDataType as p,parseValueByDataType as d,resolveTimeoutSetting as m}from"@usebruno/common/utils";import{utils as h}from"@usebruno/common";import{Worker as g}from"node:worker_threads";import y from"node:path";import{createHash as f}from"node:crypto";const q=[{type:"authorization",sendIn:"headers",source:"oauth2_additional_parameters_auth_req_headers"},{type:"authorization",sendIn:"queryparams",source:"oauth2_additional_parameters_auth_req_queryparams"},{type:"token",sendIn:"headers",source:"oauth2_additional_parameters_access_token_req_headers"},{type:"token",sendIn:"queryparams",source:"oauth2_additional_parameters_access_token_req_queryparams"},{type:"token",sendIn:"body",source:"oauth2_additional_parameters_access_token_req_bodyvalues"},{type:"refresh",sendIn:"headers",source:"oauth2_additional_parameters_refresh_token_req_headers"},{type:"refresh",sendIn:"queryparams",source:"oauth2_additional_parameters_refresh_token_req_queryparams"},{type:"refresh",sendIn:"body",source:"oauth2_additional_parameters_refresh_token_req_bodyvalues"}],b=(e,t)=>e?.length?e.map((e=>({...e,sendIn:t}))):[],k=(e,t,r)=>{if(!((e,t)=>"authorization"===e?"authorization_code"===t||"implicit"===t:"token"!==e&&"refresh"!==e||"implicit"!==t)(t,r))return[];const s=q.filter((e=>e.type===t)),n=[];for(const t of s){const r=e[t.source],s=b(r,t.sendIn);n.push(...s)}return n},v=e=>{const t=e.auth.oauth2.grantType,r={};try{const s=["authorization","token","refresh"];for(const n of s){const s=k(e,n,t);s.length>0&&(r[n]=s)}}catch(e){console.error(e),console.error("Error while getting the oauth2 additional parameters!")}return r},{customAlphabet:w}=require("nanoid"),x=e=>"string"==typeof e,T=e=>"number"==typeof e,U=e=>x(e)&&e.trim().length>0,P=(e,t="")=>null==e?t:"string"==typeof e?e:String(e),S=()=>w("useandom26T198340PX75pxJACKVERYMINDBUSHWOLFGQZbfghjklqvwyzrict",21)(),R=(t,r=!1)=>{try{const n=r?t:s(t),o={request:{headers:e.get(n,"headers",[]),auth:e.get(n,"auth",{}),script:e.get(n,"script",{}),vars:e.get(n,"vars",{}),tests:e.get(n,"tests","")},settings:e.get(n,"settings",{}),docs:e.get(n,"docs","")};if(n.meta&&(o.meta={name:n.meta.name},void 0!==n.meta.seq)){const e=n.meta.seq;o.meta.seq=isNaN(e)?1:Number(e)}const a=n?.auth?.oauth2?.grantType;if(a){const e=v(n);Object.keys(e).length>0&&(o.request.auth.oauth2.additionalParameters=e)}return o}catch(e){return Promise.reject(e)}},C=(t,r)=>{try{const s={headers:e.get(t,"request.headers",[]),script:{req:e.get(t,"request.script.req",""),res:e.get(t,"request.script.res","")},vars:{req:e.get(t,"request.vars.req",[]),res:e.get(t,"request.vars.res",[])},tests:e.get(t,"request.tests",""),auth:e.get(t,"request.auth",{}),docs:e.get(t,"docs","")};if(t?.meta&&(s.meta={name:t.meta.name},void 0!==t.meta.seq)){const e=t.meta.seq;s.meta.seq=isNaN(e)?1:Number(e)}return r||(s.auth=e.get(t,"request.auth",{})),n(s)}catch(e){throw e}},E=(r,s=!1,n,o)=>{try{const a=s?r:t(r),i=n||e.get(a,"meta.type","http"),c=o||e.get(a,"http.method","GET");let l=i;switch(i){case"http":default:l="http-request";break;case"graphql":l="graphql-request";break;case"grpc":l="grpc-request";break;case"ws":l="ws-request"}let u=e.get(a,"response.status","200"),p=e.get(a,"response.statusText","OK");isNaN(Number(u))&&!isNaN(Number(p))&&([u,p]=[p,u]);return{type:l,name:e.get(a,"name"),description:e.get(a,"description",""),request:{method:e.get(a,"request.method")||c,url:e.get(a,"request.url"),headers:e.get(a,"request.headers",[]),body:e.get(a,"request.body",{mode:"none"}),params:e.get(a,"request.params",[])},response:{headers:e.get(a,"response.headers",[]).map((e=>({name:e.name,value:e.value}))),status:Number(u)||200,statusText:p||"OK",body:{type:e.get(a,"response.body.type","json"),content:e.get(a,"response.body.content","")}}}}catch(e){throw console.log("bruExampleToJson error",e),e}},_=t=>{try{return{name:e.get(t,"name"),description:e.get(t,"description",""),request:{method:e.get(t,"request.method"),url:e.get(t,"request.url"),headers:e.get(t,"request.headers",[]),body:e.get(t,"request.body",{}),params:e.get(t,"request.params",[])},response:e.get(t,"response",{})}}catch(e){throw e}},j=["info","http","graphql","grpc","websocket","mock","routes","runtime","settings","examples","docs","items","request"],A=e=>{const t=l.stringify(e,{lineWidth:0,indent:2,minContentWidth:0,defaultStringType:"PLAIN"}).split("\n"),r=[];for(let e=0;e<t.length;e++){const s=t[e];if(e>0&&!s.startsWith(" ")&&!s.startsWith("\t")){const e=s.split(":")[0];j.includes(e)&&r.length>0&&""!==r[r.length-1].trim()&&r.push("")}r.push(s)}return r.join("\n")},N=e=>l.parse(e),F=e=>"boolean"==typeof e?e:void 0,I=e=>{if(!Array.isArray(e)||0===e.length)return;const t=e.filter((e=>e&&U(e.name))).map((e=>{const t=(e=>{if(x(e))switch(e.trim().toLowerCase()){case"headers":return"header";case"queryparams":return"query";case"body":return"body";default:return}})(e.sendIn);if(!t)return;const r={name:e.name.trim(),placement:t};return U(e.value)&&(r.value=e.value),r})).filter((e=>Boolean(e)));return t.length>0?t:void 0},z=e=>{const t={};return U(e.clientId)&&(t.clientId=e.clientId),U(e.clientSecret)&&(t.clientSecret=e.clientSecret),U(e.credentialsPlacement)&&(t.placement=e.credentialsPlacement),Object.keys(t).length>0?t:void 0},K=e=>{const t={};return U(e.credentialsId)&&(t.id=e.credentialsId),U(e.tokenPlacement)||(t.placement={header:""}),"header"===e.tokenPlacement&&(t.placement={header:e.tokenHeaderPrefix}),"url"===e.tokenPlacement&&(t.placement={query:e.tokenQueryKey}),t.source=e.tokenSource||"access_token",Object.keys(t).length>0?t:void 0},O=e=>{const t=F(e.autoFetchToken),r=F(e.autoRefreshToken),s={};return void 0!==t&&(s.autoFetchToken=t),void 0!==r&&(s.autoRefreshToken=r),Object.keys(s).length>0?s:void 0},B=e=>{const t={type:"oauth2",flow:"resource_owner_password_credentials"};U(e.accessTokenUrl)&&(t.accessTokenUrl=e.accessTokenUrl),U(e.refreshTokenUrl)&&(t.refreshTokenUrl=e.refreshTokenUrl);const r=z(e);r&&(t.credentials=r);const s=(e=>{const t={};return U(e.username)&&(t.username=e.username),U(e.password)&&(t.password=e.password),Object.keys(t).length>0?t:void 0})(e);s&&(t.resourceOwner=s),U(e.scope)&&(t.scope=e.scope);const n=I(e.additionalParameters?.token),o=I(e.additionalParameters?.refresh);(n||o)&&(t.additionalParameters={},n&&(t.additionalParameters.accessTokenRequest=n),o&&(t.additionalParameters.refreshTokenRequest=o));const a=K(e);a&&(t.tokenConfig=a);const i=O(e);return i&&(t.settings=i),t},$=e=>{if(e)switch(e.grantType){case"client_credentials":return(e=>{const t={type:"oauth2",flow:"client_credentials"};U(e.accessTokenUrl)&&(t.accessTokenUrl=e.accessTokenUrl),U(e.refreshTokenUrl)&&(t.refreshTokenUrl=e.refreshTokenUrl);const r=z(e);r&&(t.credentials=r),U(e.scope)&&(t.scope=e.scope);const s=I(e.additionalParameters?.token),n=I(e.additionalParameters?.refresh);(s||n)&&(t.additionalParameters={},s&&(t.additionalParameters.accessTokenRequest=s),n&&(t.additionalParameters.refreshTokenRequest=n));const o=K(e);o&&(t.tokenConfig=o);const a=O(e);return a&&(t.settings=a),t})(e);case"password":return B(e);case"authorization_code":return(e=>{const t={type:"oauth2",flow:"authorization_code"};U(e.authorizationUrl)&&(t.authorizationUrl=e.authorizationUrl),U(e.accessTokenUrl)&&(t.accessTokenUrl=e.accessTokenUrl),U(e.refreshTokenUrl)&&(t.refreshTokenUrl=e.refreshTokenUrl),U(e.callbackUrl)&&(t.callbackUrl=e.callbackUrl);const r=z(e);r&&(t.credentials=r);const s=I(e.additionalParameters?.authorization),n=I(e.additionalParameters?.token),o=I(e.additionalParameters?.refresh);(s||n||o)&&(t.additionalParameters={},s&&(t.additionalParameters.authorizationRequest=s),n&&(t.additionalParameters.accessTokenRequest=n),o&&(t.additionalParameters.refreshTokenRequest=o)),U(e.scope)&&(t.scope=e.scope),U(e.state)&&(t.state=e.state);const a=(e=>{if(null!=e)return e?{}:{disabled:!0}})(e.pkce);a&&(t.pkce=a);const i=K(e);i&&(t.tokenConfig=i);const c=O(e);return c&&(t.settings=c),t})(e);case"implicit":return(e=>{const t={type:"oauth2",flow:"implicit"};U(e.authorizationUrl)&&(t.authorizationUrl=e.authorizationUrl),U(e.callbackUrl)&&(t.callbackUrl=e.callbackUrl),U(e.clientId)&&(t.credentials={clientId:e.clientId}),U(e.scope)&&(t.scope=e.scope),U(e.state)&&(t.state=e.state);const r=I(e.additionalParameters?.authorization);r&&(t.additionalParameters={authorizationRequest:r});const s=K(e);s&&(t.tokenConfig=s);const n=O(e);return n&&(t.settings=n),t})(e);default:return void console.warn(`toOpenCollectionOAuth2: Unsupported OAuth2 grant type "${e.grantType}".`)}},H=e=>{if(!Array.isArray(e)||0===e.length)return null;const t=e.map((e=>{const t=(e=>{if(!e)return null;switch(e){case"header":return"headers";case"query":return"queryparams";case"body":return"body";default:return null}})(e.placement);return{name:e.name||null,value:e.value||null,sendIn:t||"headers",enabled:!0}}));return t.length>0?t:null},Q=e=>{if(e&&"none"!==e.mode){if("inherit"===e.mode)return"inherit";switch(e.mode){case"awsv4":return(e=>{const t={type:"awsv4"};return e?(x(e.accessKeyId)&&(t.accessKeyId=e.accessKeyId),x(e.secretAccessKey)&&(t.secretAccessKey=e.secretAccessKey),x(e.sessionToken)&&(t.sessionToken=e.sessionToken),x(e.service)&&(t.service=e.service),x(e.region)&&(t.region=e.region),x(e.profileName)&&(t.profileName=e.profileName),t):t})(e.awsv4);case"basic":return(e=>{const t={type:"basic"};return e?(x(e.username)&&(t.username=e.username),x(e.password)&&(t.password=e.password),t):t})(e.basic);case"bearer":return(e=>{const t={type:"bearer"};return e?(x(e.token)&&(t.token=e.token),t):t})(e.bearer);case"digest":return(e=>{const t={type:"digest"};return e?(x(e.username)&&(t.username=e.username),x(e.password)&&(t.password=e.password),t):t})(e.digest);case"ntlm":return(e=>{const t={type:"ntlm"};return e?(x(e.username)&&(t.username=e.username),x(e.password)&&(t.password=e.password),x(e.domain)&&(t.domain=e.domain),t):t})(e.ntlm);case"wsse":return(e=>{const t={type:"wsse"};return e?(x(e.username)&&(t.username=e.username),x(e.password)&&(t.password=e.password),t):t})(e.wsse);case"apikey":return(e=>{const t={type:"apikey"};return e?(x(e.key)&&(t.key=e.key),x(e.value)&&(t.value=e.value),x(e.placement)&&("header"===e.placement?t.placement="header":"queryparams"===e.placement&&(t.placement="query")),t):t})(e.apikey);case"oauth1":return(e=>{const t={type:"oauth1"};return e?(x(e.consumerKey)&&(t.consumerKey=e.consumerKey),x(e.consumerSecret)&&(t.consumerSecret=e.consumerSecret),x(e.accessToken)&&(t.accessToken=e.accessToken),x(e.accessTokenSecret)&&(t.accessTokenSecret=e.accessTokenSecret),x(e.callbackUrl)&&(t.callbackUrl=e.callbackUrl),x(e.verifier)&&(t.verifier=e.verifier),x(e.signatureMethod)&&(t.signatureMethod=e.signatureMethod),x(e.privateKey)&&(t.privateKey="file"===e.privateKeyType?{type:"file",value:e.privateKey}:{type:"text",value:e.privateKey}),x(e.timestamp)&&(t.timestamp=e.timestamp),x(e.nonce)&&(t.nonce=e.nonce),x(e.version)&&(t.version=e.version),x(e.realm)&&(t.realm=e.realm),x(e.placement)&&(t.placement=e.placement),"boolean"==typeof e.includeBodyHash&&(t.includeBodyHash=e.includeBodyHash),t):t})(e.oauth1);case"oauth2":return $(e.oauth2);case"akamai-edgegrid":return(e=>{const t={type:"akamai-edgegrid"};return e?(x(e.accessToken)&&(t.accessToken=e.accessToken),x(e.clientToken)&&(t.clientToken=e.clientToken),x(e.clientSecret)&&(t.clientSecret=e.clientSecret),x(e.nonce)&&(t.nonce=e.nonce),x(e.timestamp)&&(t.timestamp=e.timestamp),x(e.baseURL)&&(t.baseURL=e.baseURL),x(e.headersToSign)&&(t.headersToSign=e.headersToSign),"number"==typeof e.maxBodySize&&(t.maxBodySize=e.maxBodySize),t):t})(e.akamaiEdgegrid);default:return void console.warn(`toOpenCollectionAuth failed: Unsupported auth mode "${e.mode}".`)}}},W=e=>{const t={mode:"none",awsv4:null,basic:null,bearer:null,digest:null,ntlm:null,oauth2:null,wsse:null,apikey:null,akamaiEdgegrid:null};if(!e)return t;if("inherit"===e)return t.mode="inherit",t;if("akamai-edgegrid"===e.type){const r=e;return t.mode="akamai-edgegrid",t.akamaiEdgegrid={accessToken:r.accessToken||"",clientToken:r.clientToken||"",clientSecret:r.clientSecret||"",nonce:r.nonce||"",timestamp:r.timestamp||"",baseURL:r.baseURL||"",headersToSign:r.headersToSign||"",maxBodySize:"number"==typeof r.maxBodySize?r.maxBodySize:null},t}switch(e.type){case"awsv4":t.mode="awsv4",t.awsv4={accessKeyId:e.accessKeyId||null,secretAccessKey:e.secretAccessKey||null,sessionToken:e.sessionToken||null,service:e.service||null,region:e.region||null,profileName:e.profileName||null};break;case"basic":t.mode="basic",t.basic={username:e.username||null,password:e.password||null};break;case"bearer":t.mode="bearer",t.bearer={token:e.token||""};break;case"digest":t.mode="digest",t.digest={username:e.username||null,password:e.password||null};break;case"ntlm":t.mode="ntlm",t.ntlm={username:e.username||null,password:e.password||null,domain:e.domain||null};break;case"wsse":t.mode="wsse",t.wsse={username:e.username||null,password:e.password||null};break;case"apikey":t.mode="apikey",t.apikey={key:e.key||null,value:e.value||null,placement:"query"===e.placement?"queryparams":"header"===e.placement?"header":null};break;case"oauth1":t.mode="oauth1",t.oauth1={consumerKey:e.consumerKey||null,consumerSecret:e.consumerSecret||null,accessToken:e.accessToken||null,accessTokenSecret:e.accessTokenSecret||null,callbackUrl:e.callbackUrl||null,verifier:e.verifier||null,signatureMethod:e.signatureMethod||"HMAC-SHA1",privateKey:("object"==typeof e.privateKey&&e.privateKey?e.privateKey.value:e.privateKey)||null,privateKeyType:"object"==typeof e.privateKey&&e.privateKey?e.privateKey.type:"text",timestamp:e.timestamp||null,nonce:e.nonce||null,version:e.version||"1.0",realm:e.realm||null,placement:e.placement||"header",includeBodyHash:e.includeBodyHash||!1};break;case"oauth2":t.mode="oauth2",t.oauth2=(e=>{if(!e)return null;const t={grantType:"authorization_code",username:null,password:null,callbackUrl:null,authorizationUrl:null,accessTokenUrl:null,clientId:null,clientSecret:null,scope:null,state:null,pkce:!1,credentialsPlacement:null,credentialsId:null,tokenPlacement:null,tokenHeaderPrefix:null,tokenQueryKey:null,tokenSource:"access_token",refreshTokenUrl:null,autoRefreshToken:!1,autoFetchToken:!0,additionalParameters:null};switch(e.flow){case"client_credentials":if(t.grantType="client_credentials",e.accessTokenUrl&&(t.accessTokenUrl=e.accessTokenUrl),e.refreshTokenUrl&&(t.refreshTokenUrl=e.refreshTokenUrl),e.credentials?.clientId&&(t.clientId=e.credentials.clientId),e.credentials?.clientSecret&&(t.clientSecret=e.credentials.clientSecret),e.credentials?.placement&&(t.credentialsPlacement=e.credentials.placement),e.scope&&(t.scope=e.scope),e.tokenConfig?.id&&(t.credentialsId=e.tokenConfig.id),e.tokenConfig?.source&&(t.tokenSource=e.tokenConfig.source||"access_token"),e.tokenConfig?.placement&&("header"in e.tokenConfig.placement?(t.tokenPlacement="header",t.tokenHeaderPrefix=e.tokenConfig.placement.header||""):"query"in e.tokenConfig.placement&&(t.tokenPlacement="url",t.tokenQueryKey=e.tokenConfig.placement.query||"")),e.additionalParameters){const r={};if(e.additionalParameters.accessTokenRequest){const t=H(e.additionalParameters.accessTokenRequest);t&&(r.token=t)}if(e.additionalParameters.refreshTokenRequest){const t=H(e.additionalParameters.refreshTokenRequest);t&&(r.refresh=t)}Object.keys(r).length>0&&(t.additionalParameters=r)}break;case"resource_owner_password_credentials":if(t.grantType="password",e.accessTokenUrl&&(t.accessTokenUrl=e.accessTokenUrl),e.refreshTokenUrl&&(t.refreshTokenUrl=e.refreshTokenUrl),e.credentials?.clientId&&(t.clientId=e.credentials.clientId),e.credentials?.clientSecret&&(t.clientSecret=e.credentials.clientSecret),e.credentials?.placement&&(t.credentialsPlacement=e.credentials.placement),e.resourceOwner?.username&&(t.username=e.resourceOwner.username),e.resourceOwner?.password&&(t.password=e.resourceOwner.password),e.scope&&(t.scope=e.scope),e.tokenConfig?.id&&(t.credentialsId=e.tokenConfig.id),e.tokenConfig?.source&&(t.tokenSource=e.tokenConfig.source||"access_token"),e.tokenConfig?.placement&&("header"in e.tokenConfig.placement?(t.tokenPlacement="header",t.tokenHeaderPrefix=e.tokenConfig.placement.header||""):"query"in e.tokenConfig.placement&&(t.tokenPlacement="url",t.tokenQueryKey=e.tokenConfig.placement.query||"")),e.additionalParameters){const r={};if(e.additionalParameters.accessTokenRequest){const t=H(e.additionalParameters.accessTokenRequest);t&&(r.token=t)}if(e.additionalParameters.refreshTokenRequest){const t=H(e.additionalParameters.refreshTokenRequest);t&&(r.refresh=t)}Object.keys(r).length>0&&(t.additionalParameters=r)}break;case"authorization_code":if(t.grantType="authorization_code",e.authorizationUrl&&(t.authorizationUrl=e.authorizationUrl),e.accessTokenUrl&&(t.accessTokenUrl=e.accessTokenUrl),e.refreshTokenUrl&&(t.refreshTokenUrl=e.refreshTokenUrl),e.callbackUrl&&(t.callbackUrl=e.callbackUrl),e.credentials?.clientId&&(t.clientId=e.credentials.clientId),e.credentials?.clientSecret&&(t.clientSecret=e.credentials.clientSecret),e.credentials?.placement&&(t.credentialsPlacement=e.credentials.placement),e.scope&&(t.scope=e.scope),e.state&&(t.state=e.state),e.tokenConfig?.id&&(t.credentialsId=e.tokenConfig.id),e.tokenConfig?.source&&(t.tokenSource=e.tokenConfig.source||"access_token"),e.tokenConfig?.placement&&("header"in e.tokenConfig.placement?(t.tokenPlacement="header",t.tokenHeaderPrefix=e.tokenConfig.placement.header||""):"query"in e.tokenConfig.placement&&(t.tokenPlacement="url",t.tokenQueryKey=e.tokenConfig.placement.query||"")),e.additionalParameters){const r={};if(e.additionalParameters.authorizationRequest){const t=H(e.additionalParameters.authorizationRequest);t&&(r.authorization=t)}if(e.additionalParameters.accessTokenRequest){const t=H(e.additionalParameters.accessTokenRequest);t&&(r.token=t)}if(e.additionalParameters.refreshTokenRequest){const t=H(e.additionalParameters.refreshTokenRequest);t&&(r.refresh=t)}Object.keys(r).length>0&&(t.additionalParameters=r)}break;case"implicit":if(t.grantType="implicit",e.authorizationUrl&&(t.authorizationUrl=e.authorizationUrl),e.callbackUrl&&(t.callbackUrl=e.callbackUrl),e.credentials?.clientId&&(t.clientId=e.credentials.clientId),e.scope&&(t.scope=e.scope),e.state&&(t.state=e.state),e.tokenConfig?.id&&(t.credentialsId=e.tokenConfig.id),e.tokenConfig?.source&&(t.tokenSource=e.tokenConfig.source||"access_token"),e.tokenConfig?.placement&&("header"in e.tokenConfig.placement?(t.tokenPlacement="header",t.tokenHeaderPrefix=e.tokenConfig.placement.header||""):"query"in e.tokenConfig.placement&&(t.tokenPlacement="url",t.tokenQueryKey=e.tokenConfig.placement.query||"")),e.additionalParameters){const r={};if(e.additionalParameters.authorizationRequest){const t=H(e.additionalParameters.authorizationRequest);t&&(r.authorization=t)}Object.keys(r).length>0&&(t.additionalParameters=r)}break;default:return null}if(void 0!==e.settings?.autoFetchToken&&(t.autoFetchToken=e.settings.autoFetchToken),void 0!==e.settings?.autoRefreshToken&&(t.autoRefreshToken=e.settings.autoRefreshToken),"authorization_code"===t.grantType&&"authorization_code"===e.flow){const r=e;void 0!==r.pkce&&(t.pkce=!r.pkce.disabled)}return null===t.additionalParameters&&delete t.additionalParameters,t})(e);break;default:console.warn("toBrunoAuth failed: Unsupported auth type")}return t},D=e=>{if(!e?.length)return;const t=e.map((e=>{const t={name:e.name||"",value:e.value||""};return e?.description?.trim().length&&(t.description=e.description),!1===e.enabled&&(t.disabled=!0),t}));return t.length?t:void 0},M=e=>{if(!e?.length)return;const t=e.map((e=>({name:e.name||"",value:e.value||""})));return t.length?t:void 0},L=e=>{if(!e?.length)return;const t=e.map((e=>{const t={uid:S(),name:P(e.name),value:P(e.value),enabled:!("disabled"in e)||!0!==e.disabled};return"description"in e&&e.description&&(t.description="string"==typeof e.description?e.description:e.description?.content||""),t}));return t.length?t:void 0},G=e=>{if(!e?.length)return;const t=e.map((e=>{const t={name:e.name||"",value:e.value||"",type:e.type};return e?.description?.trim().length&&(t.description=e.description),!1===e.enabled&&(t.disabled=!0),t}));return t.length?t:void 0},J=e=>{if(!e?.length)return;const t=e.map((e=>{const t={uid:S(),name:P(e.name),value:P(e.value),type:e.type,enabled:!0!==e.disabled};return e.description&&("string"==typeof e.description&&e.description.trim().length?t.description=e.description:"object"==typeof e.description&&e.description.content?.trim().length&&(t.description=e.description.content)),t}));return t.length?t:void 0},X=e=>{if(e)switch(e.mode){case"none":case"graphql":default:return;case"json":return{type:"json",data:e.json||""};case"text":return{type:"text",data:e.text||""};case"xml":return{type:"xml",data:e.xml||""};case"sparql":return{type:"sparql",data:e.sparql||""};case"formUrlEncoded":const t=e.formUrlEncoded?.map((e=>{const t={name:e.name||"",value:e.value||""};return e?.description?.trim().length&&(t.description=e.description),!1===e.enabled&&(t.disabled=!0),t}))||[];return{type:"form-urlencoded",...t.length>0&&{data:t}};case"multipartForm":const r=e.multipartForm?.map((e=>{const t={name:e.name||"",type:e.type,value:e.value||("file"===e.type?[]:"")};return e?.contentType?.trim().length&&(t.contentType=e.contentType),e?.description?.trim().length&&(t.description=e.description),!1===e.enabled&&(t.disabled=!0),t}))||[];return{type:"multipart-form",...r.length>0&&{data:r}};case"file":const s=e.file?.map((e=>{const t={filePath:e.filePath||"",contentType:e.contentType||"",selected:e.selected??!1};return e?.description?.trim().length&&(t.description=e.description),t}))||[];return{type:"file",...s.length>0&&{data:s}}}},V=e=>{if(!e)return{mode:"none",json:null,text:null,xml:null,sparql:null,formUrlEncoded:[],multipartForm:[],graphql:null,file:[]};const t={mode:"none",json:null,text:null,xml:null,sparql:null,formUrlEncoded:[],multipartForm:[],graphql:null,file:[]};switch(e.type){case"json":t.mode="json",t.json=e.data||"";break;case"text":t.mode="text",t.text=e.data||"";break;case"xml":t.mode="xml",t.xml=e.data||"";break;case"sparql":t.mode="sparql",t.sparql=e.data||"";break;case"form-urlencoded":t.mode="formUrlEncoded",t.formUrlEncoded=e.data?.map((e=>{const t={uid:S(),name:P(e.name),value:P(e.value),enabled:!0!==e.disabled};return e.description&&("string"==typeof e.description&&e.description.trim().length?t.description=e.description:"object"==typeof e.description&&e.description.content?.trim().length&&(t.description=e.description.content)),t}))||[];break;case"multipart-form":t.mode="multipartForm",t.multipartForm=e.data?.map((e=>{const t={uid:S(),type:e.type,name:P(e.name),value:"file"===e.type?e.value||[]:P(e.value),contentType:e.contentType||null,enabled:!0!==e.disabled};return e.description&&("string"==typeof e.description&&e.description.trim().length?t.description=e.description:"object"==typeof e.description&&e.description.content?.trim().length&&(t.description=e.description.content)),t}))||[];break;case"file":t.mode="file",t.file=e.data?.map((e=>{const t={uid:S(),filePath:e.filePath||"",contentType:e.contentType||"",selected:e.selected??!1},r=e,s="string"==typeof r.description?r.description:r.description?.content;return s&&s.trim().length&&(t.description=s),t}))||[]}return t},Y=e=>null!==e&&"object"==typeof e?JSON.stringify(e,null,2):u(e),Z=e=>"object"==typeof e&&null!==e&&!Array.isArray(e)&&"type"in e&&"data"in e,ee=e=>!!e.dataType&&"string"!==e.dataType,te=(e,t)=>({type:e.dataType||"string",data:t}),re=e=>{const t="string"==typeof e.data?e.data:String(e.data??""),r=p(e.type)?e.type:"string",s={value:d(t,r)};return"string"!==r&&(s.dataType=r),s},se=e=>{const t=e&&"req"in e?e.req:e,r=Array.isArray(t)?t:[];if(!r.length)return;const s=r.map((e=>{const t=Y(e.value),r={name:e.name||"",value:ee(e)?te(e,t):t};return e?.description?.trim().length&&(r.description=e.description),!1===e.enabled&&(r.disabled=!0),r}));return s.length>0?s:void 0},ne=e=>{if(!e?.length)return{req:[],res:[]};const t=[];return e.forEach((e=>{const r={uid:S(),name:P(e.name),value:"",enabled:!0!==e.disabled,local:!1};Z(e.value)?Object.assign(r,re(e.value)):r.value=P(e.value),e.description&&(r.description="string"==typeof e.description?e.description:e.description?.content||""),t.push(r)})),{req:t,res:[]}},oe=e=>{if(!e?.length)return;const t=e.map((e=>{const t={type:"set-variable",phase:"after-response",selector:{expression:P(e.value),method:"jsonq"},variable:{name:e.name||"",scope:e.local?"request":"runtime"}};return e.description?.trim().length&&(t.description=e.description),!1===e.enabled&&(t.disabled=!0),t}));return t.length>0?t:void 0},ae=e=>{if(!e?.length)return[];const t=[];return e.forEach((e=>{if("set-variable"===e.type&&"after-response"===e.phase){const r=e,s={uid:S(),name:P(r.variable?.name),value:P(r.selector?.expression),enabled:!0!==r.disabled,local:!1};r.description&&(s.description="string"==typeof r.description?r.description:r.description?.content||""),t.push(s)}})),t},ie=e=>{const t=[];return e?.script?.req?.trim().length&&t.push({type:"before-request",code:e.script.req.trim()}),e?.script?.res?.trim().length&&t.push({type:"after-response",code:e.script.res.trim()}),e?.tests?.trim().length&&t.push({type:"tests",code:e.tests.trim()}),t.length>0?t:void 0},ce=e=>{if(!e||!Array.isArray(e)||0===e.length)return;const t={};for(const r of e)"before-request"===r.type&&r.code&&(t.script||(t.script={}),t.script.req=r.code),"after-response"===r.type&&r.code&&(t.script||(t.script={}),t.script.res=r.code),"tests"===r.type&&r.code&&(t.tests=r.code);return Object.keys(t).length>0?t:void 0},le=["eq","neq","gt","gte","lt","lte","in","notIn","contains","notContains","length","matches","notMatches","startsWith","endsWith","between","isEmpty","isNotEmpty","isNull","isUndefined","isDefined","isTruthy","isFalsy","isJson","isNumber","isString","isBoolean","isArray"],ue=["isEmpty","isNotEmpty","isNull","isUndefined","isDefined","isTruthy","isFalsy","isJson","isNumber","isString","isBoolean","isArray"],pe=e=>{if(!e?.length)return;const t=e.map((e=>{const{operator:t,value:r}=((e="")=>{if(!e||"string"!=typeof e||!e.length)return{operator:"eq",value:e};const[t,...r]=e.trim().split(" "),s=r.join(" ");return ue.includes(t)?{operator:t,value:void 0}:le.includes(t)?{operator:t,value:s}:{operator:"eq",value:e}})(e.value||""),s={expression:e.name||"",operator:t,...void 0!==r&&{value:r}};return e?.description?.trim().length&&(s.description=e.description),!1===e.enabled&&(s.disabled=!0),s}));return t.length>0?t:void 0},de=e=>{if(!e?.length)return;const t=e.map((e=>{let t=P(e.operator);void 0!==e.value&&null!==e.value&&(t=`${e.operator} ${P(e.value)}`);const r={uid:S(),name:P(e.expression),value:t,enabled:!0!==e.disabled};return e.description&&("string"==typeof e.description&&e.description.trim().length?r.description=e.description:"object"==typeof e.description&&e.description.content?.trim().length&&(r.description=e.description.content)),r}));return t.length>0?t:void 0},{toBool:me,toNumber:he}=h,{toBool:ge,toNumber:ye}=h,fe=e=>{if(!e?.length)return;const t=e.map((e=>{const t={uid:S(),name:P(e.name),value:P(e.value),enabled:!0!==e.disabled};if(e.description){const r="string"==typeof e.description?e.description:e.description?.content||"";r.trim().length&&(t.description=r)}return t}));return t.length?t:void 0},qe=e=>{try{const s=(e=>{const t=e?.info?.type;switch(t){case"http":e.runtime?.auth&&!e.http?.auth&&(e.http.auth=e.runtime.auth);break;case"graphql":e.runtime?.auth&&!e.graphql?.auth&&(e.graphql.auth=e.runtime.auth);break;case"grpc":e.runtime?.auth&&!e.grpc?.auth&&(e.grpc.auth=e.runtime.auth);break;case"websocket":e.runtime?.auth&&!e.websocket?.auth&&(e.websocket.auth=e.runtime.auth)}return e})(N(e)),n="info"in(r=s)&&r.info&&"type"in r.info?r.info.type:"type"in r?r.type:void 0;if(!s||!n)throw new Error("Invalid item: missing type");switch(n){case"http":return(e=>{const t=e.info,r=e.http,s=e.runtime,n={url:P(r?.url),method:P(r?.method,"GET"),headers:L(r?.headers)||[],params:J(r?.params)||[],auth:W(r?.auth),body:V(r?.body)||{mode:"none",json:null,text:null,xml:null,sparql:null,formUrlEncoded:[],multipartForm:[],graphql:null,file:[]},script:{req:null,res:null},vars:{req:[],res:[]},assertions:[],tests:null,docs:null},o=ce(s?.scripts);o?.script&&n.script&&(o.script.req&&(n.script.req=o.script.req),o.script.res&&(n.script.res=o.script.res)),o?.tests&&(n.tests=o.tests);const a=ne(s?.variables),i=ae(s?.actions);n.vars={req:a.req,res:i};const c=de(s?.assertions);c&&(n.assertions=c),e.docs&&(n.docs=e.docs);const l=(e=>e?{enabled:!0===e.enabled,code:e.code||null}:null)(e.app),u={uid:S(),type:"http-request",seq:t?.seq||1,name:P(t?.name,"Untitled Request"),tags:t?.tags||[],request:n,settings:null,app:l,fileContent:null,root:null,items:[],examples:[],filename:null,pathname:null};if(t?.description){const e="string"==typeof t.description?t.description:t.description?.content||"";e.trim().length&&(u.description=e)}if(e.settings){const t={};t.encodeUrl=me(e.settings.encodeUrl,!0),"number"==typeof e.settings.timeout?t.timeout=e.settings.timeout:"inherit"===e.settings.timeout?t.timeout="inherit":t.timeout=0,t.followRedirects=me(e.settings.followRedirects,!0),t.maxRedirects=he(e.settings.maxRedirects,5),t.forwardAuthorizationHeader=me(e.settings.forwardAuthorizationHeader,!0),u.settings=t}return e.examples?.length&&(u.examples=e.examples.map((e=>{const t={uid:S(),itemUid:S(),name:P(e.name,"Untitled Example"),type:"http-request",request:null,response:null};return e.description&&("string"==typeof e.description&&e.description.trim().length?t.description=e.description:"object"==typeof e.description&&e.description.content?.trim().length&&(t.description=e.description.content)),e.request&&(t.request={url:P(e.request.url),method:P(e.request.method,"GET"),headers:L(e.request.headers)||[],params:J(e.request.params)||[],body:V(e.request.body)||{mode:"none",json:null,text:null,xml:null,sparql:null,formUrlEncoded:null,multipartForm:null,graphql:null,file:null}}),e.response&&(t.response={status:"number"==typeof e.response.status?e.response.status:void 0!==e.response.status?Number(e.response.status):null,statusText:e.response.statusText||null,headers:L(e.response.headers)||[],body:null},e.response.body&&(t.response.body={type:e.response.body.type||"text",content:e.response.body.data||""})),t}))),u})(s);case"graphql":return(e=>{const t=e.info,r=e.graphql,s=e.runtime,n={url:P(r?.url),method:P(r?.method,"POST"),headers:L(r?.headers)||[],params:J(r?.params)||[],auth:W(r?.auth),body:{mode:"graphql",json:null,text:null,xml:null,sparql:null,formUrlEncoded:[],multipartForm:[],graphql:{query:r?.body?.query||"",variables:r?.body?.variables||""},file:[]},script:{req:null,res:null},vars:{req:[],res:[]},assertions:[],tests:null,docs:null},o=ce(s?.scripts);o?.script&&n.script&&(o.script.req&&(n.script.req=o.script.req),o.script.res&&(n.script.res=o.script.res)),o?.tests&&(n.tests=o.tests);const a=ne(s?.variables),i=ae(s?.actions);n.vars={req:a.req,res:i};const c=de(s?.assertions);c&&(n.assertions=c),e.docs&&(n.docs=e.docs);const l={uid:S(),type:"graphql-request",seq:t?.seq||1,name:P(t?.name,"Untitled Request"),tags:t?.tags||[],request:n,settings:null,fileContent:null,root:null,items:[],examples:[],filename:null,pathname:null};if(t?.description){const e="string"==typeof t.description?t.description:t.description?.content||"";e.trim().length&&(l.description=e)}if(e.settings){const t={};t.encodeUrl=ge(e.settings.encodeUrl,!0),"number"==typeof e.settings.timeout?t.timeout=e.settings.timeout:"inherit"===e.settings.timeout?t.timeout="inherit":t.timeout=0,t.followRedirects=ge(e.settings.followRedirects,!0),t.maxRedirects=ye(e.settings.maxRedirects,5),t.forwardAuthorizationHeader=ge(e.settings.forwardAuthorizationHeader,!0),l.settings=t}return l})(s);case"grpc":return(e=>{const t=e.info,r=e.grpc,s=e.runtime,n={url:P(r?.url),method:P(r?.method),methodType:r?.methodType||"",protoPath:r?.protoFilePath||null,headers:fe(r?.metadata)||[],auth:W(r?.auth),body:{mode:"grpc",grpc:[]},script:{req:null,res:null},vars:{req:[],res:[]},assertions:[],tests:null,docs:null},o=r?.message;Array.isArray(o)?n.body.grpc=o.map((({title:e,message:t},r)=>({name:e||`message ${r+1}`,content:P(t)}))):U(o)&&(n.body.grpc=[{name:"",content:o}]);const a=ce(s?.scripts);a?.script&&n.script&&(a.script.req&&(n.script.req=a.script.req),a.script.res&&(n.script.res=a.script.res)),a?.tests&&(n.tests=a.tests);const i=ne(s?.variables);n.vars=i;const c=de(s?.assertions);c&&(n.assertions=c),e.docs&&(n.docs=e.docs);const l={uid:S(),type:"grpc-request",seq:t?.seq||1,name:P(t?.name,"Untitled Request"),tags:t?.tags||[],request:n,settings:{},fileContent:null,root:null,items:[],examples:[],filename:null,pathname:null};if(t?.description){const e="string"==typeof t.description?t.description:t.description?.content||"";e.trim().length&&(l.description=e)}return l})(s);case"websocket":return(e=>{const t=e.info,r=e.websocket,s=e.runtime,n={url:P(r?.url),headers:L(r?.headers)||[],auth:W(r?.auth),body:{mode:"ws",ws:[]},script:{req:null,res:null},vars:{req:[],res:[]},assertions:[],tests:null,docs:null};if(r?.message)if(Array.isArray(r.message)){const e=r.message;n.body.ws=e.map(((e,t)=>({name:e.title||`message ${t+1}`,type:e.message?.type||"text",content:P(e.message?.data),selected:e.selected||!1})))}else{const e=r.message,t=P(e.data);t.trim().length&&(n.body.ws=[{name:"",type:e.type||"text",content:t}])}const o=ce(s?.scripts);o?.script&&n.script&&(o.script.req&&(n.script.req=o.script.req),o.script.res&&(n.script.res=o.script.res)),o?.tests&&(n.tests=o.tests);const a=ne(s?.variables);n.vars=a,e.docs&&(n.docs=e.docs);const i={timeout:0,keepAliveInterval:0};e.settings&&("number"==typeof e.settings.timeout&&(i.timeout=e.settings.timeout),"number"==typeof e.settings.keepAliveInterval&&(i.keepAliveInterval=e.settings.keepAliveInterval));const c={uid:S(),type:"ws-request",seq:t?.seq||1,name:P(t?.name,"Untitled Request"),tags:t?.tags||[],request:n,settings:i,fileContent:null,root:null,items:[],examples:[],filename:null,pathname:null};if(t?.description){const e="string"==typeof t.description?t.description:t.description?.content||"";e.trim().length&&(c.description=e)}return c})(s);case"script":return t=s,{uid:S(),type:"js",seq:1,name:"Script",tags:[],request:null,settings:null,fileContent:t.script||"",root:null,items:[],examples:[],filename:null,pathname:null};case"app":return(e=>{const t=e.info||{};return{uid:S(),type:"app",seq:"number"==typeof t.seq?t.seq:1,name:t.name||"App",tags:Array.isArray(t.tags)?t.tags:[],request:null,settings:null,app:{code:e.code||""},fileContent:null,root:null,items:[],examples:[],filename:null,pathname:null}})(s);case"folder":throw new Error("Folder items should be handled separately using parseFolder");default:throw new Error(`Unsupported item type: ${n}`)}}catch(e){throw console.error("Error parsing item:",e),e}var t,r},be="yml",ke={"aws-secrets-manager":"secretName","azure-key-vault":"vaultName","gcp-secrets-manager":"projectId","hashicorp-vault-cloud":"path","hashicorp-vault-server":"path"},ve=e=>{try{const r=N(e),s={uid:S(),name:P(r.name,"Untitled Environment"),variables:(t=r.variables,t?.length?t.map((e=>{if((e=>"secret"in e&&!0===e.secret)(e)){const t={uid:S(),name:P(e.name),value:"",type:"text",enabled:!0!==e.disabled,secret:!0};return e.type&&"string"!==e.type&&"null"!==e.type&&(t.dataType=e.type),e.description&&(t.description="string"==typeof e.description?e.description:e.description?.content||""),t}const t={uid:S(),name:P(e.name),value:"",type:"text",enabled:!0!==e.disabled,secret:!1};return Z(e.value)?Object.assign(t,re(e.value)):t.value=P(e.value),e.description&&(t.description="string"==typeof e.description?e.description:e.description?.content||""),t})):[]),color:r.color||null},n=(e=>{if(!e||"object"!=typeof e)return;const t=P(e.type),r=ke[t];if(!r)return;return{type:t,variables:Array.isArray(e.variables)?e.variables.filter((e=>e&&e.name)).map((e=>({uid:S(),name:P(e.name),enabled:!0!==e.disabled,[r]:P(e[r])}))):[]}})(r.externalSecrets);return n&&(s.externalSecrets=n),s}catch(e){throw console.error("Error parsing environment:",e),e}var t},we=e=>{const t=Number(e?.response?.status)||200,r=P(e?.response?.statusText),s={name:P(e?.name,"Untitled Mock Response"),description:P(e?.description),request:{url:P(e?.request?.url,"/"),method:P(e?.request?.method,"GET"),headers:L(e?.request?.headers)||[],params:J(e?.request?.params)||[],body:V(e?.request?.body)||{mode:"none",json:null,text:null,xml:null,sparql:null,formUrlEncoded:null,multipartForm:null,graphql:null,file:null}},response:{status:t,statusText:"OK"===r&&200!==t?"":r,headers:L(e?.response?.headers)||[],body:{type:P(e?.response?.body?.type,"json"),content:P(e?.response?.body?.data)}},rules:{operator:"OR"===e?.rules?.operator?"OR":"AND",conditions:(n=e?.rules?.conditions,Array.isArray(n)?n.map((e=>({target:P(e?.target),key:P(e?.key),operator:P(e?.operator,"equals"),value:P(e?.value)}))):[])}};var n;const o=e?.copiedFrom?.example,a=e?.copiedFrom?.requestPath,i=U(o)?o:null,c=U(a)?a:null;return(i||c)&&(s.copiedFrom={exampleName:i,requestPathname:c}),s},xe=e=>{try{switch(e.type){case"http-request":return(e=>{try{const t={},r=e.request,s={name:U(e.name)?e.name:"Untitled Request",type:"http"};e.seq&&(s.seq=e.seq),e.tags?.length&&(s.tags=e.tags),U(e.description)&&(s.description=e.description),t.info=s;const n={method:U(r.method)?r.method:"GET",url:U(r.url)?r.url:""},o=D(r.headers);o&&(n.headers=o);const a=G(r.params);a&&(n.params=a);const i=X(r.body);i&&(n.body=i);const c=Q(r.auth);c&&(n.auth=c),t.http=n;const l={};let u=!1;const p=se(r.vars);p&&(l.variables=p,u=!0);const d=ie(r);d&&(l.scripts=d,u=!0);const h=pe(r.assertions);h&&(l.assertions=h,u=!0);const g=r.vars?.res,y=oe(g);y&&(l.actions=y,u=!0),u&&(t.runtime=l);const f=e.settings,q={};q.encodeUrl=!0===f?.encodeUrl||!1!==f?.encodeUrl,q.timeout=m(f?.timeout),q.followRedirects=!0===f?.followRedirects||!1!==f?.followRedirects;const b=f?.maxRedirects;if(T(b)?q.maxRedirects=b:q.maxRedirects=5,q.forwardAuthorizationHeader=f?.forwardAuthorizationHeader??!0,t.settings=q,e.examples?.length){const r=e.examples.map((e=>{const t={};if(t.name=e?.name||"Untitled Example",U(e.description)&&(t.description=e.description),e.request){t.request={},t.request.url=e.request.url||"",t.request.method=e.request.method||"GET";const r=D(e.request.headers);r&&(t.request.headers=r);const s=G(e.request.params);s&&(t.request.params=s);const n=X(e.request.body);void 0!==n&&(t.request.body=n)}if(e.response){t.response={};const r=Number(e.response.status);Number.isInteger(r)&&r>0&&(t.response.status=r),U(e.response.statusText)&&(t.response.statusText=e.response.statusText);const s=M(e.response.headers);if(s&&(t.response.headers=s),e.response.body&&e.response.body.type&&void 0!==e.response.body.content){const r=e.response.body.content,s="string"==typeof r?r:JSON.stringify(r,null,2);t.response.body={type:e.response.body.type,data:s}}}return t}));r?.length&&(t.examples=r)}U(r.docs)&&(t.docs=r.docs);const k=(e=>{if(!e||!e.code&&!0!==e.enabled)return;const t={};return!0===e.enabled&&(t.enabled=!0),e.code&&(t.code=e.code),t})(e.app);return k&&(t.app=k),A(t)}catch(e){throw console.error("Error stringifying HTTP request:",e),e}})(e);case"graphql-request":return(e=>{try{const t={},r=e.request,s={name:U(e.name)?e.name:"Untitled Request",type:"graphql"};e.seq&&(s.seq=e.seq),e.tags?.length&&(s.tags=e.tags),U(e.description)&&(s.description=e.description),t.info=s;const n={method:U(r.method)?r.method:"POST",url:U(r.url)?r.url:""},o=D(r.headers);o&&(n.headers=o);const a=G(r.params);if(a&&(n.params=a),"graphql"===r.body?.mode&&r.body.graphql){const e={};let t=!1;U(r.body.graphql.query)&&(e.query=r.body.graphql.query,t=!0),U(r.body.graphql.variables)&&(e.variables=r.body.graphql.variables,t=!0),t&&(n.body=e)}const i=Q(r.auth);i&&(n.auth=i),t.graphql=n;const c={};let l=!1;const u=se(r.vars);u&&(c.variables=u,l=!0);const p=ie(r);p&&(c.scripts=p,l=!0);const d=pe(r.assertions);d&&(c.assertions=d,l=!0);const h=r.vars?.res,g=oe(h);g&&(c.actions=g,l=!0),l&&(t.runtime=c);const y=e.settings,f={};f.encodeUrl=!0===y?.encodeUrl||!1!==y?.encodeUrl,f.timeout=m(y?.timeout),f.followRedirects=!0===y?.followRedirects||!1!==y?.followRedirects;const q=y?.maxRedirects;return T(q)?f.maxRedirects=q:f.maxRedirects=5,f.forwardAuthorizationHeader=y?.forwardAuthorizationHeader??!0,t.settings=f,U(r.docs)&&(t.docs=r.docs),A(t)}catch(e){throw console.error("Error stringifying GraphQL request:",e),e}})(e);case"grpc-request":return(e=>{try{const t={},r=e.request,s={name:U(e.name)?e.name:"Untitled Request",type:"grpc"};e.seq&&(s.seq=e.seq),e.tags?.length&&(s.tags=e.tags),U(e.description)&&(s.description=e.description),t.info=s;const n={url:U(r.url)?r.url:"",method:U(r.method)?r.method:""};if(r.methodType&&(n.methodType=r.methodType),U(r.protoPath)&&(n.protoFilePath=r.protoPath),r.headers?.length){const e=r.headers.map((e=>{const t={name:e.name||"",value:e.value||""};return e?.description?.trim().length&&(t.description=e.description),!1===e.enabled&&(t.disabled=!0),t}));e.length&&(n.metadata=e)}if("grpc"===r.body?.mode&&r.body.grpc?.length){const e=r.body.grpc.map((({name:e,content:t},r)=>({title:e||`message ${r+1}`,message:t||""})));n.message=e}const o=Q(r.auth);o&&(n.auth=o),t.grpc=n;const a={};let i=!1;const c=se(r.vars);c&&(a.variables=c,i=!0);const l=ie(r);l&&(a.scripts=l,i=!0);const u=pe(r.assertions);return u&&(a.assertions=u,i=!0),i&&(t.runtime=a),U(r.docs)&&(t.docs=r.docs),A(t)}catch(e){throw console.error("Error stringifying gRPC request:",e),e}})(e);case"ws-request":return(e=>{try{const t={},r=e.request,s={name:U(e.name)?e.name:"Untitled Request",type:"websocket"};e.seq&&(s.seq=e.seq),e.tags?.length&&(s.tags=e.tags),U(e.description)&&(s.description=e.description),t.info=s;const n={url:U(r.url)?r.url:""},o=D(r.headers);if(o&&(n.headers=o),"ws"===r.body?.mode&&r.body.ws?.length){const e=r.body.ws,t=1===e.length&&e[0].name&&e[0].name.trim().length>0,s=1===e.length&&(e[0].content||"").trim().length>0;if(1===e.length&&!t&&s){const t=e[0],r={type:t.type||"text",data:t.content||""};n.message=r}else{const t=e.map(((e,t)=>({title:e.name||`message ${t+1}`,selected:e.selected||!1,message:{type:e.type||"text",data:e.content||""}})));n.message=t}}const a=Q(r.auth);a&&(n.auth=a),t.websocket=n;const i={};let c=!1;const l=se(r.vars);l&&(i.variables=l,c=!0);const u=ie(r);u&&(i.scripts=u,c=!0),c&&(t.runtime=i);const p=e.settings;if(p){t.settings={};const e=Number(p.timeout);t.settings.timeout=isNaN(e)?0:e;const r=Number(p.keepAliveInterval);t.settings.keepAliveInterval=isNaN(r)?0:r}return U(r.docs)&&(t.docs=r.docs),A(t)}catch(e){throw console.error("Error stringifying WebSocket request:",e),e}})(e);case"js":return(e=>{try{const t={type:"script"};return e.fileContent?.trim().length&&(t.script=e.fileContent),A(t)}catch(e){throw console.error("Error stringifying script:",e),e}})(e);case"app":return(e=>{try{const t={name:e.name&&e.name.trim().length?e.name:"App",type:"app"};"number"==typeof e.seq&&(t.seq=e.seq),Array.isArray(e.tags)&&e.tags.length&&(t.tags=e.tags);const r={info:t},s=e.app?.code;return s&&s.trim().length&&(r.code=s),A(r)}catch(e){throw console.error("Error stringifying app:",e),e}})(e);case"folder":throw new Error("Folder items should be handled separately using stringifyFolder");default:throw new Error(`Unsupported item type: ${e.type}`)}}catch(e){throw console.error("Error stringifying item:",e),e}},Te=e=>Boolean("none"!==e.request?.auth?.mode),Ue=e=>Boolean(e.request?.script?.req||e.request?.script?.res||e.request?.tests),Pe=e=>{try{const t={},r={name:e.meta?.name||"Untitled Folder",type:"folder"},s=e.meta?.seq;if("number"==typeof s&&Number.isFinite(s)&&(r.seq=s),t.info=r,(e=>{const t=e?.request;return Boolean(t?.headers?.length||t?.vars?.req?.length||t?.vars?.res?.length||Ue(e)||Te(e))})(e)){if(t.request={},e.request?.headers?.length){const r=D(e.request?.headers);r&&(t.request.headers=r)}if(Te(e)){const r=Q(e.request?.auth);r&&(t.request.auth=r)}if(e.request?.vars?.req?.length){const r=se(e.request?.vars);r&&(t.request.variables=r)}if(e.request?.vars?.res?.length){const r=oe(e.request?.vars?.res);r&&(t.request.actions=r)}if(Ue(e)){const r=ie(e?.request);r&&(t.request.scripts=r)}}return e.docs?.trim().length&&(t.docs={content:e.docs,type:"text/markdown"}),A(t)}catch(e){throw console.error("Error stringifying folder.yml:",e),e}},Se=e=>{const t=e?.request?.auth?.mode;return Boolean(t&&"none"!==t)},Re=e=>!!e?.request&&(e.request.script?.req||e.request.script?.res||e.request.tests),Ce=e=>e?.presets?.requestType?.length||e?.presets?.requestUrl?.length||e?.presets?.defaultEnvironment?.length,Ee=(e,t)=>{try{const r={opencollection:"1.0.0"};if(r.info={name:t.name||"Untitled Collection"},null!=t.version&&""!==t.version&&(r.info.version=String(t.version)),(e=>{const t=e.protobuf?.protoFiles?.length>0||e.protobuf?.importPaths?.length>0,r=e.proxy&&"object"==typeof e.proxy&&"inherit"in e.proxy&&e.proxy.config&&"object"==typeof e.proxy.config,s=e.clientCertificates?.certs?.length>0;return t||r||s})(t)){r.config={},(t.protobuf?.protoFiles?.length||t.protobuf?.importPaths?.length)&&(r.config.protobuf={},t.protobuf.protoFiles?.length&&(r.config.protobuf.protoFiles=t.protobuf.protoFiles.map((e=>({type:"file",path:e.path})))),t.protobuf.importPaths?.length&&(r.config.protobuf.importPaths=t.protobuf.importPaths.map((e=>{const t={path:e.path};return!1===e.enabled&&(t.disabled=!0),t}))));t.proxy&&"object"==typeof t.proxy&&"inherit"in t.proxy&&t.proxy.config&&"object"==typeof t.proxy.config&&(r.config.proxy={inherit:t.proxy.inherit,config:{protocol:t.proxy.config.protocol||"http",hostname:t.proxy.config.hostname||"",port:t.proxy.config.port||"",auth:{username:t.proxy.config.auth?.username||"",password:t.proxy.config.auth?.password||""},bypassProxy:t.proxy.config.bypassProxy||""}},!0===t.proxy.disabled&&(r.config.proxy.disabled=!0),!0===t.proxy.config?.auth?.disabled&&r.config.proxy.config&&r.config.proxy.config.auth&&(r.config.proxy.config.auth.disabled=!0)),t.clientCertificates?.certs?.length&&(r.config.clientCertificates=t.clientCertificates.certs.map((e=>{if("cert"===e.type){return{domain:e.domain,type:"pem",certificateFilePath:e.certFilePath,privateKeyFilePath:e.keyFilePath,...e.passphrase&&{passphrase:e.passphrase},...!0===e.disabled&&{disabled:!0}}}if("pfx"===e.type){return{domain:e.domain,type:"pkcs12",pkcs12FilePath:e.pfxFilePath,...e.passphrase&&{passphrase:e.passphrase},...!0===e.disabled&&{disabled:!0}}}return null})).filter((e=>null!==e)))}if((e=>{const t=e?.request;return Boolean(t?.headers?.length||t?.vars?.req?.length||t?.vars?.res?.length||Re(e)||Se(e))})(e)){if(r.request={},e.request?.headers?.length){const t=D(e.request?.headers);t&&(r.request.headers=t)}if(Se(e)){const t=Q(e.request?.auth);t&&(r.request.auth=t)}if(e.request?.vars?.req?.length){const t=se(e.request?.vars);t&&(r.request.variables=t)}if(e.request?.vars?.res?.length){const t=oe(e.request?.vars?.res);t&&(r.request.actions=t)}if(Re(e)){const t=ie(e.request);t&&(r.request.scripts=t)}}e?.docs?.trim().length&&(r.docs={content:e.docs,type:"text/markdown"}),r.bundled=!1,r.extensions={};if(t.ignore?.length||Ce(t)){const e={};if(t.ignore?.length){const r=[];t.ignore.forEach((e=>{r.push(e)})),e.ignore=r}if(Ce(t)){const r={},s={};t.presets.requestType?.length&&(s.type=t.presets.requestType),t.presets.requestUrl?.length&&(s.url=t.presets.requestUrl),Object.keys(s).length&&(r.request=s),t.presets.defaultEnvironment?.length&&(r.defaultEnvironment=t.presets.defaultEnvironment),e.presets=r}r.extensions.bruno=e}const s={};return t.scripts?.additionalContextRoots?.length&&(s.additionalContextRoots=t.scripts.additionalContextRoots),"sandwich"!==t.scripts?.flow&&"sequential"!==t.scripts?.flow||(s.flow=t.scripts.flow),Object.keys(s).length>0&&(r.extensions.bruno||(r.extensions.bruno={}),r.extensions.bruno.scripts=s),Array.isArray(t.openapi)&&t.openapi.length>0&&(r.extensions.bruno||(r.extensions.bruno={}),r.extensions.bruno.openapi=t.openapi.map((e=>({sourceUrl:e.sourceUrl,groupBy:e.groupBy,...e.lastSyncDate&&{lastSyncDate:e.lastSyncDate},...e.specHash&&{specHash:e.specHash},autoCheck:!1!==e.autoCheck,autoCheckInterval:e.autoCheckInterval||5})))),A(r)}catch(e){throw console.error("Error stringifying opencollection.yml:",e),e}},_e=e=>{try{const t={name:e.name};if(e.color&&(t.color=e.color),e.variables?.length){const r=(e=>{if(!e?.length)return;const t=e.map((e=>{if("secret"in e&&!0===e.secret){const t={secret:!0,name:e.name||""};return ee(e)&&(t.type=e.dataType),!1===e.enabled&&(t.disabled=!0),void 0!==e.description&&(t.description=e.description),t}const t=Y(e.value),r={name:e.name||"",value:ee(e)?te(e,t):t};return!1===e.enabled&&(r.disabled=!0),void 0!==e.description&&(r.description=e.description),r}));return t.length>0?t:void 0})(e.variables);r&&(t.variables=r)}const r=(e=>{const t=e?.type,r=t&&ke[t];if(!t||!r)return;return{type:t,variables:(e?.variables||[]).filter((e=>e&&e.name)).map((e=>{const t={name:e.name,[r]:P(e[r])};return!1===e.enabled&&(t.disabled=!0),t}))}})(e.externalSecrets);return r&&(t.externalSecrets=r),A(t)}catch(e){throw console.error("Error stringifying environment:",e),e}},je=e=>{const t={name:e.name||"Untitled Mock Response"};U(e.description)&&(t.description=e.description),t.request={method:e.request?.method||"GET",url:e.request?.url||"/"};const r=D(e.request?.headers);r&&(t.request.headers=r);const s=G(e.request?.params);s&&(t.request.params=s);const n=X(e.request?.body);void 0===n||Array.isArray(n)||(t.request.body=n),t.response={status:Number(e.response?.status)||200},U(e.response?.statusText)&&(t.response.statusText=e.response.statusText);const o=M(e.response?.headers);o&&(t.response.headers=o);const a=e.response?.body;if(a&&a.type){const e=a.content;t.response.body={type:a.type,data:"string"==typeof e?e:JSON.stringify(e,null,2)}}var i;return e.rules?.conditions?.length&&(t.rules={operator:"OR"===e.rules.operator?"OR":"AND",conditions:(i=e.rules.conditions,i.map((e=>({target:e.target||"",key:e.key||"",operator:e.operator||"equals",value:e.value||""}))))}),e.copiedFrom&&(e.copiedFrom.exampleName||e.copiedFrom.requestPathname)&&(t.copiedFrom={},e.copiedFrom.exampleName&&(t.copiedFrom.example=e.copiedFrom.exampleName),e.copiedFrom.requestPathname&&(t.copiedFrom.requestPath=e.copiedFrom.requestPathname)),t};class Ae{constructor(){this.queue=[],this.isProcessing=!1,this.workers={}}async getWorkerForScriptPath(e){this.workers||(this.workers={});let t=this.workers[e];return t&&-1!==t.threadId||(this.workers[e]=t=new g(e)),t}async enqueue(e){const{priority:t,scriptPath:r,data:s,taskType:n}=e;return new Promise(((e,o)=>{this.queue.push({priority:t,scriptPath:r,data:s,taskType:n,resolve:e,reject:o}),this.queue?.sort(((e,t)=>e?.priority-t?.priority)),this.processQueue()}))}async processQueue(){if(this.isProcessing||0===this.queue.length)return;this.isProcessing=!0;const{scriptPath:e,data:t,taskType:r,resolve:s,reject:n}=this.queue.shift();try{const n=await this.runWorker({scriptPath:e,data:t,taskType:r});s?.(n)}catch(e){n?.(e)}finally{this.isProcessing=!1,this.processQueue()}}async runWorker({scriptPath:e,data:t,taskType:r}){return new Promise((async(s,n)=>{let o=await this.getWorkerForScriptPath(e);const a=e=>{o.off("message",a),o.off("error",i),o.off("exit",c),e?.error?n(new Error(e?.error)):s(e)},i=e=>{o.off("message",a),o.off("error",i),o.off("exit",c),n(e)},c=t=>{o.off("message",a),o.off("error",i),o.off("exit",c),delete this.workers[e],n(new Error(`Worker stopped with exit code ${t}`))};o.on("message",a),o.on("error",i),o.on("exit",c),o.postMessage({taskType:r,data:t})}))}async cleanup(){const e=Object.values(this.workers).map((e=>-1!==e.threadId?e.terminate():Promise.resolve()));await Promise.allSettled(e),this.workers={}}}const Ne=[{maxSize:.005},{maxSize:.1},{maxSize:1},{maxSize:10},{maxSize:100}];class Fe{constructor(){this.workerQueues=Ne?.map((e=>({maxSize:e?.maxSize,workerQueue:new Ae})))}getWorkerQueue(e){const t=this.workerQueues.find((t=>t.maxSize>=e));return t?.workerQueue??this.workerQueues[this.workerQueues.length-1].workerQueue}async enqueueTask({data:e,taskType:t,format:r=be}){const s=(e=>("string"==typeof e?Buffer.byteLength(e,"utf8"):Buffer.byteLength(JSON.stringify(e),"utf8"))/1048576)(e),n=this.getWorkerQueue(s),o=y.join(__dirname,"./workers/worker-script.js");return n.enqueue({data:{data:e,format:r},priority:s,scriptPath:o,taskType:t})}async parseRequest(e,t=be){return this.enqueueTask({data:e,taskType:"parse",format:t})}async stringifyRequest(e,t=be){return this.enqueueTask({data:e,taskType:"stringify",format:t})}async parseFolder(e,t=be){return this.enqueueTask({data:e,taskType:"parseFolder",format:t})}async stringifyFolder(e,t=be){return this.enqueueTask({data:e,taskType:"stringifyFolder",format:t})}async parseEnvironment(e,t=be){return this.enqueueTask({data:e,taskType:"parseEnvironment",format:t})}async stringifyEnvironment(e,t=be){return this.enqueueTask({data:e,taskType:"stringifyEnvironment",format:t})}async cleanup(){const e=this.workerQueues.map((({workerQueue:e})=>e.cleanup()));await Promise.allSettled(e)}}const Ie=new RegExp(`^(${["body:graphql:vars","body:graphql","body:json","body:text","body:xml","body:sparql","script:pre-request","script:post-response","tests","docs","body"].join("|")})[ \\t]*\\{\\r?$`),ze=e=>Ie.test(e),Ke=e=>e.startsWith("}"),Oe=e=>`__BRU_REDACTED_TEXT_BLOCK_${f("sha256").update(e).digest("hex").slice(0,16)}__`,Be=e=>i(e.join("\n").replace(/^(?:\r?\n)+/,"").replace(/\r$/,"")),$e=/^app[ \t]*\{\r?$/,He=e=>{const t=e||"",r=[],s=[];let n=null,o=[];for(const e of((e,t)=>{const r=e.split("\n"),s=r.findIndex((e=>$e.test(e)));if(-1===s)return e;const n=r.findIndex(((e,t)=>t>s&&Ke(e))),o=-1===n?r.length:n,a=r.findIndex(((e,t)=>t>s&&t<o&&"code: '''"===e.trim()));if(-1===a)return e;const i=r.findIndex(((e,t)=>t>a&&t<o&&"'''"===e.trim()));if(-1===i)return e;const c=r.slice(a+1,i),l=(e=>e.map((e=>e.slice(4))).join("\n").trim())(c);if(!l.length)return e;const u=Oe(c.join("\n"));return t.push({token:u,value:l}),[...r.slice(0,a+1),` ${u}`,...r.slice(i)].join("\n")})(t,s).split("\n"))if(null===n&&ze(e))n=e,o=[];else if(null!==n&&Ke(e)){const t=Oe(o.join("\n"));s.push({token:t,value:Be(o)}),r.push(n,` ${t}`,e),n=null}else(null===n?r:o).push(e);return null!==n&&r.push(n,...o),s.some((e=>t.includes(e.token)))?(console.warn("[bruno-filestore] Token collision detected; skipping redaction"),{skeleton:t,blocks:[]}):{skeleton:r.join("\n"),blocks:s}},Qe=(e,t)=>{if(!t.length)return e;const r=new Map(t.map((e=>[e.token,e.value]))),s=e=>{if("string"==typeof e)return r.get(e)??e;if(e&&"object"==typeof e)for(const t of Object.keys(e))e[t]=s(e[t]);return e};return s(e)},We=({secretsJsonData:e,environments:t})=>{const r=(e=>{const t=e?.type;return"aws-secrets-manager"===t?"aws-secrets-manager":"azure-key-vault"===t?"azure-key-vault":"vault"===t?"vault-cloud"===e?.cli?.type?"hashicorp-vault-cloud":"hashicorp-vault-server":null})(e);return t.map((t=>{const s={name:t.name,environment:t,changed:!1};if(t.externalSecrets||!r)return s;const n=e?.data?.find((e=>e?.environment===t.name)),o=((e,t)=>{if("aws-secrets-manager"===t)return{type:t,variables:(e||[]).filter((e=>e?.name&&"string"==typeof e.secretName&&e.secretName.length>0)).map((e=>({uid:S(),name:e.name,secretName:e.secretName,enabled:!1!==e.enabled})))};if("azure-key-vault"===t)return{type:t,variables:(e||[]).filter((e=>e?.name&&"string"==typeof e.vaultName&&e.vaultName.length>0)).map((e=>({uid:S(),name:e.name,vaultName:e.vaultName,enabled:!1!==e.enabled})))};if("hashicorp-vault-cloud"===t||"hashicorp-vault-server"===t)return{type:t,variables:(e||[]).filter((e=>e?.name&&"string"==typeof e.path&&e.path.length>0)).map((e=>({uid:S(),name:e.name,path:e.path,enabled:!1!==e.enabled})))};return null})(n?.secrets,r);return o?{name:t.name,environment:{...t,externalSecrets:o},changed:!0}:s}))},De=(r,s={format:be})=>{if("bru"===s.format)return((r,s=!1)=>{try{const n=s?r:t(r);if("app"===e.get(n,"meta.type")){const t=e.get(n,"meta.seq"),r=e.get(n,"meta.tags",[]);return{type:"app",name:e.get(n,"meta.name"),seq:e.isNaN(t)?1:Number(t),tags:Array.isArray(r)?r:[],settings:e.get(n,"settings",{}),app:{code:e.get(n,"app.code",null)},request:null}}let o=e.get(n,"meta.type");switch(o){case"http":default:o="http-request";break;case"graphql":o="graphql-request";break;case"grpc":o="grpc-request";break;case"ws":o="ws-request"}const a=e.get(n,"meta.seq"),i=e.get(n,"meta.tags",[]),c={"grpc-request":"grpc.url","ws-request":"ws.url",default:"http.url"},l=e.get(n,"app"),u=l?{code:e.get(l,"code",null),enabled:!0===e.get(l,"enabled",!1)}:null,p={type:o,name:e.get(n,"meta.name"),seq:e.isNaN(a)?1:Number(a),settings:e.get(n,"settings",{}),app:u,tags:Array.isArray(i)?i:[],request:{method:"grpc-request"===o?e.get(n,"grpc.method",""):String(e.get(n,"http.method")??"").toUpperCase(),url:e.get(n,c[o],e.get(n,c.default)),headers:"grpc-request"===o?e.get(n,"metadata",[]):e.get(n,"headers",[]),auth:e.get(n,"auth",{}),body:e.get(n,"body",{}),script:e.get(n,"script",{}),vars:e.get(n,"vars",{}),assertions:e.get(n,"assertions",[]),tests:e.get(n,"tests",""),docs:e.get(n,"docs","")},examples:e.get(n,"examples",[]).map((t=>E(t,!0,o,e.get(n,"http.method"))))};if("grpc-request"===o){const t=e.get(n,"grpc.methodType");t&&(p.request.methodType=t);const r=e.get(n,"grpc.protoPath");r&&(p.request.protoPath=r),p.request.auth.mode=e.get(n,"grpc.auth","none"),p.request.body=e.get(n,"body",{mode:"grpc",grpc:e.get(n,"body.grpc",[{name:"message 1",content:"{}"}])})}else"ws-request"===o?(p.request.auth.mode=e.get(n,"ws.auth","none"),p.request.body=e.get(n,"body",{mode:"ws",ws:e.get(n,"body.ws",[{name:"message 1",content:"{}"}])})):(p.request.params=e.get(n,"params",[]),p.request.auth.mode=e.get(n,"http.auth","none"),p.request.body.mode=e.get(n,"http.body","none"));const d=n?.auth?.oauth2?.grantType;if(d){const e=v(n);Object.keys(e||{}).length>0&&(p.request.auth.oauth2.additionalParameters=e)}return p}catch(e){throw console.log("parseBruRequest error",e),e}})(r);if("yml"===s.format)return qe(r);throw new Error(`Unsupported format: ${s.format}`)},Me=(e,t={format:"bru"})=>{if("bru"===t.format)return(e=>{try{const t=["body:json {","body:text {","body:xml {","body:sparql {","body:graphql {"];e=(e||"").replace(/\r\n/g,"\n");const r="\n",s=e=>e&&e.length?e.split(r).map((e=>e.replace(/^ /,""))).join(r):e||"";let n=e.split(`${r}}${r}`);n=n.filter(Boolean).map((e=>e.trim()));const o=n.filter((e=>t.some((t=>e.startsWith(t))))).reduce(((e,t)=>{const n=t.split(r)[0].split("body:")[1].split(/\s/)[0],o=t.split(r).slice(1).join(r),a=s(o);return e[n]=a,e}),{});return{bruFileStringWithRedactedBody:n.filter((e=>!t.some((t=>e.startsWith(t))))).join(`${r}}${r}${r}`).concat(`${r}}${r}`),extractedBodyContent:o}}catch(t){return console.error("Error parsing and redacting body data:",t),{bruFileStringWithRedactedBody:e,extractedBodyContent:{}}}})(e);throw new Error(`Unsupported format: ${t.format}`)},Le=(t,s={format:be})=>{if("bru"===s.format)return(t=>{try{if("app"===e.get(t,"type")){const s=e.get(t,"seq"),n={meta:{name:e.get(t,"name"),type:"app",seq:e.isNaN(s)?1:Number(s),tags:e.get(t,"tags",[])},settings:e.get(t,"settings",{}),app:{code:e.get(t,"app.code","")}};return r(n)}let s=e.get(t,"type");switch(s){case"http-request":default:s="http";break;case"graphql-request":s="graphql";break;case"grpc-request":s="grpc";break;case"ws-request":s="ws"}const n=e.get(t,"seq"),o={meta:{name:e.get(t,"name"),type:s,seq:e.isNaN(n)?1:Number(n),tags:e.get(t,"tags",[])}};if("http"===s||"graphql"===s)o.http={method:String(e.get(t,"request.method")??"").toLowerCase(),url:e.get(t,"request.url"),auth:e.get(t,"request.auth.mode","none"),body:e.get(t,"request.body.mode","none")},o.params=e.get(t,"request.params",[]),o.body=e.get(t,"request.body",{mode:"json",json:"{}"});else if("grpc"===s){o.grpc={url:e.get(t,"request.url"),auth:e.get(t,"request.auth.mode","none"),body:e.get(t,"request.body.mode","grpc")};const r=e.get(t,"request.method"),s=e.get(t,"request.methodType"),n=e.get(t,"request.protoPath");r&&(o.grpc.method=r),s&&(o.grpc.methodType=s),n&&(o.grpc.protoPath=n),o.body=e.get(t,"request.body",{mode:"grpc",grpc:e.get(t,"request.body.grpc",[{name:"message 1",content:"{}"}])})}else"ws"===s&&(o.ws={url:e.get(t,"request.url"),auth:e.get(t,"request.auth.mode","none"),body:e.get(t,"request.body.mode","ws")},o.body=e.get(t,"request.body",{mode:"ws",ws:e.get(t,"request.body.ws",[{name:"message 1",content:"{}"}])}));"grpc"===s?o.metadata=e.get(t,"request.headers",[]):o.headers=e.get(t,"request.headers",[]),o.auth=e.get(t,"request.auth",{}),o.script=e.get(t,"request.script",{}),o.vars={req:e.get(t,"request.vars.req",[]),res:e.get(t,"request.vars.res",[])},o.assertions=e.get(t,"request.assertions",[]),o.tests=e.get(t,"request.tests",""),o.settings=e.get(t,"settings",{}),o.docs=e.get(t,"request.docs",""),o.examples=e.get(t,"examples",[]).map((e=>_(e)));const a=e.get(t,"app");return a&&(!0===a.enabled||a.code&&a.code.length)&&(o.app={code:a.code||null,enabled:!0===a.enabled}),r(o)}catch(e){throw e}})(t);if("yml"===s.format)return xe(t);throw new Error(`Unsupported format: ${s.format}`)};let Ge=null;const Je=()=>(Ge||(Ge=new Fe),Ge),Xe=async(e,t)=>{const r=Je();return await r.parseRequest(e,t.format)},Ve=async(e,t)=>{const r=Je();return await r.stringifyRequest(e,t.format)},Ye=async(e,t)=>await Je().parseFolder(e,t.format),Ze=async(e,t)=>await Je().stringifyFolder(e,t.format),et=async(e,t)=>await Je().parseEnvironment(e,t.format),tt=async(e,t)=>await Je().stringifyEnvironment(e,t.format),rt=(e,t={format:be})=>{if("bru"===t.format)return R(e);if("yml"===t.format)return(e=>{try{const t=N(e),r={opencollection:t.opencollection||"1.0.0",name:P(t.info?.name,"Untitled Collection"),type:"collection",ignore:[]};null!=t.info?.version&&""!==t.info.version&&(r.version=P(t.info.version,""));const s=t.extensions?.bruno;if(s?.ignore&&Array.isArray(s.ignore)&&(r.ignore=s.ignore),s?.presets){const e=s.presets;(e.request||e.defaultEnvironment)&&(r.presets={requestType:e.request?.type||"",requestUrl:e.request?.url||""},e.defaultEnvironment&&(r.presets.defaultEnvironment=e.defaultEnvironment))}const n=t.extensions?.bruno;if(Array.isArray(n?.scripts?.additionalContextRoots)){const e=n.scripts.additionalContextRoots.filter((e=>"string"==typeof e));e.length>0&&(r.scripts={...r.scripts,additionalContextRoots:e})}if("sandwich"!==n?.scripts?.flow&&"sequential"!==n?.scripts?.flow||(r.scripts={...r.scripts,flow:n.scripts.flow}),Array.isArray(n?.openapi)&&n.openapi.length>0&&(r.openapi=n.openapi.map((e=>({sourceUrl:e.sourceUrl,groupBy:e.groupBy,...e.lastSyncDate&&{lastSyncDate:e.lastSyncDate},...e.specHash&&{specHash:e.specHash},autoCheck:!1!==e.autoCheck,autoCheckInterval:e.autoCheckInterval||5})))),t.config?.protobuf&&(r.protobuf={protoFiles:t.config.protobuf.protoFiles?.map((e=>({path:e.path})))||[],importPaths:t.config.protobuf.importPaths?.map((e=>({path:e.path,enabled:!0!==e.disabled})))||[]}),r.proxy={inherit:!0,config:{protocol:"http",hostname:"",port:"",auth:{username:"",password:""},bypassProxy:""}},t.config?.proxy&&"object"==typeof t.config.proxy){const e=t.config.proxy;"inherit"in e&&"boolean"==typeof e.inherit&&e.config&&"object"==typeof e.config&&(r.proxy={inherit:e.inherit,config:{protocol:e.config.protocol||"http",hostname:e.config.hostname||"",port:e.config.port||"",auth:{username:e.config.auth?.username||"",password:e.config.auth?.password||""},bypassProxy:e.config.bypassProxy||""}},!0===e.disabled&&(r.proxy.disabled=!0),!0===e.config.auth?.disabled&&(r.proxy.config.auth.disabled=!0))}t.config?.clientCertificates?.length&&(r.clientCertificates={certs:t.config.clientCertificates.map((e=>"pem"===e.type?{domain:e.domain,type:"cert",certFilePath:e.certificateFilePath,keyFilePath:e.privateKeyFilePath,passphrase:e.passphrase||"",...!0===e.disabled&&{disabled:!0}}:"pkcs12"===e.type?{domain:e.domain,type:"pfx",pfxFilePath:e.pkcs12FilePath,passphrase:e.passphrase||"",...!0===e.disabled&&{disabled:!0}}:null)).filter((e=>null!==e))});const o={meta:null,request:null,docs:null};if(t.request){o.request={headers:null,auth:null,script:{req:null,res:null},vars:{req:[],res:[]},tests:null};const e=L(t.request.headers);o.request.headers=e||[];const r=W(t.request.auth);r&&(o.request.auth=r);const s=ne(t.request.variables),n=ae(t.request.actions);o.request.vars={req:s.req,res:n};const a=ce(t.request.scripts);a?.script&&o.request.script&&(a.script.req&&(o.request.script.req=a.script.req),a.script.res&&(o.request.script.res=a.script.res)),a?.tests&&(o.request.tests=a.tests)}return t.docs&&("string"==typeof t.docs?o.docs=t.docs:"object"==typeof t.docs&&t.docs.content&&(o.docs=t.docs.content)),{collectionRoot:o,brunoConfig:r}}catch(e){throw console.error("Error parsing collection:",e),e}})(e);throw new Error(`Unsupported format: ${t.format}`)},st=(e,t,r={format:be})=>{if("bru"===r.format)return C(e,!1);if("yml"===r.format)return Ee(e,t);throw new Error(`Unsupported format: ${r.format}`)},nt=(e,t={format:be})=>{if("bru"===t.format)return R(e);if("yml"===t.format)return(e=>{try{const t=N(e),r=t.info,s=r?.seq,n={meta:{name:P(r?.name,"Untitled Folder"),..."number"==typeof s&&Number.isFinite(s)?{seq:s}:{}},request:{headers:[],auth:W(t.request?.auth),script:{req:null,res:null},vars:{req:[],res:[]},tests:null},docs:null};if(t.request){const e=n.request,r=L(t.request.headers);r&&(e.headers=r);const s=ne(t.request.variables),o=ae(t.request.actions);e.vars={req:s.req,res:o};const a=ce(t.request.scripts);a?.script&&e.script&&(a.script.req&&(e.script.req=a.script.req),a.script.res&&(e.script.res=a.script.res)),a?.tests&&(e.tests=a.tests)}return t.docs&&("string"==typeof t.docs&&t.docs.trim().length?n.docs=t.docs:"object"==typeof t.docs&&t.docs.content?.trim().length&&(n.docs=t.docs.content)),n}catch(e){throw console.error("Error parsing folder:",e),e}})(e);throw new Error(`Unsupported format: ${t.format}`)},ot=(e,t={format:be})=>{if("bru"===t.format)return C(e,!0);if("yml"===t.format)return Pe(e);throw new Error(`Unsupported format: ${t.format}`)},at=(t,r={format:be})=>{if("bru"===r.format)return(t=>{try{const r=o(t);return r&&r.variables&&r.variables.length&&e.each(r.variables,(e=>e.type="text")),r?.externalSecrets&&Array.isArray(r.externalSecrets.variables)&&(r.externalSecrets.variables=r.externalSecrets.variables.map((e=>({uid:S(),...e})))),r}catch(e){return Promise.reject(e)}})(t);if("yml"===r.format)return ve(t);throw new Error(`Unsupported format: ${r.format}`)},it=(e,t={format:be})=>{if("bru"===t.format)return(e=>{try{return a(e)}catch(e){throw e}})(e);if("yml"===t.format)return _e(e);throw new Error(`Unsupported format: ${t.format}`)},ct=(e,t={format:"yml"})=>{if("yml"===t.format)return(e=>{const t=N(e);if(!t||"object"!=typeof t||Array.isArray(t))throw new Error("Invalid mock server file");const r=t.info||{},s=t.mock||{},n={name:P(r.name,"Mock Server"),port:Number(s.port)||null,delay:Number(s.delay)||0,source:null,routes:Array.isArray(t.routes)?t.routes.map(we):[]},o=s.source?.type,a=s.source?.path;return"collection"!==o&&"spec"!==o||!U(a)||(n.source={type:o,path:a}),n})(e);throw new Error(`Unsupported format: ${t.format}`)},lt=(e,t={format:"yml"})=>{if("yml"===t.format)return(e=>{try{const t={info:{name:e.name&&e.name.trim().length?e.name:"Mock Server",type:"mock"},mock:{port:Number(e.port)||4e3}},r=Number(e.delay);r>0&&(t.mock.delay=r);const s=e.source;return s&&("collection"===s.type||"spec"===s.type)&&s.path&&(t.mock.source={type:s.type,path:s.path}),e.routes?.length&&(t.routes=e.routes.map(je)),A(t)}catch(e){throw console.error("Error stringifying mock server:",e),e}})(e);throw new Error(`Unsupported format: ${t.format}`)},ut=e=>c(e);export{Fe as BruParserWorker,be as DEFAULT_COLLECTION_FORMAT,ke as SECRET_PROVIDER_IDENTIFIER_FIELDS,We as migrateSecretsJsonToEnvironments,rt as parseCollection,ut as parseDotEnv,at as parseEnvironment,et as parseEnvironmentViaWorker,nt as parseFolder,Ye as parseFolderViaWorker,ct as parseMockServer,De as parseRequest,Me as parseRequestAndRedactBody,Xe as parseRequestViaWorker,He as redactLargeBruTextBlocks,Qe as restoreRedactedBlocks,st as stringifyCollection,it as stringifyEnvironment,tt as stringifyEnvironmentViaWorker,ot as stringifyFolder,Ze as stringifyFolderViaWorker,lt as stringifyMockServer,Le as stringifyRequest,Ve as stringifyRequestViaWorker};
|
|
1
|
+
import*as e from"lodash";import{bruToJsonV2 as t,jsonToBruV2 as r,collectionBruToJson as s,jsonToCollectionBru as n,bruToEnvJsonV2 as o,envJsonToBruV2 as a,outdentString as i,dotenvToJson as c}from"@usebruno/lang";import*as l from"yaml";import{valueToString as u,isBrunoVariableDataType as p,parseValueByDataType as d,validatedEnvironmentExtendsFrom as m,resolveTimeoutSetting as h,toMaxRedirects as g}from"@usebruno/common/utils";import{utils as f,normalizeOpenApiSyncConfigs as y,HTTP_SCRIPT_KEYS as q,GRPC_SCRIPT_KEYS as b}from"@usebruno/common";import{Worker as k}from"node:worker_threads";import v from"node:path";import{createHash as w}from"node:crypto";const x=[{type:"authorization",sendIn:"headers",source:"oauth2_additional_parameters_auth_req_headers"},{type:"authorization",sendIn:"queryparams",source:"oauth2_additional_parameters_auth_req_queryparams"},{type:"token",sendIn:"headers",source:"oauth2_additional_parameters_access_token_req_headers"},{type:"token",sendIn:"queryparams",source:"oauth2_additional_parameters_access_token_req_queryparams"},{type:"token",sendIn:"body",source:"oauth2_additional_parameters_access_token_req_bodyvalues"},{type:"refresh",sendIn:"headers",source:"oauth2_additional_parameters_refresh_token_req_headers"},{type:"refresh",sendIn:"queryparams",source:"oauth2_additional_parameters_refresh_token_req_queryparams"},{type:"refresh",sendIn:"body",source:"oauth2_additional_parameters_refresh_token_req_bodyvalues"}],T=(e,t)=>e?.length?e.map((e=>({...e,sendIn:t}))):[],P=(e,t,r)=>{if(!((e,t)=>"authorization"===e?"authorization_code"===t||"implicit"===t:"token"!==e&&"refresh"!==e||"implicit"!==t)(t,r))return[];const s=x.filter((e=>e.type===t)),n=[];for(const t of s){const r=e[t.source],s=T(r,t.sendIn);n.push(...s)}return n},U=e=>{const t=e.auth.oauth2.grantType,r={};try{const s=["authorization","token","refresh"];for(const n of s){const s=P(e,n,t);s.length>0&&(r[n]=s)}}catch(e){console.error(e),console.error("Error while getting the oauth2 additional parameters!")}return r},{customAlphabet:S}=require("nanoid"),R=e=>"string"==typeof e,E=e=>R(e)&&e.trim().length>0,C=(e,t="")=>null==e?t:"string"==typeof e?e:String(e),_=()=>S("useandom26T198340PX75pxJACKVERYMINDBUSHWOLFGQZbfghjklqvwyzrict",21)(),j=(t,r=!1)=>{try{const n=r?t:s(t),o={request:{headers:e.get(n,"headers",[]),auth:e.get(n,"auth",{}),script:e.get(n,"script",{}),vars:e.get(n,"vars",{}),tests:e.get(n,"tests","")},settings:e.get(n,"settings",{}),docs:e.get(n,"docs","")};if(n.meta&&(o.meta={name:n.meta.name},void 0!==n.meta.seq)){const e=n.meta.seq;o.meta.seq=isNaN(e)?1:Number(e)}const a=n?.auth?.oauth2?.grantType;if(a){const e=U(n);Object.keys(e).length>0&&(o.request.auth.oauth2.additionalParameters=e)}return o}catch(e){return Promise.reject(e)}},A=(t,r)=>{try{const s={headers:e.get(t,"request.headers",[]),script:{req:e.get(t,"request.script.req",""),res:e.get(t,"request.script.res","")},vars:{req:e.get(t,"request.vars.req",[]),res:e.get(t,"request.vars.res",[])},tests:e.get(t,"request.tests",""),auth:e.get(t,"request.auth",{}),docs:e.get(t,"docs","")};if(t?.meta&&(s.meta={name:t.meta.name},void 0!==t.meta.seq)){const e=t.meta.seq;s.meta.seq=isNaN(e)?1:Number(e)}return r||(s.auth=e.get(t,"request.auth",{})),n(s)}catch(e){throw e}},N=(r,s=!1,n,o)=>{try{const a=s?r:t(r),i=n||e.get(a,"meta.type","http"),c=o||e.get(a,"http.method","GET");let l=i;switch(i){case"http":default:l="http-request";break;case"graphql":l="graphql-request";break;case"grpc":l="grpc-request";break;case"ws":l="ws-request"}let u=e.get(a,"response.status","200"),p=e.get(a,"response.statusText","OK");isNaN(Number(u))&&!isNaN(Number(p))&&([u,p]=[p,u]);return{type:l,name:e.get(a,"name"),description:e.get(a,"description",""),request:{method:e.get(a,"request.method")||c,url:e.get(a,"request.url"),headers:e.get(a,"request.headers",[]),body:e.get(a,"request.body",{mode:"none"}),params:e.get(a,"request.params",[])},response:{headers:e.get(a,"response.headers",[]).map((e=>({name:e.name,value:e.value}))),status:Number(u)||200,statusText:p||"OK",body:{type:e.get(a,"response.body.type","json"),content:e.get(a,"response.body.content","")}}}}catch(e){throw console.log("bruExampleToJson error",e),e}},F=t=>{try{return{name:e.get(t,"name"),description:e.get(t,"description",""),request:{method:e.get(t,"request.method"),url:e.get(t,"request.url"),headers:e.get(t,"request.headers",[]),body:e.get(t,"request.body",{}),params:e.get(t,"request.params",[])},response:e.get(t,"response",{})}}catch(e){throw e}},z=["info","http","graphql","grpc","websocket","mock","routes","runtime","settings","examples","docs","items","request"],I=e=>{const t=l.stringify(e,{lineWidth:0,indent:2,minContentWidth:0,defaultStringType:"PLAIN"}).split("\n"),r=[];for(let e=0;e<t.length;e++){const s=t[e];if(e>0&&!s.startsWith(" ")&&!s.startsWith("\t")){const e=s.split(":")[0];z.includes(e)&&r.length>0&&""!==r[r.length-1].trim()&&r.push("")}r.push(s)}return r.join("\n")},K=e=>l.parse(e),O=e=>"boolean"==typeof e?e:void 0,$=e=>{if(!Array.isArray(e)||0===e.length)return;const t=e.filter((e=>e&&E(e.name))).map((e=>{const t=(e=>{if(R(e))switch(e.trim().toLowerCase()){case"headers":return"header";case"queryparams":return"query";case"body":return"body";default:return}})(e.sendIn);if(!t)return;const r={name:e.name.trim(),placement:t};return E(e.value)&&(r.value=e.value),r})).filter((e=>Boolean(e)));return t.length>0?t:void 0},B=e=>{const t={};return E(e.clientId)&&(t.clientId=e.clientId),E(e.clientSecret)&&(t.clientSecret=e.clientSecret),E(e.credentialsPlacement)&&(t.placement=e.credentialsPlacement),Object.keys(t).length>0?t:void 0},M=e=>{const t={};return E(e.credentialsId)&&(t.id=e.credentialsId),E(e.tokenPlacement)||(t.placement={header:""}),"header"===e.tokenPlacement&&(t.placement={header:e.tokenHeaderPrefix}),"url"===e.tokenPlacement&&(t.placement={query:e.tokenQueryKey}),t.source=e.tokenSource||"access_token",Object.keys(t).length>0?t:void 0},H=e=>{const t=O(e.autoFetchToken),r=O(e.autoRefreshToken),s={};return void 0!==t&&(s.autoFetchToken=t),void 0!==r&&(s.autoRefreshToken=r),Object.keys(s).length>0?s:void 0},Q=e=>{const t={type:"oauth2",flow:"resource_owner_password_credentials"};E(e.accessTokenUrl)&&(t.accessTokenUrl=e.accessTokenUrl),E(e.refreshTokenUrl)&&(t.refreshTokenUrl=e.refreshTokenUrl);const r=B(e);r&&(t.credentials=r);const s=(e=>{const t={};return E(e.username)&&(t.username=e.username),E(e.password)&&(t.password=e.password),Object.keys(t).length>0?t:void 0})(e);s&&(t.resourceOwner=s),E(e.scope)&&(t.scope=e.scope);const n=$(e.additionalParameters?.token),o=$(e.additionalParameters?.refresh);(n||o)&&(t.additionalParameters={},n&&(t.additionalParameters.accessTokenRequest=n),o&&(t.additionalParameters.refreshTokenRequest=o));const a=M(e);a&&(t.tokenConfig=a);const i=H(e);return i&&(t.settings=i),t},W=e=>{if(e)switch(e.grantType){case"client_credentials":return(e=>{const t={type:"oauth2",flow:"client_credentials"};E(e.accessTokenUrl)&&(t.accessTokenUrl=e.accessTokenUrl),E(e.refreshTokenUrl)&&(t.refreshTokenUrl=e.refreshTokenUrl);const r=B(e);r&&(t.credentials=r),E(e.scope)&&(t.scope=e.scope);const s=$(e.additionalParameters?.token),n=$(e.additionalParameters?.refresh);(s||n)&&(t.additionalParameters={},s&&(t.additionalParameters.accessTokenRequest=s),n&&(t.additionalParameters.refreshTokenRequest=n));const o=M(e);o&&(t.tokenConfig=o);const a=H(e);return a&&(t.settings=a),t})(e);case"password":return Q(e);case"authorization_code":return(e=>{const t={type:"oauth2",flow:"authorization_code"};E(e.authorizationUrl)&&(t.authorizationUrl=e.authorizationUrl),E(e.accessTokenUrl)&&(t.accessTokenUrl=e.accessTokenUrl),E(e.refreshTokenUrl)&&(t.refreshTokenUrl=e.refreshTokenUrl),E(e.callbackUrl)&&(t.callbackUrl=e.callbackUrl);const r=B(e);r&&(t.credentials=r);const s=$(e.additionalParameters?.authorization),n=$(e.additionalParameters?.token),o=$(e.additionalParameters?.refresh);(s||n||o)&&(t.additionalParameters={},s&&(t.additionalParameters.authorizationRequest=s),n&&(t.additionalParameters.accessTokenRequest=n),o&&(t.additionalParameters.refreshTokenRequest=o)),E(e.scope)&&(t.scope=e.scope),E(e.state)&&(t.state=e.state);const a=(e=>{if(null!=e)return e?{}:{disabled:!0}})(e.pkce);a&&(t.pkce=a);const i=M(e);i&&(t.tokenConfig=i);const c=H(e);return c&&(t.settings=c),t})(e);case"implicit":return(e=>{const t={type:"oauth2",flow:"implicit"};E(e.authorizationUrl)&&(t.authorizationUrl=e.authorizationUrl),E(e.callbackUrl)&&(t.callbackUrl=e.callbackUrl),E(e.clientId)&&(t.credentials={clientId:e.clientId}),E(e.scope)&&(t.scope=e.scope),E(e.state)&&(t.state=e.state);const r=$(e.additionalParameters?.authorization);r&&(t.additionalParameters={authorizationRequest:r});const s=M(e);s&&(t.tokenConfig=s);const n=H(e);return n&&(t.settings=n),t})(e);default:return void console.warn(`toOpenCollectionOAuth2: Unsupported OAuth2 grant type "${e.grantType}".`)}},L=e=>{if(!Array.isArray(e)||0===e.length)return null;const t=e.map((e=>{const t=(e=>{if(!e)return null;switch(e){case"header":return"headers";case"query":return"queryparams";case"body":return"body";default:return null}})(e.placement);return{name:e.name||null,value:e.value||null,sendIn:t||"headers",enabled:!0}}));return t.length>0?t:null},G=e=>{if(e&&"none"!==e.mode){if("inherit"===e.mode)return"inherit";switch(e.mode){case"awsv4":return(e=>{const t={type:"awsv4"};return e?(R(e.accessKeyId)&&(t.accessKeyId=e.accessKeyId),R(e.secretAccessKey)&&(t.secretAccessKey=e.secretAccessKey),R(e.sessionToken)&&(t.sessionToken=e.sessionToken),R(e.service)&&(t.service=e.service),R(e.region)&&(t.region=e.region),R(e.profileName)&&(t.profileName=e.profileName),t):t})(e.awsv4);case"basic":return(e=>{const t={type:"basic"};return e?(R(e.username)&&(t.username=e.username),R(e.password)&&(t.password=e.password),t):t})(e.basic);case"bearer":return(e=>{const t={type:"bearer"};return e?(R(e.token)&&(t.token=e.token),t):t})(e.bearer);case"digest":return(e=>{const t={type:"digest"};return e?(R(e.username)&&(t.username=e.username),R(e.password)&&(t.password=e.password),t):t})(e.digest);case"ntlm":return(e=>{const t={type:"ntlm"};return e?(R(e.username)&&(t.username=e.username),R(e.password)&&(t.password=e.password),R(e.domain)&&(t.domain=e.domain),t):t})(e.ntlm);case"wsse":return(e=>{const t={type:"wsse"};return e?(R(e.username)&&(t.username=e.username),R(e.password)&&(t.password=e.password),t):t})(e.wsse);case"apikey":return(e=>{const t={type:"apikey"};return e?(R(e.key)&&(t.key=e.key),R(e.value)&&(t.value=e.value),R(e.placement)&&("header"===e.placement?t.placement="header":"queryparams"===e.placement&&(t.placement="query")),t):t})(e.apikey);case"oauth1":return(e=>{const t={type:"oauth1"};return e?(R(e.consumerKey)&&(t.consumerKey=e.consumerKey),R(e.consumerSecret)&&(t.consumerSecret=e.consumerSecret),R(e.accessToken)&&(t.accessToken=e.accessToken),R(e.accessTokenSecret)&&(t.accessTokenSecret=e.accessTokenSecret),R(e.callbackUrl)&&(t.callbackUrl=e.callbackUrl),R(e.verifier)&&(t.verifier=e.verifier),R(e.signatureMethod)&&(t.signatureMethod=e.signatureMethod),R(e.privateKey)&&(t.privateKey="file"===e.privateKeyType?{type:"file",value:e.privateKey}:{type:"text",value:e.privateKey}),R(e.timestamp)&&(t.timestamp=e.timestamp),R(e.nonce)&&(t.nonce=e.nonce),R(e.version)&&(t.version=e.version),R(e.realm)&&(t.realm=e.realm),R(e.placement)&&(t.placement=e.placement),"boolean"==typeof e.includeBodyHash&&(t.includeBodyHash=e.includeBodyHash),t):t})(e.oauth1);case"oauth2":return W(e.oauth2);case"akamai-edgegrid":return(e=>{const t={type:"akamai-edgegrid"};return e?(R(e.accessToken)&&(t.accessToken=e.accessToken),R(e.clientToken)&&(t.clientToken=e.clientToken),R(e.clientSecret)&&(t.clientSecret=e.clientSecret),R(e.nonce)&&(t.nonce=e.nonce),R(e.timestamp)&&(t.timestamp=e.timestamp),R(e.baseURL)&&(t.baseURL=e.baseURL),R(e.headersToSign)&&(t.headersToSign=e.headersToSign),"number"==typeof e.maxBodySize&&(t.maxBodySize=e.maxBodySize),t):t})(e.akamaiEdgegrid);default:return void console.warn(`toOpenCollectionAuth failed: Unsupported auth mode "${e.mode}".`)}}},J=e=>{const t={mode:"none",awsv4:null,basic:null,bearer:null,digest:null,ntlm:null,oauth2:null,wsse:null,apikey:null,akamaiEdgegrid:null};if(!e)return t;if("inherit"===e)return t.mode="inherit",t;if("akamai-edgegrid"===e.type){const r=e;return t.mode="akamai-edgegrid",t.akamaiEdgegrid={accessToken:r.accessToken||"",clientToken:r.clientToken||"",clientSecret:r.clientSecret||"",nonce:r.nonce||"",timestamp:r.timestamp||"",baseURL:r.baseURL||"",headersToSign:r.headersToSign||"",maxBodySize:"number"==typeof r.maxBodySize?r.maxBodySize:null},t}switch(e.type){case"awsv4":t.mode="awsv4",t.awsv4={accessKeyId:e.accessKeyId||null,secretAccessKey:e.secretAccessKey||null,sessionToken:e.sessionToken||null,service:e.service||null,region:e.region||null,profileName:e.profileName||null};break;case"basic":t.mode="basic",t.basic={username:e.username||null,password:e.password||null};break;case"bearer":t.mode="bearer",t.bearer={token:e.token||""};break;case"digest":t.mode="digest",t.digest={username:e.username||null,password:e.password||null};break;case"ntlm":t.mode="ntlm",t.ntlm={username:e.username||null,password:e.password||null,domain:e.domain||null};break;case"wsse":t.mode="wsse",t.wsse={username:e.username||null,password:e.password||null};break;case"apikey":t.mode="apikey",t.apikey={key:e.key||null,value:e.value||null,placement:"query"===e.placement?"queryparams":"header"===e.placement?"header":null};break;case"oauth1":t.mode="oauth1",t.oauth1={consumerKey:e.consumerKey||null,consumerSecret:e.consumerSecret||null,accessToken:e.accessToken||null,accessTokenSecret:e.accessTokenSecret||null,callbackUrl:e.callbackUrl||null,verifier:e.verifier||null,signatureMethod:e.signatureMethod||"HMAC-SHA1",privateKey:("object"==typeof e.privateKey&&e.privateKey?e.privateKey.value:e.privateKey)||null,privateKeyType:"object"==typeof e.privateKey&&e.privateKey?e.privateKey.type:"text",timestamp:e.timestamp||null,nonce:e.nonce||null,version:e.version||"1.0",realm:e.realm||null,placement:e.placement||"header",includeBodyHash:e.includeBodyHash||!1};break;case"oauth2":t.mode="oauth2",t.oauth2=(e=>{if(!e)return null;const t={grantType:"authorization_code",username:null,password:null,callbackUrl:null,authorizationUrl:null,accessTokenUrl:null,clientId:null,clientSecret:null,scope:null,state:null,pkce:!1,credentialsPlacement:null,credentialsId:null,tokenPlacement:null,tokenHeaderPrefix:null,tokenQueryKey:null,tokenSource:"access_token",refreshTokenUrl:null,autoRefreshToken:!1,autoFetchToken:!0,additionalParameters:null};switch(e.flow){case"client_credentials":if(t.grantType="client_credentials",e.accessTokenUrl&&(t.accessTokenUrl=e.accessTokenUrl),e.refreshTokenUrl&&(t.refreshTokenUrl=e.refreshTokenUrl),e.credentials?.clientId&&(t.clientId=e.credentials.clientId),e.credentials?.clientSecret&&(t.clientSecret=e.credentials.clientSecret),e.credentials?.placement&&(t.credentialsPlacement=e.credentials.placement),e.scope&&(t.scope=e.scope),e.tokenConfig?.id&&(t.credentialsId=e.tokenConfig.id),e.tokenConfig?.source&&(t.tokenSource=e.tokenConfig.source||"access_token"),e.tokenConfig?.placement&&("header"in e.tokenConfig.placement?(t.tokenPlacement="header",t.tokenHeaderPrefix=e.tokenConfig.placement.header||""):"query"in e.tokenConfig.placement&&(t.tokenPlacement="url",t.tokenQueryKey=e.tokenConfig.placement.query||"")),e.additionalParameters){const r={};if(e.additionalParameters.accessTokenRequest){const t=L(e.additionalParameters.accessTokenRequest);t&&(r.token=t)}if(e.additionalParameters.refreshTokenRequest){const t=L(e.additionalParameters.refreshTokenRequest);t&&(r.refresh=t)}Object.keys(r).length>0&&(t.additionalParameters=r)}break;case"resource_owner_password_credentials":if(t.grantType="password",e.accessTokenUrl&&(t.accessTokenUrl=e.accessTokenUrl),e.refreshTokenUrl&&(t.refreshTokenUrl=e.refreshTokenUrl),e.credentials?.clientId&&(t.clientId=e.credentials.clientId),e.credentials?.clientSecret&&(t.clientSecret=e.credentials.clientSecret),e.credentials?.placement&&(t.credentialsPlacement=e.credentials.placement),e.resourceOwner?.username&&(t.username=e.resourceOwner.username),e.resourceOwner?.password&&(t.password=e.resourceOwner.password),e.scope&&(t.scope=e.scope),e.tokenConfig?.id&&(t.credentialsId=e.tokenConfig.id),e.tokenConfig?.source&&(t.tokenSource=e.tokenConfig.source||"access_token"),e.tokenConfig?.placement&&("header"in e.tokenConfig.placement?(t.tokenPlacement="header",t.tokenHeaderPrefix=e.tokenConfig.placement.header||""):"query"in e.tokenConfig.placement&&(t.tokenPlacement="url",t.tokenQueryKey=e.tokenConfig.placement.query||"")),e.additionalParameters){const r={};if(e.additionalParameters.accessTokenRequest){const t=L(e.additionalParameters.accessTokenRequest);t&&(r.token=t)}if(e.additionalParameters.refreshTokenRequest){const t=L(e.additionalParameters.refreshTokenRequest);t&&(r.refresh=t)}Object.keys(r).length>0&&(t.additionalParameters=r)}break;case"authorization_code":if(t.grantType="authorization_code",e.authorizationUrl&&(t.authorizationUrl=e.authorizationUrl),e.accessTokenUrl&&(t.accessTokenUrl=e.accessTokenUrl),e.refreshTokenUrl&&(t.refreshTokenUrl=e.refreshTokenUrl),e.callbackUrl&&(t.callbackUrl=e.callbackUrl),e.credentials?.clientId&&(t.clientId=e.credentials.clientId),e.credentials?.clientSecret&&(t.clientSecret=e.credentials.clientSecret),e.credentials?.placement&&(t.credentialsPlacement=e.credentials.placement),e.scope&&(t.scope=e.scope),e.state&&(t.state=e.state),e.tokenConfig?.id&&(t.credentialsId=e.tokenConfig.id),e.tokenConfig?.source&&(t.tokenSource=e.tokenConfig.source||"access_token"),e.tokenConfig?.placement&&("header"in e.tokenConfig.placement?(t.tokenPlacement="header",t.tokenHeaderPrefix=e.tokenConfig.placement.header||""):"query"in e.tokenConfig.placement&&(t.tokenPlacement="url",t.tokenQueryKey=e.tokenConfig.placement.query||"")),e.additionalParameters){const r={};if(e.additionalParameters.authorizationRequest){const t=L(e.additionalParameters.authorizationRequest);t&&(r.authorization=t)}if(e.additionalParameters.accessTokenRequest){const t=L(e.additionalParameters.accessTokenRequest);t&&(r.token=t)}if(e.additionalParameters.refreshTokenRequest){const t=L(e.additionalParameters.refreshTokenRequest);t&&(r.refresh=t)}Object.keys(r).length>0&&(t.additionalParameters=r)}break;case"implicit":if(t.grantType="implicit",e.authorizationUrl&&(t.authorizationUrl=e.authorizationUrl),e.callbackUrl&&(t.callbackUrl=e.callbackUrl),e.credentials?.clientId&&(t.clientId=e.credentials.clientId),e.scope&&(t.scope=e.scope),e.state&&(t.state=e.state),e.tokenConfig?.id&&(t.credentialsId=e.tokenConfig.id),e.tokenConfig?.source&&(t.tokenSource=e.tokenConfig.source||"access_token"),e.tokenConfig?.placement&&("header"in e.tokenConfig.placement?(t.tokenPlacement="header",t.tokenHeaderPrefix=e.tokenConfig.placement.header||""):"query"in e.tokenConfig.placement&&(t.tokenPlacement="url",t.tokenQueryKey=e.tokenConfig.placement.query||"")),e.additionalParameters){const r={};if(e.additionalParameters.authorizationRequest){const t=L(e.additionalParameters.authorizationRequest);t&&(r.authorization=t)}Object.keys(r).length>0&&(t.additionalParameters=r)}break;default:return null}if(void 0!==e.settings?.autoFetchToken&&(t.autoFetchToken=e.settings.autoFetchToken),void 0!==e.settings?.autoRefreshToken&&(t.autoRefreshToken=e.settings.autoRefreshToken),"authorization_code"===t.grantType&&"authorization_code"===e.flow){const r=e;void 0!==r.pkce&&(t.pkce=!r.pkce.disabled)}return null===t.additionalParameters&&delete t.additionalParameters,t})(e);break;default:console.warn("toBrunoAuth failed: Unsupported auth type")}return t},D=e=>{if(!e?.length)return;const t=e.map((e=>{const t={name:e.name||"",value:e.value||""};return e?.description?.trim().length&&(t.description=e.description),!1===e.enabled&&(t.disabled=!0),t}));return t.length?t:void 0},X=e=>{if(!e?.length)return;const t=e.map((e=>({name:e.name||"",value:e.value||""})));return t.length?t:void 0},V=e=>{if(!e?.length)return;const t=e.map((e=>{const t={uid:_(),name:C(e.name),value:C(e.value),enabled:!("disabled"in e)||!0!==e.disabled};return"description"in e&&e.description&&(t.description="string"==typeof e.description?e.description:e.description?.content||""),t}));return t.length?t:void 0},Y=e=>{if(!e?.length)return;const t=e.map((e=>{const t={name:e.name||"",value:e.value||"",type:e.type};return e?.description?.trim().length&&(t.description=e.description),!1===e.enabled&&(t.disabled=!0),t}));return t.length?t:void 0},Z=e=>{if(!e?.length)return;const t=e.map((e=>{const t={uid:_(),name:C(e.name),value:C(e.value),type:e.type,enabled:!0!==e.disabled};return e.description&&("string"==typeof e.description&&e.description.trim().length?t.description=e.description:"object"==typeof e.description&&e.description.content?.trim().length&&(t.description=e.description.content)),t}));return t.length?t:void 0},ee=e=>{if(e)switch(e.mode){case"none":case"graphql":default:return;case"json":return{type:"json",data:e.json||""};case"text":return{type:"text",data:e.text||""};case"xml":return{type:"xml",data:e.xml||""};case"sparql":return{type:"sparql",data:e.sparql||""};case"formUrlEncoded":const t=e.formUrlEncoded?.map((e=>{const t={name:e.name||"",value:e.value||""};return e?.description?.trim().length&&(t.description=e.description),!1===e.enabled&&(t.disabled=!0),t}))||[];return{type:"form-urlencoded",...t.length>0&&{data:t}};case"multipartForm":const r=e.multipartForm?.map((e=>{const t={name:e.name||"",type:e.type,value:e.value||("file"===e.type?[]:"")};return e?.contentType?.trim().length&&(t.contentType=e.contentType),e?.description?.trim().length&&(t.description=e.description),!1===e.enabled&&(t.disabled=!0),t}))||[];return{type:"multipart-form",...r.length>0&&{data:r}};case"file":const s=e.file?.map((e=>{const t={filePath:e.filePath||"",contentType:e.contentType||"",selected:e.selected??!1};return e?.description?.trim().length&&(t.description=e.description),t}))||[];return{type:"file",...s.length>0&&{data:s}}}},te=e=>{if(!e)return{mode:"none",json:null,text:null,xml:null,sparql:null,formUrlEncoded:[],multipartForm:[],graphql:null,file:[]};const t={mode:"none",json:null,text:null,xml:null,sparql:null,formUrlEncoded:[],multipartForm:[],graphql:null,file:[]};switch(e.type){case"json":t.mode="json",t.json=e.data||"";break;case"text":t.mode="text",t.text=e.data||"";break;case"xml":t.mode="xml",t.xml=e.data||"";break;case"sparql":t.mode="sparql",t.sparql=e.data||"";break;case"form-urlencoded":t.mode="formUrlEncoded",t.formUrlEncoded=e.data?.map((e=>{const t={uid:_(),name:C(e.name),value:C(e.value),enabled:!0!==e.disabled};return e.description&&("string"==typeof e.description&&e.description.trim().length?t.description=e.description:"object"==typeof e.description&&e.description.content?.trim().length&&(t.description=e.description.content)),t}))||[];break;case"multipart-form":t.mode="multipartForm",t.multipartForm=e.data?.map((e=>{const t={uid:_(),type:e.type,name:C(e.name),value:"file"===e.type?e.value||[]:C(e.value),contentType:e.contentType||null,enabled:!0!==e.disabled};return e.description&&("string"==typeof e.description&&e.description.trim().length?t.description=e.description:"object"==typeof e.description&&e.description.content?.trim().length&&(t.description=e.description.content)),t}))||[];break;case"file":t.mode="file",t.file=e.data?.map((e=>{const t={uid:_(),filePath:e.filePath||"",contentType:e.contentType||"",selected:e.selected??!1},r=e,s="string"==typeof r.description?r.description:r.description?.content;return s&&s.trim().length&&(t.description=s),t}))||[]}return t},re=e=>null!==e&&"object"==typeof e?JSON.stringify(e,null,2):u(e),se=e=>"object"==typeof e&&null!==e&&!Array.isArray(e)&&"type"in e&&"data"in e,ne=e=>!!e.dataType&&"string"!==e.dataType,oe=(e,t)=>({type:e.dataType||"string",data:t}),ae=e=>{const t="string"==typeof e.data?e.data:String(e.data??""),r=p(e.type)?e.type:"string",s={value:d(t,r)};return"string"!==r&&(s.dataType=r),s},ie=e=>{const t=e&&"req"in e?e.req:e,r=Array.isArray(t)?t:[];if(!r.length)return;const s=r.map((e=>{const t=re(e.value),r={name:e.name||"",value:ne(e)?oe(e,t):t};return e?.description?.trim().length&&(r.description=e.description),!1===e.enabled&&(r.disabled=!0),r}));return s.length>0?s:void 0},ce=e=>{if(!e?.length)return{req:[],res:[]};const t=[];return e.forEach((e=>{const r={uid:_(),name:C(e.name),value:"",enabled:!0!==e.disabled,local:!1};se(e.value)?Object.assign(r,ae(e.value)):r.value=C(e.value),e.description&&(r.description="string"==typeof e.description?e.description:e.description?.content||""),t.push(r)})),{req:t,res:[]}},le=e=>{if(!e?.length)return;const t=e.map((e=>{const t={type:"set-variable",phase:"after-response",selector:{expression:C(e.value),method:"jsonq"},variable:{name:e.name||"",scope:e.local?"request":"runtime"}};return e.description?.trim().length&&(t.description=e.description),!1===e.enabled&&(t.disabled=!0),t}));return t.length>0?t:void 0},ue=e=>{if(!e?.length)return[];const t=[];return e.forEach((e=>{if("set-variable"===e.type&&"after-response"===e.phase){const r=e,s={uid:_(),name:C(r.variable?.name),value:C(r.selector?.expression),enabled:!0!==r.disabled,local:!1};r.description&&(s.description="string"==typeof r.description?r.description:r.description?.content||""),t.push(s)}})),t},pe=(e,t)=>{const r=[],s=e?.script,n=(e,s,n)=>{t.includes(e)&&n?.trim().length&&r.push({type:s,code:n.trim()})};return n("req","before-request",s?.req),n("res","after-response",s?.res),n("beforeCallStart","grpc:before-call-start",s?.beforeCallStart),n("beforeMessageSend","grpc:before-message-send",s?.beforeMessageSend),n("afterMessageReceive","grpc:after-message-receive",s?.afterMessageReceive),n("afterCallEnd","grpc:after-call-end",s?.afterCallEnd),e?.tests?.trim().length&&r.push({type:"tests",code:e.tests.trim()}),r.length>0?r:void 0},de=e=>{if(!e||!Array.isArray(e)||0===e.length)return;const t={},r=(e,r)=>{t.script||(t.script={}),t.script[e]=r};for(const s of e)if(s.code)switch(s.type){case"before-request":r("req",s.code);break;case"after-response":r("res",s.code);break;case"grpc:before-call-start":r("beforeCallStart",s.code);break;case"grpc:before-message-send":r("beforeMessageSend",s.code);break;case"grpc:after-message-receive":r("afterMessageReceive",s.code);break;case"grpc:after-call-end":r("afterCallEnd",s.code);break;case"tests":t.tests=s.code}return Object.keys(t).length>0?t:void 0},me=["eq","neq","gt","gte","lt","lte","in","notIn","contains","notContains","length","matches","notMatches","startsWith","endsWith","between","isEmpty","isNotEmpty","isNull","isUndefined","isDefined","isTruthy","isFalsy","isJson","isNumber","isString","isBoolean","isArray"],he=["isEmpty","isNotEmpty","isNull","isUndefined","isDefined","isTruthy","isFalsy","isJson","isNumber","isString","isBoolean","isArray"],ge=e=>{if(!e?.length)return;const t=e.map((e=>{const{operator:t,value:r}=((e="")=>{if(!e||"string"!=typeof e||!e.length)return{operator:"eq",value:e};const[t,...r]=e.trim().split(" "),s=r.join(" ");return he.includes(t)?{operator:t,value:void 0}:me.includes(t)?{operator:t,value:s}:{operator:"eq",value:e}})(e.value||""),s={expression:e.name||"",operator:t,...void 0!==r&&{value:r}};return e?.description?.trim().length&&(s.description=e.description),!1===e.enabled&&(s.disabled=!0),s}));return t.length>0?t:void 0},fe=e=>{if(!e?.length)return;const t=e.map((e=>{let t=C(e.operator);void 0!==e.value&&null!==e.value&&(t=`${e.operator} ${C(e.value)}`);const r={uid:_(),name:C(e.expression),value:t,enabled:!0!==e.disabled};return e.description&&("string"==typeof e.description&&e.description.trim().length?r.description=e.description:"object"==typeof e.description&&e.description.content?.trim().length&&(r.description=e.description.content)),r}));return t.length>0?t:void 0},ye=e=>{if(!Array.isArray(e)||!e.length)return;const t=e.map((e=>"string"==typeof e?e.trim():"")).filter((e=>e.length>0));return t.length?t:void 0},{toBool:qe,toMaxRedirects:be}=f,{toBool:ke,toMaxRedirects:ve}=f,we=e=>{if(!e?.length)return;const t=e.map((e=>{const t={uid:_(),name:C(e.name),value:C(e.value),enabled:!0!==e.disabled};if(e.description){const r="string"==typeof e.description?e.description:e.description?.content||"";r.trim().length&&(t.description=r)}return t}));return t.length?t:void 0},xe=e=>{try{const s=(e=>{const t=e?.info?.type;switch(t){case"http":e.runtime?.auth&&!e.http?.auth&&(e.http.auth=e.runtime.auth);break;case"graphql":e.runtime?.auth&&!e.graphql?.auth&&(e.graphql.auth=e.runtime.auth);break;case"grpc":e.runtime?.auth&&!e.grpc?.auth&&(e.grpc.auth=e.runtime.auth);break;case"websocket":e.runtime?.auth&&!e.websocket?.auth&&(e.websocket.auth=e.runtime.auth)}return e})(K(e)),n="info"in(r=s)&&r.info&&"type"in r.info?r.info.type:"type"in r?r.type:void 0;if(!s||!n)throw new Error("Invalid item: missing type");switch(n){case"http":return(e=>{const t=e.info,r=e.http,s=e.runtime,n={url:C(r?.url),method:C(r?.method,"GET"),headers:V(r?.headers)||[],params:Z(r?.params)||[],auth:J(r?.auth),body:te(r?.body)||{mode:"none",json:null,text:null,xml:null,sparql:null,formUrlEncoded:[],multipartForm:[],graphql:null,file:[]},script:{req:null,res:null},vars:{req:[],res:[]},assertions:[],tests:null,docs:null},o=de(s?.scripts);o?.script&&n.script&&(o.script.req&&(n.script.req=o.script.req),o.script.res&&(n.script.res=o.script.res)),o?.tests&&(n.tests=o.tests);const a=ce(s?.variables),i=ue(s?.actions);n.vars={req:a.req,res:i};const c=fe(s?.assertions);c&&(n.assertions=c),e.docs&&(n.docs=e.docs);const l=(e=>e?{enabled:!0===e.enabled,code:e.code||null}:null)(e.app),u={uid:_(),type:"http-request",seq:t?.seq||1,name:C(t?.name,"Untitled Request"),tags:t?.tags||[],request:n,settings:null,app:l,fileContent:null,root:null,items:[],examples:[],filename:null,pathname:null};if(t?.description){const e="string"==typeof t.description?t.description:t.description?.content||"";e.trim().length&&(u.description=e)}if(e.settings){const t={};t.encodeUrl=qe(e.settings.encodeUrl,!0),"number"==typeof e.settings.timeout?t.timeout=e.settings.timeout:"inherit"===e.settings.timeout?t.timeout="inherit":t.timeout=0,t.followRedirects=qe(e.settings.followRedirects,!0),t.maxRedirects=be(e.settings.maxRedirects),t.forwardAuthorizationHeader=qe(e.settings.forwardAuthorizationHeader,!0);const r=ye(e.settings.omitHeaders);r&&(t.omitHeaders=r),u.settings=t}return e.examples?.length&&(u.examples=e.examples.map((e=>{const t={uid:_(),itemUid:_(),name:C(e.name,"Untitled Example"),type:"http-request",request:null,response:null};return e.description&&("string"==typeof e.description&&e.description.trim().length?t.description=e.description:"object"==typeof e.description&&e.description.content?.trim().length&&(t.description=e.description.content)),e.request&&(t.request={url:C(e.request.url),method:C(e.request.method,"GET"),headers:V(e.request.headers)||[],params:Z(e.request.params)||[],body:te(e.request.body)||{mode:"none",json:null,text:null,xml:null,sparql:null,formUrlEncoded:null,multipartForm:null,graphql:null,file:null}}),e.response&&(t.response={status:"number"==typeof e.response.status?e.response.status:void 0!==e.response.status?Number(e.response.status):null,statusText:e.response.statusText||null,headers:V(e.response.headers)||[],body:null},e.response.body&&(t.response.body={type:e.response.body.type||"text",content:e.response.body.data||""})),t}))),u})(s);case"graphql":return(e=>{const t=e.info,r=e.graphql,s=e.runtime,n={url:C(r?.url),method:C(r?.method,"POST"),headers:V(r?.headers)||[],params:Z(r?.params)||[],auth:J(r?.auth),body:{mode:"graphql",json:null,text:null,xml:null,sparql:null,formUrlEncoded:[],multipartForm:[],graphql:{query:r?.body?.query||"",variables:r?.body?.variables||""},file:[]},script:{req:null,res:null},vars:{req:[],res:[]},assertions:[],tests:null,docs:null},o=de(s?.scripts);o?.script&&n.script&&(o.script.req&&(n.script.req=o.script.req),o.script.res&&(n.script.res=o.script.res)),o?.tests&&(n.tests=o.tests);const a=ce(s?.variables),i=ue(s?.actions);n.vars={req:a.req,res:i};const c=fe(s?.assertions);c&&(n.assertions=c),e.docs&&(n.docs=e.docs);const l={uid:_(),type:"graphql-request",seq:t?.seq||1,name:C(t?.name,"Untitled Request"),tags:t?.tags||[],request:n,settings:null,fileContent:null,root:null,items:[],examples:[],filename:null,pathname:null};if(t?.description){const e="string"==typeof t.description?t.description:t.description?.content||"";e.trim().length&&(l.description=e)}if(e.settings){const t={};t.encodeUrl=ke(e.settings.encodeUrl,!0),"number"==typeof e.settings.timeout?t.timeout=e.settings.timeout:"inherit"===e.settings.timeout?t.timeout="inherit":t.timeout=0,t.followRedirects=ke(e.settings.followRedirects,!0),t.maxRedirects=ve(e.settings.maxRedirects),t.forwardAuthorizationHeader=ke(e.settings.forwardAuthorizationHeader,!0),l.settings=t}return l})(s);case"grpc":return(e=>{const t=e.info,r=e.grpc,s=e.runtime,n={url:C(r?.url),method:C(r?.method),methodType:r?.methodType||"",protoPath:r?.protoFilePath||null,headers:we(r?.metadata)||[],auth:J(r?.auth),body:{mode:"grpc",grpc:[]},script:{beforeCallStart:null,beforeMessageSend:null,afterMessageReceive:null,afterCallEnd:null},vars:{req:[],res:[]},assertions:[],tests:null,docs:null},o=r?.message;Array.isArray(o)?n.body.grpc=o.map((({title:e,message:t},r)=>({name:e||`message ${r+1}`,content:C(t)}))):E(o)&&(n.body.grpc=[{name:"",content:o}]);const a=de(s?.scripts);a?.script&&n.script&&(a.script.beforeCallStart&&(n.script.beforeCallStart=a.script.beforeCallStart),a.script.beforeMessageSend&&(n.script.beforeMessageSend=a.script.beforeMessageSend),a.script.afterMessageReceive&&(n.script.afterMessageReceive=a.script.afterMessageReceive),a.script.afterCallEnd&&(n.script.afterCallEnd=a.script.afterCallEnd)),a?.tests&&(n.tests=a.tests);const i=ce(s?.variables);n.vars=i;const c=fe(s?.assertions);c&&(n.assertions=c),e.docs&&(n.docs=e.docs);const l={uid:_(),type:"grpc-request",seq:t?.seq||1,name:C(t?.name,"Untitled Request"),tags:t?.tags||[],request:n,settings:{},fileContent:null,root:null,items:[],examples:[],filename:null,pathname:null};if(t?.description){const e="string"==typeof t.description?t.description:t.description?.content||"";e.trim().length&&(l.description=e)}return l})(s);case"websocket":return(e=>{const t=e.info,r=e.websocket,s=e.runtime,n={url:C(r?.url),headers:V(r?.headers)||[],auth:J(r?.auth),body:{mode:"ws",ws:[]},script:{req:null,res:null},vars:{req:[],res:[]},assertions:[],tests:null,docs:null};if(r?.message)if(Array.isArray(r.message)){const e=r.message;n.body.ws=e.map(((e,t)=>({name:e.title||`message ${t+1}`,type:e.message?.type||"text",content:C(e.message?.data),selected:e.selected||!1})))}else{const e=r.message,t=C(e.data);t.trim().length&&(n.body.ws=[{name:"",type:e.type||"text",content:t}])}const o=de(s?.scripts);o?.script&&n.script&&(o.script.req&&(n.script.req=o.script.req),o.script.res&&(n.script.res=o.script.res)),o?.tests&&(n.tests=o.tests);const a=ce(s?.variables);n.vars=a,e.docs&&(n.docs=e.docs);const i={timeout:0,keepAliveInterval:0};e.settings&&("number"==typeof e.settings.timeout&&(i.timeout=e.settings.timeout),"number"==typeof e.settings.keepAliveInterval&&(i.keepAliveInterval=e.settings.keepAliveInterval));const c={uid:_(),type:"ws-request",seq:t?.seq||1,name:C(t?.name,"Untitled Request"),tags:t?.tags||[],request:n,settings:i,fileContent:null,root:null,items:[],examples:[],filename:null,pathname:null};if(t?.description){const e="string"==typeof t.description?t.description:t.description?.content||"";e.trim().length&&(c.description=e)}return c})(s);case"script":return t=s,{uid:_(),type:"js",seq:1,name:"Script",tags:[],request:null,settings:null,fileContent:t.script||"",root:null,items:[],examples:[],filename:null,pathname:null};case"app":return(e=>{const t=e.info||{};return{uid:_(),type:"app",seq:"number"==typeof t.seq?t.seq:1,name:t.name||"App",tags:Array.isArray(t.tags)?t.tags:[],request:null,settings:null,app:{code:e.code||""},fileContent:null,root:null,items:[],examples:[],filename:null,pathname:null}})(s);case"folder":throw new Error("Folder items should be handled separately using parseFolder");default:throw new Error(`Unsupported item type: ${n}`)}}catch(e){throw console.error("Error parsing item:",e),e}var t,r},Te="yml",Pe={"aws-secrets-manager":"secretName","azure-key-vault":"vaultName","gcp-secrets-manager":"projectId","hashicorp-vault-cloud":"path","hashicorp-vault-server":"path"},Ue=e=>{try{const r=K(e),s={uid:_(),name:C(r.name,"Untitled Environment"),variables:(t=r.variables,t?.length?t.map((e=>{if((e=>"secret"in e&&!0===e.secret)(e)){const t={uid:_(),name:C(e.name),value:"",type:"text",enabled:!0!==e.disabled,secret:!0};return e.type&&"string"!==e.type&&"null"!==e.type&&(t.dataType=e.type),e.description&&(t.description="string"==typeof e.description?e.description:e.description?.content||""),t}const t={uid:_(),name:C(e.name),value:"",type:"text",enabled:!0!==e.disabled,secret:!1};return se(e.value)?Object.assign(t,ae(e.value)):t.value=C(e.value),e.description&&(t.description="string"==typeof e.description?e.description:e.description?.content||""),t})):[]),color:r.color||null},n=m(r.extends);n&&(s.extends=n);const o=(e=>{if(!e||"object"!=typeof e)return;const t=C(e.type),r=Pe[t];if(!r)return;return{type:t,variables:Array.isArray(e.variables)?e.variables.filter((e=>e&&e.name)).map((e=>({uid:_(),name:C(e.name),enabled:!0!==e.disabled,[r]:C(e[r])}))):[]}})(r.externalSecrets);return o&&(s.externalSecrets=o),s}catch(e){throw console.error("Error parsing environment:",e),e}var t},Se=e=>{const t=Number(e?.response?.status)||200,r=C(e?.response?.statusText),s={name:C(e?.name,"Untitled Mock Response"),description:C(e?.description),request:{url:C(e?.request?.url,"/"),method:C(e?.request?.method,"GET"),headers:V(e?.request?.headers)||[],params:Z(e?.request?.params)||[],body:te(e?.request?.body)||{mode:"none",json:null,text:null,xml:null,sparql:null,formUrlEncoded:null,multipartForm:null,graphql:null,file:null}},response:{status:t,statusText:"OK"===r&&200!==t?"":r,headers:V(e?.response?.headers)||[],body:{type:C(e?.response?.body?.type,"json"),content:C(e?.response?.body?.data)}},rules:{operator:"OR"===e?.rules?.operator?"OR":"AND",conditions:(n=e?.rules?.conditions,Array.isArray(n)?n.map((e=>({target:C(e?.target),key:C(e?.key),operator:C(e?.operator,"equals"),value:C(e?.value)}))):[])}};var n;const o=e?.copiedFrom?.example,a=e?.copiedFrom?.requestPath,i=E(o)?o:null,c=E(a)?a:null;return(i||c)&&(s.copiedFrom={exampleName:i,requestPathname:c}),s},Re=e=>{try{switch(e.type){case"http-request":return(e=>{try{const t={},r=e.request,s={name:E(e.name)?e.name:"Untitled Request",type:"http"};e.seq&&(s.seq=e.seq),e.tags?.length&&(s.tags=e.tags),E(e.description)&&(s.description=e.description),t.info=s;const n={method:E(r.method)?r.method:"GET",url:E(r.url)?r.url:""},o=D(r.headers);o&&(n.headers=o);const a=Y(r.params);a&&(n.params=a);const i=ee(r.body);i&&(n.body=i);const c=G(r.auth);c&&(n.auth=c),t.http=n;const l={};let u=!1;const p=ie(r.vars);p&&(l.variables=p,u=!0);const d=pe(r,q);d&&(l.scripts=d,u=!0);const m=ge(r.assertions);m&&(l.assertions=m,u=!0);const f=r.vars?.res,y=le(f);y&&(l.actions=y,u=!0),u&&(t.runtime=l);const b=e.settings,k={};k.encodeUrl=!0===b?.encodeUrl||!1!==b?.encodeUrl,k.timeout=h(b?.timeout),k.followRedirects=!0===b?.followRedirects||!1!==b?.followRedirects,k.maxRedirects=g(b?.maxRedirects),k.forwardAuthorizationHeader=b?.forwardAuthorizationHeader??!0;const v=ye(b?.omitHeaders);if(v&&(k.omitHeaders=v),t.settings=k,e.examples?.length){const r=e.examples.map((e=>{const t={};if(t.name=e?.name||"Untitled Example",E(e.description)&&(t.description=e.description),e.request){t.request={},t.request.url=e.request.url||"",t.request.method=e.request.method||"GET";const r=D(e.request.headers);r&&(t.request.headers=r);const s=Y(e.request.params);s&&(t.request.params=s);const n=ee(e.request.body);void 0!==n&&(t.request.body=n)}if(e.response){t.response={};const r=Number(e.response.status);Number.isInteger(r)&&r>0&&(t.response.status=r),E(e.response.statusText)&&(t.response.statusText=e.response.statusText);const s=X(e.response.headers);if(s&&(t.response.headers=s),e.response.body&&e.response.body.type&&void 0!==e.response.body.content){const r=e.response.body.content,s="string"==typeof r?r:JSON.stringify(r,null,2);t.response.body={type:e.response.body.type,data:s}}}return t}));r?.length&&(t.examples=r)}E(r.docs)&&(t.docs=r.docs);const w=(e=>{if(!e||!e.code&&!0!==e.enabled)return;const t={};return!0===e.enabled&&(t.enabled=!0),e.code&&(t.code=e.code),t})(e.app);return w&&(t.app=w),I(t)}catch(e){throw console.error("Error stringifying HTTP request:",e),e}})(e);case"graphql-request":return(e=>{try{const t={},r=e.request,s={name:E(e.name)?e.name:"Untitled Request",type:"graphql"};e.seq&&(s.seq=e.seq),e.tags?.length&&(s.tags=e.tags),E(e.description)&&(s.description=e.description),t.info=s;const n={method:E(r.method)?r.method:"POST",url:E(r.url)?r.url:""},o=D(r.headers);o&&(n.headers=o);const a=Y(r.params);if(a&&(n.params=a),"graphql"===r.body?.mode&&r.body.graphql){const e={};let t=!1;E(r.body.graphql.query)&&(e.query=r.body.graphql.query,t=!0),E(r.body.graphql.variables)&&(e.variables=r.body.graphql.variables,t=!0),t&&(n.body=e)}const i=G(r.auth);i&&(n.auth=i),t.graphql=n;const c={};let l=!1;const u=ie(r.vars);u&&(c.variables=u,l=!0);const p=pe(r,q);p&&(c.scripts=p,l=!0);const d=ge(r.assertions);d&&(c.assertions=d,l=!0);const m=r.vars?.res,f=le(m);f&&(c.actions=f,l=!0),l&&(t.runtime=c);const y=e.settings,b={};return b.encodeUrl=!0===y?.encodeUrl||!1!==y?.encodeUrl,b.timeout=h(y?.timeout),b.followRedirects=!0===y?.followRedirects||!1!==y?.followRedirects,b.maxRedirects=g(y?.maxRedirects),b.forwardAuthorizationHeader=y?.forwardAuthorizationHeader??!0,t.settings=b,E(r.docs)&&(t.docs=r.docs),I(t)}catch(e){throw console.error("Error stringifying GraphQL request:",e),e}})(e);case"grpc-request":return(e=>{try{const t={},r=e.request,s={name:E(e.name)?e.name:"Untitled Request",type:"grpc"};e.seq&&(s.seq=e.seq),e.tags?.length&&(s.tags=e.tags),E(e.description)&&(s.description=e.description),t.info=s;const n={url:E(r.url)?r.url:"",method:E(r.method)?r.method:""};if(r.methodType&&(n.methodType=r.methodType),E(r.protoPath)&&(n.protoFilePath=r.protoPath),r.headers?.length){const e=r.headers.map((e=>{const t={name:e.name||"",value:e.value||""};return e?.description?.trim().length&&(t.description=e.description),!1===e.enabled&&(t.disabled=!0),t}));e.length&&(n.metadata=e)}if("grpc"===r.body?.mode&&r.body.grpc?.length){const e=r.body.grpc.map((({name:e,content:t},r)=>({title:e||`message ${r+1}`,message:t||""})));n.message=e}const o=G(r.auth);o&&(n.auth=o),t.grpc=n;const a={};let i=!1;const c=ie(r.vars);c&&(a.variables=c,i=!0);const l=pe(r,b);l&&(a.scripts=l,i=!0);const u=ge(r.assertions);return u&&(a.assertions=u,i=!0),i&&(t.runtime=a),E(r.docs)&&(t.docs=r.docs),I(t)}catch(e){throw console.error("Error stringifying gRPC request:",e),e}})(e);case"ws-request":return(e=>{try{const t={},r=e.request,s={name:E(e.name)?e.name:"Untitled Request",type:"websocket"};e.seq&&(s.seq=e.seq),e.tags?.length&&(s.tags=e.tags),E(e.description)&&(s.description=e.description),t.info=s;const n={url:E(r.url)?r.url:""},o=D(r.headers);if(o&&(n.headers=o),"ws"===r.body?.mode&&r.body.ws?.length){const e=r.body.ws,t=1===e.length&&e[0].name&&e[0].name.trim().length>0,s=1===e.length&&(e[0].content||"").trim().length>0;if(1===e.length&&!t&&s){const t=e[0],r={type:t.type||"text",data:t.content||""};n.message=r}else{const t=e.map(((e,t)=>({title:e.name||`message ${t+1}`,selected:e.selected||!1,message:{type:e.type||"text",data:e.content||""}})));n.message=t}}const a=G(r.auth);a&&(n.auth=a),t.websocket=n;const i={};let c=!1;const l=ie(r.vars);l&&(i.variables=l,c=!0);const u=pe(r,q);u&&(i.scripts=u,c=!0),c&&(t.runtime=i);const p=e.settings;if(p){t.settings={};const e=Number(p.timeout);t.settings.timeout=isNaN(e)?0:e;const r=Number(p.keepAliveInterval);t.settings.keepAliveInterval=isNaN(r)?0:r}return E(r.docs)&&(t.docs=r.docs),I(t)}catch(e){throw console.error("Error stringifying WebSocket request:",e),e}})(e);case"js":return(e=>{try{const t={type:"script"};return e.fileContent?.trim().length&&(t.script=e.fileContent),I(t)}catch(e){throw console.error("Error stringifying script:",e),e}})(e);case"app":return(e=>{try{const t={name:e.name&&e.name.trim().length?e.name:"App",type:"app"};"number"==typeof e.seq&&(t.seq=e.seq),Array.isArray(e.tags)&&e.tags.length&&(t.tags=e.tags);const r={info:t},s=e.app?.code;return s&&s.trim().length&&(r.code=s),I(r)}catch(e){throw console.error("Error stringifying app:",e),e}})(e);case"folder":throw new Error("Folder items should be handled separately using stringifyFolder");default:throw new Error(`Unsupported item type: ${e.type}`)}}catch(e){throw console.error("Error stringifying item:",e),e}},Ee=e=>Boolean("none"!==e.request?.auth?.mode),Ce=e=>Boolean(e.request?.script?.req||e.request?.script?.res||e.request?.tests),_e=e=>{try{const t={},r={name:e.meta?.name||"Untitled Folder",type:"folder"},s=e.meta?.seq;if("number"==typeof s&&Number.isFinite(s)&&(r.seq=s),t.info=r,(e=>{const t=e?.request;return Boolean(t?.headers?.length||t?.vars?.req?.length||t?.vars?.res?.length||Ce(e)||Ee(e))})(e)){if(t.request={},e.request?.headers?.length){const r=D(e.request?.headers);r&&(t.request.headers=r)}if(Ee(e)){const r=G(e.request?.auth);r&&(t.request.auth=r)}if(e.request?.vars?.req?.length){const r=ie(e.request?.vars);r&&(t.request.variables=r)}if(e.request?.vars?.res?.length){const r=le(e.request?.vars?.res);r&&(t.request.actions=r)}if(Ce(e)){const r=pe(e?.request,q);r&&(t.request.scripts=r)}}return e.docs?.trim().length&&(t.docs={content:e.docs,type:"text/markdown"}),I(t)}catch(e){throw console.error("Error stringifying folder.yml:",e),e}},je=e=>{const t=e?.request?.auth?.mode;return Boolean(t&&"none"!==t)},Ae=e=>!!e?.request&&(e.request.script?.req||e.request.script?.res||e.request.tests),Ne=e=>e?.presets?.requestType?.length||e?.presets?.requestUrl?.length||e?.presets?.defaultEnvironment?.length,Fe=(e,t)=>{try{const r={opencollection:"1.0.0"};if(r.info={name:t.name||"Untitled Collection"},null!=t.version&&""!==t.version&&(r.info.version=String(t.version)),(e=>{const t=e.protobuf?.protoFiles?.length>0||e.protobuf?.importPaths?.length>0,r=e.proxy&&"object"==typeof e.proxy&&"inherit"in e.proxy&&e.proxy.config&&"object"==typeof e.proxy.config,s=e.clientCertificates?.certs?.length>0;return t||r||s})(t)){r.config={},(t.protobuf?.protoFiles?.length||t.protobuf?.importPaths?.length)&&(r.config.protobuf={},t.protobuf.protoFiles?.length&&(r.config.protobuf.protoFiles=t.protobuf.protoFiles.map((e=>({type:"file",path:e.path})))),t.protobuf.importPaths?.length&&(r.config.protobuf.importPaths=t.protobuf.importPaths.map((e=>{const t={path:e.path};return!1===e.enabled&&(t.disabled=!0),t}))));t.proxy&&"object"==typeof t.proxy&&"inherit"in t.proxy&&t.proxy.config&&"object"==typeof t.proxy.config&&(r.config.proxy={inherit:t.proxy.inherit,config:{protocol:t.proxy.config.protocol||"http",hostname:t.proxy.config.hostname||"",port:t.proxy.config.port||"",auth:{username:t.proxy.config.auth?.username||"",password:t.proxy.config.auth?.password||""},bypassProxy:t.proxy.config.bypassProxy||""}},!0===t.proxy.disabled&&(r.config.proxy.disabled=!0),!0===t.proxy.config?.auth?.disabled&&r.config.proxy.config&&r.config.proxy.config.auth&&(r.config.proxy.config.auth.disabled=!0)),t.clientCertificates?.certs?.length&&(r.config.clientCertificates=t.clientCertificates.certs.map((e=>{if("cert"===e.type){return{domain:e.domain,type:"pem",certificateFilePath:e.certFilePath,privateKeyFilePath:e.keyFilePath,...e.passphrase&&{passphrase:e.passphrase},...!0===e.disabled&&{disabled:!0}}}if("pfx"===e.type){return{domain:e.domain,type:"pkcs12",pkcs12FilePath:e.pfxFilePath,...e.passphrase&&{passphrase:e.passphrase},...!0===e.disabled&&{disabled:!0}}}return null})).filter((e=>null!==e)))}if((e=>{const t=e?.request;return Boolean(t?.headers?.length||t?.vars?.req?.length||t?.vars?.res?.length||Ae(e)||je(e))})(e)){if(r.request={},e.request?.headers?.length){const t=D(e.request?.headers);t&&(r.request.headers=t)}if(je(e)){const t=G(e.request?.auth);t&&(r.request.auth=t)}if(e.request?.vars?.req?.length){const t=ie(e.request?.vars);t&&(r.request.variables=t)}if(e.request?.vars?.res?.length){const t=le(e.request?.vars?.res);t&&(r.request.actions=t)}if(Ae(e)){const t=pe(e.request,q);t&&(r.request.scripts=t)}}e?.docs?.trim().length&&(r.docs={content:e.docs,type:"text/markdown"}),r.bundled=!1,r.extensions={};if(t.ignore?.length||Ne(t)){const e={};if(t.ignore?.length){const r=[];t.ignore.forEach((e=>{r.push(e)})),e.ignore=r}if(Ne(t)){const r={},s={};t.presets.requestType?.length&&(s.type=t.presets.requestType),t.presets.requestUrl?.length&&(s.url=t.presets.requestUrl),Object.keys(s).length&&(r.request=s),t.presets.defaultEnvironment?.length&&(r.defaultEnvironment=t.presets.defaultEnvironment),e.presets=r}r.extensions.bruno=e}const s={};t.scripts?.additionalContextRoots?.length&&(s.additionalContextRoots=t.scripts.additionalContextRoots),"sandwich"!==t.scripts?.flow&&"sequential"!==t.scripts?.flow||(s.flow=t.scripts.flow),Object.keys(s).length>0&&(r.extensions.bruno||(r.extensions.bruno={}),r.extensions.bruno.scripts=s);const n=y(t.openapi);return n.length>0&&(r.extensions.bruno||(r.extensions.bruno={}),r.extensions.bruno.openapi=n),I(r)}catch(e){throw console.error("Error stringifying opencollection.yml:",e),e}},ze=e=>{try{const t={name:e.name},r=m(e.extends);if(r&&(t.extends=r),e.color&&(t.color=e.color),e.variables?.length){const r=(e=>{if(!e?.length)return;const t=e.map((e=>{if("secret"in e&&!0===e.secret){const t={secret:!0,name:e.name||""};return ne(e)&&(t.type=e.dataType),!1===e.enabled&&(t.disabled=!0),void 0!==e.description&&(t.description=e.description),t}const t=re(e.value),r={name:e.name||"",value:ne(e)?oe(e,t):t};return!1===e.enabled&&(r.disabled=!0),void 0!==e.description&&(r.description=e.description),r}));return t.length>0?t:void 0})(e.variables);r&&(t.variables=r)}const s=(e=>{const t=e?.type,r=t&&Pe[t];if(!t||!r)return;return{type:t,variables:(e?.variables||[]).filter((e=>e&&e.name)).map((e=>{const t={name:e.name,[r]:C(e[r])};return!1===e.enabled&&(t.disabled=!0),t}))}})(e.externalSecrets);return s&&(t.externalSecrets=s),I(t)}catch(e){throw console.error("Error stringifying environment:",e),e}},Ie=e=>{const t={name:e.name||"Untitled Mock Response"};E(e.description)&&(t.description=e.description),t.request={method:e.request?.method||"GET",url:e.request?.url||"/"};const r=D(e.request?.headers);r&&(t.request.headers=r);const s=Y(e.request?.params);s&&(t.request.params=s);const n=ee(e.request?.body);void 0===n||Array.isArray(n)||(t.request.body=n),t.response={status:Number(e.response?.status)||200},E(e.response?.statusText)&&(t.response.statusText=e.response.statusText);const o=X(e.response?.headers);o&&(t.response.headers=o);const a=e.response?.body;if(a&&a.type){const e=a.content;t.response.body={type:a.type,data:"string"==typeof e?e:JSON.stringify(e,null,2)}}var i;return e.rules?.conditions?.length&&(t.rules={operator:"OR"===e.rules.operator?"OR":"AND",conditions:(i=e.rules.conditions,i.map((e=>({target:e.target||"",key:e.key||"",operator:e.operator||"equals",value:e.value||""}))))}),e.copiedFrom&&(e.copiedFrom.exampleName||e.copiedFrom.requestPathname)&&(t.copiedFrom={},e.copiedFrom.exampleName&&(t.copiedFrom.example=e.copiedFrom.exampleName),e.copiedFrom.requestPathname&&(t.copiedFrom.requestPath=e.copiedFrom.requestPathname)),t};class Ke{constructor(){this.queue=[],this.isProcessing=!1,this.workers={}}async getWorkerForScriptPath(e){this.workers||(this.workers={});let t=this.workers[e];return t&&-1!==t.threadId||(this.workers[e]=t=new k(e)),t}async enqueue(e){const{priority:t,scriptPath:r,data:s,taskType:n}=e;return new Promise(((e,o)=>{this.queue.push({priority:t,scriptPath:r,data:s,taskType:n,resolve:e,reject:o}),this.queue?.sort(((e,t)=>e?.priority-t?.priority)),this.processQueue()}))}async processQueue(){if(this.isProcessing||0===this.queue.length)return;this.isProcessing=!0;const{scriptPath:e,data:t,taskType:r,resolve:s,reject:n}=this.queue.shift();try{const n=await this.runWorker({scriptPath:e,data:t,taskType:r});s?.(n)}catch(e){n?.(e)}finally{this.isProcessing=!1,this.processQueue()}}async runWorker({scriptPath:e,data:t,taskType:r}){return new Promise((async(s,n)=>{let o=await this.getWorkerForScriptPath(e);const a=e=>{o.off("message",a),o.off("error",i),o.off("exit",c),e?.error?n(new Error(e?.error)):s(e)},i=e=>{o.off("message",a),o.off("error",i),o.off("exit",c),n(e)},c=t=>{o.off("message",a),o.off("error",i),o.off("exit",c),delete this.workers[e],n(new Error(`Worker stopped with exit code ${t}`))};o.on("message",a),o.on("error",i),o.on("exit",c),o.postMessage({taskType:r,data:t})}))}async cleanup(){const e=Object.values(this.workers).map((e=>-1!==e.threadId?e.terminate():Promise.resolve()));await Promise.allSettled(e),this.workers={}}}const Oe=[{maxSize:.005},{maxSize:.1},{maxSize:1},{maxSize:10},{maxSize:100}];class $e{constructor(){this.workerQueues=Oe?.map((e=>({maxSize:e?.maxSize,workerQueue:new Ke})))}getWorkerQueue(e){const t=this.workerQueues.find((t=>t.maxSize>=e));return t?.workerQueue??this.workerQueues[this.workerQueues.length-1].workerQueue}async enqueueTask({data:e,taskType:t,format:r=Te}){const s=(e=>("string"==typeof e?Buffer.byteLength(e,"utf8"):Buffer.byteLength(JSON.stringify(e),"utf8"))/1048576)(e),n=this.getWorkerQueue(s),o=v.join(__dirname,"./workers/worker-script.js");return n.enqueue({data:{data:e,format:r},priority:s,scriptPath:o,taskType:t})}async parseRequest(e,t=Te){return this.enqueueTask({data:e,taskType:"parse",format:t})}async stringifyRequest(e,t=Te){return this.enqueueTask({data:e,taskType:"stringify",format:t})}async parseFolder(e,t=Te){return this.enqueueTask({data:e,taskType:"parseFolder",format:t})}async stringifyFolder(e,t=Te){return this.enqueueTask({data:e,taskType:"stringifyFolder",format:t})}async parseEnvironment(e,t=Te){return this.enqueueTask({data:e,taskType:"parseEnvironment",format:t})}async stringifyEnvironment(e,t=Te){return this.enqueueTask({data:e,taskType:"stringifyEnvironment",format:t})}async cleanup(){const e=this.workerQueues.map((({workerQueue:e})=>e.cleanup()));await Promise.allSettled(e)}}const Be=new RegExp(`^(${["body:graphql:vars","body:graphql","body:json","body:text","body:xml","body:sparql","script:pre-request","script:post-response","script:grpc:before-call-start","script:grpc:before-message-send","script:grpc:after-message-receive","script:grpc:after-call-end","tests","docs","body"].join("|")})[ \\t]*\\{\\r?$`),Me=e=>Be.test(e),He=e=>e.startsWith("}"),Qe=e=>`__BRU_REDACTED_TEXT_BLOCK_${w("sha256").update(e).digest("hex").slice(0,16)}__`,We=e=>i(e.join("\n").replace(/^(?:\r?\n)+/,"").replace(/\r$/,"")),Le=/^app[ \t]*\{\r?$/,Ge=e=>{const t=e||"",r=[],s=[];let n=null,o=[];for(const e of((e,t)=>{const r=e.split("\n"),s=r.findIndex((e=>Le.test(e)));if(-1===s)return e;const n=r.findIndex(((e,t)=>t>s&&He(e))),o=-1===n?r.length:n,a=r.findIndex(((e,t)=>t>s&&t<o&&"code: '''"===e.trim()));if(-1===a)return e;const i=r.findIndex(((e,t)=>t>a&&t<o&&"'''"===e.trim()));if(-1===i)return e;const c=r.slice(a+1,i),l=(e=>e.map((e=>e.slice(4))).join("\n").trim())(c);if(!l.length)return e;const u=Qe(c.join("\n"));return t.push({token:u,value:l}),[...r.slice(0,a+1),` ${u}`,...r.slice(i)].join("\n")})(t,s).split("\n"))if(null===n&&Me(e))n=e,o=[];else if(null!==n&&He(e)){const t=Qe(o.join("\n"));s.push({token:t,value:We(o)}),r.push(n,` ${t}`,e),n=null}else(null===n?r:o).push(e);return null!==n&&r.push(n,...o),s.some((e=>t.includes(e.token)))?(console.warn("[bruno-filestore] Token collision detected; skipping redaction"),{skeleton:t,blocks:[]}):{skeleton:r.join("\n"),blocks:s}},Je=(e,t)=>{if(!t.length)return e;const r=new Map(t.map((e=>[e.token,e.value]))),s=e=>{if("string"==typeof e)return r.get(e)??e;if(e&&"object"==typeof e)for(const t of Object.keys(e))e[t]=s(e[t]);return e};return s(e)},De=({secretsJsonData:e,environments:t})=>{const r=(e=>{const t=e?.type;return"aws-secrets-manager"===t?"aws-secrets-manager":"azure-key-vault"===t?"azure-key-vault":"vault"===t?"vault-cloud"===e?.cli?.type?"hashicorp-vault-cloud":"hashicorp-vault-server":null})(e);return t.map((t=>{const s={name:t.name,environment:t,changed:!1};if(t.externalSecrets||!r)return s;const n=e?.data?.find((e=>e?.environment===t.name)),o=((e,t)=>{if("aws-secrets-manager"===t)return{type:t,variables:(e||[]).filter((e=>e?.name&&"string"==typeof e.secretName&&e.secretName.length>0)).map((e=>({uid:_(),name:e.name,secretName:e.secretName,enabled:!1!==e.enabled})))};if("azure-key-vault"===t)return{type:t,variables:(e||[]).filter((e=>e?.name&&"string"==typeof e.vaultName&&e.vaultName.length>0)).map((e=>({uid:_(),name:e.name,vaultName:e.vaultName,enabled:!1!==e.enabled})))};if("hashicorp-vault-cloud"===t||"hashicorp-vault-server"===t)return{type:t,variables:(e||[]).filter((e=>e?.name&&"string"==typeof e.path&&e.path.length>0)).map((e=>({uid:_(),name:e.name,path:e.path,enabled:!1!==e.enabled})))};return null})(n?.secrets,r);return o?{name:t.name,environment:{...t,externalSecrets:o},changed:!0}:s}))},Xe=(r,s={format:Te})=>{if("bru"===s.format)return((r,s=!1)=>{try{const n=s?r:t(r);if("app"===e.get(n,"meta.type")){const t=e.get(n,"meta.seq"),r=e.get(n,"meta.tags",[]);return{type:"app",name:e.get(n,"meta.name"),seq:e.isNaN(t)?1:Number(t),tags:Array.isArray(r)?r:[],settings:e.get(n,"settings",{}),app:{code:e.get(n,"app.code",null)},request:null}}let o=e.get(n,"meta.type");switch(o){case"http":default:o="http-request";break;case"graphql":o="graphql-request";break;case"grpc":o="grpc-request";break;case"ws":o="ws-request"}const a=e.get(n,"meta.seq"),i=e.get(n,"meta.tags",[]),c={"grpc-request":"grpc.url","ws-request":"ws.url",default:"http.url"},l=e.get(n,"app"),u=l?{code:e.get(l,"code",null),enabled:!0===e.get(l,"enabled",!1)}:null,p={type:o,name:e.get(n,"meta.name"),seq:e.isNaN(a)?1:Number(a),settings:e.get(n,"settings",{}),app:u,tags:Array.isArray(i)?i:[],request:{method:"grpc-request"===o?e.get(n,"grpc.method",""):String(e.get(n,"http.method")??"").toUpperCase(),url:e.get(n,c[o],e.get(n,c.default)),headers:"grpc-request"===o?e.get(n,"metadata",[]):e.get(n,"headers",[]),auth:e.get(n,"auth",{}),body:e.get(n,"body",{}),script:e.get(n,"script",{}),vars:e.get(n,"vars",{}),assertions:e.get(n,"assertions",[]),tests:e.get(n,"tests",""),docs:e.get(n,"docs","")},examples:e.get(n,"examples",[]).map((t=>N(t,!0,o,e.get(n,"http.method"))))};if("grpc-request"===o){const t=e.get(n,"grpc.methodType");t&&(p.request.methodType=t);const r=e.get(n,"grpc.protoPath");r&&(p.request.protoPath=r),p.request.auth.mode=e.get(n,"grpc.auth","none"),p.request.body=e.get(n,"body",{mode:"grpc",grpc:e.get(n,"body.grpc",[{name:"message 1",content:"{}"}])})}else"ws-request"===o?(p.request.auth.mode=e.get(n,"ws.auth","none"),p.request.body=e.get(n,"body",{mode:"ws",ws:e.get(n,"body.ws",[{name:"message 1",content:"{}"}])})):(p.request.params=e.get(n,"params",[]),p.request.auth.mode=e.get(n,"http.auth","none"),p.request.body.mode=e.get(n,"http.body","none"));const d=n?.auth?.oauth2?.grantType;if(d){const e=U(n);Object.keys(e||{}).length>0&&(p.request.auth.oauth2.additionalParameters=e)}return p}catch(e){throw console.log("parseBruRequest error",e),e}})(r);if("yml"===s.format)return xe(r);throw new Error(`Unsupported format: ${s.format}`)},Ve=(e,t={format:"bru"})=>{if("bru"===t.format)return(e=>{try{const t=["body:json {","body:text {","body:xml {","body:sparql {","body:graphql {"];e=(e||"").replace(/\r\n/g,"\n");const r="\n",s=e=>e&&e.length?e.split(r).map((e=>e.replace(/^ /,""))).join(r):e||"";let n=e.split(`${r}}${r}`);n=n.filter(Boolean).map((e=>e.trim()));const o=n.filter((e=>t.some((t=>e.startsWith(t))))).reduce(((e,t)=>{const n=t.split(r)[0].split("body:")[1].split(/\s/)[0],o=t.split(r).slice(1).join(r),a=s(o);return e[n]=a,e}),{});return{bruFileStringWithRedactedBody:n.filter((e=>!t.some((t=>e.startsWith(t))))).join(`${r}}${r}${r}`).concat(`${r}}${r}`),extractedBodyContent:o}}catch(t){return console.error("Error parsing and redacting body data:",t),{bruFileStringWithRedactedBody:e,extractedBodyContent:{}}}})(e);throw new Error(`Unsupported format: ${t.format}`)},Ye=(t,s={format:Te})=>{if("bru"===s.format)return(t=>{try{if("app"===e.get(t,"type")){const s=e.get(t,"seq"),n={meta:{name:e.get(t,"name"),type:"app",seq:e.isNaN(s)?1:Number(s),tags:e.get(t,"tags",[])},settings:e.get(t,"settings",{}),app:{code:e.get(t,"app.code","")}};return r(n)}let s=e.get(t,"type");switch(s){case"http-request":default:s="http";break;case"graphql-request":s="graphql";break;case"grpc-request":s="grpc";break;case"ws-request":s="ws"}const n=e.get(t,"seq"),o={meta:{name:e.get(t,"name"),type:s,seq:e.isNaN(n)?1:Number(n),tags:e.get(t,"tags",[])}};if("http"===s||"graphql"===s)o.http={method:String(e.get(t,"request.method")??"").toLowerCase(),url:e.get(t,"request.url"),auth:e.get(t,"request.auth.mode","none"),body:e.get(t,"request.body.mode","none")},o.params=e.get(t,"request.params",[]),o.body=e.get(t,"request.body",{mode:"json",json:"{}"});else if("grpc"===s){o.grpc={url:e.get(t,"request.url"),auth:e.get(t,"request.auth.mode","none"),body:e.get(t,"request.body.mode","grpc")};const r=e.get(t,"request.method"),s=e.get(t,"request.methodType"),n=e.get(t,"request.protoPath");r&&(o.grpc.method=r),s&&(o.grpc.methodType=s),n&&(o.grpc.protoPath=n),o.body=e.get(t,"request.body",{mode:"grpc",grpc:e.get(t,"request.body.grpc",[{name:"message 1",content:"{}"}])})}else"ws"===s&&(o.ws={url:e.get(t,"request.url"),auth:e.get(t,"request.auth.mode","none"),body:e.get(t,"request.body.mode","ws")},o.body=e.get(t,"request.body",{mode:"ws",ws:e.get(t,"request.body.ws",[{name:"message 1",content:"{}"}])}));"grpc"===s?o.metadata=e.get(t,"request.headers",[]):o.headers=e.get(t,"request.headers",[]),o.auth=e.get(t,"request.auth",{}),o.script=e.get(t,"request.script",{}),o.vars={req:e.get(t,"request.vars.req",[]),res:e.get(t,"request.vars.res",[])},o.assertions=e.get(t,"request.assertions",[]),o.tests=e.get(t,"request.tests",""),o.settings=e.get(t,"settings",{}),o.docs=e.get(t,"request.docs",""),o.examples=e.get(t,"examples",[]).map((e=>F(e)));const a=e.get(t,"app");return a&&(!0===a.enabled||a.code&&a.code.length)&&(o.app={code:a.code||null,enabled:!0===a.enabled}),r(o)}catch(e){throw e}})(t);if("yml"===s.format)return Re(t);throw new Error(`Unsupported format: ${s.format}`)};let Ze=null;const et=()=>(Ze||(Ze=new $e),Ze),tt=async(e,t)=>{const r=et();return await r.parseRequest(e,t.format)},rt=async(e,t)=>{const r=et();return await r.stringifyRequest(e,t.format)},st=async(e,t)=>await et().parseFolder(e,t.format),nt=async(e,t)=>await et().stringifyFolder(e,t.format),ot=async(e,t)=>await et().parseEnvironment(e,t.format),at=async(e,t)=>await et().stringifyEnvironment(e,t.format),it=(e,t={format:Te})=>{if("bru"===t.format)return j(e);if("yml"===t.format)return(e=>{try{const t=K(e),r={opencollection:t.opencollection||"1.0.0",name:C(t.info?.name,"Untitled Collection"),type:"collection",ignore:[]};null!=t.info?.version&&""!==t.info.version&&(r.version=C(t.info.version,""));const s=t.extensions?.bruno;if(s?.ignore&&Array.isArray(s.ignore)&&(r.ignore=s.ignore),s?.presets){const e=s.presets;(e.request||e.defaultEnvironment)&&(r.presets={requestType:e.request?.type||"",requestUrl:e.request?.url||""},e.defaultEnvironment&&(r.presets.defaultEnvironment=e.defaultEnvironment))}const n=t.extensions?.bruno;if(Array.isArray(n?.scripts?.additionalContextRoots)){const e=n.scripts.additionalContextRoots.filter((e=>"string"==typeof e));e.length>0&&(r.scripts={...r.scripts,additionalContextRoots:e})}"sandwich"!==n?.scripts?.flow&&"sequential"!==n?.scripts?.flow||(r.scripts={...r.scripts,flow:n.scripts.flow});const o=y(n?.openapi);if(o.length>0&&(r.openapi=o),t.config?.protobuf&&(r.protobuf={protoFiles:t.config.protobuf.protoFiles?.map((e=>({path:e.path})))||[],importPaths:t.config.protobuf.importPaths?.map((e=>({path:e.path,enabled:!0!==e.disabled})))||[]}),r.proxy={inherit:!0,config:{protocol:"http",hostname:"",port:"",auth:{username:"",password:""},bypassProxy:""}},t.config?.proxy&&"object"==typeof t.config.proxy){const e=t.config.proxy;"inherit"in e&&"boolean"==typeof e.inherit&&e.config&&"object"==typeof e.config&&(r.proxy={inherit:e.inherit,config:{protocol:e.config.protocol||"http",hostname:e.config.hostname||"",port:e.config.port||"",auth:{username:e.config.auth?.username||"",password:e.config.auth?.password||""},bypassProxy:e.config.bypassProxy||""}},!0===e.disabled&&(r.proxy.disabled=!0),!0===e.config.auth?.disabled&&(r.proxy.config.auth.disabled=!0))}t.config?.clientCertificates?.length&&(r.clientCertificates={certs:t.config.clientCertificates.map((e=>"pem"===e.type?{domain:e.domain,type:"cert",certFilePath:e.certificateFilePath,keyFilePath:e.privateKeyFilePath,passphrase:e.passphrase||"",...!0===e.disabled&&{disabled:!0}}:"pkcs12"===e.type?{domain:e.domain,type:"pfx",pfxFilePath:e.pkcs12FilePath,passphrase:e.passphrase||"",...!0===e.disabled&&{disabled:!0}}:null)).filter((e=>null!==e))});const a={meta:null,request:null,docs:null};if(t.request){a.request={headers:null,auth:null,script:{req:null,res:null},vars:{req:[],res:[]},tests:null};const e=V(t.request.headers);a.request.headers=e||[];const r=J(t.request.auth);r&&(a.request.auth=r);const s=ce(t.request.variables),n=ue(t.request.actions);a.request.vars={req:s.req,res:n};const o=de(t.request.scripts);o?.script&&a.request.script&&(o.script.req&&(a.request.script.req=o.script.req),o.script.res&&(a.request.script.res=o.script.res)),o?.tests&&(a.request.tests=o.tests)}return t.docs&&("string"==typeof t.docs?a.docs=t.docs:"object"==typeof t.docs&&t.docs.content&&(a.docs=t.docs.content)),{collectionRoot:a,brunoConfig:r}}catch(e){throw console.error("Error parsing collection:",e),e}})(e);throw new Error(`Unsupported format: ${t.format}`)},ct=(e,t,r={format:Te})=>{if("bru"===r.format)return A(e,!1);if("yml"===r.format)return Fe(e,t);throw new Error(`Unsupported format: ${r.format}`)},lt=(e,t={format:Te})=>{if("bru"===t.format)return j(e);if("yml"===t.format)return(e=>{try{const t=K(e),r=t.info,s=r?.seq,n={meta:{name:C(r?.name,"Untitled Folder"),..."number"==typeof s&&Number.isFinite(s)?{seq:s}:{}},request:{headers:[],auth:J(t.request?.auth),script:{req:null,res:null},vars:{req:[],res:[]},tests:null},docs:null};if(t.request){const e=n.request,r=V(t.request.headers);r&&(e.headers=r);const s=ce(t.request.variables),o=ue(t.request.actions);e.vars={req:s.req,res:o};const a=de(t.request.scripts);a?.script&&e.script&&(a.script.req&&(e.script.req=a.script.req),a.script.res&&(e.script.res=a.script.res)),a?.tests&&(e.tests=a.tests)}return t.docs&&("string"==typeof t.docs&&t.docs.trim().length?n.docs=t.docs:"object"==typeof t.docs&&t.docs.content?.trim().length&&(n.docs=t.docs.content)),n}catch(e){throw console.error("Error parsing folder:",e),e}})(e);throw new Error(`Unsupported format: ${t.format}`)},ut=(e,t={format:Te})=>{if("bru"===t.format)return A(e,!0);if("yml"===t.format)return _e(e);throw new Error(`Unsupported format: ${t.format}`)},pt=(t,r={format:Te})=>{if("bru"===r.format)return(t=>{try{const r=o(t);return r&&r.variables&&r.variables.length&&e.each(r.variables,(e=>e.type="text")),r?.externalSecrets&&Array.isArray(r.externalSecrets.variables)&&(r.externalSecrets.variables=r.externalSecrets.variables.map((e=>({uid:_(),...e})))),r}catch(e){return Promise.reject(e)}})(t);if("yml"===r.format)return Ue(t);throw new Error(`Unsupported format: ${r.format}`)},dt=(e,t={format:Te})=>{if("bru"===t.format)return(e=>{try{return a(e)}catch(e){throw e}})(e);if("yml"===t.format)return ze(e);throw new Error(`Unsupported format: ${t.format}`)},mt=(e,t={format:"yml"})=>{if("yml"===t.format)return(e=>{const t=K(e);if(!t||"object"!=typeof t||Array.isArray(t))throw new Error("Invalid mock server file");const r=t.info||{},s=t.mock||{},n={name:C(r.name,"Mock Server"),port:Number(s.port)||null,delay:Number(s.delay)||0,source:null,routes:Array.isArray(t.routes)?t.routes.map(Se):[]},o=s.source?.type,a=s.source?.path;return"collection"!==o&&"spec"!==o||!E(a)||(n.source={type:o,path:a}),n})(e);throw new Error(`Unsupported format: ${t.format}`)},ht=(e,t={format:"yml"})=>{if("yml"===t.format)return(e=>{try{const t={info:{name:e.name&&e.name.trim().length?e.name:"Mock Server",type:"mock"},mock:{port:Number(e.port)||4e3}},r=Number(e.delay);r>0&&(t.mock.delay=r);const s=e.source;return s&&("collection"===s.type||"spec"===s.type)&&s.path&&(t.mock.source={type:s.type,path:s.path}),e.routes?.length&&(t.routes=e.routes.map(Ie)),I(t)}catch(e){throw console.error("Error stringifying mock server:",e),e}})(e);throw new Error(`Unsupported format: ${t.format}`)},gt=e=>c(e);export{$e as BruParserWorker,Te as DEFAULT_COLLECTION_FORMAT,Pe as SECRET_PROVIDER_IDENTIFIER_FIELDS,De as migrateSecretsJsonToEnvironments,it as parseCollection,gt as parseDotEnv,pt as parseEnvironment,ot as parseEnvironmentViaWorker,lt as parseFolder,st as parseFolderViaWorker,mt as parseMockServer,Xe as parseRequest,Ve as parseRequestAndRedactBody,tt as parseRequestViaWorker,Ge as redactLargeBruTextBlocks,Je as restoreRedactedBlocks,ct as stringifyCollection,dt as stringifyEnvironment,at as stringifyEnvironmentViaWorker,ut as stringifyFolder,nt as stringifyFolderViaWorker,ht as stringifyMockServer,Ye as stringifyRequest,rt as stringifyRequestViaWorker};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|