!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.PostmanUtilsFactory=t():e.PostmanUtilsFactory=t()}(this,(()=>(()=>{"use strict";var e={116:function(e,t,r){var s=this&&this.__createBinding||(Object.create?function(e,t,r,s){void 0===s&&(s=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,s,n)}:function(e,t,r,s){void 0===s&&(s=r),e[s]=t[r]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&s(t,e,r);return n(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.EnvKeys=void 0;const a=r(500),l=r(530),c=i(r(107)),h=o(r(429));t.EnvKeys={PREFERENCES:"preferences",STATE:"state",VERSION:"version"},t.default=class{constructor(e,t){this.pm=e,this.logger=t,this.state=new c.default(this,t),this.preferences=new h.default(this,t)}setPm(e){this.pm=e}reset(e){return t.EnvKeys.PREFERENCES,this.preferences,t.EnvKeys.STATE,this.state,this.pm.collectionVariables.clear(),this.preferences.apply(e),this.state.reset(),this.set(t.EnvKeys.VERSION,"v2.0.0"),this.validate(),this.logger=new l.Logger(this.preferences.get(h.PreferenceKeys.VERBOSITY)),this.logger.log("Environment reset.",l.LogLevel.info,l.LogVerbosity.verbose),this}get(e){let t=this.pm.collectionVariables.get(e);return(0,a.is_empty)(t)?void 0:t}getObject(e){let t=this.get(e);if(void 0===t)return t;let r=typeof t;if("object"===r&&Object(t)===t)return t;if("string"!==r)throw new Error(`Expected a string (serialized object) for environment variable key ${e}, but got ${r}`);let s=JSON.parse(t);if("object"!=typeof s)throw new Error(`Could not decode ${e}, into an object.`);return s}setObject(e,t){if("object"!=typeof t||Object(t)!==t)throw new Error(`Value ${t} not recognizable as an object.`);let r=JSON.stringify(t);if("string"!=typeof r)throw new Error(`Expected a string (serialized object) for variable ${e}, but got ${typeof t}`);return this.set(e,r),this}filter(){return{[t.EnvKeys.PREFERENCES]:this.getObject(t.EnvKeys.PREFERENCES),[t.EnvKeys.STATE]:this.getObject(t.EnvKeys.STATE),[t.EnvKeys.VERSION]:this.get(t.EnvKeys.VERSION)}}set(e,t){return this.logger.log("Environment: setting "+e+" to "+t,l.LogLevel.info,l.LogVerbosity.very_verbose),this.pm.collectionVariables.set(e,t),this}unset(e){return this.logger.log("Clearing "+e+" in pm.collectionVariables",l.LogLevel.info,l.LogVerbosity.very_verbose),this.pm.collectionVariables.toObject().keys().filter((t=>e===t)).map((e=>this.pm.collectionVariables.unset(e))),this}getState(){return this.state}getPreferences(){return this.preferences}validate(){for(const[e,r]of Object.entries(t.EnvKeys))if(!this.pm.collectionVariables.has(r))throw new Error(`The required key ${r} is not present in postman.`);return this.preferences.validate(),this.state.validate(),this}}},500:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.random_string=t.is_empty=t.iri_to_id=void 0,t.iri_to_id=e=>"string"!=typeof e?e:e.replace(/.*\/([^\/]+)$/,"$1").toString(),t.is_empty=e=>null==e||""===e,t.random_string=(e,t)=>{let r="";t.indexOf("a")>-1&&(r+="abcdefghijklmnopqrstuvwxyz"),t.indexOf("A")>-1&&(r+="ABCDEFGHIJKLMNOPQRSTUVWXYZ"),t.indexOf("#")>-1&&(r+="0123456789"),t.indexOf("!")>-1&&(r+="~`!@#$%^&*()_+-={}[]:\";'<>?,./|\\");let s="";for(let t=e;t>0;--t)s+=r[Math.floor(Math.random()*r.length)];return s}},530:(e,t)=>{var r,s;Object.defineProperty(t,"__esModule",{value:!0}),t.LogVerbosity=t.LogLevel=t.Logger=void 0,function(e){e.default="default",e.info="info",e.warn="warn",e.error="error",e.trace="trace"}(r||(r={})),t.LogLevel=r,function(e){e[e.none=0]="none",e[e.minimal=1]="minimal",e[e.verbose=2]="verbose",e[e.very_verbose=3]="very_verbose",e[e.default=1]="default"}(s||(s={})),t.LogVerbosity=s,t.Logger=class{constructor(e=1){this.msgs=[],this.verbosityPreference=e}setVerbosity(e){return this.verbosityPreference=e,this}dump(e,t=r.default,n=s.default){this.log([e],t,n)}log(e,t=r.default,n=s.default){this.verbosityPreference{switch(t){case r.info:console.info(e);break;case r.warn:console.warn(e);break;case r.error:console.error(e);break;case r.trace:console.trace(e);break;case r.default:default:console.log(e)}})))}}},429:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validate_preferences=t.PreferenceKeys=void 0;const s=r(116),n=r(530);t.PreferenceKeys={BASE_URL:"baseUrl",ENVIRONMENT:"environment",FLAG_ENABLE_BLACKFIRE:"enableBlackfire",VERBOSITY:"verbosity",ADMIN_PASSWORD:"adminPassword",SUPER_ADMIN_PASSWORD:"adminPassword",DEFAULT_CONTENT_TYPE:"defaultContentType",DEFAULT_LANGUAGE:"defaultLanguage",DEFAULT_PASSWORD:"defaultPassword"};const o=e=>Object.values(t.PreferenceKeys).includes(e),i={[t.PreferenceKeys.ADMIN_PASSWORD]:"#Ch@ng3M3!#",[t.PreferenceKeys.BASE_URL]:null,[t.PreferenceKeys.DEFAULT_CONTENT_TYPE]:"application/ld+json",[t.PreferenceKeys.DEFAULT_LANGUAGE]:"en",[t.PreferenceKeys.DEFAULT_PASSWORD]:"#Ch@ng3M3!#",[t.PreferenceKeys.ENVIRONMENT]:null,[t.PreferenceKeys.FLAG_ENABLE_BLACKFIRE]:!1,[t.PreferenceKeys.SUPER_ADMIN_PASSWORD]:"#Ch@ng3M3!#",[t.PreferenceKeys.VERBOSITY]:1},a={[t.PreferenceKeys.ADMIN_PASSWORD]:e=>"string"==typeof e,[t.PreferenceKeys.BASE_URL]:e=>"string"==typeof e,[t.PreferenceKeys.DEFAULT_CONTENT_TYPE]:e=>"string"==typeof e,[t.PreferenceKeys.DEFAULT_LANGUAGE]:e=>"string"==typeof e,[t.PreferenceKeys.DEFAULT_PASSWORD]:e=>"string"==typeof e,[t.PreferenceKeys.ENVIRONMENT]:e=>["development","staging","production"].some(e),[t.PreferenceKeys.FLAG_ENABLE_BLACKFIRE]:e=>void 0===e||"boolean"==typeof e,[t.PreferenceKeys.SUPER_ADMIN_PASSWORD]:e=>"string"==typeof e,[t.PreferenceKeys.VERBOSITY]:e=>void 0===e||"number"==typeof e};t.validate_preferences=e=>{for(let t of Object.keys(e)){if(!o(t))throw new Error(`${t} is not a known preference key.`);if(null===e[t])throw new Error(`The preference ${t} was never set.`);if(!(0,a[t])(e[t]))throw new Error(`The value passed for the preference key ${t} did not match the expected type.`)}return e},t.default=class{constructor(e,t){this.logger=t,this.env=e}validate(){let e=this.env.getObject(s.EnvKeys.PREFERENCES);return(0,t.validate_preferences)(e),this}apply(e){return e=(0,t.validate_preferences)(e),this.reset(),Object.keys(e).map((t=>this.set(t,e[t]))),this}getAll(){return this.env.getObject(s.EnvKeys.PREFERENCES)}reset(){return this.logger.log("Clearing environment preferences...",n.LogLevel.info,n.LogVerbosity.verbose),this.env.setObject(s.EnvKeys.PREFERENCES,i),this}set(e,r){let n=this.env.getObject(s.EnvKeys.PREFERENCES);if(void 0===n)throw new Error("Prefs was undefined! This should not have happened, check Preferences.ts in postman-utils");return n[e]=r,this.env.setObject(s.EnvKeys.PREFERENCES,n),e===t.PreferenceKeys.VERBOSITY&&this.logger.setVerbosity(r),this}get(e){if(!o(e))throw new Error(`${e} is not a known preference key.`);let t=this.env.getObject(s.EnvKeys.PREFERENCES);if(void 0===t[e])throw new Error(`The key ${e} was never set within the environment preferences.`);return t[e]}}},56:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e){this.raw=e;const t=JSON.parse(e);this.object=t}getResponseRaw(){return this.raw}getResponseObject(){return this.object}getFromResponse(e){if("string"!=typeof e||""===e)throw new Error("Key passed to getVar() was empty or not a string!");let t=this.getResponseObject(),r=e.split("."),s=[];do{let n=r.shift();if("string"!=typeof n)throw new Error("Unexpected value in keypath in getVar()");if(s.push(n),void 0===t[n]){let t=s.join(".");throw new Error(`The response key ${e} was not found in the response (failed at ${t})`)}t=t[n]}while(r.length>0);return t}isListResponse(){return void 0!==this.getResponseObject()["hydra:member"]&&Array.isArray(this.getResponseObject()["hydra:member"])}getObjects(){let e=null;return this.isListResponse()?e=e["hydra:member"]:Array.isArray(e)||(e=[e]),e}}},107:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validate_state=void 0;const s=r(116),n=r(530);t.validate_state=e=>e;class o{constructor(e,t){this.logger=t,this.env=e}static from(e,t){return e.getObject(s.EnvKeys.STATE),new o(e,t)}validate(){let e=this.env.getObject(s.EnvKeys.STATE);return(0,t.validate_state)(e),this}apply(){throw new Error("Not yet implemented")}reset(){this.logger.log("Clearing state...",n.LogLevel.info,n.LogVerbosity.verbose),this.env.setObject(s.EnvKeys.STATE,{})}get(e){let t=this.getAll();if(void 0===t[e])throw new Error(`The key ${e} was never set within the environment state.`);return t[e]}getAll(){return this.env.getObject(s.EnvKeys.STATE)??{}}setAll(e){return this.env.setObject(s.EnvKeys.STATE,e??{}),this}set(e,t){let r=this.getAll();return r[e]=t,this.env.setObject(s.EnvKeys.STATE,r),this}delete(e){let t=this.env.getObject(s.EnvKeys.STATE);return delete t[e],this.env.setObject(s.EnvKeys.STATE,t),this}}t.default=o},474:function(e,t,r){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(r(56));t.default=class{constructor(e){this.response=new n.default(e)}getDecodedToken(){let e=this.getToken().split(".")[1];if(!e)throw new Error("Could not extract the Base 64 url out of the token");let t=e.replace(/-/g,"+").replace(/_/g,"/"),r=decodeURIComponent(atob(t).split("").map((function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join("")),s=JSON.parse(r);if("object"!=typeof s)throw new Error("Error: Could not construct a decoded token out of the token value "+this.getToken());return s}getToken(){let e=this.response.getResponseObject();if("string"!=typeof e.token)throw new Error("Could not retrieve token!");return e.token}getRefreshToken(){let e=this.response.getResponseObject();if("string"!=typeof e.refresh_token)throw new Error("Could not retrieve refresh token!");return e.refresh_token}}},675:function(e,t,r){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(r(116)),o=s(r(474)),i=r(530),a=r(500),l=s(r(56));t.default=class{constructor(e){this.pm=e,this.logger=new i.Logger,this.env=new n.default(e,this.logger)}setPm(e){this.pm=e,this.env.setPm(e)}prerequest(e){this.logger.log("Running universal pre-request",i.LogLevel.info,i.LogVerbosity.verbose),this.setPm(e),this.env.validate();const t={},r=this.getEnv().getState().getAll();Object.keys(r).map((e=>t[e]=r[e])),Object.keys(r).map((e=>this.pm.variables.set(e,r[e])));const s=this.getEnv().getPreferences().getAll();Object.keys(s).map((e=>t[e]=s[e])),Object.keys(s).map((e=>this.pm.variables.set(e,s[e]))),this.logger.log(["Available variables: ",t],i.LogLevel.info,i.LogVerbosity.verbose)}pretests(e){this.setPm(e)}assert(e){if(!this.pm.variables.has(e))throw new Error(`The environment variable ${e} should exist as a local variable, but does not. It may have been cleared by a prior operation, or not yet set with the appropriate LIST or POST call.`);return this}getEnv(){return this.env}getLogger(){return this.logger}addTokenData(){let e=new o.default(this.pm.response.text());this.logger.log(["Adding token data:",e.getDecodedToken()],i.LogLevel.info,i.LogVerbosity.minimal);const t=this.env.getState();t.set("tokens.current",e.getToken()),t.set("refresh_tokens.current",e.getRefreshToken());const r=e.getDecodedToken().email;t.set("tokens."+r,e.getToken()),t.set("refresh_tokens."+r,e.getRefreshToken());const s=e.getDecodedToken();return Object.keys(s).map((e=>{let n=s[e];if(Array.isArray(n))n.map(((s,n)=>{if(!s)throw"No IRI available, cannot get ID.";let o=(0,a.iri_to_id)(s);t.set(r+"."+e+"."+n,o),t.set("current_user."+e+"."+n,o)}));else if("string"==typeof n){let r=(0,a.iri_to_id)(n);t.set("current_user."+e,r)}else t.set("current_user."+e,n)})),this.logger.log(["Token data added. Environment: ",this.env.filter()],i.LogLevel.default,i.LogVerbosity.very_verbose),this}clearEndpointVar(e){this.pm.expect(this.pm.response.code).to.be.oneOf([200,201,204]);const t=this.pm.request.url.path[0],r=this.env.getState();return r.getAll().filter((r=>r===`${t}.${e}`)).map((e=>r.delete(e))),this}clearEndpointVars(){void 0!==this.pm.response&&this.pm.expect(this.pm.response.code).to.be.oneOf([200,201,204]);const e=this.pm.request.url.path[0],t=this.env.getState();return t.getAll().filter((t=>t.startsWith(e))).map((e=>t.delete(e))),this}getResponse(){return new l.default(this.pm.response.text())}getStoredPassword(){throw new Error("Not yet implemented")}setEndpointVar(e){const t=this.getResponse().getFromResponse("@id"),r=(0,a.iri_to_id)(t),s=this.pm.request.url.path[0];return this.env.getState().set(s+".last",r),this}setEndpointVars(e=null){this.pm.expect(this.pm.response.code).to.be.oneOf([200,201]);let t=this.getResponse().getObjects();if(0===t.length)return this.logger.log("No results returned, not setting any endpoint vars",i.LogLevel.default,i.LogVerbosity.very_verbose),this;const r=e??this.pm.request.url.path[0],s=(e,t,r)=>{this.pm.expect(e).to.be.a("string"),this.pm.expect(t).to.not.be.undefined(),this.pm.expect(r).to.be.an("object"),this.pm.expect(r["@id"]).to.be.a("string");let s=r["@id"];if("string"!=typeof s)throw new Error("IRI could not be found for item in list.");const n=this.env.getState();let o=(0,a.iri_to_id)(s);n.set(e+"."+t,o),n.set(e+".iri."+t,s),n.set(e+".objects."+t,r)};return t.map(((e,n)=>{s(r,(n+1).toString(),e),0===n?s(r,"first",e):n===t.length-1&&s(r,"last",e)})),this}setVar(e,t){return this.getEnv().getState().set(e,t),this}setVarFromKey(e,t){return this.env.getState().set(e,this.getResponse().getFromResponse(t)),this}setVarFromCallback(e,t){let r=t(this.getResponse().getResponseObject());if((0,a.is_empty)(r))throw new Error("setVarFromCallback: The supplied callback {fn} did not return a value.");return this.env.getState().set(e,r),this}setRandomString(){return this.env.getState().set("random_string",(0,a.random_string)(15,"aA")),this}}},607:function(e,t,r){var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=s(r(675));t.default=function(e){if("object"!=typeof e)throw new Error("Expected postman object as initial value, got "+typeof e);return new n.default(e)}}},t={};return function r(s){var n=t[s];if(void 0!==n)return n.exports;var o=t[s]={exports:{}};return e[s].call(o.exports,o,o.exports,r),o.exports}(607)})()));