runner-runtime 1.0.89 → 1.0.91
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/index.js +1 -0
- package/package.json +14 -7
- package/events/api.js +0 -2581
- package/events/index.js +0 -408
- package/events/wait.js +0 -39
- package/index.js +0 -181
- package/jar-main-1.0-SNAPSHOT.jar +0 -0
- package/libs/2har.js +0 -161
- package/libs/utils.js +0 -604
- package/tmp/request.js +0 -359
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var e=require("atomic-sleep"),t=require("lodash"),s=require("fs"),n=require("json-schema-faker-pro"),a=require("path"),r=require("exp-mock"),i=require("mockjs5-pro"),o=require("mime"),c=require("os"),l=require("buffer/"),p=require("@apipost/url-join"),u=require("apipost-tools"),d=require("jsonpath"),m=require("json5"),g=require("file-type"),y=require("content-disposition"),f=require("is-svg"),h=require("json-bigint"),b=require("strip-json-comments"),v=require("tough-cookie"),_=require("is-image"),k=require("postman-collection"),x=require("uuid"),q=require("minimatch"),S=require("postman-runtime-pro"),O=require("msgpack5");function E(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var D,w,j,$,T,V,I,N,R,C,J,U,A=E(e),P=E(t),B=E(s),z=E(n),L=E(a),F=E(r),W=E(i),M=E(o),H=E(c),X=E(l),G=E(p),K=E(u),Y=E(d),Q=E(m),Z=E(g),ee=E(y),te=E(f),se=E(h),ne=E(b),ae=E(v),re=E(_),ie=E(k),oe=E(x),ce=E(q),le=E(S),pe=E(O);function ue(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function de(){if(w)return D;w=1;const e=A.default,t=P.default,s=B.default,n=z.default,a=L.default,{mockExp:r}=F.default,i=W.default,o=M.default,c=H.default,l=X.default.Buffer,p=G.default,u=function(e,s,n){if(t.isArray(e)){const a=t.find(e,t.matchesProperty("target_id",s));if(a){if(n.includes(a.parent_id))return;t.isString(a.parent_id)&&(n.push(a.parent_id),u(e,a.parent_id,n))}}},d=()=>{const e={};if(new Array("natural","integer","float","character","range","date","time","datetime","now","guid","increment","url","protocol","domain","tld","email","ip","region","province","city","county","county","zip","first","last","name","cfirst","clast","cname","color","rgb","rgba","hsl","paragraph","cparagraph","sentence","csentence","word","cword","title","ctitle","username","user_name","nickname","nick_name","avatar","icon","img","photo","pic","description","id","userid","user_id","articleid","article_id").forEach((t=>{e[`$${t}`]=i.mock(`@${t}`)})),process&&process?.IS_ECHOAPI){["region","province","city","county","cfirst","clast","cname","cparagraph","csentence","cword","ctitle"].forEach((t=>{var s;e[`$${t}`]=(s=`$${t}`,function(){return s})})),new Array("phone","mobile","telephone").forEach((t=>{e[`$${t}`]=(()=>{const e=Math.floor(900*Math.random())+100,t=Math.floor(1e7*Math.random())+1e6;return`${e}-${t.toString().slice(0,3)}-${t.toString().slice(3)}`})()}))}else new Array("phone","mobile","telephone").forEach((s=>{e[`$${s}`]=(()=>{let e="1";return e+=t.random(3,9).toString(),e+=t.times(9,(()=>t.random(0,9))).join(""),e})()}));return e.$timestamp=t.toInteger(Date.now()/1e3),e.$microTimestamp=(new Date).getTime(),e.$randomInt=Math.floor(1e3*Math.random()),e.$randomFloat=1e3*Math.random(),e};return D={atomicSleep:e,jsfGenerate:(e,s=[],a,r={})=>{let i;if(n.option({alwaysFakeOptionals:!0,useExamplesValue:!0,fillProperties:!1,useDefaultValue:!0,mockRules:s,customFunctions:r,lang:"zh-cn"}),t.some(["default","examples","pattern","format","x-mock","enum"],(s=>t.includes(t.keys(e?.schema||e),s))))try{i=n.generate(e)}catch(e){}if(!t.isUndefined(i))return i},getAPIFromCollection:function(e,s){return t.find(e,t.matchesProperty("target_id",s))},getParentTargetIDs:u,base64toCacheFile:(e,n,r,i)=>{let p=n;try{s.statSync(p)}catch(u){if(!t.isEmpty(r)){const u=String(r).match(/data:([0-9a-zA-Z\/\-]+);base64,/i),d=o.getExtension(u&&u[1]?u[1]:"");if(t.isString(d)){const o=a.resolve(c.tmpdir(),`${i}`);try{s.mkdirSync(o)}catch(e){}let u=n;t.endsWith(u,`.${d}`)||(u=`${e}.${d}`);const m=a.resolve(o,u);try{s.writeFileSync(m,l.from(t.replace(r,/^data:[0-9a-zA-Z\/\-]+;base64,/,""),"base64")),p=m}catch(e){}}}}return p},replace2RegExp:(e,s,n)=>{try{return t.replace(e,new RegExp(String(s),"ig"),String(n))}catch(a){return t.replace(e,s,String(n))}},getInsideVariables:d,repeatArrayToLength:(e,s)=>{if(t.isArray(e)||(e=t.values(e)),t.isEmpty(e))return[];const n=t.ceil(s/e.length),a=t.flattenDeep(t.fill(new Array(n),e));return t.take(a,s)},convertEndRuntimeState:(e,s)=>{try{const{startTime:n,startVariables:a}=t.get(e,[s,"iteration"],{}),r=Date.now(),i={},o={};["globals","environment","iterationData","variables"].forEach((e=>{t.assign(i,t.get(a,`${e}`))})),t.forEach(i,((e,s)=>{let n;t.set(o,[s,"value"],e),t.isUndefined(e)||["variables","iterationData","environment","globals"].some((e=>{if(!t.isUndefined(t.get(a,[`${e}`,s])))return n=e,!0})),t.set(o,[s,"actedUpon"],n)}));const{environment:c={},variables:l={},_globals:p={},iterationData:u={}}=t.get(e,"variables",{}),d={environment:c,variables:l,iterationData:u,globals:p},m={};["globals","environment","iterationData","variables"].forEach((e=>{t.assign(m,t.get(d,`${e}`))}));const g={};return t.forEach(m,((e,s)=>{if(!t.includes(["_pm.response.code","_pm.response.setBody"],s)){let n;["variables","iterationData","environment","globals"].some((e=>{if(!t.isUndefined(t.get(d,[`${e}`,s])))return n=e,!0})),t.set(g,[s],{start:t.pick(o[s],["value","actedUpon"]),current:{value:e,actedUpon:n}})}})),{startTime:n,endTime:r,currentVariables:g}}catch(e){}},returnBoolean:(e,s,n)=>{let a=!1;if(""===e)return"null"==s;switch(s){case"eq":a=e==n;break;case"uneq":a=e!=n;break;case"gt":a=t.gt(Number(e),Number(n));break;case"gte":a=t.gte(Number(e),Number(n));break;case"lt":a=t.lt(Number(e),Number(n));break;case"lte":a=t.lte(Number(e),Number(n));break;case"includes":a=t.includes(e,n)||t.includes(e,Number(n));break;case"unincludes":a=!t.includes(e,n)&&!t.includes(e,Number(n));break;case"null":a=t.isEmpty(e);break;case"notnull":a=!t.isEmpty(e);break;case"exist":a=!t.isUndefined(e);break;case"notexist":a=t.isUndefined(e);break;case"regularmatch":try{a=new RegExp(String(n).substring(1,String(n).length-1)).test(e)}catch(e){}break;case"belongscollection":a=t.split(n,",").indexOf(e)>-1;break;case"notbelongscollection":a=-1==t.split(n,",").indexOf(e)}return a},variableReplaceForCondition:(e,s,n)=>{if(!t.startsWith(e,"{{")||!t.endsWith(e,"}}"))return e;const a=d();["globals","_globals","environment","iterationData","variables"].forEach((e=>{t.assign(a,t.get(s,`${e}`))})),e=t.replace(e,/\{\{([^}]+)\}\}/g,((e,s)=>t.get(a,s.trim(),e)));const{lang:i,custom_functions:o}=n;try{const s=r(e,a,i,o);if(s===e&&t.startsWith(e,"{{")&&t.endsWith(e,"}}"))return;return s}catch(e){return}},getCaseInsensitive:(e,s)=>{try{const n=t.toLower(s);if(!t.isObject(e))return;for(const s in e)if(t.toLower(s)===n)return e[s]}catch(e){}},camelCaseToSnakeCase:e=>(["arrCookies","fitForShow","mimeType","requestStart","responseSize","responseTime"].forEach((s=>{const n=t.snakeCase(s),a=t.get(e,`response.${s}`);t.isUndefined(a)||(t.set(e,`response.${n}`,a),t.unset(e,`response.${s}`))})),e),formatAutotestReportList:e=>{const s=[];return t.forEach(t.cloneDeep(e),(e=>{const n=e?.type;t.includes(["assert","assert_visual","api","sample","script","sql"],n)?s.push(t.assign(t.pick(e?.response,["timings","response_time","response_at","proxy","status","code","response_size"]),t.pick(e?.request,["url","method","name","target_id","project_id"]),t.pick(e,["type","event_id","test_id","iteration_id","startTime","endTime","currentVariables"]),{type:n,status:{assert:t.isEmpty(e?.status?.success_assert)?"OK":e?.status?.success_assert,http:e?.status?.http||"OK"}})):t.includes(["if"],n)?s.push(t.assign(t.pick(e,["type","event_id","test_id","iteration_id","startTime","endTime","currentVariables"]),{type:n,status:{...e?.data}})):t.includes(["wait"],n)&&s.push(t.assign(t.pick(e,["type","event_id","test_id","iteration_id","startTime","endTime","currentVariables"]),{type:n,sleep:e?.data?.sleep||0}))})),s},getVariableActedUpon:(e,s)=>{let n;return["variables","iterationData","environment","globals"].some((a=>{if(t.includes(t.keys(t.get(e,`variables.${a}`)),s))return n=a,!0})),n},variableReplace:(e,s,n)=>{const a=d();["globals","_globals","environment","iterationData","variables"].forEach((e=>{t.assign(a,t.get(s,`${e}`))})),e=t.replace(e,/\{\{([^}]+)\}\}/g,((e,s)=>t.get(a,s.trim(),e)));const{lang:i,custom_functions:o}=n;try{return r(e,a,i,o)}catch(t){return e}},formatAutotestReport:(e,s)=>{const n={assert:{total:0,success:0,error:0},http:{total:0,success:0,error:0},start_at:e,end_at:Date.now(),total_time:Date.now()-e,iteration_count:t.size(s),total_response_time:null,avg_response_time:null,total_response_size:0,avg_response_size:0};let a=0,r=0;return t.forEach(t.cloneDeep(s),(e=>{if(t.includes(["api","sample"],e?.type)&&(n.http.total++,a+=t.toInteger(e?.response?.response_size),r+=t.toInteger(e?.response?.response_time),"ok"!=t.toLower(e?.status?.http)&&n.http.error++),t.includes(["api","sample","assert","assert_visual"],e?.type)&&!t.isEmpty(e?.status?.assert)&&t.isArray(e?.status?.assert)){const s=t.filter(e?.status?.assert,(e=>!1===e?.passed));n.assert.total=n.assert.total+t.size(e?.status?.assert),n.assert.error=n.assert.error+t.size(s)}})),n.http.success=n.http.total-n.http.error,n.assert.success=n.assert.total-n.assert.error,n.avg_response_time=t.round(r/n.http.total,2)||0,n.avg_response_size=t.round(a/n.http.total,2)||0,n.total_response_time=r,n.total_response_size=a,n},encodeURIComponentUnique:e=>{if(t.startsWith(e,"{{")&&t.endsWith(e,"}}"))return e;try{return decodeURIComponent(e)==e?encodeURIComponent(e):e}catch(t){return encodeURIComponent(e)}},smartUrlJoin:(e,...t)=>{for(let e of t)if(/^[a-zA-Z]+:\/\//.test(e))return e;return p(e,...t)}}}function me(){if(V)return T;V=1;const e=Z.default,t=ee.default,s=K.default,n=te.default,a=se.default({storeAsString:!0}),r=ne.default,i=M.default,{mockExp:o}=F.default,c=ae.default,l=X.default.Buffer,p=re.default,{getAPIFromCollection:u,smartUrlJoin:d,jsfGenerate:m,replace2RegExp:g,getParentTargetIDs:y,encodeURIComponentUnique:f,base64toCacheFile:h,getInsideVariables:b,convertEndRuntimeState:v,getCaseInsensitive:_,camelCaseToSnakeCase:k}=de(),{generateHarFromRequest:x}=function(){if($)return j;function e(e){return(e||[]).map((({key:e,value:t})=>({name:e,value:t})))}function t(e){return(e||[]).map((({key:e,value:t})=>({name:e,value:String(t)})))}function s(e){const{mode:t}=e;return"none"===t?{mimeType:"none",params:[],text:""}:"urlencoded"===t?{mimeType:"application/x-www-form-urlencoded",params:(e.urlencoded||[]).map((({key:e,value:t})=>({name:e,value:String(t)})))}:"formdata"===t?{mimeType:"multipart/form-data",params:(e.formdata||[]).map((({key:e,value:t,type:s="text"})=>{const n={name:e,value:String(t)};return"file"===s&&(n.fileName=t),n}))}:"raw"===t?{mimeType:"text/plain",text:String(e.raw)}:"json"===t?{mimeType:"application/json",text:JSON.stringify(e.json||{})}:{mimeType:"none",params:[],text:""}}return $=1,j={generateHarFromRequest:function(n){const{method:a="GET",headers:r=[],queryParams:i=[],body:o={mode:"none"}}=n;return{log:{version:"1.2",creator:{name:"Custom Node Request to HAR Converter",version:"1.0"},entries:[{request:{method:a.toUpperCase(),httpVersion:"HTTP/1.1",url:String(n?.url||"http://"),headers:e(r),queryString:t(i),postData:s(o),headersSize:-1,bodySize:-1},response:{status:200,statusText:"OK",httpVersion:"HTTP/1.1",cookies:[],headers:[],content:{size:0,mimeType:"application/json"},redirectURL:"",headersSize:-1,bodySize:-1},cache:{},timings:{send:0,wait:0,receive:0},startedDateTime:(new Date).toISOString(),time:0}]}}}}}(),q=P.default,S=ie.default,O=S.Url,E=S.Event,D=W.default,{v4:w}=oe.default,I=B.default,{minimatch:N}=ce.default,R=le.default,C=(e,t,s)=>{const{requestJson:n}=e,{database_configs:a,env:r,dynamic_option:i,custom_functions:o}=s;let c="";q.forEach(o,((e,t)=>{""!=(t=q.trim(t))&&(c=`\n ${c}\n\n function ${t}(text) {\n try{\n ${e}\n }catch(e){\n return text;\n }\n }\n `)}));const l=["const response = {};","\n const splitCookieString = (input)=> {\n let index = input.indexOf('=');\n if (index === -1) {\n return [input];\n }\n return [input.slice(0, index), input.slice(index + 1)];\n }\n ",`\n const getMainProcessSocketPath = ()=>{ \n try{\n return atob("${q.get(process,"env.ELECTRON_PIPE")}");\n }catch(e){\n return "${q.get(process,"env.ELECTRON_PIPE")}";\n }\n }\n `,"let lodashv4 = require('lodash');","let { mockExp } = require('exp-mock');","let Mock = require('mockjs');","let xml2json = xml2Json;","let JSON5 = require('json5');","let aTools = require('apipost-tools');","let jsonpath = require('jsonpath');",`let _envTmpVariablesData = ${JSON.stringify(r)}`,`let _dynamicValueOptions = ${JSON.stringify(i)}`,"let $ = {}; $.md5 = function(str){return CryptoJS.MD5(str).toString()};$.ajax = pm.ajaxSendRequest;",'pm.environment.getPreUrl = function(){return _.get(_envTmpVariablesData, "env_pre_url");}','pm.environment.getName = function(){return _.get(_envTmpVariablesData, "env_name");}',"pm.environment.getCollection = function(){return pm.environment.toObject();}",'pm.variables.getPreUrl = function(){return _.get(_envTmpVariablesData, "env_pre_url");}','pm.variables.getName = function(){return _.get(_envTmpVariablesData, "env_name");}',"pm.variables.getCollection = function(){return pm.environment.toObject();}","pm.environment.delete = pm.environment.unset;","pm.variables.delete = pm.variables.unset;","pm.globals.delete = pm.globals.unset;","pm.Visualizing = pm.visualizer.set","\n // Database\n pm.queryDatabase = async (dbconfig) => {\n const { query } = dbconfig;\n const { createUnixClient } = require('net'), socketPath = getMainProcessSocketPath();\n\n try{\n const result = await createUnixClient(socketPath, JSON.stringify({\n action: 'queryDatabase',\n data: { dbconfig, query }\n }));\n \n return JSON.parse(Buffer.from(JSON.parse(result.toString())).toString());\n }catch(e){\n console.error(\"Database error: \" + String(e))\n throw new Error(String(e));\n // return { err: 'error', result:String(e)}\n }\n };\n\n // pm.execute/Async\n pm.executeAsync = pm.execute = async (file, args, option) => {\n const { createUnixClient } = require('net'), socketPath = getMainProcessSocketPath();\n\n try {\n const result = await createUnixClient(socketPath, JSON.stringify({\n action: 'execute',\n data: { file, args, option }\n }));\n\n const resultObj = JSON.parse(Buffer.from(JSON.parse(result.toString())).toString());\n\n if(resultObj?.err == 'success'){\n return resultObj?.result\n }else{\n console.error(\"pm.execute error: \" + String(resultObj?.result))\n throw new Error(resultObj?.result);\n }\n }catch (e) {\n console.error(\"pm.execute error: \" + String(e))\n throw new Error(e);\n }\n };\n ",`\n let _requestTmpBodyObject = request?.data\n try{\n _requestTmpBodyObject = JSON.stringify(JSON5.parse(request?.data));\n }catch(e){}\n \n try{\n let _requestTmpVariablesData = ${JSON.stringify({name:n?.name})}\n _.assign(request, {\n request_headers: pm.request?.headers?.toObject(), \n request_bodys: _requestTmpBodyObject, \n request_querys: pm.request?.url?.query?.toObject(),\n request_variables: pm.request?.url?.variables?.toObject(),\n mode: "${q.get(n,"request.body.mode")}",\n contentType: pm.request?.headers?.get('content-type'),\n id: "${n?.sample_id||n?.target_id}",\n name: _.get(_requestTmpVariablesData, "name") || "HTTP request",\n url: String(pm.request?.url),\n uri: pm.request?.url\n });\n }catch(e){}\n\n // 获取最终请求body\n try{\n pm.getFinalRequestRawBody = () => {\n let requestBody = pm.variables.replaceIn(request.request_bodys);\n\n if(lodashv4.isString(requestBody)){\n const regex = /{{([^}]+)}}/g;\n const matches = requestBody.match(regex);\n if (!lodashv4.isEmpty(matches)) {\n lodashv4.forEach(matches, (match) => {\n try {\n const tmpVal = mockExp(match, _dynamicValueOptions?.all_vars || {}, _dynamicValueOptions?.lang || 'en', _dynamicValueOptions?.custom_functions || {});\n\n if (tmpVal != match && !lodashv4.isUndefined(tmpVal)) {\n requestBody = lodashv4.replace(requestBody, match, tmpVal);\n }\n } catch (e) { }\n })\n }\n\n pm.setRequestBody(requestBody);\n }\n \n return requestBody;\n }\n }catch(e){\n pm.getFinalRequestRawBody = () => {}\n }\n\n // 变量替换(含动态值)\n try{\n pm.mock = (str) => {\n if(lodashv4.isString(str)){\n const regex = /{{([^}]+)}}/g;\n const matches = str.match(regex);\n if (!lodashv4.isEmpty(matches)) {\n lodashv4.forEach(matches, (match) => {\n try {\n const tmpVal = mockExp(match, _dynamicValueOptions?.all_vars || {}, _dynamicValueOptions?.lang || 'en', _dynamicValueOptions?.custom_functions || {});\n\n if (tmpVal != match && !lodashv4.isUndefined(tmpVal)) {\n str = lodashv4.replace(str, match, tmpVal);\n }\n } catch (e) { }\n })\n }\n\n }\n return str;\n }\n }catch(e){\n pm.mock = (str) => {return str}\n }\n `,"if(_.isObject(pm.response)){","try{","_.set(response, 'headers', pm.response.headers?.toObject());","}catch(e){}","try{ // 设置cookie\n response.cookies = {};\n const responseCookies = lodashv4.get(pm.response.headers.toObject(), 'set-cookie');\n lodashv4.forEach(lodashv4.isArray(responseCookies)?responseCookies:[responseCookies], (cookieStr) => {\n let cookieArr = splitCookieString(lodashv4.head(lodashv4.split(cookieStr, ';')));\n let cookieValue = lodashv4.join(lodashv4.tail(cookieArr),'');\n\n if(cookieArr[0] && cookieValue){\n try{\n _.set(response.cookies, cookieArr[0], decodeURIComponent(cookieValue))\n }catch(e){\n _.set(response.cookies, cookieArr[0], cookieValue)\n }\n }\n })\n }catch(e){}\n ","_.set(pm, 'response.raw.responseText', pm.response.text());","_.set(response, 'raw.responseText', pm.response.text());","try{","_.set(response, 'json', pm.response.json());","_.set(response, 'raw.json', pm.response.json());","}catch(e){_.set(response, 'raw.json', {})}","_.set(response, 'raw.status', pm.response.code);","_.set(response, 'raw.responseTime', pm.response.responseTime);"," pm.response.setBody = function (body) {"," if (typeof body !== 'string') {"," body = JSON.stringify(body);"," }"," if (typeof body === 'string') {"," const originalText = _.cloneDeep(pm.response.text());"," try {"," const originalJson = _.cloneDeep(pm.response.json());"," pm.response.originalJson = function () {"," return originalJson;"," };"," }"," catch (e) {"," pm.response.originalJson = function () {"," return null;"," };"," }"," pm.response.originalText = function () {"," return originalText;"," };",' pm.response.stream = {type: "Buffer", data:Array.from(Buffer.from(body))};',' pm.variables.set("_pm.response.setBody", body);'," }"," };",""," pm.response.setCode = function (code) {"," if (typeof code === 'number') {"," pm.response.originalCode = function () {"," return pm.response.code;"," };",""," pm.response.code = code;",' pm.variables.set("_pm.response.code", code);'," }"," };","}","const apipost = postman;","const apt = fox = ea = echoapi = insomnia = pm;",`\n // Compatible with tc\n const expect = pm.expect;\n const assert = pm.assert;\n assert.equal = (source, dist) => { return source === dist }\n const tc = {};\n try {\n // global\n tc.loadModule = require;\n tc.info = {};\n tc.delay = sleep;\n\n // Ignored library\n tc.exec = () => { console.warn("The tc.exec script syntax of Thunder client is not supported.") }\n tc.runRequest = () => { console.warn("The tc.runRequest script syntax of Thunder client is not supported, Please use pm.sendRequest() instead.") }\n tc.skipRequest = () => { console.warn("The tc.skipRequest script syntax of Thunder client is not supported.") }\n tc.chartHTML = () => { console.warn("The tc.chartHTML script syntax of Thunder client is not supported.") }\n tc.retryRequest = () => { console.warn("The tc.retryRequest script syntax of Thunder client is not supported.") }\n tc.runRequest = () => { console.warn("The tc.runRequest script syntax of Thunder client is not supported.") }\n tc.setCookie = () => { console.warn("The tc.setCookie script syntax of Thunder client is not supported.") }\n tc.clearCookies = () => { console.warn("The tc.clearCookies script syntax of Thunder client is not supported.") }\n tc.getCookies = () => { console.warn("The tc.getCookies script syntax of Thunder client is not supported.") }\n tc.readFile = () => { console.warn("The tc.readFile script syntax of Thunder client is not supported.") }\n tc.loadFromPath = () => { console.warn("The tc.loadFromPath script syntax of Thunder client is not supported.") }\n\n // test\n tc.test = (name, func) => {\n if (lodashv4.isFunction(func)) {\n if(!lodashv4.isUndefined(func())){\n try{\n pm.test(name, func)\n }catch(e){}\n }else{\n pm.test(name, pm.expect(func()).to.equal(true))\n }\n } else {\n pm.test(name, pm.expect(lodashv4.toInteger(func) > 0 ? true : false).to.equal(true))\n }\n }\n\n // var\n tc.setVar = (key, value) => { pm.environment.set(key, value) };\n tc.getVar = (key) => { return pm.environment.get(key) };\n\n // Param\n tc.setParam = (key, value) => { pm.setRequestQuery(key, value) };\n\n // request\n tc.request = lodashv4.cloneDeep(request);\n tc.request.body = {};\n tc.request.name = request.name;\n tc.request.id = request.id;\n tc.request.name = request.name;\n tc.request.setHeader = (key, value) => { pm.setRequestHeader(key, value) };\n tc.request.getHeader = (key) => { return pm.request.headers.get(key) };\n tc.request.setBody = (key, value) => { pm.setRequestBody(key, value) };\n\n // response\n if (lodashv4.isObject(pm.response)) {\n tc.response = lodashv4.cloneDeep(response);\n tc.response.size = pm.response.responseSize;\n tc.response.status = pm.response.code;\n tc.response.time = pm.response.responseTime;\n tc.response.text = response?.raw?.responseText;\n tc.response.contentType = lodashv4.get(response, 'headers.content-type');\n tc.response.cookies = lodashv4.toPairs(lodashv4.get(tc, 'response.cookies')).map(([key, value]) => ({ key, value }));\n tc.response.headers = lodashv4.cloneDeep(lodashv4.cloneDeep(pm.response.headers.toJSON()));\n tc.response.getHeader = (key) => { return lodashv4.get(response.headers, lodashv4.toLower(key)) };\n tc.response.getBinary = () => { console.warn("The tc.getBinary script syntax of Thunder client is not supported.") }\n }\n } catch (e) {\n console.warn("Thunder Client script has an issue; please check manually. EchoAPI is fully compatible with Postman.")\n }\n \n // 自定义函数\n ${c}\n `],p={prerequest:[],test:[]},u={pre_tasks:"prerequest",post_tasks:"test"};return q.forEach(q.keys(u),(e=>{let t=q.join(l,"\n");q.forEach(q.get(n,`request.${e}`),(e=>{if(q.isObject(e)&&e.enabled>0)switch(e.type){case"customScript":!q.isEmpty(e?.data)&&q.isString(e?.data)&&"undefined"!=e?.data&&(t=`${t}\n${q.trim(e?.data)}\n`);break;case"database":let s=a[e.data?.connectionId]||{};q.isEmpty(s)||(s=JSON.stringify(s,null,"\t"),t=`${t}\n ! await (async function(){ \n const dbData = ${JSON.stringify(e.data||{query:""})}\n const query = pm.variables.replaceIn(lodashv4.get(dbData, "query"));\n const method = pm.variables.replaceIn(lodashv4.get(dbData, "method") || "");\n\n try{\n let dbResultList = await pm.queryDatabase(lodashv4.assign(${s},{\n method:method,\n query:query\n }));\n\n let {err, result} = dbResultList;\n\n if(err == 'success'){\n if(${e.data?.isConsoleOutput} > 0){\n console.log(query, result)\n }\n if(lodashv4.isObject(result)){\n lodashv4.forEach(${JSON.stringify(e.data?.variables||[])}, (item) => {\n let extra_value = jsonpath.value(result, lodashv4.trim(item?.pattern) || "$");\n pm[item?.type].set(item?.name, extra_value);\n });\n }else{\n if(!lodashv4.isObject(result)){\n lodashv4.forEach(${JSON.stringify(e.data?.variables||[])}, (item) => {\n let extra_value = result;\n pm[item?.type].set(item?.name, extra_value);\n });\n }\n } \n }else{\n console.error(query, String(result))\n } \n }catch(e){};\n })();`);break;case"wait":const n=q.toInteger(e?.data);n>0&&(t=`${t}\nsleep(${n});`);break;case"assert":t=`${t}\n !(function(){ \n let assertObjectData = ${JSON.stringify(e)};\n let responseData = '';\n let expertData = null;\n let expertExpression = '';\n let expertValue = null;\n\n if(_.get(assertObjectData, "data.type") == 'responseJson'){\n try{\n responseData = pm.response.json();\n }catch(e){\n responseData = xml2Json(pm.response.text()) || {}\n }\n\n expertData = jsonpath.value(responseData, _.get(assertObjectData, "data.expression.path") || "$");\n }else if(_.get(assertObjectData, "data.type") == 'responseXml'){\n try{\n responseData = pm.response.text();\n var xpath = require('xpath');\n var dom = require('xmldom').DOMParser;\n expertData = String(xpath.select(_.get(assertObjectData, "data.expression.path"), new dom().parseFromString(responseData, 'text/xml')));\n }catch(e){}\n }else if(_.get(assertObjectData, "data.type") == 'responseText'){\n expertData = pm.response.text();\n }else if(_.get(assertObjectData, "data.type") == 'responseHeader'){\n expertData = pm.response.headers.get(_.get(assertObjectData, "data.expression.path"));\n }else if(_.get(assertObjectData, "data.type") == 'responseCookie'){\n expertData = _.get(response.cookies, _.get(assertObjectData, "data.expression.path"));\n }else if(_.get(assertObjectData, "data.type") == 'responseCode'){\n expertData = pm.response.code;\n }else if(_.get(assertObjectData, "data.type") == 'responseTime'){\n expertData = pm.response.responseTime;\n }else if(_.get(assertObjectData, "data.type") == 'responseSize'){\n expertData = pm.response.responseSize;\n }else if(_.get(assertObjectData, "data.type") == 'tempVars'){\n expertData = pm.variables.get(_.trim(_.get(assertObjectData, "data.expression.path"), '{}'));\n }else if(_.get(assertObjectData, "data.type") == 'envVars'){\n expertData = pm.environment.get(_.trim(_.get(assertObjectData, "data.expression.path"), '{}'));\n }else if(_.get(assertObjectData, "data.type") == 'globalVars'){\n expertData = pm.globals.get(_.trim(_.get(assertObjectData, "data.expression.path"), '{}'));\n }\n \n expertValue = pm.variables.replaceIn(_.get(assertObjectData, "data.expression.compareValue"));\n \n if(_.get(assertObjectData, "data.expression.compareType") == "eq"){\n expertExpression = null;\n pm.test(_.get(assertObjectData, "name"), function () {\n pm.expect(String(expertData)).to.eql(String(expertValue));\n });\n }else if(_.get(assertObjectData, "data.expression.compareType") == "uneq"){\n expertExpression = null;\n pm.test(_.get(assertObjectData, "name"), function () {\n pm.expect(String(expertData)).to.not.eql(String(expertValue));\n });\n }else if(_.get(assertObjectData, "data.expression.compareType") == "lt"){\n expertExpression = null;\n pm.test(_.get(assertObjectData, "name"), function () {\n pm.expect(lodashv4.toNumber(expertData)).to.be.below(lodashv4.toNumber(expertValue));\n });\n }else if(_.get(assertObjectData, "data.expression.compareType") == "lte"){\n expertExpression = null;\n pm.test(_.get(assertObjectData, "name"), function () {\n pm.expect(lodashv4.toNumber(expertData)).to.be.at.most(lodashv4.toNumber(expertValue));\n });\n }else if(_.get(assertObjectData, "data.expression.compareType") == "gt"){\n expertExpression = null;\n pm.test(_.get(assertObjectData, "name"), function () {\n pm.expect(lodashv4.toNumber(expertData)).to.be.above(lodashv4.toNumber(expertValue));\n });\n }else if(_.get(assertObjectData, "data.expression.compareType") == "gte"){\n expertExpression = null;\n pm.test(_.get(assertObjectData, "name"), function () {\n pm.expect(lodashv4.toNumber(expertData)).to.be.at.least(lodashv4.toNumber(expertValue));\n });\n }else if(_.get(assertObjectData, "data.expression.compareType") == "includes"){\n expertExpression = null;\n pm.test(_.get(assertObjectData, "name"), function () {\n pm.expect(String(expertData)).to.include(String(expertValue));\n });\n }else if(_.get(assertObjectData, "data.expression.compareType") == "unincludes"){\n expertExpression = null;\n pm.test(_.get(assertObjectData, "name"), function () {\n pm.expect(String(expertData)).to.not.include(String(expertValue));\n });\n }else if(_.get(assertObjectData, "data.expression.compareType") == "null"){\n expertExpression = null;\n pm.test(_.get(assertObjectData, "name"), function () {\n pm.expect(expertData).to.be.empty;\n });\n }else if(_.get(assertObjectData, "data.expression.compareType") == "notnull"){\n expertExpression = null;\n pm.test(_.get(assertObjectData, "name"), function () {\n pm.expect(String(expertData)).to.not.be.empty;\n });\n }else if(_.get(assertObjectData, "data.expression.compareType") == "exist"){\n expertExpression = null;\n pm.test(_.get(assertObjectData, "name"), function () {\n pm.expect(expertData).to.exist;\n });\n }else if(_.get(assertObjectData, "data.expression.compareType") == "notexist"){\n expertExpression = null;\n pm.test(_.get(assertObjectData, "name"), function () {\n pm.expect(expertData).to.not.exist;\n });\n }else if(_.get(assertObjectData, "data.expression.compareType") == "regularmatch"){\n expertExpression = null;\n\n if(!lodashv4.isEmpty(expertValue)){\n expertValue = new RegExp(lodashv4.trim(expertValue, '/'));\n\n pm.test(_.get(assertObjectData, "name"), function () {\n pm.expect(expertData).to.match(expertValue);\n });\n }\n }else if(_.get(assertObjectData, "data.expression.compareType") == "belongscollection"){\n expertExpression = null;\n pm.test(_.get(assertObjectData, "name"), function () {\n pm.expect(String(expertData)).to.be.oneOf(lodashv4.split(expertValue, ","));\n });\n }else if(_.get(assertObjectData, "data.expression.compareType") == "notbelongscollection"){\n expertExpression = null;\n pm.test(_.get(assertObjectData, "name"), function () {\n pm.expect(String(expertData)).to.not.be.oneOf(lodashv4.split(expertValue, ","));\n });\n }\n })();\n `;break;case"pickVars":const r={tempVars:"variables",envVars:"environment",globalVars:"globals"};switch(t=`${t}\n\n !(function(){ \n `,e.data?.source){case"requestHeader":t=`${t}\n\n let varSource = request?.headers;\n `;break;case"requestBody":t=`${t}\n\n let varSource = request?.request_bodys;\n if(typeof varSource === 'string'){\n try{\n varSource = JSON5.parse(varSource)\n }catch(e){}\n }\n `;break;case"responseJson":t=`${t}\n\n let varSource = '';\n\n try{\n varSource = pm.response.json();\n }catch(e){\n varSource = xml2Json(pm.response.text())\n }\n `;break;case"responseXml":case"responseText":t=`${t}\n\n let varSource = pm.response.text();\n `;break;case"responseHeader":t=`${t}\n\n let varSource = pm.response.headers;\n `;break;case"responseCookie":t=`${t}\n\n let varSource = response.cookies;\n `;break;case"responseCode":t=`${t}\n\n let varSource = pm.response.code;\n `;break;case"responseTime":t=`${t}\n\n let varSource = pm.response.responseTime;\n `;break;case"responseSize":t=`${t}\n\n let varSource = pm.response.responseSize;\n `}q.forEach(e.data?.variables,(s=>{if(q.isObject(s)&&""!=s?.name&&!q.isUndefined(r[s?.type]))switch(e.data?.source){case"requestHeader":t=`${t}\n\n !(function(){\n let pickVars = ${JSON.stringify(s)};\n try{\n pm[${JSON.stringify(r[s?.type])}].set(_.get(pickVars,"name"), _.get(varSource, lodashv4.toLower(_.trim(_.get(pickVars,"expression")))));\n }catch(e){}\n })();\n `;break;case"requestBody":case"responseJson":t=`${t}\n\n !(function(){\n let pickVars = ${JSON.stringify(s)};\n pm[${JSON.stringify(r[s?.type])}].set(_.get(pickVars,"name"), jsonpath.value(varSource, _.trim(_.get(pickVars,"expression")) || "$"));\n })();\n `;break;case"responseXml":t=`${t}\n\n !(function(){\n let pickVars = ${JSON.stringify(s)};\n let xmlValue = '';\n var xpath = require('xpath');\n var dom = require('xmldom').DOMParser;\n\n try{\n xmlValue = String(xpath.select(_.trim(_.get(pickVars,"expression")), new dom().parseFromString(varSource, 'text/xml')));\n }catch(e){}\n\n pm[${JSON.stringify(r[s?.type])}].set(_.get(pickVars, "name"), xmlValue);\n })();\n `;break;case"responseHeader":t=`${t}\n\n !(function(){\n let pickVars = ${JSON.stringify(s)};\n try{\n pm[${JSON.stringify(r[s?.type])}].set(_.get(pickVars,"name"), varSource.get(_.trim(_.get(pickVars,"expression"))));\n }catch(e){}\n })();\n `;break;case"responseCookie":t=`${t}\n\n !(function(){\n let pickVars = ${JSON.stringify(s)};\n pm[${JSON.stringify(r[s?.type])}].set(_.get(pickVars,"name"), _.get(varSource, _.trim(_.get(pickVars,"expression"))));\n })();\n `;break;case"responseText":case"responseCode":case"responseTime":case"responseSize":t=`${t}\n\n !(function(){\n let pickVars = ${JSON.stringify(s)};\n pm[${JSON.stringify(r[s?.type])}].set(_.trim(_.get(pickVars, "name")), varSource);\n })();\n `}})),t=`${t}\n })();`}})),t=`${t}\n\n if(_.isObject(pm.response)){\n if(!_.isFunction(pm.response.originalText) || pm.response.originalText() == pm.response.text()){\n if(response?.raw?.responseText != pm.response.text()){\n pm.response.setBody(response?.raw?.responseText);\n }else if(pm.response?.raw?.responseText != pm.response.text()){\n pm.response.setBody(pm.response?.raw?.responseText);\n }\n }\n }\n `;let s=q.split(t,"\n");p[u[e]].push({listen:u[e],script:{exec:s,type:"text/javascript"}})})),p[t]};const J=(e,t)=>{const s=q.assign(q.pick(e,["event_id","test_id"]),q.pick(e?.data,["target_id","project_id"]));if(q.includes(["api","sample","sse","request"],e?.type)){q.toInteger(e?.auto_sync)>0||q.includes(["http_request","get_parsed_request"],t?.scene)?q.assign(s,u(t?.collection,q.get(e,"data.target_id"))):q.assign(s,q.get(e,"data.apiData"));const n=[];if(q.includes(["sample"],e?.type)){const s=q.get(u(t?.collection,q.get(e,"data.target_id")),"parent_id");q.isString(s)&&s&&y(t?.collection,s,n)}else y(t?.collection,q.get(e,"data.target_id"),n);q.includes(n,"0")||n.push("0"),q.forEach(n,(e=>{const n={};"0"==e?q.assign(n,q.get(t,"project.request")):q.assign(n,q.get(u(t?.collection,e),"request")),q.isObject(n)&&!q.isEmpty(n)&&["header","body","query","cookie"].forEach((e=>{let t=q.filter(q.get(n,`${e}.parameter`),(e=>q.toInteger(e.is_system)>0||e.is_checked>0));if(!q.isEmpty(t)&&q.isArray(t)){const n=q.filter(q.get(s,`request.${e}.parameter`),(e=>e.is_checked>0))||[],a=q.chain(n).groupBy("key").map((e=>q.reduce(e,((e,t)=>t.is_checked>0?t:e),e[e.length-1]))).value(),r=q.chain(t).groupBy("key").map((e=>q.reduce(e,((e,t)=>t.is_checked>0?t:e),e[e.length-1]))).value();"header"==e?q.set(s,`request.${e}.parameter`,q.unionBy(a,r,(e=>q.toLower(e.key)))):q.set(s,`request.${e}.parameter`,q.unionBy(a,r,"key"))}}))}));let a={},r=q.get(s,"server_id");q.forEach(q.reverse(n),(e=>{const n={};if("0"==e)q.assign(n,q.get(t,"project.request"));else{const a=q.get(u(t?.collection,e),"server_id");q.isUndefined(q.get(s,"server_id"))&&q.isString(a)&&(r=a),q.assign(n,q.get(u(t?.collection,e),"request"))}q.isObject(n)&&!q.isEmpty(n)&&["auth","pre_script","test","pre_tasks","post_tasks"].forEach((e=>{const t=q.get(n,`${e}`);q.isEmpty(t)||(q.isArray(t)?a[e]=q.union(a[e],t):q.isObject(t)?"auth"==e&&"inherit"!=q.get(t,"type")&&(q.set(a,"auth.type",q.get(t,"type")),q.set(a,`auth.${q.get(t,"type")}`,q.get(t,`${q.get(t,"type")}`))):q.isString(t)&&(a[e]=`${a[e]}\n${t}`))}))})),q.forEach(a,((e,t)=>{q.isEmpty(e)||(q.isArray(e)?q.set(s,`request.${t}`,q.union(e,q.get(s,`request.${t}`))):q.isObject(e)?"auth"==t&&"inherit"==q.get(s,"request.auth.type")&&(q.set(s,"request.auth.type",q.get(e,"type")),q.set(s,`request.auth.${q.get(e,"type")}`,q.get(e,`${q.get(e,"type")}`))):q.isString(e)&&q.set(s,`request.${t}`,`${e}\n${q.get(s,`request.${t}`)}`))})),q.unset(a);const i=[];q.get(t,"cookies.switch")>0&&q.isArray(q.get(t,"cookies.data"))&&q.forEach(q.get(t,"cookies.data"),(e=>{let t=q.trim(e?.key);if(q.isObject(e)&&!q.isEmpty(t)){let s=q.find(i,q.matchesProperty("key",t)),n=e?.domain;try{const t=new O(e?.domain);n=q.join(t?.host,".")}catch(e){}const a={key:t,value:e?.value,domain:n,path:("undefined"!=e?.path?e?.path:"/")||"/",expires:e?.expires||new Date((new Date).getTime()+36e5),maxAge:e?.maxAge||3600,secure:!!q.toInteger(e?.secure),httpOnly:!!q.toInteger(e?.httpOnly),sameSite:e?.sameSite||"strict"};s>-1?i[s]=a:i.push(a)}})),q.isArray(q.get(s,"request.cookie.parameter"))&&q.forEach(q.get(s,"request.cookie.parameter"),(e=>{let t=q.trim(e?.key);if(q.isObject(e)&&!q.isEmpty(t)&&e?.is_checked>0){let s=q.find(i,q.matchesProperty("key",t)),n={key:t,value:e?.value,schema:e?.schema};s>-1?i[s]=n:i.push(n)}})),q.set(s,"request.cookie.parameter",i),q.unset(i),q.isString(r)&&"0"!==q.toString(r)||(r="1");const o=q.isString(q.get(s,"url"))?q.get(s,"url"):q.get(s,"request.url"),{globals:c,env:l}=t;let p=q.trim(q.get(s,"pre_url",""));""==p&&(p=q.trim(q.get(q.find(q.get(t,"env.env_pre_urls"),(e=>e?.server_id==r)),"uri"))),""!=p&&("2"!=t?.env?.env_id||q.endsWith(p,"/")||(p=`${p}/`),q.startsWith(p,"{{")||q.startsWith(q.toLower(p),"http://")||q.startsWith(q.toLower(p),"https://")?q.set(s,"url",d(p,o)):q.set(s,"url",d("http://",p,o)));let m=s?.url;q.forEach(q.assign({},c,q.get(l,"environment")),((e,t)=>{m=g(m,`{{${t}}}`,String(e))})),q.set(s,"initVarReplacedUrl",m)}else if(q.includes(["script"],e?.type))q.set(s,"request.pre_tasks",[{type:"customScript",enabled:1,data:e?.data?.content}]);else if(q.includes(["assert"],e?.type))q.set(s,"name","脚本断言"),q.set(s,"request.pre_tasks",[{type:"customScript",enabled:1,data:e?.data?.content}]);else if(q.includes(["sql"],e?.type))q.set(s,"request.pre_tasks",[{type:"database",id:e?.event_id,name:"Database",enabled:1,data:q.assign({connectionId:"",query:"",isConsoleOutput:1,variables:[]},e?.data)}]);else if(q.includes(["assert_visual"],e?.type)){const{type:t,expression:n}=e?.data?.data||{};q.isString(t)&&!q.isEmpty(n)&&(q.set(s,"name","可视化断言"),q.set(s,"request.pre_tasks",[{type:"assert",id:e?.event_id,name:"Visual assertion",enabled:1,data:{type:t,expression:q.assign({compareType:"eq",compareValue:"",path:""},n)}}]))}const n=((e,t)=>{const s={},n=q.get(t,"system_configs",{}),i=e=>{try{return q.toInteger(n?.auto_gen_mock_url)>0?D.mock(e):e}catch(t){return e}},o=i(q.get(e,"url")||q.get(e,"request.url")),c=new O(o);try{c?.query.clear()}catch(e){}const l=q.toInteger(q.get(e,"request.query.query_add_equal")||-1);q.forEach(q.get(e,"request.query.parameter"),(e=>{if(q.isObject(e)&&e?.is_checked>0){let{key:s,value:n,schema:a}=e;if(s=String(i(q.trim(s))),n=String(i(n)),""==n&&q.isObject(a)){const e=m(a,[],t?.lang,t?.custom_functions||{});q.isUndefined(e)||(n=e)}""!=s&&c?.query?.members?.push(""==n&&l<1?new S.QueryParam({key:s,value:null}):new S.QueryParam({key:s,value:n}))}})),"2"!=t?.env?.env_id||q.includes(q.keys(c?.query?.toObject()),"target_id")||c?.query?.members?.push(new S.QueryParam({key:"target_id",value:e?.target_id}));const p=[];if(q.isArray(q.get(c,"path"))){const e=q.map(q.get(c,"path"),(e=>q.startsWith(e,"{")&&!q.startsWith(e,"{{")&&q.endsWith(e,"}")&&!q.endsWith(e,"}}")?":"+e.slice(1,-1):e));q.set(c,"path",e)}if(q.forEach(q.get(e,"request.restful.parameter"),(e=>{if(q.isObject(e)&&e?.is_checked>0){let{key:s,value:n,schema:a}=e;if(s=i(q.trim(s)),n=i(n),""==n&&q.isObject(a)){const e=m(a,[],t?.lang,t?.custom_functions||{});q.isUndefined(e)||(n=e)}""!=s&&p.push({key:s,value:n})}})),q.isUndefined(c?.protocol)){const e=/^{{.*}}/;q.startsWith(q.first(c?.host),"{{")||e.test(q.first(c?.host))||q.set(c,"protocol","http")}const u=String(c);if(c?.query?.members?.length>0)try{q.set(c,"query",c?.query?.toJSON())}catch(e){q.set(c,"query",c?.query?.toObject())}else q.set(c,"query",void 0);q.set(s,"url",{raw:u,variable:p,...c}),q.set(s,"protocol",q.get(e,"protocol")||"http/1.1");let d=q.get(e,"method")||"GET";q.includes(["CONNECT"],q.toUpper(d))&&(d="GET"),q.set(s,"method",d);const g={},y=q.get(e,"request.auth.type")||"noauth";if(q.isString(y)&&"noauth"!=y&&"inherit"!=y)switch(y){case"kv":q.assign(g,{type:"apikey",apikey:[{key:"in",value:q.get(e,"request.auth.kv.in")||"header",type:"string"},{key:"value",value:i(q.get(e,"request.auth.kv.value"))||"",type:"string"},{key:"key",value:i(q.get(e,"request.auth.kv.key"))||"",type:"string"}]});break;case"basic":q.assign(g,{type:"basic",basic:[{key:"password",value:i(q.get(e,"request.auth.basic.password"))||"",type:"string"},{key:"username",value:i(q.get(e,"request.auth.basic.username"))||"",type:"string"}]});break;case"bearer":q.assign(g,{type:"bearer",bearer:[{key:"token",value:i(q.get(e,"request.auth.bearer.key"))||"",type:"string"}]});break;case"digest":const t={username:"username",password:"password",realm:"realm",nonce:"nonce",algorithm:"algorithm",qop:"qop",opaque:"opaque",nc:"nonceCount",cnonce:"clientNonce",disableRetryRequest:"disableRetryRequest"};q.set(g,"type",y),q.set(g,y,[]),q.forEach(q.get(e,`request.auth.${y}`),((e,s)=>{s=t[i(s)],q.isString(e)&&(e=i(e));const n=q.isBoolean(e)?e:q.isInteger(e)?!!e:q.isString(e)?e:"",a=q.isInteger(e)||q.isBoolean(e)?"boolean":"string";g[y].push({key:s,value:n,type:a})})),-1==q.keys(q.get(e,`request.auth.${y}`)).indexOf("disableRetryRequest")&&g[y].push({key:"disableRetryRequest",value:!1,type:"boolean"});break;case"hawk":case"oauth1":case"oauth2":case"awsv4":case"ntlm":case"jwt":case"asap":case"edgegrid":q.set(g,"type",y),q.set(g,y,[]),q.forEach(q.get(e,`request.auth.${y}`),((e,t)=>{q.isString(e)&&(e=i(e)),t=i(t);const s=q.isBoolean(e)?e:q.isInteger(e)?!!e:q.isString(e)?e:"",n=q.isInteger(e)||q.isBoolean(e)?"boolean":"string";g[y].push({key:t,value:s,type:n})}))}!q.isEmpty(g)&&q.set(s,"auth",g);const b=[];q.forEach(q.get(e,"request.header.parameter"),(e=>{if(q.isObject(e)&&e?.is_checked>0){let s=!(e?.is_checked>0),{key:n,value:a,schema:r}=e;if(n=i(q.trim(n)),a=i(a),""==a&&q.isObject(r)){const e=m(r,[],t?.lang,t?.custom_functions||{});q.isUndefined(e)||(a=e)}""!=n&&b.push({key:n,value:a,disabled:s})}}));let v="";if("oauth2"==g?.type&&q.isArray(g?.oauth2)){const e=q.find(g.oauth2,{key:"addTokenTo"}),t=q.find(g.oauth2,{key:"headerPrefix"}),n=q.find(g.oauth2,{key:"access_token"});if(n?.value)if(v=n.value,v=t?.value?t.value+" "+v:"Bearer "+v,"header"==e?.value)b.push({key:"Authorization",value:v,disabled:!1}),v="";else if("queryParams"==e?.value){v=n.value;const e=s.url.raw,t=new URL(e);t.searchParams.set("access_token",v);const a=s.url.query||[];a.push({key:"access_token",value:v}),q.set(s,"url",{...s.url,raw:t.toString(),query:a}),v=""}else v=""}const _=new Map,k=[];q.forEach(b,((e,t)=>{const s=e.key.toLowerCase();_.has(s)&&k.push(_.get(s)),_.set(s,t)})),k.length>0&&q.forEachRight(k,(e=>{e>-1&&b.splice(e,1)})),q.set(s,"header",b);try{if(""!=s?.url?.raw){let n={};q.isString(q.get(e,"initVarReplacedUrl"))&&!q.isEmpty(q.get(e,"initVarReplacedUrl"))&&(n=new O(q.get(e,"initVarReplacedUrl")));const a=[];if(q.forEach(q.get(e,"request.cookie.parameter"),(r=>{if(q.isObject(r)){let o=f(i(r.key||r.name)),c=i(r.value);if(""==c&&q.isObject(r?.schema)){const e=m(r?.schema,[],t?.lang,t?.custom_functions||{});q.isUndefined(e)||(c=e)}(q.isUndefined(q.get(e,"request.cookie.cookie_encode"))||q.parseInt(q.get(e,"request.cookie.cookie_encode"))>0)&&(c=f(c));let l=q.assign(r,{key:o,name:o,value:c}),p=q.isEmpty(s?.url?.host)?s?.url?.raw:q.join(s?.url?.host,"."),u=s?.url?.path;q.isEmpty(n)||(p=q.isEmpty(n.host)?q.get(e,"initVarReplacedUrl"):q.join(n.host,"."),u=n.path);let d=q.join(u,"/");!q.startsWith(d,"/")&&q.startsWith(l?.path,"/")&&(d=`/${d}`),!q.endsWith(d,"/")&&q.endsWith(l?.path,"/")&&(d=`${d}/`),(q.isUndefined(l?.domain)||N(p,l?.domain)||q.endsWith(p,l?.domain))&&(q.isUndefined(l?.path)||"/"==l?.path||q.startsWith(d||"/",l?.path))&&(q.isUndefined(l?.expires)||q.gt(new Date(String(l?.expires)),new Date))&&a.push(`${l.name}=${l.value}`)}})),!q.isEmpty(a)){const e=q.find(s.header,(e=>q.toLower(e.key)===q.toLower("cookie")));e?e.value=q.join(a,";"):s.header.push({key:"Cookie",value:q.join(a,";")})}}}catch(e){}const x={},E=q.get(e,"request.body.mode")||"none";if(q.isString(E)&&"none"!=E){const n={"form-data":"formdata",plain:"text",binary:"file",msgpack:"msgpack"};switch(E){case"form-data":case"urlencoded":q.set(x,"mode",n[E]?n[E]:E),q.set(x,x.mode,[]);const o=q.get(e,"request.body.parameter");q.forEach(o,(s=>{if(q.isObject(s)&&s.is_checked>0&&""!=i(s.key))if("form-data"==E&&"file"===q.toLower(s.field_type)){const t=h(s.key,s.value,s.file_base64,e?.target_id);x[x.mode].push({key:i(s.key),src:t,type:"file",disabled:!1})}else{let{value:e,schema:n}=s;if(e=i(e),""==e&&q.isObject(n)){const s=m(n,[],t?.lang,t?.custom_functions||{});q.isUndefined(s)||(e=s)}"form-data"==E&&""!=s.content_type?x[x.mode].push({key:i(s.key),value:e,type:"text",disabled:!1,contentType:s.content_type}):x[x.mode].push({key:i(s.key),value:e,type:"text",disabled:!1})}}));break;case"binary":const c=h("binary",q.get(e,"request.body.binary.file_path"),q.get(e,"request.body.binary.data_url"),e?.target_id);q.assign(x,{mode:"file",file:{src:c}});break;default:let l=i(q.get(e,"request.body.raw"));if("msgpack"==E){const e=pe.default();try{l=e.encode(a.parse(r(l))).slice(),Object.setPrototypeOf(l,Object.getPrototypeOf({}))}catch(e){}const t=q.find(s.header,(e=>q.toLower(e.key)===q.toLower("content-type")));t?t.value="application/msgpack":s.header.push({key:"content-type",value:"application/msgpack"})}else if("json"==E&&t?.request_param_auto_json>0)try{l=a.stringify(a.parse(r(l))),Object.setPrototypeOf(l,Object.getPrototypeOf({}))}catch(e){}q.assign(x,{mode:"raw",raw:l,options:{raw:{language:n[E]?n[E]:E}}})}}return!q.isEmpty(x)&&q.set(s,"body",x),s})(s,t);return{requestJson:s,postmanJSON:n}};return T=(a,r,u,d,m)=>{const{scene:g}=r;return new Promise(((y,f)=>{try{const{requestJson:D,postmanJSON:j}=J(a,r),$=new S.Item({name:q.get(D,"name")||"New request",request:j,event:[],protocolProfileBehavior:{disableBodyPruning:!0,disabledSystemHeaders:{accept:!0,"accept-encoding":!0,connection:!0}}}),T=((e,t,s)=>{const{requestJson:n}=e,a=[];q.forEach(q.get(s,"variables"),((e,t)=>{a.push({value:e,key:t,type:"any",enabled:!0})}));const r=new S.VariableScope({values:a}),i=[q.get(s,"iterationData")],o=[];q.forEach(q.get(s,"environment"),((e,t)=>{o.push({value:e,key:t,type:"any",enabled:!0})}));const c=new S.VariableScope({values:o}),l=[];q.forEach(q.defaults(q.get(s,"globals")||{},b()),((e,t)=>{l.push({value:e,key:t,type:"any",enabled:!0})}));const p=new S.VariableScope({values:l}),u={strictSSL:!1,protocolVersion:"http/1.1"==n?.protocol||q.includes(["sse"],n?.target_type)||q.isEmpty(n?.target_type)?"http1":"auto"==n?.protocol?"auto":"http2",timings:!0,verbose:!1,implicitCacheControl:!0,implicitTraceHeader:!1,followOriginalHttpMethod:q.get(t,"system_configs.follow_original_method")>0,followRedirects:q.get(t,"system_configs.auto_redirect")>0,maxRedirects:q.max([q.toInteger(q.get(t,"system_configs.max_redirect_time")),5])};q.get(t,"system_configs.ca_cert.open")>0&&""!=q.trim(q.get(t,"system_configs.ca_cert.path"))&&q.set(u,"extendedRootCA",q.trim(q.get(t,"system_configs.ca_cert.path")));const d=[];q.forEach(q.get(t,"system_configs.client_cert"),((e,t)=>{const s=new O(t);if(q.isObject(e)){s.port<=0&&(t=`${s.protocol}://${q.join(s.host,".")}:443`),["key","crt","pfx"].forEach((t=>{let s=q.get(e,`${t}.file_url`);if(q.isEmpty(s)&&(q.isEmpty(q.get(e,`${t}.file_base64`))||(s=h(q.get(e,`${t}.file_name`),q.get(e,`${t}.file_name`),q.get(e,`${t}.file_base64`),w()))),!q.isEmpty(s))try{I.statSync(s),q.set(e,`${t}.file_url`,s)}catch(e){}}));const n={name:`Client cert for ${t}`,matches:[t,`${t}/*`],passphrase:e?.password};["key","crt","pfx"].forEach((t=>{q.isEmpty(q.get(e,`${t}.file_url`))||q.set(n,"crt"==t?"cert":t,{src:q.get(e,`${t}.file_url`)})})),d.push(n)}}));let m=q.toInteger(q.get(t,"system_configs.send_timeout"));q.inRange(m,0,604800)||(m=0);const g={timeout:{request:m,script:0,global:0},delay:{item:0,iteration:0},iterationCount:1,fileResolver:B.default,data:i,environment:c,localVariables:r,globals:p,requester:u,systemProxy:async function(e,s){try{const n={},a=new O(e),r=q.toLower(q.join(a?.host,"."));if(1==q.get(t,"system_configs.proxy.type")){const e=q.get(t,"system_configs.proxy.auth.host").match(/(([^:]+):(\d+))/);if(q.isArray(e)&&q.toInteger(e[3])>0){let s=q.get(t,"system_configs.proxy.bypass");q.isString(s)&&(s=s.split(","));let i=q.find(s,(e=>N(r,e))),o=q.get(t,"system_configs.proxy.protocols");q.isString(o)&&(o=o.split(","));let c=q.find(o,(e=>(q.toLower(a?.protocol)||"http")==q.toLower(e)));!i&&c&&(q.set(n,"host",e[2]),q.set(n,"port",q.toInteger(e[3])))}}else if(-1==q.get(t,"system_configs.proxy.type")){let s=q.isString(q.get(process,"env.NO_PROXY"))&&q.get(t,"system_configs.proxy.envfirst")>0?String(q.get(process,"env.NO_PROXY")).split(","):[];if(q.isEmpty(s)||q.isUndefined(q.find(s,(e=>N(r,e))))){const s=String("https"==a?.protocol?q.get(process,"env.HTTPS_PROXY"):q.get(process,"env.HTTP_PROXY"));if((q.get(t,"system_configs.proxy.envfirst")>0||q.isEmpty(q.get(process,"versions.electron")))&&!q.isEmpty(s)&&"undefined"!=s){let e=new O(s);q.set(n,"host",q.join(e?.host,".")||""),q.set(n,"port",q.toInteger(e?.port)>0?q.toInteger(e?.port):0)}else if(!q.isEmpty(q.get(process,"versions.electron")))try{const t=(await require("electron").session.defaultSession.resolveProxy(e)).match(/PROXY (([^:]+):(\d+))/);q.isObject(t)&&q.isString(t[2])&&!q.isEmpty(t[2])&&q.toInteger(t[3])>0&&(q.set(n,"host",t[2]),q.set(n,"port",q.toInteger(t[3])))}catch(e){}}}return q.isString(n.host)&&""!=n.host&&(q.set(n,"tunnel","http"!=q.toLower(a?.protocol)),q.set(n,"authenticate",q.get(t,"system_configs.proxy.auth.authenticate")>0),n.authenticate&&(q.set(n,"username",q.get(t,"system_configs.proxy.auth.username")),q.set(n,"password",q.get(t,"system_configs.proxy.auth.password")))),!q.isEmpty(n)&&q.isString(n.host)&&""!=n.host&&"undefined"!=n.host?s(null,n):s(null,null)}catch(e){return s(null,null)}}};return q.isEmpty(d)||q.assign(g,{certificates:new S.CertificateList({},d)}),g})({requestJson:D,postmanJSON:j},r,d?.variables||{});(new R.Runner).run(new S.Collection({info:{name:q.get(D,"name")||"New request"},item:[$]}),T,((h,O)=>{h?f({action:"systemError",message:String(h),event_id:a?.event_id}):(q.set(d,[a?.event_id,"exception"],null),q.set(d,[a?.event_id,"error"],null),q.set(d,[a?.event_id,"console"],[]),q.set(d,[a?.event_id,"assertions"],[]),q.set(d,[a?.event_id,"visualizer"],{error:null,processed_template:""}),O.start({exception(e,t){if(t&&!q.includes(["assert_visual","assert"],a?.type)){const s=q.get(e,e?.scriptId);if(q.set(d,[a?.event_id,"exception",s],t),q.set(d,[a?.event_id,"error"],{error_type:s,message:t?.message}),q.includes(["prerequest","test"],s)){q.isUndefined(q.get(d,[a?.event_id,"console"]))&&q.set(d,[a?.event_id,"console"],[]);const e=Date.now();d[a?.event_id].console.push({time:e,level:"error",args:[String(t?.message)]})}if("prerequest"===s)try{O.abort(),q.isUndefined(q.get(d,[a?.event_id,"request"]))&&q.set(d,[a?.event_id,"request"],q.pick(D,["name","method","url"]))}catch(e){}}},console(e,t,...s){q.isUndefined(q.get(d,[a?.event_id,"console"]))&&q.set(d,[a?.event_id,"console"],[]);const n=Date.now();d[a?.event_id].console.push({time:n,level:t,args:s})},beforeRequest(e,t,s,n){const a=b();if(["globals","environment","variables"].forEach((e=>{q.assign(a,q.get(d,`variables.${e}`))})),((e,t,s,n)=>{const{postmanJSON:a}=t,{lang:r,custom_functions:i}=n,c=q.cloneDeep(i),l=/{{([^}]+)}}/g;let p=String(e?.url||"");if(!q.isEmpty(p)){const t=p.match(l);q.isEmpty(t)||(q.forEach(t,(e=>{try{const t=o(e,s,r,c);t==e||q.isUndefined(t)||(p=q.replace(p,e,t))}catch(e){}})),q.set(e,"url",new S.Url(p)))}q.forEach(q.get(a,"url.path"),((t,s)=>{if(q.startsWith(t,":")){const n=q.findKey(q.get(a,"url.variable"),(e=>e?.key==q.trimStart(t,":")));q.startsWith(q.get(a,`url.variable.${n}.value`),"{{")&&q.endsWith(q.get(a,`url.variable.${n}.value`),"}}")&&!q.isUndefined(q.get(e,`url.path.${s}`))&&q.set(a,`url.variable.${n}.value`,q.get(e,`url.path.${s}`))}})),q.isEmpty(e.headers)||e?.headers?.each((e=>{e?.disabled||["key","value"].forEach((t=>{let n=String(q.get(e,t));const a=n.match(l);q.isEmpty(a)||(q.forEach(a,(e=>{try{const t=o(e,s,r,c);t==e||q.isUndefined(t)||(n=q.replace(n,e,t))}catch(e){}})),q.set(e,t,n))}))}));const u=q.get(e,"body.mode");switch(u){case"urlencoded":case"formdata":q.isEmpty(e?.body[u])||e?.body[u].each(((e,t)=>{e?.disabled||["key","value"].forEach((t=>{let n=q.get(e,t);if(q.isString(n)){const a=n.match(l);q.isEmpty(a)||(q.forEach(a,(e=>{try{const t=o(e,s,r,c);t==e||q.isUndefined(t)||(n=q.replace(n,e,t))}catch(e){}})),q.set(e,t,n))}}))}));break;default:let t=q.get(e,"body.raw");if(q.isString(t)&&!q.isEmpty(t)){const n=t.match(l);q.isEmpty(n)||(q.forEach(n,(e=>{try{const n=o(e,s,r,c);n==e||q.isUndefined(n)||(t=q.replace(t,e,n))}catch(e){}})),q.set(e,"body.raw",t))}}})(s,{postmanJSON:j},a,q.pick(r,["lang","custom_functions"])),q.includes(["get_parsed_request"],g)){u(x(s));try{O.abort()}catch(e){}y()}},beforePrerequest(e,t,s,n){if(!e){const e=C({requestJson:D,postmanJSON:j},"prerequest",r);q.forEach(e,(e=>{const n=new E(e);s.push(n),q.set(t,n?.script?.id,n?.listen)}))}},prerequest(e,t,s,n){e||q.forEach(s,(e=>{q.forEach(["_variables","environment","globals"],(t=>{const s=q.get(e,`result.${t}`),n={};try{q.forEach(q.get(s.toJSON(),"values"),(e=>{n[e?.key]=e?.value}))}catch(e){}try{const e=q.difference(q.keys(q.get(d,["variables",t])),q.keys(n));q.forEach(e,(e=>{"globals"!=t||q.includes(q.keys(b()),e)?"_variables"==t?q.unset(d,["variables","variables",e]):q.unset(d,["variables",t,e]):(q.unset(d,["variables","_globals",e]),q.unset(d,["variables",t,e]))})),q.forEach(n,((e,s)=>{let n=t;"_variables"===t&&(n="variables"),"globals"!==t||q.includes(q.keys(b()),s)||q.set(d,["variables","_globals",s],e),q.set(d,["variables",n,s],e)}))}catch(e){}}))}))},response:async(r,o,m,f,h,b,v)=>{if(q.includes(["get_parsed_request"],g)){u(x(f));try{O.abort()}catch(e){}y()}else{if(r){if(!q.includes(["script","sql","assert_visual","assert"],a?.type)){q.set(d,[a?.event_id,"exception","prerequest"],String(r)),q.set(d,[a?.event_id,"error"],{error_type:"prerequest",message:String(r)}),q.isUndefined(q.get(d,[a?.event_id,"console"]))&&q.set(d,[a?.event_id,"console"],[]);const e=Date.now();d[a?.event_id].console.push({time:e,level:"error",args:[String(r?.message)]})}}else q.set(d,[a?.event_id,"response"],await async function(a,r){const o=q.cloneDeep(a);q.unset(o,"_details");try{q.assign(o,{body:String(o.stream)})}catch(e){}try{let t="Monaco",a={ext:"json",mime:"application/json"};if(n(o.body))q.assign(a,{ext:"svg",mime:"image/svg+xml"}),t="Image";else{const n=await e.fromBuffer(o.stream);if(q.isObject(n))q.assign(a,n),t=p(`test.${a?.ext}`)?"Image":"pdf"==a?.ext?"Pdf":"xml"==a?.ext?"Monaco":"Other";else{const e=_(o?.headers||{},"content-type")||"";if(q.isEmpty(e)){const e=s.isJson(o.body)?"json":s.isJsonp(o.body)?"jsonp":"html";a={ext:e,mime:i.getType(e)||"application/jsonp"}}else a={ext:i.getExtension(e),mime:i.getType(i.getExtension(e))}}}q.assign(o,{mimeType:a,fitForShow:t})}catch(e){}const l={};try{q.assign(l,q.reduce(a.headers?.toJSON(),((e,t)=>(e[t.key]?(Array.isArray(e[t.key])||(e[t.key]=[e[t.key]]),e[t.key].push(t.value)):e[t.key]=t.value,e)),{}))}catch(e){}try{q.assign(o,{headers:l})}catch(e){}let u=`${o?.id}.${o?.mimeType?.ext}`;try{if(u=q.get(t.parse(_(l||{},"content-disposition")),"parameters.filename"),q.isString(u))try{u=decodeURIComponent(u)}catch(e){}}catch(e){}o.filename=u,o.cookies={},o.arrCookies=[];let d=_(l||{},"set-cookie");q.isString(d)&&(d=[d]);try{q.forEach(d,(e=>{const t=c.Cookie.parse(e).toJSON();q.assign(t,{name:t?.key,cookie_id:s.snowflakeId(`cookie_id_${w()}`)}),o.arrCookies.push(t);const{key:n,value:a}=t;o.cookies[n]=a}))}catch(e){}const m=q.get(r,"execution.data.0.timings.requestStart")||Date.now();return q.assign(o,{proxy:q.get(r,"execution.data.0.request.proxy")||{},timings:q.mapKeys(q.get(r,"execution.data.0.timings.offset")||{},((e,t)=>q.snakeCase(t))),requestStart:m,response_at:m}),o}(m,v));const o=function(e,t,s,n){const a=q.assign(q.cloneDeep(e),q.pick(t,["project_id","target_id","name"]));a.mode=q.get(t,"request.body.mode");try{a.paths=q.fromPairs((q.get(s,"url.variable")||[]).map((e=>[e.key,e.value])))||{}}catch(e){}try{const e=q.mapValues(q.keyBy(q.get(n,"execution.data[0].request.headers")||{},"key"),"value");!q.isEmpty(e)&&q.isObject(e)?a.headers=e:a.headers=q.reduce(a.headers?.toJSON(),((e,t)=>(e[t.key]=t.value,e)),{})}catch(e){}try{a.querys=a.url?.query?.toObject(),a.url=String(a.url)}catch(e){}try{if(a.body=q.get(e,`body.${q.get(e,"body.mode")}`),"msgpack"==a.mode){const e=require("msgpack5")();try{a.body=JSON.stringify(e.decode(l.from(q.values(a.body))))}catch(e){}}try{a.body=a.body.toObject()}catch(e){}}catch(e){}try{a.uri=e?.url.toJSON(),q.forEach(a.uri,((e,t)=>{"query"==t?a.uri[t]=e.toObject():"host"==t?a.uri[t]=q.join(e,"."):"path"==t?a.uri[t]=q.join(e,"/"):q.isArray(e)&&(a.uri[t]=q.join(e,""))}))}catch(e){}a.cookies={};try{const e=a.headers?.cookie;!q.isEmpty(e)&&q.isString(e)&&q.forEach(q.split(e,";"),(e=>{const{key:t,value:s}=c.Cookie.parse(e).toJSON();a.cookies[t]=s}))}catch(e){}return a}(f,D,j,v);q.set(d,[a?.event_id,"request"],o)}},beforeTest(e,t,s,n){if(!e&&!q.includes(["get_parsed_request"],g)){const e=C({requestJson:D,postmanJSON:j},"test",r);q.forEach(e,(e=>{const n=new E(e);s.push(n),q.set(t,n?.script?.id,n?.listen)}))}},test(e,t,s,n){if(!e&&!q.includes(["get_parsed_request"],g)){q.forEach(s,(e=>{q.forEach(["_variables","environment","globals"],(t=>{const s=q.get(e,`result.${t}`),n={};try{q.forEach(q.get(s.toJSON(),"values"),(e=>{n[e?.key]=e?.value}))}catch(e){}try{const e=q.difference(q.keys(q.get(d,["variables",t])),q.keys(n));q.forEach(e,(e=>{"globals"!=t||q.includes(q.keys(b()),e)?"_variables"==t?q.unset(d,["variables","variables",e]):q.unset(d,["variables",t,e]):(q.unset(d,["variables","_globals",e]),q.unset(d,["variables",t,e]))})),q.forEach(n,((e,s)=>{let n=t;"_variables"===t&&(n="variables"),"globals"!==t||q.includes(q.keys(b()),s)||q.set(d,["variables","_globals",s],e),q.set(d,["variables",n,s],e)}))}catch(e){}}))}));const e=q.get(d,["variables","variables","_pm.response.setBody"]),t=q.toInteger(q.get(d,["variables","variables","_pm.response.code"]));q.isString(e)&&(q.set(d,[a?.event_id,"response","stream"],{type:"Buffer",data:Array.from(l.from(e))}),q.set(d,[a?.event_id,"response","body"],e)),t>0&&q.set(d,[a?.event_id,"response","code"],t)}},assertion(e,t){q.includes(["get_parsed_request"],g)||!q.isEmpty(t)&&q.isArray(t)&&(q.isUndefined(q.get(d,[a?.event_id,"assertions"]))&&q.set(d,[a?.event_id,"assertions"],[]),d[a?.event_id].assertions=q.unionWith(q.concat(q.get(d,[a?.event_id,"assertions"]),t),q.isEqual))},item(e,t,s,n,r){if(!q.includes(["get_parsed_request"],g))if(!e&&q.isObject(n)){const{error:e,processedTemplate:t}=n;q.set(d[a?.event_id],"visualizer",{error:e,processed_template:t})}else q.set(d[a?.event_id],"visualizer",{error:null,processed_template:""})},responseData(e,t){q.includes(["get_parsed_request"],g)||"sse"!==D?.target_type||u({action:"sse",data:{stream:t,size:q.size(t),time:Date.now()},msg:"success",error:null})},done(e,t){if(!q.includes(["get_parsed_request"],g)){if(!e){const e=q.filter(q.get(d,[a?.event_id,"assertions"]),(e=>!1===e?.passed));let t="Ok";q.inRange(q.toInteger(q.get(d,[a?.event_id,"response","code"])),200,300)||(t=q.get(d,[a?.event_id,"response","status"])||q.get(d,[a?.event_id,"error","message"])),q.set(d,[a?.event_id,"status"],{assert:q.get(d,[a?.event_id,"assertions"],[]),success_assert:e,http:t})}try{const e=v(d,a?.event_id)||{},t=q.pick(q.get(d,"variables"),["environment","_globals"]),s=q.assign(k(q.get(d,a?.event_id)),q.pick(e,["startTime","endTime","currentVariables"])),n=q.assign(q.pick(D,["parent_id","project_id","test_id","target_id"]),q.defaults(q.pick(s,["error","iteration_id","startTime","endTime","currentVariables"]),{error:null}),{action:"request",type:a?.type,data:q.assign({variables:{globals:q.get(t,"_globals",{}),environment:q.get(t,"environment",{})}},q.omit(q.cloneDeep(s),["error"])),event_id:a?.event_id});"auto_test"===g||"sse"===D?.target_type?q.includes(["assert","assert_visual","api","sample","script","sql"],a?.type)&&(m.push(q.assign(k(q.get(q.cloneDeep(d),a?.event_id)),q.pick(a,["type","event_id","test_id","iteration_id"]))),u({action:"request",data:q.assign(n,{type:a?.type})})):u(n)}catch(e){f({action:"systemError",message:String(e),event_id:a?.event_id})}}y()}}))}))}catch(e){f({action:"systemError",message:String(e),event_id:a?.event_id})}}))}}function ge(){if(C)return R;C=1;const e=A.default,t=Y.default,s=K.default,n=Q.default,a=P.default,{returnBoolean:r,variableReplaceForCondition:i,variableReplace:o,getVariableActedUpon:c,convertEndRuntimeState:l,repeatArrayToLength:p}=de(),u=me(),d=function(){if(N)return I;N=1;const e=A.default,t=P.default,{variableReplace:s,convertEndRuntimeState:n}=de();return I=async(a,r,i,o,c)=>{try{const l=t.toInteger(s(a?.data?.sleep,o?.variables,r))||0;l>0&&e(l);const p=n(o,a?.event_id)||{},u={action:"request",data:t.assign({data:{sleep:l}},t.pick(p,["startTime","endTime","currentVariables"]),t.pick(a,["project_id","test_id","event_id","type"]),t.pick(t.get(o,a?.event_id),["iteration_id"]))};c.push(u?.data),i(u)}catch(e){throw{action:"systemError",message:String(e),event_id:a?.event_id}}}}(),m={api:u,sample:u,sse:u,request:u,script:u,assert:u,assert_visual:u,sql:u,wait:d,if:async(e,t,s,n,o)=>{try{const{data:p,children:u}=e,d=a.filter(u,(e=>a.toInteger(e?.enabled>0))),m=i(p?.var,n?.variables,t),g=p?.compare,f=i(p?.value,n?.variables,t),h=r(m,g,f),b=l(n,e?.event_id)||{},v={action:"request",data:a.assign({data:{isMatched:h,condition:{leftValue:{variable:p?.var,value:m,actedUpon:c(n,a.trim(p?.var,"{}"))||"Fixed"},compare:g,rightValue:{variable:p?.value,value:f,actedUpon:c(n,a.trim(p?.value,"{}"))||"Fixed"}}}},a.pick(b,["startTime","endTime","currentVariables"]),a.pick(e,["project_id","test_id","event_id","type"]),a.pick(a.get(n,e?.event_id),["iteration_id"]))};if(o.push(v?.data),s(v),h&&a.isArray(d)&&!a.isEmpty(d)){const{iterationData:e}=t,r=[e];await y(d,a.assign(a.cloneDeep(t),{iterationDataArr:r}),s,n,o)}}catch(t){throw{action:"systemError",message:String(t),event_id:e?.event_id}}},begin:async(e,t,s,n,r)=>{try{const{children:i}=e,o=a.filter(i,(e=>a.toInteger(e?.enabled>0)));if(a.isArray(o)&&!a.isEmpty(o)){const{iterationData:e}=t,i=[e];await y(o,a.assign(a.cloneDeep(t),{iterationDataArr:i}),s,n,r)}}catch(t){throw{action:"systemError",message:String(t),event_id:e?.event_id}}},loop:async(e,s,c,l,u)=>{try{const{data:d,children:m}=e,g=a.filter(m,(e=>a.toInteger(e?.enabled>0))),f=a.toInteger(o(a.get(d,"sleep",0),l?.variables,s)),h=a.toInteger(a.get(s,"startTime",Date.now())),b=a.toInteger(a.get(s,"timeout",a.toInteger(o(a.get(d,"loop_timeout",0),l?.variables,s))));if(a.isArray(g)&&!a.isEmpty(g)){const e=[];if((a.toInteger(d?.enable_data)||1)>0){switch(a.toInteger(d?.loop_data_type)||1){case 1:a.assign(e,a.values(a.get(d,"loop_traverse_data.iterationData",[])));break;case 2:const r=a.trim(a.get(d,"loop_iteration_data"));if(a.isString(r)&&""!=r){const s={1:"response.body",2:"response.headers",3:"response.cookies",4:"response.code",5:"request.url",6:"request.method",7:"request.querys",8:"request.body",9:"request.headers",10:"request.cookies"},i=a.toInteger(a.get(d,"loop_extract.var")),o=a.get(l,`${r}.${s[i]||"response.body"}`),c=a.trim(String(a.get(d,"loop_extract.value","$")));let p;switch(i){case 1:case 8:try{p=a.isString(o)?t.value(n.parse(o),c):t.value(o,c)}catch(e){}break;case 2:case 3:case 7:case 9:case 10:p=a.get(o,c);break;case 4:case 5:case 6:p=a.cloneDeep(o)}if(a.isString(p))try{p=n.parse(p)}catch(e){}a.isNumber(p)&&(p=String(p));let u=[];a.isArray(p)?u=a.map(p,(e=>a.isObject(e)?a.pickBy(e,(e=>!a.isObject(e))):{0:e})):a.isObject(p)?a.forEach(p,((e,t)=>{if(!a.isObject(e)){const s={};a.set(s,t,e),u.push(s)}})):a.isString(p)&&(u=a.map(a.values(p),((e,t)=>{const s={};return s[String(t)]=e,s}))),a.assign(e,u)}break;case 3:{let t=o(a.get(d,"loop_variable",""),l?.variables,s);if(a.isString(t))try{t=n.parse(t)}catch(e){}a.isNumber(t)&&(t=String(t));let r=[];a.isArray(t)?r=a.map(t,(e=>a.isObject(e)?a.pickBy(e,(e=>!a.isObject(e))):{0:e})):a.isObject(t)?a.forEach(t,((e,t)=>{if(!a.isObject(e)){const s={};a.set(s,t,e),r.push(s)}})):a.isString(t)&&(r=a.map(a.values(t),((e,t)=>{const s={};return s[String(t)]=e,s}))),a.assign(e,r)}break;case 4:{let t=a.split(a.get(d,"loop_fixed_value",""),","),s=[];a.forEach(t,((e,t)=>{a.isObject(e)||s.push({$key:t,$item:e})})),a.assign(e,s)}}}const m=a.toInteger(a.get(d,"loop_type",1));if(a.includes([1,2],m)){const t=1===m?a.size(e):a.toInteger(a.get(d,"limit",1));if(t>0){let n=a.cloneDeep(e);2===m&&(n=p(n,t)),n=a.flatMap(n,(e=>a.times(a.size(g),(()=>e))));const r=a.flatten(a.times(t,(()=>a.cloneDeep(g))));await y(r,a.assign(a.cloneDeep(s),{iterationDataArr:n,sleep:f,startTime:h,timeout:b}),c,l,u)}}else if(a.includes([3],m))for(;;){const t=a.get(s,"condition",a.get(d,"loop_condition",{})),n=i(t?.var,l?.variables,s),o=t?.compare,p=i(t?.value,l?.variables,s);if(!(0===b||b>0&&h+b>Date.now())||r(n,o,p))break;await y(a.cloneDeep(g),a.assign(a.cloneDeep(s),{iterationDataArr:e,sleep:f,condition:t,startTime:h,timeout:b}),c,l,u)}}}catch(t){throw{action:"systemError",message:String(t),event_id:e?.event_id}}}},g=async(e,t,n,r,i)=>{a.isUndefined(e.event_id)&&"http_request"===t?.scene&&a.set(e,"event_id",a.get(e,"data.target_id")),a.assign(r?.variables?.iterationData,a.get(t,"iterationData")),a.set(r,[e.event_id,"iteration_id"],s.snowflakeId());const o=a.get(m,`${e?.type}`);if(a.isFunction(o)){const{total:s,scene:c}=t;a.set(r,[e.event_id,"iteration","startTime"],Date.now());const{environment:l={},variables:p={},_globals:u={},iterationData:d={}}=a.get(r,"variables",{});a.set(r,[e.event_id,"iteration","startVariables"],a.cloneDeep({environment:l,variables:p,iterationData:d,globals:u}));try{await o(e,t,n,r,i),"auto_test"==c&&a.isInteger(e?.progress)&&n({action:"process",data:{processCurrentCount:e?.progress+1,processTotalCount:s,event_id:e?.event_id,testing_id:e?.test_id}})}catch(e){if(a.toInteger(t?.ignore_error)<1)throw e}}},y=async(t,s,n,r,i)=>{const o=t.shift();if(a.isObject(o)&&a.has(o,"type")&&a.toInteger(o?.enabled)>0){let{iterationDataArr:c}=s;a.isArray(c)||(c=a.values(c));const l=c.shift()||{};try{const{sleep:t}=s;await g(o,{...s,iterationData:l},n,r,i),a.toInteger(t)>0&&e(t)}catch(e){if(a.toInteger(s?.ignore_error)<1)throw e}a.isArray(t)&&!a.isEmpty(t)&&await y(t,{...s,iterationDataArr:c},n,r,i)}};return R={executeEvent:g,iterationEvent:y}}var ye=ue(function(){if(U)return J;U=1;const{repeatArrayToLength:e,formatAutotestReport:t,formatAutotestReportList:s,getInsideVariables:n}=de(),a=P.default,{mockExp:r}=F.default,i=K.default,{executeEvent:o,iterationEvent:c}=ge(),l=["systemError"];return J={run:async(p,u,d)=>{const{iterationCount:m,iterationData:g,scene:y}=u;"auto_test"==y&&(p=a.filter(p,(function(e){return a.toInteger(e?.enabled)>0})));const f=a.cloneDeep(a.flatten(new Array("auto_test"==y?a.max([a.toInteger(m),1]):1).fill(p)))||[],h=a.pick(u,["scene","lang","project","env","globals","cookies","system_configs","custom_functions","collection","database_configs","enable_sandbox","sleep","name","testing_id"]),b={variables:{environment:{},variables:{},globals:{},_globals:{},iterationData:{},iterationDataArr:[]}},v=[];if("http_request"!=y){const e=/{{([^}]+)}}/g;a.forEach(a.values(a.cloneDeep(g)),((t,s)=>{const i=a.cloneDeep(t);a.isObject(t)&&!a.isEmpty(t)&&a.forEach(t,((t,s)=>{if(""!=a.trim(t)&&a.isString(t)){const o=t.match(e);a.isEmpty(o)||a.forEach(o,(e=>{try{const o=r(e,n(),u?.lang,u?.custom_functions||{});o==e||a.isUndefined(o)||a.set(i,[s],a.replace(t,e,o))}catch(e){}}))}})),v.push(i)}))}const _=a.flatMap(e(a.cloneDeep(v),a.max([a.toInteger(m),1])),(e=>a.times(a.size(p),(()=>e)))),k={environment:a.get(u,"env.environment",{}),globals:a.get(u,"globals",{}),iterationDataArr:_};["environment","globals","iterationDataArr"].forEach((e=>{a.forEach(k[e],((t,s)=>{a.isUndefined(a.get(b,["variables",e,s]))&&(a.set(b,["variables",e,s],t),"globals"===e&&a.set(b,["variables",`_${e}`,s],t))}))}));const x=[],q=Date.now();if("http_request"==y){const e=a.first(f);if(a.isObject(e)&&a.has(e,"type"))try{await o(e,a.assign(h,{iterationData:{}}),d,b,x)}catch(e){if(a.includes(l,e?.action))throw e}}else{const e=[];if(a.forEach(f,((t,s)=>{t?.enabled>0&&e.push(a.assign(a.cloneDeep(t),{progress:s}))})),!a.isEmpty(e)){const t=a.size(e);try{await c(e,a.assign(h,{iterationDataArr:_,total:t}),d,b,x)}catch(e){d(e)}}const n=a.pick(a.get(b,"variables"),["environment","_globals"]);d({action:"complete",data:a.assign(t(q,x),{list:s(x),variables:{globals:u?.enable_sandbox>0?{}:a.get(n,"_globals",{}),environment:u?.enable_sandbox>0?{}:a.get(n,"environment",{})}},a.pick(a.get(u,"env",{}),["env_id","env_name"]),{testing_id:a.get(a.first(x),"test_id")},{report_name:`${u?.name}`},{report_id:i.snowflakeId()})})}},request2HAR:(e,t)=>new Promise((async(s,n)=>{const r=a.pick(t,["scene","lang","project","env","globals","cookies","system_configs","custom_functions","collection","database_configs","enable_sandbox","sleep","name","testing_id"]),i={variables:{environment:{},variables:{},globals:{},_globals:{},iterationData:{},iterationDataArr:[]}},c={environment:a.get(t,"env.environment",{}),globals:a.get(t,"globals",{})};["environment","globals"].forEach((e=>{a.forEach(c[e],((t,s)=>{a.isUndefined(a.get(i,["variables",e,s]))&&(a.set(i,["variables",e,s],t),"globals"===e&&a.set(i,["variables",`_${e}`,s],t))}))}));const l=[],p=a.first(e);if(a.isObject(p)&&a.has(p,"type"))try{await o(p,a.assign(r,{scene:"get_parsed_request"}),(e=>{console.log(JSON.stringify(e,null,2)),s(e)}),i,l)}catch(e){n(e)}}))}}());module.exports=ye;
|
package/package.json
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "runner-runtime",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.91",
|
|
4
4
|
"description": "runner-runtime.",
|
|
5
|
-
"main": "index.js",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"files": [
|
|
7
|
+
"dist"
|
|
8
|
+
],
|
|
6
9
|
"scripts": {
|
|
7
|
-
"test": "echo \"Error: no test specified\" && exit 1"
|
|
10
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
11
|
+
"build": "rollup -c rollup.config.js",
|
|
12
|
+
"build-publish": "npm version patch && rollup -c rollup.config.js && npm publish"
|
|
8
13
|
},
|
|
9
14
|
"repository": {
|
|
10
15
|
"type": "git",
|
|
@@ -20,25 +25,27 @@
|
|
|
20
25
|
},
|
|
21
26
|
"homepage": "https://github.com/Apipost-Team/runner-runtime#readme",
|
|
22
27
|
"devDependencies": {
|
|
23
|
-
"
|
|
28
|
+
"@rollup/plugin-commonjs": "^28.0.5",
|
|
29
|
+
"database-query": "^1.1.12",
|
|
30
|
+
"@rollup/plugin-terser": "^0.4.4"
|
|
24
31
|
},
|
|
25
32
|
"dependencies": {
|
|
26
33
|
"@apipost/url-join": "^1.0.1",
|
|
27
34
|
"apipost-tools": "^0.0.38",
|
|
28
35
|
"atomic-sleep": "^1.0.0",
|
|
29
36
|
"content-disposition": "^0.5.4",
|
|
37
|
+
"exp-mock": "^2.0.19",
|
|
30
38
|
"file-type": "^16.5.4",
|
|
31
39
|
"is-image": "^3.0.0",
|
|
32
40
|
"is-svg": "^4.3.2",
|
|
33
41
|
"json-bigint": "^1.0.0",
|
|
42
|
+
"json-schema-faker-pro": "^0.5.33",
|
|
34
43
|
"json5": "^2.2.3",
|
|
35
44
|
"jsonpath": "^1.1.1",
|
|
36
45
|
"lodash": "^4.17.21",
|
|
37
46
|
"mime": "^3.0.0",
|
|
38
47
|
"minimatch": "^9.0.4",
|
|
39
48
|
"mockjs5-pro": "^1.0.6",
|
|
40
|
-
"json-schema-faker-pro": "^0.5.33",
|
|
41
|
-
"exp-mock": "^2.0.19",
|
|
42
49
|
"msgpack5": "^6.0.2",
|
|
43
50
|
"net": "^1.0.2",
|
|
44
51
|
"postman-collection": "^5.0.2",
|
|
@@ -50,4 +57,4 @@
|
|
|
50
57
|
"uuid": "^9.0.1",
|
|
51
58
|
"validator": "^13.15.0"
|
|
52
59
|
}
|
|
53
|
-
}
|
|
60
|
+
}
|