apipost-cli 3.0.2 → 3.0.3

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.
Files changed (2) hide show
  1. package/dist/index.js +46 -16
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -134,24 +134,46 @@ function reportersJSON(data, option) {
134
134
  }
135
135
  }
136
136
 
137
+ //formatTimeToISO
138
+ function formatTimeToISO(time) {
139
+ const dayjs = __nccwpck_require__(7401);
140
+ const utc = __nccwpck_require__(94359);
141
+ const timezone = __nccwpck_require__(64761);
142
+ // 加载插件
143
+ dayjs.extend(utc);
144
+ dayjs.extend(timezone);
145
+ return dayjs(time).tz('Asia/Shanghai').format();
146
+ };
137
147
  async function reportersHOOK(data, option) {
148
+ const requestData = _.assign(data?.data, {
149
+ scenario: 'cli',
150
+ source: 'cli',
151
+ start_at: formatTimeToISO(data?.data?.start_at),
152
+ end_at: formatTimeToISO(data?.data?.end_at)
153
+ });
154
+
155
+ if (!_.has(requestData, 'project_id')) {
156
+ _.set(requestData, 'project_id', _.get(option, "projectId") || _.get(_.first(requestData?.list), 'project_id'))
157
+ }
158
+
138
159
  try {
139
160
  if (data?.action == 'complete') {
140
- await axios.post(
141
- `${option?.webHook}/open/automated_testing/report/add`,
142
- _.assign(data?.data, { source: 'cli' }),
143
- {
144
- rejectUnauthorized: false,
145
- headers: {
146
- 'Content-Type': 'application/json',
147
- 'api-token': option?.apiToken,
148
- },
149
- }
150
- );
161
+ const response = await axios.post(
162
+ `${option?.webHook}/open/automated_testing/report/add`, requestData, {
163
+ rejectUnauthorized: false,
164
+ headers: {
165
+ 'Content-Type': 'application/json',
166
+ 'api-token': option?.apiToken,
167
+ },
168
+ });
151
169
 
152
- console.log(`\nThe JSON-formatted test report has been sent via POST to ${option?.webHook}.`)
153
- }else{
154
- console.log(data?.action,1111)
170
+ if (response?.data?.code != 0) {
171
+ console.error(`Error during POST request ${response?.data?.msg}`);
172
+ } else {
173
+ console.log(`\nThe JSON-formatted test report has been sent via POST to ${option?.webHook}.`)
174
+ }
175
+ } else {
176
+ console.log(data?.action, 1111)
155
177
  }
156
178
  } catch (error) {
157
179
  console.error(`Error during POST request(${option?.webHook}/${option?.apiToken}): ${error.message}`);
@@ -185843,6 +185865,13 @@ module.exports.DatabaseConnectTest = DatabaseConnectTest;
185843
185865
 
185844
185866
  /***/ }),
185845
185867
 
185868
+ /***/ 64761:
185869
+ /***/ (function(module) {
185870
+
185871
+ !function(t,e){ true?module.exports=e():0}(this,(function(){"use strict";var t={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(n,i,o){var r,a=function(t,n,i){void 0===i&&(i={});var o=new Date(t),r=function(t,n){void 0===n&&(n={});var i=n.timeZoneName||"short",o=t+"|"+i,r=e[o];return r||(r=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:i}),e[o]=r),r}(n,i);return r.formatToParts(o)},u=function(e,n){for(var i=a(e,n),r=[],u=0;u<i.length;u+=1){var f=i[u],s=f.type,m=f.value,c=t[s];c>=0&&(r[c]=parseInt(m,10))}var d=r[3],l=24===d?0:d,h=r[0]+"-"+r[1]+"-"+r[2]+" "+l+":"+r[4]+":"+r[5]+":000",v=+e;return(o.utc(h).valueOf()-(v-=v%1e3))/6e4},f=i.prototype;f.tz=function(t,e){void 0===t&&(t=r);var n,i=this.utcOffset(),a=this.toDate(),u=a.toLocaleString("en-US",{timeZone:t}),f=Math.round((a-new Date(u))/1e3/60),s=15*-Math.round(a.getTimezoneOffset()/15)-f;if(!Number(s))n=this.utcOffset(0,e);else if(n=o(u,{locale:this.$L}).$set("millisecond",this.$ms).utcOffset(s,!0),e){var m=n.utcOffset();n=n.add(i-m,"minute")}return n.$x.$timezone=t,n},f.offsetName=function(t){var e=this.$x.$timezone||o.tz.guess(),n=a(this.valueOf(),e,{timeZoneName:t}).find((function(t){return"timezonename"===t.type.toLowerCase()}));return n&&n.value};var s=f.startOf;f.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return s.call(this,t,e);var n=o(this.format("YYYY-MM-DD HH:mm:ss:SSS"),{locale:this.$L});return s.call(n,t,e).tz(this.$x.$timezone,!0)},o.tz=function(t,e,n){var i=n&&e,a=n||e||r,f=u(+o(),a);if("string"!=typeof t)return o(t).tz(a);var s=function(t,e,n){var i=t-60*e*1e3,o=u(i,n);if(e===o)return[i,e];var r=u(i-=60*(o-e)*1e3,n);return o===r?[i,o]:[t-60*Math.min(o,r)*1e3,Math.max(o,r)]}(o.utc(t,i).valueOf(),f,a),m=s[0],c=s[1],d=o(m).utcOffset(c);return d.$x.$timezone=a,d},o.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},o.tz.setDefault=function(t){r=t}}}));
185872
+
185873
+ /***/ }),
185874
+
185846
185875
  /***/ 94359:
185847
185876
  /***/ (function(module) {
185848
185877
 
@@ -474538,7 +474567,7 @@ function rfdcCircles (opts) {
474538
474567
  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
474539
474568
 
474540
474569
  "use strict";
474541
- var e,t,s,n,r,a,o,i,c,p,l,u,d=__nccwpck_require__(86950),m=__nccwpck_require__(90250),g=__nccwpck_require__(57147),y=__nccwpck_require__(589),h=__nccwpck_require__(71017),f=__nccwpck_require__(87604),b=__nccwpck_require__(59789),v=__nccwpck_require__(29994),_=__nccwpck_require__(22037),k=__nccwpck_require__(90520),x=__nccwpck_require__(44571),q=__nccwpck_require__(67350),S=__nccwpck_require__(74378),O=__nccwpck_require__(86904),E=__nccwpck_require__(84930),w=__nccwpck_require__(85269),j=__nccwpck_require__(43981),D=__nccwpck_require__(55031),T=__nccwpck_require__(42562),$=__nccwpck_require__(93141),V=__nccwpck_require__(86019),N=__nccwpck_require__(36435),C=__nccwpck_require__(97271),I=__nccwpck_require__(4501),R=__nccwpck_require__(35591),J=__nccwpck_require__(38831);function U(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function A(){if(t)return e;t=1;const s=d,n=m,r=g,a=y,o=h,{mockExp:i}=f,c=b,p=v,l=_,u=k.Buffer,q=x,S=function(e,t,s){if(n.isArray(e)){const r=n.find(e,n.matchesProperty("target_id",t));if(r){if(s.includes(r.parent_id))return;n.isString(r.parent_id)&&(s.push(r.parent_id),S(e,r.parent_id,s))}}},O=()=>{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}`]=c.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(t=>{e[`$${t}`]=(()=>{let e="1";return e+=n.random(3,9).toString(),e+=n.times(9,()=>n.random(0,9)).join(""),e})()});return e.$timestamp=n.toInteger(Date.now()/1e3),e.$microTimestamp=(new Date).getTime(),e.$randomInt=Math.floor(1e3*Math.random()),e.$randomFloat=1e3*Math.random(),e};return e={getStringRequestBody:e=>{let t="";try{if(!e||!e?.mode)return t;switch(e.mode){case"raw":t=e?.raw||"",n.isObject(t)&&(t=JSON.stringify(t));break;case"urlencoded":{const s={};n.forEach(e?.urlencoded,e=>{e.disabled||(s[e.key]=e.value)}),t=JSON.stringify(s);break}case"formdata":{const s={};n.forEach(e?.formdata,e=>{e.disabled||(s[e.key]=e.value)}),t=JSON.stringify(s);break}}return t}catch(e){return t}},atomicSleep:s,jsfGenerate:(e,t=[],s,r={})=>{let o;if(a.option({alwaysFakeOptionals:!0,useExamplesValue:!0,fillProperties:!1,useDefaultValue:!0,mockRules:t,customFunctions:r,lang:"zh-cn"}),n.some(["default","examples","pattern","format","x-mock","enum"],t=>n.includes(n.keys(e?.schema||e),t)))try{o=a.generate(e)}catch(e){}if(!n.isUndefined(o))return o},getAPIFromCollection:function(e,t){return n.find(e,n.matchesProperty("target_id",t))},getParentTargetIDs:S,base64toCacheFile:(e,t,s,a)=>{let i=t;try{r.statSync(i)}catch(c){if(!n.isEmpty(s)){const c=String(s).match(/data:([0-9a-zA-Z\/\-]+);base64,/i),d=p.getExtension(c&&c[1]?c[1]:"");if(n.isString(d)){const c=o.resolve(l.tmpdir(),`${a}`);try{r.mkdirSync(c)}catch(e){}let p=t;n.endsWith(p,`.${d}`)||(p=`${e}.${d}`);const m=o.resolve(c,p);try{r.writeFileSync(m,u.from(n.replace(s,/^data:[0-9a-zA-Z\/\-]+;base64,/,""),"base64")),i=m}catch(e){}}}}return i},replace2RegExp:(e,t,s)=>{try{return n.replace(e,new RegExp(String(t),"ig"),String(s))}catch(r){return n.replace(e,t,String(s))}},getInsideVariables:O,repeatArrayToLength:(e,t)=>{if(n.isArray(e)||(e=n.values(e)),n.isEmpty(e))return[];const s=n.ceil(t/e.length),r=n.flattenDeep(n.fill(new Array(s),e));return n.take(r,t)},convertEndRuntimeState:(e,t)=>{try{const{startTime:s,startVariables:r}=n.get(e,[t,"iteration"],{}),a=Date.now(),o={},i={};["globals","environment","iterationData","variables"].forEach(e=>{n.assign(o,n.get(r,`${e}`))}),n.forEach(o,(e,t)=>{let s;n.set(i,[t,"value"],e),n.isUndefined(e)||["variables","iterationData","environment","globals"].some(e=>{if(!n.isUndefined(n.get(r,[`${e}`,t])))return s=e,!0}),n.set(i,[t,"actedUpon"],s)});const{environment:c={},variables:p={},_globals:l={},iterationData:u={}}=n.get(e,"variables",{}),d={environment:c,variables:p,iterationData:u,globals:l},m={};["globals","environment","iterationData","variables"].forEach(e=>{n.assign(m,n.get(d,`${e}`))});const g={};return n.forEach(m,(e,t)=>{if(!n.includes(["_pm.response.code","_pm.response.setBody"],t)){let s;["variables","iterationData","environment","globals"].some(e=>{if(!n.isUndefined(n.get(d,[`${e}`,t])))return s=e,!0}),n.set(g,[t],{start:n.pick(i[t],["value","actedUpon"]),current:{value:e,actedUpon:s}})}}),{startTime:s,endTime:a,currentVariables:g}}catch(e){}},returnBoolean:(e,t,s)=>{let r=!1;if(""===e)return"null"==t;switch(t){case"eq":r=e==s;break;case"uneq":r=e!=s;break;case"gt":r=n.gt(Number(e),Number(s));break;case"gte":r=n.gte(Number(e),Number(s));break;case"lt":r=n.lt(Number(e),Number(s));break;case"lte":r=n.lte(Number(e),Number(s));break;case"includes":r=n.includes(e,s)||n.includes(e,Number(s));break;case"unincludes":r=!n.includes(e,s)&&!n.includes(e,Number(s));break;case"null":r=n.isEmpty(e);break;case"notnull":r=!n.isEmpty(e);break;case"exist":r=!n.isUndefined(e);break;case"notexist":r=n.isUndefined(e);break;case"regularmatch":try{r=new RegExp(String(s).substring(1,String(s).length-1)).test(e)}catch(e){}break;case"belongscollection":r=n.split(s,",").indexOf(e)>-1;break;case"notbelongscollection":r=-1==n.split(s,",").indexOf(e)}return r},variableReplaceForCondition:(e,t,s)=>{if(!n.startsWith(e,"{{")||!n.endsWith(e,"}}"))return e;const r=O();["globals","_globals","environment","iterationData","variables"].forEach(e=>{n.assign(r,n.get(t,`${e}`))}),e=n.replace(e,/\{\{([^}]+)\}\}/g,(e,t)=>n.get(r,t.trim(),e));const{lang:a,custom_functions:o}=s;try{const t=i(e,r,a,o);if(t===e&&n.startsWith(e,"{{")&&n.endsWith(e,"}}"))return;return t}catch(e){return}},getCaseInsensitive:(e,t)=>{try{const s=n.toLower(t);if(!n.isObject(e))return;for(const t in e)if(n.toLower(t)===s)return e[t]}catch(e){}},camelCaseToSnakeCase:e=>(["arrCookies","fitForShow","mimeType","requestStart","responseSize","responseTime"].forEach(t=>{const s=n.snakeCase(t),r=n.get(e,`response.${t}`);n.isUndefined(r)||(n.set(e,`response.${s}`,r),n.unset(e,`response.${t}`))}),e),formatAutotestReportList:e=>{const t=[];return n.forEach(n.cloneDeep(e),e=>{const s=e?.type;n.includes(["assert","assert_visual","api","sample","script","sql"],s)?t.push(n.assign(n.pick(e?.response,["network","formatTimings","formatSize","timings","response_time","response_at","proxy","status","code","response_size"]),n.pick(e?.request,["url","method","name","target_id","project_id"]),n.pick(e,["type","event_id","test_id","iteration_id","startTime","endTime","currentVariables"]),{type:s,status:{assert:n.isEmpty(e?.status?.success_assert)?"OK":e?.status?.success_assert,http:e?.status?.http||"OK"}})):n.includes(["if"],s)?t.push(n.assign(n.pick(e,["type","event_id","test_id","iteration_id","startTime","endTime","currentVariables"]),{type:s,status:{...e?.data}})):n.includes(["wait"],s)&&t.push(n.assign(n.pick(e,["type","event_id","test_id","iteration_id","startTime","endTime","currentVariables"]),{type:s,sleep:e?.data?.sleep||0}))}),t},getVariableActedUpon:(e,t)=>{let s;return["variables","iterationData","environment","globals"].some(r=>{if(n.includes(n.keys(n.get(e,`variables.${r}`)),t))return s=r,!0}),s},variableReplace:(e,t,s)=>{const r=O();["globals","_globals","environment","iterationData","variables"].forEach(e=>{n.assign(r,n.get(t,`${e}`))}),e=n.replace(e,/\{\{([^}]+)\}\}/g,(e,t)=>n.get(r,t.trim(),e));const{lang:a,custom_functions:o}=s;try{return i(e,r,a,o)}catch(t){return e}},formatAutotestReport:(e,t)=>{const s={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:n.size(t),total_response_time:null,avg_response_time:null,total_response_size:0,avg_response_size:0};let r=0,a=0;return n.forEach(n.cloneDeep(t),e=>{if(n.includes(["api","sample"],e?.type)&&(s.http.total++,r+=n.toInteger(e?.response?.response_size),a+=n.toInteger(e?.response?.response_time),"ok"!=n.toLower(e?.status?.http)&&s.http.error++),n.includes(["api","sample","assert","assert_visual"],e?.type)&&!n.isEmpty(e?.status?.assert)&&n.isArray(e?.status?.assert)){n.size(e?.status?.assert)>0&&s.assert.total++;const t=n.filter(e?.status?.assert,e=>!1===e?.passed);n.size(t)>0&&s.assert.error++}}),s.http.success=s.http.total-s.http.error,s.assert.success=s.assert.total-s.assert.error,s.avg_response_time=n.round(a/s.http.total,2)||0,s.avg_response_size=n.round(r/s.http.total,2)||0,s.total_response_time=a,s.total_response_size=r,s},encodeURIComponentUnique:e=>{if(n.startsWith(e,"{{")&&n.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 q(e,...t)}}}function P(){if(a)return r;a=1;const e=E,t=w,o=q,i=j,c=D({storeAsString:!0}),p=T,l=v,{mockExp:u}=f,d=$,y=k.Buffer,h=V,{getAPIFromCollection:_,smartUrlJoin:x,getStringRequestBody:S,jsfGenerate:O,replace2RegExp:U,getParentTargetIDs:P,encodeURIComponentUnique:B,base64toCacheFile:z,getInsideVariables:L,convertEndRuntimeState:H,getCaseInsensitive:M,camelCaseToSnakeCase:F}=A(),{generateHarFromRequest:W}=function(){if(n)return s;n=1;const e=m;function t(e){return(e||[]).map(({key:e,value:t})=>({name:e,value:t}))}function r(e){return(e||[]).map(({key:e,value:t})=>({name:e,value:String(t)}))}function a(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 s={generateHarFromRequest:function(s){const{method:n="GET",headers:o=[],queryParams:i=[],body:c={mode:"none"}}=s;let p=s?.url?String(s?.url):"";return e.isEmpty(e.get(s,"url.protocol"))&&(p=`http://${p}`),{log:{version:"1.2",creator:{name:"Custom Node Request to HAR Converter",version:"1.0"},entries:[{request:{method:n.toUpperCase(),httpVersion:"HTTP/1.1",url:String(p||"http://"),headers:t(o),queryString:r(i),postData:a(c),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}]}}}}}(),X=m,K=N,G=K.Url,Y=K.Event,Q=b,{v4:Z}=C,ee=g,{minimatch:te}=I,se=R,ne=(e,t,s)=>{let n=S(e?.postmanJSON?.body);if(!X.isEmpty(n)){const e=/{{([^}]+)}}/g,t=n.match(e);X.isEmpty(t)||X.forEach(t,e=>{try{const t=u(e,L()||{},s?.lang,s?.custom_functions);t==e||X.isUndefined(t)||(n=X.replace(n,e,t))}catch(e){}})}if(X.includes(["urlencoded","formdata"],e?.postmanJSON?.body?.mode))try{n=JSON.parse(n)}catch(e){n={}}const r={data:n};let a="";X.forEach(s?.custom_functions,(e,t)=>{""!=(t=X.trim(t))&&(a=`\n ${a}\n\n function ${t}(text) {\n try{\n ${e}\n }catch(e){\n return text;\n }\n }\n `)});const{requestJson:o}=e,{database_configs:i,env:c}=s,p=["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("${X.get(process,"env.ELECTRON_PIPE")}");\n }catch(e){\n return "${X.get(process,"env.ELECTRON_PIPE")}";\n }\n }\n `,"let lodashv4 = require('lodash');","let { mockExp } = require('exp-mock-light');","let Mock = require('mockjs');","let xml2json = xml2Json;","let JSON5 = require('json5');","let aTools = require('apipost-tools');","let jsonpath = require('jsonpath');",`let _envTmpVariablesData = ${JSON.stringify(c)}`,`let _parsedRequestBodyObjData = ${JSON.stringify(r)}`,`let _customFunctions = ${JSON.stringify(s?.custom_functions||{})}`,"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 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?.status == 'success'){\n return resultObj?.result\n }else{\n console.error(\"pm.execute : \" + String(resultObj?.message))\n // throw new Error(resultObj?.message);\n }\n }catch (e) {\n console.error(\"pm.execute : \" + 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 contentType = pm.request?.headers?.get('content-type');\n if (!lodashv4.isString(contentType)) {\n try {\n const mode = lodashv4.get(pm, 'request.body.mode', '');\n const rawLang = lodashv4.toLower(lodashv4.get(pm, 'request.body.options.raw.language', ''));\n switch (mode) {\n case 'raw':\n if (rawLang === 'json') {\n contentType = 'application/json';\n } else if (rawLang === 'text') {\n contentType = 'text/plain';\n } else if (rawLang === 'xml') {\n contentType = 'application/xml';\n } else if (rawLang === 'javascript') {\n contentType = 'application/javascript';\n } else {\n contentType = 'text/plain';\n }\n break;\n\n case 'urlencoded':\n contentType = 'application/x-www-form-urlencoded';\n break;\n\n case 'formdata':\n contentType = 'multipart/form-data';\n break;\n\n case 'file':\n contentType = 'application/octet-stream';\n break;\n\n case 'graphql':\n contentType = 'application/json';\n break;\n\n default:\n contentType = '';\n }\n } catch (err) { }\n }\n\n let _requestTmpVariablesData = ${JSON.stringify({name:o?.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 request_parsed_bodys: _.get(_parsedRequestBodyObjData, 'data', ''),\n mode: "${X.get(o,"request.body.mode")}",\n contentType,\n id: "${o?.sample_id||o?.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 // 替换变量\n const _replaceMockExp = (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, pm.variables.toObject(), 'en', _customFunctions || {});\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\n // 获取最终请求body \n if('${t}' == 'prerequest'){\n try {\n pm.getFinalRequestRawBody = () => {\n let requestBody = pm.variables.replaceIn(request.request_parsed_bodys);\n\n if (lodashv4.isString(requestBody)) {\n requestBody = _replaceMockExp(requestBody)\n }\n\n if (lodashv4.isObject(requestBody)) {\n requestBody = JSON.parse(_replaceMockExp(JSON.stringify(requestBody)))\n }\n\n pm.setRequestBody(requestBody)\n return requestBody;\n }\n } catch (e) {\n pm.getFinalRequestRawBody = () => { return request.request_parsed_bodys; }\n }\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 ${a}\n `],l={prerequest:[],test:[]},d={pre_tasks:"prerequest",post_tasks:"test"};return X.forEach(X.keys(d),e=>{let t=X.join(p,"\n");X.forEach(X.get(o,`request.${e}`),e=>{if(X.isObject(e)&&e.enabled>0)switch(e.type){case"customScript":!X.isEmpty(e?.data)&&X.isString(e?.data)&&"undefined"!=e?.data&&(t=`${t}\n${X.trim(e?.data)}\n`);break;case"database":let n=i[e.data?.connectionId]||{};if(!X.isEmpty(n)){n=JSON.stringify(n,null,"\t");let r=X.get(e,"data.query","");if(!X.isEmpty(r)){const e=/{{([^}]+)}}/g,t=r.match(e);X.isEmpty(t)||X.forEach(t,e=>{try{const t=u(e,L()||{},s?.lang,s?.custom_functions);t==e||X.isUndefined(t)||(r=X.replace(r,e,t))}catch(e){}})}X.set(e,"data.query",r),t=`${t}\n ! await (async function(){ \n const dbData = ${JSON.stringify(e.data||{query:""})} // 此处先进性expmock替换\n const query = _replaceMockExp(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(${n},{\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 r=X.toInteger(e?.data);r>0&&(t=`${t}\nsleep(${r});`);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 a={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 `}X.forEach(e.data?.variables,s=>{if(X.isObject(s)&&""!=s?.name&&!X.isUndefined(a[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(a[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(a[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(a[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(a[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(a[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(a[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 `;const n=X.split(t,"\n");l[d[e]].push({listen:d[e],script:{exec:X.isEmpty(X.filter(X.get(o,`request.${e}`),e=>e?.enabled>0))?[]:n,type:"text/javascript"}})}),l[t]};const re=(e,t={})=>{X.isArray(e)||(e=[]);const{httpVersion:s="1.1",statusCode:n,method:r,path:a="/"}=t;let o=0;if(n){const e=`HTTP/${s} ${n}\r\n`;o+=y.byteLength(e)}else if(r){const e=`${r.toUpperCase()} ${a} HTTP/${s}\r\n`;o+=y.byteLength(e)}return e.forEach(({key:e,value:t})=>{const s=`${e}: ${t}\r\n`;o+=y.byteLength(s)}),o+=y.byteLength("\r\n"),o},ae=(e,t="utf8")=>{if(!e)return 0;if(y.isBuffer(e))return y.byteLength(e);const s="object"==typeof e?JSON.stringify(e):String(e);return y.byteLength(s,t)},oe=(e,t)=>{const s=X.assign(X.pick(e,["event_id","test_id"]),X.pick(e?.data,["target_id","project_id"]));if(X.includes(["api","sample","sse","request"],e?.type)){X.toInteger(e?.auto_sync)>0||X.includes(["http_request","get_parsed_request"],t?.scene)?X.assign(s,_(t?.collection,X.get(e,"data.target_id"))):X.assign(s,X.get(e,"data.apiData"));const n=[];if(X.includes(["sample"],e?.type)){const s=X.get(_(t?.collection,X.get(e,"data.target_id")),"parent_id");X.isString(s)&&s&&P(t?.collection,s,n)}else P(t?.collection,X.get(e,"data.target_id"),n);X.includes(n,"0")||n.push("0"),X.forEach(n,e=>{const n={};"0"==e?X.assign(n,X.get(t,"project.request")):X.assign(n,X.get(_(t?.collection,e),"request")),X.isObject(n)&&!X.isEmpty(n)&&["header","body","query","cookie"].forEach(e=>{let t=X.filter(X.get(n,`${e}.parameter`),e=>X.toInteger(e.is_system)>0||e.is_checked>0);if(!X.isEmpty(t)&&X.isArray(t)){const n=X.filter(X.get(s,`request.${e}.parameter`),e=>e.is_checked>0)||[],r=X.chain(n).groupBy("key").map(e=>X.reduce(e,(e,t)=>t.is_checked>0?t:e,e[e.length-1])).value(),a=X.chain(t).groupBy("key").map(e=>X.reduce(e,(e,t)=>t.is_checked>0?t:e,e[e.length-1])).value();"header"==e?X.set(s,`request.${e}.parameter`,X.unionBy(r,a,e=>X.toLower(e.key))):X.set(s,`request.${e}.parameter`,X.unionBy(r,a,"key"))}})});let r={},a=X.get(s,"server_id");X.forEach(X.reverse(n),e=>{const n={};if("0"==e)X.assign(n,X.get(t,"project.request"));else{const r=X.get(_(t?.collection,e),"server_id");X.isUndefined(X.get(s,"server_id"))&&X.isString(r)&&"0"!==X.toString(r)&&(a=r),X.assign(n,X.get(_(t?.collection,e),"request"))}X.isObject(n)&&!X.isEmpty(n)&&["auth","pre_script","test","pre_tasks","post_tasks"].forEach(e=>{const t=X.get(n,`${e}`);X.isEmpty(t)||(X.isArray(t)?r[e]=X.union(r[e],t):X.isObject(t)?"auth"==e&&"inherit"!=X.get(t,"type")&&(X.set(r,"auth.type",X.get(t,"type")),X.set(r,`auth.${X.get(t,"type")}`,X.get(t,`${X.get(t,"type")}`))):X.isString(t)&&(r[e]=`${r[e]}\n${t}`))})}),X.forEach(r,(e,t)=>{X.isEmpty(e)||(X.isArray(e)?X.set(s,`request.${t}`,X.union(e,X.get(s,`request.${t}`))):X.isObject(e)?"auth"==t&&"inherit"==X.get(s,"request.auth.type")&&(X.set(s,"request.auth.type",X.get(e,"type")),X.set(s,`request.auth.${X.get(e,"type")}`,X.get(e,`${X.get(e,"type")}`))):X.isString(e)&&X.set(s,`request.${t}`,`${e}\n${X.get(s,`request.${t}`)}`))}),X.unset(r);const o=[];X.get(t,"cookies.switch")>0&&X.isArray(X.get(t,"cookies.data"))&&X.forEach(X.get(t,"cookies.data"),e=>{let t=X.trim(e?.key);if(X.isObject(e)&&!X.isEmpty(t)){let s=X.find(o,X.matchesProperty("key",t)),n=e?.domain;try{const t=new G(e?.domain);n=X.join(t?.host,".")}catch(e){}const r={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:!!X.toInteger(e?.secure),httpOnly:!!X.toInteger(e?.httpOnly),sameSite:e?.sameSite||"strict"};s>-1?o[s]=r:o.push(r)}}),X.isArray(X.get(s,"request.cookie.parameter"))&&X.forEach(X.get(s,"request.cookie.parameter"),e=>{let t=X.trim(e?.key);if(X.isObject(e)&&!X.isEmpty(t)&&e?.is_checked>0){let s=X.find(o,X.matchesProperty("key",t)),n={key:t,value:e?.value,schema:e?.schema};s>-1?o[s]=n:o.push(n)}}),X.set(s,"request.cookie.parameter",o),X.unset(o),X.isString(a)&&"0"!==X.toString(a)||(a="1");const i=X.isString(X.get(s,"url"))?X.get(s,"url"):X.get(s,"request.url"),{globals:c,env:p}=t;let l=X.trim(X.get(s,"pre_url",""));""==l&&(l=X.trim(X.get(X.find(X.get(t,"env.env_pre_urls"),e=>e?.server_id==a),"uri"))),""!=l&&("2"!=t?.env?.env_id||X.endsWith(l,"/")||(l=`${l}/`),X.startsWith(l,"{{")||X.startsWith(X.toLower(l),"http://")||X.startsWith(X.toLower(l),"https://")?X.set(s,"url",x(l,i)):X.set(s,"url",x("http://",l,i)));let u=s?.url;X.forEach(X.assign({},c,X.get(p,"environment")),(e,t)=>{u=U(u,`{{${t}}}`,String(e))}),X.set(s,"initVarReplacedUrl",u)}else if(X.includes(["script"],e?.type))X.set(s,"request.pre_tasks",[{type:"customScript",enabled:1,data:e?.data?.content}]);else if(X.includes(["assert"],e?.type))X.set(s,"name","脚本断言"),X.set(s,"request.pre_tasks",[{type:"customScript",enabled:1,data:e?.data?.content}]);else if(X.includes(["sql"],e?.type))X.set(s,"request.pre_tasks",[{type:"database",id:e?.event_id,name:"Database",enabled:1,data:X.assign({connectionId:"",query:"",isConsoleOutput:1,variables:[]},e?.data)}]);else if(X.includes(["assert_visual"],e?.type)){const{type:t,expression:n}=e?.data?.data||{};X.isString(t)&&!X.isEmpty(n)&&(X.set(s,"name","可视化断言"),X.set(s,"request.pre_tasks",[{type:"assert",id:e?.event_id,name:"Visual assertion",enabled:1,data:{type:t,expression:X.assign({compareType:"eq",compareValue:"",path:""},n)}}]))}const n=((e,t)=>{const s={},n=X.get(t,"system_configs",{}),r=e=>{try{return X.toInteger(n?.auto_gen_mock_url)>0?Q.mock(e):e}catch(t){return e}},a=r(X.get(e,"url")||X.get(e,"request.url")),o=new G(a);try{o?.query.clear()}catch(e){}const i=X.toInteger(X.get(e,"request.query.query_add_equal")||-1);X.forEach(X.get(e,"request.query.parameter"),e=>{if(X.isObject(e)&&e?.is_checked>0){let{key:s,value:n,schema:a}=e;if(s=String(r(X.trim(s))),n=String(r(n)),""==n&&X.isObject(a)){const e=O(a,[],t?.lang,t?.custom_functions||{});X.isUndefined(e)||(n=e)}""!=s&&o?.query?.members?.push(""==n&&i<1?new K.QueryParam({key:s,value:null}):new K.QueryParam({key:s,value:n}))}}),"2"!=t?.env?.env_id||X.includes(X.keys(o?.query?.toObject()),"target_id")||o?.query?.members?.push(new K.QueryParam({key:"target_id",value:e?.target_id}));const l=[];if(X.isArray(X.get(o,"path"))){const e=X.map(X.get(o,"path"),e=>X.startsWith(e,"{")&&!X.startsWith(e,"{{")&&X.endsWith(e,"}")&&!X.endsWith(e,"}}")?":"+e.slice(1,-1):e);X.set(o,"path",e)}if(X.forEach(X.get(e,"request.restful.parameter"),e=>{if(X.isObject(e)&&e?.is_checked>0){let{key:s,value:n,schema:a}=e;if(s=r(X.trim(s)),n=r(n),""==n&&X.isObject(a)){const e=O(a,[],t?.lang,t?.custom_functions||{});X.isUndefined(e)||(n=e)}""!=s&&l.push({key:s,value:n})}}),X.isUndefined(o?.protocol)){const e=/^{{.*}}/;X.startsWith(X.first(o?.host),"{{")||e.test(X.first(o?.host))||X.set(o,"protocol","http")}const u=String(o);if(o?.query?.members?.length>0)try{X.set(o,"query",o?.query?.toJSON())}catch(e){X.set(o,"query",o?.query?.toObject())}else X.set(o,"query",void 0);X.set(s,"url",{raw:u,variable:l,...o}),X.set(s,"protocol",X.get(e,"protocol")||"http/1.1");let d=X.get(e,"method")||"GET";X.includes(["CONNECT"],X.toUpper(d))&&(d="GET"),X.set(s,"method",d);const m={},g=X.get(e,"request.auth.type")||"noauth";if(X.isString(g)&&"noauth"!=g&&"inherit"!=g)switch(g){case"kv":X.assign(m,{type:"apikey",apikey:[{key:"in",value:X.get(e,"request.auth.kv.in")||"header",type:"string"},{key:"value",value:r(X.get(e,"request.auth.kv.value"))||"",type:"string"},{key:"key",value:r(X.get(e,"request.auth.kv.key"))||"",type:"string"}]});break;case"basic":X.assign(m,{type:"basic",basic:[{key:"password",value:r(X.get(e,"request.auth.basic.password"))||"",type:"string"},{key:"username",value:r(X.get(e,"request.auth.basic.username"))||"",type:"string"}]});break;case"bearer":X.assign(m,{type:"bearer",bearer:[{key:"token",value:r(X.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"};X.set(m,"type",g),X.set(m,g,[]),X.forEach(X.get(e,`request.auth.${g}`),(e,s)=>{s=t[r(s)],X.isString(e)&&(e=r(e));const n=X.isBoolean(e)?e:X.isInteger(e)?!!e:X.isString(e)?e:"",a=X.isInteger(e)||X.isBoolean(e)?"boolean":"string";m[g].push({key:s,value:n,type:a})}),-1==X.keys(X.get(e,`request.auth.${g}`)).indexOf("disableRetryRequest")&&m[g].push({key:"disableRetryRequest",value:!1,type:"boolean"});break;case"hawk":case"oauth1":case"oauth2":case"awsv4":case"ntlm":case"jwt":case"asap":case"edgegrid":X.set(m,"type",g),X.set(m,g,[]),X.forEach(X.get(e,`request.auth.${g}`),(e,t)=>{X.isString(e)&&(e=r(e)),t=r(t);const s=X.isBoolean(e)?e:X.isInteger(e)?!!e:X.isString(e)?e:"",n=X.isInteger(e)||X.isBoolean(e)?"boolean":"string";m[g].push({key:t,value:s,type:n})})}!X.isEmpty(m)&&X.set(s,"auth",m);const y=[];X.forEach(X.get(e,"request.header.parameter"),e=>{if(X.isObject(e)&&e?.is_checked>0){let s=!(e?.is_checked>0),{key:n,value:a,schema:o}=e;if(n=r(X.trim(n)),a=r(a),""==a&&X.isObject(o)){const e=O(o,[],t?.lang,t?.custom_functions||{});X.isUndefined(e)||(a=e)}""!=n&&y.push({key:n,value:a,disabled:s})}});let h="";if("oauth2"==m?.type&&X.isArray(m?.oauth2)){const e=X.find(m.oauth2,{key:"addTokenTo"}),t=X.find(m.oauth2,{key:"headerPrefix"}),n=X.find(m.oauth2,{key:"access_token"});if(n?.value)if(h=n.value,h=t?.value?t.value+" "+h:"Bearer "+h,"header"==e?.value)y.push({key:"Authorization",value:h,disabled:!1}),h="";else if("queryParams"==e?.value){h=n.value;const e=s.url.raw,t=new URL(e);t.searchParams.set("access_token",h);const r=s.url.query||[];r.push({key:"access_token",value:h}),X.set(s,"url",{...s.url,raw:t.toString(),query:r}),h=""}else h=""}const f=new Map,b=[];X.forEach(y,(e,t)=>{const s=e.key.toLowerCase();f.has(s)&&b.push(f.get(s)),f.set(s,t)}),b.length>0&&X.forEachRight(b,e=>{e>-1&&y.splice(e,1)}),X.set(s,"header",y);try{if(""!=s?.url?.raw){let n={};X.isString(X.get(e,"initVarReplacedUrl"))&&!X.isEmpty(X.get(e,"initVarReplacedUrl"))&&(n=new G(X.get(e,"initVarReplacedUrl")));const a=[];if(X.forEach(X.get(e,"request.cookie.parameter"),o=>{if(X.isObject(o)){let i=B(r(o.key||o.name)),c=r(o.value);if(""==c&&X.isObject(o?.schema)){const e=O(o?.schema,[],t?.lang,t?.custom_functions||{});X.isUndefined(e)||(c=e)}(X.isUndefined(X.get(e,"request.cookie.cookie_encode"))||X.parseInt(X.get(e,"request.cookie.cookie_encode"))>0)&&(c=B(c));let p=X.assign(o,{key:i,name:i,value:c}),l=X.isEmpty(s?.url?.host)?s?.url?.raw:X.join(s?.url?.host,"."),u=s?.url?.path;X.isEmpty(n)||(l=X.isEmpty(n.host)?X.get(e,"initVarReplacedUrl"):X.join(n.host,"."),u=n.path);let d=X.join(u,"/");!X.startsWith(d,"/")&&X.startsWith(p?.path,"/")&&(d=`/${d}`),!X.endsWith(d,"/")&&X.endsWith(p?.path,"/")&&(d=`${d}/`),(X.isUndefined(p?.domain)||te(l,p?.domain)||X.endsWith(l,p?.domain))&&(X.isUndefined(p?.path)||"/"==p?.path||X.startsWith(d||"/",p?.path))&&(X.isUndefined(p?.expires)||X.gt(new Date(String(p?.expires)),new Date))&&a.push(`${p.name}=${p.value}`)}}),!X.isEmpty(a)){const e=X.find(s.header,e=>X.toLower(e.key)===X.toLower("cookie"));e?e.value=X.join(a,";"):s.header.push({key:"Cookie",value:X.join(a,";")})}}}catch(e){}const v={},_=X.get(e,"request.body.mode")||"none";if(X.isString(_)&&"none"!=_){const n={"form-data":"formdata",plain:"text",binary:"file",msgpack:"msgpack"};switch(_){case"form-data":case"urlencoded":X.set(v,"mode",n[_]?n[_]:_),X.set(v,v.mode,[]);const a=X.get(e,"request.body.parameter");X.forEach(a,s=>{if(X.isObject(s)&&s.is_checked>0&&""!=r(s.key))if("form-data"==_&&"file"===X.toLower(s.field_type)){const t=z(s.key,s.value,s.file_base64,e?.target_id);v[v.mode].push({key:r(s.key),src:t,type:"file",disabled:!1})}else{let{value:e,schema:n}=s;if(e=r(e),""==e&&X.isObject(n)){const s=O(n,[],t?.lang,t?.custom_functions||{});X.isUndefined(s)||(e=s)}"form-data"==_&&""!=s.content_type?v[v.mode].push({key:r(s.key),value:e,type:"text",disabled:!1,contentType:s.content_type}):v[v.mode].push({key:r(s.key),value:e,type:"text",disabled:!1})}});break;case"binary":const o=z("binary",X.get(e,"request.body.binary.file_path"),X.get(e,"request.body.binary.data_url"),e?.target_id);X.assign(v,{mode:"file",file:{src:o}});break;default:let i=r(X.get(e,"request.body.raw"));if("msgpack"==_){const e=J();try{i=e.encode(c.parse(p(i))).slice(),Object.setPrototypeOf(i,Object.getPrototypeOf({}))}catch(e){}const t=X.find(s.header,e=>X.toLower(e.key)===X.toLower("content-type"));t?t.value="application/msgpack":s.header.push({key:"content-type",value:"application/msgpack"})}else if("json"==_&&t?.request_param_auto_json>0)try{i=c.stringify(c.parse(p(i))),Object.setPrototypeOf(i,Object.getPrototypeOf({}))}catch(e){}X.assign(v,{mode:"raw",raw:i,options:{raw:{language:n[_]?n[_]:_}}})}}return!X.isEmpty(v)&&X.set(s,"body",v),s})(s,t);return{requestJson:s,postmanJSON:n}};return r=(s,n,r,a,c)=>{const{scene:p}=n;return new Promise((m,f)=>{try{const{requestJson:b,postmanJSON:v}=oe(s,n),_=new K.Item({name:X.get(b,"name")||"New request",request:v,event:[],protocolProfileBehavior:{disableBodyPruning:!0,disabledSystemHeaders:{accept:!0,"accept-encoding":!0,connection:!0}}}),k=((e,t,s)=>{const{requestJson:n}=e,r=[];X.forEach(X.get(s,"variables"),(e,t)=>{r.push({value:e,key:t,type:"any",enabled:!0})});const a=new K.VariableScope({values:r}),o=[X.get(s,"iterationData")],i=[];X.forEach(X.get(s,"environment"),(e,t)=>{i.push({value:e,key:t,type:"any",enabled:!0})});const c=new K.VariableScope({values:i}),p=[];X.forEach(X.defaults(X.get(s,"globals")||{},L()),(e,t)=>{p.push({value:e,key:t,type:"any",enabled:!0})});const l=new K.VariableScope({values:p}),u={strictSSL:!1,protocolVersion:"http/1.1"==n?.protocol||X.includes(["sse"],n?.target_type)||X.isEmpty(n?.target_type)?"http1":"auto"==n?.protocol?"auto":"http2",timings:!0,verbose:!0,implicitCacheControl:!0,implicitTraceHeader:!1,followOriginalHttpMethod:X.get(t,"system_configs.follow_original_method")>0,followRedirects:X.get(t,"system_configs.auto_redirect")>0,maxRedirects:X.max([X.toInteger(X.get(t,"system_configs.max_redirect_time")),5])};X.get(t,"system_configs.ca_cert.open")>0&&""!=X.trim(X.get(t,"system_configs.ca_cert.path"))&&X.set(u,"extendedRootCA",X.trim(X.get(t,"system_configs.ca_cert.path")));const d=[];X.forEach(X.get(t,"system_configs.client_cert"),(e,t)=>{const s=new G(t);if(X.isObject(e)){s.port<=0&&(t=`${s.protocol}://${X.join(s.host,".")}:443`),["key","crt","pfx"].forEach(t=>{let s=X.get(e,`${t}.file_url`);if(X.isEmpty(s)&&(X.isEmpty(X.get(e,`${t}.file_base64`))||(s=z(X.get(e,`${t}.file_name`),X.get(e,`${t}.file_name`),X.get(e,`${t}.file_base64`),Z()))),!X.isEmpty(s))try{ee.statSync(s),X.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=>{X.isEmpty(X.get(e,`${t}.file_url`))||X.set(n,"crt"==t?"cert":t,{src:X.get(e,`${t}.file_url`)})}),d.push(n)}});let m=X.toInteger(X.get(t,"system_configs.send_timeout"));X.inRange(m,0,604800)||(m=0);const y={timeout:{request:m,script:0,global:0},delay:{item:0,iteration:0},iterationCount:1,fileResolver:g,data:o,environment:c,localVariables:a,globals:l,requester:u,systemProxy:async function(e,s){try{const n={},r=new G(e),a=X.toLower(X.join(r?.host,"."));if(1==X.get(t,"system_configs.proxy.type")){const e=X.get(t,"system_configs.proxy.auth.host").match(/(([^:]+):(\d+))/);if(X.isArray(e)&&X.toInteger(e[3])>0){let s=X.get(t,"system_configs.proxy.bypass");X.isString(s)&&(s=s.split(","));let o=X.find(s,e=>te(a,e)),i=X.get(t,"system_configs.proxy.protocols");X.isString(i)&&(i=i.split(","));let c=X.find(i,e=>(X.toLower(r?.protocol)||"http")==X.toLower(e));!o&&c&&(X.set(n,"host",e[2]),X.set(n,"port",X.toInteger(e[3])))}}else if(-1==X.get(t,"system_configs.proxy.type")){let s=X.isString(X.get(process,"env.NO_PROXY"))&&X.get(t,"system_configs.proxy.envfirst")>0?String(X.get(process,"env.NO_PROXY")).split(","):[];if(X.isEmpty(s)||X.isUndefined(X.find(s,e=>te(a,e)))){const s=String("https"==r?.protocol?X.get(process,"env.HTTPS_PROXY"):X.get(process,"env.HTTP_PROXY"));if((X.get(t,"system_configs.proxy.envfirst")>0||X.isEmpty(X.get(process,"versions.electron")))&&!X.isEmpty(s)&&"undefined"!=s){let e=new G(s);X.set(n,"host",X.join(e?.host,".")||""),X.set(n,"port",X.toInteger(e?.port)>0?X.toInteger(e?.port):0)}else if(!X.isEmpty(X.get(process,"versions.electron")))try{const t=(await (__nccwpck_require__(97021).session.defaultSession.resolveProxy)(e)).match(/PROXY (([^:]+):(\d+))/);X.isObject(t)&&X.isString(t[2])&&!X.isEmpty(t[2])&&X.toInteger(t[3])>0&&(X.set(n,"host",t[2]),X.set(n,"port",X.toInteger(t[3])))}catch(e){}}}return X.isString(n.host)&&""!=n.host&&(X.set(n,"tunnel","http"!=X.toLower(r?.protocol)),X.set(n,"authenticate",X.get(t,"system_configs.proxy.auth.authenticate")>0),n.authenticate&&(X.set(n,"username",X.get(t,"system_configs.proxy.auth.username")),X.set(n,"password",X.get(t,"system_configs.proxy.auth.password")))),!X.isEmpty(n)&&X.isString(n.host)&&""!=n.host&&"undefined"!=n.host?s(null,n):s(null,null)}catch(e){return s(null,null)}}};return X.isEmpty(d)||X.assign(y,{certificates:new K.CertificateList({},d)}),y})({requestJson:b,postmanJSON:v},n,a?.variables||{});(new se.Runner).run(new K.Collection({info:{name:X.get(b,"name")||"New request"},item:[_]}),k,(g,_)=>{g?f({action:"systemError",message:String(g),event_id:s?.event_id}):(X.set(a,[s?.event_id,"exception"],null),X.set(a,[s?.event_id,"error"],null),X.set(a,[s?.event_id,"console"],[]),X.set(a,[s?.event_id,"assertions"],[]),X.set(a,[s?.event_id,"visualizer"],{error:null,processed_template:""}),_.start({exception(e,t){if(t&&!X.includes(["get_parsed_request"],p)&&!X.includes(["assert_visual","assert"],s?.type)){const n=X.get(e,e?.scriptId);if(X.set(a,[s?.event_id,"exception",n],t),X.set(a,[s?.event_id,"error"],{error_type:n,message:t?.message}),X.includes(["prerequest","test"],n)){X.isUndefined(X.get(a,[s?.event_id,"console"]))&&X.set(a,[s?.event_id,"console"],[]);const e=Date.now();a[s?.event_id].console.push({time:e,level:"error",args:[String(t?.message)]})}if("prerequest"===n)try{_.abort(),X.isUndefined(X.get(a,[s?.event_id,"request"]))&&X.set(a,[s?.event_id,"request"],X.pick(b,["name","method","url"]))}catch(e){}}},console(e,t,...n){X.isUndefined(X.get(a,[s?.event_id,"console"]))&&X.set(a,[s?.event_id,"console"],[]);const r=Date.now();a[s?.event_id].console.push({time:r,level:t,args:n})},beforePrerequest(e,t,s,r){if(!e){const e=ne({requestJson:b,postmanJSON:v},"prerequest",n);X.forEach(e,e=>{const n=new Y(e);s.push(n),X.set(t,n?.script?.id,n?.listen)})}},prerequest(e,t,s,n){e||X.forEach(s,e=>{X.isEmpty(e?.script?.exec)||X.forEach(["_variables","environment","globals"],t=>{const s=X.get(e,`result.${t}`),n={};try{X.forEach(X.get(s.toJSON(),"values"),e=>{n[e?.key]=e?.value})}catch(e){}try{const e=X.difference(X.keys(X.get(a,["variables",t])),X.keys(n));X.forEach(e,e=>{"globals"!=t||X.includes(X.keys(L()),e)?"_variables"==t?X.unset(a,["variables","variables",e]):X.unset(a,["variables",t,e]):(X.unset(a,["variables","_globals",e]),X.unset(a,["variables",t,e]))}),X.forEach(n,(e,s)=>{let n=t;"_variables"===t&&(n="variables"),"globals"!==t||X.includes(X.keys(L()),s)||X.set(a,["variables","_globals",s],e),X.set(a,["variables",n,s],e)})}catch(e){}})})},beforeRequest(e,t,s,o,i){const c=L();if(["globals","environment","variables"].forEach(e=>{X.assign(c,X.get(a,`variables.${e}`))}),((e,t,s,n)=>{const{postmanJSON:r}=t,{lang:a,custom_functions:o}=n,i=X.cloneDeep(o),c=/{{([^}]+)}}/g;let p=String(e?.url||"");if(!X.isEmpty(p)){const t=p.match(c);X.isEmpty(t)||(X.forEach(t,e=>{try{const t=u(e,s,a,i);t==e||X.isUndefined(t)||(p=X.replace(p,e,t))}catch(e){}}),X.set(e,"url",new K.Url(p)))}X.forEach(X.get(r,"url.path"),(t,s)=>{if(X.startsWith(t,":")){const n=X.findKey(X.get(r,"url.variable"),e=>e?.key==X.trimStart(t,":"));X.startsWith(X.get(r,`url.variable.${n}.value`),"{{")&&X.endsWith(X.get(r,`url.variable.${n}.value`),"}}")&&!X.isUndefined(X.get(e,`url.path.${s}`))&&X.set(r,`url.variable.${n}.value`,X.get(e,`url.path.${s}`))}}),X.isEmpty(e.headers)||e?.headers?.each(e=>{e?.disabled||["key","value"].forEach(t=>{let n=String(X.get(e,t));const r=n.match(c);X.isEmpty(r)||(X.forEach(r,e=>{try{const t=u(e,s,a,i);t==e||X.isUndefined(t)||(n=X.replace(n,e,t))}catch(e){}}),X.set(e,t,n))})});const l=X.get(e,"body.mode");switch(l){case"urlencoded":case"formdata":X.isEmpty(e?.body[l])||e?.body[l].each((e,t)=>{e?.disabled||["key","value"].forEach(t=>{let n=X.get(e,t);if(X.isString(n)){const r=n.match(c);X.isEmpty(r)||(X.forEach(r,e=>{try{const t=u(e,s,a,i);t==e||X.isUndefined(t)||(n=X.replace(n,e,t))}catch(e){}}),X.set(e,t,n))}})});break;default:let t=X.get(e,"body.raw");if(X.isString(t)&&!X.isEmpty(t)){const n=t.match(c);X.isEmpty(n)||(X.forEach(n,e=>{try{const n=u(e,s,a,i);n==e||X.isUndefined(n)||(t=X.replace(t,e,n))}catch(e){}}),X.set(e,"body.raw",t))}}})(s,{postmanJSON:v},c,X.pick(n,["lang","custom_functions"])),X.includes(["get_parsed_request"],p)&&X.isUndefined(t?.scriptId)){try{i?.abort(),_?.abort()}catch(e){}m(),r(W(s))}},response:async(n,c,u,g,f,k,x)=>{if(X.includes(["get_parsed_request"],p)){try{_.abort()}catch(e){}r(W(g)),m()}else{if(n){if(!X.includes(["script","sql","assert_visual","assert"],s?.type)){X.set(a,[s?.event_id,"exception","prerequest"],String(n)),X.set(a,[s?.event_id,"error"],{error_type:"prerequest",message:String(n)}),X.isUndefined(X.get(a,[s?.event_id,"console"]))&&X.set(a,[s?.event_id,"console"],[]);const e=Date.now();a[s?.event_id].console.push({time:e,level:"error",args:[String(n?.message)]})}}else X.set(a,[s?.event_id,"response"],await async function(s,n,r){const a=X.cloneDeep(s),c=X.first(n?.execution?.data)||{};X.unset(a,"_details");try{X.assign(a,{body:String(a.stream)})}catch(e){}try{let t="Monaco",s={ext:"json",mime:"application/json"};if(i(a.body))X.assign(s,{ext:"svg",mime:"image/svg+xml"}),t="Image";else{const n=await e.fromBuffer(a.stream);if(X.isObject(n))X.assign(s,n),t=h(`test.${s?.ext}`)?"Image":"pdf"==s?.ext?"Pdf":"xml"==s?.ext?"Monaco":"Other";else{const e=M(a?.headers||{},"content-type")||"";if(X.isEmpty(e)){const e=o.isJson(a.body)?"json":o.isJsonp(a.body)?"jsonp":"html";s={ext:e,mime:l.getType(e)||"application/jsonp"}}else s={ext:l.getExtension(e),mime:l.getType(l.getExtension(e))}}}X.assign(a,{mimeType:s,fitForShow:t})}catch(e){}const p={};try{X.assign(p,X.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{X.assign(a,{headers:p})}catch(e){}let u=`${a?.id}.${a?.mimeType?.ext}`;try{if(u=X.get(t.parse(M(p||{},"content-disposition")),"parameters.filename"),X.isString(u))try{u=decodeURIComponent(u)}catch(e){}}catch(e){}a.filename=u,a.cookies={},a.arrCookies=[];let m=M(p||{},"set-cookie");X.isString(m)&&(m=[m]);try{X.forEach(m,e=>{const t=d.Cookie.parse(e).toJSON();X.assign(t,{name:t?.key,cookie_id:o.snowflakeId(`cookie_id_${Z()}`)}),a.arrCookies.push(t);const{key:s,value:n}=t;a.cookies[s]=n})}catch(e){}const g=X.get(c,"timings.requestStart")||Date.now();X.assign(a,{proxy:X.get(c,"request.proxy")||{},timings:X.mapKeys(X.get(c,"timings.offset")||{},(e,t)=>X.snakeCase(t)),requestStart:g,response_at:g});const y={},f=a?.timings??{},{request:b=0,socket:v=0,lookup:_=0,connect:k=0,secure_connect:x=0,response:q=0,end:S=0,done:O=0}=f,E=(e=0,t=0)=>X.round(Math.max(0,e-t),2),w={socketInitialization:[5,15],dnsLookup:[20,50],tcpHandshake:[20,70],sslHandshake:[50,120],waiting:[50,200],download:[50,150]},j=(e,t)=>{const[s,n]=w[e]||[100,300];return t<s?"green":t<n?"yellow":"red"},D={prepare:X.round(b,2),socketInitialization:E(v,b),dnsLookup:E(_,v),tcpHandshake:E(k,_),sslHandshake:E(x,k),waiting:E(q,x||k),download:E(S,q),process:E(O,S),total:E(O,b)};X.isUndefined(f?.secure_connect)&&X.unset(D,"sslHandshake");const T=X.sum(X.values(X.pick(D,X.keys(w))));for(const[e,t]of Object.entries(D))y[e]={duration:t},X.includes(X.keys(w),e)&&X.assign(y[e],{width:X.includes(X.keys(w),e)?X.round(t/T,2):0,level:j(e,t)}),X.includes(["prepare"],e)&&X.assign(y[e],{width:-1*(X.includes(["prepare"],e)?X.round(t/D?.total,2):0),level:"gray"});const $={},V=X.get(c,"session.id");if(X.isString(V)){const e=X.get(n?.execution?.sessions,V);X.assign($,{HTTPVersion:c?.response?.httpVersion||"1.1",Proxy:X.get(c,"request.proxy")||{},LocalAddress:X.get(e,"addresses.local.address"),RemoteAddress:X.get(e,"addresses.remote.address"),TLSProtocol:X.get(e,"tls.protocol"),CipherCountry:X.get(e,"tls.peerCertificate.issuer.country"),CipherName:X.get(e,"tls.cipher.name"),ValidUntil:X.get(e,"tls.peerCertificate.validTo")}),X.set($,"Certificate",X.get(e,"tls.peerCertificate.subject.commonName")),X.set($,"Issuer",X.get(e,"tls.peerCertificate.issuer.commonName"))}const N={};["request","response"].forEach(e=>{X.set(N,`${e}Headers`,re(X.get(c,`${e}.headers`),X.get(c,`${e}`)))});const C=X.sum([a?.responseSize,N?.responseHeaders]),I=a?.responseSize;return X.assign(N,{responseSize:C,requestBody:ae(X.get(r?.body,`${r?.body?.mode}`)),responseBody:I,uncompressedResponseBody:(new TextEncoder).encode(String(a?.stream)).length}),X.assign(a,{formatTimings:y,network:X.pickBy($,e=>"undefined"!==String(e)),formatSize:N,responseSize:C}),a}(u,x,g));const r=function(e,t,s,n){const r=X.assign(X.cloneDeep(e),X.pick(t,["project_id","target_id","name"]));r.mode=X.get(t,"request.body.mode");try{r.paths=X.fromPairs((X.get(s,"url.variable")||[]).map(e=>[e.key,e.value]))||{}}catch(e){}try{const e=X.mapValues(X.keyBy(X.get(n,"execution.data[0].request.headers")||{},"key"),"value");!X.isEmpty(e)&&X.isObject(e)?r.headers=e:r.headers=X.reduce(r.headers?.toJSON(),(e,t)=>(e[t.key]=t.value,e),{})}catch(e){}try{r.querys=r.url?.query?.toObject(),r.url=String(r.url)}catch(e){}try{if(r.body=X.get(e,`body.${X.get(e,"body.mode")}`),"msgpack"==r.mode){const e=__nccwpck_require__(38831)();try{r.body=JSON.stringify(e.decode(y.from(X.values(r.body))))}catch(e){}}try{r.body=r.body.toObject()}catch(e){}}catch(e){}try{r.uri=e?.url.toJSON(),X.forEach(r.uri,(e,t)=>{"query"==t?r.uri[t]=e.toObject():"host"==t?r.uri[t]=X.join(e,"."):"path"==t?r.uri[t]=X.join(e,"/"):X.isArray(e)&&(r.uri[t]=X.join(e,""))})}catch(e){}r.cookies={};try{const e=r.headers?.cookie;!X.isEmpty(e)&&X.isString(e)&&X.forEach(X.split(e,";"),e=>{const{key:t,value:s}=d.Cookie.parse(e).toJSON();r.cookies[t]=s})}catch(e){}return r}(g,b,v,x);X.set(a,[s?.event_id,"request"],r)}},beforeTest(e,t,s,r){if(!e&&!X.includes(["get_parsed_request"],p)){const e=ne({requestJson:b,postmanJSON:v},"test",n);X.forEach(e,e=>{const n=new Y(e);s.push(n),X.set(t,n?.script?.id,n?.listen)})}},test(e,t,n,r){if(!e&&!X.includes(["get_parsed_request"],p)){X.forEach(n,e=>{X.isEmpty(e?.script?.exec)||X.forEach(["_variables","environment","globals"],t=>{const s=X.get(e,`result.${t}`),n={};try{X.forEach(X.get(s.toJSON(),"values"),e=>{n[e?.key]=e?.value})}catch(e){}try{const e=X.difference(X.keys(X.get(a,["variables",t])),X.keys(n));X.forEach(e,e=>{"globals"!=t||X.includes(X.keys(L()),e)?"_variables"==t?X.unset(a,["variables","variables",e]):X.unset(a,["variables",t,e]):(X.unset(a,["variables","_globals",e]),X.unset(a,["variables",t,e]))}),X.forEach(n,(e,s)=>{let n=t;"_variables"===t&&(n="variables"),"globals"!==t||X.includes(X.keys(L()),s)||X.set(a,["variables","_globals",s],e),X.set(a,["variables",n,s],e)})}catch(e){}})});const e=X.get(a,["variables","variables","_pm.response.setBody"]),t=X.toInteger(X.get(a,["variables","variables","_pm.response.code"]));X.isString(e)&&(X.set(a,[s?.event_id,"response","stream"],{type:"Buffer",data:Array.from(y.from(e))}),X.set(a,[s?.event_id,"response","body"],e)),t>0&&X.set(a,[s?.event_id,"response","code"],t)}},assertion(e,t){X.includes(["get_parsed_request"],p)||!X.isEmpty(t)&&X.isArray(t)&&(X.isUndefined(X.get(a,[s?.event_id,"assertions"]))&&X.set(a,[s?.event_id,"assertions"],[]),a[s?.event_id].assertions=X.unionWith(X.concat(X.get(a,[s?.event_id,"assertions"]),t),X.isEqual))},item(e,t,n,r,o){if(!X.includes(["get_parsed_request"],p))if(!e&&X.isObject(r)){const{error:e,processedTemplate:t}=r;X.set(a[s?.event_id],"visualizer",{error:e,processed_template:t})}else X.set(a[s?.event_id],"visualizer",{error:null,processed_template:""})},responseData(e,t){X.includes(["get_parsed_request"],p)||"sse"!==b?.target_type||r({action:"sse",data:{stream:t,size:X.size(t),time:Date.now()},msg:"success",error:null})},done(e,t){if(!X.includes(["get_parsed_request"],p)){if(!e){const e=X.filter(X.get(a,[s?.event_id,"assertions"]),e=>!1===e?.passed);let t="Ok";X.inRange(X.toInteger(X.get(a,[s?.event_id,"response","code"])),200,300)||(t=X.get(a,[s?.event_id,"response","status"])||X.get(a,[s?.event_id,"error","message"])),X.set(a,[s?.event_id,"status"],{assert:X.get(a,[s?.event_id,"assertions"],[]),success_assert:e,http:t})}try{const e=H(a,s?.event_id)||{},t=X.pick(X.get(a,"variables"),["environment","_globals"]),n=X.assign(F(X.get(a,s?.event_id)),X.pick(e,["startTime","endTime","currentVariables"])),o=X.assign(X.pick(b,["parent_id","project_id","test_id","target_id"]),X.defaults(X.pick(n,["error","iteration_id","startTime","endTime","currentVariables"]),{error:null}),{action:"request",type:s?.type,data:X.assign({variables:{globals:X.get(t,"_globals",{}),environment:X.get(t,"environment",{})}},X.omit(X.cloneDeep(n),["error"])),event_id:s?.event_id});"auto_test"===p||"sse"===b?.target_type?X.includes(["assert","assert_visual","api","sample","script","sql"],s?.type)&&(c.push(X.assign(F(X.get(X.cloneDeep(a),s?.event_id)),X.pick(s,["type","event_id","test_id","iteration_id"]))),r({action:"request",data:X.assign(o,{type:s?.type})})):r(o)}catch(e){f({action:"systemError",message:String(e),event_id:s?.event_id})}}m()}}))})}catch(e){f({action:"systemError",message:String(e),event_id:s?.event_id})}})}}function B(){if(p)return c;p=1;const e=d,t=S,s=q,n=O,r=m,{returnBoolean:a,variableReplaceForCondition:l,variableReplace:u,getVariableActedUpon:g,convertEndRuntimeState:y,repeatArrayToLength:h}=A(),f=P(),b=function(){if(i)return o;i=1;const e=d,t=m,{variableReplace:s,convertEndRuntimeState:n}=A();return o=async(r,a,o,i,c)=>{try{const p=t.toInteger(s(r?.data?.sleep,i?.variables,a))||0;p>0&&e(p);const l=n(i,r?.event_id)||{},u={action:"request",data:t.assign({data:{sleep:p}},t.pick(l,["startTime","endTime","currentVariables"]),t.pick(r,["project_id","test_id","event_id","type"]),t.pick(t.get(i,r?.event_id),["iteration_id"]))};c.push(u?.data),o(u)}catch(e){throw{action:"systemError",message:String(e),event_id:r?.event_id}}}}(),v={api:f,sample:f,sse:f,request:f,script:f,assert:f,assert_visual:f,sql:f,wait:b,if:async(e,t,s,n,o)=>{try{const{data:i,children:c}=e,p=r.filter(c,e=>r.toInteger(e?.enabled>0)),u=l(i?.var,n?.variables,t),d=i?.compare,m=l(i?.value,n?.variables,t),h=a(u,d,m),f=y(n,e?.event_id)||{},b={action:"request",data:r.assign({data:{isMatched:h,condition:{leftValue:{variable:i?.var,value:u,actedUpon:g(n,r.trim(i?.var,"{}"))||"Fixed"},compare:d,rightValue:{variable:i?.value,value:m,actedUpon:g(n,r.trim(i?.value,"{}"))||"Fixed"}}}},r.pick(f,["startTime","endTime","currentVariables"]),r.pick(e,["project_id","test_id","event_id","type"]),r.pick(r.get(n,e?.event_id),["iteration_id"]))};if(o.push(b?.data),s(b),h&&r.isArray(p)&&!r.isEmpty(p)){const{iterationData:e}=t,a=[e];await k(p,r.assign(r.cloneDeep(t),{iterationDataArr:a}),s,n,o)}}catch(t){throw{action:"systemError",message:String(t),event_id:e?.event_id}}},begin:async(e,t,s,n,a)=>{try{const{children:o}=e,i=r.filter(o,e=>r.toInteger(e?.enabled>0));if(r.isArray(i)&&!r.isEmpty(i)){const{iterationData:e}=t,o=[e];await k(i,r.assign(r.cloneDeep(t),{iterationDataArr:o}),s,n,a)}}catch(t){throw{action:"systemError",message:String(t),event_id:e?.event_id}}},loop:async(e,s,o,i,c)=>{try{const{data:p,children:d}=e,m=r.filter(d,e=>r.toInteger(e?.enabled>0)),g=r.toInteger(u(r.get(p,"sleep",0),i?.variables,s)),y=r.toInteger(r.get(s,"startTime",Date.now())),f=r.toInteger(r.get(s,"timeout",r.toInteger(u(r.get(p,"loop_timeout",0),i?.variables,s))));if(r.isArray(m)&&!r.isEmpty(m)){const e=[];if((r.toInteger(p?.enable_data)||1)>0){switch(r.toInteger(p?.loop_data_type)||1){case 1:r.assign(e,r.values(r.get(p,"loop_traverse_data.iterationData",[])));break;case 2:const a=r.trim(r.get(p,"loop_iteration_data"));if(r.isString(a)&&""!=a){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"},o=r.toInteger(r.get(p,"loop_extract.var")),c=r.get(i,`${a}.${s[o]||"response.body"}`),l=r.trim(String(r.get(p,"loop_extract.value","$")));let u;switch(o){case 1:case 8:try{u=r.isString(c)?t.value(n.parse(c),l):t.value(c,l)}catch(e){}break;case 2:case 3:case 7:case 9:case 10:u=r.get(c,l);break;case 4:case 5:case 6:u=r.cloneDeep(c)}if(r.isString(u))try{u=n.parse(u)}catch(e){}r.isNumber(u)&&(u=String(u));let d=[];r.isArray(u)?d=r.map(u,e=>r.isObject(e)?r.pickBy(e,e=>!r.isObject(e)):{0:e}):r.isObject(u)?r.forEach(u,(e,t)=>{if(!r.isObject(e)){const s={};r.set(s,t,e),d.push(s)}}):r.isString(u)&&(d=r.map(r.values(u),(e,t)=>{const s={};return s[String(t)]=e,s})),r.assign(e,d)}break;case 3:{let t=u(r.get(p,"loop_variable",""),i?.variables,s);if(r.isString(t))try{t=n.parse(t)}catch(e){}r.isNumber(t)&&(t=String(t));let a=[];r.isArray(t)?a=r.map(t,e=>r.isObject(e)?r.pickBy(e,e=>!r.isObject(e)):{0:e}):r.isObject(t)?r.forEach(t,(e,t)=>{if(!r.isObject(e)){const s={};r.set(s,t,e),a.push(s)}}):r.isString(t)&&(a=r.map(r.values(t),(e,t)=>{const s={};return s[String(t)]=e,s})),r.assign(e,a)}break;case 4:{let t=r.split(r.get(p,"loop_fixed_value",""),","),s=[];r.forEach(t,(e,t)=>{r.isObject(e)||s.push({$key:t,$item:e})}),r.assign(e,s)}}}const d=r.toInteger(r.get(p,"loop_type",1));if(r.includes([1,2],d)){const t=1===d?r.size(e):r.toInteger(r.get(p,"limit",1));if(t>0){let n=r.cloneDeep(e);2===d&&(n=h(n,t)),n=r.flatMap(n,e=>r.times(r.size(m),()=>e));const a=r.flatten(r.times(t,()=>r.cloneDeep(m)));await k(a,r.assign(r.cloneDeep(s),{iterationDataArr:n,sleep:g,startTime:y,timeout:f}),o,i,c)}}else if(r.includes([3],d))for(;;){const t=r.get(s,"condition",r.get(p,"loop_condition",{})),n=l(t?.var,i?.variables,s),u=t?.compare,d=l(t?.value,i?.variables,s);if(!(0===f||f>0&&y+f>Date.now())||a(n,u,d))break;await k(r.cloneDeep(m),r.assign(r.cloneDeep(s),{iterationDataArr:e,sleep:g,condition:t,startTime:y,timeout:f}),o,i,c)}}}catch(t){throw{action:"systemError",message:String(t),event_id:e?.event_id}}}},_=async(e,t,n,a,o)=>{r.isUndefined(e.event_id)&&"http_request"===t?.scene&&r.set(e,"event_id",r.get(e,"data.target_id")),r.assign(a?.variables?.iterationData,r.get(t,"iterationData")),r.set(a,[e.event_id,"iteration_id"],s.snowflakeId());const i=r.get(v,`${e?.type}`);if(r.isFunction(i)){const{total:s,scene:c}=t;r.set(a,[e.event_id,"iteration","startTime"],Date.now());const{environment:p={},variables:l={},_globals:u={},iterationData:d={}}=r.get(a,"variables",{});r.set(a,[e.event_id,"iteration","startVariables"],r.cloneDeep({environment:p,variables:l,iterationData:d,globals:u}));try{await i(e,t,n,a,o),"auto_test"==c&&r.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(r.toInteger(t?.ignore_error)<1)throw e}}},k=async(t,s,n,a,o)=>{const i=t.shift();if(r.isObject(i)&&r.has(i,"type")&&r.toInteger(i?.enabled)>0){let{iterationDataArr:c}=s;r.isArray(c)||(c=r.values(c));const p=c.shift()||{};try{const{sleep:t}=s;if(await _(i,{...s,iterationData:p},n,a,o),r.toInteger(s?.ignore_error)<1){if(r.size(a[i.event_id]?.status?.assert)!=r.size(a[i.event_id]?.status?.success_assert))throw"Assertion validation failed.";if("OK"!=r.toUpper(a[i.event_id]?.status?.http))throw"Endpoint request failed."}r.toInteger(t)>0&&e(t)}catch(e){if(r.toInteger(s?.ignore_error)<1)throw e}r.isArray(t)&&!r.isEmpty(t)&&await k(t,{...s,iterationDataArr:c},n,a,o)}};return c={executeEvent:_,iterationEvent:k}}var z=U(function(){if(u)return l;u=1;const{repeatArrayToLength:e,formatAutotestReport:t,formatAutotestReportList:s,getInsideVariables:n}=A(),r=m,{mockExp:a}=f,o=q,{executeEvent:i,iterationEvent:c}=B(),p=["systemError"];return l={run:async(l,u,d)=>{const{iterationCount:m,iterationData:g,scene:y}=u;"auto_test"==y&&(l=r.filter(l,function(e){return r.toInteger(e?.enabled)>0}));const h=r.cloneDeep(r.flatten(new Array("auto_test"==y?r.max([r.toInteger(m),1]):1).fill(l)))||[],f=r.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;r.forEach(r.values(r.cloneDeep(g)),(t,s)=>{const o=r.cloneDeep(t);r.isObject(t)&&!r.isEmpty(t)&&r.forEach(t,(t,s)=>{if(""!=r.trim(t)&&r.isString(t)){const i=t.match(e);r.isEmpty(i)||r.forEach(i,e=>{try{const i=a(e,n(),u?.lang,u?.custom_functions||{});i==e||r.isUndefined(i)||r.set(o,[s],r.replace(t,e,i))}catch(e){}})}}),v.push(o)})}const _=r.flatMap(e(r.cloneDeep(v),r.max([r.toInteger(m),1])),e=>r.times(r.size(l),()=>e)),k={environment:r.get(u,"env.environment",{}),globals:r.get(u,"globals",{}),iterationDataArr:_};["environment","globals","iterationDataArr"].forEach(e=>{r.forEach(k[e],(t,s)=>{r.isUndefined(r.get(b,["variables",e,s]))&&(r.set(b,["variables",e,s],t),"globals"===e&&r.set(b,["variables",`_${e}`,s],t))})});const x=[],q=Date.now();if("http_request"==y){const e=r.first(h);if(r.isObject(e)&&r.has(e,"type"))try{await i(e,r.assign(f,{iterationData:{}}),d,b,x)}catch(e){if(r.includes(p,e?.action))throw e}}else{const e=[];if(r.forEach(h,(t,s)=>{t?.enabled>0&&e.push(r.assign(r.cloneDeep(t),{progress:s}))}),!r.isEmpty(e)){const t=r.size(e);try{await c(e,r.assign(f,{iterationDataArr:_,total:t}),d,b,x)}catch(e){d(e)}}const n=r.pick(r.get(b,"variables"),["environment","_globals"]);d({action:"complete",data:r.assign(t(q,x),{list:s(x),variables:{globals:u?.enable_sandbox>0?{}:r.get(n,"_globals",{}),environment:u?.enable_sandbox>0?{}:r.get(n,"environment",{})}},r.pick(r.get(u,"env",{}),["env_id","env_name"]),{testing_id:r.get(r.first(x),"test_id")},{report_name:`${u?.name}`},{report_id:o.snowflakeId()})})}},request2HAR:(e,t)=>new Promise(async(s,n)=>{const a=r.pick(t,["scene","lang","project","env","globals","cookies","system_configs","custom_functions","collection","database_configs","enable_sandbox","sleep","name","testing_id"]),o={variables:{environment:{},variables:{},globals:{},_globals:{},iterationData:{},iterationDataArr:[]}},c={environment:r.get(t,"env.environment",{}),globals:r.get(t,"globals",{})};["environment","globals"].forEach(e=>{r.forEach(c[e],(t,s)=>{r.isUndefined(r.get(o,["variables",e,s]))&&(r.set(o,["variables",e,s],t),"globals"===e&&r.set(o,["variables",`_${e}`,s],t))})});const p=[],l=r.first(e);if(r.isObject(l)&&r.has(l,"type"))try{await i(l,r.assign(a,{scene:"get_parsed_request"}),e=>{s(e)},o,p)}catch(e){n(e)}})}}());module.exports=z;
474570
+ var e,t,s,n,r,a,o,i,c,p,l,u,d=__nccwpck_require__(86950),m=__nccwpck_require__(90250),g=__nccwpck_require__(57147),y=__nccwpck_require__(589),h=__nccwpck_require__(71017),f=__nccwpck_require__(87604),b=__nccwpck_require__(59789),v=__nccwpck_require__(29994),_=__nccwpck_require__(22037),k=__nccwpck_require__(90520),x=__nccwpck_require__(44571),q=__nccwpck_require__(67350),S=__nccwpck_require__(74378),O=__nccwpck_require__(86904),E=__nccwpck_require__(84930),w=__nccwpck_require__(85269),j=__nccwpck_require__(43981),D=__nccwpck_require__(55031),T=__nccwpck_require__(42562),$=__nccwpck_require__(93141),V=__nccwpck_require__(86019),N=__nccwpck_require__(36435),C=__nccwpck_require__(97271),I=__nccwpck_require__(4501),R=__nccwpck_require__(35591),J=__nccwpck_require__(38831);function U(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function A(){if(t)return e;t=1;const s=d,n=m,r=g,a=y,o=h,{mockExp:i}=f,c=b,p=v,l=_,u=k.Buffer,q=x,S=function(e,t,s){if(n.isArray(e)){const r=n.find(e,n.matchesProperty("target_id",t));if(r){if(s.includes(r.parent_id))return;n.isString(r.parent_id)&&(s.push(r.parent_id),S(e,r.parent_id,s))}}},O=()=>{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}`]=c.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(t=>{e[`$${t}`]=(()=>{let e="1";return e+=n.random(3,9).toString(),e+=n.times(9,()=>n.random(0,9)).join(""),e})()});return e.$timestamp=n.toInteger(Date.now()/1e3),e.$microTimestamp=(new Date).getTime(),e.$randomInt=Math.floor(1e3*Math.random()),e.$randomFloat=1e3*Math.random(),e};return e={getStringRequestBody:e=>{let t="";try{if(!e||!e?.mode)return t;switch(e.mode){case"raw":t=e?.raw||"",n.isObject(t)&&(t=JSON.stringify(t));break;case"urlencoded":{const s={};n.forEach(e?.urlencoded,e=>{e.disabled||(s[e.key]=e.value)}),t=JSON.stringify(s);break}case"formdata":{const s={};n.forEach(e?.formdata,e=>{e.disabled||(s[e.key]=e.value)}),t=JSON.stringify(s);break}}return t}catch(e){return t}},atomicSleep:s,jsfGenerate:(e,t=[],s,r={})=>{let o;if(a.option({alwaysFakeOptionals:!0,useExamplesValue:!0,fillProperties:!1,useDefaultValue:!0,mockRules:t,customFunctions:r,lang:"zh-cn"}),n.some(["default","examples","pattern","format","x-mock","enum"],t=>n.includes(n.keys(e?.schema||e),t)))try{o=a.generate(e)}catch(e){}if(!n.isUndefined(o))return o},getAPIFromCollection:function(e,t){return n.find(e,n.matchesProperty("target_id",t))},getParentTargetIDs:S,base64toCacheFile:(e,t,s,a)=>{let i=t;try{r.statSync(i)}catch(c){if(!n.isEmpty(s)){const c=String(s).match(/data:([0-9a-zA-Z\/\-]+);base64,/i),d=p.getExtension(c&&c[1]?c[1]:"");if(n.isString(d)){const c=o.resolve(l.tmpdir(),`${a}`);try{r.mkdirSync(c)}catch(e){}let p=t;n.endsWith(p,`.${d}`)||(p=`${e}.${d}`);const m=o.resolve(c,p);try{r.writeFileSync(m,u.from(n.replace(s,/^data:[0-9a-zA-Z\/\-]+;base64,/,""),"base64")),i=m}catch(e){}}}}return i},replace2RegExp:(e,t,s)=>{try{return n.replace(e,new RegExp(String(t),"ig"),String(s))}catch(r){return n.replace(e,t,String(s))}},getInsideVariables:O,repeatArrayToLength:(e,t)=>{if(n.isArray(e)||(e=n.values(e)),n.isEmpty(e))return[];const s=n.ceil(t/e.length),r=n.flattenDeep(n.fill(new Array(s),e));return n.take(r,t)},convertEndRuntimeState:(e,t)=>{try{const{startTime:s,startVariables:r}=n.get(e,[t,"iteration"],{}),a=Date.now(),o={},i={};["globals","environment","iterationData","variables"].forEach(e=>{n.assign(o,n.get(r,`${e}`))}),n.forEach(o,(e,t)=>{let s;n.set(i,[t,"value"],e),n.isUndefined(e)||["variables","iterationData","environment","globals"].some(e=>{if(!n.isUndefined(n.get(r,[`${e}`,t])))return s=e,!0}),n.set(i,[t,"actedUpon"],s)});const{environment:c={},variables:p={},_globals:l={},iterationData:u={}}=n.get(e,"variables",{}),d={environment:c,variables:p,iterationData:u,globals:l},m={};["globals","environment","iterationData","variables"].forEach(e=>{n.assign(m,n.get(d,`${e}`))});const g={};return n.forEach(m,(e,t)=>{if(!n.includes(["_pm.response.code","_pm.response.setBody"],t)){let s;["variables","iterationData","environment","globals"].some(e=>{if(!n.isUndefined(n.get(d,[`${e}`,t])))return s=e,!0}),n.set(g,[t],{start:n.pick(i[t],["value","actedUpon"]),current:{value:e,actedUpon:s}})}}),{startTime:s,endTime:a,currentVariables:g}}catch(e){}},returnBoolean:(e,t,s)=>{let r=!1;if(""===e)return"null"==t;switch(t){case"eq":r=e==s;break;case"uneq":r=e!=s;break;case"gt":r=n.gt(Number(e),Number(s));break;case"gte":r=n.gte(Number(e),Number(s));break;case"lt":r=n.lt(Number(e),Number(s));break;case"lte":r=n.lte(Number(e),Number(s));break;case"includes":r=n.includes(e,s)||n.includes(e,Number(s));break;case"unincludes":r=!n.includes(e,s)&&!n.includes(e,Number(s));break;case"null":r=n.isEmpty(e);break;case"notnull":r=!n.isEmpty(e);break;case"exist":r=!n.isUndefined(e);break;case"notexist":r=n.isUndefined(e);break;case"regularmatch":try{r=new RegExp(String(s).substring(1,String(s).length-1)).test(e)}catch(e){}break;case"belongscollection":r=n.split(s,",").indexOf(e)>-1;break;case"notbelongscollection":r=-1==n.split(s,",").indexOf(e)}return r},variableReplaceForCondition:(e,t,s)=>{if(!n.startsWith(e,"{{")||!n.endsWith(e,"}}"))return e;const r=O();["globals","_globals","environment","iterationData","variables"].forEach(e=>{n.assign(r,n.get(t,`${e}`))}),e=n.replace(e,/\{\{([^}]+)\}\}/g,(e,t)=>n.get(r,t.trim(),e));const{lang:a,custom_functions:o}=s;try{const t=i(e,r,a,o);if(t===e&&n.startsWith(e,"{{")&&n.endsWith(e,"}}"))return;return t}catch(e){return}},getCaseInsensitive:(e,t)=>{try{const s=n.toLower(t);if(!n.isObject(e))return;for(const t in e)if(n.toLower(t)===s)return e[t]}catch(e){}},camelCaseToSnakeCase:e=>(["arrCookies","fitForShow","mimeType","requestStart","responseSize","responseTime"].forEach(t=>{const s=n.snakeCase(t),r=n.get(e,`response.${t}`);n.isUndefined(r)||(n.set(e,`response.${s}`,r),n.unset(e,`response.${t}`))}),e),formatAutotestReportList:e=>{const t=[];return n.forEach(n.cloneDeep(e),e=>{const s=e?.type;n.includes(["assert","assert_visual","api","sample","script","sql"],s)?t.push(n.assign(n.pick(e?.response,["network","formatTimings","formatSize","timings","response_time","response_at","proxy","status","code","response_size"]),n.pick(e?.request,["url","method","name","target_id","project_id"]),n.pick(e,["type","event_id","test_id","iteration_id","startTime","endTime","currentVariables"]),{type:s,status:{assert:n.isEmpty(e?.status?.success_assert)?"OK":e?.status?.success_assert,http:e?.status?.http||"OK"}})):n.includes(["if"],s)?t.push(n.assign(n.pick(e,["type","event_id","test_id","iteration_id","startTime","endTime","currentVariables"]),{type:s,status:{...e?.data}})):n.includes(["wait"],s)&&t.push(n.assign(n.pick(e,["type","event_id","test_id","iteration_id","startTime","endTime","currentVariables"]),{type:s,sleep:e?.data?.sleep||0}))}),t},getVariableActedUpon:(e,t)=>{let s;return["variables","iterationData","environment","globals"].some(r=>{if(n.includes(n.keys(n.get(e,`variables.${r}`)),t))return s=r,!0}),s},variableReplace:(e,t,s)=>{const r=O();["globals","_globals","environment","iterationData","variables"].forEach(e=>{n.assign(r,n.get(t,`${e}`))}),e=n.replace(e,/\{\{([^}]+)\}\}/g,(e,t)=>n.get(r,t.trim(),e));const{lang:a,custom_functions:o}=s;try{return i(e,r,a,o)}catch(t){return e}},formatAutotestReport:(e,t)=>{const s={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:n.size(t),total_response_time:null,avg_response_time:null,total_response_size:0,avg_response_size:0};let r=0,a=0;return n.forEach(n.cloneDeep(t),e=>{if(n.includes(["api","sample"],e?.type)&&(s.http.total++,r+=n.toInteger(e?.response?.response_size),a+=n.toInteger(e?.response?.response_time),"ok"!=n.toLower(e?.status?.http)&&s.http.error++),n.includes(["api","sample","assert","assert_visual"],e?.type)&&!n.isEmpty(e?.status?.assert)&&n.isArray(e?.status?.assert)){n.size(e?.status?.assert)>0&&s.assert.total++;const t=n.filter(e?.status?.assert,e=>!1===e?.passed);n.size(t)>0&&s.assert.error++}}),s.http.success=s.http.total-s.http.error,s.assert.success=s.assert.total-s.assert.error,s.avg_response_time=n.round(a/s.http.total,2)||0,s.avg_response_size=n.round(r/s.http.total,2)||0,s.total_response_time=a,s.total_response_size=r,s},encodeURIComponentUnique:e=>{if(n.startsWith(e,"{{")&&n.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 q(e,...t)}}}function P(){if(a)return r;a=1;const e=E,t=w,o=q,i=j,c=D({storeAsString:!0}),p=T,l=v,{mockExp:u}=f,d=$,y=k.Buffer,h=V,{getAPIFromCollection:_,smartUrlJoin:x,getStringRequestBody:S,jsfGenerate:O,replace2RegExp:U,getParentTargetIDs:P,encodeURIComponentUnique:B,base64toCacheFile:z,getInsideVariables:L,convertEndRuntimeState:H,getCaseInsensitive:M,camelCaseToSnakeCase:F}=A(),{generateHarFromRequest:W}=function(){if(n)return s;n=1;const e=m;function t(e){return(e||[]).map(({key:e,value:t})=>({name:e,value:t}))}function r(e){return(e||[]).map(({key:e,value:t})=>({name:e,value:String(t)}))}function a(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 s={generateHarFromRequest:function(s){const{method:n="GET",headers:o=[],queryParams:i=[],body:c={mode:"none"}}=s;let p=s?.url?String(s?.url):"";return e.isEmpty(e.get(s,"url.protocol"))&&(p=`http://${p}`),{log:{version:"1.2",creator:{name:"Custom Node Request to HAR Converter",version:"1.0"},entries:[{request:{method:n.toUpperCase(),httpVersion:"HTTP/1.1",url:String(p||"http://"),headers:t(o),queryString:r(i),postData:a(c),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}]}}}}}(),X=m,K=N,G=K.Url,Y=K.Event,Q=b,{v4:Z}=C,ee=g,{minimatch:te}=I,se=R,ne=(e,t,s)=>{let n=S(e?.postmanJSON?.body);if(!X.isEmpty(n)){const e=/{{([^}]+)}}/g,t=n.match(e);X.isEmpty(t)||X.forEach(t,e=>{try{const t=u(e,L()||{},s?.lang,s?.custom_functions);t==e||X.isUndefined(t)||(n=X.replace(n,e,t))}catch(e){}})}if(X.includes(["urlencoded","formdata"],e?.postmanJSON?.body?.mode))try{n=JSON.parse(n)}catch(e){n={}}const r={data:n};let a="";X.forEach(s?.custom_functions,(e,t)=>{""!=(t=X.trim(t))&&(a=`\n ${a}\n\n function ${t}(text) {\n try{\n ${e}\n }catch(e){\n return text;\n }\n }\n `)});const{requestJson:o}=e,{database_configs:i,env:c}=s,p=["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("${X.get(process,"env.ELECTRON_PIPE")}");\n }catch(e){\n return "${X.get(process,"env.ELECTRON_PIPE")}";\n }\n }\n `,"let lodashv4 = require('lodash');","let { mockExp } = require('exp-mock-light');","let Mock = require('mockjs');","let xml2json = xml2Json;","let JSON5 = require('json5');","let aTools = require('apipost-tools');","let jsonpath = require('jsonpath');",`let _envTmpVariablesData = ${JSON.stringify(c)}`,`let _parsedRequestBodyObjData = ${JSON.stringify(r)}`,`let _customFunctions = ${JSON.stringify(s?.custom_functions||{})}`,"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 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?.status == 'success'){\n return resultObj?.result\n }else{\n console.error(\"pm.execute : \" + String(resultObj?.message))\n // throw new Error(resultObj?.message);\n }\n }catch (e) {\n console.error(\"pm.execute : \" + 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 contentType = pm.request?.headers?.get('content-type');\n if (!lodashv4.isString(contentType)) {\n try {\n const mode = lodashv4.get(pm, 'request.body.mode', '');\n const rawLang = lodashv4.toLower(lodashv4.get(pm, 'request.body.options.raw.language', ''));\n switch (mode) {\n case 'raw':\n if (rawLang === 'json') {\n contentType = 'application/json';\n } else if (rawLang === 'text') {\n contentType = 'text/plain';\n } else if (rawLang === 'xml') {\n contentType = 'application/xml';\n } else if (rawLang === 'javascript') {\n contentType = 'application/javascript';\n } else {\n contentType = 'text/plain';\n }\n break;\n\n case 'urlencoded':\n contentType = 'application/x-www-form-urlencoded';\n break;\n\n case 'formdata':\n contentType = 'multipart/form-data';\n break;\n\n case 'file':\n contentType = 'application/octet-stream';\n break;\n\n case 'graphql':\n contentType = 'application/json';\n break;\n\n default:\n contentType = '';\n }\n } catch (err) { }\n }\n\n let _requestTmpVariablesData = ${JSON.stringify({name:o?.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 request_parsed_bodys: _.get(_parsedRequestBodyObjData, 'data', ''),\n mode: "${X.get(o,"request.body.mode")}",\n contentType,\n id: "${o?.sample_id||o?.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 // 替换变量\n const _replaceMockExp = (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, pm.variables.toObject(), 'en', _customFunctions || {});\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\n // 获取最终请求body \n if('${t}' == 'prerequest'){\n try {\n pm.getFinalRequestRawBody = () => {\n let requestBody = pm.variables.replaceIn(request.request_parsed_bodys);\n\n if (lodashv4.isString(requestBody)) {\n requestBody = _replaceMockExp(requestBody)\n }\n\n if (lodashv4.isObject(requestBody)) {\n requestBody = JSON.parse(_replaceMockExp(JSON.stringify(requestBody)))\n }\n\n pm.setRequestBody(requestBody)\n return requestBody;\n }\n } catch (e) {\n pm.getFinalRequestRawBody = () => { return request.request_parsed_bodys; }\n }\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 ${a}\n `],l={prerequest:[],test:[]},d={pre_tasks:"prerequest",post_tasks:"test"};return X.forEach(X.keys(d),e=>{let t=X.join(p,"\n");X.forEach(X.get(o,`request.${e}`),e=>{if(X.isObject(e)&&e.enabled>0)switch(e.type){case"customScript":!X.isEmpty(e?.data)&&X.isString(e?.data)&&"undefined"!=e?.data&&(t=`${t}\n${X.trim(e?.data)}\n`);break;case"database":let n=i[e.data?.connectionId]||{};if(!X.isEmpty(n)){n=JSON.stringify(n,null,"\t");let r=X.get(e,"data.query","");if(!X.isEmpty(r)){const e=/{{([^}]+)}}/g,t=r.match(e);X.isEmpty(t)||X.forEach(t,e=>{try{const t=u(e,L()||{},s?.lang,s?.custom_functions);t==e||X.isUndefined(t)||(r=X.replace(r,e,t))}catch(e){}})}X.set(e,"data.query",r),t=`${t}\n ! await (async function(){ \n const dbData = ${JSON.stringify(e.data||{query:""})} // 此处先进性expmock替换\n const query = _replaceMockExp(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(${n},{\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 r=X.toInteger(e?.data);r>0&&(t=`${t}\nsleep(${r});`);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 a={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 `}X.forEach(e.data?.variables,s=>{if(X.isObject(s)&&""!=s?.name&&!X.isUndefined(a[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(a[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(a[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(a[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(a[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(a[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(a[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 `;const n=X.split(t,"\n");l[d[e]].push({listen:d[e],script:{exec:X.isEmpty(X.filter(X.get(o,`request.${e}`),e=>e?.enabled>0))?[]:n,type:"text/javascript"}})}),l[t]};const re=(e,t={})=>{X.isArray(e)||(e=[]);const{httpVersion:s="1.1",statusCode:n,method:r,path:a="/"}=t;let o=0;if(n){const e=`HTTP/${s} ${n}\r\n`;o+=y.byteLength(e)}else if(r){const e=`${r.toUpperCase()} ${a} HTTP/${s}\r\n`;o+=y.byteLength(e)}return e.forEach(({key:e,value:t})=>{const s=`${e}: ${t}\r\n`;o+=y.byteLength(s)}),o+=y.byteLength("\r\n"),o},ae=(e,t="utf8")=>{if(!e)return 0;if(y.isBuffer(e))return y.byteLength(e);const s="object"==typeof e?JSON.stringify(e):String(e);return y.byteLength(s,t)},oe=(e,t)=>{const s=X.assign(X.pick(e,["event_id","test_id"]),X.pick(e?.data,["target_id","project_id"]));if(X.includes(["api","sample","sse","request"],e?.type)){X.toInteger(e?.auto_sync)>0||X.includes(["http_request","get_parsed_request"],t?.scene)?X.assign(s,_(t?.collection,X.get(e,"data.target_id"))):X.assign(s,X.get(e,"data.apiData"));const n=[];if(X.includes(["sample"],e?.type)){const s=X.get(_(t?.collection,X.get(e,"data.target_id")),"parent_id");X.isString(s)&&s&&P(t?.collection,s,n)}else P(t?.collection,X.get(e,"data.target_id"),n);X.includes(n,"0")||n.push("0"),X.forEach(n,e=>{const n={};"0"==e?X.assign(n,X.get(t,"project.request")):X.assign(n,X.get(_(t?.collection,e),"request")),X.isObject(n)&&!X.isEmpty(n)&&["header","body","query","cookie"].forEach(e=>{let t=X.filter(X.get(n,`${e}.parameter`),e=>X.toInteger(e.is_system)>0||e.is_checked>0);if(!X.isEmpty(t)&&X.isArray(t)){const n=X.filter(X.get(s,`request.${e}.parameter`),e=>e.is_checked>0)||[],r=X.chain(n).groupBy("key").map(e=>X.reduce(e,(e,t)=>t.is_checked>0?t:e,e[e.length-1])).value(),a=X.chain(t).groupBy("key").map(e=>X.reduce(e,(e,t)=>t.is_checked>0?t:e,e[e.length-1])).value();"header"==e?X.set(s,`request.${e}.parameter`,X.unionBy(r,a,e=>X.toLower(e.key))):X.set(s,`request.${e}.parameter`,X.unionBy(r,a,"key"))}})});let r={},a=X.get(s,"server_id");X.forEach(X.reverse(n),e=>{const n={};if("0"==e)X.assign(n,X.get(t,"project.request"));else{const r=X.get(_(t?.collection,e),"server_id");X.isUndefined(X.get(s,"server_id"))&&X.isString(r)&&"0"!==X.toString(r)&&(a=r),X.assign(n,X.get(_(t?.collection,e),"request"))}X.isObject(n)&&!X.isEmpty(n)&&["auth","pre_script","test","pre_tasks","post_tasks"].forEach(e=>{const t=X.get(n,`${e}`);X.isEmpty(t)||(X.isArray(t)?r[e]=X.union(r[e],t):X.isObject(t)?"auth"==e&&"inherit"!=X.get(t,"type")&&(X.set(r,"auth.type",X.get(t,"type")),X.set(r,`auth.${X.get(t,"type")}`,X.get(t,`${X.get(t,"type")}`))):X.isString(t)&&(r[e]=`${r[e]}\n${t}`))})}),X.forEach(r,(e,t)=>{X.isEmpty(e)||(X.isArray(e)?X.set(s,`request.${t}`,X.union(e,X.get(s,`request.${t}`))):X.isObject(e)?"auth"==t&&"inherit"==X.get(s,"request.auth.type")&&(X.set(s,"request.auth.type",X.get(e,"type")),X.set(s,`request.auth.${X.get(e,"type")}`,X.get(e,`${X.get(e,"type")}`))):X.isString(e)&&X.set(s,`request.${t}`,`${e}\n${X.get(s,`request.${t}`)}`))}),X.unset(r);const o=[];X.get(t,"cookies.switch")>0&&X.isArray(X.get(t,"cookies.data"))&&X.forEach(X.get(t,"cookies.data"),e=>{let t=X.trim(e?.key);if(X.isObject(e)&&!X.isEmpty(t)){let s=X.find(o,X.matchesProperty("key",t)),n=e?.domain;try{const t=new G(e?.domain);n=X.join(t?.host,".")}catch(e){}const r={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:!!X.toInteger(e?.secure),httpOnly:!!X.toInteger(e?.httpOnly),sameSite:e?.sameSite||"strict"};s>-1?o[s]=r:o.push(r)}}),X.isArray(X.get(s,"request.cookie.parameter"))&&X.forEach(X.get(s,"request.cookie.parameter"),e=>{let t=X.trim(e?.key);if(X.isObject(e)&&!X.isEmpty(t)&&e?.is_checked>0){let s=X.find(o,X.matchesProperty("key",t)),n={key:t,value:e?.value,schema:e?.schema};s>-1?o[s]=n:o.push(n)}}),X.set(s,"request.cookie.parameter",o),X.unset(o),X.isString(a)&&"0"!==X.toString(a)||(a="1");const i=X.isString(X.get(s,"url"))?X.get(s,"url"):X.get(s,"request.url"),{globals:c,env:p}=t;let l=X.trim(X.get(s,"pre_url",""));""==l&&(l=X.trim(X.get(X.find(X.get(t,"env.env_pre_urls"),e=>e?.server_id==a),"uri"))),""!=l&&("2"!=t?.env?.env_id||X.endsWith(l,"/")||(l=`${l}/`),X.startsWith(l,"{{")||X.startsWith(X.toLower(l),"http://")||X.startsWith(X.toLower(l),"https://")?X.set(s,"url",x(l,i)):X.set(s,"url",x("http://",l,i)));let u=s?.url;X.forEach(X.assign({},c,X.get(p,"environment")),(e,t)=>{u=U(u,`{{${t}}}`,String(e))}),X.set(s,"initVarReplacedUrl",u)}else if(X.includes(["script"],e?.type))X.set(s,"request.pre_tasks",[{type:"customScript",enabled:1,data:e?.data?.content}]);else if(X.includes(["assert"],e?.type))X.set(s,"name","脚本断言"),X.set(s,"request.pre_tasks",[{type:"customScript",enabled:1,data:e?.data?.content}]);else if(X.includes(["sql"],e?.type))X.set(s,"request.pre_tasks",[{type:"database",id:e?.event_id,name:"Database",enabled:1,data:X.assign({connectionId:"",query:"",isConsoleOutput:1,variables:[]},e?.data)}]);else if(X.includes(["assert_visual"],e?.type)){const{type:t,expression:n}=e?.data?.data||{};X.isString(t)&&!X.isEmpty(n)&&(X.set(s,"name","可视化断言"),X.set(s,"request.pre_tasks",[{type:"assert",id:e?.event_id,name:"Visual assertion",enabled:1,data:{type:t,expression:X.assign({compareType:"eq",compareValue:"",path:""},n)}}]))}const n=((e,t)=>{const s={},n=X.get(t,"system_configs",{}),r=e=>{try{return X.toInteger(n?.auto_gen_mock_url)>0?Q.mock(e):e}catch(t){return e}},a=r(X.get(e,"url")||X.get(e,"request.url")),o=new G(a);try{o?.query.clear()}catch(e){}const i=X.toInteger(X.get(e,"request.query.query_add_equal")||-1);X.forEach(X.get(e,"request.query.parameter"),e=>{if(X.isObject(e)&&e?.is_checked>0){let{key:s,value:n,schema:a}=e;if(s=String(r(X.trim(s))),n=String(r(n)),""==n&&X.isObject(a)){const e=O(a,[],t?.lang,t?.custom_functions||{});X.isUndefined(e)||(n=e)}""!=s&&o?.query?.members?.push(""==n&&i<1?new K.QueryParam({key:s,value:null}):new K.QueryParam({key:s,value:n}))}}),"2"!=t?.env?.env_id||X.includes(X.keys(o?.query?.toObject()),"target_id")||o?.query?.members?.push(new K.QueryParam({key:"target_id",value:e?.target_id}));const l=[];if(X.isArray(X.get(o,"path"))){const e=X.map(X.get(o,"path"),e=>X.startsWith(e,"{")&&!X.startsWith(e,"{{")&&X.endsWith(e,"}")&&!X.endsWith(e,"}}")?":"+e.slice(1,-1):e);X.set(o,"path",e)}if(X.forEach(X.get(e,"request.restful.parameter"),e=>{if(X.isObject(e)&&e?.is_checked>0){let{key:s,value:n,schema:a}=e;if(s=r(X.trim(s)),n=r(n),""==n&&X.isObject(a)){const e=O(a,[],t?.lang,t?.custom_functions||{});X.isUndefined(e)||(n=e)}""!=s&&l.push({key:s,value:n})}}),X.isUndefined(o?.protocol)){const e=/^{{.*}}/;X.startsWith(X.first(o?.host),"{{")||e.test(X.first(o?.host))||X.set(o,"protocol","http")}const u=String(o);if(o?.query?.members?.length>0)try{X.set(o,"query",o?.query?.toJSON())}catch(e){X.set(o,"query",o?.query?.toObject())}else X.set(o,"query",void 0);X.set(s,"url",{raw:u,variable:l,...o}),X.set(s,"protocol",X.get(e,"protocol")||"http/1.1");let d=X.get(e,"method")||"GET";X.includes(["CONNECT"],X.toUpper(d))&&(d="GET"),X.set(s,"method",d);const m={},g=X.get(e,"request.auth.type")||"noauth";if(X.isString(g)&&"noauth"!=g&&"inherit"!=g)switch(g){case"kv":X.assign(m,{type:"apikey",apikey:[{key:"in",value:X.get(e,"request.auth.kv.in")||"header",type:"string"},{key:"value",value:r(X.get(e,"request.auth.kv.value"))||"",type:"string"},{key:"key",value:r(X.get(e,"request.auth.kv.key"))||"",type:"string"}]});break;case"basic":X.assign(m,{type:"basic",basic:[{key:"password",value:r(X.get(e,"request.auth.basic.password"))||"",type:"string"},{key:"username",value:r(X.get(e,"request.auth.basic.username"))||"",type:"string"}]});break;case"bearer":X.assign(m,{type:"bearer",bearer:[{key:"token",value:r(X.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"};X.set(m,"type",g),X.set(m,g,[]),X.forEach(X.get(e,`request.auth.${g}`),(e,s)=>{s=t[r(s)],X.isString(e)&&(e=r(e));const n=X.isBoolean(e)?e:X.isInteger(e)?!!e:X.isString(e)?e:"",a=X.isInteger(e)||X.isBoolean(e)?"boolean":"string";m[g].push({key:s,value:n,type:a})}),-1==X.keys(X.get(e,`request.auth.${g}`)).indexOf("disableRetryRequest")&&m[g].push({key:"disableRetryRequest",value:!1,type:"boolean"});break;case"hawk":case"oauth1":case"oauth2":case"awsv4":case"ntlm":case"jwt":case"asap":case"edgegrid":X.set(m,"type",g),X.set(m,g,[]),X.forEach(X.get(e,`request.auth.${g}`),(e,t)=>{X.isString(e)&&(e=r(e)),t=r(t);const s=X.isBoolean(e)?e:X.isInteger(e)?!!e:X.isString(e)?e:"",n=X.isInteger(e)||X.isBoolean(e)?"boolean":"string";m[g].push({key:t,value:s,type:n})})}!X.isEmpty(m)&&X.set(s,"auth",m);const y=[];X.forEach(X.get(e,"request.header.parameter"),e=>{if(X.isObject(e)&&e?.is_checked>0){let s=!(e?.is_checked>0),{key:n,value:a,schema:o}=e;if(n=r(X.trim(n)),a=r(a),""==a&&X.isObject(o)){const e=O(o,[],t?.lang,t?.custom_functions||{});X.isUndefined(e)||(a=e)}""!=n&&y.push({key:n,value:a,disabled:s})}});let h="";if("oauth2"==m?.type&&X.isArray(m?.oauth2)){const e=X.find(m.oauth2,{key:"addTokenTo"}),t=X.find(m.oauth2,{key:"headerPrefix"}),n=X.find(m.oauth2,{key:"access_token"});if(n?.value)if(h=n.value,h=t?.value?t.value+" "+h:"Bearer "+h,"header"==e?.value)y.push({key:"Authorization",value:h,disabled:!1}),h="";else if("queryParams"==e?.value){h=n.value;const e=s.url.raw,t=new URL(e);t.searchParams.set("access_token",h);const r=s.url.query||[];r.push({key:"access_token",value:h}),X.set(s,"url",{...s.url,raw:t.toString(),query:r}),h=""}else h=""}const f=new Map,b=[];X.forEach(y,(e,t)=>{const s=e.key.toLowerCase();f.has(s)&&b.push(f.get(s)),f.set(s,t)}),b.length>0&&X.forEachRight(b,e=>{e>-1&&y.splice(e,1)}),X.set(s,"header",y);try{if(""!=s?.url?.raw){let n={};X.isString(X.get(e,"initVarReplacedUrl"))&&!X.isEmpty(X.get(e,"initVarReplacedUrl"))&&(n=new G(X.get(e,"initVarReplacedUrl")));const a=[];if(X.forEach(X.get(e,"request.cookie.parameter"),o=>{if(X.isObject(o)){let i=B(r(o.key||o.name)),c=r(o.value);if(""==c&&X.isObject(o?.schema)){const e=O(o?.schema,[],t?.lang,t?.custom_functions||{});X.isUndefined(e)||(c=e)}(X.isUndefined(X.get(e,"request.cookie.cookie_encode"))||X.parseInt(X.get(e,"request.cookie.cookie_encode"))>0)&&(c=B(c));let p=X.assign(o,{key:i,name:i,value:c}),l=X.isEmpty(s?.url?.host)?s?.url?.raw:X.join(s?.url?.host,"."),u=s?.url?.path;X.isEmpty(n)||(l=X.isEmpty(n.host)?X.get(e,"initVarReplacedUrl"):X.join(n.host,"."),u=n.path);let d=X.join(u,"/");!X.startsWith(d,"/")&&X.startsWith(p?.path,"/")&&(d=`/${d}`),!X.endsWith(d,"/")&&X.endsWith(p?.path,"/")&&(d=`${d}/`),(X.isUndefined(p?.domain)||te(l,p?.domain)||X.endsWith(l,p?.domain))&&(X.isUndefined(p?.path)||"/"==p?.path||X.startsWith(d||"/",p?.path))&&(X.isUndefined(p?.expires)||X.gt(new Date(String(p?.expires)),new Date))&&a.push(`${p.name}=${p.value}`)}}),!X.isEmpty(a)){const e=X.find(s.header,e=>X.toLower(e.key)===X.toLower("cookie"));e?e.value=X.join(a,";"):s.header.push({key:"Cookie",value:X.join(a,";")})}}}catch(e){}const v={},_=X.get(e,"request.body.mode")||"none";if(X.isString(_)&&"none"!=_){const n={"form-data":"formdata",plain:"text",binary:"file",msgpack:"msgpack"};switch(_){case"form-data":case"urlencoded":X.set(v,"mode",n[_]?n[_]:_),X.set(v,v.mode,[]);const a=X.get(e,"request.body.parameter");X.forEach(a,s=>{if(X.isObject(s)&&s.is_checked>0&&""!=r(s.key))if("form-data"==_&&"file"===X.toLower(s.field_type)){const t=z(s.key,s.value,s.file_base64,e?.target_id);v[v.mode].push({key:r(s.key),src:t,type:"file",disabled:!1})}else{let{value:e,schema:n}=s;if(e=r(e),""==e&&X.isObject(n)){const s=O(n,[],t?.lang,t?.custom_functions||{});X.isUndefined(s)||(e=s)}"form-data"==_&&""!=s.content_type?v[v.mode].push({key:r(s.key),value:e,type:"text",disabled:!1,contentType:s.content_type}):v[v.mode].push({key:r(s.key),value:e,type:"text",disabled:!1})}});break;case"binary":const o=z("binary",X.get(e,"request.body.binary.file_path"),X.get(e,"request.body.binary.data_url"),e?.target_id);X.assign(v,{mode:"file",file:{src:o}});break;default:let i=r(X.get(e,"request.body.raw"));if("msgpack"==_){const e=J();try{i=e.encode(c.parse(p(i))).slice(),Object.setPrototypeOf(i,Object.getPrototypeOf({}))}catch(e){}const t=X.find(s.header,e=>X.toLower(e.key)===X.toLower("content-type"));t?t.value="application/msgpack":s.header.push({key:"content-type",value:"application/msgpack"})}else if("json"==_&&t?.request_param_auto_json>0)try{i=c.stringify(c.parse(p(i))),Object.setPrototypeOf(i,Object.getPrototypeOf({}))}catch(e){}X.assign(v,{mode:"raw",raw:i,options:{raw:{language:n[_]?n[_]:_}}})}}return!X.isEmpty(v)&&X.set(s,"body",v),s})(s,t);return{requestJson:s,postmanJSON:n}};return r=(s,n,r,a,c)=>{const{scene:p}=n;return new Promise((m,f)=>{try{const{requestJson:b,postmanJSON:v}=oe(s,n),_=new K.Item({name:X.get(b,"name")||"New request",request:v,event:[],protocolProfileBehavior:{disableBodyPruning:!0,disabledSystemHeaders:{accept:!0,"accept-encoding":!0,connection:!0}}}),k=((e,t,s)=>{const{requestJson:n}=e,r=[];X.forEach(X.get(s,"variables"),(e,t)=>{r.push({value:e,key:t,type:"any",enabled:!0})});const a=new K.VariableScope({values:r}),o=[X.get(s,"iterationData")],i=[];X.forEach(X.get(s,"environment"),(e,t)=>{i.push({value:e,key:t,type:"any",enabled:!0})});const c=new K.VariableScope({values:i}),p=[];X.forEach(X.defaults(X.get(s,"globals")||{},L()),(e,t)=>{p.push({value:e,key:t,type:"any",enabled:!0})});const l=new K.VariableScope({values:p}),u={strictSSL:!1,protocolVersion:"http/1.1"==n?.protocol||X.includes(["sse"],n?.target_type)||X.isEmpty(n?.target_type)?"http1":"auto"==n?.protocol?"auto":"http2",timings:!0,verbose:!0,implicitCacheControl:!0,implicitTraceHeader:!1,followOriginalHttpMethod:X.get(t,"system_configs.follow_original_method")>0,followRedirects:X.get(t,"system_configs.auto_redirect")>0,maxRedirects:X.max([X.toInteger(X.get(t,"system_configs.max_redirect_time")),5])};X.get(t,"system_configs.ca_cert.open")>0&&""!=X.trim(X.get(t,"system_configs.ca_cert.path"))&&X.set(u,"extendedRootCA",X.trim(X.get(t,"system_configs.ca_cert.path")));const d=[];X.forEach(X.get(t,"system_configs.client_cert"),(e,t)=>{const s=new G(t);if(X.isObject(e)){s.port<=0&&(t=`${s.protocol}://${X.join(s.host,".")}:443`),["key","crt","pfx"].forEach(t=>{let s=X.get(e,`${t}.file_url`);if(X.isEmpty(s)&&(X.isEmpty(X.get(e,`${t}.file_base64`))||(s=z(X.get(e,`${t}.file_name`),X.get(e,`${t}.file_name`),X.get(e,`${t}.file_base64`),Z()))),!X.isEmpty(s))try{ee.statSync(s),X.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=>{X.isEmpty(X.get(e,`${t}.file_url`))||X.set(n,"crt"==t?"cert":t,{src:X.get(e,`${t}.file_url`)})}),d.push(n)}});let m=X.toInteger(X.get(t,"system_configs.send_timeout"));X.inRange(m,0,604800)||(m=0);const y={timeout:{request:m,script:0,global:0},delay:{item:0,iteration:0},iterationCount:1,fileResolver:g,data:o,environment:c,localVariables:a,globals:l,requester:u,systemProxy:async function(e,s){try{const n={},r=new G(e),a=X.toLower(X.join(r?.host,"."));if(1==X.get(t,"system_configs.proxy.type")){const e=X.get(t,"system_configs.proxy.auth.host").match(/(([^:]+):(\d+))/);if(X.isArray(e)&&X.toInteger(e[3])>0){let s=X.get(t,"system_configs.proxy.bypass");X.isString(s)&&(s=s.split(","));let o=X.find(s,e=>te(a,e)),i=X.get(t,"system_configs.proxy.protocols");X.isString(i)&&(i=i.split(","));let c=X.find(i,e=>(X.toLower(r?.protocol)||"http")==X.toLower(e));!o&&c&&(X.set(n,"host",e[2]),X.set(n,"port",X.toInteger(e[3])))}}else if(-1==X.get(t,"system_configs.proxy.type")){let s=X.isString(X.get(process,"env.NO_PROXY"))&&X.get(t,"system_configs.proxy.envfirst")>0?String(X.get(process,"env.NO_PROXY")).split(","):[];if(X.isEmpty(s)||X.isUndefined(X.find(s,e=>te(a,e)))){const s=String("https"==r?.protocol?X.get(process,"env.HTTPS_PROXY"):X.get(process,"env.HTTP_PROXY"));if((X.get(t,"system_configs.proxy.envfirst")>0||X.isEmpty(X.get(process,"versions.electron")))&&!X.isEmpty(s)&&"undefined"!=s){let e=new G(s);X.set(n,"host",X.join(e?.host,".")||""),X.set(n,"port",X.toInteger(e?.port)>0?X.toInteger(e?.port):0)}else if(!X.isEmpty(X.get(process,"versions.electron")))try{const t=(await (__nccwpck_require__(97021).session.defaultSession.resolveProxy)(e)).match(/PROXY (([^:]+):(\d+))/);X.isObject(t)&&X.isString(t[2])&&!X.isEmpty(t[2])&&X.toInteger(t[3])>0&&(X.set(n,"host",t[2]),X.set(n,"port",X.toInteger(t[3])))}catch(e){}}}return X.isString(n.host)&&""!=n.host&&(X.set(n,"tunnel","http"!=X.toLower(r?.protocol)),X.set(n,"authenticate",X.get(t,"system_configs.proxy.auth.authenticate")>0),n.authenticate&&(X.set(n,"username",X.get(t,"system_configs.proxy.auth.username")),X.set(n,"password",X.get(t,"system_configs.proxy.auth.password")))),!X.isEmpty(n)&&X.isString(n.host)&&""!=n.host&&"undefined"!=n.host?s(null,n):s(null,null)}catch(e){return s(null,null)}}};return X.isEmpty(d)||X.assign(y,{certificates:new K.CertificateList({},d)}),y})({requestJson:b,postmanJSON:v},n,a?.variables||{});(new se.Runner).run(new K.Collection({info:{name:X.get(b,"name")||"New request"},item:[_]}),k,(g,_)=>{g?f({action:"systemError",message:String(g),event_id:s?.event_id}):(X.set(a,[s?.event_id,"exception"],null),X.set(a,[s?.event_id,"error"],null),X.set(a,[s?.event_id,"console"],[]),X.set(a,[s?.event_id,"assertions"],[]),X.set(a,[s?.event_id,"visualizer"],{error:null,processed_template:""}),_.start({exception(e,t){if(t&&!X.includes(["get_parsed_request"],p)&&!X.includes(["assert_visual","assert"],s?.type)){const n=X.get(e,e?.scriptId);if(X.set(a,[s?.event_id,"exception",n],t),X.set(a,[s?.event_id,"error"],{error_type:n,message:t?.message}),X.includes(["prerequest","test"],n)){X.isUndefined(X.get(a,[s?.event_id,"console"]))&&X.set(a,[s?.event_id,"console"],[]);const e=Date.now();a[s?.event_id].console.push({time:e,level:"error",args:[String(t?.message)]})}if("prerequest"===n)try{_.abort(),X.isUndefined(X.get(a,[s?.event_id,"request"]))&&X.set(a,[s?.event_id,"request"],X.pick(b,["name","method","url"]))}catch(e){}}},console(e,t,...n){X.isUndefined(X.get(a,[s?.event_id,"console"]))&&X.set(a,[s?.event_id,"console"],[]);const r=Date.now();a[s?.event_id].console.push({time:r,level:t,args:n})},beforePrerequest(e,t,s,r){if(!e){const e=ne({requestJson:b,postmanJSON:v},"prerequest",n);X.forEach(e,e=>{const n=new Y(e);s.push(n),X.set(t,n?.script?.id,n?.listen)})}},prerequest(e,t,s,n){e||X.forEach(s,e=>{X.isEmpty(e?.script?.exec)||X.forEach(["_variables","environment","globals"],t=>{const s=X.get(e,`result.${t}`),n={};try{X.forEach(X.get(s.toJSON(),"values"),e=>{n[e?.key]=e?.value})}catch(e){}try{const e=X.difference(X.keys(X.get(a,["variables",t])),X.keys(n));X.forEach(e,e=>{"globals"!=t||X.includes(X.keys(L()),e)?"_variables"==t?X.unset(a,["variables","variables",e]):X.unset(a,["variables",t,e]):(X.unset(a,["variables","_globals",e]),X.unset(a,["variables",t,e]))}),X.forEach(n,(e,s)=>{let n=t;"_variables"===t&&(n="variables"),"globals"!==t||X.includes(X.keys(L()),s)||X.set(a,["variables","_globals",s],e),X.set(a,["variables",n,s],e)})}catch(e){}})})},beforeRequest(e,t,s,o,i){const c=L();if(["globals","environment","variables"].forEach(e=>{X.assign(c,X.get(a,`variables.${e}`))}),((e,t,s,n)=>{const{postmanJSON:r}=t,{lang:a,custom_functions:o}=n,i=X.cloneDeep(o),c=/{{([^}]+)}}/g;let p=String(e?.url||"");if(!X.isEmpty(p)){const t=p.match(c);X.isEmpty(t)||(X.forEach(t,e=>{try{const t=u(e,s,a,i);t==e||X.isUndefined(t)||(p=X.replace(p,e,t))}catch(e){}}),X.set(e,"url",new K.Url(p)))}X.forEach(X.get(r,"url.path"),(t,s)=>{if(X.startsWith(t,":")){const n=X.findKey(X.get(r,"url.variable"),e=>e?.key==X.trimStart(t,":"));X.startsWith(X.get(r,`url.variable.${n}.value`),"{{")&&X.endsWith(X.get(r,`url.variable.${n}.value`),"}}")&&!X.isUndefined(X.get(e,`url.path.${s}`))&&X.set(r,`url.variable.${n}.value`,X.get(e,`url.path.${s}`))}}),X.isEmpty(e.headers)||e?.headers?.each(e=>{e?.disabled||["key","value"].forEach(t=>{let n=String(X.get(e,t));const r=n.match(c);X.isEmpty(r)||(X.forEach(r,e=>{try{const t=u(e,s,a,i);t==e||X.isUndefined(t)||(n=X.replace(n,e,t))}catch(e){}}),X.set(e,t,n))})});const l=X.get(e,"body.mode");switch(l){case"urlencoded":case"formdata":X.isEmpty(e?.body[l])||e?.body[l].each((e,t)=>{e?.disabled||["key","value"].forEach(t=>{let n=X.get(e,t);if(X.isString(n)){const r=n.match(c);X.isEmpty(r)||(X.forEach(r,e=>{try{const t=u(e,s,a,i);t==e||X.isUndefined(t)||(n=X.replace(n,e,t))}catch(e){}}),X.set(e,t,n))}})});break;default:let t=X.get(e,"body.raw");if(X.isString(t)&&!X.isEmpty(t)){const n=t.match(c);X.isEmpty(n)||(X.forEach(n,e=>{try{const n=u(e,s,a,i);n==e||X.isUndefined(n)||(t=X.replace(t,e,n))}catch(e){}}),X.set(e,"body.raw",t))}}})(s,{postmanJSON:v},c,X.pick(n,["lang","custom_functions"])),X.includes(["get_parsed_request"],p)&&X.isUndefined(t?.scriptId)){try{i?.abort(),_?.abort()}catch(e){}m(),r(W(s))}},response:async(n,c,u,g,f,k,x)=>{if(X.includes(["get_parsed_request"],p)){try{_.abort()}catch(e){}r(W(g)),m()}else{if(n){if(!X.includes(["script","sql","assert_visual","assert"],s?.type)){X.set(a,[s?.event_id,"exception","prerequest"],String(n)),X.set(a,[s?.event_id,"error"],{error_type:"prerequest",message:String(n)}),X.isUndefined(X.get(a,[s?.event_id,"console"]))&&X.set(a,[s?.event_id,"console"],[]);const e=Date.now();a[s?.event_id].console.push({time:e,level:"error",args:[String(n?.message)]})}}else X.set(a,[s?.event_id,"response"],await async function(s,n,r){const a=X.cloneDeep(s),c=X.first(n?.execution?.data)||{};X.unset(a,"_details");try{X.assign(a,{body:String(a.stream)})}catch(e){}try{let t="Monaco",s={ext:"json",mime:"application/json"};if(i(a.body))X.assign(s,{ext:"svg",mime:"image/svg+xml"}),t="Image";else{const n=await e.fromBuffer(a.stream);if(X.isObject(n))X.assign(s,n),t=h(`test.${s?.ext}`)?"Image":"pdf"==s?.ext?"Pdf":"xml"==s?.ext?"Monaco":"Other";else{const e=M(a?.headers||{},"content-type")||"";if(X.isEmpty(e)){const e=o.isJson(a.body)?"json":o.isJsonp(a.body)?"jsonp":"html";s={ext:e,mime:l.getType(e)||"application/jsonp"}}else s={ext:l.getExtension(e),mime:l.getType(l.getExtension(e))}}}X.assign(a,{mimeType:s,fitForShow:t})}catch(e){}const p={};try{X.assign(p,X.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{X.assign(a,{headers:p})}catch(e){}let u=`${a?.id}.${a?.mimeType?.ext}`;try{if(u=X.get(t.parse(M(p||{},"content-disposition")),"parameters.filename"),X.isString(u))try{u=decodeURIComponent(u)}catch(e){}}catch(e){}a.filename=u,a.cookies={},a.arrCookies=[];let m=M(p||{},"set-cookie");X.isString(m)&&(m=[m]);try{X.forEach(m,e=>{const t=d.Cookie.parse(e).toJSON();X.assign(t,{name:t?.key,cookie_id:o.snowflakeId(`cookie_id_${Z()}`)}),a.arrCookies.push(t);const{key:s,value:n}=t;a.cookies[s]=n})}catch(e){}const g=X.get(c,"timings.requestStart")||Date.now();X.assign(a,{proxy:X.get(c,"request.proxy")||{},timings:X.mapKeys(X.get(c,"timings.offset")||{},(e,t)=>X.snakeCase(t)),requestStart:g,response_at:g});const y={},f=a?.timings??{},{request:b=0,socket:v=0,lookup:_=0,connect:k=0,secure_connect:x=0,response:q=0,end:S=0,done:O=0}=f,E=(e=0,t=0)=>X.round(Math.max(0,e-t),2),w={socketInitialization:[5,15],dnsLookup:[20,50],tcpHandshake:[20,70],sslHandshake:[50,120],waiting:[50,200],download:[50,150]},j=(e,t)=>{const[s,n]=w[e]||[100,300];return t<s?"green":t<n?"yellow":"red"},D={prepare:X.round(b,2),socketInitialization:E(v,b),dnsLookup:E(_,v),tcpHandshake:E(k,_),sslHandshake:E(x,k),waiting:E(q,x||k),download:E(S,q),process:E(O,S),total:E(O,b)};X.isUndefined(f?.secure_connect)&&X.unset(D,"sslHandshake");const T=X.sum(X.values(X.pick(D,X.keys(w))));for(const[e,t]of Object.entries(D))y[e]={duration:t},X.includes(X.keys(w),e)&&X.assign(y[e],{width:X.includes(X.keys(w),e)?X.round(t/T,2):0,level:j(e,t)}),X.includes(["prepare"],e)&&X.assign(y[e],{width:-1*(X.includes(["prepare"],e)?X.round(t/D?.total,2):0),level:"gray"});const $={},V=X.get(c,"session.id");if(X.isString(V)){const e=X.get(n?.execution?.sessions,V);X.assign($,{HTTPVersion:c?.response?.httpVersion||"1.1",Proxy:X.get(c,"request.proxy")||{},LocalAddress:X.get(e,"addresses.local.address"),RemoteAddress:X.get(e,"addresses.remote.address"),TLSProtocol:X.get(e,"tls.protocol"),CipherCountry:X.get(e,"tls.peerCertificate.issuer.country"),CipherName:X.get(e,"tls.cipher.name"),ValidUntil:X.get(e,"tls.peerCertificate.validTo")}),X.set($,"Certificate",X.get(e,"tls.peerCertificate.subject.commonName")),X.set($,"Issuer",X.get(e,"tls.peerCertificate.issuer.commonName"))}const N={};["request","response"].forEach(e=>{X.set(N,`${e}Headers`,re(X.get(c,`${e}.headers`),X.get(c,`${e}`)))});const C=X.sum([a?.responseSize,N?.responseHeaders]),I=a?.responseSize;return X.assign(N,{responseSize:C,requestBody:ae(X.get(r?.body,`${r?.body?.mode}`)),responseBody:I,uncompressedResponseBody:(new TextEncoder).encode(String(a?.stream)).length}),X.assign(a,{formatTimings:y,network:X.pickBy($,e=>"undefined"!==String(e)),formatSize:N,responseSize:C}),a}(u,x,g));const r=function(e,t,s,n){const r=X.assign(X.cloneDeep(e),X.pick(t,["project_id","target_id","name"]));r.mode=X.get(t,"request.body.mode");try{r.paths=X.fromPairs((X.get(s,"url.variable")||[]).map(e=>[e.key,e.value]))||{}}catch(e){}try{const e=X.mapValues(X.keyBy(X.get(n,"execution.data[0].request.headers")||{},"key"),"value");!X.isEmpty(e)&&X.isObject(e)?r.headers=e:r.headers=X.reduce(r.headers?.toJSON(),(e,t)=>(e[t.key]=t.value,e),{})}catch(e){}try{r.querys=r.url?.query?.toObject(),r.url=String(r.url)}catch(e){}try{if(r.body=X.get(e,`body.${X.get(e,"body.mode")}`),"msgpack"==r.mode){const e=__nccwpck_require__(38831)();try{r.body=JSON.stringify(e.decode(y.from(X.values(r.body))))}catch(e){}}try{r.body=r.body.toObject()}catch(e){}}catch(e){}try{r.uri=e?.url.toJSON(),X.forEach(r.uri,(e,t)=>{"query"==t?r.uri[t]=e.toObject():"host"==t?r.uri[t]=X.join(e,"."):"path"==t?r.uri[t]=X.join(e,"/"):X.isArray(e)&&(r.uri[t]=X.join(e,""))})}catch(e){}r.cookies={};try{const e=r.headers?.cookie;!X.isEmpty(e)&&X.isString(e)&&X.forEach(X.split(e,";"),e=>{const{key:t,value:s}=d.Cookie.parse(e).toJSON();r.cookies[t]=s})}catch(e){}return r}(g,b,v,x);X.set(a,[s?.event_id,"request"],r)}},beforeTest(e,t,s,r){if(!e&&!X.includes(["get_parsed_request"],p)){const e=ne({requestJson:b,postmanJSON:v},"test",n);X.forEach(e,e=>{const n=new Y(e);s.push(n),X.set(t,n?.script?.id,n?.listen)})}},test(e,t,n,r){if(!e&&!X.includes(["get_parsed_request"],p)){X.forEach(n,e=>{X.isEmpty(e?.script?.exec)||X.forEach(["_variables","environment","globals"],t=>{const s=X.get(e,`result.${t}`),n={};try{X.forEach(X.get(s.toJSON(),"values"),e=>{n[e?.key]=e?.value})}catch(e){}try{const e=X.difference(X.keys(X.get(a,["variables",t])),X.keys(n));X.forEach(e,e=>{"globals"!=t||X.includes(X.keys(L()),e)?"_variables"==t?X.unset(a,["variables","variables",e]):X.unset(a,["variables",t,e]):(X.unset(a,["variables","_globals",e]),X.unset(a,["variables",t,e]))}),X.forEach(n,(e,s)=>{let n=t;"_variables"===t&&(n="variables"),"globals"!==t||X.includes(X.keys(L()),s)||X.set(a,["variables","_globals",s],e),X.set(a,["variables",n,s],e)})}catch(e){}})});const e=X.get(a,["variables","variables","_pm.response.setBody"]),t=X.toInteger(X.get(a,["variables","variables","_pm.response.code"]));X.isString(e)&&(X.set(a,[s?.event_id,"response","stream"],{type:"Buffer",data:Array.from(y.from(e))}),X.set(a,[s?.event_id,"response","body"],e)),t>0&&X.set(a,[s?.event_id,"response","code"],t)}},assertion(e,t){X.includes(["get_parsed_request"],p)||!X.isEmpty(t)&&X.isArray(t)&&(X.isUndefined(X.get(a,[s?.event_id,"assertions"]))&&X.set(a,[s?.event_id,"assertions"],[]),a[s?.event_id].assertions=X.unionWith(X.concat(X.get(a,[s?.event_id,"assertions"]),t),X.isEqual))},item(e,t,n,r,o){if(!X.includes(["get_parsed_request"],p))if(!e&&X.isObject(r)){const{error:e,processedTemplate:t}=r;X.set(a[s?.event_id],"visualizer",{error:e,processed_template:t})}else X.set(a[s?.event_id],"visualizer",{error:null,processed_template:""})},responseData(e,t){X.includes(["get_parsed_request"],p)||"sse"!==b?.target_type||r({action:"sse",data:{stream:t,size:X.size(t),time:Date.now()},msg:"success",error:null})},done(e,t){if(!X.includes(["get_parsed_request"],p)){if(!e){const e=X.filter(X.get(a,[s?.event_id,"assertions"]),e=>!1===e?.passed);let t="Ok";X.inRange(X.toInteger(X.get(a,[s?.event_id,"response","code"])),200,300)||(t=X.get(a,[s?.event_id,"response","status"])||X.get(a,[s?.event_id,"error","message"])),X.set(a,[s?.event_id,"status"],{assert:X.get(a,[s?.event_id,"assertions"],[]),success_assert:e,http:t})}try{const e=H(a,s?.event_id)||{},t=X.pick(X.get(a,"variables"),["environment","_globals"]),n=X.assign(F(X.get(a,s?.event_id)),X.pick(e,["startTime","endTime","currentVariables"])),o=X.assign(X.pick(b,["parent_id","project_id","test_id","target_id"]),X.defaults(X.pick(n,["error","iteration_id","startTime","endTime","currentVariables"]),{error:null}),{action:"request",type:s?.type,data:X.assign({variables:{globals:X.get(t,"_globals",{}),environment:X.get(t,"environment",{})}},X.omit(X.cloneDeep(n),["error"])),event_id:s?.event_id});"auto_test"===p||"sse"===b?.target_type?X.includes(["assert","assert_visual","api","sample","script","sql"],s?.type)&&(c.push(X.assign(F(X.get(X.cloneDeep(a),s?.event_id)),X.pick(s,["type","event_id","test_id","iteration_id"]))),r({action:"request",data:X.assign(o,{type:s?.type})})):r(o)}catch(e){f({action:"systemError",message:String(e),event_id:s?.event_id})}}m()}}))})}catch(e){f({action:"systemError",message:String(e),event_id:s?.event_id})}})}}function B(){if(p)return c;p=1;const e=d,t=S,s=q,n=O,r=m,{returnBoolean:a,variableReplaceForCondition:l,variableReplace:u,getVariableActedUpon:g,convertEndRuntimeState:y,repeatArrayToLength:h}=A(),f=P(),b=function(){if(i)return o;i=1;const e=d,t=m,{variableReplace:s,convertEndRuntimeState:n}=A();return o=async(r,a,o,i,c)=>{try{const p=t.toInteger(s(r?.data?.sleep,i?.variables,a))||0;p>0&&e(p);const l=n(i,r?.event_id)||{},u={action:"request",data:t.assign({data:{sleep:p}},t.pick(l,["startTime","endTime","currentVariables"]),t.pick(r,["project_id","test_id","event_id","type"]),t.pick(t.get(i,r?.event_id),["iteration_id"]))};c.push(u?.data),o(u)}catch(e){throw{action:"systemError",message:String(e),event_id:r?.event_id}}}}(),v={api:f,sample:f,sse:f,request:f,script:f,assert:f,assert_visual:f,sql:f,wait:b,if:async(e,t,s,n,o)=>{try{const{data:i,children:c}=e,p=r.filter(c,e=>r.toInteger(e?.enabled>0)),u=l(i?.var,n?.variables,t),d=i?.compare,m=l(i?.value,n?.variables,t),h=a(u,d,m),f=y(n,e?.event_id)||{},b={action:"request",data:r.assign({data:{isMatched:h,condition:{leftValue:{variable:i?.var,value:u,actedUpon:g(n,r.trim(i?.var,"{}"))||"Fixed"},compare:d,rightValue:{variable:i?.value,value:m,actedUpon:g(n,r.trim(i?.value,"{}"))||"Fixed"}}}},r.pick(f,["startTime","endTime","currentVariables"]),r.pick(e,["project_id","test_id","event_id","type"]),r.pick(r.get(n,e?.event_id),["iteration_id"]))};if(o.push(b?.data),s(b),h&&r.isArray(p)&&!r.isEmpty(p)){const{iterationData:e}=t,a=[e];await k(p,r.assign(r.cloneDeep(t),{iterationDataArr:a}),s,n,o)}}catch(t){throw{action:"systemError",message:String(t),event_id:e?.event_id}}},begin:async(e,t,s,n,a)=>{try{const{children:o}=e,i=r.filter(o,e=>r.toInteger(e?.enabled>0));if(r.isArray(i)&&!r.isEmpty(i)){const{iterationData:e}=t,o=[e];await k(i,r.assign(r.cloneDeep(t),{iterationDataArr:o}),s,n,a)}}catch(t){throw{action:"systemError",message:String(t),event_id:e?.event_id}}},loop:async(e,s,o,i,c)=>{try{const{data:p,children:d}=e,m=r.filter(d,e=>r.toInteger(e?.enabled>0)),g=r.toInteger(u(r.get(p,"sleep",0),i?.variables,s)),y=r.toInteger(r.get(s,"startTime",Date.now())),f=r.toInteger(r.get(s,"timeout",r.toInteger(u(r.get(p,"loop_timeout",0),i?.variables,s))));if(r.isArray(m)&&!r.isEmpty(m)){const e=[];if((r.toInteger(p?.enable_data)||1)>0){switch(r.toInteger(p?.loop_data_type)||1){case 1:r.assign(e,r.values(r.get(p,"loop_traverse_data.iterationData",[])));break;case 2:const a=r.trim(r.get(p,"loop_iteration_data"));if(r.isString(a)&&""!=a){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"},o=r.toInteger(r.get(p,"loop_extract.var")),c=r.get(i,`${a}.${s[o]||"response.body"}`),l=r.trim(String(r.get(p,"loop_extract.value","$")));let u;switch(o){case 1:case 8:try{u=r.isString(c)?t.value(n.parse(c),l):t.value(c,l)}catch(e){}break;case 2:case 3:case 7:case 9:case 10:u=r.get(c,l);break;case 4:case 5:case 6:u=r.cloneDeep(c)}if(r.isString(u))try{u=n.parse(u)}catch(e){}r.isNumber(u)&&(u=String(u));let d=[];r.isArray(u)?d=r.map(u,e=>r.isObject(e)?r.pickBy(e,e=>!r.isObject(e)):{0:e}):r.isObject(u)?r.forEach(u,(e,t)=>{if(!r.isObject(e)){const s={};r.set(s,t,e),d.push(s)}}):r.isString(u)&&(d=r.map(r.values(u),(e,t)=>{const s={};return s[String(t)]=e,s})),r.assign(e,d)}break;case 3:{let t=u(r.get(p,"loop_variable",""),i?.variables,s);if(r.isString(t))try{t=n.parse(t)}catch(e){}r.isNumber(t)&&(t=String(t));let a=[];r.isArray(t)?a=r.map(t,e=>r.isObject(e)?r.pickBy(e,e=>!r.isObject(e)):{0:e}):r.isObject(t)?r.forEach(t,(e,t)=>{if(!r.isObject(e)){const s={};r.set(s,t,e),a.push(s)}}):r.isString(t)&&(a=r.map(r.values(t),(e,t)=>{const s={};return s[String(t)]=e,s})),r.assign(e,a)}break;case 4:{let t=r.split(r.get(p,"loop_fixed_value",""),","),s=[];r.forEach(t,(e,t)=>{r.isObject(e)||s.push({$key:t,$item:e})}),r.assign(e,s)}}}const d=r.toInteger(r.get(p,"loop_type",1));if(r.includes([1,2],d)){const t=1===d?r.size(e):r.toInteger(r.get(p,"limit",1));if(t>0){let n=r.cloneDeep(e);2===d&&(n=h(n,t)),n=r.flatMap(n,e=>r.times(r.size(m),()=>e));const a=r.flatten(r.times(t,()=>r.cloneDeep(m)));await k(a,r.assign(r.cloneDeep(s),{iterationDataArr:n,sleep:g,startTime:y,timeout:f}),o,i,c)}}else if(r.includes([3],d))for(;;){const t=r.get(s,"condition",r.get(p,"loop_condition",{})),n=l(t?.var,i?.variables,s),u=t?.compare,d=l(t?.value,i?.variables,s);if(!(0===f||f>0&&y+f>Date.now())||a(n,u,d))break;await k(r.cloneDeep(m),r.assign(r.cloneDeep(s),{iterationDataArr:e,sleep:g,condition:t,startTime:y,timeout:f}),o,i,c)}}}catch(t){throw{action:"systemError",message:String(t),event_id:e?.event_id}}}},_=async(e,t,n,a,o)=>{r.isUndefined(e.event_id)&&"http_request"===t?.scene&&r.set(e,"event_id",r.get(e,"data.target_id")),r.assign(a?.variables?.iterationData,r.get(t,"iterationData")),r.set(a,[e.event_id,"iteration_id"],s.snowflakeId());const i=r.get(v,`${e?.type}`);if(r.isFunction(i)){const{total:s,scene:c}=t;r.set(a,[e.event_id,"iteration","startTime"],Date.now());const{environment:p={},variables:l={},_globals:u={},iterationData:d={}}=r.get(a,"variables",{});r.set(a,[e.event_id,"iteration","startVariables"],r.cloneDeep({environment:p,variables:l,iterationData:d,globals:u}));try{await i(e,t,n,a,o),"auto_test"==c&&r.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(r.toInteger(t?.ignore_error)<1)throw e}}},k=async(t,s,n,a,o)=>{const i=t.shift();if(r.isObject(i)&&r.has(i,"type")&&r.toInteger(i?.enabled)>0){let{iterationDataArr:c}=s;r.isArray(c)||(c=r.values(c));const p=c.shift()||{};try{const{sleep:t}=s;if(await _(i,{...s,iterationData:p},n,a,o),r.toInteger(s?.ignore_error)<1&&r.includes(["api","sample","assert","assert_visual","script","request"],i?.type)){if(r.size(a[i.event_id]?.status?.assert)!=r.size(a[i.event_id]?.status?.success_assert))throw"Assertion validation failed.";if(r.includes(["api","sample"],i?.type)&&"OK"!=r.toUpper(a[i.event_id]?.status?.http))throw"Endpoint request failed."}r.toInteger(t)>0&&e(t)}catch(e){if(r.toInteger(s?.ignore_error)<1)throw e}r.isArray(t)&&!r.isEmpty(t)&&await k(t,{...s,iterationDataArr:c},n,a,o)}};return c={executeEvent:_,iterationEvent:k}}var z=U(function(){if(u)return l;u=1;const{repeatArrayToLength:e,formatAutotestReport:t,formatAutotestReportList:s,getInsideVariables:n}=A(),r=m,{mockExp:a}=f,o=q,{executeEvent:i,iterationEvent:c}=B(),p=["systemError"];return l={run:async(l,u,d)=>{const{iterationCount:m,iterationData:g,scene:y}=u;"auto_test"==y&&(l=r.filter(l,function(e){return r.toInteger(e?.enabled)>0}));const h=r.cloneDeep(r.flatten(new Array("auto_test"==y?r.max([r.toInteger(m),1]):1).fill(l)))||[],f=r.pick(u,["scene","lang","project","env","globals","cookies","system_configs","custom_functions","collection","database_configs","enable_sandbox","ignore_error","sleep","name","testing_id"]),b={variables:{environment:{},variables:{},globals:{},_globals:{},iterationData:{},iterationDataArr:[]}},v=[];if("http_request"!=y){const e=/{{([^}]+)}}/g;r.forEach(r.values(r.cloneDeep(g)),(t,s)=>{const o=r.cloneDeep(t);r.isObject(t)&&!r.isEmpty(t)&&r.forEach(t,(t,s)=>{if(""!=r.trim(t)&&r.isString(t)){const i=t.match(e);r.isEmpty(i)||r.forEach(i,e=>{try{const i=a(e,n(),u?.lang,u?.custom_functions||{});i==e||r.isUndefined(i)||r.set(o,[s],r.replace(t,e,i))}catch(e){}})}}),v.push(o)})}const _=r.flatMap(e(r.cloneDeep(v),r.max([r.toInteger(m),1])),e=>r.times(r.size(l),()=>e)),k={environment:r.get(u,"env.environment",{}),globals:r.get(u,"globals",{}),iterationDataArr:_};["environment","globals","iterationDataArr"].forEach(e=>{r.forEach(k[e],(t,s)=>{r.isUndefined(r.get(b,["variables",e,s]))&&(r.set(b,["variables",e,s],t),"globals"===e&&r.set(b,["variables",`_${e}`,s],t))})});const x=[],q=Date.now();if("http_request"==y){const e=r.first(h);if(r.isObject(e)&&r.has(e,"type"))try{await i(e,r.assign(f,{iterationData:{}}),d,b,x)}catch(e){if(r.includes(p,e?.action))throw e}}else{const e=[];if(r.forEach(h,(t,s)=>{t?.enabled>0&&e.push(r.assign(r.cloneDeep(t),{progress:s}))}),!r.isEmpty(e)){const t=r.size(e);try{await c(e,r.assign(f,{iterationDataArr:_,total:t}),d,b,x)}catch(e){d(e)}}const n=r.pick(r.get(b,"variables"),["environment","_globals"]);d({action:"complete",data:r.assign(t(q,x),{list:s(x),variables:{globals:u?.enable_sandbox>0?{}:r.get(n,"_globals",{}),environment:u?.enable_sandbox>0?{}:r.get(n,"environment",{})}},r.pick(u,["project_id","job_id","scenario","frequency"]),r.pick(r.get(u,"env",{}),["env_id","env_name"]),{testing_id:r.get(r.first(x),"test_id")},{report_name:`${u?.name}`},{report_id:o.snowflakeId()})})}},request2HAR:(e,t)=>new Promise(async(s,n)=>{const a=r.pick(t,["scene","lang","project","env","globals","cookies","system_configs","custom_functions","collection","database_configs","enable_sandbox","sleep","name","testing_id"]),o={variables:{environment:{},variables:{},globals:{},_globals:{},iterationData:{},iterationDataArr:[]}},c={environment:r.get(t,"env.environment",{}),globals:r.get(t,"globals",{})};["environment","globals"].forEach(e=>{r.forEach(c[e],(t,s)=>{r.isUndefined(r.get(o,["variables",e,s]))&&(r.set(o,["variables",e,s],t),"globals"===e&&r.set(o,["variables",`_${e}`,s],t))})});const p=[],l=r.first(e);if(r.isObject(l)&&r.has(l,"type"))try{await i(l,r.assign(a,{scene:"get_parsed_request"}),e=>{s(e)},o,p)}catch(e){n(e)}})}}());module.exports=z;
474542
474571
 
474543
474572
 
474544
474573
  /***/ }),
@@ -763623,7 +763652,7 @@ module.exports = JSON.parse('{"author":"Mike D Pilsbury <mike.pilsbury@gmail.com
763623
763652
  /***/ ((module) => {
763624
763653
 
763625
763654
  "use strict";
763626
- module.exports = JSON.parse('{"name":"apipost-cli-pro","version":"3.0.2","description":"Apipost 命令行运行工具。适合Apipost8及以上版本。","main":"./dist/index.js","files":["dist"],"scripts":{"test":"echo \\"Error: no test specified\\" && exit 1","clean-dist":"rm -rf ./dist","copy-report":"cp -r ./bin/apipost-reports ./dist/apipost-cli/","build":"npm run clean-dist && ncc build bin/cli.js --external uglify-js -o dist/ && npm run copy-report"},"bin":{"apipost":"./dist/index.js","apipost8":"./dist/index.js"},"keywords":[],"author":"Apipost Team","license":"UNLICENSED","devDependencies":{"@vercel/ncc":"^0.38.1","apipost-inside-tools":"^0.1.98","art-template":"^4.13.4","cli-progress":"^3.12.0","cli-table3":"^0.6.5","colors":"^1.4.0","commander":"^12.1.0","crypto":"^1.0.1","database-query":"^1.1.18","dayjs":"^1.11.13","electron":"npm:lodash@^4.17.21","lodash":"^4.17.21","node-fetch":"^3.3.2","runner-runtime":"^1.0.114","uuid":"^11.1.0"},"dependencies":{"apipost-inside-tools":"^0.1.98","axios":"^1.11.0","crypto":"^1.0.1","database-query":"^1.1.18","iconv-lite":"^0.6.3","shell-env":"^4.0.1","uuid":"^11.1.0"}}');
763655
+ module.exports = JSON.parse('{"name":"apipost-cli-pro","version":"3.0.3","description":"Apipost 命令行运行工具。适合Apipost8及以上版本。","main":"./dist/index.js","files":["dist"],"scripts":{"test":"echo \\"Error: no test specified\\" && exit 1","clean-dist":"rm -rf ./dist","copy-report":"cp -r ./bin/apipost-reports ./dist/apipost-cli/","build":"npm run clean-dist && ncc build bin/cli.js --external uglify-js -o dist/ && npm run copy-report"},"bin":{"apipost":"./dist/index.js","apipost8":"./dist/index.js"},"keywords":[],"author":"Apipost Team","license":"UNLICENSED","devDependencies":{"@vercel/ncc":"^0.38.1","apipost-inside-tools":"^0.1.98","art-template":"^4.13.4","cli-progress":"^3.12.0","cli-table3":"^0.6.5","colors":"^1.4.0","commander":"^12.1.0","crypto":"^1.0.1","database-query":"^1.1.18","dayjs":"^1.11.13","electron":"npm:lodash@^4.17.21","lodash":"^4.17.21","node-fetch":"^3.3.2","runner-runtime":"^1.0.116","uuid":"^11.1.0"},"dependencies":{"apipost-inside-tools":"^0.1.98","axios":"^1.11.0","crypto":"^1.0.1","database-query":"^1.1.18","iconv-lite":"^0.6.3","shell-env":"^4.0.1","uuid":"^11.1.0"}}');
763627
763656
 
763628
763657
  /***/ })
763629
763658
 
@@ -764158,6 +764187,7 @@ const bindEvent = (program) => {
764158
764187
  // .option('--cache-dir <path>', `临时文件夹,当默认临时文件夹不可用时主动指定`)
764159
764188
  .option('--web-hook <url>', `Web-hook用于在任务完成后向指定URL发送JSON报告数据 (POST) `)
764160
764189
  .option('--api-token <token>', `Web-hook 的 api-token `)
764190
+ .option('--project-id <ID>', `项目ID(使用 Web-hook 时必填, 「项目设置」-「基本设置」处查看并复制)`)
764161
764191
  .action((url, options) => {
764162
764192
  parseCommandString(url, options)
764163
764193
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apipost-cli",
3
- "version": "3.0.2",
3
+ "version": "3.0.3",
4
4
  "description": "Apipost 命令行运行工具。适合Apipost8及以上版本。",
5
5
  "main": "./dist/index.js",
6
6
  "files": [
@@ -33,7 +33,7 @@
33
33
  "electron": "npm:lodash@^4.17.21",
34
34
  "lodash": "^4.17.21",
35
35
  "node-fetch": "^3.3.2",
36
- "runner-runtime": "^1.0.114",
36
+ "runner-runtime": "^1.0.116",
37
37
  "uuid": "^11.1.0"
38
38
  },
39
39
  "dependencies": {
@@ -45,4 +45,4 @@
45
45
  "shell-env": "^4.0.1",
46
46
  "uuid": "^11.1.0"
47
47
  }
48
- }
48
+ }